aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'account')
-rw-r--r--account/account.ftl28
-rw-r--r--account/applications.ftl12
-rw-r--r--account/federatedIdentity.ftl42
-rw-r--r--account/log.ftl35
-rw-r--r--account/messages/messages_ca.properties147
-rw-r--r--account/messages/messages_de.properties169
-rw-r--r--account/messages/messages_en.properties358
-rw-r--r--account/messages/messages_es.properties147
-rw-r--r--account/messages/messages_fr.properties166
-rw-r--r--account/messages/messages_it.properties153
-rw-r--r--account/messages/messages_ja.properties352
-rw-r--r--account/messages/messages_lt.properties154
-rw-r--r--account/messages/messages_nl.properties133
-rw-r--r--account/messages/messages_no.properties165
-rw-r--r--account/messages/messages_pl.properties1
-rw-r--r--account/messages/messages_pt_BR.properties149
-rw-r--r--account/messages/messages_ru.properties155
-rw-r--r--account/messages/messages_sk.properties196
-rw-r--r--account/messages/messages_sv.properties150
-rw-r--r--account/messages/messages_tr.properties341
-rw-r--r--account/messages/messages_zh_CN.properties166
-rw-r--r--account/password.ftl22
-rw-r--r--account/resource-detail.ftl277
-rw-r--r--account/resources.ftl399
-rw-r--r--account/resources/css/account.css276
-rw-r--r--account/resources/img/icon-sidebar-active.pngbin0 -> 202 bytes
-rw-r--r--account/resources/img/keycloak-logo.pngbin0 -> 5213 bytes
-rw-r--r--account/resources/img/logo.pngbin0 -> 4156 bytes
-rw-r--r--account/sessions.ftl4
-rw-r--r--account/template.ftl198
-rw-r--r--account/theme.properties12
-rw-r--r--account/totp.ftl144
32 files changed, 566 insertions, 3985 deletions
diff --git a/account/account.ftl b/account/account.ftl
index 9254b96..b0ac59e 100644
--- a/account/account.ftl
+++ b/account/account.ftl
@@ -3,7 +3,7 @@
<div class="row">
<div class="col-md-10">
- <h2>${msg("editAccountHtmlTitle")}</h2>
+ <h1 class="first-header">${msg("editAccountHtmlTitle")}</h1>
</div>
<div class="col-md-2 subtitle">
<span class="subtitle"><span class="required">*</span> ${msg("requiredFields")}</span>
@@ -15,49 +15,49 @@
<input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
<#if !realm.registrationEmailAsUsername>
- <div class="form-group ${messagesPerField.printIfExists('username','has-error')}">
- <div class="col-sm-2 col-md-2">
+ <div class="form-group row ${messagesPerField.printIfExists('username','has-error')}">
+ <div class="col-2 col-md-2">
<label for="username" class="control-label">${msg("username")}</label> <#if realm.editUsernameAllowed><span class="required">*</span></#if>
</div>
- <div class="col-sm-10 col-md-10">
+ <div class="col-10 col-md-10">
<input type="text" class="form-control" id="username" name="username" <#if !realm.editUsernameAllowed>disabled="disabled"</#if> value="${(account.username!'')}"/>
</div>
</div>
</#if>
- <div class="form-group ${messagesPerField.printIfExists('email','has-error')}">
- <div class="col-sm-2 col-md-2">
+ <div class="form-group row ${messagesPerField.printIfExists('email','has-error')}">
+ <div class="col-2 col-md-2">
<label for="email" class="control-label">${msg("email")}</label> <span class="required">*</span>
</div>
- <div class="col-sm-10 col-md-10">
+ <div class="col-10 col-md-10">
<input type="text" class="form-control" id="email" name="email" autofocus value="${(account.email!'')}"/>
</div>
</div>
- <div class="form-group ${messagesPerField.printIfExists('firstName','has-error')}">
- <div class="col-sm-2 col-md-2">
+ <div class="form-group row ${messagesPerField.printIfExists('firstName','has-error')}">
+ <div class="col-2 col-md-2">
<label for="firstName" class="control-label">${msg("firstName")}</label> <span class="required">*</span>
</div>
- <div class="col-sm-10 col-md-10">
+ <div class="col-10 col-md-10">
<input type="text" class="form-control" id="firstName" name="firstName" value="${(account.firstName!'')}"/>
</div>
</div>
- <div class="form-group ${messagesPerField.printIfExists('lastName','has-error')}">
- <div class="col-sm-2 col-md-2">
+ <div class="form-group row ${messagesPerField.printIfExists('lastName','has-error')}">
+ <div class="col-2 col-md-2">
<label for="lastName" class="control-label">${msg("lastName")}</label> <span class="required">*</span>
</div>
- <div class="col-sm-10 col-md-10">
+ <div class="col-10 col-md-10">
<input type="text" class="form-control" id="lastName" name="lastName" value="${(account.lastName!'')}"/>
</div>
</div>
<div class="form-group">
- <div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
+ <div id="kc-form-buttons" class="offset-md-2 col-md-10 px-0 submit">
<div class="">
<#if url.referrerURI??><a href="${url.referrerURI}">${kcSanitize(msg("backToApplication")?no_esc)}</a></#if>
<button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="Save">${msg("doSave")}</button>
diff --git a/account/applications.ftl b/account/applications.ftl
index a8edc38..45e81c7 100644
--- a/account/applications.ftl
+++ b/account/applications.ftl
@@ -3,7 +3,7 @@
<div class="row">
<div class="col-md-10">
- <h2>${msg("applicationsHtmlTitle")}</h2>
+ <h1 class="first-header">${msg("applicationsHtmlTitle")}</h1>
</div>
</div>
@@ -14,11 +14,11 @@
<table class="table table-striped table-bordered">
<thead>
<tr>
- <td>${msg("application")}</td>
- <td>${msg("availableRoles")}</td>
- <td>${msg("grantedPermissions")}</td>
- <td>${msg("additionalGrants")}</td>
- <td>${msg("action")}</td>
+ <th>${msg("application")}</th>
+ <th>${msg("availableRoles")}</th>
+ <th>${msg("grantedPermissions")}</th>
+ <th>${msg("additionalGrants")}</th>
+ <th>${msg("action")}</th>
</tr>
</thead>
diff --git a/account/federatedIdentity.ftl b/account/federatedIdentity.ftl
deleted file mode 100644
index c2eb769..0000000
--- a/account/federatedIdentity.ftl
+++ /dev/null
@@ -1,42 +0,0 @@
-<#import "template.ftl" as layout>
-<@layout.mainLayout active='social' bodyClass='social'; section>
-
- <div class="row">
- <div class="col-md-10">
- <h2>${msg("federatedIdentitiesHtmlTitle")}</h2>
- </div>
- </div>
-
- <div id="federated-identities">
- <#list federatedIdentity.identities as identity>
- <div class="row margin-bottom">
- <div class="col-sm-2 col-md-2">
- <label for="${identity.providerId!}" class="control-label">${identity.displayName!}</label>
- </div>
- <div class="col-sm-5 col-md-5">
- <input disabled="true" class="form-control" value="${identity.userName!}">
- </div>
- <div class="col-sm-5 col-md-5">
- <#if identity.connected>
- <#if federatedIdentity.removeLinkPossible>
- <form action="${url.socialUrl}" method="post" class="form-inline">
- <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
- <input type="hidden" id="action" name="action" value="remove">
- <input type="hidden" id="providerId" name="providerId" value="${identity.providerId!}">
- <button id="remove-link-${identity.providerId!}" class="btn btn-default">${msg("doRemove")}</button>
- </form>
- </#if>
- <#else>
- <form action="${url.socialUrl}" method="post" class="form-inline">
- <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
- <input type="hidden" id="action" name="action" value="add">
- <input type="hidden" id="providerId" name="providerId" value="${identity.providerId!}">
- <button id="add-link-${identity.providerId!}" class="btn btn-default">${msg("doAdd")}</button>
- </form>
- </#if>
- </div>
- </div>
- </#list>
- </div>
-
-</@layout.mainLayout>
diff --git a/account/log.ftl b/account/log.ftl
deleted file mode 100644
index 29046cf..0000000
--- a/account/log.ftl
+++ /dev/null
@@ -1,35 +0,0 @@
-<#import "template.ftl" as layout>
-<@layout.mainLayout active='log' bodyClass='log'; section>
-
- <div class="row">
- <div class="col-md-10">
- <h2>${msg("accountLogHtmlTitle")}</h2>
- </div>
- </div>
-
- <table class="table table-striped table-bordered">
- <thead>
- <tr>
- <td>${msg("date")}</td>
- <td>${msg("event")}</td>
- <td>${msg("ip")}</td>
- <td>${msg("client")}</td>
- <td>${msg("details")}</td>
- </tr>
- </thead>
-
- <tbody>
- <#list log.events as event>
- <tr>
- <td>${event.date?datetime}</td>
- <td>${event.event}</td>
- <td>${event.ipAddress}</td>
- <td>${event.client!}</td>
- <td><#list event.details as detail>${detail.key} = ${detail.value} <#if detail_has_next>, </#if></#list></td>
- </tr>
- </#list>
- </tbody>
-
- </table>
-
-</@layout.mainLayout> \ No newline at end of file
diff --git a/account/messages/messages_ca.properties b/account/messages/messages_ca.properties
deleted file mode 100644
index a1b8f91..0000000
--- a/account/messages/messages_ca.properties
+++ /dev/null
@@ -1,147 +0,0 @@
-doSave=Desa
-doCancel=Cancel\u00B7la
-doLogOutAllSessions=Desconnecta de totes les sessions
-doRemove=Elimina
-doAdd=Afegeix
-doSignOut=Desconnectar
-
-editAccountHtmlTitle=Edita compte
-federatedIdentitiesHtmlTitle=Identitats federades
-accountLogHtmlTitle=Registre del compte
-changePasswordHtmlTitle=Canvia contrasenya
-sessionsHtmlTitle=Sessions
-accountManagementTitle=Gesti\u00F3 de Compte Keycloak
-authenticatorTitle=Autenticador
-applicationsHtmlTitle=Aplicacions
-
-authenticatorCode=Codi d''un sol \u00FAs
-email=Email
-firstName=Nom
-givenName=Nom de pila
-fullName=Nom complet
-lastName=Cognoms
-familyName=Cognom
-password=Contrasenya
-passwordConfirm=Confirma la contrasenya
-passwordNew=Nova contrasenya
-username=Usuari
-address=Adre\u00E7a
-street=Carrer
-locality=Ciutat o Municipi
-region=Estat, Prov\u00EDncia, o Regi\u00F3
-postal_code=Postal code
-country=Pa\u00EDs
-emailVerified=Email verificat
-gssDelegationCredential=GSS Delegation Credential
-
-role_admin=Administrador
-role_realm-admin=Administrador del domini
-role_create-realm=Crear domini
-role_view-realm=Veure domini
-role_view-users=Veure usuaris
-role_view-applications=Veure aplicacions
-role_view-clients=Veure clients
-role_view-events=Veure events
-role_view-identity-providers=Veure prove\u00EFdors d''identitat
-role_manage-realm=Gestionar domini
-role_manage-users=Gestinar usuaris
-role_manage-applications=Gestionar aplicacions
-role_manage-identity-providers=Gestionar prove\u00EFdors d''identitat
-role_manage-clients=Gestionar clients
-role_manage-events=Gestionar events
-role_view-profile=Veure perfil
-role_manage-account=Gestionar compte
-role_read-token=Llegir token
-role_offline-access=Acc\u00E9s sense connexi\u00F3
-client_account=Compte
-client_security-admin-console=Consola d''Administraci\u00F3 de Seguretat
-client_realm-management=Gesti\u00F3 de domini
-client_broker=Broker
-
-
-requiredFields=Camps obligatoris
-allFieldsRequired=Tots els camps obligatoris
-
-backToApplication=&laquo; Torna a l''aplicaci\u00F3
-backTo=Torna a {0}
-
-date=Data
-event=Event
-ip=IP
-client=Client
-clients=Clients
-details=Detalls
-started=Iniciat
-lastAccess=\u00DAltim acc\u00E9s
-expires=Expira
-applications=Aplicacions
-
-account=Compte
-federatedIdentity=Identitat federada
-authenticator=Autenticador
-sessions=Sessions
-log=Registre
-
-application=Aplicaci\u00F3
-availablePermissions=Permisos disponibles
-grantedPermissions=Permisos concedits
-grantedPersonalInfo=Informaci\u00F3 personal concedida
-additionalGrants=Permisos addicionals
-action=Acci\u00F3
-inResource=a
-fullAccess=Acc\u00E9s total
-offlineToken=Codi d''autoritzaci\u00F3 offline
-revoke=Revocar perm\u00EDs
-
-configureAuthenticators=Autenticadors configurats
-mobile=M\u00F2bil
-totpStep1=Instal\u00B7la <a href=\"https://freeotp.github.io/\" target=\"_blank\">FreeOTP</a> o Google Authenticator al teu tel\u00E8fon m\u00F2bil. Les dues aplicacions estan disponibles a <a href=\"https://play.google.com\">Google Play</a> i en l''App Store d''Apple.
-totpStep2=Obre l''aplicaci\u00F3 i escaneja el codi o introdueix la clau.
-totpStep3=Introdueix el codi \u00FAnic que et mostra l''aplicaci\u00F3 d''autenticaci\u00F3 i fes clic a Envia per finalitzar la configuraci\u00F3
-
-missingUsernameMessage=Si us plau indica el teu usuari.
-missingFirstNameMessage=Si us plau indica el nom.
-invalidEmailMessage=Email no v\u00E0lid
-missingLastNameMessage=Si us plau indica els teus cognoms.
-missingEmailMessage=Si us plau indica l''email.
-missingPasswordMessage=Si us plau indica la contrasenya.
-notMatchPasswordMessage=Les contrasenyes no coincideixen.
-
-missingTotpMessage=Si us plau indica el teu codi d''autenticaci\u00F3
-invalidPasswordExistingMessage=La contrasenya actual no \u00E9s correcta.
-invalidPasswordConfirmMessage=La confirmaci\u00F3 de contrasenya no coincideix.
-invalidTotpMessage=El c\u00F3digo de autenticaci\u00F3n no es v\u00E1lido.
-
-usernameExistsMessage=L''usuari ja existeix
-emailExistsMessage=L''email ja existeix
-
-readOnlyUserMessage=No pots actualitzar el teu usuari perqu\u00E8 el teu compte \u00E9s de nom\u00E9s lectura.
-readOnlyPasswordMessage=No pots actualitzar la contrasenya perqu\u00E8 el teu compte \u00E9s de nom\u00E9s lectura.
-
-successTotpMessage=Aplicaci\u00F3 d''autenticaci\u00F3 m\u00F2bil configurada.
-successTotpRemovedMessage=Aplicaci\u00F3 d''autenticaci\u00F3 m\u00F2bil eliminada.
-
-successGrantRevokedMessage=Perm\u00EDs revocat correctament
-
-accountUpdatedMessage=El teu compte s''ha actualitzat.
-accountPasswordUpdatedMessage=La contrasenya s''ha actualitzat.
-
-missingIdentityProviderMessage=Prove\u00EFdor d''identitat no indicat.
-invalidFederatedIdentityActionMessage=Acci\u00F3 no v\u00E0lida o no indicada.
-identityProviderNotFoundMessage=No s''ha trobat un prove\u00EFdor d''identitat.
-federatedIdentityLinkNotActiveMessage=Aquesta identitat ja no est\u00E0 activa
-federatedIdentityRemovingLastProviderMessage=No pots eliminar l''\u00FAltima identitat federada perqu\u00E8 no tens fixada una contrasenya.
-identityProviderRedirectErrorMessage=Error en la redirecci\u00F3 al prove\u00EFdor d''identitat
-identityProviderRemovedMessage=Prove\u00EFdor d''identitat esborrat correctament.
-
-accountDisabledMessage=El compte est\u00E0 desactivada, contacteu amb l''administrador.
-
-accountTemporarilyDisabledMessage=El compte est\u00E0 temporalment desactivat, contacta amb l''administrador o intenta-ho de nou m\u00E9s tard.
-invalidPasswordMinLengthMessage=Contrasenya incorrecta: longitud m\u00EDnima {0}.
-invalidPasswordMinLowerCaseCharsMessage=Contrasenya incorrecta: ha de contenir almenys {0} lletres min\u00FAscules.
-invalidPasswordMinDigitsMessage=Contrase\u00F1a incorrecta: debe contener al menos {0} caracteres num\u00E9ricos.
-invalidPasswordMinUpperCaseCharsMessage=Contrasenya incorrecta: ha de contenir almenys {0} lletres maj\u00FAscules.
-invalidPasswordMinSpecialCharsMessage=Contrasenya incorrecta: ha de contenir almenys {0} car\u00E0cters especials.
-invalidPasswordNotUsernameMessage=Contrasenya incorrecta: no pot ser igual al nom d''usuari.
-invalidPasswordRegexPatternMessage=Contrasenya incorrecta: no compleix l''expressi\u00F3 regular.
-invalidPasswordHistoryMessage=Contrasenya incorrecta: no pot ser igual a cap de les \u00FAltimes {0} contrasenyes. \ No newline at end of file
diff --git a/account/messages/messages_de.properties b/account/messages/messages_de.properties
deleted file mode 100644
index 0c8b087..0000000
--- a/account/messages/messages_de.properties
+++ /dev/null
@@ -1,169 +0,0 @@
-doSave=Speichern
-doCancel=Abbrechen
-doLogOutAllSessions=Alle Sitzungen abmelden
-doRemove=Entfernen
-doAdd=Hinzuf\u00FCgen
-doSignOut=Abmelden
-
-editAccountHtmlTitle=Benutzerkonto bearbeiten
-federatedIdentitiesHtmlTitle=F\u00F6derierte Identit\u00E4ten
-accountLogHtmlTitle=Benutzerkonto Log
-changePasswordHtmlTitle=Passwort \u00C4ndern
-sessionsHtmlTitle=Sitzungen
-accountManagementTitle=Keycloak Benutzerkontoverwaltung
-authenticatorTitle=Mehrfachauthentifizierung
-applicationsHtmlTitle=Applikationen
-
-authenticatorCode=One-time Code
-email=E-Mail
-firstName=Vorname
-givenName=Vorname
-fullName=Voller Name
-lastName=Nachname
-familyName=Nachname
-password=Passwort
-passwordConfirm=Passwort best\u00E4tigen
-passwordNew=Neues Passwort
-username=Benutzername
-address=Adresse
-street=Stra\u00DFe
-region=Staat, Provinz, Region
-postal_code=PLZ
-locality=Stadt oder Ortschaft
-country=Land
-emailVerified=E-Mail verifiziert
-gssDelegationCredential=GSS delegierte Berechtigung
-
-role_admin=Admin
-role_realm-admin=Realm Admin
-role_create-realm=Realm erstellen
-role_view-realm=Realm ansehen
-role_view-users=Benutzer ansehen
-role_view-applications=Applikationen ansehen
-role_view-clients=Clients ansehen
-role_view-events=Events ansehen
-role_view-identity-providers=Identity Provider ansehen
-role_manage-realm=Realm verwalten
-role_manage-users=Benutzer verwalten
-role_manage-applications=Applikationen verwalten
-role_manage-identity-providers=Identity Provider verwalten
-role_manage-clients=Clients verwalten
-role_manage-events=Events verwalten
-role_view-profile=Profile ansehen
-role_manage-account=Profile verwalten
-role_manage-account-links=Profil-Links verwalten
-role_read-token=Token lesen
-role_offline-access=Offline-Zugriff
-role_uma_authorization=Berechtigungen einholen
-client_account=Clientkonto
-client_security-admin-console=Security Adminkonsole
-client_realm-management=Realm-Management
-client_broker=Broker
-
-
-requiredFields=Erforderliche Felder
-allFieldsRequired=Alle Felder sind erforderlich
-
-backToApplication=&laquo; Zur\u00FCck zur Applikation
-backTo=Zur\u00FCck zu {0}
-
-date=Datum
-event=Ereignis
-ip=IP
-client=Client
-clients=Clients
-details=Details
-started=Startdatum
-lastAccess=Letzter Zugriff
-expires=Ablaufdatum
-applications=Applikationen
-
-account=Benutzerkonto
-federatedIdentity=F\u00F6derierte Identit\u00E4t
-authenticator=Mehrfachauthentifizierung
-sessions=Sitzungen
-log=Log
-
-application=Applikation
-availablePermissions=verf\u00FCgbare Berechtigungen
-grantedPermissions=gew\u00E4hrte Berechtigungen
-grantedPersonalInfo=gew\u00E4hrte pers\u00F6nliche Informationen
-additionalGrants=zus\u00E4tzliche Berechtigungen
-action=Aktion
-inResource=in
-fullAccess=Vollzugriff
-offlineToken=Offline-Token
-revoke=Berechtigung widerrufen
-
-configureAuthenticators=Mehrfachauthentifizierung konfigurieren
-mobile=Mobil
-totpStep1=Installieren Sie eine der folgenden Applikationen auf Ihrem Smartphone:
-totpStep2=\u00D6ffnen Sie die Applikation und scannen Sie den Barcode.
-totpStep3=Geben Sie den von der Applikation generierten One-time Code ein und klicken Sie auf Speichern.
-
-totpManualStep2=\u00D6ffnen Sie die Applikation und geben Sie den folgenden Schl\u00FCssel ein.
-totpManualStep3=Verwenden Sie die folgenden Konfigurationswerte, falls Sie diese f\u00FCr die Applikation anpassen k\u00F6nnen:
-totpUnableToScan=Sie k\u00F6nnen den Barcode nicht scannen?
-totpScanBarcode=Barcode scannen?
-
-totp.totp=zeitbasiert (time-based)
-totp.hotp=z\u00E4hlerbasiert (counter-based)
-
-totpType=Typ
-totpAlgorithm=Algorithmus
-totpDigits=Ziffern
-totpInterval=Intervall
-totpCounter=Z\u00E4hler
-
-missingUsernameMessage=Bitte geben Sie einen Benutzernamen ein.
-missingFirstNameMessage=Bitte geben Sie einen Vornamen ein.
-invalidEmailMessage=Ung\u00FCltige E-Mail Adresse.
-missingLastNameMessage=Bitte geben Sie einen Nachnamen ein.
-missingEmailMessage=Bitte geben Sie eine E-Mail Adresse ein.
-missingPasswordMessage=Bitte geben Sie ein Passwort ein.
-notMatchPasswordMessage=Die Passw\u00F6rter sind nicht identisch.
-
-missingTotpMessage=Bitte geben Sie den One-time Code ein.
-invalidPasswordExistingMessage=Das aktuelle Passwort ist ung\u00FCltig.
-invalidPasswordConfirmMessage=Die Passwortbest\u00E4tigung ist nicht identisch.
-invalidTotpMessage=Ung\u00FCltiger One-time Code.
-
-usernameExistsMessage=Der Benutzername existiert bereits.
-emailExistsMessage=Die E-Mail-Adresse existiert bereits.
-
-readOnlyUserMessage=Sie k\u00F6nnen Ihr Benutzerkonto nicht \u00E4ndern, da es schreibgesch\u00FCtzt ist.
-readOnlyUsernameMessage=Sie k\u00F6nnen Ihren Benutzernamen nicht \u00E4ndern, da er schreibgesch\u00FCtzt ist.
-readOnlyPasswordMessage=Sie k\u00F6nnen Ihr Passwort nicht \u00E4ndern, da es schreibgesch\u00FCtzt ist.
-
-successTotpMessage=Mehrfachauthentifizierung erfolgreich konfiguriert.
-successTotpRemovedMessage=Mehrfachauthentifizierung erfolgreich entfernt.
-
-successGrantRevokedMessage=Berechtigung erfolgreich widerrufen.
-
-accountUpdatedMessage=Ihr Benutzerkonto wurde aktualisiert.
-accountPasswordUpdatedMessage=Ihr Passwort wurde aktualisiert.
-
-missingIdentityProviderMessage=Identity Provider nicht angegeben.
-invalidFederatedIdentityActionMessage=Ung\u00FCltige oder fehlende Aktion.
-identityProviderNotFoundMessage=Angegebener Identity Provider nicht gefunden.
-federatedIdentityLinkNotActiveMessage=Diese Identit\u00E4t ist nicht mehr aktiv.
-federatedIdentityRemovingLastProviderMessage=Sie k\u00F6nnen den letzten Eintrag nicht entfernen, da Sie kein Passwort haben.
-identityProviderRedirectErrorMessage=Fehler bei der Weiterleitung zum Identity Provider.
-identityProviderRemovedMessage=Identity Provider erfolgreich entfernt.
-identityProviderAlreadyLinkedMessage=Die f\u00F6derierte Identit\u00E4t von {0} ist bereits einem anderen Benutzer zugewiesen.
-staleCodeAccountMessage=Diese Seite ist nicht mehr g\u00FCltig, bitte versuchen Sie es noch einmal.
-consentDenied=Einverst\u00E4ndnis verweigert.
-
-accountDisabledMessage=Ihr Benutzerkonto ist gesperrt, bitte kontaktieren Sie den Admin.
-
-accountTemporarilyDisabledMessage=Ihr Benutzerkonto ist tempor\u00E4r gesperrt, bitte kontaktieren Sie den Admin oder versuchen Sie es sp\u00E4ter noch einmal.
-invalidPasswordMinLengthMessage=Ung\u00FCltiges Passwort: Es muss mindestens {0} Zeichen lang sein.
-invalidPasswordMinLowerCaseCharsMessage=Ung\u00FCltiges Passwort\: Es muss mindestens {0} Kleinbuchstaben beinhalten.
-invalidPasswordMinDigitsMessage=Ung\u00FCltiges Passwort: Es muss mindestens {0} Zahl(en) beinhalten.
-invalidPasswordMinUpperCaseCharsMessage=Ung\u00FCltiges Passwort: Es muss mindestens {0} Gro\u00DFbuchstaben beinhalten.
-invalidPasswordMinSpecialCharsMessage=Ung\u00FCltiges Passwort: Es muss mindestens {0} Sonderzeichen beinhalten.
-invalidPasswordNotUsernameMessage=Ung\u00FCltiges Passwort: Es darf nicht gleich sein wie der Benutzername.
-invalidPasswordRegexPatternMessage=Ung\u00FCltiges Passwort: Es entspricht nicht dem Regex-Muster.
-invalidPasswordHistoryMessage=Ung\u00FCltiges Passwort: Es darf nicht einem der letzten {0} Passw\u00F6rter entsprechen.
-invalidPasswordBlacklistedMessage=Ung\u00FCltiges Passwort: Das Passwort steht auf der Blocklist (schwarzen Liste).
-invalidPasswordGenericMessge=Ung\u00FCltiges Passwort: Das neue Passwort verletzt die Passwort-Richtlinien. \ No newline at end of file
diff --git a/account/messages/messages_en.properties b/account/messages/messages_en.properties
deleted file mode 100644
index 9a04144..0000000
--- a/account/messages/messages_en.properties
+++ /dev/null
@@ -1,358 +0,0 @@
-doSave=Save
-doCancel=Cancel
-doLogOutAllSessions=Log out all sessions
-doRemove=Remove
-doAdd=Add
-doSignOut=Sign Out
-doLogIn=Log In
-doLink=Link
-
-
-editAccountHtmlTitle=Edit Account
-personalInfoHtmlTitle=Personal Info
-federatedIdentitiesHtmlTitle=Federated Identities
-accountLogHtmlTitle=Account Log
-changePasswordHtmlTitle=Change Password
-deviceActivityHtmlTitle=Device Activity
-sessionsHtmlTitle=Sessions
-accountManagementTitle=Keycloak Account Management
-authenticatorTitle=Authenticator
-applicationsHtmlTitle=Applications
-linkedAccountsHtmlTitle=Linked Accounts
-
-accountManagementWelcomeMessage=Welcome to Keycloak Account Management
-personalInfoIntroMessage=Manage your basic information
-accountSecurityTitle=Account Security
-accountSecurityIntroMessage=Control your password and account access
-applicationsIntroMessage=Track and manage your app permission to access your account
-resourceIntroMessage=Share your resources among team members
-passwordLastUpdateMessage=Your password was updated at
-updatePasswordTitle=Update Password
-updatePasswordMessageTitle=Make sure you choose a strong password
-updatePasswordMessage=A strong password contains a mix of numbers, letters, and symbols. It is hard to guess, does not resemble a real word, and is only used for this account.
-personalSubTitle=Your Personal Info
-personalSubMessage=Manage this basic information: your first name, last name and email
-
-authenticatorCode=One-time code
-email=Email
-firstName=First name
-givenName=Given name
-fullName=Full name
-lastName=Last name
-familyName=Family name
-password=Password
-currentPassword=Current Password
-passwordConfirm=Confirmation
-passwordNew=New Password
-username=Username
-address=Address
-street=Street
-locality=City or Locality
-region=State, Province, or Region
-postal_code=Zip or Postal code
-country=Country
-emailVerified=Email verified
-gssDelegationCredential=GSS Delegation Credential
-
-profileScopeConsentText=User profile
-emailScopeConsentText=Email address
-addressScopeConsentText=Address
-phoneScopeConsentText=Phone number
-offlineAccessScopeConsentText=Offline Access
-samlRoleListScopeConsentText=My Roles
-rolesScopeConsentText=User roles
-
-role_admin=Admin
-role_realm-admin=Realm Admin
-role_create-realm=Create realm
-role_view-realm=View realm
-role_view-users=View users
-role_view-applications=View applications
-role_view-clients=View clients
-role_view-events=View events
-role_view-identity-providers=View identity providers
-role_view-consent=View consents
-role_manage-realm=Manage realm
-role_manage-users=Manage users
-role_manage-applications=Manage applications
-role_manage-identity-providers=Manage identity providers
-role_manage-clients=Manage clients
-role_manage-events=Manage events
-role_view-profile=View profile
-role_manage-account=Manage account
-role_manage-account-links=Manage account links
-role_manage-consent=Manage consents
-role_read-token=Read token
-role_offline-access=Offline access
-role_uma_authorization=Obtain permissions
-client_account=Account
-client_account-console=Account Console
-client_security-admin-console=Security Admin Console
-client_admin-cli=Admin CLI
-client_realm-management=Realm Management
-client_broker=Broker
-
-
-requiredFields=Required fields
-allFieldsRequired=All fields required
-
-backToApplication=&laquo; Back to application
-backTo=Back to {0}
-
-date=Date
-event=Event
-ip=IP
-client=Client
-clients=Clients
-details=Details
-started=Started
-lastAccess=Last Access
-expires=Expires
-applications=Applications
-
-account=Account
-federatedIdentity=Federated Identity
-authenticator=Authenticator
-device-activity=Device Activity
-sessions=Sessions
-log=Log
-
-application=Application
-availableRoles=Available Roles
-grantedPermissions=Granted Permissions
-grantedPersonalInfo=Granted Personal Info
-additionalGrants=Additional Grants
-action=Action
-inResource=in
-fullAccess=Full Access
-offlineToken=Offline Token
-revoke=Revoke Grant
-
-configureAuthenticators=Configured Authenticators
-mobile=Mobile
-totpStep1=Install one of the following applications on your mobile:
-totpStep2=Open the application and scan the barcode:
-totpStep3=Enter the one-time code provided by the application and click Save to finish the setup.
-totpStep3DeviceName=Provide a Device Name to help you manage your OTP devices.
-
-totpManualStep2=Open the application and enter the key:
-totpManualStep3=Use the following configuration values if the application allows setting them:
-totpUnableToScan=Unable to scan?
-totpScanBarcode=Scan barcode?
-
-totp.totp=Time-based
-totp.hotp=Counter-based
-
-totpType=Type
-totpAlgorithm=Algorithm
-totpDigits=Digits
-totpInterval=Interval
-totpCounter=Counter
-totpDeviceName=Device Name
-
-missingUsernameMessage=Please specify username.
-missingFirstNameMessage=Please specify first name.
-invalidEmailMessage=Invalid email address.
-missingLastNameMessage=Please specify last name.
-missingEmailMessage=Please specify email.
-missingPasswordMessage=Please specify password.
-notMatchPasswordMessage=Passwords don''t match.
-invalidUserMessage=Invalid user
-
-missingTotpMessage=Please specify authenticator code.
-missingTotpDeviceNameMessage=Please specify device name.
-invalidPasswordExistingMessage=Invalid existing password.
-invalidPasswordConfirmMessage=Password confirmation doesn''t match.
-invalidTotpMessage=Invalid authenticator code.
-
-usernameExistsMessage=Username already exists.
-emailExistsMessage=Email already exists.
-
-readOnlyUserMessage=You can''t update your account as it is read-only.
-readOnlyUsernameMessage=You can''t update your username as it is read-only.
-readOnlyPasswordMessage=You can''t update your password as your account is read-only.
-
-successTotpMessage=Mobile authenticator configured.
-successTotpRemovedMessage=Mobile authenticator removed.
-
-successGrantRevokedMessage=Grant revoked successfully.
-
-accountUpdatedMessage=Your account has been updated.
-accountPasswordUpdatedMessage=Your password has been updated.
-
-missingIdentityProviderMessage=Identity provider not specified.
-invalidFederatedIdentityActionMessage=Invalid or missing action.
-identityProviderNotFoundMessage=Specified identity provider not found.
-federatedIdentityLinkNotActiveMessage=This identity is not active anymore.
-federatedIdentityRemovingLastProviderMessage=You can''t remove last federated identity as you don''t have a password.
-identityProviderRedirectErrorMessage=Failed to redirect to identity provider.
-identityProviderRemovedMessage=Identity provider removed successfully.
-identityProviderAlreadyLinkedMessage=Federated identity returned by {0} is already linked to another user.
-staleCodeAccountMessage=The page expired. Please try one more time.
-consentDenied=Consent denied.
-
-accountDisabledMessage=Account is disabled, contact your administrator.
-
-accountTemporarilyDisabledMessage=Account is temporarily disabled, contact your administrator or try again later.
-invalidPasswordMinLengthMessage=Invalid password: minimum length {0}.
-invalidPasswordMinLowerCaseCharsMessage=Invalid password: must contain at least {0} lower case characters.
-invalidPasswordMinDigitsMessage=Invalid password: must contain at least {0} numerical digits.
-invalidPasswordMinUpperCaseCharsMessage=Invalid password: must contain at least {0} upper case characters.
-invalidPasswordMinSpecialCharsMessage=Invalid password: must contain at least {0} special characters.
-invalidPasswordNotUsernameMessage=Invalid password: must not be equal to the username.
-invalidPasswordRegexPatternMessage=Invalid password: fails to match regex pattern(s).
-invalidPasswordHistoryMessage=Invalid password: must not be equal to any of last {0} passwords.
-invalidPasswordBlacklistedMessage=Invalid password: password is blacklisted.
-invalidPasswordGenericMessage=Invalid password: new password doesn''t match password policies.
-
-# Authorization
-myResources=My Resources
-myResourcesSub=My resources
-doDeny=Deny
-doRevoke=Revoke
-doApprove=Approve
-doRemoveSharing=Remove Sharing
-doRemoveRequest=Remove Request
-peopleAccessResource=People with access to this resource
-resourceManagedPolicies=Permissions granting access to this resource
-resourceNoPermissionsGrantingAccess=No permissions granting access to this resource
-anyAction=Any action
-description=Description
-name=Name
-scopes=Scopes
-resource=Resource
-user=User
-peopleSharingThisResource=People sharing this resource
-shareWithOthers=Share with others
-needMyApproval=Need my approval
-requestsWaitingApproval=Your requests waiting approval
-icon=Icon
-requestor=Requestor
-owner=Owner
-resourcesSharedWithMe=Resources shared with me
-permissionRequestion=Permission Requestion
-permission=Permission
-shares=share(s)
-notBeingShared=This resource is not being shared.
-notHaveAnyResource=You don't have any resources
-noResourcesSharedWithYou=There are no resources shared with you
-havePermissionRequestsWaitingForApproval=You have {0} permission request(s) waiting for approval.
-clickHereForDetails=Click here for details.
-resourceIsNotBeingShared=The resource is not being shared
-
-locale_ca=Catal\u00e0
-locale_de=Deutsch
-locale_en=English
-locale_es=Espa\u00f1ol
-locale_fr=Fran\u00e7ais
-locale_it=Italian
-locale_ja=\u65e5\u672c\u8a9e
-locale_nl=Nederlands
-locale_no=Norsk
-locale_lt=Lietuvi\u0173
-locale_pt-BR=Portugu\u00eas (Brasil)
-locale_ru=\u0420\u0443\u0441\u0441\u043a\u0438\u0439
-locale_sk=Sloven\u010dina
-locale_sv=Svenska
-locale_tr=Turkish
-locale_zh-CN=\u4e2d\u6587\u7b80\u4f53
-
-# Applications
-applicaitonName=Name
-applicationType=Application Type
-applicationInUse=In-use app only
-clearAllFilter=Clear all filters
-activeFilters=Active filters
-filterByName=Filter By Name ...
-allApps=All applications
-internalApps=Internal applications
-thirdpartyApps=Third-Party applications
-appResults=Results
-clientNotFoundMessage=Client not found.
-
-# Linked account
-authorizedProvider=Authorized Provider
-authorizedProviderMessage=Authorized Providers linked with your account
-identityProvider=Identity Provider
-identityProviderMessage=To link your account with identity providers you have configured
-socialLogin=Social Login
-userDefined=User Defined
-removeAccess=Remove Access
-removeAccessMessage=You will need to grant access again, if you want to use this app account.
-
-#Authenticator
-authenticatorStatusMessage=Two-factor authentication is currently
-authenticatorFinishSetUpTitle=Your Two-Factor Authentication
-authenticatorFinishSetUpMessage=Each time you sign in to your Keycloak account, you will be asked to provide a two-factor authentication code.
-authenticatorSubTitle=Set Up Two-Factor Authentication
-authenticatorSubMessage=To enhance the security of your account, enable at least one of the available two-factor authentication methods.
-authenticatorMobileTitle=Mobile Authenticator
-authenticatorMobileMessage=Use mobile Authenticator to get Verification codes as the two-factor authentication.
-authenticatorMobileFinishSetUpMessage=The authenticator has been bound to your phone.
-authenticatorActionSetup=Set up
-authenticatorSMSTitle=SMS Code
-authenticatorSMSMessage=Keycloak will send the Verification code to your phone as the two-factor authentication.
-authenticatorSMSFinishSetUpMessage=Text messages are sent to
-authenticatorDefaultStatus=Default
-authenticatorChangePhone=Change Phone Number
-authenticatorBackupCodesTitle=Backup Codes
-authenticatorBackupCodesMessage=Get your 8-digit backup codes
-authenticatorBackupCodesFinishSetUpMessage=12 backup codes were generated at this time. Each one can be used once.
-
-#Authenticator - Mobile Authenticator setup
-authenticatorMobileSetupTitle=Mobile Authenticator Setup
-smscodeIntroMessage=Enter your phone number and a verification code will be sent to your phone.
-mobileSetupStep1=Install an authenticator application on your phone. The applications listed here are supported.
-mobileSetupStep2=Open the application and scan the barcode:
-mobileSetupStep3=Enter the one-time code provided by the application and click Save to finish the setup.
-scanBarCode=Want to scan the barcode?
-enterBarCode=Enter the one-time code
-doCopy=Copy
-doFinish=Finish
-
-#Authenticator - SMS Code setup
-authenticatorSMSCodeSetupTitle=SMS Code Setup
-chooseYourCountry=Choose your country
-enterYourPhoneNumber=Enter your phone number
-sendVerficationCode=Send Verification Code
-enterYourVerficationCode=Enter your verification code
-
-#Authenticator - backup Code setup
-authenticatorBackupCodesSetupTitle=Backup Codes Setup
-backupcodesIntroMessage=If you lose access to your phone, you can still log into your account through backup codes. Keep them somewhere safe and accessible.
-realmName=Realm
-doDownload=Download
-doPrint=Print
-backupCodesTips-1=Each backup code can be used once.
-backupCodesTips-2=These codes were generated on
-generateNewBackupCodes=Generate New Backup Codes
-backupCodesTips-3=When you generate new backup codes, the current codes will not work anymore.
-backtoAuthenticatorPage=Back to Authenticator Page
-
-
-#Resources
-resources=Resources
-sharedwithMe=Shared with Me
-share=Share
-sharedwith=Shared with
-accessPermissions=Access Permissions
-permissionRequests=Permission Requests
-approve=Approve
-approveAll=Approve all
-people=people
-perPage=per page
-currentPage=Current Page
-sharetheResource=Share the resource
-group=Group
-selectPermission=Select Permission
-addPeople=Add people to share your resource with
-addTeam=Add team to share your resource with
-myPermissions=My Permissions
-waitingforApproval=Waiting for approval
-anyPermission=Any Permission
-
-# Openshift messages
-openshift.scope.user_info=User information
-openshift.scope.user_check-access=User access information
-openshift.scope.user_full=Full Access
-openshift.scope.list-projects=List projects
diff --git a/account/messages/messages_es.properties b/account/messages/messages_es.properties
deleted file mode 100644
index fd36e59..0000000
--- a/account/messages/messages_es.properties
+++ /dev/null
@@ -1,147 +0,0 @@
-doSave=Guardar
-doCancel=Cancelar
-doLogOutAllSessions=Desconectar de todas las sesiones
-doRemove=Eliminar
-doAdd=A\u00F1adir
-doSignOut=Desconectar
-
-editAccountHtmlTitle=Editar cuenta
-federatedIdentitiesHtmlTitle=Identidades federadas
-accountLogHtmlTitle=Registro de la cuenta
-changePasswordHtmlTitle=Cambiar contrase\u00F1a
-sessionsHtmlTitle=Sesiones
-accountManagementTitle=Gesti\u00F3n de Cuenta Keycloak
-authenticatorTitle=Autenticador
-applicationsHtmlTitle=Aplicaciones
-
-authenticatorCode=C\u00F3digo de un solo uso
-email=Email
-firstName=Nombre
-givenName=Nombre de pila
-fullName=Nombre completo
-lastName=Apellidos
-familyName=Apellido
-password=Contrase\u00F1a
-passwordConfirm=Confirma la contrase\u00F1a
-passwordNew=Nueva contrase\u00F1a
-username=Usuario
-address=Direcci\u00F3n
-street=Calle
-locality=Ciudad o Municipio
-region=Estado, Provincia, o Regi\u00F3n
-postal_code=C\u00F3digo Postal
-country=Pa\u00EDs
-emailVerified=Email verificado
-gssDelegationCredential=GSS Delegation Credential
-
-role_admin=Administrador
-role_realm-admin=Administrador del dominio
-role_create-realm=Crear dominio
-role_view-realm=Ver dominio
-role_view-users=Ver usuarios
-role_view-applications=Ver aplicaciones
-role_view-clients=Ver clientes
-role_view-events=Ver eventos
-role_view-identity-providers=Ver proveedores de identidad
-role_manage-realm=Gestionar dominio
-role_manage-users=Gestionar usuarios
-role_manage-applications=Gestionar aplicaciones
-role_manage-identity-providers=Gestionar proveedores de identidad
-role_manage-clients=Gestionar clientes
-role_manage-events=Gestionar eventos
-role_view-profile=Ver perfil
-role_manage-account=Gestionar cuenta
-role_read-token=Leer token
-role_offline-access=Acceso sin conexi\u00F3n
-client_account=Cuenta
-client_security-admin-console=Consola de Administraci\u00F3n de Seguridad
-client_realm-management=Gesti\u00F3n de dominio
-client_broker=Broker
-
-
-requiredFields=Campos obligatorios
-allFieldsRequired=Todos los campos obligatorios
-
-backToApplication=&laquo; Volver a la aplicaci\u00F3n
-backTo=Volver a {0}
-
-date=Fecha
-event=Evento
-ip=IP
-client=Cliente
-clients=Clientes
-details=Detalles
-started=Iniciado
-lastAccess=\u00DAltimo acceso
-expires=Expira
-applications=Aplicaciones
-
-account=Cuenta
-federatedIdentity=Identidad federada
-authenticator=Autenticador
-sessions=Sesiones
-log=Regisro
-
-application=Aplicaci\u00F3n
-availablePermissions=Permisos disponibles
-grantedPermissions=Permisos concedidos
-grantedPersonalInfo=Informaci\u00F3n personal concedida
-additionalGrants=Permisos adicionales
-action=Acci\u00F3n
-inResource=en
-fullAccess=Acceso total
-offlineToken=C\u00F3digo de autorizaci\u00F3n offline
-revoke=Revocar permiso
-
-configureAuthenticators=Autenticadores configurados
-mobile=M\u00F3vil
-totpStep1=Instala <a href=\"https://freeotp.github.io/\" target=\"_blank\">FreeOTP</a> o Google Authenticator en tu tel\u00E9fono m\u00F3vil. Ambas aplicaciones est\u00E1n disponibles en <a href=\"https://play.google.com\">Google Play</a> y en la App Store de Apple.
-totpStep2=Abre la aplicaci\u00F3n y escanea el c\u00F3digo o introduce la clave.
-totpStep3=Introduce el c\u00F3digo \u00FAnico que te muestra la aplicaci\u00F3n de autenticaci\u00F3n y haz clic en Enviar para finalizar la configuraci\u00F3n
-
-missingUsernameMessage=Por favor indica tu usuario.
-missingFirstNameMessage=Por favor indica el nombre.
-invalidEmailMessage=Email no v\u00E1lido
-missingLastNameMessage=Por favor indica tus apellidos.
-missingEmailMessage=Por favor indica el email.
-missingPasswordMessage=Por favor indica tu contrase\u00F1a.
-notMatchPasswordMessage=Las contrase\u00F1as no coinciden.
-
-missingTotpMessage=Por favor indica tu c\u00F3digo de autenticaci\u00F3n
-invalidPasswordExistingMessage=La contrase\u00F1a actual no es correcta.
-invalidPasswordConfirmMessage=La confirmaci\u00F3n de contrase\u00F1a no coincide.
-invalidTotpMessage=El c\u00F3digo de autenticaci\u00F3n no es v\u00E1lido.
-
-usernameExistsMessage=El usuario ya existe
-emailExistsMessage=El email ya existe
-
-readOnlyUserMessage=No puedes actualizar tu usuario porque tu cuenta es de solo lectura.
-readOnlyPasswordMessage=No puedes actualizar tu contrase\u00F1a porque tu cuenta es de solo lectura.
-
-successTotpMessage=Aplicaci\u00F3n de autenticaci\u00F3n m\u00F3vil configurada.
-successTotpRemovedMessage=Aplicaci\u00F3n de autenticaci\u00F3n m\u00F3vil eliminada.
-
-successGrantRevokedMessage=Permiso revocado correctamente
-
-accountUpdatedMessage=Tu cuenta se ha actualizado.
-accountPasswordUpdatedMessage=Tu contrase\u00F1a se ha actualizado.
-
-missingIdentityProviderMessage=Proveedor de identidad no indicado.
-invalidFederatedIdentityActionMessage=Acci\u00F3n no v\u00E1lida o no indicada.
-identityProviderNotFoundMessage=No se encontr\u00F3 un proveedor de identidad.
-federatedIdentityLinkNotActiveMessage=Esta identidad ya no est\u00E1 activa
-federatedIdentityRemovingLastProviderMessage=No puedes eliminar la \u00FAltima identidad federada porque no tienes fijada una contrase\u00F1a.
-identityProviderRedirectErrorMessage=Error en la redirecci\u00F3n al proveedor de identidad
-identityProviderRemovedMessage=Proveedor de identidad borrado correctamente.
-
-accountDisabledMessage=La cuenta est\u00E1 desactivada, contacta con el administrador.
-
-accountTemporarilyDisabledMessage=La cuenta est\u00E1 temporalmente desactivada, contacta con el administrador o int\u00E9ntalo de nuevo m\u00E1s tarde.
-invalidPasswordMinLengthMessage=Contrase\u00F1a incorrecta: longitud m\u00EDnima {0}.
-invalidPasswordMinLowerCaseCharsMessage=Contrase\u00F1a incorrecta: debe contener al menos {0} letras min\u00FAsculas.
-invalidPasswordMinDigitsMessage=Contrase\u00F1a incorrecta: debe contener al menos {0} caracteres num\u00E9ricos.
-invalidPasswordMinUpperCaseCharsMessage=Contrase\u00F1a incorrecta: debe contener al menos {0} letras may\u00FAsculas.
-invalidPasswordMinSpecialCharsMessage=Contrase\u00F1a incorrecta: debe contener al menos {0} caracteres especiales.
-invalidPasswordNotUsernameMessage=Contrase\u00F1a incorrecta: no puede ser igual al nombre de usuario.
-invalidPasswordRegexPatternMessage=Contrase\u00F1a incorrecta: no cumple la expresi\u00F3n regular.
-invalidPasswordHistoryMessage=Contrase\u00F1a incorrecta: no puede ser igual a ninguna de las \u00FAltimas {0} contrase\u00F1as. \ No newline at end of file
diff --git a/account/messages/messages_fr.properties b/account/messages/messages_fr.properties
deleted file mode 100644
index f18bf47..0000000
--- a/account/messages/messages_fr.properties
+++ /dev/null
@@ -1,166 +0,0 @@
-# TIPS to encode UTF-8 to ISO
-# native2ascii -encoding ISO8859_1 srcFile > dstFile
-
-doSave=Sauvegarder
-doCancel=Annuler
-doLogOutAllSessions=D\u00e9connexion de toutes les sessions
-doRemove=Supprimer
-doAdd=Ajouter
-doSignOut=D\u00e9connexion
-
-editAccountHtmlTitle=\u00c9dition du compte
-federatedIdentitiesHtmlTitle=Identit\u00e9s f\u00e9d\u00e9r\u00e9es
-accountLogHtmlTitle=Acc\u00e8s au compte
-changePasswordHtmlTitle=Changer de mot de passe
-sessionsHtmlTitle=Sessions
-accountManagementTitle=Gestion du compte Keycloak
-authenticatorTitle=Authentification
-applicationsHtmlTitle=Applications
-
-authenticatorCode=Mot de passe unique
-email=Courriel
-firstName=Pr\u00e9nom
-givenName=Pr\u00e9nom
-fullName=Nom complet
-lastName=Nom
-familyName=Nom de famille
-password=Mot de passe
-passwordConfirm=Confirmation
-passwordNew=Nouveau mot de passe
-username=Compte
-address=Adresse
-street=Rue
-locality=Ville ou Localit\u00e9
-region=\u00c9tat, Province ou R\u00e9gion
-postal_code=Code Postal
-country=Pays
-emailVerified=Courriel v\u00e9rifi\u00e9
-gssDelegationCredential=Accr\u00e9ditation de d\u00e9l\u00e9gation GSS
-
-role_admin=Administrateur
-role_realm-admin=Administrateur du domaine
-role_create-realm=Cr\u00e9er un domaine
-role_view-realm=Voir un domaine
-role_view-users=Voir les utilisateurs
-role_view-applications=Voir les applications
-role_view-clients=Voir les clients
-role_view-events=Voir les \u00e9v\u00e9nements
-role_view-identity-providers=Voir les fournisseurs d''identit\u00e9s
-role_manage-realm=G\u00e9rer le domaine
-role_manage-users=G\u00e9rer les utilisateurs
-role_manage-applications=G\u00e9rer les applications
-role_manage-identity-providers=G\u00e9rer les fournisseurs d''identit\u00e9s
-role_manage-clients=G\u00e9rer les clients
-role_manage-events=G\u00e9rer les \u00e9v\u00e9nements
-role_view-profile=Voir le profil
-role_manage-account=G\u00e9rer le compte
-role_read-token=Lire le jeton d''authentification
-role_offline-access=Acc\u00e8s hors-ligne
-client_account=Compte
-client_security-admin-console=Console d''administration de la s\u00e9curit\u00e9
-client_admin-cli=Admin CLI
-client_realm-management=Gestion du domaine
-client_broker=Broker
-
-
-requiredFields=Champs obligatoires
-allFieldsRequired=Tous les champs sont obligatoires
-
-backToApplication=&laquo; Revenir \u00e0 l''application
-backTo=Revenir \u00e0 {0}
-
-date=Date
-event=Ev\u00e9nement
-ip=IP
-client=Client
-clients=Clients
-details=D\u00e9tails
-started=D\u00e9but
-lastAccess=Dernier acc\u00e8s
-expires=Expiration
-applications=Applications
-
-account=Compte
-federatedIdentity=Identit\u00e9 f\u00e9d\u00e9r\u00e9e
-authenticator=Authentification
-sessions=Sessions
-log=Connexion
-
-application=Application
-availablePermissions=Permissions disponibles
-grantedPermissions=Permissions accord\u00e9es
-grantedPersonalInfo=Informations personnelles accord\u00e9es
-additionalGrants=Droits additionnels
-action=Action
-inResource=dans
-fullAccess=Acc\u00e8s complet
-offlineToken=Jeton d''authentification hors-ligne
-revoke=R\u00e9voquer un droit
-
-configureAuthenticators=Authentifications configur\u00e9es.
-mobile=T\u00e9l\u00e9phone mobile
-totpStep1=Installez une des applications suivantes sur votre mobile
-totpStep2=Ouvrez l''application et scannez le code-barres ou entrez la clef.
-totpStep3=Entrez le code \u00e0 usage unique fourni par l''application et cliquez sur Sauvegarder pour terminer.
-
-totpManualStep2=Ouvrez l''application et entrez la clef
-totpManualStep3=Utilisez les valeurs de configuration suivante si l''application les autorise
-totpUnableToScan=Impossible de scanner ?
-totpScanBarcode=Scanner le code-barres ?
-
-totp.totp=Bas\u00e9 sur le temps
-totp.hotp=Bas\u00e9 sur un compteur
-
-totpType=Type
-totpAlgorithm=Algorithme
-totpDigits=Chiffres
-totpInterval=Intervalle
-totpCounter=Compteur
-
-missingUsernameMessage=Veuillez entrer votre nom d''utilisateur.
-missingFirstNameMessage=Veuillez entrer votre pr\u00e9nom.
-invalidEmailMessage=Courriel invalide.
-missingLastNameMessage=Veuillez entrer votre nom.
-missingEmailMessage=Veuillez entrer votre courriel.
-missingPasswordMessage=Veuillez entrer votre mot de passe.
-notMatchPasswordMessage=Les mots de passe ne sont pas identiques
-
-missingTotpMessage=Veuillez entrer le code d''authentification.
-invalidPasswordExistingMessage=Mot de passe existant invalide.
-invalidPasswordConfirmMessage=Le mot de passe de confirmation ne correspond pas.
-invalidTotpMessage=Le code d''authentification est invalide.
-
-usernameExistsMessage=Le nom d''utilisateur existe d\u00e9j\u00e0.
-emailExistsMessage=Le courriel existe d\u00e9j\u00e0.
-
-readOnlyUserMessage=Vous ne pouvez pas mettre \u00e0 jour votre compte car il est en lecture seule.
-readOnlyPasswordMessage=Vous ne pouvez pas mettre \u00e0 jour votre mot de passe car votre compte est en lecture seule.
-
-successTotpMessage=L''authentification via t\u00e9l\u00e9phone mobile est configur\u00e9e.
-successTotpRemovedMessage=L''authentification via t\u00e9l\u00e9phone mobile est supprim\u00e9e.
-
-successGrantRevokedMessage=Droit r\u00e9voqu\u00e9 avec succ\u00e8s.
-
-accountUpdatedMessage=Votre compte a \u00e9t\u00e9 mis \u00e0 jour.
-accountPasswordUpdatedMessage=Votre mot de passe a \u00e9t\u00e9 mis \u00e0 jour.
-
-missingIdentityProviderMessage=Le fournisseur d''identit\u00e9 n''est pas sp\u00e9cifi\u00e9.
-invalidFederatedIdentityActionMessage=Action manquante ou invalide.
-identityProviderNotFoundMessage=Le fournisseur d''identit\u00e9 sp\u00e9cifi\u00e9 n''est pas trouv\u00e9.
-federatedIdentityLinkNotActiveMessage=Cette identit\u00e9 n''est plus active dor\u00e9navant.
-federatedIdentityRemovingLastProviderMessage=Vous ne pouvez pas supprimer votre derni\u00e8re f\u00e9d\u00e9ration d''identit\u00e9 sans avoir de mot de passe sp\u00e9cifi\u00e9.
-identityProviderRedirectErrorMessage=Erreur de redirection vers le fournisseur d''identit\u00e9.
-identityProviderRemovedMessage=Le fournisseur d''identit\u00e9 a \u00e9t\u00e9 supprim\u00e9 correctement.
-identityProviderAlreadyLinkedMessage=Le fournisseur d''identit\u00e9 retourn\u00e9 par {0} est d\u00e9j\u00e0 li\u00e9 \u00e0 un autre utilisateur.
-
-accountDisabledMessage=Ce compte est d\u00e9sactiv\u00e9, veuillez contacter votre administrateur.
-
-accountTemporarilyDisabledMessage=Ce compte est temporairement d\u00e9sactiv\u00e9, veuillez contacter votre administrateur ou r\u00e9essayez plus tard.
-invalidPasswordMinLengthMessage=Mot de passe invalide: longueur minimale {0}.
-invalidPasswordMinLowerCaseCharsMessage=Mot de passe invalide: doit contenir au moins {0} lettre(s) en minuscule.
-invalidPasswordMinDigitsMessage=Mot de passe invalide: doit contenir au moins {0} chiffre(s).
-invalidPasswordMinUpperCaseCharsMessage=Mot de passe invalide: doit contenir au moins {0} lettre(s) en majuscule.
-invalidPasswordMinSpecialCharsMessage=Mot de passe invalide: doit contenir au moins {0} caract\u00e8re(s) sp\u00e9ciaux.
-invalidPasswordNotUsernameMessage=Mot de passe invalide: ne doit pas \u00eatre identique au nom d''utilisateur.
-invalidPasswordRegexPatternMessage=Mot de passe invalide: ne valide pas l''expression rationnelle.
-invalidPasswordHistoryMessage=Mot de passe invalide: ne doit pas \u00eatre \u00e9gal aux {0} derniers mots de passe.
diff --git a/account/messages/messages_it.properties b/account/messages/messages_it.properties
deleted file mode 100644
index 611bed1..0000000
--- a/account/messages/messages_it.properties
+++ /dev/null
@@ -1,153 +0,0 @@
-doSave=Salva
-doCancel=Annulla
-doLogOutAllSessions=Effettua il blog out da tutte le sessioni
-doRemove=Elimina
-doAdd=Aggiungi
-doSignOut=Esci
-
-editAccountHtmlTitle=Modifica Account
-federatedIdentitiesHtmlTitle=Federated Identities
-accountLogHtmlTitle=Account Log
-changePasswordHtmlTitle=Cambia Password
-sessionsHtmlTitle=Sessioni
-accountManagementTitle=Keycloak Account Management
-authenticatorTitle=Authenticator
-applicationsHtmlTitle=Applicazioni
-
-authenticatorCode=Codice One-time
-email=Email
-firstName=Nome
-givenName=Nome
-fullName=Nome Completo
-lastName=Cognome
-familyName=Cognome
-password=Password
-passwordConfirm=Conferma Password
-passwordNew=Nuova Password
-username=Username
-address=Indirizzo
-street=Via
-locality=Citt\u00e0 o Localit\u00e0
-region=Stato, Provincia, o Regione
-postal_code=CAP
-country=Paese
-emailVerified=Email verificata
-gssDelegationCredential=Credenziali GSS Delegation
-
-role_admin=Admin
-role_realm-admin=Realm Admin
-role_create-realm=Crea realm
-role_view-realm=Visualizza realm
-role_view-users=Visualizza utenti
-role_view-applications=Visualizza applicazioni
-role_view-clients=Visualizza client
-role_view-events=Visualizza eventi
-role_view-identity-providers=Visualizza identity provider
-role_manage-realm=Gestisci realm
-role_manage-users=Gestisci utenti
-role_manage-applications=Gestisci applicazioni
-role_manage-identity-providers=Gestisci identity provider
-role_manage-clients=Gestisci i client
-role_manage-events=Gestisci eventi
-role_view-profile=Visualizza profilo
-role_manage-account=Gestisci account
-role_read-token=Leggi token
-role_offline-access=Accesso offline
-role_uma_authorization=Ottieni permessi
-client_account=Account
-client_security-admin-console=Security Admin Console
-client_admin-cli=Admin CLI
-client_realm-management=Gestione Realm
-client_broker=Broker
-
-
-requiredFields=Campi obbligatori
-allFieldsRequired=Tutti campi obbligatori
-
-backToApplication=&laquo; Torna all''applicazione
-backTo=Torna a {0}
-
-date=Data
-event=Evento
-ip=IP
-client=Client
-clients=Clients
-details=Dettagli
-started=Iniziato
-lastAccess=Ultimo accesso
-expires=Scade
-applications=Applicazioni
-
-account=Account
-federatedIdentity=Federated Identity
-authenticator=Authenticator
-sessions=Sessioni
-log=Log
-
-application=Applicazione
-availablePermissions=Permessi disponibili
-grantedPermissions=Permessi concessi
-grantedPersonalInfo=Informazioni Personali concesse
-additionalGrants=Concessioni addizionali
-action=Azione
-inResource=in
-fullAccess=Accesso completo
-offlineToken=Token offline
-revoke=Revoca concessione
-
-configureAuthenticators=Configura Authenticators
-mobile=Mobile
-totpStep1=Installa <a href="https://freeotp.github.io/" target="_blank">FreeOTP</a> o <a href="http://code.google.com/p/google-authenticator/" target="_blank">Google Authenticator</a> sul tuo dispositivo mobile.
-totpStep2=Apri l''applicazione e scansiona il barcode o scrivi la chiave.
-totpStep3=Scrivi il codice one-time fornito dall''applicazione e clicca Salva per completare il setup.
-
-missingUsernameMessage=Inserisci la username.
-missingFirstNameMessage=Inserisci il nome.
-invalidEmailMessage=Indirizzo email non valido.
-missingLastNameMessage=Inserisci il cognome.
-missingEmailMessage=Inserisci l''indirizzo email.
-missingPasswordMessage=Inserisci la password.
-notMatchPasswordMessage=Le password non corrispondono.
-
-missingTotpMessage=Inserisci il codice di autenticazione.
-invalidPasswordExistingMessage=Password esistente non valida.
-invalidPasswordConfirmMessage=La password di conferma non coincide.
-invalidTotpMessage=Codice di autenticazione non valido.
-
-usernameExistsMessage=Username gi\u00e0 esistente.
-emailExistsMessage=Email gi\u00e0 esistente.
-
-readOnlyUserMessage=Non puoi aggiornare il tuo account dal momento che \u00e8 in modalit\u00e0 sola lettura.
-readOnlyPasswordMessage=Non puoi aggiornare il tuo account dal momento che \u00e8 in modalit\u00e0 sola lettura.
-
-successTotpMessage=Mobile authenticator configurato.
-successTotpRemovedMessage=Mobile authenticator eliminato.
-
-successGrantRevokedMessage=Concessione revocata correttamente.
-
-accountUpdatedMessage=Il tuo account \u00e8 stato aggiornato.
-accountPasswordUpdatedMessage=La tua password \u00e8 stata aggiornata.
-
-missingIdentityProviderMessage=Identity provider non specificata.
-invalidFederatedIdentityActionMessage=Azione non valida o mancante.
-identityProviderNotFoundMessage=L''identity provider specificato non \u00e8 stato trovato.
-federatedIdentityLinkNotActiveMessage=Questo identity non \u00e8 pi\u00f9 attivo.
-federatedIdentityRemovingLastProviderMessage=Non puoi rimuovere l''ultimo federated identity dal momento che non hai pi\u00f9 la password.
-identityProviderRedirectErrorMessage=Il reindirizzamento all''identity provider \u00e8 fallito.
-identityProviderRemovedMessage=Identity provider eliminato correttamente.
-identityProviderAlreadyLinkedMessage=Federated identity ritornata da {0} \u00e8 gi\u00e0 collegata ad un altro utente.
-staleCodeAccountMessage=La pagina \u00e8 scaduta. Riprova di nuovo.
-consentDenied=Permesso negato.
-
-accountDisabledMessage=Account disabilitato, contatta l''amministratore.
-
-accountTemporarilyDisabledMessage=L''account \u00e8 temporaneamente disabilitato, contatta l''amministratore o riprova pi\u00f9 tardi.
-invalidPasswordMinLengthMessage=Password non valida: lunghezza minima {0}.
-invalidPasswordMinLowerCaseCharsMessage=Password non valida: deve contenere almeno {0} caratteri minuscoli.
-invalidPasswordMinDigitsMessage=Password non valida: deve contenere almeno {0} numeri.
-invalidPasswordMinUpperCaseCharsMessage=Password non valida: deve contenere almeno {0} caratteri maiuscoli.
-invalidPasswordMinSpecialCharsMessage=Password non valida: deve contenere almeno {0} caratteri speciali.
-invalidPasswordNotUsernameMessage=Password non valida: non deve essere uguale alla username.
-invalidPasswordRegexPatternMessage=Password non valida: fallito il match con una o pi\u00f9 espressioni regolari.
-invalidPasswordHistoryMessage=Password non valida: non deve essere uguale a nessuna delle ultime {0} password.
-invalidPasswordGenericMessage=Password non valida: la nuova password non rispetta le indicazioni previste.
diff --git a/account/messages/messages_ja.properties b/account/messages/messages_ja.properties
deleted file mode 100644
index de3cee1..0000000
--- a/account/messages/messages_ja.properties
+++ /dev/null
@@ -1,352 +0,0 @@
-# encoding: utf-8
-doSave=保存
-doCancel=キャンセル
-doLogOutAllSessions=全セッションからログアウト
-doRemove=削除
-doAdd=追加
-doSignOut=サインアウト
-doLogIn=ログイン
-doLink=リンク
-
-
-editAccountHtmlTitle=アカウントの編集
-personalInfoHtmlTitle=個人情報
-federatedIdentitiesHtmlTitle=Federated Identities
-accountLogHtmlTitle=アカウントログ
-changePasswordHtmlTitle=パスワード変更
-deviceActivityHtmlTitle=デバイスアクティビティ
-sessionsHtmlTitle=セッション
-accountManagementTitle=Keycloak アカウント管理
-authenticatorTitle=Authenticator
-applicationsHtmlTitle=アプリケーション
-linkedAccountsHtmlTitle=リンクされたアカウント
-
-accountManagementWelcomeMessage=Keycloak アカウント管理へようこそ
-personalInfoIntroMessage=基本情報を管理する
-accountSecurityTitle=アカウントセキュリティ
-accountSecurityIntroMessage=パスワードとアカウントアクセスを制御する
-applicationsIntroMessage=アプリのアカウントへのアクセス権を追跡して管理する
-resourceIntroMessage=チームメンバー間でリソースを共有する
-passwordLastUpdateMessage=パスワードは更新されました
-updatePasswordTitle=パスワードの更新
-updatePasswordMessageTitle=強力なパスワードを選択してください
-updatePasswordMessage=強力なパスワードは、数字、文字、記号を含みます。推測が難しく、実在する言葉に似ておらず、このアカウントだけで使用されています。
-personalSubTitle=個人情報
-personalSubMessage=この基本情報を管理してください:名、姓、メール
-
-authenticatorCode=ワンタイムコード
-email=Eメール
-firstName=名
-givenName=名
-fullName=氏名
-lastName=姓
-familyName=姓
-password=パスワード
-currentPassword=現在のパスワード
-passwordConfirm=新しいパスワード (確認)
-passwordNew=新しいパスワード
-username=ユーザー名
-address=住所
-street=番地
-locality=市区町村
-region=都道府県
-postal_code=郵便番号
-country=国
-emailVerified=確認済みEメール
-gssDelegationCredential=GSS 代行クレデンシャル
-
-profileScopeConsentText=ユーザープロフィール
-emailScopeConsentText=メールアドレス
-addressScopeConsentText=アドレス
-phoneScopeConsentText=電話番号
-offlineAccessScopeConsentText=オフラインアクセス
-samlRoleListScopeConsentText=ロール
-rolesScopeConsentText=ユーザーロール
-
-role_admin=管理者
-role_realm-admin=レルムの管理
-role_create-realm=レルムの作成
-role_view-realm=レルムの参照
-role_view-users=ユーザーの参照
-role_view-applications=アプリケーションの参照
-role_view-clients=クライアントの参照
-role_view-events=イベントの参照
-role_view-identity-providers=アイデンティティ プロバイダーの参照
-role_manage-realm=レルムの管理
-role_manage-users=ユーザーの管理
-role_manage-applications=アプリケーションの管理
-role_manage-identity-providers=アイデンティティ プロバイダーの管理
-role_manage-clients=クライアントの管理
-role_manage-events=イベントの管理
-role_view-profile=プロフィールの参照
-role_manage-account=アカウントの管理
-role_manage-account-links=アカウントリンクの管理
-role_read-token=トークンの参照
-role_offline-access=オフラインアクセス
-role_uma_authorization=アクセス権の取得
-client_account=アカウント
-client_security-admin-console=セキュリティ管理コンソール
-client_admin-cli=管理 CLI
-client_realm-management=レルム管理
-client_broker=ブローカー
-
-
-requiredFields=必須
-allFieldsRequired=全ての入力項目が必須
-
-backToApplication=&laquo; アプリケーションに戻る
-backTo={0} に戻る
-
-date=日付
-event=イベント
-ip=IP
-client=クライアント
-clients=クライアント
-details=詳細
-started=開始
-lastAccess=最終アクセス
-expires=有効期限
-applications=アプリケーション
-
-account=アカウント
-federatedIdentity=Federated Identity
-authenticator=Authenticator
-device-activity=デバイスアクティビティ
-sessions=セッション
-log=ログ
-
-application=アプリケーション
-availableRoles=利用可能なロール
-grantedPermissions=許可されたアクセス権
-grantedPersonalInfo=許可された個人情報
-additionalGrants=追加の許可
-action=アクション
-inResource=in
-fullAccess=フルアクセス
-offlineToken=オフライントークン
-revoke=許可の取り消し
-
-configureAuthenticators=設定済みの Authenticator
-mobile=モバイル
-totpStep1=モバイルに以下のアプリケーションのいずれかをインストールしてください。
-totpStep2=アプリケーションを開き、バーコードをスキャンしてください。
-totpStep3=アプリケーションで提供されたワンタイムコードを入力して保存をクリックし、セットアップを完了してください。
-
-totpManualStep2=アプリケーションを開き、キーを入力してください。
-totpManualStep3=アプリケーションが設定できる場合は、次の設定値を使用してください。
-totpUnableToScan=スキャンできませんか?
-totpScanBarcode=バーコードをスキャンしますか?
-
-totp.totp=時間ベース
-totp.hotp=カウンターベース
-
-totpType=タイプ
-totpAlgorithm=アルゴリズム
-totpDigits=数字
-totpInterval=間隔
-totpCounter=カウンター
-
-missingUsernameMessage=ユーザー名を入力してください。
-missingFirstNameMessage=名を入力してください。
-invalidEmailMessage=無効なメールアドレスです。
-missingLastNameMessage=姓を入力してください。
-missingEmailMessage=Eメールを入力してください。
-missingPasswordMessage=パスワードを入力してください。
-notMatchPasswordMessage=パスワードが一致していません。
-invalidUserMessage=無効なユーザーです。
-
-missingTotpMessage=Authenticator コードを入力してください。
-invalidPasswordExistingMessage=無効な既存のパスワードです。
-invalidPasswordConfirmMessage=新しいパスワード (確認) と一致していません。
-invalidTotpMessage=無効な Authenticator コードです。
-
-usernameExistsMessage=既に存在するユーザー名です。
-emailExistsMessage=既に存在するEメールです。
-
-readOnlyUserMessage=読み取り専用のため、アカウントを更新することはできません。
-readOnlyUsernameMessage=読み取り専用のため、ユーザー名を更新することはできません。
-readOnlyPasswordMessage=読み取り専用のため、パスワードを更新することはできません。
-
-successTotpMessage=モバイル Authenticator が設定されました。
-successTotpRemovedMessage=モバイル Authenticator が削除されました。
-
-successGrantRevokedMessage=許可が正常に取り消しされました。
-
-accountUpdatedMessage=アカウントが更新されました。
-accountPasswordUpdatedMessage=パスワードが更新されました。
-
-missingIdentityProviderMessage=アイデンティティ プロバイダーが指定されていません。
-invalidFederatedIdentityActionMessage=無効または存在しないアクションです。
-identityProviderNotFoundMessage=指定されたアイデンティティ プロバイダーが見つかりません。
-federatedIdentityLinkNotActiveMessage=このアイデンティティは有効ではありません。
-federatedIdentityRemovingLastProviderMessage=パスワードがないため最後の Federated Identity を削除できません。
-identityProviderRedirectErrorMessage=アイデンティティ プロバイダーへのリダイレクトに失敗しました。
-identityProviderRemovedMessage=アイデンティティ プロバイダーが正常に削除されました。
-identityProviderAlreadyLinkedMessage={0}から返された Federated Identity は既に他のユーザーに関連付けされています。
-staleCodeAccountMessage=有効期限切れです。再度お試しください。
-consentDenied=同意が拒否されました。
-
-accountDisabledMessage=アカウントが無効です。管理者に連絡してください。
-
-accountTemporarilyDisabledMessage=アカウントが一時的に無効です。管理者に連絡、またはしばらく時間をおいてから再度お試しください。
-invalidPasswordMinLengthMessage=無効なパスワード: 最小 {0} の長さが必要です。
-invalidPasswordMinLowerCaseCharsMessage=無効なパスワード: 少なくとも {0} 文字の小文字を含む必要があります。
-invalidPasswordMinDigitsMessage=無効なパスワード: 少なくとも {0} 文字の数字を含む必要があります。
-invalidPasswordMinUpperCaseCharsMessage=無効なパスワード: 少なくとも {0} 文字の大文字を含む必要があります。
-invalidPasswordMinSpecialCharsMessage=無効なパスワード: 少なくとも {0} 文字の特殊文字を含む必要があります。
-invalidPasswordNotUsernameMessage=無効なパスワード: ユーザー名と同じパスワードは禁止されています。
-invalidPasswordRegexPatternMessage=無効なパスワード: 正規表現パターンと一致しません。
-invalidPasswordHistoryMessage=無効なパスワード: 最近の {0} パスワードのいずれかと同じパスワードは禁止されています。
-invalidPasswordBlacklistedMessage=無効なパスワード: パスワードがブラックリストに含まれています。
-invalidPasswordGenericMessage=無効なパスワード: 新しいパスワードはパスワードポリシーと一致しません。
-
-# Authorization
-myResources=マイリソース
-myResourcesSub=マイリソース
-doDeny=拒否
-doRevoke=取り消し
-doApprove=承認
-doRemoveSharing=共有の削除
-doRemoveRequest=リクエストの削除
-peopleAccessResource=このリソースにアクセスできる人
-resourceManagedPolicies=このリソースへのアクセスを許可するアクセス権
-resourceNoPermissionsGrantingAccess=このリソースへのアクセスを許可する権限はありません
-anyAction=任意のアクション
-description=説明
-name=名前
-scopes=スコープ
-resource=リソース
-user=ユーザー
-peopleSharingThisResource=このリソースを共有している人
-shareWithOthers=他人と共有
-needMyApproval=承認が必要
-requestsWaitingApproval=承認待ちのリクエスト
-icon=アイコン
-requestor=リクエスター
-owner=オーナー
-resourcesSharedWithMe=共有しているリソース
-permissionRequestion=パーミッションリクエスト
-permission=パーミッション
-shares=共有(複数)
-notBeingShared=このリソースは共有されていません。
-notHaveAnyResource=リソースがありません。
-noResourcesSharedWithYou=共有しているリソースはありません
-havePermissionRequestsWaitingForApproval=承認待ちの{0}個のパーミッションリクエストがあります。
-clickHereForDetails=詳細はこちらをクリックしてください。
-resourceIsNotBeingShared=リソースは共有されていません。
-
-locale_ca=Catal\u00e0
-locale_de=Deutsch
-locale_en=English
-locale_es=Espa\u00f1ol
-locale_fr=Fran\u00e7ais
-locale_it=Italian
-locale_ja=\u65e5\u672c\u8a9e
-locale_nl=Nederlands
-locale_no=Norsk
-locale_lt=Lietuvi\u0173
-locale_pt-BR=Portugu\u00eas (Brasil)
-locale_ru=\u0420\u0443\u0441\u0441\u043a\u0438\u0439
-locale_sk=Sloven\u010dina
-locale_sv=Svenska
-locale_tr=Turkish
-locale_zh-CN=\u4e2d\u6587\u7b80\u4f53
-
-# Applications
-applicaitonName=名前
-applicationType=アプリケーションタイプ
-applicationInUse=使用中のアプリケーションのみ
-clearAllFilter=すべてのフィルターをクリア
-activeFilters=アクティブなフィルター
-filterByName=名前でフィルタリング ...
-allApps=すべてのアプリケーション
-internalApps=内部アプリケーション
-thirdpartyApps=サードパーティのアプリケーション
-appResults=結果
-
-# Linked account
-authorizedProvider=認可済みプロバイダー
-authorizedProviderMessage=アカウントにリンクされた認可済みプロバイダー
-identityProvider=アイデンティティー・プロバイダー
-identityProviderMessage=アカウントと設定したアイデンティティー・プロバイダーをリンクするには
-socialLogin=ソーシャル・ログイン
-userDefined=ユーザー定義
-removeAccess=アクセス権の削除
-removeAccessMessage=このアプリ・アカウントを使用する場合は、アクセス権を再度付与する必要があります。
-
-#Authenticator
-authenticatorStatusMessage=2要素認証は現在
-authenticatorFinishSetUpTitle=あなたの2要素認証
-authenticatorFinishSetUpMessage=Keycloakアカウントにサインインするたびに、2要素認証コードを入力するように求められます。
-authenticatorSubTitle=2要素認証を設定する
-authenticatorSubMessage=アカウントのセキュリティーを強化するには、利用可能な2要素認証の方式のうち少なくとも1つを有効にします。
-authenticatorMobileTitle=モバイル・オーセンティケーター
-authenticatorMobileMessage=モバイル・オーセンティケーターを使用して、2要素認証として確認コードを取得します。
-authenticatorMobileFinishSetUpMessage=オーセンティケーターはあなたの携帯電話にバインドされています。
-authenticatorActionSetup=セットアップ
-authenticatorSMSTitle=SMSコード
-authenticatorSMSMessage=Keycloakは、2要素認証として確認コードを携帯電話に送信します。
-authenticatorSMSFinishSetUpMessage=テキスト・メッセージが次の電話番号宛に送信されます:
-authenticatorDefaultStatus=デフォルト
-authenticatorChangePhone=電話番号の変更
-authenticatorBackupCodesTitle=バックアップ・コード
-authenticatorBackupCodesMessage=8桁のバックアップ・コードの入手
-authenticatorBackupCodesFinishSetUpMessage=この時点で12個のバックアップ・コードが生成されました。それぞれ一度だけ使用できます。
-
-#Authenticator - Mobile Authenticator setup
-authenticatorMobileSetupTitle=モバイル・オーセンティケーターのセットアップ
-smscodeIntroMessage=電話番号を入力すると、確認コードがあなたの電話に送信されます。
-mobileSetupStep1=携帯電話にオーセンティケーター・アプリケーションをインストールします。ここにリストされているアプリケーションがサポートされています。
-mobileSetupStep2=アプリケーションを開き、バーコードをスキャンしてください。
-mobileSetupStep3=アプリケーションから提供されたワンタイムコードを入力し、保存をクリックしてセットアップを終了します。
-scanBarCode=バーコードをスキャンしますか?
-enterBarCode=ワンタイムコードを入力してください
-doCopy=コピー
-doFinish=終了
-
-#Authenticator - SMS Code setup
-authenticatorSMSCodeSetupTitle=SMSコードのセットアップ
-chooseYourCountry=国を選んでください
-enterYourPhoneNumber=電話番号を入力してください
-sendVerficationCode=確認コードの送信
-enterYourVerficationCode=確認コードを入力してください
-
-#Authenticator - backup Code setup
-authenticatorBackupCodesSetupTitle=バックアップコードのセットアップ
-backupcodesIntroMessage=携帯電話にアクセスできない場合でも、バックアップコードを使用してアカウントにログインできます。どこか安全でアクセス可能な場所に保管してください。
-realmName=レルム
-doDownload=ダウンロード
-doPrint=印刷
-backupCodesTips-1=各バックアップコードは1回使用できます。
-backupCodesTips-2=これらのコードはこの日に生成されました:
-generateNewBackupCodes=新しいバックアップコードを生成する
-backupCodesTips-3=新しいバックアップコードを生成すると、現在のコードは機能しなくなります。
-backtoAuthenticatorPage=オーセンティケーター・ページに戻る
-
-
-#Resources
-resources=リソース
-sharedwithMe=私と共有
-share=共有
-sharedwith=共有
-accessPermissions=アクセス・パーミッション
-permissionRequests=パーミッション・リクエスト
-approve=承認
-approveAll=すべて承認
-people=人
-perPage=1ページあたり
-currentPage=現在のページ
-sharetheResource=リソースの共有
-group=グループ
-selectPermission=パーミッションを選択
-addPeople=あなたのリソースを共有する人を追加
-addTeam=あなたのリソースを共有するチームを追加
-myPermissions=私のパーミッション
-waitingforApproval=承認待ち
-anyPermission=任意のパーミッション
-
-# Openshift messages
-openshift.scope.user_info=ユーザー情報
-openshift.scope.user_check-access=ユーザーアクセス情報
-openshift.scope.user_full=フルアクセス
-openshift.scope.list-projects=プロジェクトの一覧表示 \ No newline at end of file
diff --git a/account/messages/messages_lt.properties b/account/messages/messages_lt.properties
deleted file mode 100644
index d6e4016..0000000
--- a/account/messages/messages_lt.properties
+++ /dev/null
@@ -1,154 +0,0 @@
-# encoding: utf-8
-doSave=Saugoti
-doCancel=Atšaukti
-
-doLogOutAllSessions=Atjungti visas sesijas
-doRemove=Šalinti
-doAdd=Pridėti
-doSignOut=Atsijungti
-
-editAccountHtmlTitle=Redaguoti paskyrą
-federatedIdentitiesHtmlTitle=Susietos paskyros
-accountLogHtmlTitle=Paskyros žurnalas
-changePasswordHtmlTitle=Keisti slaptažodį
-sessionsHtmlTitle=Prisijungimo sesijos
-accountManagementTitle=Keycloak Naudotojų Administravimas
-authenticatorTitle=Autentifikatorius
-applicationsHtmlTitle=Programos
-
-authenticatorCode=Vienkartinis kodas
-email=El. paštas
-firstName=Vardas
-givenName=Pavardė
-fullName=Pilnas vardas
-lastName=Pavardė
-familyName=Pavardė
-password=Slaptažodis
-passwordConfirm=Pakartotas slaptažodis
-passwordNew=Naujas slaptažodis
-username=Naudotojo vardas
-address=Adresas
-street=Gatvė
-locality=Miestas arba vietovė
-region=Rajonas
-postal_code=Pašto kodas
-country=Šalis
-emailVerified=El. pašto adresas patvirtintas
-gssDelegationCredential=GSS prisijungimo duomenų delegavimas
-
-role_admin=Administratorius
-role_realm-admin=Srities administravimas
-role_create-realm=Kurti sritį
-role_view-realm=Peržiūrėti sritį
-role_view-users=Peržiūrėti naudotojus
-role_view-applications=Peržiūrėti programas
-role_view-clients=Peržiūrėti klientines programas
-role_view-events=Peržiūrėti įvykių žurnalą
-role_view-identity-providers=Peržiūrėti tapatybės teikėjus
-role_manage-realm=Valdyti sritis
-role_manage-users=Valdyti naudotojus
-role_manage-applications=Valdyti programas
-role_manage-identity-providers=Valdyti tapatybės teikėjus
-role_manage-clients=Valdyti programas
-role_manage-events=Valdyti įvykius
-role_view-profile=Peržiūrėti paskyrą
-role_manage-account=Valdyti paskyrą
-role_read-token=Skaityti prieigos rakšą
-role_offline-access=Darbas neprisijungus
-role_uma_authorization=Įgauti UMA autorizavimo teises
-client_account=Paskyra
-client_security-admin-console=Saugumo administravimo konsolė
-client_admin-cli=Administravimo CLI
-client_realm-management=Srities valdymas
-client_broker=Tarpininkas
-
-
-requiredFields=Privalomi laukai
-allFieldsRequired=Visi laukai yra privalomi
-
-backToApplication=&laquo; Grįžti į programą
-backTo=Atgal į {0}
-
-date=Data
-event=Įvykis
-ip=IP
-client=Klientas
-clients=Klientai
-details=Detaliau
-started=Sukūrimo laikas
-lastAccess=Vėliausia prieiga
-expires=Galioja iki
-applications=Programos
-
-account=Paskyra
-federatedIdentity=Susieta tapatybė
-authenticator=Autentifikatorius
-sessions=Sesijos
-log=Įvykiai
-
-application=Programa
-availablePermissions=Galimos teisės
-grantedPermissions=Įgalintos teisės
-grantedPersonalInfo=Įgalinta asmeninė informacija
-additionalGrants=Papildomi įgaliojimai
-action=Veiksmas
-inResource=yra
-fullAccess=Pilna prieiga
-offlineToken=Režimo neprisijungus raktas (token)
-revoke=Atšaukti įgaliojimą
-
-configureAuthenticators=Sukonfigūruotas autentifikatorius
-mobile=Mobilus
-totpStep1=Įdiekite <a href="https://freeotp.github.io/" target="_blank">FreeOTP</a> arba Google Authenticator savo įrenginyje. Programėlės prieinamos <a href="https://play.google.com">Google Play</a> ir Apple App Store.
-totpStep2=Atidarykite programėlę ir nuskenuokite barkodą arba įveskite kodą.
-totpStep3=Įveskite programėlėje sugeneruotą vieną kartą galiojantį kodą ir paspauskite Saugoti norėdami prisijungti.
-
-missingUsernameMessage=Prašome įvesti naudotojo vardą.
-missingFirstNameMessage=Prašome įvesti vardą.
-invalidEmailMessage=Neteisingas el. pašto adresas.
-missingLastNameMessage=Prašome įvesti pavardę.
-missingEmailMessage=Prašome įvesti el. pašto adresą.
-missingPasswordMessage=Prašome įvesti slaptažodį.
-notMatchPasswordMessage=Slaptažodžiai nesutampa.
-
-missingTotpMessage=Prašome įvesti autentifikacijos kodą.
-invalidPasswordExistingMessage=Neteisingas dabartinis slaptažodis.
-invalidPasswordConfirmMessage=Pakartotas slaptažodis nesutampa.
-invalidTotpMessage=Neteisingas autentifikacijos kodas.
-
-usernameExistsMessage=Toks naudotojas jau egzistuoja.
-emailExistsMessage=El. pašto adresas jau egzistuoja.
-
-readOnlyUserMessage=Tik skaitymui sukonfigūruotos paskyros duomenų atnaujinti neleidžiama.
-readOnlyPasswordMessage=Tik skaitymui sukonfigūruotos paskyros slaptažodžio atnaujinti neleidžiama.
-
-successTotpMessage=Mobilus autentifikatorius sukonfigūruotas.
-successTotpRemovedMessage=Mobilus autentifikatorius pašalintas.
-
-successGrantRevokedMessage=Įgalinimas pašalintas sėkmingai.
-
-accountUpdatedMessage=Jūsų paskyros duomenys sėkmingai atnaujinti.
-accountPasswordUpdatedMessage=Jūsų paskyros slaptažodis pakeistas.
-
-missingIdentityProviderMessage=Nenurodytas tapatybės teikėjas.
-invalidFederatedIdentityActionMessage=Neteisingas arba nežinomas veiksmas.
-identityProviderNotFoundMessage=Nurodytas tapatybės teikėjas nerastas.
-federatedIdentityLinkNotActiveMessage=Nurodyta susieta tapatybė neaktyvi.
-federatedIdentityRemovingLastProviderMessage=Jūs negalite pašalinti paskutinio tapatybės teikėjo sąsajos, nes Jūs neturite nusistatę paskyros slaptažodžio.
-identityProviderRedirectErrorMessage=Klaida nukreipiant į tapatybės teikėjo puslapį.
-identityProviderRemovedMessage=Tapatybės teikėjas sėkmingai pašalintas.
-identityProviderAlreadyLinkedMessage=Susieta tapatybė iš {0} jau susieta su kita paskyra.
-staleCodeAccountMessage=Puslapio galiojimas baigėsi. Bandykite dar kartą.
-consentDenied=Prieiga draudžiama.
-
-accountDisabledMessage=Paskyros galiojimas sustabdytas, kreipkitės į administratorių.
-
-accountTemporarilyDisabledMessage=Paskyros galiojimas laikinai sustabdytas. Kreipkitės į administratorių arba pabandykite vėliau.
-invalidPasswordMinLengthMessage=Per trumpas slaptažodis: mažiausias ilgis {0}.
-invalidPasswordMinLowerCaseCharsMessage=Neteisingas slaptažodis: privaloma įvesti {0} mažąją raidę.
-invalidPasswordMinDigitsMessage=Neteisingas slaptažodis: privaloma įvesti {0} skaitmenį.
-invalidPasswordMinUpperCaseCharsMessage=Neteisingas slaptažodis: privaloma įvesti {0} didžiąją raidę.
-invalidPasswordMinSpecialCharsMessage=Neteisingas slaptažodis: privaloma įvesti {0} specialų simbolį.
-invalidPasswordNotUsernameMessage=Neteisingas slaptažodis: slaptažodis negali sutapti su naudotojo vardu.
-invalidPasswordRegexPatternMessage=Neteisingas slaptažodis: slaptažodis netenkina regex taisyklės(ių).
-invalidPasswordHistoryMessage=Neteisingas slaptažodis: slaptažodis negali sutapti su prieš tai buvusiais {0} slaptažodžiais. \ No newline at end of file
diff --git a/account/messages/messages_nl.properties b/account/messages/messages_nl.properties
deleted file mode 100644
index 80e5503..0000000
--- a/account/messages/messages_nl.properties
+++ /dev/null
@@ -1,133 +0,0 @@
-doSave=Opslaan
-doCancel=Annuleer
-doLogOutAllSessions=Alle sessies uitloggen
-doRemove=Verwijder
-doAdd=Voeg toe
-doSignOut=Afmelden
-editAccountHtmlTitle=Bewerk account
-federatedIdentitiesHtmlTitle=Federated Identities
-accountLogHtmlTitle=Account log
-changePasswordHtmlTitle=Verander wachtwoord
-sessionsHtmlTitle=Sessies
-accountManagementTitle=Keycloak Accountbeheer
-authenticatorTitle=Authenticator
-applicationsHtmlTitle=Toepassingen
-authenticatorCode=Eenmalige code
-email=E-mailadres
-firstName=Voornaam
-givenName=Voornaam
-fullName=Volledige naam
-lastName=Achternaam
-familyName=Achternaam
-password=Wachtwoord
-passwordConfirm=Bevestiging
-passwordNew=Nieuw Wachtwoord
-username=Gebruikersnaam
-address=Adres
-street=Straat
-locality=Stad of plaats
-region=Staat, provincie of regio
-postal_code=Postcode
-country=Land
-emailVerified=E-mailadres geverifieerd
-gssDelegationCredential=GSS gedelegeerde aanmeldgegevens
-role_admin=Beheer
-role_realm-admin=Realmbeheer
-role_create-realm=Creëer realm
-role_view-realm=Bekijk realm
-role_view-users=Bekijk gebruikers
-role_view-applications=Bekijk toepassingen
-role_view-clients=Bekijk clients
-role_view-events=Bekijk gebeurtenissen
-role_view-identity-providers=Bekijk identity providers
-role_manage-realm=Beheer realm
-role_manage-users=Beheer gebruikers
-role_manage-applications=Beheer toepassingen
-role_manage-identity-providers=Beheer identity providers
-role_manage-clients=Beheer clients
-role_manage-events=Beheer gebeurtenissen
-role_view-profile=Bekijk profiel
-role_manage-account=Beheer account
-role_manage-account-links=Beheer accountkoppelingen
-role_read-token=Lees token
-role_offline-access=Offline toegang
-role_uma_authorization=Verkrijg UMA rechten
-client_account=Account
-client_security-admin-console=Console Veligheidsbeheer
-client_admin-cli=Beheer CLI
-client_realm-management=Realmbeheer
-client_broker=Broker
-requiredFields=Verplichte velden
-allFieldsRequired=Alle velden verplicht
-backToApplication=&laquo; Terug naar toepassing
-backTo=Terug naar {0}
-date=Datum
-event=Gebeurtenis
-ip=IP
-client=Client
-clients=Clients
-details=Details
-started=Gestart
-lastAccess=Laatste toegang
-expires=Vervalt
-applications=Toepassingen
-account=Account
-federatedIdentity=Federated Identity
-authenticator=Authenticator
-sessions=Sessies
-log=Log
-application=Toepassing
-availablePermissions=Beschikbare rechten
-grantedPermissions=Gegunde rechten
-grantedPersonalInfo=Gegunde Persoonsgegevens
-additionalGrants=Verdere vergunningen
-action=Actie
-inResource=in
-fullAccess=Volledige toegang
-offlineToken=Offline Token
-revoke=Vergunning intrekken
-configureAuthenticators=Ingestelde authenticators
-mobile=Mobiel nummer
-totpStep1=Installeer een van de onderstaande applicaties op uw mobiele apparaat:
-totpStep2=Open de toepassing en scan de QR-code of voer de sleutel in.
-totpStep3=Voer de door de toepassing gegeven eenmalige code in en klik op Opslaan om de configuratie af te ronden.
-missingUsernameMessage=Gebruikersnaam ontbreekt.
-missingFirstNameMessage=Voornaam onbreekt.
-invalidEmailMessage=Ongeldig e-mailadres.
-missingLastNameMessage=Achternaam ontbreekt.
-missingEmailMessage=E-mailadres ontbreekt.
-missingPasswordMessage=Wachtwoord ontbreekt.
-notMatchPasswordMessage=Wachtwoorden komen niet overeen.
-missingTotpMessage=Authenticatiecode ontbreekt.
-invalidPasswordExistingMessage=Ongeldig bestaand wachtwoord.
-invalidPasswordConfirmMessage=Wachtwoordbevestiging komt niet overeen.
-invalidTotpMessage=Ongeldige authenticatiecode.
-emailExistsMessage=E-mailadres bestaat reeds.
-readOnlyUserMessage=U kunt uw account niet bijwerken aangezien het account alleen-lezen is.
-readOnlyPasswordMessage=U kunt uw wachtwoord niet wijzigen omdat uw account alleen-lezen is.
-successTotpMessage=Mobiele authenticator geconfigureerd.
-successTotpRemovedMessage=Mobiele authenticator verwijderd.
-successGrantRevokedMessage=Vergunning succesvol ingetrokken
-accountUpdatedMessage=Uw account is gewijzigd.
-accountPasswordUpdatedMessage=Uw wachtwoord is gewijzigd.
-missingIdentityProviderMessage=Geen identity provider aangegeven.
-invalidFederatedIdentityActionMessage=Ongeldige of ontbrekende actie op federated identity.
-identityProviderNotFoundMessage=Gespecificeerde identity provider niet gevonden.
-federatedIdentityLinkNotActiveMessage=Deze federated identity is niet langer geldig.
-federatedIdentityRemovingLastProviderMessage=U kunt de laatste federated identity provider niet verwijderen aangezien u dan niet langer zou kunnen inloggen.
-identityProviderRedirectErrorMessage=Kon niet herverwijzen naar identity provider.
-identityProviderRemovedMessage=Identity provider met succes verwijderd.
-identityProviderAlreadyLinkedMessage=Door {0} teruggegeven federated identity is al gekoppeld aan een andere gebruiker.
-staleCodeAccountMessage=De pagina is verlopen. Probeer het nogmaals.
-consentDenied=Toestemming geweigerd
-accountDisabledMessage=Account is gedeactiveerd. Contacteer de beheerder.
-accountTemporarilyDisabledMessage=Account is tijdelijk deactiveerd, neem contact op met de beheerder of probeer het later opnieuw.
-invalidPasswordMinLengthMessage=Ongeldig wachtwoord: de minimale lengte is {0} karakters.
-invalidPasswordMinLowerCaseCharsMessage=Ongeldig wachtwoord: het moet minstens {0} kleine letters bevatten.
-invalidPasswordMinDigitsMessage=Ongeldig wachtwoord: het moet minstens {0} getallen bevatten.
-invalidPasswordMinUpperCaseCharsMessage=Ongeldig wachtwoord: het moet minstens {0} hoofdletters bevatten.
-invalidPasswordMinSpecialCharsMessage=Ongeldig wachtwoord: het moet minstens {0} speciale karakters bevatten.
-invalidPasswordNotUsernameMessage=Ongeldig wachtwoord: het mag niet overeenkomen met de gebruikersnaam.
-invalidPasswordRegexPatternMessage=Ongeldig wachtwoord: het voldoet niet aan het door de beheerder ingestelde patroon.
-invalidPasswordHistoryMessage=Ongeldig wachtwoord: het mag niet overeen komen met een van de laatste {0} wachtwoorden.
-invalidPasswordGenericMessage=Ongeldig wachtwoord: het nieuwe wachtwoord voldoet niet aan het wachtwoordbeleid.
diff --git a/account/messages/messages_no.properties b/account/messages/messages_no.properties
deleted file mode 100644
index 6fac5fb..0000000
--- a/account/messages/messages_no.properties
+++ /dev/null
@@ -1,165 +0,0 @@
-doSave=Lagre
-doCancel=Avbryt
-doLogOutAllSessions=Logg ut av alle sesjoner
-doRemove=Fjern
-doAdd=Legg til
-doSignOut=Logg ut
-
-editAccountHtmlTitle=Rediger konto
-federatedIdentitiesHtmlTitle=Federerte identiteter
-accountLogHtmlTitle=Kontologg
-changePasswordHtmlTitle=Endre passord
-sessionsHtmlTitle=Sesjoner
-accountManagementTitle=Keycloak kontoadministrasjon
-authenticatorTitle=Autentikator
-applicationsHtmlTitle=Applikasjoner
-
-authenticatorCode=Engangskode
-email=E-post
-firstName=Fornavn
-givenName=Fornavn
-fullName=Fullt navn
-lastName=Etternavn
-familyName=Etternavn
-password=Passord
-passwordConfirm=Bekreftelse
-passwordNew=Nytt passord
-username=Brukernavn
-address=Adresse
-street=Gate-/veinavn + husnummer
-locality=By
-region=Fylke
-postal_code=Postnummer
-country=Land
-emailVerified=E-post bekreftet
-gssDelegationCredential=GSS legitimasjonsdelegering
-
-role_admin=Administrator
-role_realm-admin=Administrator for sikkerhetsdomene
-role_create-realm=Opprette sikkerhetsdomene
-role_view-realm=Se sikkerhetsdomene
-role_view-users=Se brukere
-role_view-applications=Se applikasjoner
-role_view-clients=Se klienter
-role_view-events=Se hendelser
-role_view-identity-providers=Se identitetsleverand\u00F8rer
-role_manage-realm=Administrere sikkerhetsdomene
-role_manage-users=Administrere brukere
-role_manage-applications=Administrere applikasjoner
-role_manage-identity-providers=Administrere identitetsleverand\u00F8rer
-role_manage-clients=Administrere klienter
-role_manage-events=Administrere hendelser
-role_view-profile=Se profil
-role_manage-account=Administrere konto
-role_read-token=Lese token
-role_offline-access=Frakoblet tilgang
-role_uma_authorization=Skaffe tillatelser
-client_account=Konto
-client_security-admin-console=Sikkerhetsadministrasjonskonsoll
-client_admin-cli=Kommandolinje-grensesnitt for administrator
-client_realm-management=Sikkerhetsdomene-administrasjon
-client_broker=Broker
-
-
-requiredFields=Obligatoriske felt
-allFieldsRequired=Alle felt m\u00E5 fylles ut
-
-backToApplication=&laquo; Tilbake til applikasjonen
-backTo=Tilbake til {0}
-
-date=Dato
-event=Hendelse
-ip=IP
-client=Klient
-clients=Klienter
-details=Detaljer
-started=Startet
-lastAccess=Sist benyttet
-expires=Utl\u00F8per
-applications=Applikasjoner
-
-account=Konto
-federatedIdentity=Federert identitet
-authenticator=Autentikator
-sessions=Sesjoner
-log=Logg
-
-application=Applikasjon
-availablePermissions=Tilgjengelige rettigheter
-grantedPermissions=Innvilgede rettigheter
-grantedPersonalInfo=Innvilget personlig informasjon
-additionalGrants=Ekstra rettigheter
-action=Handling
-inResource=i
-fullAccess=Full tilgang
-offlineToken=Offline token
-revoke=Opphev rettighet
-
-configureAuthenticators=Konfigurerte autentikatorer
-mobile=Mobiltelefon
-totpStep1=Installer ett av f\u00F8lgende programmer p\u00E5 mobilen din.
-totpStep2=\u00C5pne applikasjonen og skann strekkoden eller skriv inn koden.
-totpStep3=Skriv inn engangskoden gitt av applikasjonen og klikk Lagre for \u00E5 fullf\u00F8re.
-
-missingUsernameMessage=Vennligst oppgi brukernavn.
-missingFirstNameMessage=Vennligst oppgi fornavn.
-invalidEmailMessage=Ugyldig e-postadresse.
-missingLastNameMessage=Vennligst oppgi etternavn.
-missingEmailMessage=Vennligst oppgi e-postadresse.
-missingPasswordMessage=Vennligst oppgi passord.
-notMatchPasswordMessage=Passordene er ikke like.
-
-missingTotpMessage=Vennligst oppgi engangskode.
-invalidPasswordExistingMessage=Ugyldig eksisterende passord.
-invalidPasswordConfirmMessage=Passordene er ikke like.
-invalidTotpMessage=Ugyldig engangskode.
-
-usernameExistsMessage=Brukernavnet finnes allerede.
-emailExistsMessage=E-postadressen finnes allerede.
-
-readOnlyUserMessage=Du kan ikke oppdatere kontoen din ettersom den er skrivebeskyttet.
-readOnlyPasswordMessage=Du kan ikke oppdatere passordet ditt ettersom kontoen din er skrivebeskyttet.
-
-successTotpMessage=Autentikator for mobiltelefon er konfigurert.
-successTotpRemovedMessage=Autentikator for mobiltelefon er fjernet.
-
-successGrantRevokedMessage=Vellykket oppheving av rettighet.
-
-accountUpdatedMessage=Kontoen din har blitt oppdatert.
-accountPasswordUpdatedMessage=Ditt passord har blitt oppdatert.
-
-missingIdentityProviderMessage=Identitetsleverand\u00F8r er ikke spesifisert.
-invalidFederatedIdentityActionMessage=Ugyldig eller manglende handling.
-identityProviderNotFoundMessage=Spesifisert identitetsleverand\u00F8r ikke funnet.
-federatedIdentityLinkNotActiveMessage=Denne identiteten er ikke lenger aktiv.
-federatedIdentityRemovingLastProviderMessage=Du kan ikke fjerne siste federerte identitet ettersom du ikke har et passord.
-identityProviderRedirectErrorMessage=Redirect til identitetsleverand\u00F8r feilet.
-identityProviderRemovedMessage=Fjerning av identitetsleverand\u00F8r var vellykket.
-identityProviderAlreadyLinkedMessage=Federert identitet returnert av {0} er allerede koblet til en annen bruker.
-staleCodeAccountMessage=Siden har utl\u00F8pt. Vennligst pr\u00F8v en gang til.
-consentDenied=Samtykke avsl\u00E5tt.
-
-accountDisabledMessage=Konto er deaktivert, kontakt administrator.
-
-accountTemporarilyDisabledMessage=Konto er midlertidig deaktivert, kontakt administrator eller pr\u00F8v igjen senere.
-invalidPasswordMinLengthMessage=Ugyldig passord: minimum lengde {0}.
-invalidPasswordMinLowerCaseCharsMessage=Ugyldig passord: m\u00E5 inneholde minimum {0} sm\u00E5 bokstaver.
-invalidPasswordMinDigitsMessage=Ugyldig passord: m\u00E5 inneholde minimum {0} sifre.
-invalidPasswordMinUpperCaseCharsMessage=Ugyldig passord: m\u00E5 inneholde minimum {0} store bokstaver.
-invalidPasswordMinSpecialCharsMessage=Ugyldig passord: m\u00E5 inneholde minimum {0} spesialtegn.
-invalidPasswordNotUsernameMessage=Ugyldig passord: kan ikke v\u00E6re likt brukernavn.
-invalidPasswordRegexPatternMessage=Ugyldig passord: tilfredsstiller ikke kravene for passord-m\u00F8nster.
-invalidPasswordHistoryMessage=Ugyldig passord: kan ikke v\u00E6re likt noen av de {0} foreg\u00E5ende passordene.
-
-locale_ca=Catal\u00E0
-locale_de=Deutsch
-locale_en=English
-locale_es=Espa\u00F1ol
-locale_fr=Fran\u00e7ais
-locale_it=Italian
-locale_ja=\u65E5\u672C\u8A9E
-locale_no=Norsk
-locale_nl=Nederlands
-locale_pt-BR=Portugu\u00EAs (Brasil)
-locale_ru=\u0420\u0443\u0441\u0441\u043A\u0438\u0439
-locale_zh-CN=\u4e2d\u6587\u7b80\u4f53
diff --git a/account/messages/messages_pl.properties b/account/messages/messages_pl.properties
deleted file mode 100644
index dd55d69..0000000
--- a/account/messages/messages_pl.properties
+++ /dev/null
@@ -1 +0,0 @@
-# encoding: UTF-8
diff --git a/account/messages/messages_pt_BR.properties b/account/messages/messages_pt_BR.properties
deleted file mode 100644
index 80e8515..0000000
--- a/account/messages/messages_pt_BR.properties
+++ /dev/null
@@ -1,149 +0,0 @@
-doSave=Salvar
-doCancel=Cancelar
-doLogOutAllSessions=Sair de todas as sess\u00F5es
-doRemove=Remover
-doAdd=Adicionar
-doSignOut=Sair
-
-editAccountHtmlTitle=Editar Conta
-federatedIdentitiesHtmlTitle=Identidades Federadas
-accountLogHtmlTitle=Log da conta
-changePasswordHtmlTitle=Alterar senha
-sessionsHtmlTitle=Sess\u00F5es
-accountManagementTitle=Gerenciamento de Conta
-authenticatorTitle=Autenticator
-applicationsHtmlTitle=Aplicativos
-
-authenticatorCode=C\u00F3digo autenticador
-email=E-mail
-firstName=Primeiro nome
-givenName=Primeiro nome
-fullName=Nome completo
-lastName=Sobrenome
-familyName=Sobrenome
-password=Senha
-passwordConfirm=Confirma\u00E7\u00E3o
-passwordNew=Nova senha
-username=Nome de us\u00FAario
-address=Endere\u00E7o
-street=Logradouro
-locality=Cidade ou Localidade
-region=Estado
-postal_code=CEP
-country=Pa\u00EDs
-emailVerified=E-mail verificado
-gssDelegationCredential=GSS Delega\u00E7\u00E3o de Credencial
-
-role_admin=Admin
-role_realm-admin=Realm Admin
-role_create-realm=Cria realm
-role_view-realm=Visualiza realm
-role_view-users=Visualiza usu\u00E1rios
-role_view-applications=Visualiza aplica\u00E7\u00F5es
-role_view-clients=Visualiza clientes
-role_view-events=Visualiza eventos
-role_view-identity-providers=Visualiza provedores de identidade
-role_manage-realm=Gerencia realm
-role_manage-users=Gerencia usu\u00E1rios
-role_manage-applications=Gerencia aplica\u00E7\u00F5es
-role_manage-identity-providers=Gerencia provedores de identidade
-role_manage-clients=Gerencia clientes
-role_manage-events=Gerencia eventos
-role_view-profile=Visualiza perfil
-role_manage-account=Gerencia conta
-role_read-token=L\u00EA token
-role_offline-access=Acesso Offline
-role_uma_authorization=Obter permiss\u00F5es
-client_account=Conta
-client_security-admin-console=Console de Administra\u00E7\u00E3o de Seguran\u00E7a
-client_admin-cli=Admin CLI
-client_realm-management=Gerenciamento de Realm
-client_broker=Broker
-
-requiredFields=Campos obrigat\u00F3rios
-allFieldsRequired=Todos os campos s\u00E3o obrigat\u00F3rios
-
-backToApplication=&laquo; Voltar para aplica\u00E7\u00E3o
-backTo=Voltar para {0}
-
-date=Data
-event=Evento
-ip=IP
-client=Cliente
-clients=Clientes
-details=Detalhes
-started=Iniciado
-lastAccess=\u00DAltimo acesso
-expires=Expira
-applications=Aplicativos
-
-account=Conta
-federatedIdentity=Identidade Federada
-authenticator=Autenticador
-sessions=Sess\u00F5es
-log=Log
-
-application=Aplicativo
-availablePermissions=Permiss\u00F5es Dispon\u00EDveis
-grantedPermissions=Permiss\u00F5es Concedidas
-grantedPersonalInfo=Informa\u00E7\u00F5es Pessoais Concedidas
-additionalGrants=Concess\u00F5es Adicionais
-action=A\u00E7\u00E3o
-inResource=em
-fullAccess=Acesso Completo
-offlineToken=Offline Token
-revoke=Revogar Concess\u00F5es
-
-configureAuthenticators=Autenticadores Configurados
-mobile=Mobile
-totpStep1=Instalar <a href="https://freeotp.github.io/" target="_blank">FreeOTP</a> ou Google Authenticator em seu dispositivo. Ambas aplica\u00E7\u00F5es est\u00E3o dispon\u00EDveis no <a href="https://play.google.com">Google Play</a> e na Apple App Store.
-totpStep2=Abra o aplicativo e escaneie o c\u00F3digo de barras ou entre com o c\u00F3digo.
-totpStep3=Digite o c\u00F3digo fornecido pelo aplicativo e clique em Salvar para concluir a configura\u00E7\u00E3o.
-
-missingUsernameMessage=Por favor, especifique o nome de usu\u00E1rio.
-missingFirstNameMessage=Por favor, informe o primeiro nome.
-invalidEmailMessage=E-mail inv\u00E1lido.
-missingLastNameMessage=Por favor, informe o sobrenome.
-missingEmailMessage=Por favor, informe o e-mail.
-missingPasswordMessage=Por favor, informe a senha.
-notMatchPasswordMessage=As senhas n\u00E3o coincidem.
-
-missingTotpMessage=Por favor, informe o c\u00F3digo autenticador.
-invalidPasswordExistingMessage=Senha atual inv\u00E1lida.
-invalidPasswordConfirmMessage=A senha de confirma\u00E7\u00E3o n\u00E3o coincide.
-invalidTotpMessage=C\u00F3digo autenticador inv\u00E1lido.
-
-usernameExistsMessage=Este nome de usu\u00E1rio j\u00E1 existe.
-emailExistsMessage=Este e-mail j\u00E1 existe.
-
-readOnlyUserMessage=Voc\u00EA n\u00E3o pode atualizar sua conta, uma vez que \u00E9 apenas de leitura
-readOnlyPasswordMessage=Voc\u00EA n\u00E3o pode atualizar sua senha, sua conta \u00E9 somente leitura
-
-successTotpMessage=Autenticador mobile configurado.
-successTotpRemovedMessage=Autenticador mobile removido.
-
-successGrantRevokedMessage=Concess\u00F5es revogadas com sucesso.
-
-accountUpdatedMessage=Sua conta foi atualizada
-accountPasswordUpdatedMessage=Sua senha foi atualizada
-
-missingIdentityProviderMessage=Provedor de identidade n\u00E3o especificado
-invalidFederatedIdentityActionMessage=A\u00E7\u00E3o inv\u00E1lida ou ausente
-identityProviderNotFoundMessage=O provedor de identidade especificado n\u00E3o foi encontrado
-federatedIdentityLinkNotActiveMessage=Esta identidade n\u00E3o est\u00E1 mais em atividade
-federatedIdentityRemovingLastProviderMessage=Voc\u00EA n\u00E3o pode remover a \u00FAltima identidade federada como voc\u00EA n\u00E3o tem senha
-identityProviderRedirectErrorMessage=Falha ao redirecionar para o provedor de identidade
-identityProviderRemovedMessage=Provedor de identidade removido com sucesso
-identityProviderAlreadyLinkedMessage=Identidade federada retornado por {0} j\u00E1 est\u00E1 ligado a outro usu\u00E1rio.
-
-accountDisabledMessage=Conta desativada, contate o administrador
-
-accountTemporarilyDisabledMessage=A conta est\u00E1 temporariamente indispon\u00EDvel, contate o administrador ou tente novamente mais tarde
-invalidPasswordMinLengthMessage=Senha inv\u00E1lida\: comprimento m\u00EDnimo {0}
-invalidPasswordMinLowerCaseCharsMessage=Senha inv\u00E1lida\: deve conter pelo menos {0} caractere(s) min\u00FAsculo
-invalidPasswordMinDigitsMessage=Senha inv\u00E1lida\: deve conter pelo menos {0} n\u00FAmero(s)
-invalidPasswordMinUpperCaseCharsMessage=Senha inv\u00E1lida\: deve conter pelo menos {0} caractere(s) mai\u00FAsculo
-invalidPasswordMinSpecialCharsMessage=Senha inv\u00E1lida\: deve conter pelo menos {0} caractere(s) especial
-invalidPasswordNotUsernameMessage=Senha inv\u00E1lida\: n\u00E3o deve ser igual ao nome de usu\u00E1rio
-invalidPasswordRegexPatternMessage=Senha inv\u00E1lida\: n\u00E3o corresponde ao padr\u00E3o da express\u00E3o regular.
-invalidPasswordHistoryMessage=Senha inv\u00E1lida\: n\u00E3o pode ser igual a qualquer uma das {0} \u00FAltimas senhas. \ No newline at end of file
diff --git a/account/messages/messages_ru.properties b/account/messages/messages_ru.properties
deleted file mode 100644
index a9716b8..0000000
--- a/account/messages/messages_ru.properties
+++ /dev/null
@@ -1,155 +0,0 @@
-# encoding: utf-8
-doSave=Сохранить
-doCancel=Отмена
-doLogOutAllSessions=Выйти из всех сессий
-doRemove=Удалить
-doAdd=Добавить
-doSignOut=Выход
-
-editAccountHtmlTitle=Изменение учетной записи
-federatedIdentitiesHtmlTitle=Федеративные идентификаторы
-accountLogHtmlTitle=Лог учетной записи
-changePasswordHtmlTitle=Смена пароля
-sessionsHtmlTitle=Сессии
-accountManagementTitle=Управление учетной записью
-authenticatorTitle=Аутентификатор
-applicationsHtmlTitle=Приложения
-
-authenticatorCode=Одноразовый код
-email=E-mail
-firstName=Имя
-givenName=Имя
-fullName=Полное имя
-lastName=Фамилия
-familyName=Фамилия
-password=Пароль
-passwordConfirm=Подтверждение пароля
-passwordNew=Новый пароль
-username=Имя пользователя
-address=Адрес
-street=Улица
-locality=Город
-region=Регион
-postal_code=Почтовый индекс
-country=Страна
-emailVerified=E-mail подтвержден
-gssDelegationCredential=Делегирование учетных данных через GSS
-
-role_admin=Администратор
-role_realm-admin=Администратор realm
-role_create-realm=Создать realm
-role_view-realm=Просмотр realm
-role_view-users=Просмотр пользователей
-role_view-applications=Просмотр приложений
-role_view-clients=Просмотр клиентов
-role_view-events=Просмотр событий
-role_view-identity-providers=Просмотр провайдеров учетных записей
-role_manage-realm=Управление realm
-role_manage-users=Управление пользователями
-role_manage-applications=Управление приложениями
-role_manage-identity-providers=Управление провайдерами учетных записей
-role_manage-clients=Управление клиентами
-role_manage-events=Управление событиями
-role_view-profile=Просмотр профиля
-role_manage-account=Управление учетной записью
-role_read-token=Чтение токена
-role_offline-access=Доступ оффлайн
-role_uma_authorization=Получение разрешений
-client_account=Учетная запись
-client_security-admin-console=Консоль администратора безопасности
-client_admin-cli=Командный интерфейс администратора
-client_realm-management=Управление Realm
-client_broker=Брокер
-
-
-requiredFields=Обязательные поля
-allFieldsRequired=Все поля обязательны
-
-backToApplication=&laquo; Назад в приложение
-backTo=Назад в {0}
-
-date=Дата
-event=Событие
-ip=IP
-client=Клиент
-clients=Клиенты
-details=Детали
-started=Начата
-lastAccess=Последний доступ
-expires=Истекает
-applications=Приложения
-
-account=Учетная запись
-federatedIdentity=Федеративный идентификатор
-authenticator=Аутентификатор
-sessions=Сессии
-log=Журнал
-
-application=Приложение
-availablePermissions=Доступные разрешения
-grantedPermissions=Согласованные разрешения
-grantedPersonalInfo=Согласованная персональная информация
-additionalGrants=Дополнительные согласования
-action=Действие
-inResource=в
-fullAccess=Полный доступ
-offlineToken=Оффлайн токен
-revoke=Отозвать согласование
-
-configureAuthenticators=Сконфигурированные аутентификаторы
-mobile=Мобильное приложение
-totpStep1=Установите <a href="https://freeotp.github.io/" target="_blank">FreeOTP</a> или Google Authenticator. Оба приложения доступны на <a href="https://play.google.com">Google Play</a> и в Apple App Store.
-totpStep2=Откройте приложение и просканируйте баркод, либо введите ключ.
-totpStep3=Введите одноразовый код, выданный приложением, и нажмите сохранить для завершения установки.
-
-missingUsernameMessage=Введите имя пользователя.
-missingFirstNameMessage=Введите имя.
-invalidEmailMessage=Введите корректный E-mail.
-missingLastNameMessage=Введите фамилию.
-missingEmailMessage=Введите E-mail.
-missingPasswordMessage=Введите пароль.
-notMatchPasswordMessage=Пароли не совпадают.
-
-missingTotpMessage=Введите код аутентификатора.
-invalidPasswordExistingMessage=Существующий пароль неверный.
-invalidPasswordConfirmMessage=Подтверждение пароля не совпадает.
-invalidTotpMessage=Неверный код аутентификатора.
-
-usernameExistsMessage=Имя пользователя уже существует.
-emailExistsMessage=E-mail уже существует.
-
-readOnlyUserMessage=Вы не можете обновить информацию вашей учетной записи, т.к. она доступна только для чтения.
-readOnlyPasswordMessage=Вы не можете обновить пароль вашей учетной записи, т.к. он доступен только для чтения.
-
-successTotpMessage=Аутентификатор в мобильном приложении сконфигурирован.
-successTotpRemovedMessage=Аутентификатор в мобильном приложении удален.
-
-successGrantRevokedMessage=Согласование отозвано успешно.
-
-accountUpdatedMessage=Ваша учетная запись обновлена.
-accountPasswordUpdatedMessage=Ваш пароль обновлен.
-
-missingIdentityProviderMessage=Провайдер учетных записей не задан.
-invalidFederatedIdentityActionMessage=Некорректное или недопустимое действие.
-identityProviderNotFoundMessage=Заданный провайдер учетных записей не найден.
-federatedIdentityLinkNotActiveMessage=Идентификатор больше не активен.
-federatedIdentityRemovingLastProviderMessage=Вы не можете удалить последний федеративный идентификатор, т.к. Вы не имеете пароля.
-identityProviderRedirectErrorMessage=Ошибка перенаправления в провайдер учетных записей.
-identityProviderRemovedMessage=Провайдер учетных записей успешно удален.
-identityProviderAlreadyLinkedMessage=Федеративный идентификатор, возвращенный {0} уже используется другим пользователем.
-staleCodeAccountMessage=Страница устарела. Попробуйте еще раз.
-consentDenied=В согласовании отказано.
-
-accountDisabledMessage=Учетная запись заблокирована, обратитесь к администратору.
-
-accountTemporarilyDisabledMessage=Учетная запись временно заблокирована, обратитесь к администратору или попробуйте позже.
-invalidPasswordMinLengthMessage=Некорректный пароль: длина пароля должна быть не менее {0} символа(ов).
-invalidPasswordMinLowerCaseCharsMessage=Некорректный пароль: пароль должен содержать не менее {0} символа(ов) в нижнем регистре.
-invalidPasswordMinDigitsMessage=Некорректный пароль: пароль должен содержать не менее {0} цифр(ы).
-invalidPasswordMinUpperCaseCharsMessage=Некорректный пароль: пароль должен содержать не менее {0} символа(ов) в верхнем регистре.
-invalidPasswordMinSpecialCharsMessage=Некорректный пароль: пароль должен содержать не менее {0} спецсимвола(ов).
-invalidPasswordNotUsernameMessage=Некорректный пароль: пароль не должен совпадать с именем пользователя.
-invalidPasswordRegexPatternMessage=Некорректный пароль: пароль не удовлетворяет регулярному выражению.
-invalidPasswordHistoryMessage=Некорректный пароль: пароль не должен совпадать с последним(и) {0} паролями.
-invalidPasswordGenericMessage=Некорректный пароль: новый пароль не соответствует правилам пароля.
-
diff --git a/account/messages/messages_sk.properties b/account/messages/messages_sk.properties
deleted file mode 100644
index 32cafc6..0000000
--- a/account/messages/messages_sk.properties
+++ /dev/null
@@ -1,196 +0,0 @@
-# encoding: utf-8
-doSave=Uložiť
-doCancel=Zrušiť
-doLogOutAllSessions=Odhlásenie všetkých relácií
-doRemove=Odstrániť
-doAdd=Pridať
-doSignOut=Odhlásiť
-
-editAccountHtmlTitle=Upraviť účet
-federatedIdentitiesHtmlTitle=Prepojená identita
-accountLogHtmlTitle=Denník zmien užívateľských účtov
-changePasswordHtmlTitle=Zmena hesla
-sessionsHtmlTitle=Relácie
-accountManagementTitle=Správa účtu Keycloak
-authenticatorTitle=Autentifikátor
-applicationsHtmlTitle=Aplikácie
-
-authenticatorCode=Jednorázový kód
-email=E-mail
-firstName=Meno
-givenName=Meno pri narodení
-fullName=Celé meno
-lastName=Priezvisko
-familyName=Rodné meno
-password=Heslo
-passwordConfirm=Potrvrdenie hesla
-passwordNew=Nové heslo
-username=Meno používateľa
-address=Adresa
-street=Ulica
-locality=Mesto alebo lokalita
-region=Kraj
-postal_code=PSČ
-country=Štát
-emailVerified=E-mail overený
-gssDelegationCredential=GSS delegované oprávnenie
-
-role_admin=Administrátor
-role_realm-admin=Administrátor realmu
-role_create-realm=Vytvoriť realm
-role_view-realm=Zobraziť realm
-role_view-users=Zobraziť používateľov
-role_view-applications=Zobraziť aplikácie
-role_view-clients=Zobraziť klientov
-role_view-events=Zobraziť udalosti
-role_view-identity-providers=Zobraziť klientov poskytovateľov identity
-role_manage-realm=Spravovať realm
-role_manage-users=Spravovať používateľov
-role_manage-applications=Spravovať aplikácie
-role_manage-identity-providers=Spravovať poskytovateľov identity
-role_manage-clients=Spravovať klientov
-role_manage-events=Spravovať udalosti
-role_view-profile=Zobraziť profil
-role_manage-account=Spravovať účet
-role_manage-account-links=Spravovať odkazy na účet
-role_read-token=Čítať token
-role_offline-access=Offline prístup
-role_uma_authorization=Autorizácia používateľom riadeného prístupu
-client_account=Účet klienta
-client_security-admin-console=Bezpečnostná administrátorská konzola
-client_admin-cli=Spravovať CLI klienta
-client_realm-management=Spravovať realmy klienta
-client_broker=Broker
-
-
-requiredFields=Povinné polia
-allFieldsRequired=Všetky požadované polia
-
-backToApplication=&laquo; Späť na aplikáciu
-backTo=Späť na {0}
-
-date=Dátum
-event=Udalosť
-ip=IP
-client=Klient
-clients=Klienti
-details=Podrobnosti
-started=Začíname
-lastAccess=Posledný prístup
-expires=Vyprší
-applications=Aplikácie
-
-account=Účet
-federatedIdentity=Prepojená identita
-authenticator=Autentifikátor
-sessions=Relácie
-log=Denník
-
-application=Aplikácia
-availablePermissions=Dostupné oprávnenia
-grantedPermissions=Pridelené oprávnenia
-grantedPersonalInfo=Poskytnuté osobné informácie
-additionalGrants=Dodatočné oprávnenia
-action=Akcia
-inResource=v
-fullAccess=Úplný prístup
-offlineToken=Offline token
-revoke=Zrušiť oprávnenie
-
-configureAuthenticators=Nakonfigurované autentifikátory
-mobile=Mobilný
-totpStep1=Nainštalujte vo svojom zariadení <a href="https://freeotp.github.io/" target="_blank"> FreeOTP </a> alebo Google Authenticator. Obidve aplikácie sú k dispozícii v <a href="https://play.google.com"> Google Play </a> a Apple App Store.
-totpStep2=Otvorte aplikáciu a naskenujte čiarový kód alebo zadajte kľúč.
-totpStep3=Zadajte jednorazový kód poskytnutý aplikáciou a kliknutím na tlačidlo Uložiť dokončíte nastavenie.
-
-totpManualStep2=Otvorte aplikáciu a zadajte kľúč
-totpManualStep3=Použite nasledujúce hodnoty konfigurácie, ak aplikácia umožňuje ich nastavenie
-totpUnableToScan=Nemožno skenovať?
-totpScanBarcode=Skenovanie čiarového kódu?
-
-totp.totp=Založené na čase
-totp.hotp=Založené na počítadle
-
-totpType=Typ
-totpAlgorithm=Algoritmus
-totpDigits=Číslica
-totpInterval=Interval
-totpCounter=Počítadlo
-
-missingUsernameMessage=Zadajte používateľské meno.
-missingFirstNameMessage=Zadajte meno.
-invalidEmailMessage=Neplatná e-mailová adresa.
-missingLastNameMessage=Zadajte priezvisko.
-missingEmailMessage=Zadajte e-mail.
-missingPasswordMessage=Zadajte heslo, prosím.
-notMatchPasswordMessage=Heslá sa nezhodujú.
-
-missingTotpMessage=Zadajte jednorazový kód, prosím
-invalidPasswordExistingMessage=Neplatné existujúce heslo.
-invalidPasswordConfirmMessage=Potvrdenie hesla sa nezhoduje.
-invalidTotpMessage=Neplatný jednorazový kód.
-
-usernameExistsMessage=Užívateľské meno už existuje.
-emailExistsMessage=E-mail už existuje.
-
-readOnlyUserMessage=Váš účet nemôžete aktualizovať, pretože je iba na čítanie.
-readOnlyUsernameMessage=Nemôžete aktualizovať svoje používateľské meno, pretože je iba na čítanie.
-readOnlyPasswordMessage=Heslo nemôžete aktualizovať, pretože váš účet je iba na čítanie.
-
-successTotpMessage=Konfigurácia mobilného autentifikátora.
-successTotpRemovedMessage=Mobilný autentifikátor bol odstránený.
-
-successGrantRevokedMessage=Oprávnenie bolo úspešne zrušené.
-
-accountUpdatedMessage=Váš účet bol aktualizovaný.
-accountPasswordUpdatedMessage=Vaše heslo bolo aktualizované.
-
-missingIdentityProviderMessage=Poskytovateľ identity nie je zadaný.
-invalidFederatedIdentityActionMessage=Neplatná alebo chýbajúca akcia.
-identityProviderNotFoundMessage=Zadaný poskytovateľ identity nenájdený.
-federatedIdentityLinkNotActiveMessage=Identita už nie je aktívna.
-federatedIdentityRemovingLastProviderMessage=Nemôžete odstrániť poslednú spojenú identitu, pretože nemáte heslo.
-identityProviderRedirectErrorMessage=Nepodarilo sa presmerovať na poskytovateľa identity.
-identityProviderRemovedMessage=Poskytovateľ identity bol úspešne odstránený.
-identityProviderAlreadyLinkedMessage=Spojená identita vrátená {0} je už prepojená s iným používateľom.
-staleCodeAccountMessage=Platnosť vypršala. Skúste ešte raz.
-consentDenied=Súhlas bol zamietnutý.
-
-accountDisabledMessage=Účet je zakázaný, kontaktujte správcu.
-
-accountTemporarilyDisabledMessage=Účet je dočasne zakázaný, kontaktujte administrátora alebo skúste neskôr.
-invalidPasswordMinLengthMessage=Neplatné heslo: minimálna dĺžka {0}.
-invalidPasswordMinLowerCaseCharsMessage=Neplatné heslo: musí obsahovať minimálne {0} malé písmená.
-invalidPasswordMinDigitsMessage=Neplatné heslo: musí obsahovať aspoň {0} číslic.
-invalidPasswordMinUpperCaseCharsMessage=Neplatné heslo: musí obsahovať aspoň {0} veľké písmená.
-invalidPasswordMinSpecialCharsMessage=Neplatné heslo: musí obsahovať aspoň {0} špeciálne znaky.
-invalidPasswordNotUsernameMessage=Neplatné heslo: nesmie byť rovnaké ako používateľské meno.
-invalidPasswordRegexPatternMessage=Neplatné heslo: nezodpovedá regulárnemu výrazu.
-invalidPasswordHistoryMessage=Neplatné heslo: nesmie sa rovnať žiadnemu z posledných {0} hesiel.
-invalidPasswordBlacklistedMessage=Neplatné heslo: heslo je na čiernej listine.
-invalidPasswordGenericMessage=Neplatné heslo: nové heslo nezodpovedá pravidlám hesiel.
-
-# Authorization
-myResources=Moje Zdroje
-myResourcesSub=Moje zdroje
-doDeny=Zakázať
-doRevoke=Odvolať
-doApprove=Schváliť
-doRemoveSharing=Odstránenie zdieľania
-doRemoveRequest=Odstrániť požiadavku
-peopleAccessResource=Ľudia s prístupom k tomuto zdroju
-name=Názov
-scopes=Rozsahy
-resource=Zdroj
-user=Používateľ
-peopleSharingThisResource=Ľudia zdieľajúci tento zdroj
-shareWithOthers=Zdieľať s ostatnými
-needMyApproval=Potrebuje môj súhlas
-requestsWaitingApproval=Vaše požiadavky čakajú na schválenie
-icon=Ikona
-requestor=Žiadateľ
-owner=Vlastník
-resourcesSharedWithMe=Zdroje zdieľané so mnou
-permissionRequestion=Žiadosti o povolenie
-permission=Oprávnenie
-shares=podiel (y)
diff --git a/account/messages/messages_sv.properties b/account/messages/messages_sv.properties
deleted file mode 100644
index cc134cd..0000000
--- a/account/messages/messages_sv.properties
+++ /dev/null
@@ -1,150 +0,0 @@
-# encoding: utf-8
-doSave=Spara
-doCancel=Avbryt
-doLogOutAllSessions=Logga ut från samtliga sessioner
-doRemove=Ta bort
-doAdd=Lägg till
-doSignOut=Logga ut
-
-editAccountHtmlTitle=Redigera konto
-federatedIdentitiesHtmlTitle=Federerade identiteter
-accountLogHtmlTitle=Kontologg
-changePasswordHtmlTitle=Byt lösenord
-sessionsHtmlTitle=Sessioner
-accountManagementTitle=Kontohantering för Keycloak
-authenticatorTitle=Autentiserare
-applicationsHtmlTitle=Applikationer
-
-authenticatorCode=Engångskod
-email=E-post
-firstName=Förnamn
-lastName=Efternamn
-password=Lösenord
-passwordConfirm=Bekräftelse
-passwordNew=Nytt lösenord
-username=Användarnamn
-address=Adress
-street=Gata
-locality=Postort
-region=Stat, Provins eller Region
-postal_code=Postnummer
-country=Land
-emailVerified=E-post verifierad
-gssDelegationCredential=GSS Delegation Credential
-
-role_admin=Administratör
-role_realm-admin=Realm-administratör
-role_create-realm=Skapa realm
-role_view-realm=Visa realm
-role_view-users=Visa användare
-role_view-applications=Visa applikationer
-role_view-clients=Visa klienter
-role_view-events=Visa event
-role_view-identity-providers=Visa identitetsleverantörer
-role_manage-realm=Hantera realm
-role_manage-users=Hantera användare
-role_manage-applications=Hantera applikationer
-role_manage-identity-providers=Hantera identitetsleverantörer
-role_manage-clients=Hantera klienter
-role_manage-events=Hantera event
-role_view-profile=Visa profil
-role_manage-account=Hantera konto
-role_read-token=Läs element
-role_offline-access=Åtkomst offline
-role_uma_authorization=Erhåll tillstånd
-client_account=Konto
-client_security-admin-console=Säkerhetsadministratörskonsol
-client_admin-cli=Administratörs-CLI
-client_realm-management=Realmhantering
-
-
-requiredFields=Obligatoriska fält
-allFieldsRequired=Samtliga fält krävs
-
-backToApplication=&laquo; Tillbaka till applikationen
-backTo=Tillbaka till {0}
-
-date=Datum
-event=Event
-ip=IP
-client=Klient
-clients=Klienter
-details=Detaljer
-started=Startade
-lastAccess=Senast åtkomst
-expires=Upphör
-applications=Applikationer
-
-account=Konto
-federatedIdentity=Federerad identitet
-authenticator=Autentiserare
-sessions=Sessioner
-log=Logg
-
-application=Applikation
-availablePermissions=Tillgängliga rättigheter
-grantedPermissions=Beviljade rättigheter
-grantedPersonalInfo=Medgiven personlig information
-additionalGrants=Ytterligare medgivanden
-action=Åtgärd
-inResource=i
-fullAccess=Fullständig åtkomst
-offlineToken=Offline token
-revoke=Upphäv rättighet
-
-configureAuthenticators=Konfigurerade autentiserare
-mobile=Mobil
-totpStep1=Installera <a href="https://freeotp.github.io/" target="_blank">FreeOTP</a> eller Google Authenticator på din enhet. Båda applikationerna finns tillgängliga på <a href="https://play.google.com">Google Play</a> och Apple App Store.
-totpStep2=Öppna applikationen och skanna streckkoden eller skriv i nyckeln.
-totpStep3=Fyll i engångskoden som tillhandahålls av applikationen och klicka på Spara för att avsluta inställningarna.
-
-missingUsernameMessage=Vänligen ange användarnamn.
-missingFirstNameMessage=Vänligen ange förnamn.
-invalidEmailMessage=Ogiltig e-postadress.
-missingLastNameMessage=Vänligen ange efternamn.
-missingEmailMessage=Vänligen ange e-post.
-missingPasswordMessage=Vänligen ange lösenord.
-notMatchPasswordMessage=Lösenorden matchar inte.
-
-missingTotpMessage=Vänligen ange autentiseringskoden.
-invalidPasswordExistingMessage=Det nuvarande lösenordet är ogiltigt.
-invalidPasswordConfirmMessage=Lösenordsbekräftelsen matchar inte.
-invalidTotpMessage=Autentiseringskoden är ogiltig.
-
-usernameExistsMessage=Användarnamnet finns redan.
-emailExistsMessage=E-posten finns redan.
-
-readOnlyUserMessage=Du kan inte uppdatera ditt konto eftersom det är skrivskyddat.
-readOnlyPasswordMessage=Du kan inte uppdatera ditt lösenord eftersom ditt konto är skrivskyddat.
-
-successTotpMessage=Mobilautentiseraren är inställd.
-successTotpRemovedMessage=Mobilautentiseraren är borttagen.
-
-successGrantRevokedMessage=Upphävandet av rättigheten lyckades.
-
-accountUpdatedMessage=Ditt konto har uppdaterats.
-accountPasswordUpdatedMessage=Ditt lösenord har uppdaterats.
-
-missingIdentityProviderMessage=Identitetsleverantör är inte angiven.
-invalidFederatedIdentityActionMessage=Åtgärden är ogiltig eller saknas.
-identityProviderNotFoundMessage=Angiven identitetsleverantör hittas inte.
-federatedIdentityLinkNotActiveMessage=Den här identiteten är inte längre aktiv.
-federatedIdentityRemovingLastProviderMessage=Du kan inte ta bort senaste federerade identiteten eftersom du inte har ett lösenord.
-identityProviderRedirectErrorMessage=Misslyckades med att omdirigera till identitetsleverantör.
-identityProviderRemovedMessage=Borttagningen av identitetsleverantören lyckades.
-identityProviderAlreadyLinkedMessage=Den federerade identiteten som returnerades av {0} är redan länkad till en annan användare.
-staleCodeAccountMessage=Sidan har upphört att gälla. Vänligen försök igen.
-consentDenied=Samtycket förnekades.
-
-accountDisabledMessage=Kontot är inaktiverat, kontakta administratör.
-
-accountTemporarilyDisabledMessage=Kontot är tillfälligt inaktiverat, kontakta administratör eller försök igen senare.
-invalidPasswordMinLengthMessage=Ogiltigt lösenord. Minsta längd är {0}.
-invalidPasswordMinLowerCaseCharsMessage=Ogiltigt lösenord: måste innehålla minst {0} små bokstäver.
-invalidPasswordMinDigitsMessage=Ogiltigt lösenord: måste innehålla minst {0} siffror.
-invalidPasswordMinUpperCaseCharsMessage=Ogiltigt lösenord: måste innehålla minst {0} stora bokstäver.
-invalidPasswordMinSpecialCharsMessage=Ogiltigt lösenord: måste innehålla minst {0} specialtecken.
-invalidPasswordNotUsernameMessage=Ogiltigt lösenord: Får inte vara samma som användarnamnet.
-invalidPasswordRegexPatternMessage=Ogiltigt lösenord: matchar inte kravet för lösenordsmönster.
-invalidPasswordHistoryMessage=Ogiltigt lösenord: Får inte vara samma som de senaste {0} lösenorden.
-invalidPasswordGenericMessage=Ogiltigt lösenord: Det nya lösenordet stämmer inte med lösenordspolicyn. \ No newline at end of file
diff --git a/account/messages/messages_tr.properties b/account/messages/messages_tr.properties
deleted file mode 100644
index c83126d..0000000
--- a/account/messages/messages_tr.properties
+++ /dev/null
@@ -1,341 +0,0 @@
-doSave=Kaydet
-doCancel=\u0130ptal
-doLogOutAllSessions=T\u00FCm Oturumlar\u0131 Kapat
-doRemove=Sil
-doAdd=Ekle
-doSignOut=\u00C7\u0131k\u0131\u015F
-doLogIn=Oturum a\u00E7
-doLink=Ba\u011Flant\u0131
-
-
-editAccountHtmlTitle=Hesab\u0131m
-personalInfoHtmlTitle=Ki\u015Fisel bilgi
-federatedIdentitiesHtmlTitle=De\u011Fi\u015Ftirilen Kimlikler
-accountLogHtmlTitle=Kullan\u0131c\u0131 Loglar\u0131
-changePasswordHtmlTitle=\u015Eifre De\u011Fi\u015Ftirme
-deviceActivityHtmlTitle=Cihaz Etkinli\u011Fi
-sessionsHtmlTitle=Oturum
-accountManagementTitle=Keycloak Kullan\u0131c\u0131 Hesab\u0131 Y\u00F6netimi
-authenticatorTitle=Kimlik Do\u011Frulama
-applicationsHtmlTitle=Uygulama
-linkedAccountsHtmlTitle=Ba\u011Flant\u0131l\u0131 Hesaplar
-
-accountManagementWelcomeMessage=Keycloak Hesap Y\u00F6netimine Ho\u015F Geldiniz
-personalInfoIntroMessage=Temel bilgilerinizi y\u00F6netin
-accountSecurityTitle=Hesap G\u00FCvenli\u011Fi
-accountSecurityIntroMessage=\u015Eifrenizi ve hesap eri\u015Fiminizi kontrol edin
-applicationsIntroMessage=Hesab\u0131n\u0131za eri\u015Fmek i\u00E7in uygulama izninizi takip edin ve y\u00F6netin
-resourceIntroMessage=Kaynaklar\u0131n\u0131z\u0131 ekip \u00FCyeleri aras\u0131nda payla\u015F\u0131n
-passwordLastUpdateMessage=\u015Eifreniz g\u00FCncellendi
-updatePasswordTitle=\u015Eifre g\u00FCncelle
-updatePasswordMessageTitle=G\u00FC\u00E7l\u00FC bir \u015Fifre se\u00E7ti\u011Finizden emin olun
-updatePasswordMessage=G\u00FC\u00E7l\u00FC bir \u015Fifre, say\u0131lar, harfler ve sembollerin kar\u0131\u015F\u0131m\u0131ndan olu\u015Fmal\u0131d\u0131r. Tahmin etmesi zor ve ger\u00E7ek bir kelimeye benzemeyen \u015Fifre sadece bu hesap i\u00E7in kullan\u0131l\u0131r.
-personalSubTitle=Ki\u015Fisel Bilgileriniz
-personalSubMessage=Bu temel bilgileri y\u00F6netin: ad\u0131n\u0131z, soyad\u0131n\u0131z ve e-posta adresiniz
-
-authenticatorCode=Kimlik Do\u011Frulama Kodu
-email=E-Mail
-firstName=Ad
-givenName=Ad
-fullName=Ad Soyad
-lastName=Soyad
-familyName=Soyad
-password=\u015Eifre
-currentPassword=\u015Eimdiki \u015Eifre
-passwordConfirm=\u015Eifre Do\u011Frulama
-passwordNew=Yeni \u015Eifre
-username=Kullan\u0131c\u0131 Ad\u0131
-address=Adres
-street=Cadde
-region=B\u00F6lge
-postal_code=Posta Kodu
-locality=\u015Eehir
-country=\u00DClke
-emailVerified=E-Mail Do\u011Fruland\u0131
-gssDelegationCredential=GSS Yetki Bilgisi
-
-profileScopeConsentText=Kullan\u0131c\u0131 profili
-emailScopeConsentText=Email adresi
-addressScopeConsentText=Adres
-phoneScopeConsentText=Telefon numaras\u0131
-offlineAccessScopeConsentText=\u00C7evrimd\u0131\u015F\u0131 Eri\u015Fim
-samlRoleListScopeConsentText=Rollerim
-rolesScopeConsentText=Kullan\u0131c\u0131 rolleri
-
-role_admin=Admin
-role_realm-admin=Realm Admin
-role_create-realm=Realm Olu\u015Ftur
-role_view-realm=Realm g\u00F6r\u00FCnt\u00FCle
-role_view-users=Kullan\u0131c\u0131lar\u0131 g\u00F6r\u00FCnt\u00FCle
-role_view-applications=Uygulamalar\u0131 g\u00F6r\u00FCnt\u00FCle
-role_view-clients=\u0130stemci g\u00F6r\u00FCnt\u00FCle
-role_view-events=Olay g\u00F6r\u00FCnt\u00FCle
-role_view-identity-providers=Kimlik Sa\u011Flay\u0131c\u0131lar
-role_manage-realm=Realm y\u00F6net
-role_manage-users=Kullan\u0131c\u0131lar\u0131 y\u00F6net
-role_manage-applications=Uygulamalar\u0131 y\u00F6net
-role_manage-identity-providers=Kimlik Sa\u011Flay\u0131c\u0131lar\u0131 Y\u00F6net
-role_manage-clients=\u0130stemci y\u00F6net
-role_manage-events=Olay y\u00F6net
-role_view-profile=Profilleri g\u00F6r\u00FCnt\u00FCle
-role_manage-account=Profilleri Y\u00F6net
-role_manage-account-links=Profil ba\u011Flant\u0131lar\u0131n\u0131 y\u00F6net
-role_read-token=Token oku
-role_offline-access=\u00C7evirimd\u0131\u015F\u0131 Yetki
-role_uma_authorization=\u0130zinleri Al
-client_account=M\u00FC\u015Fteri Hesab\u0131
-client_security-admin-console=G\u00FCvenlik Y\u00F6netici Konsolu
-client_admin-cli=Admin CLI
-client_realm-management=Realm-Management
-client_broker=Broker
-
-requiredFields=Zorunlu Alanlar
-allFieldsRequired=T\u00FCm Alanlar Zorunlu
-
-backToApplication=&laquo; Uygulamaya D\u00F6n
-backTo=Geri D\u00F6n {0}
-
-date=G\u00FCn
-event=Olay
-ip=IP
-client=\u0130stemci
-clients=\u0130stemciler
-details=Detaylar
-started=Ba\u015Flang\u0131\u00E7 Tarihi
-lastAccess=Son Eri\u015Fim Tarihi
-expires=Son Kullanma Tarihi
-applications=Uygulama
-
-account=Hesap
-federatedIdentity=Federal Kimlik
-authenticator=Kimlik Do\u011Frulama
-device-activity=Cihaz Etkinli\u011Fi
-sessions=Oturum
-log=Log
-
-application=Uygulama
-availablePermissions=Kullan\u0131labilir \u0130zinler
-availableRoles=Kullan\u0131labilir Roller
-grantedPermissions=Verilen \u0130zinler
-grantedPersonalInfo=\u0130zin Verilen Ki\u015Fisel Bilgiler
-additionalGrants=Ek \u0130zinler
-action=Aksiyon
-inResource=Kaynak
-fullAccess=Tam Yetki
-offlineToken=\u00C7evirimd\u0131\u015F\u0131-Token
-revoke=\u0130zni \u0130ptal et
-
-configureAuthenticators=\u00C7oklu Kimlik Do\u011Frulama
-mobile=Mobil
-totpStep1=Ak\u0131ll\u0131 Telefonunuza a\u015Fa\u011F\u0131daki uygulamalardan birini y\u00FCkleyin:
-totpStep2=Uygulamay\u0131 a\u00E7\u0131n ve barkodu okutun.
-totpStep3=Uygulama taraf\u0131ndan olu\u015Fturulan tek seferlik kodu girin ve Kaydet''i t\u0131klay\u0131n.
-
-totpManualStep2=Uygulamay\u0131 a\u00E7\u0131n ve a\u015Fa\u011F\u0131daki anahtar\u0131 girin.
-totpManualStep3=Bunlar\u0131 uygulama i\u00E7in \u00F6zelle\u015Ftirebilirseniz a\u015Fa\u011F\u0131daki yap\u0131land\u0131rma de\u011Ferlerini kullan\u0131n:
-totpUnableToScan=Barkodu tarayam\u0131yor musunuz?
-totpScanBarcode=Barkod Tara?
-
-totp.totp=Zaman bazl\u0131 (time-based)
-totp.hotp=Saya\u00E7 tabanl\u0131 (counter-based)
-
-totpType=Tip
-totpAlgorithm=Algoritma
-totpDigits=Basamak
-totpInterval=Aral\u0131k
-totpCounter=Saya\u00E7
-
-missingUsernameMessage=L\u00FCtfen bir kullan\u0131c\u0131 ad\u0131 giriniz.
-missingFirstNameMessage=L\u00FCtfen bir ad girin.
-invalidEmailMessage=Ge\u00E7ersiz e-posta adresi.
-missingLastNameMessage=L\u00FCtfen bir soyad\u0131 giriniz.
-missingEmailMessage=L\u00FCtfen bir e-mail adresi giriniz.
-missingPasswordMessage=L\u00FCtfen bir \u015Fifre giriniz.
-notMatchPasswordMessage=\u015Eifreler ayn\u0131 de\u011Fil.
-
-missingTotpMessage=L\u00FCtfen tek seferlik kodu girin.
-invalidPasswordExistingMessage=Mevcut \u015Fifre ge\u00E7ersiz.
-invalidPasswordConfirmMessage=\u015Eifre onay\u0131 ayn\u0131 de\u011Fil.
-invalidTotpMessage=Ge\u00E7ersiz tek seferlik kod.
-
-usernameExistsMessage=Kullan\u0131c\u0131 ad\u0131 zaten mevcut.
-emailExistsMessage=E-posta adresi zaten mevcut.
-
-readOnlyUserMessage=Yazma korumal\u0131 oldu\u011Fundan kullan\u0131c\u0131 hesab\u0131n\u0131z\u0131 de\u011Fi\u015Ftiremezsiniz.
-readOnlyUsernameMessage=Yazma korumal\u0131 oldu\u011Fundan kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 de\u011Fi\u015Ftiremezsiniz.
-readOnlyPasswordMessage=Yazma korumal\u0131 oldu\u011Fundan \u015Fifrenizi de\u011Fi\u015Ftiremezsiniz.
-
-successTotpMessage=\u00C7oklu kimlik do\u011Frulamas\u0131 ba\u015Far\u0131yla yap\u0131land\u0131r\u0131ld\u0131.
-successTotpRemovedMessage=\u00C7oklu kimlik do\u011Frulama ba\u015Far\u0131yla kald\u0131r\u0131ld\u0131.
-
-successGrantRevokedMessage=\u0130zin ba\u015Far\u0131yla iptal edildi.
-
-accountUpdatedMessage=Kullan\u0131c\u0131 hesab\u0131n\u0131z g\u00FCncellendi.
-accountPasswordUpdatedMessage=\u015Eifreniz g\u00FCncellendi.
-
-missingIdentityProviderMessage=Kimlik Sa\u011Flay\u0131c\u0131s\u0131 belirtilmemi\u015F.
-invalidFederatedIdentityActionMessage=Ge\u00E7ersiz veya eksik eylem.
-identityProviderNotFoundMessage=Belirtilen Kimlik Sa\u011Flay\u0131c\u0131 bulunamad\u0131.
-federatedIdentityLinkNotActiveMessage=Bu kimlik art\u0131k aktif de\u011Fil.
-federatedIdentityRemovingLastProviderMessage=\u015Eifreniz olmad\u0131\u011F\u0131 i\u00E7in son giri\u015Fi kald\u0131ramazs\u0131n\u0131z.
-identityProviderRedirectErrorMessage=Kimlik sa\u011Flay\u0131c\u0131ya iletilirken hata olu\u015Ftu.
-identityProviderRemovedMessage=Kimlik Sa\u011Flay\u0131c\u0131s\u0131 ba\u015Far\u0131yla kald\u0131r\u0131ld\u0131.
-identityProviderAlreadyLinkedMessage=De\u011Fi\u015Ftirilmi\u015F {0} kimli\u011Fi ba\u015Fka bir kullan\u0131c\u0131ya atanm\u0131\u015F.
-staleCodeAccountMessage=Bu sayfa art\u0131k ge\u00E7erli de\u011Fil, l\u00FCtfen tekrar deneyin.
-consentDenied=Onay reddedildi.
-
-accountDisabledMessage=Hesab\u0131n\u0131z kilitlendi, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in.
-
-accountTemporarilyDisabledMessage=Hesab\u0131n\u0131z ge\u00E7ici olarak kilitlendi, l\u00FCtfen y\u00F6neticiyle ileti\u015Fime ge\u00E7in veya daha sonra tekrar deneyin.
-invalidPasswordMinLengthMessage=Ge\u00E7ersiz \u015Eifre: En az {0} karakter uzunlu\u011Funda olmal\u0131.
-invalidPasswordMinLowerCaseCharsMessage=Ge\u00E7ersiz \u015Eifre \: En az {0} k\u00FC\u00E7\u00FCk harf i\u00E7ermelidir.
-invalidPasswordMinDigitsMessage=Ge\u00E7ersiz \u015Eifre: En az {0} say\u0131(lar) i\u00E7ermelidir.
-invalidPasswordMinUpperCaseCharsMessage=Ge\u00E7ersiz \u015Eifre: En az {0} b\u00FCy\u00FCk harf i\u00E7ermelidir.
-invalidPasswordMinSpecialCharsMessage=Ge\u00E7ersiz \u015Eifre: En az {0} \u00F6zel karakter i\u00E7ermelidir.
-invalidPasswordNotUsernameMessage=Ge\u00E7ersiz \u015Eifre: Kullan\u0131c\u0131 ad\u0131yla ayn\u0131 olamaz.
-invalidPasswordRegexPatternMessage=Ge\u00E7ersiz \u015Eifre: Regex Patternine uygun de\u011Fil.
-invalidPasswordHistoryMessage=Ge\u00E7ersiz \u015Eifre: Son {0} \u015Fifreden biri olamaz.
-invalidPasswordBlacklistedMessage=Ge\u00E7ersiz \u015Eifre: \u015Eifre bloklanm\u0131\u015F \u015Fifreler listesindedir (kara liste).
-invalidPasswordGenericMessge=Ge\u00E7ersiz \u015Eifre: Yeni \u015Fifre, \u015Fifre kurallar\u0131n\u0131 ihlal ediyor.
-
-
-
-# Authorization
-myResources=Kaynaklar\u0131m
-myResourcesSub=Kaynaklar\u0131m
-doDeny=Reddet
-doRevoke=Geri al
-doApprove=Onayla
-doRemoveSharing=Payla\u015F\u0131m\u0131 Kald\u0131r
-doRemoveRequest=\u0130ste\u011Fi Kald\u0131r
-peopleAccessResource=Bu kayna\u011Fa eri\u015Fimi olan ki\u015Filer
-resourceManagedPolicies=Bu kayna\u011Fa eri\u015Fim izni veren izinler
-resourceNoPermissionsGrantingAccess=Bu kayna\u011Fa eri\u015Fim izni verilmeyen izin yok
-anyAction=Herhangi bir eylem
-description=A\u00E7\u0131klama
-name=\u0130sim
-scopes=Kapsam
-resource=Kaynak
-user=Kullan\u0131c\u0131
-peopleSharingThisResource=Bu kayna\u011F\u0131 payla\u015Fan kullan\u0131c\u0131lar
-shareWithOthers=Ba\u015Fkalar\u0131yla payla\u015F
-needMyApproval=Onay\u0131m gerekli
-requestsWaitingApproval=Talepleriniz onay bekliyor
-icon=Icon
-requestor=Talep eden
-owner=Sahip
-resourcesSharedWithMe=Kaynaklar benimle payla\u015F\u0131ld\u0131
-permissionRequestion=\u0130zin Talepleri
-permission=\u0130zin
-shares=Payla\u015F\u0131m(lar)
-
-locale_ca=Katalanca
-locale_de=Almanca
-locale_en=\u0130ngilizce
-locale_es=\u0130spanyolca
-locale_fr=Frans\u0131zca
-locale_it=\u0130talyanca
-locale_ja=Japonca
-locale_nl=Felemenk\u00E7e
-locale_no=Norve\u00E7ce
-locale_pl=Leh\u00E7e
-locale_pt_BR=Portekizce
-locale_pt-BR=Portekizce
-locale_ru=Rus\u00E7a
-locale_lt=Litvanca
-locale_zh-CN=\u00C7ince
-locale_sk=Slovak\u00E7a
-locale_sv=\u0130sve\u00E7\u00E7e
-locale_tr=T\u00FCrk\u00E7e
-
-# Applications
-applicaitonName=\u0130sim
-applicationType=Uygulama Tipi
-applicationInUse=Yaln\u0131zca uygulama i\u00E7i kullan\u0131m
-clearAllFilter=T\u00FCm filtreleri temizle
-activeFilters=Aktif filtreler
-filterByName=\u0130sme G\u00F6re Filtrele ...
-allApps=B\u00FCt\u00FCn uygulamalar
-internalApps=\u0130\u00E7 uygulamalar
-thirdpartyApps=\u00DC\u00E7\u00FCnc\u00FC parti uygulamalar
-appResults=Sonu\u00E7lar
-
-# Linked account
-authorizedProvider=Yetkili Tedarik\u00E7i
-authorizedProviderMessage=Yetkili Sa\u011Flay\u0131c\u0131lar hesab\u0131n\u0131zla ba\u011Flant\u0131l\u0131
-identityProvider=Kimlik Sa\u011Flay\u0131c\u0131s\u0131
-identityProviderMessage=Hesab\u0131n\u0131z\u0131 yap\u0131land\u0131rd\u0131\u011F\u0131n\u0131z kimlik sa\u011Flay\u0131c\u0131lar\u0131yla ba\u011Flamak i\u00E7in
-socialLogin=Sosyal Giri\u015F
-userDefined=Kullan\u0131c\u0131 tan\u0131ml\u0131
-removeAccess=Eri\u015Fimi Kald\u0131r
-removeAccessMessage=Bu uygulama hesab\u0131n\u0131 kullanmak istiyorsan\u0131z tekrar eri\u015Fim vermeniz gerekir.
-
-#Authenticator
-authenticatorStatusMessage=\u0130ki fakt\u00F6rl\u00FC kimlik do\u011Frulama aktif
-authenticatorFinishSetUpTitle=\u0130ki Fakt\u00F6rl\u00FC Do\u011Frulama
-authenticatorFinishSetUpMessage=Keycloak hesab\u0131n\u0131zda her oturum a\u00E7t\u0131\u011F\u0131n\u0131zda, iki fakt\u00F6rl\u00FC bir do\u011Frulama kodu girmeniz istenecektir.
-authenticatorSubTitle=\u0130ki Fakt\u00F6rl\u00FC Kimlik Do\u011Frulamay\u0131 Ayarlama
-authenticatorSubMessage=Hesab\u0131n\u0131z\u0131n g\u00FCvenli\u011Fini art\u0131rmak i\u00E7in mevcut iki fakt\u00F6rl\u00FC kimlik do\u011Frulama y\u00F6ntemlerinden en az birini etkinle\u015Ftirin.
-authenticatorMobileTitle=Mobil Kimlik Do\u011Frulay\u0131c\u0131
-authenticatorMobileMessage=Do\u011Frulama kodlar\u0131n\u0131 iki fakt\u00F6rl\u00FC kimlik do\u011Frulama olarak almak i\u00E7in mobil Do\u011Frulay\u0131c\u0131''y\u0131 kullan\u0131n.
-authenticatorMobileFinishSetUpMessage=Do\u011Frulay\u0131c\u0131, telefonunuza ba\u011Fl\u0131.
-authenticatorActionSetup=Kur
-authenticatorSMSTitle=SMS Kodu
-authenticatorSMSMessage=Keycloak, do\u011Frulama kodunu telefonunuza iki fakt\u00F6rl\u00FC kimlik do\u011Frulamas\u0131 olarak g\u00F6nderecektir.
-authenticatorSMSFinishSetUpMessage=K\u0131sa mesajlar g\u00F6nderilir
-authenticatorDefaultStatus=Varsay\u0131lan
-authenticatorChangePhone=Telefon Numaras\u0131n\u0131 De\u011Fi\u015Ftir
-authenticatorBackupCodesTitle=Yedekleme Kodlar\u0131
-authenticatorBackupCodesMessage=8 haneli yedek kodlar\u0131n\u0131z\u0131 al\u0131n
-authenticatorBackupCodesFinishSetUpMessage=\u015Eu anda 12 haneli yedek kod olu\u015Fturuldu. Her biri bir kez kullan\u0131labilir.
-
-#Authenticator - Mobile Authenticator setup
-authenticatorMobileSetupTitle=Mobil Kimlik Do\u011Frulama Kurulumu
-smscodeIntroMessage=Telefon numaran\u0131z\u0131 girin ve telefonunuza bir do\u011Frulama kodu g\u00F6nderilecektir.
-mobileSetupStep1=Telefonunuza bir kimlik do\u011Frulama uygulamas\u0131 y\u00FCkleyin. Burada listelenen uygulamalar desteklenmektedir.
-mobileSetupStep2=Uygulamay\u0131 a\u00E7\u0131n ve barkodu taray\u0131n.
-mobileSetupStep3=Uygulama taraf\u0131ndan sa\u011Flanan tek seferlik kodu girin ve kurulumu tamamlamak i\u00E7in Kaydet''e t\u0131klay\u0131n.
-scanBarCode=Barkodu taramak ister misiniz?
-enterBarCode=Tek seferlik kodu girin
-doCopy=Kopyala
-doFinish=Bitir
-
-#Authenticator - SMS Code setup
-authenticatorSMSCodeSetupTitle=SMS Kodu Kurulumu
-chooseYourCountry=\u00DClkenizi se\u00E7in
-enterYourPhoneNumber=Telefon numaran\u0131z\u0131 girin
-sendVerficationCode=Do\u011Frulama kodu G\u00F6nder
-enterYourVerficationCode=Onaylama kodunu girin
-
-#Authenticator - backup Code setup
-authenticatorBackupCodesSetupTitle=Yedekleme Kodlar\u0131 Kurulumu
-backupcodesIntroMessage=Telefonunuza eri\u015Fimi kaybederseniz, yine de yedek kodlar arac\u0131l\u0131\u011F\u0131yla hesab\u0131n\u0131za giri\u015F yapabilirsiniz. Onlar\u0131 g\u00FCvenli ve eri\u015Filebilir bir yerde saklay\u0131n.
-realmName=Realm
-doDownload=\u0130ndir
-doPrint=Yazd\u0131r
-backupCodesTips-1=Her yedek kod bir kez kullan\u0131labilir.
-backupCodesTips-2=Bu kodlar \u00FCzerinde olu\u015Fturuldu
-generateNewBackupCodes=Yeni Yedekleme Kodlar\u0131 Olu\u015Ftur
-backupCodesTips-3=Yeni yedek kodlar olu\u015Fturdu\u011Funuzda, mevcut kodlar art\u0131k \u00E7al\u0131\u015Fmayacakt\u0131r.
-backtoAuthenticatorPage=Kimlik Do\u011Frulay\u0131c\u0131 Sayfas\u0131na Geri D\u00F6n
-
-#Resources
-resources=Kaynaklar
-sharedwithMe=Benimle payla\u015Ft\u0131
-share=Payla\u015F\u0131m
-sharedwith=\u0130le payla\u015Ft\u0131
-accessPermissions=Eri\u015Fim \u0130zinleri
-permissionRequests=\u0130zin \u0130stekleri
-approve=Onayla
-approveAll=T\u00FCm\u00FCn\u00FC onayla
-people=\u0130nsanlar
-perPage=Sayfa ba\u015F\u0131na
-currentPage=Ge\u00E7erli sayfa
-sharetheResource=Kayna\u011F\u0131 payla\u015F
-group=Grup
-selectPermission=\u0130zin Se\u00E7
-addPeople=Kayna\u011F\u0131n\u0131z\u0131 payla\u015Fmak i\u00E7in kullan\u0131c\u0131 ekleyin
-addTeam=Kayna\u011F\u0131n\u0131z\u0131 payla\u015Fmak i\u00E7in ekip ekleyin
-myPermissions=\u0130zinlerim
-waitingforApproval=Onay bekleniyor
-anyPermission=Herhangi bir izin
diff --git a/account/messages/messages_zh_CN.properties b/account/messages/messages_zh_CN.properties
deleted file mode 100644
index 9e9a8a6..0000000
--- a/account/messages/messages_zh_CN.properties
+++ /dev/null
@@ -1,166 +0,0 @@
-# encoding: utf-8
-doSave=保存
-doCancel=取消
-doLogOutAllSessions=登出所有会话
-doRemove=删除
-doAdd=添加
-doSignOut=登出
-
-editAccountHtmlTitle=编辑账户
-federatedIdentitiesHtmlTitle=链接的身份
-accountLogHtmlTitle=账户日志
-changePasswordHtmlTitle=更改密码
-sessionsHtmlTitle=会话
-accountManagementTitle=Keycloak账户管理
-authenticatorTitle=认证者
-applicationsHtmlTitle=应用
-
-authenticatorCode=一次性认证码
-email=电子邮件
-firstName=名
-givenName=姓
-fullName=全名
-lastName=姓
-familyName=姓
-password=密码
-passwordConfirm=确认
-passwordNew=新密码
-username=用户名
-address=地址
-street=街道
-locality=城市住所
-region=省,自治区,直辖市
-postal_code=邮政编码
-country=国家
-emailVerified=验证过的Email
-gssDelegationCredential=GSS Delegation Credential
-
-role_admin=管理员
-role_realm-admin=域管理员
-role_create-realm=创建域
-role_view-realm=查看域
-role_view-users=查看用户
-role_view-applications=查看应用
-role_view-clients=查看客户
-role_view-events=查看事件
-role_view-identity-providers=查看身份提供者
-role_manage-realm=管理域
-role_manage-users=管理用户
-role_manage-applications=管理应用
-role_manage-identity-providers=管理身份提供者
-role_manage-clients=管理客户
-role_manage-events=管理事件
-role_view-profile=查看用户信息
-role_manage-account=管理账户
-role_read-token=读取 token
-role_offline-access=离线访问
-role_uma_authorization=获取授权
-client_account=账户
-client_security-admin-console=安全管理终端
-client_admin-cli=管理命令行
-client_realm-management=域管理
-client_broker=代理
-
-
-requiredFields=必填项
-allFieldsRequired=所有项必填
-
-backToApplication=« 回到应用
-backTo=回到 {0}
-
-date=日期
-event=事件
-ip=IP
-client=客户端
-clients=客户端
-details=详情
-started=开始
-lastAccess=最后一次访问
-expires=过期时间
-applications=应用
-
-account=账户
-federatedIdentity=关联身份
-authenticator=认证方
-sessions=会话
-log=日志
-
-application=应用
-availablePermissions=可用权限
-grantedPermissions=授予权限
-grantedPersonalInfo=授权的个人信息
-additionalGrants=可授予的权限
-action=操作
-inResource=in
-fullAccess=所有权限
-offlineToken=离线 token
-revoke=收回授权
-
-configureAuthenticators=配置的认证者
-mobile=手机
-totpStep1=在你的设备上安装 <a href="https://fedorahosted.org/freeotp/" target="_blank">FreeOTP</a> 或者 Google Authenticator.两个应用可以从 <a href="https://play.google.com">Google Play</a> 和 Apple App Store下载。
-totpStep2=打开应用扫描二维码输入验证码
-totpStep3=输入应用提供的一次性验证码单击保存
-
-missingUsernameMessage=请指定用户名
-missingFirstNameMessage=请指定名
-invalidEmailMessage=无效的电子邮箱地址
-missingLastNameMessage=请指定姓
-missingEmailMessage=请指定邮件地址
-missingPasswordMessage=请输入密码
-notMatchPasswordMessage=密码不匹配
-
-missingTotpMessage=请指定认证者代码
-invalidPasswordExistingMessage=无效的旧密码
-invalidPasswordConfirmMessage=确认密码不相符
-invalidTotpMessage=无效的认证码
-
-usernameExistsMessage=用户名已经存在
-emailExistsMessage=电子邮箱已经存在
-
-readOnlyUserMessage=无法修改账户,因为它是只读的。
-readOnlyPasswordMessage=不可以更该账户因为它是只读的。
-
-successTotpMessage=手机认证者配置完毕
-successTotpRemovedMessage=手机认证者已删除
-
-successGrantRevokedMessage=授权成功回收
-
-accountUpdatedMessage=您的账户已经更新
-accountPasswordUpdatedMessage=您的密码已经修改
-
-missingIdentityProviderMessage=身份提供者未指定
-invalidFederatedIdentityActionMessage=无效或者缺少操作
-identityProviderNotFoundMessage=指定的身份提供者未找到
-federatedIdentityLinkNotActiveMessage=这个身份不再使用了。
-federatedIdentityRemovingLastProviderMessage=你不可以移除最后一个身份提供者因为你没有设置密码
-identityProviderRedirectErrorMessage=尝试重定向到身份提供商失败
-identityProviderRemovedMessage=身份提供商成功删除
-identityProviderAlreadyLinkedMessage=链接的身份 {0} 已经连接到已有用户。
-staleCodeAccountMessage=页面过期。请再试一次。
-consentDenied=不同意
-
-accountDisabledMessage=账户已经关闭,请联系管理员
-
-accountTemporarilyDisabledMessage=账户暂时关闭,请联系管理员或稍后再试。
-invalidPasswordMinLengthMessage=无效的密码:最短长度 {0}.
-invalidPasswordMinLowerCaseCharsMessage=无效的密码: 至少包含 {0} 小写字母。
-invalidPasswordMinDigitsMessage=无效的密码: 至少包含 {0} 数字。
-invalidPasswordMinUpperCaseCharsMessage=无效的密码: 至少包含 {0} 大写字母
-invalidPasswordMinSpecialCharsMessage=无效的密码: 至少包含 {0} 个特殊字符
-invalidPasswordNotUsernameMessage=无效的密码: 不能与用户名相同
-invalidPasswordRegexPatternMessage=无效的密码: 无法与正则表达式匹配
-invalidPasswordHistoryMessage=无效的密码: 不能与之前的{0} 个旧密码相同
-locale_ca=Català
-locale_de=Deutsch
-locale_en=English
-locale_es=Español
-locale_fr=Français
-locale_it=Italian
-locale_ja=日本語
-locale_nl=Nederlands
-locale_no=Norsk
-locale_lt=Lietuvių
-locale_pt-BR=Português (Brasil)
-locale_ru=Русский
-locale_zh-CN=中文简体
diff --git a/account/password.ftl b/account/password.ftl
index 4a043f2..bcdaaee 100644
--- a/account/password.ftl
+++ b/account/password.ftl
@@ -3,7 +3,7 @@
<div class="row">
<div class="col-md-10">
- <h2>${msg("changePasswordHtmlTitle")}</h2>
+ <h1 class="first-header">${msg("changePasswordHtmlTitle")}</h1>
</div>
<div class="col-md-2 subtitle">
<span class="subtitle">${msg("allFieldsRequired")}</span>
@@ -14,12 +14,12 @@
<input type="text" id="username" name="username" value="${(account.username!'')}" autocomplete="username" readonly="readonly" style="display:none;">
<#if password.passwordSet>
- <div class="form-group">
- <div class="col-sm-2 col-md-2">
+ <div class="form-group row">
+ <div class="col-2 col-md-2">
<label for="password" class="control-label">${msg("password")}</label>
</div>
- <div class="col-sm-10 col-md-10">
+ <div class="col-10 col-md-10">
<input type="password" class="form-control" id="password" name="password" autofocus autocomplete="current-password">
</div>
</div>
@@ -27,28 +27,28 @@
<input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
- <div class="form-group">
- <div class="col-sm-2 col-md-2">
+ <div class="form-group row">
+ <div class="col-2 col-md-2">
<label for="password-new" class="control-label">${msg("passwordNew")}</label>
</div>
- <div class="col-sm-10 col-md-10">
+ <div class="col-10 col-md-10">
<input type="password" class="form-control" id="password-new" name="password-new" autocomplete="new-password">
</div>
</div>
- <div class="form-group">
- <div class="col-sm-2 col-md-2">
+ <div class="form-group row">
+ <div class="col-2 col-md-2">
<label for="password-confirm" class="control-label" class="two-lines">${msg("passwordConfirm")}</label>
</div>
- <div class="col-sm-10 col-md-10">
+ <div class="col-10 col-md-10">
<input type="password" class="form-control" id="password-confirm" name="password-confirm" autocomplete="new-password">
</div>
</div>
<div class="form-group">
- <div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
+ <div id="kc-form-buttons" class="offset-md-2 col-md-10 px-0 submit">
<div class="">
<button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="Save">${msg("doSave")}</button>
</div>
diff --git a/account/resource-detail.ftl b/account/resource-detail.ftl
deleted file mode 100644
index 2c963d7..0000000
--- a/account/resource-detail.ftl
+++ /dev/null
@@ -1,277 +0,0 @@
-<#import "template.ftl" as layout>
-<@layout.mainLayout active='authorization' bodyClass='authorization'; section>
-
- <style>
- .search-box,.close-icon,.search-wrapper {
- position: relative;
- }
- .search-wrapper {
- width: 500px;
- margin: auto;
- margin-top: 50px;
- }
- .search-box {
- font-weight: 600;
- color: white;
- border: 1px solid #006e9c;
- outline: 0;
- border-radius: 15px;
- background-color: #0085cf;
- padding: 2px 5px;
-
- }
- .search-box:focus {
- box-shadow: 0 0 15px 5px #b0e0ee;
- border: 2px solid #bebede;
- }
- .close-icon {
- border:1px solid transparent;
- background-color: transparent;
- display: inline-block;
- float: right;
- outline: 0;
- cursor: pointer;
- }
- .close-icon:after {
- display: block;
- width: 15px;
- height: 15px;
- background-color: #FA9595;
- z-index:1;
- right: 35px;
- top: 0;
- bottom: 0;
- margin: auto;
- padding: 2px;
- border-radius: 50%;
- text-align: center;
- color: white;
- font-weight: normal;
- font-size: 12px;
- box-shadow: 0 0 2px #E50F0F;
- cursor: pointer;
- }
- .search-box:not(:valid) ~ .close-icon {
- display: none;
- }
- </style>
- <script>
- function removeScopeElm(elm) {
- elm.parentNode.removeChild(elm);
- }
-
- function removeAllScopes(id) {
- var scopesElm = document.getElementsByName('removeScope-' + id);
-
- for (i = 0; i < scopesElm.length; i++) {
- var td = scopesElm[i].parentNode.parentNode;
- var tr = td.parentNode;
- var tbody = tr.parentNode;
- tbody.removeChild(tr);
- }
- }
-
- function getChildren(parent, childId) {
- var childNodes = [];
-
- for (i = 0; i < parent.childNodes.length; i++) {
- if (parent.childNodes[i].id == childId) {
- childNodes.push(parent.childNodes[i]);
- }
- }
-
- return childNodes;
- }
- </script>
-
- <div class="row">
- <div class="col-md-10">
- <h2>
- <a href="${url.resourceUrl}">${msg("myResources")}</a> <i class="fa fa-angle-right"></i> <#if authorization.resource.displayName??>${authorization.resource.displayName}<#else>${authorization.resource.name}</#if>
- </h2>
- </div>
- </div>
-
- <#if authorization.resource.iconUri??>
- <img src="${authorization.resource.iconUri}">
- <br/>
- </#if>
-
- <div class="row">
- <div class="col-md-10">
- <h3>
- ${msg("peopleAccessResource")}
- </h3>
- </div>
- </div>
- <div class="row">
- <div class="col-md-12">
- <table class="table table-striped table-bordered">
- <thead>
- <tr>
- <th>${msg("user")}</th>
- <th>${msg("permission")}</th>
- <th>${msg("date")}</th>
- <th>${msg("action")}</th>
- </tr>
- </thead>
- <tbody>
- <#if authorization.resource.shares?size != 0>
- <#list authorization.resource.shares as permission>
- <form action="${url.getResourceGrant(authorization.resource.id)}" name="revokeForm-${authorization.resource.id}-${permission.requester.username}" method="post">
- <input type="hidden" name="action" value="revoke">
- <input type="hidden" name="requester" value="${permission.requester.username}">
- <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
- <tr>
- <td>
- <#if permission.requester.email??>${permission.requester.email}<#else>${permission.requester.username}</#if>
- </td>
- <td>
- <#if permission.scopes?size != 0>
- <#list permission.scopes as scope>
- <#if scope.granted && scope.scope??>
- <div class="search-box">
- <#if scope.scope.displayName??>
- ${scope.scope.displayName}
- <#else>
- ${scope.scope.name}
- </#if>
- <button class="close-icon" type="button" name="removeScope-${authorization.resource.id}-${permission.requester.username}" onclick="removeScopeElm(this.parentNode);document.forms['revokeForm-${authorization.resource.id}-${permission.requester.username}'].submit();"><i class="fa fa-times" aria-hidden="true"></i></button>
- <input type="hidden" name="permission_id" value="${scope.id}"/>
- </div>
- <#else>
- ${msg("anyPermission")}
- </#if>
- </#list>
- <#else>
- Any action
- </#if>
- </td>
- <td>
- ${permission.createdDate?datetime}
- </td>
- <td width="20%" align="middle" style="vertical-align: middle">
- <a href="#" id="revoke-${authorization.resource.name}-${permission.requester.username}" onclick="removeAllScopes('${authorization.resource.id}-${permission.requester.username}');document.forms['revokeForm-${authorization.resource.id}-${permission.requester.username}'].submit();" type="submit" class="btn btn-primary">${msg("doRevoke")}</a>
- </td>
- </tr>
- </form>
- </#list>
- <#else>
- <tr>
- <td colspan="4">${msg("resourceIsNotBeingShared")}</td>
- </tr>
- </#if>
- </tbody>
- </table>
- </form>
- </div>
- </div>
- <div class="row">
- <div class="col-md-10">
- <h3>
- ${msg("resourceManagedPolicies")}
- </h3>
- </div>
- </div>
- <div class="row">
- <div class="col-md-12">
- <table class="table table-striped table-bordered">
- <thead>
- <tr>
- <th>${msg("description")}</th>
- <th>${msg("permission")}</th>
- <th>${msg("action")}</th>
- </tr>
- </thead>
- <tbody>
- <#if authorization.resource.policies?size != 0>
- <#list authorization.resource.policies as permission>
- <form action="${url.getResourceGrant(authorization.resource.id)}" name="revokePolicyForm-${authorization.resource.id}-${permission.id}" method="post">
- <input type="hidden" name="action" value="revokePolicy">
- <input type="hidden" name="permission_id" value="${permission.id}"/>
- <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
- <tr>
- <td>
- <#if permission.description??>
- ${permission.description}
- </#if>
- </td>
- <td>
- <#if permission.scopes?size != 0>
- <#list permission.scopes as scope>
- <div class="search-box">
- <#if scope.displayName??>
- ${scope.displayName}
- <#else>
- ${scope.name}
- </#if>
- <button class="close-icon" type="button" name="removePolicyScope-${authorization.resource.id}-${permission.id}-${scope.id}" onclick="removeScopeElm(this.parentNode);document.forms['revokePolicyForm-${authorization.resource.id}-${permission.id}'].submit();"><i class="fa fa-times" aria-hidden="true"></i></button>
- <input type="hidden" name="permission_id" value="${permission.id}:${scope.id}"/>
- </div>
- </#list>
- <#else>
- ${msg("anyAction")}
- </#if>
- </td>
- <td width="20%" align="middle" style="vertical-align: middle">
- <a href="#" id="revokePolicy-${authorization.resource.name}-${permission.id}" onclick="document.forms['revokePolicyForm-${authorization.resource.id}-${permission.id}']['action'].value = 'revokePolicyAll';document.forms['revokePolicyForm-${authorization.resource.id}-${permission.id}'].submit();" type="submit" class="btn btn-primary">${msg("doRevoke")}</a>
- </td>
- </tr>
- </form>
- </#list>
- <#else>
- <tr>
- <td colspan="3">
- ${msg("resourceNoPermissionsGrantingAccess")}
- </td>
- </tr>
- </#if>
- </tbody>
- </table>
- </form>
- </div>
- </div>
- <div class="row">
- <div class="col-md-10">
- <h3>
- ${msg("shareWithOthers")}
- </h3>
- </div>
- </div>
- <div class="row">
- <div class="col-md-10">
- <form action="${url.getResourceShare(authorization.resource.id)}" name="shareForm" method="post">
- <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
- <div class="col-sm-3 col-md-3">
- <label for="password" class="control-label">${msg("username")} or ${msg("email")} </label> <span class="required">*</span>
- </div>
- <div class="col-sm-8 col-md-8">
- <div class="row">
- <div class="col-md-12">
- <input type="text" class="form-control" id="user_id" name="user_id" autofocus autocomplete="off">
- </div>
- <div class="col-md-12">
- <br/>
- <#list authorization.resource.scopes as scope>
- <div id="scope" class="search-box">
- <#if scope.displayName??>
- ${scope.displayName}
- <#else>
- ${scope.name}
- </#if>
- <button class="close-icon" id="share-remove-scope-${authorization.resource.name}-${scope.name}" type="button" onclick="if (getChildren(this.parentNode.parentNode, 'scope').length > 1) {removeScopeElm(this.parentNode)}"><i class="fa fa-times" aria-hidden="true"></i></button>
- <input type="hidden" name="scope_id" value="${scope.id}"/>
- </div>
- </#list>
- </div>
- <div class="col-md-12">
- <br/>
- <a href="#" onclick="document.forms['shareForm'].submit()" type="submit" id="share-button" class="btn btn-primary">${msg("share")}</a>
- </div>
- </div>
- </div>
- </form>
- </div>
- </div>
- <br/>
-</@layout.mainLayout>
diff --git a/account/resources.ftl b/account/resources.ftl
deleted file mode 100644
index 011e181..0000000
--- a/account/resources.ftl
+++ /dev/null
@@ -1,399 +0,0 @@
-<#import "template.ftl" as layout>
-<@layout.mainLayout active='authorization' bodyClass='authorization'; section>
- <style>
- .search-box,.close-icon,.search-wrapper {
- position: relative;
- }
- .search-wrapper {
- width: 500px;
- margin: auto;
- margin-top: 50px;
- }
- .search-box {
- font-weight: 600;
- color: white;
- border: 1px solid #006e9c;
- outline: 0;
- border-radius: 15px;
- background-color: #0085cf;
- padding: 2px 5px;
- }
- .search-box:focus {
- box-shadow: 0 0 15px 5px #b0e0ee;
- border: 2px solid #bebede;
- }
- .close-icon {
- border:1px solid transparent;
- background-color: transparent;
- display: inline-block;
- float: right;
- outline: 0;
- cursor: pointer;
- }
- .close-icon:after {
- display: block;
- width: 15px;
- height: 15px;
- background-color: #FA9595;
- z-index:1;
- right: 35px;
- top: 0;
- bottom: 0;
- margin: auto;
- padding: 2px;
- border-radius: 50%;
- text-align: center;
- color: white;
- font-weight: normal;
- font-size: 12px;
- box-shadow: 0 0 2px #E50F0F;
- cursor: pointer;
- }
- .search-box:not(:valid) ~ .close-icon {
- display: none;
- }
- </style>
- <script>
- function showHideActions(elm) {
- if (elm.style.display == 'none') {
- elm.style.display = '';
- } else {
- elm.style.display = 'none';
- }
- }
- function removeScopeElm(elm) {
- var td = elm.parentNode;
- var tr = td.parentNode;
- var tbody = tr.parentNode;
-
- td.removeChild(elm);
-
- var childCount = td.childNodes.length - 1;
-
- for (i = 0; i < td.childNodes.length; i++) {
- if (!td.childNodes[i].tagName || td.childNodes[i].tagName.toUpperCase() != 'DIV') {
- td.removeChild(td.childNodes[i]);
- childCount--;
- }
- }
-
- if (childCount <= 0) {
- tbody.removeChild(tr);
- }
- }
-
- function removeAllScopes(id) {
- var scopesElm = document.getElementsByName('removeScope-' + id);
-
- for (i = 0; i < scopesElm.length; i++) {
- var td = scopesElm[i].parentNode.parentNode;
- var tr = td.parentNode;
- var tbody = tr.parentNode;
- tbody.removeChild(tr);
- }
- }
-
- function selectAllCheckBoxes(formName, elm, name) {
- var shares = document.forms[formName].getElementsByTagName('input');
-
- for (i = 0; i < shares.length; i++) {
- if (shares[i].name == name) {
- shares[i].checked = elm.checked;
- }
- }
- }
- </script>
- <div class="row">
- <div class="col-md-10">
- <h2>
- ${msg("myResources")}
- </h2>
- </div>
- </div>
-
- <#if authorization.resourcesWaitingApproval?size != 0>
- <div class="row">
- <div class="col-md-12">
- <h3>
- ${msg("needMyApproval")}
- </h3>
- </div>
- </div>
- <div class="row">
- <div class="col-md-12">
- <table class="table table-striped table-bordered">
- <thead>
- <tr>
- <th>${msg("resource")}</th>
- <th>${msg("requestor")}</th>
- <th>${msg("permissionRequestion")}</th>
- <th>${msg("action")}</th>
- </tr>
- </thead>
- <tbody>
- <#list authorization.resourcesWaitingApproval as resource>
- <#list resource.permissions as permission>
- <form action="${url.getResourceGrant(resource.id)}" name="approveForm-${resource.id}-${permission.requester.username}" method="post">
- <input type="hidden" name="action" value="grant">
- <input type="hidden" name="requester" value="${permission.requester.username}">
- <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
- <tr>
- <td>
- <#if resource.displayName??>${resource.displayName}<#else>${resource.name}</#if>
- </td>
- <td>
- <#if permission.requester.email??>${permission.requester.email}<#else>${permission.requester.username}</#if>
- </td>
- <td>
- <#list permission.scopes as scope>
- <#if scope.scope??>
- <div class="search-box">
- <#if scope.scope.displayName??>
- ${scope.scope.displayName}
- <#else>
- ${scope.scope.name}
- </#if>
- <button class="close-icon" type="button" id="grant-remove-scope-${resource.name}-${permission.requester.username}-${scope.scope.name}" name="removeScope-${resource.id}-${permission.requester.username}" onclick="removeScopeElm(this.parentNode);document.forms['approveForm-${resource.id}-${permission.requester.username}']['action'].value = 'deny';document.forms['approveForm-${resource.id}-${permission.requester.username}'].submit();"><i class="fa fa-times" aria-hidden="true"></i></button>
- <input type="hidden" name="permission_id" value="${scope.id}"/>
- </div>
- <#else>
- ${msg("anyPermission")}
- </#if>
- </#list>
- </td>
- <td width="20%" align="middle" style="vertical-align: middle">
- <a href="#" id="grant-${resource.name}-${permission.requester.username}" onclick="document.forms['approveForm-${resource.id}-${permission.requester.username}']['action'].value = 'grant';document.forms['approveForm-${resource.id}-${permission.requester.username}'].submit();" type="submit" class="btn btn-primary">${msg("doApprove")}</a>
- <a href="#" id="deny-${resource.name}-${permission.requester.username}" onclick="removeAllScopes('${resource.id}-${permission.requester.username}');document.forms['approveForm-${resource.id}-${permission.requester.username}']['action'].value = 'deny';document.forms['approveForm-${resource.id}-${permission.requester.username}'].submit();" type="submit" class="btn btn-danger">${msg("doDeny")}</a>
- </td>
- </tr>
- </form>
- </#list>
- </#list>
- </tbody>
- </table>
- </div>
- </div>
- </#if>
-
- <div class="row">
- <div class="col-md-12">
- <h3>
- ${msg("myResourcesSub")}
- </h3>
- </div>
- </div>
- <div class="row">
- <div class="col-md-12">
- <table class="table table-striped table-bordered">
- <thead>
- <tr>
- <th>${msg("resource")}</th>
- <th>${msg("application")}</th>
- <th>${msg("peopleSharingThisResource")}</th>
- </tr>
- </thead>
-
- <tbody>
- <#if authorization.resources?size != 0>
- <#list authorization.resources as resource>
- <tr>
- <td>
- <a id="detail-${resource.name}" href="${url.getResourceDetailUrl(resource.id)}">
- <#if resource.displayName??>${resource.displayName}<#else>${resource.name}</#if>
- </a>
- </td>
- <td>
- <#if resource.resourceServer.baseUri??>
- <a href="${resource.resourceServer.baseUri}">${resource.resourceServer.name}</a>
- <#else>
- ${resource.resourceServer.name}
- </#if>
- </td>
- <td>
- <#if resource.shares?size != 0>
- <a href="${url.getResourceDetailUrl(resource.id)}">${resource.shares?size} <i class="fa fa-users"></i></a>
- <#else>
- ${msg("notBeingShared")}
- </#if>
- </td>
- </tr>
- </#list>
- <#else>
- <tr>
- <td colspan="4">${msg("notHaveAnyResource")}</td>
- </tr>
- </#if>
- </tbody>
- </table>
- </div>
- </div>
-
- <div class="row">
- <div class="col-md-12">
- <h3>
- ${msg("resourcesSharedWithMe")}
- </h3>
- </div>
- </div>
- <div class="row">
- <div class="col-md-12">
- <form action="${url.resourceUrl}" name="shareForm" method="post">
- <input type="hidden" name="action" value="cancel"/>
- <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
- <table class="table table-striped table-bordered">
- <thead>
- <tr>
- <th width="5%"><input type="checkbox" onclick="selectAllCheckBoxes('shareForm', this, 'resource_id');" <#if authorization.sharedResources?size == 0>disabled="true"</#if></td>
- <th>${msg("resource")}</th>
- <th>${msg("owner")}</th>
- <th>${msg("application")}</th>
- <th>${msg("permission")}</th>
- <th>${msg("date")}</th>
- </tr>
- </thead>
- <tbody>
- <#if authorization.sharedResources?size != 0>
- <#list authorization.sharedResources as resource>
- <tr>
- <td>
- <input type="checkbox" name="resource_id" value="${resource.id}"/>
- </td>
- <td>
- <#if resource.displayName??>${resource.displayName}<#else>${resource.name}</#if>
- </td>
- <td>
- <#if resource.owner.email??>${resource.owner.email}<#else>${resource.owner.username}</#if>
- </td>
- <td>
- <a href="${resource.resourceServer.baseUri}">${resource.resourceServer.name}</a>
- </td>
- <td>
- <#if resource.permissions?size != 0>
- <ul>
- <#list resource.permissions as permission>
- <#list permission.scopes as scope>
- <#if scope.granted && scope.scope??>
- <li>
- <#if scope.scope.displayName??>
- ${scope.scope.displayName}
- <#else>
- ${scope.scope.name}
- </#if>
- </li>
- <#else>
- ${msg("anyPermission")}
- </#if>
- </#list>
- </#list>
- </ul>
- <#else>
- Any action
- </#if>
- </td>
- <td>
- ${resource.permissions[0].grantedDate?datetime}
- </td>
- </tr>
- </#list>
- <#else>
- <tr>
- <td colspan="6">${msg("noResourcesSharedWithYou")}</td>
- </tr>
- </#if>
- </tbody>
- </table>
- </form>
- </div>
- <#if authorization.sharedResources?size != 0>
- <div class="col-md-12">
- <a href="#" onclick="document.forms['shareForm'].submit();" type="submit" class="btn btn-danger">${msg("doRemoveSharing")}</a>
- </div>
- </#if>
- </div>
-
- <#if authorization.resourcesWaitingOthersApproval?size != 0>
- <br/>
- <div class="row">
- <div class="col-md-12">
- <h3>
- ${msg("requestsWaitingApproval")}
- </h3>
- </div>
- </div>
- <div class="row">
- <div class="col-md-12">
- <i class="pficon pficon-info"></i> ${msg("havePermissionRequestsWaitingForApproval",authorization.resourcesWaitingOthersApproval?size)}
- <a href="#" onclick="document.getElementById('waitingApproval').style.display=''">${msg("clickHereForDetails")}</a>
- <div class="row">
- <div class="col-md-12"></div>
- </div>
- <div class="row">
- <div class="col-md-12"></div>
- </div>
- <div class="row">
- <div class="col-md-12"></div>
- </div>
- <div class="row" id="waitingApproval" style="display:none">
- <div class="col-md-12">
- <form action="${url.resourceUrl}" name="waitingApprovalForm" method="post">
- <input type="hidden" name="action" value="cancelRequest"/>
- <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
- <table class="table table-striped table-bordered">
- <thead>
- <tr>
- <th width="5%"><input type="checkbox" onclick="selectAllCheckBoxes('waitingApprovalForm', this, 'resource_id');" <#if authorization.resourcesWaitingOthersApproval?size == 0>disabled="true"</#if></th>
- <th>${msg("resource")}</th>
- <th>${msg("owner")}</th>
- <th>${msg("action")}</th>
- <th>${msg("date")}</th>
- </tr>
- </thead>
- <tbody>
- <#list authorization.resourcesWaitingOthersApproval as resource>
- <tr>
- <td>
- <input type="checkbox" name="resource_id" value="${resource.id}"/>
- </td>
- <td>
- <#if resource.displayName??>${resource.displayName}<#else>${resource.name}</#if>
- </td>
- <td>
- <#if resource.owner.email??>${resource.owner.email}<#else>${resource.owner.username}</#if>
- </td>
- <td>
- <ul>
- <#list resource.permissions as permission>
- <#list permission.scopes as scope>
- <li>
- <#if scope.scope??>
- <#if scope.scope.displayName??>
- ${scope.scope.displayName}
- <#else>
- ${scope.scope.name}
- </#if>
- <#else>
- ${msg("anyPermission")}
- </#if>
- </li>
- </#list>
- </#list>
- </ul>
- </td>
- <td>
- ${resource.permissions[0].createdDate?datetime}
- </td>
- </tr>
- </#list>
- </tbody>
- </table>
- </form>
- </div>
- <div class="col-md-12">
- <a href="#" onclick="document.forms['waitingApprovalForm'].submit();" type="submit" class="btn btn-danger">${msg("doRemoveRequest")}</a>
- </div>
- </div>
- </div>
- </div>
- </#if>
-
-</@layout.mainLayout> \ No newline at end of file
diff --git a/account/resources/css/account.css b/account/resources/css/account.css
new file mode 100644
index 0000000..54930ba
--- /dev/null
+++ b/account/resources/css/account.css
@@ -0,0 +1,276 @@
+html {
+ height: 100%;
+}
+
+body {
+ background-color: #F9F9F9;
+ margin: 0;
+ padding: 0;
+ height: 100%;
+}
+
+header .navbar {
+ margin-bottom: 0;
+ min-height: inherit;
+}
+
+.header .container {
+ position: relative;
+}
+
+.navbar-title {
+ background-image: url('../img/logo.png');
+ height: 25px;
+ background-repeat: no-repeat;
+ width: 123px;
+ margin: 3px 10px 5px;
+ text-indent: -99999px;
+}
+
+.navbar-pf .navbar-utility {
+ right: 20px;
+ top: -34px;
+ font-size: 12px;
+}
+
+.navbar-pf .navbar-utility > li > a {
+ color: #fff !important;
+ padding-bottom: 12px;
+ padding-top: 11px;
+ border-left: medium none;
+}
+
+.container {
+ height: 100%;
+}
+
+.content-area {
+ /*background-color: #fff;*/
+ /*border: 1px solid #E1E1E1;
+ border-radius: 4px;
+ height: 100%;
+ padding: 0 30px;*/
+}
+
+.margin-bottom {
+ margin-bottom: 10px;
+}
+
+/* Sidebar */
+
+.bs-sidebar {
+ background-color: #f9f9f9;
+ /*padding-top: 44px;*/
+ padding-right: 0;
+ padding-left: 0;
+ z-index: 20;
+}
+.bs-sidebar ul {
+ list-style: none;
+ padding-left: 12px;
+}
+
+.bs-sidebar ul li {
+ margin-bottom: 0.5em;
+ margin-left: -1em;
+}
+.bs-sidebar ul li a {
+ font-size: 14px;
+ padding-left: 25px;
+ color: #4d5258;
+ line-height: 28px;
+ display: block;
+ border-width: 1px 0 1px 1px;
+ border-style: solid;
+ border-color: #f9f9f9;
+}
+.bs-sidebar ul li a:hover,
+.bs-sidebar ul li a:focus {
+ text-decoration: none;
+ color: #777777;
+ border-right: 2px solid #aaa;
+}
+.bs-sidebar ul li.active a {
+ background-color: #c7e5f0;
+ border-color: #56bae0;
+ font-weight: bold;
+ background-image: url(../img/icon-sidebar-active.png);
+ background-repeat: no-repeat;
+ background-position: right center;
+}
+
+.bs-sidebar ul li.active a:hover {
+ border-right: none;
+}
+
+
+.content-area h2 {
+ font-family: "Open Sans", sans-serif;
+ font-weight: 100;
+ font-size: 24px;
+ margin-bottom: 25px;
+ margin-top: 25px;
+}
+
+.subtitle {
+ text-align: right;
+ margin-top: 30px;
+ color: #909090;
+}
+
+.required {
+ color: #CB2915;
+}
+
+
+.alert {
+ margin-top: 30px;
+ margin-bottom: 0;
+}
+
+.feedback-aligner .alert {
+ background-position: 1.27273em center;
+ background-repeat: no-repeat;
+ border-radius: 2px;
+ border-width: 1px;
+ color: #4D5258;
+ display: inline-block;
+ font-size: 1.1em;
+ line-height: 1.4em;
+ margin: 0;
+ padding: 0.909091em 3.63636em;
+ position: relative;
+ text-align: left;
+}
+.alert.alert-success {
+ background-color: #E4F1E1;
+ border-color: #4B9E39;
+}
+.alert.alert-error {
+ background-color: #F8E7E7;
+ border-color: #B91415;
+}
+.alert.alert-warning {
+ background-color: #FEF1E9;
+ border-color: #F17528;
+}
+.alert.alert-info {
+ background-color: #E4F3FA;
+ border-color: #5994B2;
+}
+
+.form-horizontal {
+ border-top: 1px solid #E9E8E8;
+ padding-top: 23px;
+}
+
+.form-horizontal .control-label {
+ color: #909090;
+ line-height: 1.4em;
+ padding-top: 5px;
+ position: relative;
+ text-align: right;
+ width: 100%;
+}
+
+.form-group {
+ position: relative;
+}
+
+.control-label + .required {
+ position: absolute;
+ right: -2px;
+ top: 0;
+}
+
+#kc-form-buttons {
+ text-align: right;
+ margin-top: 10px;
+}
+
+#kc-form-buttons .btn-primary {
+ float: right;
+ margin-left: 8px;
+}
+
+/* Authenticator page */
+
+ol {
+ padding-left: 40px;
+}
+
+ol li {
+ font-size: 13px;
+ margin-bottom: 10px;
+ position: relative;
+}
+
+ol li img {
+ margin-top: 15px;
+ margin-bottom: 5px;
+ border: 1px solid #eee;
+}
+
+hr + .form-horizontal {
+ border: none;
+ padding-top: 0;
+}
+
+.kc-dropdown{
+ position: relative;
+}
+.kc-dropdown > a{
+ display:block;
+ padding: 11px 10px 12px;
+ line-height: 12px;
+ font-size: 12px;
+ color: #fff !important;
+ text-decoration: none;
+}
+.kc-dropdown > a::after{
+ content: "\2c5";
+ margin-left: 4px;
+}
+.kc-dropdown:hover > a{
+ background-color: rgba(0,0,0,0.2);
+}
+.kc-dropdown ul li a{
+ padding: 1px 11px;
+ font-size: 12px;
+ color: #000 !important;
+ border: 1px solid #fff;
+ text-decoration: none;
+ display:block;
+ line-height: 20px;
+}
+.kc-dropdown ul li a:hover{
+ color: #4d5258;
+ background-color: #d4edfa;
+ border-color: #b3d3e7;
+}
+.kc-dropdown ul{
+ position: absolute;
+ z-index: 2000;
+ list-style:none;
+ display:none;
+ padding: 5px 0px;
+ margin: 0px;
+ background-color: #fff !important;
+ border: 1px solid #b6b6b6;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ background-clip: padding-box;
+ min-width: 100px;
+}
+.kc-dropdown:hover ul{
+ display:block;
+}
+
+
+#kc-totp-secret-key {
+ border: 1px solid #eee;
+ font-size: 16px;
+ padding: 10px;
+ margin: 50px 0;
+} \ No newline at end of file
diff --git a/account/resources/img/icon-sidebar-active.png b/account/resources/img/icon-sidebar-active.png
new file mode 100644
index 0000000..e7b9b08
--- /dev/null
+++ b/account/resources/img/icon-sidebar-active.png
Binary files differ
diff --git a/account/resources/img/keycloak-logo.png b/account/resources/img/keycloak-logo.png
new file mode 100644
index 0000000..9555748
--- /dev/null
+++ b/account/resources/img/keycloak-logo.png
Binary files differ
diff --git a/account/resources/img/logo.png b/account/resources/img/logo.png
new file mode 100644
index 0000000..a698c54
--- /dev/null
+++ b/account/resources/img/logo.png
Binary files differ
diff --git a/account/sessions.ftl b/account/sessions.ftl
index 89dbf65..96a0b38 100644
--- a/account/sessions.ftl
+++ b/account/sessions.ftl
@@ -3,7 +3,7 @@
<div class="row">
<div class="col-md-10">
- <h2>${msg("sessionsHtmlTitle")}</h2>
+ <h1 class="first-header">${msg("sessionsHtmlTitle")}</h1>
</div>
</div>
@@ -38,7 +38,7 @@
<form action="${url.sessionsUrl}" method="post">
<input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
- <button id="logout-all-sessions" class="btn btn-default">${msg("doLogOutAllSessions")}</button>
+ <button id="logout-all-sessions" class="btn btn-outline-danger float-right">${msg("doLogOutAllSessions")}</button>
</form>
</@layout.mainLayout>
diff --git a/account/template.ftl b/account/template.ftl
index fc4ebe3..5a9d8a1 100644
--- a/account/template.ftl
+++ b/account/template.ftl
@@ -6,6 +6,8 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="robots" content="noindex, nofollow">
+ <link href="https://assets.gentoo.org/tyrian/v2/tyrian.min.css" rel="stylesheet" media="screen">
+
<title>${msg("accountManagementTitle")}</title>
<link rel="icon" href="${url.resourcesPath}/img/favicon.ico">
<#if properties.styles?has_content>
@@ -20,64 +22,164 @@
</#if>
</head>
<body class="admin-console user ${bodyClass}">
-
- <header class="navbar navbar-default navbar-pf navbar-main header">
- <nav class="navbar" role="navigation">
- <div class="navbar-header">
- <div class="container">
- <h1 class="navbar-title">Keycloak</h1>
+
+<header>
+ <div class="site-title">
+ <div class="container">
+ <div class="row justify-content-between">
+ <div class="logo">
+ <a href="/" title="Back to the homepage" class="site-logo">
+ <img src="https://assets.gentoo.org/tyrian/v2/site-logo.png" alt="Gentoo" srcset="https://assets.gentoo.org/tyrian/v2/site-logo.svg">
+ </a>
+ <span class="site-label">SSO</span>
</div>
- </div>
- <div class="navbar-collapse navbar-collapse-1">
- <div class="container">
- <ul class="nav navbar-nav navbar-utility">
- <#if realm.internationalizationEnabled>
- <li>
- <div class="kc-dropdown" id="kc-locale-dropdown">
- <a href="#" id="kc-current-locale-link">${locale.current}</a>
- <ul>
- <#list locale.supported as l>
- <li class="kc-dropdown-item"><a href="${l.url}">${l.label}</a></li>
- </#list>
- </ul>
- </div>
- <li>
- </#if>
- <#if referrer?has_content && referrer.url?has_content><li><a href="${referrer.url}" id="referrer">${msg("backTo",referrer.name)}</a></li></#if>
- <li><a href="${url.logoutUrl}">${msg("doSignOut")}</a></li>
- </ul>
+ <div class="site-title-buttons">
+ <div class="btn-group btn-group-sm">
+ <a href="https://get.gentoo.org/" role="button" class="btn get-gentoo"><span class="fa fa-fw fa-download"></span>
+ <strong>Get Gentoo!</strong></a>
+ <div class="btn-group btn-group-sm">
+ <a class="btn gentoo-org-sites dropdown-toggle" data-toggle="dropdown" data-target="#" href="#">
+ <span class="fa fa-fw fa-map-o"></span> <span class="d-none d-sm-inline">gentoo.org sites</span>
+ <span class="caret"></span>
+ </a>
+ <div class="dropdown-menu dropdown-menu-right">
+ <a class="dropdown-item" href="https://www.gentoo.org/" title="Main Gentoo website"><span class="fa fa-home fa-fw"></span>
+ gentoo.org</a>
+ <a class="dropdown-item" href="https://wiki.gentoo.org/" title="Find and contribute documentation"><span class="fa fa-file-text-o fa-fw"></span>
+ Wiki</a>
+ <a class="dropdown-item" href="https://bugs.gentoo.org/" title="Report issues and find common issues"><span class="fa fa-bug fa-fw"></span>
+ Bugs</a>
+ <a class="dropdown-item" href="https://forums.gentoo.org/" title="Discuss with the community"><span class="fa fa-comments-o fa-fw"></span>
+ Forums</a>
+ <a class="dropdown-item" href="https://packages.gentoo.org/" title="Find software for your Gentoo"><span class="fa fa-hdd-o fa-fw"></span>
+ Packages</a>
+ <div class="dropdown-divider"></div>
+ <a class="dropdown-item" href="https://planet.gentoo.org/" title="Find out what's going on in the developer community"><span class="fa fa-rss fa-fw"></span>
+ Planet</a>
+ <a class="dropdown-item" href="https://archives.gentoo.org/" title="Read up on past discussions"><span class="fa fa-archive fa-fw"></span>
+ Archives</a>
+ <a class="dropdown-item" href="https://sources.gentoo.org/" title="Browse our source code"><span class="fa fa-code fa-fw"></span>
+ Sources</a>
+ <div class="dropdown-divider"></div>
+ <a class="dropdown-item" href="https://infra-status.gentoo.org/" title="Get updates on the services provided by Gentoo"><span class="fa fa-server fa-fw"></span>
+ Infra Status</a>
+ </div>
+ </div>
+ </div>
</div>
</div>
- </nav>
- </header>
+ </div>
+ </div>
+ <nav class="tyrian-navbar navbar navbar-dark navbar-expand-lg bg-primary" role="navigation">
+ <div class="container px-0">
+ <div class="navbar-header">
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar-main-collapse" aria-controls="navbar-main-collapse" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+ </div>
+ <div class="collapse navbar-collapse navbar-main-collapse" id="navbar-main-collapse">
+ <ul class="navbar-nav ml-3 mr-auto">
+ <li class="nav-item <#if active=='account'>active</#if>"><a class="nav-link" href="${url.accountUrl}">${msg("account")}</a></li>
+ <#if features.passwordUpdateSupported><li class="nav-item <#if active=='password'>active</#if>"><a class="nav-link" href="${url.passwordUrl}">${msg("password")}</a></li></#if>
+ <li class="nav-item <#if active=='totp'>active</#if>"><a class="nav-link" href="${url.totpUrl}">${msg("authenticator")}</a></li>
+ <#if features.identityFederation><li class="nav-item <#if active=='social'>active</#if>"><a class="nav-link" href="${url.socialUrl}">${msg("federatedIdentity")}</a></li></#if>
+ <li class="nav-item <#if active=='sessions'>active</#if>"><a class="nav-link" href="${url.sessionsUrl}">${msg("sessions")}</a></li>
+ <li class="nav-item <#if active=='applications'>active</#if>"><a class="nav-link" href="${url.applicationsUrl}">${msg("applications")}</a></li>
+ <#if features.log><li class="nav-item <#if active=='log'>active</#if>"><a class="nav-link" href="${url.logUrl}">${msg("log")}</a></li></#if>
+ <#if realm.userManagedAccessAllowed && features.authorization><li class="nav-item <#if active=='authorization'>active</#if>"><a class="nav-link" href="${url.resourceUrl}">${msg("myResources")}</a></li></#if>
+ </ul>
+
+ <ul class="navbar-nav ml-auto">
+
+ <#if realm.internationalizationEnabled>
+ <li>
+ <div class="kc-dropdown" id="kc-locale-dropdown">
+ <a href="#" id="kc-current-locale-link">${locale.current}</a>
+ <ul>
+ <#list locale.supported as l>
+ <li class="kc-dropdown-item"><a href="${l.url}">${l.label}</a></li>
+ </#list>
+ </ul>
+ </div>
+ <li>
+ </#if>
+ <#if referrer?has_content && referrer.url?has_content><li><a href="${referrer.url}" id="referrer">${msg("backTo",referrer.name)}</a></li></#if>
+ <li class="nav-item"><a class="nav-link" href="${url.logoutUrl}"><i class="fa fa-sign-out" aria-hidden="true"></i> ${msg("doSignOut")}</a></li>
+ </ul>
- <div class="container">
- <div class="bs-sidebar col-sm-3">
- <ul>
- <li class="<#if active=='account'>active</#if>"><a href="${url.accountUrl}">${msg("account")}</a></li>
- <#if features.passwordUpdateSupported><li class="<#if active=='password'>active</#if>"><a href="${url.passwordUrl}">${msg("password")}</a></li></#if>
- <li class="<#if active=='totp'>active</#if>"><a href="${url.totpUrl}">${msg("authenticator")}</a></li>
- <#if features.identityFederation><li class="<#if active=='social'>active</#if>"><a href="${url.socialUrl}">${msg("federatedIdentity")}</a></li></#if>
- <li class="<#if active=='sessions'>active</#if>"><a href="${url.sessionsUrl}">${msg("sessions")}</a></li>
- <li class="<#if active=='applications'>active</#if>"><a href="${url.applicationsUrl}">${msg("applications")}</a></li>
- <#if features.log><li class="<#if active=='log'>active</#if>"><a href="${url.logUrl}">${msg("log")}</a></li></#if>
- <#if realm.userManagedAccessAllowed && features.authorization><li class="<#if active=='authorization'>active</#if>"><a href="${url.resourceUrl}">${msg("myResources")}</a></li></#if>
- </ul>
+ </div>
</div>
+ </nav>
+</header>
- <div class="col-sm-9 content-area">
- <#if message?has_content>
- <div class="alert alert-${message.type}">
- <#if message.type=='success' ><span class="pficon pficon-ok"></span></#if>
- <#if message.type=='error' ><span class="pficon pficon-error-circle-o"></span></#if>
- <span class="kc-feedback-text">${kcSanitize(message.summary)?no_esc}</span>
- </div>
- </#if>
- <#nested "content">
+ <div class="container py-4">
+ <div class="row">
+ <div class="col-3 d-none">
+ <ul class="nav flex-column nav-pills">
+ <li class="nav-item"><a class="nav-link <#if active=='account'>active</#if>" href="${url.accountUrl}">${msg("account")}</a></li>
+ <#if features.passwordUpdateSupported><li class="nav-item"><a class="nav-link <#if active=='password'>active</#if>" href="${url.passwordUrl}">${msg("password")}</a></li></#if>
+ <li class="nav-item"><a class="nav-link <#if active=='totp'>active</#if>" href="${url.totpUrl}">${msg("authenticator")}</a></li>
+ <#if features.identityFederation><li class="nav-item"><a class="nav-link <#if active=='social'>active</#if>" href="${url.socialUrl}">${msg("federatedIdentity")}</a></li></#if>
+ <li class="nav-item"><a class="nav-link <#if active=='sessions'>active</#if>" href="${url.sessionsUrl}">${msg("sessions")}</a></li>
+ <li class="nav-item"><a class="nav-link <#if active=='applications'>active</#if>" href="${url.applicationsUrl}">${msg("applications")}</a></li>
+ <#if features.log><li class="nav-item"><a class="nav-link <#if active=='log'>active</#if>" href="${url.logUrl}">${msg("log")}</a></li></#if>
+ <#if realm.userManagedAccessAllowed && features.authorization><li class="nav-item"><a class="nav-link <#if active=='authorization'>active</#if>" href="${url.resourceUrl}">${msg("myResources")}</a></li></#if>
+ </ul>
+ </div>
+
+
+ <div class="col-12 content-area">
+ <#if message?has_content>
+ <div class="alert alert-${message.type}">
+ <#if message.type=='success' ><span class="pficon pficon-ok"></span></#if>
+ <#if message.type=='error' ><span class="pficon pficon-error-circle-o"></span></#if>
+ <span class="kc-feedback-text">${kcSanitize(message.summary)?no_esc}</span>
+ </div>
+ </#if>
+
+ <#nested "content">
+ </div>
</div>
</div>
+ <footer>
+ <div class="container">
+ <div class="row">
+ <div class="col-12 offset-md-2 col-md-7">
+ &nbsp;
+ </div>
+ <div class="col-xs-12 col-md-3">
+ <h3 class="footerhead">Questions or comments?</h3>
+ Please feel free to <a href="https://www.gentoo.org/inside-gentoo/contact/">contact us</a>.
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-3 col-md-2">
+ <ul class="footerlinks three-icons">
+ <li><a href="https://twitter.com/gentoo" title="@Gentoo on Twitter"><span class="fa fa-twitter fa-fw"></span></a></li>
+ <li><a href="https://www.facebook.com/gentoo.org" title="Gentoo on Facebook"><span class="fa fa-facebook fa-fw"></span></a></li>
+ <li></li>
+ </ul>
+ </div>
+ <div class="col-xs-10 col-sm-9 col-md-10">
+ <strong>&copy; 2001&ndash;2020 Gentoo Foundation, Inc.</strong><br>
+ <small>
+ Gentoo is a trademark of the Gentoo Foundation, Inc.
+ The contents of this document, unless otherwise expressly stated, are licensed under the
+ <a href="https://creativecommons.org/licenses/by-sa/4.0/" rel="license">CC-BY-SA-4.0</a> license.
+ The <a href="https://www.gentoo.org/inside-gentoo/foundation/name-logo-guidelines.html">Gentoo Name and Logo Usage Guidelines</a> apply.
+ </small>
+ </div>
+ </div>
+ </div>
+ </footer>
+
+<script src="https://assets.gentoo.org/tyrian/v2/jquery-3.3.slim.js"></script>
+<script src="https://assets.gentoo.org/tyrian/v2/popper.min.js"></script>
+<script src="https://assets.gentoo.org/tyrian/v2/bootstrap.min.js"></script>
+
+
</body>
</html>
</#macro> \ No newline at end of file
diff --git a/account/theme.properties b/account/theme.properties
index 1b3474b..603d1b2 100644
--- a/account/theme.properties
+++ b/account/theme.properties
@@ -1 +1,11 @@
-locales=ca,de,en,es,fr,it,ja,lt,nl,no,pl,pt-BR,ru,sk,sv,tr,zh-CN
+parent=base
+
+styles=css/account.css
+
+##### css classes for form buttons
+# main class used for all buttons
+kcButtonClass=btn
+# classes defining priority of the button - primary or default (there is typically only one priority button for the form)
+kcButtonPrimaryClass=btn-primary
+kcButtonDefaultClass=btn-outline-secondary
+
diff --git a/account/totp.ftl b/account/totp.ftl
index 987fe24..c112bec 100644
--- a/account/totp.ftl
+++ b/account/totp.ftl
@@ -3,7 +3,7 @@
<div class="row">
<div class="col-md-10">
- <h2>${msg("authenticatorTitle")}</h2>
+ <h1 class="first-header">${msg("authenticatorTitle")}</h1>
</div>
<#if totp.otpCredentials?size == 0>
<div class="col-md-2 subtitle">
@@ -51,59 +51,71 @@
<hr/>
- <ol>
- <li>
- <p>${msg("totpStep1")}</p>
+ <div class="d-flex justify-content-center flex-row">
- <ul>
- <#list totp.policy.supportedApplications as app>
- <li>${app}</li>
- </#list>
- </ul>
- </li>
-
- <#if mode?? && mode = "manual">
- <li>
- <p>${msg("totpManualStep2")}</p>
+ <div <#if mode?? && mode = "manual">class="d-flex align-items-center"</#if>>
+ <#if mode?? && mode = "manual">
<p><span id="kc-totp-secret-key">${totp.totpSecretEncoded}</span></p>
- <p><a href="${totp.qrUrl}" id="mode-barcode">${msg("totpScanBarcode")}</a></p>
- </li>
- <li>
- <p>${msg("totpManualStep3")}</p>
- <ul>
- <li id="kc-totp-type">${msg("totpType")}: ${msg("totp." + totp.policy.type)}</li>
- <li id="kc-totp-algorithm">${msg("totpAlgorithm")}: ${totp.policy.getAlgorithmKey()}</li>
- <li id="kc-totp-digits">${msg("totpDigits")}: ${totp.policy.digits}</li>
- <#if totp.policy.type = "totp">
- <li id="kc-totp-period">${msg("totpInterval")}: ${totp.policy.period}</li>
- <#elseif totp.policy.type = "hotp">
- <li id="kc-totp-counter">${msg("totpCounter")}: ${totp.policy.initialCounter}</li>
- </#if>
- </ul>
- </li>
- <#else>
- <li>
- <p>${msg("totpStep2")}</p>
- <p><img src="data:image/png;base64, ${totp.totpSecretQrCode}" alt="Figure: Barcode"></p>
- <p><a href="${totp.manualUrl}" id="mode-manual">${msg("totpUnableToScan")}</a></p>
- </li>
- </#if>
- <li>
- <p>${msg("totpStep3")}</p>
- <p>${msg("totpStep3DeviceName")}</p>
- </li>
- </ol>
+ <#else>
+ <p><img id="qr-code" src="data:image/png;base64, ${totp.totpSecretQrCode}" alt="Figure: Barcode"></p>
+ </#if>
+ </div>
+
+ <div class="">
+ <ol>
+ <li>
+ <p>${msg("totpStep1")}</p>
+
+ <ul>
+ <#list totp.policy.supportedApplications as app>
+ <li>${app}</li>
+ </#list>
+ </ul>
+ </li>
+
+ <#if mode?? && mode = "manual">
+ <li>
+ <p>${msg("totpManualStep2")}</p>
+ <p><a href="${totp.qrUrl}" id="mode-barcode">${msg("totpScanBarcode")}</a></p>
+ </li>
+ <li>
+ <p>${msg("totpManualStep3")}</p>
+ <ul>
+ <li id="kc-totp-type">${msg("totpType")}: ${msg("totp." + totp.policy.type)}</li>
+ <li id="kc-totp-algorithm">${msg("totpAlgorithm")}: ${totp.policy.getAlgorithmKey()}</li>
+ <li id="kc-totp-digits">${msg("totpDigits")}: ${totp.policy.digits}</li>
+ <#if totp.policy.type = "totp">
+ <li id="kc-totp-period">${msg("totpInterval")}: ${totp.policy.period}</li>
+ <#elseif totp.policy.type = "hotp">
+ <li id="kc-totp-counter">${msg("totpCounter")}: ${totp.policy.initialCounter}</li>
+ </#if>
+ </ul>
+ </li>
+ <#else>
+ <li>
+ <p>${msg("totpStep2")}</p>
+ <p><a href="${totp.manualUrl}" id="mode-manual">${msg("totpUnableToScan")}</a></p>
+ </li>
+ </#if>
+ <li>
+ <p>${msg("totpStep3")}</p>
+ <p>${msg("totpStep3DeviceName")}</p>
+ </li>
+ </ol>
+ </div>
+
+ </div>
<hr/>
<form action="${url.totpUrl}" class="form-horizontal" method="post">
<input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
- <div class="form-group">
- <div class="col-sm-2 col-md-2">
+ <div class="form-group row">
+ <div class="col-2 col-md-2">
<label for="totp" class="control-label">${msg("authenticatorCode")}</label> <span class="required">*</span>
</div>
- <div class="col-sm-10 col-md-10">
+ <div class="col-10 col-md-10">
<input type="text" class="form-control" id="totp" name="totp" autocomplete="off" autofocus>
<input type="hidden" id="totpSecret" name="totpSecret" value="${totp.totpSecret}"/>
</div>
@@ -111,18 +123,18 @@
</div>
- <div class="form-group" ${messagesPerField.printIfExists('userLabel',properties.kcFormGroupErrorClass!)}">
- <div class="col-sm-2 col-md-2">
+ <div class="form-group row" ${messagesPerField.printIfExists('userLabel',properties.kcFormGroupErrorClass!)}">
+ <div class="col-2 col-md-2">
<label for="userLabel" class="control-label">${msg("totpDeviceName")}</label> <#if totp.otpCredentials?size gte 1><span class="required">*</span></#if>
</div>
- <div class="col-sm-10 col-md-10">
+ <div class="col-10 col-md-10">
<input type="text" class="form-control" id="userLabel" name="userLabel" autocomplete="off">
</div>
</div>
<div class="form-group">
- <div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
+ <div id="kc-form-buttons" class="offset-md-2 col-md-10 px-0 submit">
<div class="">
<button type="submit"
class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}"
@@ -138,4 +150,40 @@
</form>
</#if>
+ <script>
+ function recolorImage(r, g, b, r2, g2, b2) {
+ var img1 = document.getElementById("qr-code");
+ var img = new Image();
+ img.width = img1.width;
+ img.height = img1.height;
+ img.src = img1.src;
+ var c = document.createElement('canvas');
+ var ctx = c.getContext("2d");
+ var w = img.width;
+ var h = img.height;
+
+ c.width = w;
+ c.height = h;
+
+ ctx.drawImage(img, 0, 0, w, h);
+ var imageData = ctx.getImageData(0, 0, w, h);
+
+ for (var i = 0; i < imageData.data.length; i += 4) {
+ if (imageData.data[i] == r && imageData.data[i + 1] == g && imageData.data[i + 2] == b) {
+ imageData.data[i] = r2;
+ imageData.data[i + 1] = g2;
+ imageData.data[i + 2] = b2;
+ }
+ }
+
+ ctx.putImageData(imageData, 0, 0);
+ img1.src = c.toDataURL('image/png');
+ }
+
+ window.addEventListener('load', (event) => {
+ recolorImage(255, 255, 255, 249, 249, 249);
+ });
+
+ </script>
+
</@layout.mainLayout>