diff --git a/package-lock.json b/package-lock.json index 52ae609e04..4e08d20699 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "file-saver": "^2.0.5", "flat": "^5.0.2", "i18next": "^21.6.16", + "i18next-http-backend": "^1.3.1", "lodash-es": "^4.17.21", "moment": "^2.29.3", "react": "^17.0.2", @@ -8599,6 +8600,22 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, + "node_modules/cross-fetch": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", + "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", + "dependencies": { + "node-fetch": "2.6.1" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -12384,6 +12401,14 @@ "@babel/runtime": "^7.17.2" } }, + "node_modules/i18next-http-backend": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.3.1.tgz", + "integrity": "sha512-o79n4GBBRpl20hByC+ne/S1UaSZ4iGAn59Hu2TEZGjN0WLB72L7WrM39Cshziyrssp6MQfdI8wjToU2Q6kpSvA==", + "dependencies": { + "cross-fetch": "3.1.4" + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -30477,6 +30502,21 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, + "cross-fetch": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", + "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", + "requires": { + "node-fetch": "2.6.1" + }, + "dependencies": { + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + } + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -33385,6 +33425,14 @@ "@babel/runtime": "^7.17.2" } }, + "i18next-http-backend": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.3.1.tgz", + "integrity": "sha512-o79n4GBBRpl20hByC+ne/S1UaSZ4iGAn59Hu2TEZGjN0WLB72L7WrM39Cshziyrssp6MQfdI8wjToU2Q6kpSvA==", + "requires": { + "cross-fetch": "3.1.4" + } + }, "iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", diff --git a/package.json b/package.json index 57a0ca6fc6..87d6bab666 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "file-saver": "^2.0.5", "flat": "^5.0.2", "i18next": "^21.6.16", + "i18next-http-backend": "^1.3.1", "lodash-es": "^4.17.21", "moment": "^2.29.3", "react": "^17.0.2", diff --git a/public/resources/ca/authentication-help.json b/public/resources/ca/authentication-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/ca/authentication-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/ca/authentication.json b/public/resources/ca/authentication.json new file mode 100644 index 0000000000..404a49165c --- /dev/null +++ b/public/resources/ca/authentication.json @@ -0,0 +1,7 @@ +{ + "attestationPreference": { + "none": "cap" + }, + "edit": "Edita", + "alias": "Àlies" +} \ No newline at end of file diff --git a/public/resources/ca/client-scopes-help.json b/public/resources/ca/client-scopes-help.json new file mode 100644 index 0000000000..ba33c3907e --- /dev/null +++ b/public/resources/ca/client-scopes-help.json @@ -0,0 +1,6 @@ +{ + "multiValued": "Indica si l''atribut suporta múltiples valors. Si està habilitat, la llista de tots els valors d''aquest atribut es fixarà com a reclamació. Si està deshabilitat, només el primer valor serà fixat com a reclamació.", + "tokenClaimName": "Nom del reclam a inserir en el testimoni. Pot ser un nom complet com ''address.street''. En aquest cas, es crearà un objecte JSON niat.", + "claimJsonType": "El tipus de JSON que hauria de fer-se servir per omplir la petició de JSON en el token. long, int, boolean i String són valors vàlids", + "protocolMapper": "Protocol." +} \ No newline at end of file diff --git a/public/resources/ca/client-scopes.json b/public/resources/ca/client-scopes.json new file mode 100644 index 0000000000..91fc78dbde --- /dev/null +++ b/public/resources/ca/client-scopes.json @@ -0,0 +1,6 @@ +{ + "protocol": "Protocol", + "type": "Tipus", + "realmRoles": "Rols de domini", + "clients": "Clients" +} \ No newline at end of file diff --git a/public/resources/ca/clients-help.json b/public/resources/ca/clients-help.json new file mode 100644 index 0000000000..79be8e8ab9 --- /dev/null +++ b/public/resources/ca/clients-help.json @@ -0,0 +1,41 @@ +{ + "clientType": "''OpenID connect'' permet als clients verificar la identitat de l''usuari final basat en l''autenticació realitzada per un servidor d''autorització. ''SAML'' habilita l''autenticació i autorització d''escenaris basats en web incloent cross-domain i single sign-on (SSO) i utilitza tokens de seguretat que contenen afirmacions per passar informació.", + "serviceAccount": "Permetre autenticar aquest client contra Keycloak i rebre un token d''accés dedicat per a aquest client.", + "rootURL": "URL arrel afegida a les URL relatives", + "validRedirectURIs": "Patró d''URI vàlida per a la qual un navegador pot sol·licitar la redirecció després d''un inici o tancament de sessió completat. Es permeten comodins simples p.ex. ''http://example.com/*''. També es poden indicar rutes relatives p.ex. ''/my/relative/path/*''. Les rutes relatives generaran un URI de redirecció fent servir el host i port de la petició. Per SAML, s''han de fixar patrons d''URI vàlids si vols confiar en l''URL del servei del consumidor indicada en la petició d''inici de sessió.", + "nameIdFormat": "El format de NameID que es farà servir per al títol", + "forceNameIdFormat": "Ignorar la petició de subjecte NameID i fer servir la configurada a la consola d''administració.", + "forcePostBinding": "Fer servir sempre POST per a les respostes", + "includeAuthnStatement": "Hauria d''incloure''s una declaració especificant el mètode i la marca de temps en la resposta d''inici de sessió?", + "signDocuments": "Hauria el domini de signar els documents SAML?", + "signAssertions": "Haurien de signar-se les assercions en documents SAML? Aquest ajust no és necessari si el document ja s''està signant.", + "signatureAlgorithm": "L''algorisme de signatura usat per signar els documents.", + "canonicalization": "Mètode de canonicalització per a les signatures XML", + "webOrigins": "Orígens CORS permesos. Per permetre tots els orígens d''URIs de redirecció vàlides afegeix ''+''. Per permetre tots els orígens afegeix ''*''.", + "homeURL": "URL per defecte per utilitzar quan el servidor d''autorització necessita redirigir o enviar de tornada al client.", + "adminURL": "URL a la interfície d''administració del client. Fixa aquest valor si el client suporta l''adaptador de REST. Aquesta API REST permet al servidor d''autenticació enviar al client polítiques de revocació i altres tasques administratives. Normalment es fixa a l''URL base del client.", + "clientId": "Indica l''identificador (ID) referenciat en URIs i tokens. Per exemple ''my-client''", + "clientName": "Indica el nom visible del client. Per exemple ''My Client''. També suporta claus per valors localitzats. Per exemple: ${my_client}", + "description": "Indica la descripció del client. Per exemple ''My Client for TimeSheets''. També suporta claus per a valors localitzats. Per exemple: ${my_client_description}", + "loginTheme": "Selecciona el tema per a les pàgines d''inici de sessió, OTP, permisos, registre i recordatori de contrasenya.", + "encryptAssertions": "Haurien de xifrar-se les afirmacions SAML amb la clau pública del client fent servir AES?", + "clientSignature": "Signarà el client les seves peticions i respostes SAML? I haurien de ser validades?", + "client-authenticator-type": "Client autenticador usat per autenticar aquest client contra el servidor Keycloak", + "nodeReRegistrationTimeout": "Indica el màxim interval de temps perquè els nodes del clúster registrats es tornin a registrar. Si el node del clúster no envia una petició de re-registre a Keycloak dins d''aquest interval, serà desregistrat de Keycloak", + "idpInitiatedSsoUrlName": "Nom del fragment de l''URL per referenciar al client quan vols un SSO iniciat per l''IDP. Deixant això buit desactiva els SSO iniciats per l''IDP. L''URL referenciada des del navegador serà: {server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}", + "idpInitiatedSsoRelayState": "Estat de retransmissió que vols enviar amb una petició SAML quan s''inicia un SSO iniciat per l''IDP", + "masterSamlProcessingUrl": "Si està configurada, aquesta URL es fara servir per a cada enllaç al proveïdor del servei del consumidor d''assercions i serveis de desconnexió únics. Pot ser sobreescrit de forma individual per a cada enllaç i servei en el punt final de configuració fina de SAML.", + "accessTokenLifespan": "Temps màxim abans que un token d''accés expiri. Es recomana que aquest valor sigui curt en relació al temps màxim de SSO", + "assertionConsumerServicePostBindingURL": "SAML POST Binding URL for the client''s assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.", + "assertionConsumerServiceRedirectBindingURL": "Assertion Consumer Service Redirect Binding URL", + "logoutServicePostBindingURL": "URL d''enllaç SAML POST per a la desconnexió única del client. Pots deixar-ho en blanc si estàs fent servir un enllaç diferent.", + "logoutServiceRedirectBindingURL": "URL d''enllaç SAML de redirecció per a la desconnexió única del client. Pots deixar-ho en blanc si estàs fent servir un enllaç diferent.", + "frontchannelLogout": "Quan està activat, la desconnexió requereix una redirecció del navegador cap al client. Quan no està activat, el servidor realitza una invovación de desconnexió en segon pla.", + "certificate": "Certificat de client per validar els JWT emesos per aquest client i signats amb la clau privada del client del teu magatzem de claus.", + "archiveFormat": "Format d''arxiu Java keystore o PKCS12", + "keyAlias": "Àlies de l''arxiu de la teva clau privada i certificat.", + "keyPassword": "Contrasenya per accedir a la clau privada continguda en l''arxiu", + "storePassword": "Contrasenya per accedir a l''arxiu", + "consentRequired": "Si està habilitat, els usuaris han de consentir l''accés del client.", + "fullScopeAllowed": "Permet deshabilitar totes les restriccions." +} \ No newline at end of file diff --git a/public/resources/ca/clients.json b/public/resources/ca/clients.json new file mode 100644 index 0000000000..8d5874afc2 --- /dev/null +++ b/public/resources/ca/clients.json @@ -0,0 +1,65 @@ +{ + "protocol": "Protocol", + "importClient": "Importar Client", + "webOrigins": "Orígens web", + "adminURL": "URL d''administració", + "formatOption": "Format", + "encryptAssertions": "Xifrar afirmacions", + "clientSignature": "Signatura de Client requerida", + "credentials": "Credencials", + "roles": "Rols", + "fullScopeAllowed": "Permet tots els àmbits", + "kc": { + "realm": { + "name": "Domini" + } + }, + "password": "Contrasenya", + "settings": "Ajustos", + "type": "Tipus", + "user": "Usuari", + "clientList": "Clients", + "realmRoles": "Rols de domini", + "frontchannelLogout": "Desconnexió en primer pla (Front Channel)", + "rootUrl": "URL arrel", + "validRedirectUri": "URIs de redirecció vàlides", + "idpInitiatedSsoRelayState": "Estat de retransmissió d''un SSO iniciat per l''IDP", + "masterSamlProcessingUrl": "URL principal de processament SAML", + "nameIdFormat": "Format de NameID", + "forceNameIdFormat": "Forçar format NameID", + "forcePostBinding": "Forçar enllaços POST", + "includeAuthnStatement": "Incloure AuthnStatement", + "signDocuments": "Signar documents", + "signAssertions": "Signar assercions", + "canonicalization": "Mètode de canonicalització", + "loginTheme": "Tema d''inici de sessió", + "clientAuthenticator": "Client autenticador", + "clientSecret": "Secret de Client", + "revocation": "Revocació", + "clustering": "Clustering", + "notBefore": "No abans de", + "setToNow": "Fixar a ara", + "addNode": "Afegir Node", + "push": "Push", + "clear": "Neteja", + "nodeReRegistrationTimeout": "Temps d''espera de re-registre de node", + "registeredClusterNodes": "Registrar nodes de clúster", + "nodeHost": "Host del node", + "lastRegistration": "Últim registre", + "testClusterAvailability": "Provar disponibilitat del clúster", + "registerNodeManually": "Registrar node manualment", + "fineGrainSamlEndpointConfig": "Fine Grain SAML Endpoint Configuration", + "assertionConsumerServicePostBindingURL": "Assertion Consumer Service POST Binding URL", + "assertionConsumerServiceRedirectBindingURL": "Assertion Consumer Service Redirect Binding URL", + "logoutServicePostBindingURL": "URL d''enllaç SAML POST per a la desconnexió", + "logoutServiceRedirectBindingURL": "URL d''enllaç SAML de redirecció per a la desconnexió", + "accessTokenLifespan": "Durada del token d''accés", + "certificate": "Certificat", + "generateNewKeys": "Generar noves claus", + "archiveFormat": "Format d''Arxiu", + "keyAlias": "Àlies de clau", + "keyPassword": "Contrasenya de la clau", + "storePassword": "Contrasenya del magatzem", + "importFile": "Arxiu d''Importació", + "mappers": "Assignadors" +} \ No newline at end of file diff --git a/public/resources/ca/common-help.json b/public/resources/ca/common-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/ca/common-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/ca/common.json b/public/resources/ca/common.json new file mode 100644 index 0000000000..36db26137b --- /dev/null +++ b/public/resources/ca/common.json @@ -0,0 +1,32 @@ +{ + "create": "Crea", + "save": "Desar", + "key": "Clau", + "export": "Exporta", + "download": "Descarrega", + "clear": "Neteja", + "on": "Activat", + "edit": "Edita", + "enabled": "Habilitat", + "none": "cap", + "description": "Descripció", + "type": "Tipus", + "category": "Categoria", + "clients": "Clients", + "realmRoles": "Rols de domini", + "sessions": "Sessions", + "mappers": "Assignadors", + "identityProviders": "Proveïdors d''identitat", + "settings": "Ajustos", + "times": { + "seconds": "Segons", + "minutes": "Minuts", + "hours": "Hores", + "days": "Dies" + }, + "credentials": "Credencials", + "clientId": "ID Client", + "id": "ID", + "mapperType": "Tipus d''assignador", + "password": "Contrasenya" +} \ No newline at end of file diff --git a/public/resources/ca/dashboard.json b/public/resources/ca/dashboard.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/ca/dashboard.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/ca/dynamic.json b/public/resources/ca/dynamic.json new file mode 100644 index 0000000000..ce4a692867 --- /dev/null +++ b/public/resources/ca/dynamic.json @@ -0,0 +1,47 @@ +{ + "usermodel": { + "prop": { + "label": "Propietat", + "tooltip": "Nom del mètode de propietat en la interfície UserModel. Per exemple, un valor de ''email'' faria referència al mètode UserModel.getEmail()." + }, + "attr": { + "label": "Atribut d''usuari", + "tooltip": "Nom de l''atribut d''usuari emmagatzemat que és el nom de l''atribut dins el map UserModel.attribute." + }, + "clientRoleMapping": { + "client": { + "label": "ID Client" + } + } + }, + "userSession": { + "modelNote": { + "label": "Nota sessió usuari", + "tooltip": "Nom de la nota emmagatzemada en la sessió d''usuari dins del mapa UserSessionModel.note" + } + }, + "multivalued": { + "label": "Valors múltiples", + "tooltip": "Indica si l''atribut suporta múltiples valors. Si està habilitat, la llista de tots els valors d''aquest atribut es fixarà com a reclamació. Si està deshabilitat, només el primer valor serà fixat com a reclamació." + }, + "selectRole": { + "label": "Selecciona rol", + "tooltip": "Introdueix el rol a la caixa de text de l''esquerra, o fes clic a aquest botó per navegar i buscar el rol que vols." + }, + "tokenClaimName": { + "label": "Nom de reclam del token", + "tooltip": "Nom del reclam a inserir en el testimoni. Pot ser un nom complet com ''address.street''. En aquest cas, es crearà un objecte JSON niat." + }, + "jsonType": { + "label": "Tipus JSON de reclamació", + "tooltip": "El tipus de JSON que hauria de fer-se servir per omplir la petició de JSON en el token. long, int, boolean i String són valors vàlids" + }, + "includeInIdToken": { + "label": "Afegir al token d''ID" + }, + "includeInAccessToken": { + "label": "Afegir al token d''accés", + "tooltip": "S''hauria d'afegir la identitat reclamada al token d''accés?" + }, + "name-id-format": "Format de NameID" +} \ No newline at end of file diff --git a/public/resources/ca/events.json b/public/resources/ca/events.json new file mode 100644 index 0000000000..06ddb65e76 --- /dev/null +++ b/public/resources/ca/events.json @@ -0,0 +1,4 @@ +{ + "user": "Usuari", + "realm": "Domini" +} \ No newline at end of file diff --git a/public/resources/ca/groups.json b/public/resources/ca/groups.json new file mode 100644 index 0000000000..1b6a79e574 --- /dev/null +++ b/public/resources/ca/groups.json @@ -0,0 +1,3 @@ +{ + "create": "Crea" +} \ No newline at end of file diff --git a/public/resources/ca/identity-providers-help.json b/public/resources/ca/identity-providers-help.json new file mode 100644 index 0000000000..9bd3014ecd --- /dev/null +++ b/public/resources/ca/identity-providers-help.json @@ -0,0 +1,28 @@ +{ + "redirectURI": "L''URI de redirecció usada per configurar el proveïdor d''identitat.", + "alias": "L''àlies que identifica de forma única un proveïdor d''identitat, es far servir també per construir la URI de redirecció.", + "clientId": "L''identificador del client registrat amb el proveïdor d''identitat.", + "clientSecret": "El secret del client registrat amb el proveïdor d''identitat.", + "discoveryEndpoint": "Importa metadades des d''un descriptor d''un proveïdor d''identitat (IDP) remot.", + "importConfig": "Importa metadades des d''un descriptor d''un proveïdor d''identitat (IDP) descarregat.", + "logoutUrl": "Punt de tancament de sessió per utilitzar en la desconnexió d''usuaris des d''un proveïdor d''identitat (IDP) extern.", + "backchannelLogout": "Does the external IDP support backchannel logout?", + "userInfoUrl": "L''URL d''informació d''usuari. Opcional.", + "issuer": "L''identificador de l''emissor per a l''emissor de la resposta. Si no s''indica, no es realitzarà cap validació.", + "scopes": "Els àmbits que s''enviaran quan es sol·liciti autorització. Pot ser una llista d''àmbits separats per espais. El valor per defecte és ''openid''.", + "validateSignature": "Habilitar/deshabilitar la validació de signatures de proveïdors d''identitat (IDP) externs", + "storeTokens": "Habilitar/deshabilitar si els tokens han de ser emmagatzemats després d''autenticar als usuaris.", + "storedTokensReadable": "Habilitar/deshabilitar si els nous usuaris poden llegir els tokens emmagatzemats. Això assigna el rol ''broker.read-token''.", + "trustEmail": "Si està habilitat, l''email rebut d''aquest proveïdor no es verificarà encara que la verificació estigui habilitada per al domini.", + "useEntityDescriptor": "Importar metadades des d''un descriptor d'entitat remot d''un IDP de SAML", + "samlEntityDescriptor": "Et permet carregar metadades d''un proveïdor d''identitat (IDP) extern d''un arxiu de coniguración o descarregar des d''una URL.", + "ssoServiceUrl": "L''URL que s''ha de fer servir per enviar peticions d''autenticació (SAML AuthnRequest).", + "singleLogoutServiceUrl": "L''URL que ha de fer-se servir per enviar peticions de desconnexió.", + "httpPostBindingAuthnRequest": "Indica si AuthnRequest ha de ser enviat usant HTTP-POST. Si no està activat es fa HTTP-REDIRECT.", + "wantAuthnRequestsSigned": "Indica si el proveïdor d''identitat espera rebre signades les AuthnRequest.", + "signatureAlgorithm": "L''algorisme de signatura usat per signar els documents.", + "forceAuthentication": "Indica si el proveïdor d''identitat ha d'autenticar en presentar directament les credencials en lloc de dependre d''un context de seguretat previ.", + "validateSignatures": "Habilitar/deshabilitar la validació de signatura en respostes SAML.", + "validatingX509Certs": "El certificat en format PEM que ha de fer-se servir per comprovar les signatures.", + "addIdpMapperName": "Nom de l''assignador." +} \ No newline at end of file diff --git a/public/resources/ca/identity-providers.json b/public/resources/ca/identity-providers.json new file mode 100644 index 0000000000..75343c26d3 --- /dev/null +++ b/public/resources/ca/identity-providers.json @@ -0,0 +1,35 @@ +{ + "addIdPMapper": "Afegeix assignador de proveïdor d''identitat", + "redirectURI": "URI de redirecció", + "clientId": "ID Client", + "clientSecret": "Secret de Client", + "alias": "Àlies", + "ssoServiceUrl": "URL de servei de connexió únic (SSO)", + "singleLogoutServiceUrl": "URL de servei de desconnexió únic", + "nameIdPolicyFormat": "Format de política NameID", + "unspecified": "no especificat", + "httpPostBindingResponse": "HTTP-POST enllaç de resposta", + "httpPostBindingAuthnRequest": "HTTP-POST per AuthnRequest", + "wantAuthnRequestsSigned": "Signar AuthnRequests", + "forceAuthentication": "Forçar autenticació", + "validatingX509Certs": "Validant certificat X509", + "authorizationUrl": "URL d''autorització", + "tokenUrl": "Token URL", + "logoutUrl": "URL de desconnexió", + "backchannelLogout": "Backchannel Logout", + "userInfoUrl": "URL d''informació d''usuari", + "issuer": "Emissor", + "prompt": "Prompt", + "prompts": { + "none": "cap", + "consent": "consentiment", + "login": "login" + }, + "validateSignature": "Validar signatures", + "storeTokens": "Emmagatzemar tokens", + "storedTokensReadable": "Tokens emmagatzemats llegibles", + "trustEmail": "Confiar en l''email", + "mapperType": "Tipus d''assignador", + "selectRole": "Selecciona rol", + "userAttribute": "Atribut d''usuari" +} \ No newline at end of file diff --git a/public/resources/ca/realm-settings-help.json b/public/resources/ca/realm-settings-help.json new file mode 100644 index 0000000000..4dde7e216e --- /dev/null +++ b/public/resources/ca/realm-settings-help.json @@ -0,0 +1,18 @@ +{ + "requireSsl": "És HTTP obligatori? ''cap'' significa que HTTPS no és obligatori per cap direcicón IP de client, ''peticions externes'' indica que localhost i les adreces IP privades poden accedir sense HTTPS, ''totes les peticions'' vol dir que HTTPS és obligatori per a totes les adreces IP.", + "accountTheme": "Selecciona el tema per a les pàgines de gestió del compte d''usuari.", + "adminConsoleTheme": "Selecciona el tema per a la consola d''administració.", + "emailTheme": "Selecciona el tema per als correus electrònics que són enviats pel servidor.", + "failureFactor": "Indica quants errors es permeten abans que es dispari una espera.", + "waitIncrementSeconds": "Quan s''ha arribat al llindar d''error, quant de temps ha d''estar un usuari bloquejat?", + "maxFailureWaitSeconds": "Temps màxim que un usuari queda bloquejat.", + "maxDeltaTimeSeconds": "Quan s''ha de reiniciar el comptador d''errors?", + "quickLoginCheckMilliSeconds": "Si ocorren errors de forma concurrent i molt ràpida, bloquejar a l''usuari.", + "minimumQuickLoginWaitSeconds": "Quant de temps s''ha d''esperar després d''un error en un intent ràpid d''identificació", + "ssoSessionIdle": "Temps màxim que una sessió pot estar inactiva abans que expiri. Els tokens i sessions de navegador són invalidades quan la sessió expira.", + "ssoSessionMax": "Temps màxim abans que una sessió expiri. Els tokens i sessions de navegador són invalidats quan una sessió expira.", + "offlineSessionIdle": "Temps màxim inactiu d''una sessió sense connexió abans que expiri. Necessites fer servi un token sense connexió per refrescar almenys una vegada dins d'aquest període, en un altre cas la sessió sense connexió expirarà.", + "revokeRefreshToken": "Si està activat els tokens d''actualització només poden usar-se una vegada. En un altre cas els tokens d''actualització no es revoquen quan s''utilitzen i poden ser usat múltiples vegades.", + "clientLoginTimeout": "Temps màxim que un client té per finalitzar el protocol d''obtenció del token d''accés. Hauria de ser normalment de l''ordre d''1 minut.", + "editUsername": "Si està habilitat, el nom d''usuari és editable, altrament és de només lectura." +} \ No newline at end of file diff --git a/public/resources/ca/realm-settings.json b/public/resources/ca/realm-settings.json new file mode 100644 index 0000000000..323edb5426 --- /dev/null +++ b/public/resources/ca/realm-settings.json @@ -0,0 +1,63 @@ +{ + "general": "General", + "login": "login", + "themes": "Temes", + "from": "Des de", + "host": "Host", + "port": "Port", + "enableSSL": "Habilitar SSL", + "enableStartTLS": "Habilitar StartTLS", + "username": "Usuari", + "password": "Contrasenya", + "keyAlias": "Àlies de clau", + "keyPassword": "Contrasenya de la clau", + "type": "Tipus", + "providerId": "ID", + "provider": "Proveïdor", + "certificate": "Certificat", + "userRegistration": "Registre d''usuari", + "userRegistrationHelpText": "Habilitar/deshabilitar la pàgina de registre. Un enllaç per al registre es mostrarà també a la pàgina d''inici de sessió.", + "rememberMe": "Mantenir connectat", + "rememberMeHelpText": "Mostra la casella de selecció en la pàgina d''inici de sessió per a permetre a l''usuari estar connectat entre reinicis del navegador fins que la sessió expiri.", + "emailAsUsername": "Email com a nom d''usuari", + "verifyEmail": "Verificar email", + "editUsername": "Edita el nom d''usuari", + "requireSsl": "Sol·licitar SSL", + "sslType": { + "all": "totes les peticions", + "external": "peticions externes", + "none": "cap" + }, + "loginTheme": "Tema d''inici de sessió", + "accountTheme": "Tema de compte", + "adminTheme": "Tema de consola d''administració", + "emailTheme": "Tema d''email", + "sessions": "Sessions", + "SSOSessionIdle": "Sessions SSO inactives", + "SSOSessionMax": "Temps màxim sessió SSO", + "offlineSessionIdle": "Inactivitat de sessió sense connexió", + "loginTimeout": "Temps màxim de desconnexió", + "loginActionTimeout": "Temps màxim d''acció en l''inici de sessió", + "revokeRefreshToken": "Revocar el token d''actualització", + "accessTokenLifespan": "Durada del token d''accés", + "clientLoginTimeout": "Temps màxim d''autenticació", + "clientProfileDescription": "Descripció", + "save": "Desar", + "tokens": "Tokens", + "supportedLocales": "Idiomes suportats", + "defaultLocale": "Idioma per defecte", + "user": "Usuari", + "validatorDialogColNames": { + "colName": "Nom de rol" + }, + "securityDefences": "Defenses de seguretat", + "headers": "Capçaleres", + "bruteForceDetection": "Detecció d''atacs per força bruta", + "xFrameOptions": "X-Frame-Options", + "contentSecurityPolicy": "Content-Security-Policy", + "failureFactor": "Nombre màxim d''errors d''inici de sessió", + "waitIncrementSeconds": "Increment d''espera", + "maxFailureWaitSeconds": "Espera màxima", + "maxDeltaTimeSeconds": "Reinici del comptador d''errors", + "minimumQuickLoginWaitSeconds": "Temps mínim entre errors de connexió ràpids" +} \ No newline at end of file diff --git a/public/resources/ca/realm.json b/public/resources/ca/realm.json new file mode 100644 index 0000000000..8802950057 --- /dev/null +++ b/public/resources/ca/realm.json @@ -0,0 +1,3 @@ +{ + "enabled": "Habilitat" +} \ No newline at end of file diff --git a/public/resources/ca/roles.json b/public/resources/ca/roles.json new file mode 100644 index 0000000000..b0c6faa3d9 --- /dev/null +++ b/public/resources/ca/roles.json @@ -0,0 +1,8 @@ +{ + "associatedRolesText": "Rols Associats", + "title": "Rols de domini", + "addRole": "Afegir rol", + "roleName": "Nom de rol", + "composite": "Compost", + "userName": "Usuari" +} \ No newline at end of file diff --git a/public/resources/ca/sessions.json b/public/resources/ca/sessions.json new file mode 100644 index 0000000000..0a1a833ffc --- /dev/null +++ b/public/resources/ca/sessions.json @@ -0,0 +1,10 @@ +{ + "title": "Sessions", + "lastAccess": "Últim Accés", + "revocation": "Revocació", + "notBefore": "No abans de", + "setToNow": "Fixar a ara", + "clear": "Neteja", + "push": "Push", + "none": "cap" +} \ No newline at end of file diff --git a/public/resources/ca/user-federation-help.json b/public/resources/ca/user-federation-help.json new file mode 100644 index 0000000000..0eb01bea25 --- /dev/null +++ b/public/resources/ca/user-federation-help.json @@ -0,0 +1,3 @@ +{ + "trustEmailHelp": "Si està habilitat, l''email rebut d''aquest proveïdor no es verificarà encara que la verificació estigui habilitada per al domini." +} \ No newline at end of file diff --git a/public/resources/ca/user-federation.json b/public/resources/ca/user-federation.json new file mode 100644 index 0000000000..6f573b8245 --- /dev/null +++ b/public/resources/ca/user-federation.json @@ -0,0 +1,5 @@ +{ + "enableStartTls": "Habilitar StartTLS", + "trustEmail": "Confiar en l''email", + "selectRole": "Selecciona rol" +} \ No newline at end of file diff --git a/public/resources/ca/users-help.json b/public/resources/ca/users-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/ca/users-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/ca/users.json b/public/resources/ca/users.json new file mode 100644 index 0000000000..69746fb044 --- /dev/null +++ b/public/resources/ca/users.json @@ -0,0 +1,10 @@ +{ + "username": "Usuari", + "verifyEmail": "Verificar email", + "save": "Desar", + "credentialType": "Tipus", + "password": "Contrasenya", + "hours": "Hores", + "minutes": "Minuts", + "seconds": "Segons" +} \ No newline at end of file diff --git a/public/resources/de/authentication-help.json b/public/resources/de/authentication-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/de/authentication-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/de/authentication.json b/public/resources/de/authentication.json new file mode 100644 index 0000000000..2dbee03084 --- /dev/null +++ b/public/resources/de/authentication.json @@ -0,0 +1,4 @@ +{ + "title": "Authentifizierung", + "edit": "Bearbeiten" +} \ No newline at end of file diff --git a/public/resources/de/client-scopes-help.json b/public/resources/de/client-scopes-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/de/client-scopes-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/de/client-scopes.json b/public/resources/de/client-scopes.json new file mode 100644 index 0000000000..527a96c09e --- /dev/null +++ b/public/resources/de/client-scopes.json @@ -0,0 +1,6 @@ +{ + "grantedClientScopes": "Gewährte Client-Scopes", + "type": "Typ", + "realmRoles": "Realm-Rollen", + "clients": "Clients" +} \ No newline at end of file diff --git a/public/resources/de/clients-help.json b/public/resources/de/clients-help.json new file mode 100644 index 0000000000..a7b1e39894 --- /dev/null +++ b/public/resources/de/clients-help.json @@ -0,0 +1,9 @@ +{ + "validRedirectURIs": "Gültiges URI-Muster, zu dem ein Browser nach einer erfolgreichen An- oder Abmeldung umleiten kann. Einfache Platzhalter sind zulässig, z. B. \"http://example.com/*\". Es kann auch ein relativer Pfad angegeben werden, z. B. /my/relative/path/*. Relative Pfade beziehen sich auf die Root URL des Clients, oder wenn keine angegeben ist, wird die Stamm-URL des Autorisierungsservers verwendet. Für SAML muss man gültige URI-Muster festlegen, wenn man sich auf die in die Anmeldeanforderung eingebettete URL des Verbraucherdienstes verlässt.", + "webOrigins": "Erlaubte CORS Origins. Um alle Origins der Valid Redirect URIs zu erlauben, fügen Sie ein '+' hinzu. Dabei wird der '*' Platzhalter nicht mit übernommen. Um alle Origins zu erlauben, geben Sie explizit einen Eintrag mit '*' an.", + "clientId": "Legt die Id fest, auf die in URI und Token verwiesen wird. Zum Beispiel 'my-client'. Bei SAML ist dies auch der erwartete Issuer-Wert von authn-Anfragen", + "clientName": "Legt den Anzeigenamen des Clients fest. Zum Beispiel 'My Client'. Unterstützt auch Keys für lokalisierte Werte. Zum Beispiel: ${my_client}", + "resetActions": "Liste von Aktionen, die der Benutzer ausführen soll, wenn er eine E-Mail zum Zurücksetzen des Passworts erhält. 'Verify email' sendet bem Benutzer eine E-Mail um seine E-Mail-Adresse zu verifizieren. 'Update profile' verlangt vom Benutzer, dass er seine Profil-Informationen eingibt. 'Update password' verlangt vom Benutzer, dass er ein neues Passwort definiert. 'Configure OTP' verlangt vom Benutzer, dass er einen mobilen Passwort-Generator aufsetzt.", + "lifespan": "Maximale Zeit in der die Aktion zugelassen ist.", + "permissionsEnabled": "Legt fest, ob feingranulare Berechtigungen für diese Rolle aktiv sein sollen. Wird diese Option deaktiviert, werden alle aktuell aufgesetzten Berechtigungen gelöscht." +} \ No newline at end of file diff --git a/public/resources/de/clients.json b/public/resources/de/clients.json new file mode 100644 index 0000000000..1188be2f40 --- /dev/null +++ b/public/resources/de/clients.json @@ -0,0 +1,25 @@ +{ + "copy": "Kopieren", + "webOrigins": "Web Origins", + "keys": "Keys", + "credentials": "Passwörter", + "roles": "Rollen", + "password": "Passwort", + "settings": "Einstellungen", + "type": "Typ", + "users": "Benutzer", + "user": "Benutzer", + "clientList": "Clients", + "created": "Erstellt", + "lastUpdated": "Zuletzt aktualisiert", + "authentication": "Authentifizierung", + "realmRoles": "Realm-Rollen", + "selectMethodType": { + "import": "Importieren" + }, + "clear": "Zurücksetzen", + "certificate": "Zertifikat", + "tokenLifespan": { + "expires": "Läuft ab in" + } +} \ No newline at end of file diff --git a/public/resources/de/common-help.json b/public/resources/de/common-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/de/common-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/de/common.json b/public/resources/de/common.json new file mode 100644 index 0000000000..5a9a95e43e --- /dev/null +++ b/public/resources/de/common.json @@ -0,0 +1,55 @@ +{ + "add": "Hinzufügen", + "create": "Erstellen", + "save": "Speichern", + "cancel": "Abbrechen", + "delete": "Löschen", + "remove": "Entfernen", + "key": "Key", + "value": "Wert", + "action": "Aktion", + "clear": "Zurücksetzen", + "edit": "Bearbeiten", + "enabled": "Aktiv", + "disable": "Deaktivieren", + "signOut": "Abmelden", + "manageAccount": "Konto verwalten", + "serverInfo": "Server-Info", + "description": "Beschreibung", + "type": "Typ", + "category": "Kategorie", + "manage": "Verwalten", + "clients": "Clients", + "realmRoles": "Realm-Rollen", + "users": "Benutzer", + "sessions": "Sessions", + "events": "Ereignisse", + "usersPermissionsHint": "Feingranulare Berechtigungen für alle Benutzer in diesem Realm. Es können verschiedene Einstellungen definiert werden, wer in diesem Realm berechtigt ist, Benutzer zu verwalten.", + "permissionsEnabled": "Berechtigungen aktiv", + "configure": "Konfigurieren", + "realmSettings": "Realm-Einstellungen", + "authentication": "Authentifizierung", + "settings": "Einstellungen", + "details": "Details", + "Sunday": "Sonntag", + "Monday": "Montag", + "Tuesday": "Dienstag", + "Wednesday": "Mittwoch", + "Thursday": "Donnerstag", + "Friday": "Freitag", + "Saturday": "Samstag", + "times": { + "seconds": "Sekunden", + "minutes": "Minuten", + "hours": "Stunden", + "days": "Tage" + }, + "attributes": "Attribute", + "credentials": "Passwörter", + "clientId": "Client-ID", + "leave": "Verlassen", + "password": "Passwort", + "passwordConfirmation": "Passwort bestätigen", + "temporaryPassword": "Temporär", + "temporaryPasswordHelpText": "Wenn eingeschaltet, ist der Benutzer beim nächsten Login aufgefordert, dass Passwort zu ändern." +} \ No newline at end of file diff --git a/public/resources/de/dashboard.json b/public/resources/de/dashboard.json new file mode 100644 index 0000000000..a68a9bede0 --- /dev/null +++ b/public/resources/de/dashboard.json @@ -0,0 +1,3 @@ +{ + "serverInfo": "Server-Info" +} \ No newline at end of file diff --git a/public/resources/de/dynamic.json b/public/resources/de/dynamic.json new file mode 100644 index 0000000000..92a36306ad --- /dev/null +++ b/public/resources/de/dynamic.json @@ -0,0 +1,9 @@ +{ + "usermodel": { + "clientRoleMapping": { + "client": { + "label": "Client-ID" + } + } + } +} \ No newline at end of file diff --git a/public/resources/de/events.json b/public/resources/de/events.json new file mode 100644 index 0000000000..186aa9aa01 --- /dev/null +++ b/public/resources/de/events.json @@ -0,0 +1,8 @@ +{ + "title": "Ereignisse", + "time": "Zeit", + "user": "Benutzer", + "email": "Email", + "ipAddress": "IP-Adresse", + "value": "Wert" +} \ No newline at end of file diff --git a/public/resources/de/groups.json b/public/resources/de/groups.json new file mode 100644 index 0000000000..5a874ab97f --- /dev/null +++ b/public/resources/de/groups.json @@ -0,0 +1,10 @@ +{ + "createGroup": "Gruppe erstellen", + "deleteGroup": "Gruppe löschen", + "members": "Mitglieder", + "create": "Erstellen", + "email": "Email", + "lastName": "Nachname", + "firstName": "Vorname", + "attributes": "Attribute" +} \ No newline at end of file diff --git a/public/resources/de/identity-providers-help.json b/public/resources/de/identity-providers-help.json new file mode 100644 index 0000000000..d0b417a7e8 --- /dev/null +++ b/public/resources/de/identity-providers-help.json @@ -0,0 +1,4 @@ +{ + "syncMode": "Standardsyncmodus für alle Mapper. Mögliche Werte sind: 'Legacy' um das alte Verhalten beizubehalten, 'Importieren' um den Nutzer einmalig zu importieren, 'Erzwingen' um den Nutzer immer zu importieren.", + "syncModeOverride": "Überschreibt den normalen Synchronisationsmodus des IDP für diesen Mapper. Were sind 'Legacy' um das alte Verhalten beizubehalten, 'Importieren' um den Nutzer einmalig zu importieren, 'Erzwingen' um den Nutzer immer zu updaten." +} \ No newline at end of file diff --git a/public/resources/de/identity-providers.json b/public/resources/de/identity-providers.json new file mode 100644 index 0000000000..e6a2f2562f --- /dev/null +++ b/public/resources/de/identity-providers.json @@ -0,0 +1,14 @@ +{ + "clientId": "Client-ID", + "endpoints": "Endpoints", + "email": "Email", + "logoutUrl": "Logout-URL", + "syncMode": "Synchronisationsmodus", + "syncModes": { + "inherit": "Standard erben", + "import": "Importieren", + "legacy": "Legacy", + "force": "Erzwingen" + }, + "syncModeOverride": "Überschriebene Synchronisation" +} \ No newline at end of file diff --git a/public/resources/de/realm-settings-help.json b/public/resources/de/realm-settings-help.json new file mode 100644 index 0000000000..5c39feac31 --- /dev/null +++ b/public/resources/de/realm-settings-help.json @@ -0,0 +1,5 @@ +{ + "requireSsl": "Ist HTTPS erforderlich? 'None' bedeutet, dass HTTPS für keine Client-IP-Adresse erforderlich ist. 'External requests' bedeutet, dass Localhost und private IP-Adressen ohne HTTPS zugreifen können. 'All requests' bedeutet, dass HTTPS für alle IP-Adressen erforderlich ist.", + "userManagedAccess": "Wenn aktiviert, können Benutzer ihre Ressourcen und Berechtigungen über die Account Management Console verwalten.", + "editUsername": "Wenn aktiv, kann der Benutzername editiert werden." +} \ No newline at end of file diff --git a/public/resources/de/realm-settings.json b/public/resources/de/realm-settings.json new file mode 100644 index 0000000000..81a21751e5 --- /dev/null +++ b/public/resources/de/realm-settings.json @@ -0,0 +1,51 @@ +{ + "events": "Ereignisse", + "email": "Email", + "from": "Von", + "host": "Host", + "port": "Port", + "authentication": "Authentifizierung", + "enableSSL": "SSL aktivieren", + "username": "Benutzername", + "password": "Passwort", + "keys": "Keys", + "active": "Aktiv", + "type": "Typ", + "certificate": "Zertifikat", + "userRegistration": "Benutzerregistrierung", + "userRegistrationHelpText": "Aktiviere/deaktiviere die Seite zur Benutzerregistrierung. Auf der Loginseite wird ein entsprechender Link angezeigt.", + "rememberMe": "Angemeldet bleiben", + "rememberMeHelpText": "Zeigt eine Auswahlbox auf der Loginseite, die es dem Benutzer erlaubt, zwischen Browser-Neustarts eingeloggt zu bleiben, bis die Session abläuft.", + "emailAsUsername": "E-Mail-Adresse als Benutzername", + "loginWithEmail": "Anmeldung mit E-Mail", + "loginWithEmailHelpText": "Erlaubt Benutzern, sich mit ihrer E-Mail-Adresse anzumelden.", + "verifyEmail": "E-Mail verifizieren", + "editUsername": "Benutzername editierbar", + "htmlDisplayName": "HTML-Anzeigename", + "endpoints": "Endpoints", + "localization": "Internationalisierung", + "sessions": "Sessions", + "clientProfileDescription": "Beschreibung", + "delete": "Löschen", + "save": "Speichern", + "attributes": "Attribute", + "status": "Status", + "supportedLocales": "Unterstützte Sprachen", + "user": "Benutzer", + "validatorDialogColNames": { + "colName": "Rollenname" + }, + "eventTypes": { + "LOGOUT": { + "name": "Ausloggen" + }, + "REGISTER": { + "name": "Registrieren" + }, + "RESET_PASSWORD": { + "name": "Passwort zurücksetzen" + } + }, + "defaultRoles": "Standardrollen", + "defaultGroups": "Standardgruppen" +} \ No newline at end of file diff --git a/public/resources/de/realm.json b/public/resources/de/realm.json new file mode 100644 index 0000000000..d02d657905 --- /dev/null +++ b/public/resources/de/realm.json @@ -0,0 +1,3 @@ +{ + "enabled": "Aktiv" +} \ No newline at end of file diff --git a/public/resources/de/roles.json b/public/resources/de/roles.json new file mode 100644 index 0000000000..968abe2b03 --- /dev/null +++ b/public/resources/de/roles.json @@ -0,0 +1,11 @@ +{ + "title": "Realm-Rollen", + "addRole": "Rolle hinzufügen", + "roleName": "Rollenname", + "addUser": "Benutzer hinzufügen", + "users": "Benutzer", + "userName": "Benutzername", + "email": "Email", + "lastName": "Nachname", + "firstName": "Vorname" +} \ No newline at end of file diff --git a/public/resources/de/sessions.json b/public/resources/de/sessions.json new file mode 100644 index 0000000000..aa41d9bfae --- /dev/null +++ b/public/resources/de/sessions.json @@ -0,0 +1,5 @@ +{ + "title": "Sessions", + "lastAccess": "Letzter Zugriff", + "clear": "Zurücksetzen" +} \ No newline at end of file diff --git a/public/resources/de/user-federation-help.json b/public/resources/de/user-federation-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/de/user-federation-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/de/user-federation.json b/public/resources/de/user-federation.json new file mode 100644 index 0000000000..4431d57120 --- /dev/null +++ b/public/resources/de/user-federation.json @@ -0,0 +1,3 @@ +{ + "unlinkUsers": "Benutzer entsperren" +} \ No newline at end of file diff --git a/public/resources/de/users-help.json b/public/resources/de/users-help.json new file mode 100644 index 0000000000..43793be195 --- /dev/null +++ b/public/resources/de/users-help.json @@ -0,0 +1,5 @@ +{ + "temporaryLocked": "Der Benutzer wurde vorübergehend wegen zuvieler ungültiger Loginversuche gesperrt.", + "emailVerified": "Wurde die E-Mail des Benutzers verifiziert?", + "requiredUserActions": "Verlangt eine Aktion wenn sich der Benutzer einloggt. 'E-Mail Verifizieren' sendet eine E-Mail an den Benutzer, um die Gültigkeit seiner E-Mailadresse zu prüfen. 'Profil aktualisieren' verlangt, dass Benutzer ihre persönlichen Angaben eingeben. 'Passwort aktualisieren' zwingt Benutzer ein neues Passwort zu setzen. 'OTP konfigurieren' zwingt Benutzer einen mobilen Passwort-Generator einzurichten (i.e. Google Authenticator)" +} \ No newline at end of file diff --git a/public/resources/de/users.json b/public/resources/de/users.json new file mode 100644 index 0000000000..39d18d6b14 --- /dev/null +++ b/public/resources/de/users.json @@ -0,0 +1,38 @@ +{ + "title": "Benutzer", + "join": "Beitreten", + "leave": "Verlassen", + "groupMembership": "Gruppen-Mitglied", + "addedGroupMembership": "Zur Gruppe hinzugefügt.", + "removedGroupMembership": "Aus Gruppe entfernt.", + "createdAt": "Erstellt am", + "username": "Benutzername", + "email": "Email", + "emailVerified": "E-Mail verifiziert", + "lastName": "Nachname", + "firstName": "Vorname", + "status": "Status", + "requiredUserActions": "Verlangte Benutzeraktionen", + "addUser": "Benutzer hinzufügen", + "deleteUser": "Benutzer löschen", + "verifyEmail": "E-Mail verifizieren", + "consents": "Einwilligungen", + "revoke": "Widerrufen", + "save": "Speichern", + "cancel": "Abbrechen", + "confirmPasswordDoesNotMatch": "Die Passwörter stimmen nicht überein.", + "credentialType": "Typ", + "password": "Passwort", + "passwordConfirmation": "Passwort bestätigen", + "deleteCredentialsConfirm": "Sind Sie sicher, dass Sie die Zugangsdaten löschen möchten?", + "deleteBtn": "Löschen", + "resetPassword": "Passwort zurücksetzen", + "showPasswordDataValue": "Wert", + "credentialResetBtn": "Zugang zurücksetzen", + "resetActions": "Zurücksetz-Aktionen", + "lifespan": "Läuft ab in", + "hours": "Stunden", + "minutes": "Minuten", + "seconds": "Sekunden", + "credentialResetConfirm": "E-Mail senden" +} \ No newline at end of file diff --git a/public/resources/en/attributes-group.json b/public/resources/en/attributes-group.json new file mode 100644 index 0000000000..3a8786e078 --- /dev/null +++ b/public/resources/en/attributes-group.json @@ -0,0 +1,27 @@ +{ + "createGroupText": "Create attributes group", + "editGroupText": "Edit attributes group", + "tableTitle": "Attributes groups", + "columnName": "Name", + "columnDisplayName": "Display name", + "columnDisplayDescription": "Display description", + "emptyStateMessage": "No attributes groups", + "emptyStateInstructions": "If you want to add an attributes group click the button below.", + "deleteDialogTitle": "Delete attribute group?", + "deleteDialogDescription": "Are you sure you want to permanently delete the attributes group <1>{{group}}?", + "deleteSuccess": "Attributes group deleted.", + "deleteError": "Could not delete user attributes group: {{error}}", + "nameField": "Name", + "nameHint": "A unique name for the group. This name will be used to reference the group when binding an attribute to a group.", + "displayHeaderField": "Display name", + "displayHeaderHint": "A user-friendly name for the group that should be used when rendering a group of attributes in user-facing forms. Supports keys for localized values as well. For example: ${profile.attribute.group.address}.", + "displayDescriptionField": "Display description", + "displayDescriptionHint": "A text that should be used as a tooltip when rendering user-facing forms.", + "annotationsText": "Annotations", + "addAnnotationText": "Add annotation", + "removeAnnotationText": "Remove annotation", + "keyPlaceholder": "Type a key", + "keyLabel": "Key", + "valuePlaceholder": "Type a value", + "valueLabel": "Value" +} \ No newline at end of file diff --git a/public/resources/en/authentication-help.json b/public/resources/en/authentication-help.json new file mode 100644 index 0000000000..7e563bbb81 --- /dev/null +++ b/public/resources/en/authentication-help.json @@ -0,0 +1,45 @@ +{ + "name": "Help text for the name of the new flow", + "description": "Help text for the description of the new flow", + "createFlow": "You can create a top level flow within this from", + "flowType": "What kind of form is it", + "topLevelFlowType": "What kind of top level flow is it? Type 'client' is used for authentication of clients (applications) when generic is for users and everything else", + "addExecution": "Execution can have a wide range of actions, from sending a reset email to validating an OTP", + "addSubFlow": "Sub-Flows can be either generic or form. The form type is used to construct a sub-flow that generates a single flow for the user. Sub-flows are a special type of execution that evaluate as successful depending on how the executions they contain evaluate.", + "alias": "Name of the configuration", + "otpType": "totp is Time-Based One Time Password. 'hotp' is a counter base one time password in which the server keeps a counter to hash against.", + "webAuthnPolicyRpEntityName": "Human-readable server name as WebAuthn Relying Party", + "otpHashAlgorithm": "What hashing algorithm should be used to generate the OTP.", + "otpPolicyDigits": "How many digits should the OTP have?", + "lookAhead": "How far ahead should the server look just in case the token generator and server are out of time sync or counter sync?", + "otpPolicyPeriod": "How many seconds should an OTP token be valid? Defaults to 30 seconds.", + "supportedActions": "Applications that are known to work with the current OTP policy", + "webauthnIntro": "What is this form used for?", + "webAuthnPolicyFormHelp": "Policy for WebAuthn authentication. This one will be used by 'WebAuthn Register' required action and 'WebAuthn Authenticator' authenticator. Typical usage is, when WebAuthn will be used for the two-factor authentication.", + "webAuthnPolicyPasswordlessFormHelp": "Policy for passwordless WebAuthn authentication. This one will be used by 'Webauthn Register Passwordless' required action and 'WebAuthn Passwordless Authenticator' authenticator. Typical usage is, when WebAuthn will be used as first-factor authentication. Having both 'WebAuthn Policy' and 'WebAuthn Passwordless Policy' allows to use WebAuthn as both first factor and second factor authenticator in the same realm.", + "webAuthnPolicySignatureAlgorithms": "What signature algorithms should be used for Authentication Assertion.", + "webAuthnPolicyRpId": "This is ID as WebAuthn Relying Party. It must be origin's effective domain.", + "webAuthnPolicyAttestationConveyancePreference": "Communicates to an authenticator the preference of how to generate an attestation statement.", + "webAuthnPolicyAuthenticatorAttachment": "Communicates to an authenticator an acceptable attachment pattern.", + "webAuthnPolicyRequireResidentKey": "It tells an authenticator create a public key credential as Resident Key or not.", + "webAuthnPolicyUserVerificationRequirement": "Communicates to an authenticator to confirm actually verifying a user.", + "webAuthnPolicyCreateTimeout": "Timeout value for creating user's public key credential in seconds. if set to 0, this timeout option is not adapted.", + "webAuthnPolicyAvoidSameAuthenticatorRegister": "Avoid registering the authenticator that has already been registered.", + "webAuthnPolicyAcceptableAaguids": "The list of AAGUID of which an authenticator can be registered.", + "passwordPolicies": { + "forceExpiredPasswordChange": "The number of days the password is valid before a new password is required.", + "hashIterations": "The number of times a password is hashed before storage or verification. Default: 27,500.", + "passwordHistory": "Prevents a recently used password from being reused.", + "passwordBlacklist": "Prevents the use of a password that is in a blacklist file.", + "regexPattern": "Requires that the password matches one or more defined regular expression patterns.", + "length": "The minimum number of characters required for the password.", + "notUsername": "The password cannot match the username.", + "notEmail": "The password cannot match the email address of the user.", + "specialChars": "The number of special characters required in the password string.", + "upperCase": "The number of uppercase letters required in the password string.", + "lowerCase": "The number of lowercase letters required in the password string.", + "digits": "The number of numerical digits required in the password string.", + "hashAlgorithm": "Applies a hashing algorithm to passwords, so they are not stored in clear text.", + "maxLength": "The maximum number of characters allowed in the password." + } +} \ No newline at end of file diff --git a/public/resources/en/authentication.json b/public/resources/en/authentication.json new file mode 100644 index 0000000000..ec0371a5e7 --- /dev/null +++ b/public/resources/en/authentication.json @@ -0,0 +1,144 @@ +{ + "title": "Authentication", + "authenticationExplain": "Placeholder for authentication explanation.", + "flows": "Flows", + "requiredActions": "Required actions", + "policies": "Policies", + "passwordPolicy": "Password policy", + "otpPolicy": "OTP Policy", + "webauthnPolicy": "Webauthn Policy", + "webauthnPasswordlessPolicy": "Webauthn Passwordless Policy", + "noPasswordPolicies": "No password policies", + "noPasswordPoliciesInstructions": "You haven't added any password policies to this realm. Add a policy to get started.", + "updatePasswordPolicySuccess": "Password policies successfully updated", + "updatePasswordPolicyError": "Could not update the password policies: '{{error}}'", + "webAuthnPolicyRpEntityName": "Relying party entity name", + "addPolicy": "Add policy", + "otpType": "OTP type", + "policyType": { + "totp": "Time based", + "hotp": "Counter based" + }, + "otpHashAlgorithm": "OTP hash algorithm", + "otpPolicyDigits": "Number of digits", + "lookAhead": "Look ahead window", + "otpPolicyPeriod": "OTP Token period", + "otpPolicyPeriodErrorHint": "Value needs to be between 1 second and 2 minutes", + "initialCounter": "Initial counter", + "initialCounterErrorHint": "Value needs to be between 1 and 120", + "supportedActions": "Supported actions", + "updateOtpSuccess": "OTP policy successfully updated", + "updateOtpError": "Could not update OTP policy: {{error}}", + "webAuthnPolicySignatureAlgorithms": "Signature algorithms", + "webAuthnPolicyRpId": "Relying party ID", + "webAuthnPolicyAttestationConveyancePreference": "Attestation conveyance preference", + "attestationPreference": { + "not specified": "Not specified", + "none": "None", + "indirect": "Indirect", + "direct": "Direct" + }, + "webAuthnPolicyAuthenticatorAttachment": "Authenticator Attachment", + "authenticatorAttachment": { + "not specified": "Not specified", + "platform": "Platform", + "cross-platform": "Cross platform" + }, + "webAuthnPolicyRequireResidentKey": "Require resident key", + "residentKey": { + "not specified": "Not specified", + "Yes": "Yes", + "No": "No" + }, + "webAuthnPolicyUserVerificationRequirement": "User verification requirement", + "userVerify": { + "not specified": "Not specified", + "required": "Required", + "preferred": "Preferred", + "discouraged": "Discouraged" + }, + "webAuthnPolicyCreateTimeout": "Timeout", + "webAuthnPolicyCreateTimeoutHint": "Timeout needs to be between 0 seconds and 8 hours", + "webAuthnPolicyAvoidSameAuthenticatorRegister": "Avoid same authenticator registration", + "webAuthnPolicyAcceptableAaguids": "Acceptable AAGUIDs", + "addAaguids": "Add AAGUID", + "webAuthnUpdateSuccess": "Updated webauthn policies successfully", + "webAuthnUpdateError": "Could not update webauthn policies due to {{error}}", + "flowName": "Flow name", + "searchForFlow": "Search for flow", + "usedBy": "Used by", + "buildIn": "Built-in", + "appliedByProviders": "Applied by the following providers", + "appliedByClients": "Applied by the following clients", + "specificProviders": "Specific providers", + "specificClients": "Specific clients", + "default": "Default", + "notInUse": "Not in use", + "duplicate": "Duplicate", + "bindFlow": "Bind flow", + "chooseBindingType": "Choose binding type", + "flow": { + "browserFlow": "Browser flow", + "registrationFlow": "Registration flow", + "directGrantFlow": "Direct grant flow", + "resetCredentialsFlow": "Reset credentials flow", + "clientAuthenticationFlow": "Client authentication flow" + }, + "editInfo": "Edit info", + "editFlow": "Edit flow", + "edit": "Edit", + "deleteConfirmFlow": "Delete flow?", + "deleteConfirmFlowMessage": "Are you sure you want to permanently delete the flow \"<1>{{flow}}\".", + "deleteFlowSuccess": "Flow successfully deleted", + "deleteFlowError": "Could not delete flow: {{error}}", + "duplicateFlow": "Duplicate flow", + "deleteConfirmExecution": "Delete execution?", + "deleteConfirmExecutionMessage": "Are you sure you want to permanently delete the execution \"<1>{{name}}\".", + "deleteExecutionSuccess": "Execution successfully deleted", + "deleteExecutionError": "Could not delete execution: {{error}}", + "updateFlowSuccess": "Flow successfully updated", + "updateFlowError": "Could not update flow: {{error}}", + "copyOf": "Copy of {{name}}", + "copyFlowSuccess": "Flow successfully duplicated", + "copyFlowError": "Could not duplicate flow: {{error}}", + "createFlow": "Create flow", + "flowType": "Flow type", + "flow-type": { + "basic-flow": "Generic", + "form-flow": "Form" + }, + "top-level-flow-type": { + "basic-flow": "Basic flow", + "client-flow": "Client flow" + }, + "flowCreatedSuccess": "Flow created", + "flowCreateError": "Could not create flow: {{error}}", + "flowDetails": "Flow details", + "tableView": "Table view", + "diagramView": "Diagram view", + "emptyExecution": "No steps", + "emptyExecutionInstructions": "You can start defining this flow by adding a sub-flow or an execution", + "addExecutionTitle": "Add an execution", + "addExecution": "Add execution", + "addSubFlowTitle": "Add a sub-flow", + "addSubFlow": "Add sub-flow", + "addCondition": "Add condition", + "addStep": "Add step", + "addStepTo": "Add step to {{name}}", + "steps": "Steps", + "requirement": "Requirement", + "requirements": { + "REQUIRED": "Required", + "ALTERNATIVE": "Alternative", + "DISABLED": "Disabled", + "CONDITIONAL": "Conditional" + }, + "executionConfig": "{{name}} config", + "alias": "Alias", + "configSaveSuccess": "Successfully saved the execution config", + "configSaveError": "Could not save the execution config: {{error}}", + "setAsDefaultAction": "Set as default action", + "disabledOff": "Disabled off", + "updatedRequiredActionSuccess": "Updated required action successfully", + "updatedRequiredActionError": "Could not update required action: {{error}}" +} \ No newline at end of file diff --git a/public/resources/en/client-scopes-help.json b/public/resources/en/client-scopes-help.json new file mode 100644 index 0000000000..9e72334a44 --- /dev/null +++ b/public/resources/en/client-scopes-help.json @@ -0,0 +1,18 @@ +{ + "name": "Name of the client scope. Must be unique in the realm. Name should not contain space characters as it is used as value of scope parameter", + "description": "Description of the client scope", + "protocol": "Which SSO protocol configuration is being supplied by this client scope", + "type": "Client scopes, which will be added as default scopes to each created client", + "displayOnConsentScreen": "If on, and this client scope is added to some client with consent required, the text specified by 'Consent Screen Text' will be displayed on consent screen. If off, this client scope will not be displayed on the consent screen", + "consentScreenText": "Text that will be shown on the consent screen when this client scope is added to some client with consent required. Defaults to name of client scope if it is not filled", + "includeInTokenScope": "If on, the name of this client scope will be added to the access token property 'scope' as well as to the Token Introspection Endpoint response. If off, this client scope will be omitted from the token and from the Token Introspection Endpoint response.", + "guiOrder": "Specify order of the provider in GUI (such as in Consent page) as integer", + "prefix": "A prefix for each Realm Role (optional).", + "multiValued": "Indicates if attribute supports multiple values. If true, the list of all values of this attribute will be set as claim. If false, just first value will be set as claim", + "tokenClaimName": "Name of the claim to insert into the token. This can be a fully qualified name like 'address.street'. In this case, a nested json object will be created. To prevent nesting and use dot literally, escape the dot with backslash (\\.).", + "claimJsonType": "JSON type that should be used to populate the json claim in the token. long, int, boolean, String and JSON are valid values.", + "protocolMapper": "Protocol...", + "mapperName": "Name of the mapper", + "role": "Role name you want changed. Click 'Select Role' button to browse roles, or just type it in the textbox. To reference an application role the syntax is appname.approle, i.e. myapp.myrole", + "newRoleName": "The new role name. The new name format corresponds to where in the access token the role will be mapped to. So, a new name of 'myapp.newname' will map the role to that position in the access token. A new name of 'newname' will map the role to the realm roles in the token." +} \ No newline at end of file diff --git a/public/resources/en/client-scopes.json b/public/resources/en/client-scopes.json new file mode 100644 index 0000000000..fddb78a276 --- /dev/null +++ b/public/resources/en/client-scopes.json @@ -0,0 +1,55 @@ +{ + "createClientScope": "Create client scope", + "clientScopeList": "Client scopes", + "grantedClientScopes": "Granted client scopes", + "clientScopeDetails": "Client scope details", + "clientScopeExplain": "Client scopes allow you to define a common set of protocol mappers and roles, which are shared between multiple clients.", + "searchFor": "Search for client scope", + "protocol": "Protocol", + "assignedType": "Assigned type", + "displayOrder": "Display order", + "type": "Type", + "deleteClientScope_one": "Delete client scope {{name}}", + "deleteClientScope_other": "Delete {{count}} client scopes", + "deleteConfirm": "Are you sure you want to delete this client scope", + "changeTypeTo": "Change type to", + "changeTypeIntro": "{{count}} selected client scopes will be changed to", + "clientScopeSuccess": "Scope mapping updated", + "clientScopeError": "Could not update scope mapping {{error}}", + "deletedSuccess": "The client scope has been deleted", + "deleteError": "Could not delete client scope: {{error}}", + "includeInTokenScope": "Include in token scope", + "realmRolePrefix": "Realm role prefix", + "userInfo": "User info", + "createSuccess": "Client scope created", + "createError": "Could not create client scope: '{{error}}'", + "updateSuccess": "Client scope updated", + "updateError": "Could not update client scope: '{{error}}'", + "addMapperExplain": "If you want more fine-grain control, you can create protocol mapper on this client", + "realmRoles": "Realm roles", + "newRoleName": "New role name", + "searchClientByName": "Search client by name", + "clients": "Clients", + "mapperCreateSuccess": "New mapping has been added", + "mapperCreateError": "Could not create mapping: {{error}}", + "fromPredefinedMapper": "From predefined mappers", + "byConfiguration": "By configuration", + "emptyBuiltInMappersInstructions": "All built in mappers were added to this client", + "emptySecondaryAction": "Configure a new mapper", + "displayOnConsentScreen": "Display on consent screen", + "consentScreenText": "Consent screen text", + "guiOrder": "Display Order", + "shouldBeANumber": "Should be a number", + "chooseAMapperType": "Choose a mapper type", + "addPredefinedMappers": "Add predefined mappers", + "predefinedMappingDescription": "Choose any of the predefined mappings from this table", + "mappingTable": "Table with predefined mapping", + "scope": "Scope", + "roleMappingUpdatedSuccess": "Role mapping updated", + "roleMappingUpdatedError": "Could not update role mapping {{error}}", + "protocolTypes": { + "all": "All", + "saml": "SAML", + "openid-connect": "openid-connect" + } +} \ No newline at end of file diff --git a/public/resources/en/clientScopes.json b/public/resources/en/clientScopes.json new file mode 100644 index 0000000000..cf1f0ed3fc --- /dev/null +++ b/public/resources/en/clientScopes.json @@ -0,0 +1,4 @@ +{ + "noRoles": "No roles for this client scope", + "noRolesInstructions": "You haven't created any roles for this client scope. Create a role to get started." +} \ No newline at end of file diff --git a/public/resources/en/clients-help.json b/public/resources/en/clients-help.json new file mode 100644 index 0000000000..578bf128bd --- /dev/null +++ b/public/resources/en/clients-help.json @@ -0,0 +1,172 @@ +{ + "enableDisable": "Disabled clients cannot initiate a login or have obtained access tokens.", + "clientType": "'OpenID Connect' allows Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server.'SAML' enables web-based authentication and authorization scenarios including cross-domain single sign-on (SSO) and uses security tokens containing assertions to pass information.", + "serviceAccount": "Allows you to authenticate this client to Keycloak and retrieve access token dedicated to this client. In terms of OAuth2 specification, this enables support of 'Client Credentials Grant' for this client.", + "manageServiceAccountUser": "To manage detail and group mappings, click on the username <1>{{link}}", + "authentication": "This defines the type of the OIDC client. When it's ON, the OIDC type is set to confidential access type. When it's OFF, it is set to public access type", + "authorization": "Enable/Disable fine-grained authorization support for a client", + "authDetails": "Export and download all resource settings for this resource server.", + "directAccess": "This enables support for Direct Access Grants, which means that client has access to username/password of user and exchange it directly with Keycloak server for access token. In terms of OAuth2 specification, this enables support of 'Resource Owner Password Credentials Grant' for this client.", + "standardFlow": "This enables standard OpenID Connect redirect based authentication with authorization code. In terms of OpenID Connect or OAuth2 specifications, this enables support of 'Authorization Code Flow' for this client.", + "implicitFlow": "This enables support for OpenID Connect redirect based authentication without authorization code. In terms of OpenID Connect or OAuth2 specifications, this enables support of 'Implicit Flow' for this client.", + "oauthDeviceAuthorizationGrant": "This enables support for OAuth 2.0 Device Authorization Grant, which means that client is an application on device that has limited input capabilities or lack a suitable browser.", + "oidcCibaGrant": "This enables support for OIDC CIBA Grant, which means that the user is authenticated via some external authentication device instead of the user's browser.", + "rootURL": "Root URL appended to relative URLs", + "validRedirectURIs": "Valid URI pattern a browser can redirect to after a successful login or logout. Simple wildcards are allowed such as 'http://example.com/*'. Relative path can be specified too such as /my/relative/path/*. Relative paths are relative to the client root URL, or if none is specified the auth server root URL is used. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.", + "nameIdFormat": "The name ID format to use for the subject.", + "alwaysDisplayInConsole": "Always list this client in the Account Console, even if the user does not have an active session.", + "forceNameIdFormat": "Ignore requested NameID subject format and use admin console configured one.", + "forcePostBinding": "Always use POST binding for responses.", + "forceArtifactBinding": "Should response messages be returned to the client through the SAML ARTIFACT binding system?", + "includeAuthnStatement": "Should a statement specifying the method and timestamp be included in login responses?", + "includeOneTimeUseCondition": "Should a OneTimeUse Condition be included in login responses?", + "optimizeLookup": "When signing SAML documents in REDIRECT binding for SP that is secured by Keycloak adapter, should the ID of the signing key be included in SAML protocol message in element? This optimizes validation of the signature as the validating party uses a single key instead of trying every known key for validation.", + "signDocuments": "Should SAML documents be signed by the realm?", + "signAssertions": "Should assertions inside SAML documents be signed? This setting is not needed if document is already being signed.", + "signatureAlgorithm": "The signature algorithm to use to sign documents.", + "signatureKeyName": "Signed SAML documents contain identification of signing key in KeyName element. For Keycloak / RH-SSO counterparty, use KEY_ID, for MS AD FS use CERT_SUBJECT, for others check and use NONE if no other option works.", + "canonicalization": "Canonicalization Method for XML signatures.", + "webOrigins": "Allowed CORS origins. To permit all origins of Valid Redirect URIs, add '+'. This does not include the '*' wildcard though. To permit all origins, explicitly add '*'.", + "homeURL": "Default URL to use when the auth server needs to redirect or link back to the client.", + "adminURL": "URL to the admin interface of the client. Set this if the client supports the adapter REST API. This REST API allows the auth server to push revocation policies and other administrative tasks. Usually this is set to the base URL of the client.", + "client": "Select the client making this authorization request. If not provided, authorization requests would be done based on the client you are in.", + "clientId": "Specifies ID referenced in URI and tokens. For example 'my-client'. For SAML this is also the expected issuer value from authn requests", + "selectUser": "Select a user whose identity is going to be used to query permissions from the server.", + "roles": "Select the roles you want to associate with the selected user.", + "contextualAttributes": "Any attribute provided by a running environment or execution context.", + "resourceType": "Specifies that this permission must be applied to all resource instances of a given type.", + "applyToResourceType": "Specifies if this permission should be applied to all resources with a given type. In this case, this permission will be evaluated for all instances of a given resource type.", + "resources": "Specifies that this permission must be applied to a specific resource instance.", + "scopesSelect": "Specifies that this permission must be applied to one or more scopes.", + "clientName": "Specifies display name of the client. For example 'My Client'. Supports keys for localized values as well. For example: ${my_client}", + "description": "Specifies description of the client. For example 'My Client for TimeSheets'. Supports keys for localized values as well. For example: ${my_client_description}", + "loginTheme": "Select theme for login, OTP, grant, registration, and forgot password pages.", + "encryptAssertions": "Should SAML assertions be encrypted with client's public key using AES?", + "clientSignature": "Will the client sign their saml requests and responses? And should they be validated?", + "downloadType": "this is information about the download type", + "details": "this is information about the details", + "createToken": "An initial access token can only be used to create clients", + "expiration": "Specifies how long the token should be valid", + "count": "Specifies how many clients can be created using the token", + "client-authenticator-type": "Client Authenticator used for authentication of this client against Keycloak server", + "registration-access-token": "The registration access token provides access for clients to the client registration service.", + "signature-algorithm": "JWA algorithm, which the client needs to use when signing a JWT for authentication. If left blank, the client is allowed to use any algorithm.", + "allowRegexComparison": "If OFF, then the Subject DN from given client certificate must exactly match the given DN from the 'Subject DN' property as described in the RFC8705 specification. The Subject DN can be in the RFC2553 or RFC1779 format. If ON, then the Subject DN from given client certificate should match regex specified by 'Subject DN' property.", + "subject": "A regular expression for validating Subject DN in the Client Certificate. Use \"(.*?)(?:$)\" to match all kind of expressions.", + "evaluateExplain": "This page allows you to see all protocol mappers and role scope mappings", + "effectiveProtocolMappers": "Contains all default client scopes and selected optional scopes. All protocol mappers and role scope mappings of all those client scopes will be used when generating access token issued for your client", + "effectiveRoleScopeMappings": "Selected Optional Client Scopes, which will be used when issuing access token for this client. You can see above what value of OAuth Scope Parameter needs to be used when you want to have these optional client scopes applied when the initial OpenID Connect Authentication request will be sent from your client adapter", + "generatedAccessToken": "See the example access token, which will be generated and sent to the client when selected user is authenticated. You can see claims and roles that the token will contain based on the effective protocol mappers and role scope mappings and also based on the claims/roles assigned to user himself", + "generatedIdToken": "See the example ID Token, which will be generated and sent to the client when selected user is authenticated. You can see claims and roles that the token will contain based on the effective protocol mappers and role scope mappings and also based on the claims/roles assigned to user himself", + "generatedUserInfo": "See the example User Info, which will be provided by the User Info Endpoint", + "scopeParameter": "You can copy/paste this value of scope parameter and use it in initial OpenID Connect Authentication Request sent from this client adapter. Default client scopes and selected optional client scopes will be used when generating token issued for this client", + "user": "Optionally select user, for whom the example access token will be generated. If you do not select a user, example access token will not be generated during evaluation", + "notBefore": "Revoke any tokens issued before this time for this client. To push the policy, you should set an effective admin URL in the Settings tab first.", + "notBeforeIntro": "In order to successfully push a revocation policy to the client, you need to set an Admin URL under the <1>Settings tab for this client first", + "notBeforeTooltip": "The admin URL should be set in the Settings tab first.", + "nodeReRegistrationTimeout": "Interval to specify max time for registered clients cluster nodes to re-register. If cluster node will not send re-registration request to Keycloak within this time, it will be unregistered from Keycloak", + "fineGrainOpenIdConnectConfiguration": "This section is used to configure advanced settings of this client related to OpenID Connect protocol.", + "fineGrainSamlEndpointConfig": "This section to configure exact URLs for Assertion Consumer and Single Logout Service.", + "logoUrl": "URL that references a logo for the Client application", + "policyUrl": "URL that the Relying Party Client provides to the End-User to read about the how the profile data will be used", + "termsOfServiceUrl": "URL that the Relying Party Client provides to the End-User to read about the Relying Party's terms of service", + "accessTokenSignatureAlgorithm": "JWA algorithm used for signing access tokens.", + "idTokenSignatureAlgorithm": "JWA algorithm used for signing ID tokens.", + "idTokenEncryptionKeyManagementAlgorithm": "JWA Algorithm used for key management in encrypting ID tokens. This option is needed if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.", + "idTokenEncryptionContentEncryptionAlgorithm": "JWA Algorithm used for content encryption in encrypting ID tokens. This option is needed just if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.", + "userInfoSignedResponseAlgorithm": "JWA algorithm used for signed User Info Endpoint response. If set to 'unsigned', User Info Response won't be signed and will be returned in application/json format.", + "requestObjectSignatureAlgorithm": "JWA algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', Request object can be signed by any algorithm (including 'none' ).", + "requestObjectRequired": "Specifies if the client needs to provide a request object with their authorization requests, and what method they can use for this. If set to \"not required\", providing a request object is optional. In all other cases, providing a request object is mandatory. If set to \"request\", the request object must be provided by value. If set to \"request_uri\", the request object must be provided by reference. If set to \"request or request_uri\", either method can be used.", + "requestObjectEncryption": "JWE algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', encryption is optional and any algorithm is allowed.", + "requestObjectEncoding": "JWE algorithm, which client needs to use when encrypting the content of the OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', any algorithm is allowed.", + "validRequestURIs": "List of valid URIs, which can be used as values of 'request_uri' parameter during OpenID Connect authentication request. There is support for the same capabilities like for Valid Redirect URIs. For example wildcards or relative paths.", + "idpInitiatedSsoUrlName": "URL fragment name to reference client when you want to do IDP Initiated SSO. Leaving this empty will disable IDP Initiated SSO. The URL you will reference from your browser will be: {server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}", + "idpInitiatedSsoRelayState": "Relay state you want to send with SAML request when you want to do IDP Initiated SSO.", + "masterSamlProcessingUrl": "If configured, this URL will be used for every binding to both the SP's Assertion Consumer and Single Logout Services. This can be individually overridden for each binding and service in the Fine Grain SAML Endpoint Configuration.", + "authorizationSignedResponseAlg": "JWA algorithm used for signing authorization response tokens when the response mode is jwt.", + "authorizationEncryptedResponseAlg": "JWA Algorithm used for key management in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.", + "authorizationEncryptedResponseEnc": "JWA Algorithm used for content encryption in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.", + "openIdConnectCompatibilityModes": "This section is used to configure settings for backward compatibility with older OpenID Connect / OAuth 2 adaptors. It's useful especially if your client uses older version of Keycloak / RH-SSO adapter.", + "excludeSessionStateFromAuthenticationResponse": "If this is on, the parameter 'session_state' will not be included in OpenID Connect Authentication Response. It is useful if your client uses older OIDC / OAuth2 adapter, which does not support 'session_state' parameter.", + "useRefreshTokens": "If this is on, a refresh_token will be created and added to the token response. If this is off then no refresh_token will be generated.", + "useRefreshTokenForClientCredentialsGrant": "If this is on, a refresh_token will be created and added to the token response if the client_credentials grant is used. The OAuth 2.0 RFC6749 Section 4.4.3 states that a refresh_token should not be generated when client_credentials grant is used. If this is off then no refresh_token will be generated and the associated user session will be removed.", + "advancedSettingsOpenid-connect": "This section is used to configure advanced settings of this client related to OpenID Connect protocol", + "advancedSettingsSaml": "This section is used to configure advanced settings of this client", + "assertionLifespan": "Lifespan set in the SAML assertion conditions. After that time the assertion will be invalid. The \"SessionNotOnOrAfter\" attribute is not modified and continue using the \"SSO Session Max\" time defined at realm level.", + "accessTokenLifespan": "Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout.", + "oAuthMutual": "This enables support for OAuth 2.0 Mutual TLS Certificate Bound Access Tokens, which means that keycloak bind an access token and a refresh token with a X.509 certificate of a token requesting client exchanged in mutual TLS between keycloak's Token Endpoint and this client. These tokens can be treated as Holder-of-Key tokens instead of bearer tokens.", + "keyForCodeExchange": "Choose which code challenge method for PKCE is used. If not specified, keycloak does not applies PKCE to a client unless the client sends an authorization request with appropriate code challenge and code exchange method.", + "pushedAuthorizationRequestRequired": "Boolean parameter indicating whether the authorization server accepts authorization request data only via the pushed authorization request method.", + "acrToLoAMapping": "Define which ACR (Authentication Context Class Reference) value is mapped to which LoA (Level of Authentication). The ACR can be any value, whereas the LoA must be numeric.", + "assertionConsumerServicePostBindingURL": "SAML POST Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.", + "assertionConsumerServiceRedirectBindingURL": "SAML Redirect Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.", + "logoutServicePostBindingURL": "SAML POST Binding URL for the client's single logout service. You can leave this blank if you are using a different binding", + "logoutServiceRedirectBindingURL": "SAML Redirect Binding URL for the client's single logout service. You can leave this blank if you are using a different binding.", + "logoutServiceArtifactBindingUrl": "SAML ARTIFACT Binding URL for the client's single logout service. You can leave this blank if you are using a different binding.", + "artifactBindingUrl": "URL to send the HTTP ARTIFACT messages to. You can leave this blank if you are using a different binding. This value should be set when forcing ARTIFACT binding together with IdP initiated login.", + "frontchannelLogout": "When true, logout requires a browser redirect to client. When false, server performs a background invocation for logout.", + "frontchannelLogoutUrl": "URL that will cause the client to log itself out when a logout request is sent to this realm (via end_session_endpoint). If not provided, it defaults to the base url.", + "backchannelLogoutUrl": "URL that will cause the client to log itself out when a logout request is sent to this realm (via end_session_endpoint). If omitted, no logout request will be sent to the client is this case.", + "backchannelLogoutSessionRequired": "Specifying whether a sid (session ID) Claim is included in the Logout Token when the Backchannel Logout URL is used.", + "backchannelLogoutRevokeOfflineSessions": "Specifying whether a \"revoke_offline_access\" event is included in the Logout Token when the Backchannel Logout URL is used. Keycloak will revoke offline sessions when receiving a Logout Token with this event.", + "artifactResolutionService": "SAML Artifact resolution service for the client. This is the endpoint to which Keycloak will send a SOAP ArtifactResolve message. You can leave this blank if you do not have a URL for this binding.", + "authenticationOverrides": "Override realm authentication flow bindings.", + "browserFlow": "Select the flow you want to use for browser authentication.", + "directGrant": "Select the flow you want to use for direct grant authentication.", + "useJwksUrl": "If the switch is on, client public keys will be downloaded from given JWKS URL. This allows great flexibility because new keys will be always re-downloaded again when client generates new keypair. If the switch is off, public key (or certificate) from the Keycloak DB is used, so when client keypair changes, you always need to import new key (or certificate) to the Keycloak DB as well.", + "certificate": "Client Certificate for validate JWT issued by client and signed by Client private key from your keystore.", + "jwksUrl": "URL where client keys in JWK format are stored. See JWK specification for more details. If you use Keycloak client adapter with \"jwt\" credential, you can use URL of your app with '/k_jwks' suffix. For example 'http://www.myhost.com/myapp/k_jwks' .", + "generateKeysDescription": "If you generate new keys, you can download the keystore with the private key automatically and save it on your client's side. Keycloak server will save just the certificate and public key, but not the private key.", + "archiveFormat": "Java keystore or PKCS12 archive format.", + "keyAlias": "Archive alias for your private key and certificate.", + "keyPassword": "Password to access the private key in the archive", + "storePassword": "Password to access the archive itself", + "consentRequired": "If enabled, users have to consent to client access.", + "displayOnClient": "Applicable only if 'Consent Required' is on for this client. If this switch is off, the consent screen will contain just the consents corresponding to configured client scopes. If on, there will be also one item on the consent screen about this client itself.", + "consentScreenText": "Applicable only if 'Display Client On Consent Screen' is on for this client. Contains the text which will be on the consent screen about permissions specific just for this client.", + "import": "Import a JSON file containing authorization settings for this resource server.", + "policyEnforcementMode": "The policy enforcement mode dictates how policies are enforced when evaluating authorization requests. 'Enforcing' means requests are denied by default even when there is no policy associated with a given resource. 'Permissive' means requests are allowed even when there is no policy associated with a given resource. 'Disabled' completely disables the evaluation of policies and allows access to any resource.", + "decisionStrategy": "The decision strategy dictates how permissions are evaluated and how a final decision is obtained. 'Affirmative' means that at least one permission must evaluate to a positive decision in order to grant access to a resource and its scopes. 'Unanimous' means that all permissions must evaluate to a positive decision in order for the final decision to be also positive.", + "allowRemoteResourceManagement": "Should resources be managed remotely by the resource server? If false, resources can be managed only from this admin console.", + "resourceName": "A unique name for this resource. The name can be used to uniquely identify a resource, useful when querying for a specific resource.", + "displayName": "A unique name for this resource. The name can be used to uniquely identify a resource, useful when querying for a specific resource.", + "type": "The type of this resource. It can be used to group different resource instances with the same type.", + "uris": "Set of URIs which are protected by resource.", + "scopes": "The scopes associated with this resource.", + "dedicatedScopeExplain": "This is a client scope which includes the dedicated mappers and scope", + "fullScopeAllowed": "Allows you to disable all restrictions.", + "iconUri": "A URI pointing to an icon.", + "ownerManagedAccess": "If enabled, the access to this resource can be managed by the resource owner.", + "resourceAttribute": "The attributes associated wth the resource.", + "resetActions": "Set of actions to execute when sending the user a Reset Actions Email. 'Verify email' sends an email to the user to verify their email address. 'Update profile' requires user to enter in new personal information. 'Update password' requires user to enter in a new password. 'Configure OTP' requires setup of a mobile password generator.", + "lifespan": "Maximum time before the action permit expires.", + "scopeName": "A unique name for this scope. The name can be used to uniquely identify a scope, useful when querying for a specific scope.", + "scopeDisplayName": "A unique name for this scope. The name can be used to uniquely identify a scope, useful when querying for a specific scope.", + "policy-name": "The name of this policy.", + "policy-description": "A description for this policy.", + "policyDecisionStagey": "The decision strategy dictates how the policies associated with a given permission are evaluated and how a final decision is obtained. 'Affirmative' means that at least one policy must evaluate to a positive decision in order for the final decision to be also positive. 'Unanimous' means that all policies must evaluate to a positive decision in order for the final decision to be also positive. 'Consensus' means that the number of positive decisions must be greater than the number of negative decisions. If the number of positive and negative is the same, the final decision will be negative.", + "applyPolicy": "Specifies all the policies that must be applied to the scopes defined by this policy or permission.", + "policyClient": "Specifies which client(s) are allowed by this policy.", + "groupsClaim": "If defined, the policy will fetch user's groups from the given claim within an access token or ID token representing the identity asking permissions. If not defined, user's groups are obtained from your realm configuration.", + "policyGroups": "Specifies which user(s) are allowed by this policy.", + "targetClaim": "Specifies the target claim which the policy will fetch.", + "regexPattern": "Specifies the regex pattern.", + "policyRoles": "Specifies the client roles allowed by this policy.", + "startTime": "Defines the time before which the policy MUST NOT be granted. Only granted if current date/time is after or equal to this value.", + "expireTime": "Defines the time after which the policy MUST NOT be granted. Only granted if current date/time is before or equal to this value.", + "month": "Defines the month which the policy MUST be granted. You can also provide a range by filling the second field. In this case, permission is granted only if current month is between or equal to the two values you provided.", + "dayMonth": "Defines the day of month when the policy MUST be granted. You can also provide a range by filling the second field. In this case, permission is granted only if current day of month is between or equal to the two values you provided.", + "hour": "Defines the hour when the policy MUST be granted. You can also provide a range by filling the second field. In this case, permission is granted only if current hour is between or equal to the two values you provided.", + "minute": "Defines the minute when the policy MUST be granted. You can also provide a range by filling the second field. In this case, permission is granted only if current minute is between or equal to the two values you provided.", + "policyCode": "The JavaScript code providing the conditions for this policy.", + "logic": "The logic dictates how the policy decision should be made. If 'Positive', the resulting effect (permit or deny) obtained during the evaluation of this policy will be used to perform a decision. If 'Negative', the resulting effect will be negated, in other words, a permit becomes a deny and vice-versa.", + "permissionName": "The name of this permission.", + "permissionDescription": "A description for this permission.", + "applyToResourceTypeFlag": "Specifies if this permission should be applied to all resources with a given type. In this case, this permission will be evaluated for all instances of a given resource type.", + "permissionResources": "Specifies that this permission must be applied to a specific resource instance.", + "permissionScopes": "Specifies that this permission must be applied to one or more scopes.", + "permissionPolicies": "Specifies all the policies that must be applied to the scopes defined by this policy or permission.", + "permissionType": "Specifies that this permission must be applied to all resources instances of a given type.", + "permissionDecisionStrategy": "The decision strategy dictates how the policies associated with a given permission are evaluated and how a final decision is obtained. 'Affirmative' means that at least one policy must evaluate to a positive decision in order for the final decision to be also positive. 'Unanimous' means that all policies must evaluate to a positive decision in order for the final decision to be also positive. 'Consensus' means that the number of positive decisions must be greater than the number of negative decisions. If the number of positive and negative is the same, the final decision will be negative.", + "permissionsEnabled": "Determines if fine grained permissions are enabled for managing this role. Disabling will delete all current permissions that have been set up." +} \ No newline at end of file diff --git a/public/resources/en/clients.json b/public/resources/en/clients.json new file mode 100644 index 0000000000..7268e41338 --- /dev/null +++ b/public/resources/en/clients.json @@ -0,0 +1,497 @@ +{ + "protocolTypes": { + "openIdConnect": "OpenID Connect", + "saml": "SAML", + "all": "All" + }, + "protocol": "Protocol", + "copy": "Copy", + "copied": "Authorization details copied.", + "copyError": "Error copying authorization details: {{error}}", + "exportAuthDetailsSuccess": "Successfully exported authorization details.", + "exportAuthDetailsError": "Error exporting authorization details: {{error}}", + "clientType": "Client type", + "clientAuthorization": "Authorization", + "implicitFlow": "Implicit flow", + "createClient": "Create client", + "importClient": "Import client", + "homeURL": "Home URL", + "webOrigins": "Web origins", + "addWebOrigins": "Add web origins", + "adminURL": "Admin URL", + "formatOption": "Format option", + "encryptAssertions": "Encrypt assertions", + "clientSignature": "Client signature required", + "downloadAdaptorTitle": "Download adaptor configs", + "privateKeyMask": "PRIVATE KEY NOT SET UP OR KNOWN", + "keys": "Keys", + "credentials": "Credentials", + "roles": "Roles", + "createRole": "Create role", + "noRoles": "No roles for this client", + "noRolesInstructions": "You haven't created any roles for this client. Create a role to get started.", + "clientScopes": "Client scopes", + "addClientScope": "Add client scope", + "dedicatedScopeName": "{{clientName}}-dedicated", + "dedicatedScopeDescription": "Dedicated scope and mappers for this client", + "dedicatedScopes": "Dedicated scopes", + "fullScopeAllowed": "Full scope allowed", + "addClientScopesTo": "Add client scopes to {{clientName}}", + "clientScopeRemoveSuccess": "Scope mapping successfully removed", + "clientScopeRemoveError": "Could not remove the scope mapping {{error}}", + "clientScopeSuccess": "Scope mapping successfully updated", + "clientScopeError": "Could not update the scope mapping {{error}}", + "searchByName": "Search by name", + "setup": "Setup", + "selectAUser": "Select a user", + "client": "Client", + "evaluate": "Evaluate", + "reevaluate": "Re-evaluate", + "showAuthData": "Show authorization data", + "results": "Results", + "allResults": "All results", + "resultPermit": "Result-Permit", + "resultDeny": "Result-Deny", + "permit": "Permit", + "deny": "Deny", + "unanimous": "Unanimous", + "affirmative": "Affirmative", + "consensus": "Consensus", + "votedToStatus": " voted to {{status}}", + "overallResults": "Overall Results", + "grantedScopes": "Granted scopes", + "deniedScopes": "Denied scopes", + "permission": "Permission", + "lastEvaluation": "Last Evaluation", + "resourcesAndAuthScopes": "Resources and Authentication Scopes", + "authScopes": "Authorization scopes", + "authDetails": "Authorization details", + "anyResource": "Any resource", + "anyScope": "Any scope", + "selectScope": "Select a scope", + "applyToResourceType": "Apply to Resource Type", + "contextualInfo": "Contextual Information", + "contextualAttributes": "Contextual Attributes", + "selectOrTypeAKey": "Select or type a key", + "custom": "Custom Attribute...", + "kc": { + "identity": { + "authc": { + "method": "Authentication Method" + } + }, + "realm": { + "name": "Realm" + }, + "time": { + "date_time": "Date/Time (MM/dd/yyyy hh:mm:ss)" + }, + "client": { + "network": { + "ip_address": "Client IPv4 Address", + "host": "Client Host" + }, + "user_agent": "Client/User Agent" + } + }, + "password": "Password", + "oneTimePassword": "One-Time Password", + "kerberos": "Kerberos", + "removeMappingTitle": "Remove mapping?", + "removeMappingConfirm_one": "Are you sure you want to remove this mapping?", + "removeMappingConfirm_other": "Are you sure you want to remove {{count}} mappings", + "clientScopeSearch": { + "name": "Name", + "type": "Assigned type", + "protocol": "Protocol" + }, + "authorization": "Authorization", + "settings": "Settings", + "policyEnforcementMode": "Policy enforcement mode", + "policyEnforcementModes": { + "ENFORCING": "Enforcing", + "PERMISSIVE": "Permissive", + "DISABLED": "Disabled" + }, + "decisionStrategy": "Decision strategy", + "decisionStrategies": { + "UNANIMOUS": "Unanimous", + "AFFIRMATIVE": "Affirmative", + "CONSENSUS": "Consensus" + }, + "importResources": "The following settings and data will be imported:", + "importWarning": "The data and settings imported above may overwrite the data and settings that already exist.", + "importResourceSuccess": "The resource was successfully imported", + "importResourceError": "Could not import the resource due to {{error}}", + "createResource": "Create resource", + "emptyPermissions": "No permissions", + "emptyPermissionInstructions": "If you want to create a permission, please click the button below to create a resource-based or scope-based permission.", + "noScopeCreateHint": "There is no authorization scope you can't create scope-based permission", + "noResourceCreateHint": "There are no resources you can't create resource-based permission", + "createResourceBasedPermission": "Create resource-based permission", + "createScopeBasedPermission": "Create scope-based permission", + "displayName": "Display name", + "type": "Type", + "addUri": "Add URI", + "authorizationScopes": "Authorization scopes", + "iconUri": "Icon URI", + "ownerManagedAccess": "User-Managed access enabled", + "resourceAttribute": "Resource attribute", + "createResourceSuccess": "Resource created successfully", + "updateResourceSuccess": "Resource successfully updated", + "resourceSaveError": "Could not persist resource due to {{error}}", + "associatedPermissions": "Associated permission", + "allowRemoteResourceManagement": "Remote resource management", + "resources": "Resources", + "resource": "Resource", + "allTypes": "All types", + "scope": "Scope", + "owner": "Owner", + "uris": "URIs", + "scopes": "Scopes", + "policies": "Policies", + "createPermission": "Create permission", + "permissionDetails": "Permission details", + "deleteResource": "Permanently delete resource?", + "deleteResourceConfirm": "If you delete this resource, some permissions will be affected.", + "deleteResourceWarning": "The permissions below will be removed when they are no longer used by other resources:", + "resourceDeletedSuccess": "The resource successfully deleted", + "resourceDeletedError": "Could not remove the resource {{error}}", + "identityInformation": "Identity Information", + "searchForPermission": "Search for permission", + "deleteScope": "Permanently delete authorization scope?", + "deleteScopeConfirm": "If you delete this authorization scope, some permissions will be affected.", + "deleteScopeWarning": "The permissions below will be removed when they are no longer used by other authorization scopes:", + "resourceScopeSuccess": "The authorization scope successfully deleted", + "resourceScopeError": "Could not remove the authorization scope due to {{error}}", + "associatedPolicy": "Associated policy", + "deletePermission": "Permanently delete permission?", + "deletePermissionConfirm": "Are you sure you want to delete the permission {{permission}}", + "permissionDeletedSuccess": "Successfully deleted permission", + "permissionDeletedError": "Could not delete permission due to {{error}}", + "applyToResourceTypeFlag": "Apply to resource type", + "resourceType": "Resource type", + "createPermissionSuccess": "Successfully created the permission", + "updatePermissionSuccess": "Successfully updated the permission", + "permissionSaveError": "Could not update the permission due to {{error}}", + "createAuthorizationScope": "Create authorization scope", + "emptyAuthorizationScopes": "No authorization scopes", + "emptyAuthorizationInstructions": "If you want to create authorization scopes, please click the button below to create the authorization scope", + "createScopeSuccess": "Authorization scope created successfully", + "updateScopeSuccess": "Authorization scope successfully updated", + "scopeSaveError": "Could not persist authorization scope due to {{error}}", + "createPolicy": "Create policy", + "dependentPermission": "Dependent permission", + "deletePolicy": "Permanently delete policy?", + "deletePolicyConfirm": "If you delete this policy, some permissions or aggregated policies will be affected.", + "deletePolicyWarning": "The aggregated polices below will be removed automatically:", + "policyDeletedSuccess": "The Policy successfully deleted", + "policyDeletedError": "Could not remove the resource {{error}}", + "emptyPolicies": "No policies", + "emptyPoliciesInstructions": "If you want to create a policy, please click the button below to create the policy.", + "chooseAPolicyType": "Choose a policy type", + "chooseAPolicyTypeInstructions": "Choose one policy type from the list below and then you can configure a new policy for authorization. There are some types and description.", + "policyProvider": { + "regex": "Define regex conditions for your permissions.", + "role": "Define conditions for your permissions where a set of one or more roles is permitted to access an object.", + "js": "Define conditions for your permissions using JavaScript. It is one of the rule-based policy types supported by Keycloak, and provides flexibility to write any policy based on the Evaluation API.", + "client": "Define conditions for your permissions where a set of one or more clients is permitted to access an object.", + "time": "Define time conditions for your permissions.", + "user": "Define conditions for your permissions where a set of one or more users is permitted to access an object.", + "client-scope": "Define conditions for your permissions where a set of one or more client scopes is permitted to access an object.", + "aggregate": "Reuse existing policies to build more complex ones and keep your permissions even more decoupled from the policies that are evaluated during the processing of authorization requests.", + "group": "Define conditions for your permissions where a set of one or more groups (and their hierarchies) is permitted to access an object." + }, + "applyPolicy": "Apply policy", + "addClientScopes": "Add client scopes", + "emptyAddClientScopes": "No client scopes", + "emptyAddClientScopesInstructions": "There are no client scopes left to add", + "clientScope": "Client scope", + "groupsClaim": "Groups claim", + "addGroups": "Add groups", + "groups": "Groups", + "users": "Users", + "requiredClient": "Please add at least one client.", + "requiredClientScope": "Please add at least one client scope.", + "requiredGroups": "Please add at least one group.", + "requiredRoles": "Please add at least one role.", + "addGroupsToGroupPolicy": "Add groups to group policy", + "extendToChildren": "Extend to children", + "targetClaim": "Target claim", + "regexPattern": "Regex pattern", + "addRoles": "Add roles", + "required": "Required", + "startTime": "Start time", + "repeat": "Repeat", + "notRepeat": "Not repeat", + "month": "Month", + "dayMonth": "Day", + "hour": "Hour", + "minute": "Minute", + "code": "Code", + "expireTime": "Expire time", + "logic": "Logic", + "logicType": { + "positive": "Positive", + "negative": "Negative" + }, + "createPolicySuccess": "Successfully created the policy", + "updatePolicySuccess": "Successfully updated the policy", + "policySaveError": "Could not update the policy due to {{error}}", + "assignedClientScope": "Assigned client scope", + "assignedType": "Assigned type", + "emptyClientScopes": "This client doesn't have any added client scopes", + "emptyClientScopesInstructions": "There are currently no client scopes linked to this client. You can add existing client scopes to this client to share protocol mappers and roles.", + "emptyClientScopesPrimaryAction": "Add client scopes", + "scopeParameter": "Scope parameter", + "scopeParameterPlaceholder": "Select scope parameters", + "effectiveProtocolMappers": "Effective protocol mappers", + "effectiveRoleScopeMappings": "Effective role scope mappings", + "generatedAccessToken": "Generated access token", + "generatedIdToken": "Generated ID token", + "generatedIdTokenNo": "No generated id token", + "generatedIdTokenIsDisabled": "Generated id token is disabled when no user is selected", + "generatedUserInfo": "Generated user info", + "generatedUserInfoNo": "No generated user info", + "generatedUserInfoIsDisabled": "Generated user info is disabled when no user is selected", + "searchForProtocol": "Search protocol mapper", + "parentClientScope": "Parent client scope", + "searchForRole": "Search role", + "origin": "Origin", + "user": "User", + "generatedAccessTokenNo": "No generated access token", + "generatedAccessTokenIsDisabled": "Generated access token is disabled when no user is selected", + "clientList": "Clients", + "clientsList": "Clients list", + "initialAccessToken": "Initial access token", + "expirationValueNotValid": "Value should should be greater or equal to 1", + "clientSettings": "Client details", + "selectEncryptionType": "Select Encryption type", + "generalSettings": "General Settings", + "alwaysDisplayInConsole": "Always display in console", + "capabilityConfig": "Capability config", + "clientsExplain": "Clients are applications and services that can request authentication of a user.", + "explainBearerOnly": "This is a special OIDC type. This client only allows bearer token requests and cannot participate in browser logins.", + "createSuccess": "Client created successfully", + "createError": "Could not create client: '{{error}}'", + "clientImportError": "Could not import client: {{error}}", + "clientSaveSuccess": "Client successfully updated", + "clientSaveError": "Client could not be updated: {{error}}", + "clientImportSuccess": "Client imported successfully", + "clientDelete": "Delete {{clientId}} ?", + "clientDeletedSuccess": "The client has been deleted", + "clientDeleteError": "Could not delete client: {{error}}", + "clientDeleteConfirmTitle": "Delete client?", + "disableConfirmTitle": "Disable client?", + "downloadAdapterConfig": "Download adapter config", + "disableConfirm": "If you disable this client, you cannot initiate a login or obtain access tokens.", + "clientDeleteConfirm": "If you delete this client, all associated data will be removed.", + "searchInitialAccessToken": "Search token", + "createToken": "Create initial access token", + "tokenDeleteConfirm": "Are you sure you want to permanently delete the initial access token {{id}}", + "tokenDeleteConfirmTitle": "Delete initial access token?", + "tokenDeleteSuccess": "Initial access token deleted successfully", + "tokenDeleteError": "Could not delete initial access token: '{{error}}'", + "timestamp": "Created date", + "created": "Created", + "lastUpdated": "Last updated", + "expires": "Expires", + "count": "Count", + "remainingCount": "Remaining count", + "expiration": "Expiration", + "noTokens": "No initial access tokens", + "noTokensInstructions": "You haven't created any initial access tokens. Create an initial access token by clicking \"Create\".", + "tokenSaveSuccess": "New initial access token has been created", + "tokenSaveError": "Could not create initial access token {{error}}", + "initialAccessTokenDetails": "Initial access token details", + "copyInitialAccessToken": "Please copy and paste the initial access token before closing as it can not be retrieved later.", + "copySuccess": "Successfully copied to clipboard!", + "clipboardCopyError": "Error copying to clipboard.", + "copyToClipboard": "Copy to clipboard", + "clientAuthentication": "Client authentication", + "authentication": "Authentication", + "authenticationFlow": "Authentication flow", + "standardFlow": "Standard flow", + "directAccess": "Direct access grants", + "serviceAccount": "Service accounts roles", + "oauthDeviceAuthorizationGrant": "OAuth 2.0 Device Authorization Grant", + "oidcCibaGrant": "OIDC CIBA Grant", + "enableServiceAccount": "Enable service account roles", + "searchByRoleName": "Search by role name", + "filterByOrigin": "Filter by Origin", + "realmRoles": "Realm roles", + "clients": "Clients", + "assign": "Assign", + "roleMappingUpdatedSuccess": "Role mapping updated", + "roleMappingUpdatedError": "Could not update role mapping {{error}}", + "displayOnClient": "Display client on screen", + "consentScreenText": "Client consent screen text", + "loginSettings": "Login settings", + "logoutSettings": "Logout settings", + "backchannelLogoutUrl": "Backchannel logout URL", + "backchannelUrlInvalid": "Backchannel logout URL is not a valid URL", + "backchannelLogoutSessionRequired": "Backchannel logout session required", + "backchannelLogoutRevokeOfflineSessions": "Backchannel logout revoke offline sessions", + "frontchannelLogout": "Front channel logout", + "frontchannelLogoutUrl": "Front-channel logout URL", + "frontchannelUrlInvalid": "Front-channel logout URL is not a valid URL", + "accessSettings": "Access settings", + "rootUrl": "Root URL", + "validRedirectUri": "Valid redirect URIs", + "idpInitiatedSsoUrlName": "IDP-Initiated SSO URL name", + "idpInitiatedSsoUrlNameHelp": "Target IDP initiated SSO URL: {{url}}", + "idpInitiatedSsoRelayState": "IDP Initiated SSO Relay State", + "masterSamlProcessingUrl": "Master SAML Processing URL", + "samlCapabilityConfig": "SAML capabilities", + "signatureAndEncryption": "Signature and Encryption", + "nameIdFormat": "Name ID format", + "forceNameIdFormat": "Force name ID format", + "forcePostBinding": "Force POST binding", + "forceArtifactBinding": "Force artifact binding", + "includeAuthnStatement": "Include AuthnStatement", + "includeOneTimeUseCondition": "Include OneTimeUse Condition", + "optimizeLookup": "Optimize REDIRECT signing key lookup", + "signDocuments": "Sign documents", + "signAssertions": "Sign assertions", + "signatureKeyName": "SAML signature key name", + "canonicalization": "Canonicalization method", + "addRedirectUri": "Add valid redirect URIs", + "loginTheme": "Login theme", + "consentRequired": "Consent required", + "clientAuthenticator": "Client Authenticator", + "changeAuthenticatorConfirmTitle": "Change to {{clientAuthenticatorType}}", + "changeAuthenticatorConfirm": "If you change authenticator to {{clientAuthenticatorType}}, the keycloak database will be updated and you may need to download a new adapter configuration for this client", + "signedJWTConfirm": "You should configure JWKS URL or keys in the \"Keys\" tab to change the parameters of Signed JWT authenticator.", + "anyAlgorithm": "Any algorithm", + "clientSecret": "Client secret", + "regenerate": "Regenerate", + "confirmClientSecretTitle": "Regenerate secret for this client?", + "confirmClientSecretBody": "If you regenerate secret, the Keycloak database will be updated and you will need to download a new adapter for this client.", + "confirmAccessTokenTitle": "Regenerate registration access token?", + "confirmAccessTokenBody": "If you regenerate registration access token, the access data regarding the client registration service will be updated.", + "clientSecretSuccess": "Client secret regenerated", + "clientSecretError": "Could not regenerate client secret due to: {{error}}", + "signingKeysConfig": "Signing keys config", + "signingKeysConfigExplain": "If you enable the \"Client signature required\" below, you must configure the signing keys by generating or importing keys, and the client will sign their saml requests and responses. The signature will be validated.", + "encryptionKeysConfig": "Encryption keys config", + "encryptionKeysConfigExplain": "If you enable the \"Encryption assertions\" below, you must configure the encryption keys by generating or importing keys, and the SAML assertions will be encrypted with the client's public key using AES.", + "enableClientSignatureRequired": "Enable \"Client signature required\"?", + "enableClientSignatureRequiredExplain": "If you enable \"Client signature required\", the adapter of this client will be updated. You may need to download a new adapter for this client. You need to generate or import keys for this client otherwise the authentication will not work.", + "selectMethod": "Select method", + "selectMethodType": { + "generate": "Generate", + "import": "Import" + }, + "confirm": "Confirm", + "browse": "Browse", + "importKey": "Import key", + "disableSigning": "Disable \"{{key}}\"", + "disableSigningExplain": "If you disable \"{{key}}\", the Keycloak database will be updated and you may need to download a new adapter for this client.", + "reGenerateSigning": "Regenerate signing key for this client", + "reGenerateSigningExplain": "If you regenerate signing key for client, the Keycloak database will be updated and you may need to download a new adapter for this client.", + "registrationAccessToken": "Registration access token", + "accessTokenSuccess": "Access token regenerated", + "accessTokenError": "Could not regenerate access token due to: {{error}}", + "signatureAlgorithm": "Signature algorithm", + "allowRegexComparison": "Allow regex pattern comparison", + "subject": "Subject DN", + "searchForClient": "Search for client", + "advanced": "Advanced", + "revocation": "Revocation", + "clustering": "Clustering", + "notBefore": "Not before", + "setToNow": "Set to now", + "noAdminUrlSet": "No push sent. No admin URI configured or no registered cluster nodes available", + "notBeforeSetToNow": "Not Before set for client", + "notBeforeNowClear": "Not Before cleared for client", + "notBeforePushFail": "Failed to push \"not before\" to: {{failedNodes}}", + "notBeforePushSuccess": "Successfully push \"not before\" to: {{successNodes}}", + "testClusterFail": "Failed verified availability for: {{failedNodes}}. Fix or unregister failed cluster nodes and try again", + "testClusterSuccess": "Successfully verified availability for: {{successNodes}}", + "deleteNode": "Delete node?", + "deleteNodeBody": "Are you sure you want to permanently delete the node \"{{node}}\"", + "deleteNodeSuccess": "Node successfully removed", + "deleteNodeFail": "Could not delete node: '{{error}}'", + "addedNodeSuccess": "Node successfully added", + "addedNodeFail": "Could not add node: '{{error}}'", + "addNode": "Add node", + "push": "Push", + "clear": "Clear", + "nodeReRegistrationTimeout": "Node Re-registration timeout", + "registeredClusterNodes": "Registered cluster nodes", + "nodeHost": "Node host", + "noNodes": "No nodes registered", + "noNodesInstructions": "There are no nodes registered, you can add one manually.", + "lastRegistration": "Last registration", + "testClusterAvailability": "Test cluster availability", + "registerNodeManually": "Register node manually", + "fineGrainOpenIdConnectConfiguration": "Fine grain OpenID Connect configuration", + "fineGrainSamlEndpointConfig": "Fine Grain SAML Endpoint Configuration", + "logoUrl": "Logo URL", + "policyUrl": "Policy URL", + "termsOfServiceUrl": "Terms of service URL", + "accessTokenSignatureAlgorithm": "Access token signature algorithm", + "idTokenSignatureAlgorithm": "ID token signature algorithm", + "idTokenEncryptionKeyManagementAlgorithm": "ID token encryption key management algorithm", + "idTokenEncryptionContentEncryptionAlgorithm": "ID token encryption content encryption algorithm", + "userInfoSignedResponseAlgorithm": "User info signed response algorithm", + "requestObjectSignatureAlgorithm": "Request object signature algorithm", + "requestObjectRequired": "Request object required", + "requestObject": { + "not required": "Not required", + "request or request_uri": "Request or Request URI", + "request only": "Request only", + "request_uri only": "Request URI only" + }, + "requestObjectEncryption": "Request object encryption algorithm", + "requestObjectEncoding": "Request object content encryption algorithm", + "validRequestURIs": "Valid request URIs", + "addRequestUri": "Add valid request URIs", + "authorizationSignedResponseAlg": "Authorization response signature algorithm", + "authorizationEncryptedResponseAlg": "Authorization response encryption key management algorithm", + "authorizationEncryptedResponseEnc": "Authorization response encryption content encryption algorithm", + "openIdConnectCompatibilityModes": "Open ID Connect Compatibly Modes", + "excludeSessionStateFromAuthenticationResponse": "Exclude Session State From Authentication Response", + "useRefreshTokens": "Use refresh tokens", + "useRefreshTokenForClientCredentialsGrant": "Use refresh tokens for client credentials grant", + "assertionConsumerServicePostBindingURL": "Assertion Consumer Service POST Binding URL", + "assertionConsumerServiceRedirectBindingURL": "Assertion Consumer Service Redirect Binding URL", + "logoutServicePostBindingURL": "Logout Service POST Binding URL", + "logoutServiceRedirectBindingURL": "Logout Service Redirect Binding URL", + "logoutServiceArtifactBindingUrl": "Logout Service ARTIFACT Binding URL", + "artifactBindingUrl": "Artifact Binding URL", + "artifactResolutionService": "Artifact Resolution Service", + "advancedSettings": "Advanced Settings", + "assertionLifespan": "Assertion Lifespan", + "accessTokenLifespan": "Access Token Lifespan", + "oAuthMutual": "OAuth 2.0 Mutual TLS Certificate Bound Access Tokens Enabled", + "keyForCodeExchange": "Proof Key for Code Exchange Code Challenge Method", + "pushedAuthorizationRequestRequired": "Pushed authorization request required", + "acrToLoAMapping": "ACR to LoA Mapping", + "authenticationOverrides": "Authentication flow overrides", + "browserFlow": "Browser Flow", + "directGrant": "Direct Grant Flow", + "jwksUrlConfig": "JWKS URL configs", + "keysIntro": "If \"Use JWKS URL switch\" is on, you need to fill a valid JWKS URL. After saving, admin can download keys from the JWKS URL or keys will be downloaded automatically by Keycloak server when see the stuff signed by the unknown KID", + "useJwksUrl": "Use JWKS URL", + "certificate": "Certificate", + "jwksUrl": "JWKS URL", + "generateNewKeys": "Generate new keys", + "generateKeys": "Generate keys?", + "generate": "Generate", + "archiveFormat": "Archive format", + "keyAlias": "Key alias", + "keyPassword": "Key password", + "storePassword": "Store password", + "generateSuccess": "New key pair and certificate generated successfully", + "generateError": "Could not generate new key pair and certificate {{error}}", + "import": "Import", + "importFile": "Import file", + "importSuccess": "New certificate imported", + "importError": "Could not import certificate {{error}}", + "tokenLifespan": { + "expires": "Expires in", + "never": "Never expires" + }, + "mappers": "Mappers" +} \ No newline at end of file diff --git a/public/resources/en/common-help.json b/public/resources/en/common-help.json new file mode 100644 index 0000000000..bd3b278d06 --- /dev/null +++ b/public/resources/en/common-help.json @@ -0,0 +1,6 @@ +{ + "helpToggleInfo": "This toggle will enable / disable part of the help info in the console. Includes any help text, links and popovers.", + "showPassword": "Show password field in clear text", + "helpFileUpload": "Upload a JSON file", + "dragHelp": "Press space or enter to begin dragging, and use the arrow keys to navigate up or down. Press enter to confirm the drag, or any other key to cancel the drag operation." +} \ No newline at end of file diff --git a/public/resources/en/common.json b/public/resources/en/common.json new file mode 100644 index 0000000000..cdfe922300 --- /dev/null +++ b/public/resources/en/common.json @@ -0,0 +1,187 @@ +{ + "fullName": "{{givenName}} {{familyName}}", + "unknownUser": "Anonymous", + "add": "Add", + "yes": "Yes", + "no": "No", + "create": "Create", + "save": "Save", + "revert": "Revert", + "cancel": "Cancel", + "reload": "Reload", + "continue": "Continue", + "close": "Close", + "delete": "Delete", + "remove": "Remove", + "search": "Search", + "key": "Key", + "value": "Value", + "noSearchResults": "No search results", + "noSearchResultsInstructions": "Click on the search bar above to search", + "clearAllFilters": "Clear all filters", + "next": "Next", + "back": "Back", + "finish": "Finish", + "skipCustomizationAndFinish": "Skip customization and finish", + "export": "Export", + "action": "Action", + "download": "Download", + "resourceFile": "Resource file", + "clear": "Clear", + "clearFile": "Clear this file", + "clearFileExplain": "Are you sure you want to clear this file?", + "on": "On", + "off": "Off", + "edit": "Edit", + "enabled": "Enabled", + "disabled": "Disabled", + "disable": "Disable", + "selectOne": "Select an option", + "select": "Select", + "choose": "Choose...", + "any": "Any", + "none": "None", + "signOut": "Sign out", + "manageAccount": "Manage account", + "serverInfo": "Server info", + "realmInfo": "Realm info", + "help": "Help", + "helpLabel": "More help for '{{label}}'", + "helpEnabled": "Help on", + "helpDisabled": "Help off", + "documentation": "Documentation", + "enableHelpMode": "Enable help mode", + "learnMore": "Learn more", + "show": "Show", + "hide": "Hide", + "showRemaining": "Show ${remaining}", + "more": "{{count}} more", + "test": "Test", + "testConnection": "Test connection", + "name": "Name", + "role": "Role", + "description": "Description", + "type": "Type", + "category": "Category", + "priority": "Priority", + "unexpectedError": "An unexpected error occurred: '{{error}}'", + "retry": "Press here to refresh and continue", + "plus": "Plus", + "minus": "Minus", + "confirm": "Confirm", + "clientScope": { + "default": "Default", + "optional": "Optional", + "none": "None" + }, + "allTypes": "All types", + "home": "Home", + "manage": "Manage", + "clients": "Clients", + "clientScopes": "Client scopes", + "realmRoles": "Realm roles", + "clientRoles": "Client roles", + "users": "Users", + "groups": "Groups", + "sessions": "Sessions", + "events": "Events", + "mappers": "Mappers", + "permissions": "Permissions", + "permissionsList": "Permission list", + "permissionsListIntro": "Edit the permission list by clicking the scope-name. It then redirects to the permission details page of the client named <1>{{realm}}", + "usersPermissionsHint": "Fine grained permissions for managing all users in realm. You can define different policies for who is allowed to manage users in the realm.", + "clientsPermissionsHint": "Fine grained permissions for administrators that want to manage this client or apply roles defined by this client.", + "permissionsScopeName": "Scope-name", + "permissionsEnabled": "Permissions enabled", + "permissionsDisable": "Disable permissions?", + "permissionsDisableConfirm": "If you disable the permissions, all the permissions in the list below will be delete automatically. In addition, the resources and scopes that are related will be removed", + "scopePermissions": { + "clients": { + "manage-description": "Policies that decide if an administrator can manage this client", + "configure-description": "Reduced management permissions for administrator. Cannot set scope, template, or protocol mappers.", + "view-description": "Policies that decide if an administrator can view this client", + "map-roles-description": "Policies that decide if an administrator can map roles defined by this client", + "map-roles-client-scope-description": "Policies that decide if an administrator can apply roles defined by this client to the client scope of another client", + "map-roles-composite-description": "Policies that decide if an administrator can apply roles defined by this client as a composite to another role", + "token-exchange-description": "Policies that decide which clients are allowed exchange tokens for a token that is targeted to this client." + }, + "users": { + "view-description": "Policies that decide if an administrator can view all users in realm", + "manage-description": "Policies that decide if an administrator can manage all users in the realm", + "map-roles-description": "Policies that decide if administrator can map roles for all users", + "manage-group-membership-description": "Policies that decide if an administrator can manage group membership for all users in the realm. This is used in conjunction with specific group policy", + "impersonate-description": "Policies that decide if administrator can impersonate other users", + "user-impersonated-description": "Policies that decide which users can be impersonated. These policies are applied to the user being impersonated." + } + }, + "configure": "Configure", + "realmSettings": "Realm settings", + "authentication": "Authentication", + "identityProviders": "Identity providers", + "userFederation": "User federation", + "settings": "Settings", + "details": "Details", + "required": "Required field", + "maxLength": "Max length {{length}}", + "createRealm": "Create Realm", + "recent": "Recent", + "jumpToSection": "Jump to section", + "Sunday": "Sunday", + "Monday": "Monday", + "Tuesday": "Tuesday", + "Wednesday": "Wednesday", + "Thursday": "Thursday", + "Friday": "Friday", + "Saturday": "Saturday", + "assignRole": "Assign role", + "assign": "Assign", + "unAssignRole": "Unassign", + "hideInheritedRoles": "Hide inherited roles", + "assignRolesTo": "Assign roles to {{client}} account", + "inherentFrom": "Inherited from", + "unitLabel": "Select a time unit", + "times": { + "seconds": "Seconds", + "minutes": "Minutes", + "hours": "Hours", + "days": "Days", + "years": "Years" + }, + "attributes": "Attributes", + "addAttribute": "Add an attribute", + "removeAttribute": "Remove attribute", + "keyPlaceholder": "Type a key", + "valuePlaceholder": "Type a value", + "credentials": "Credentials", + "clientId": "Client ID", + "id": "ID", + "addMapper": "Add mapper", + "createNewMapper": "Create new mapper", + "searchForMapper": "Search for mapper", + "mapperType": "Mapper type", + "mappingDeletedSuccess": "Mapping successfully deleted", + "mappingDeletedError": "Could not delete mapping: '{{error}}'", + "mappingDetails": "Mapper details", + "mappingUpdatedSuccess": "Mapping successfully updated", + "mappingUpdatedError": "Could not update mapping: '{{error}}'", + "mappingCreatedSuccess": "Mapping successfully created", + "mappingCreatedError": "Could not create mapping: '{{error}}'", + "deleteMappingTitle": "Delete mapping?", + "deleteMappingConfirm": "Are you sure you want to delete this mapping?", + "emptyMappers": "No mappers", + "emptyMappersInstructions": "If you want to add mappers, please click the button below to add some predefined mappers or to configure a new mapper.", + "emptyPrimaryAction": "Add predefined mapper", + "leaveDirtyTitle": "Leave without saving?", + "leaveDirtyConfirm": "Do you want to leave this page without saving? Any unsaved changes will be lost.", + "leave": "Leave", + "reorder": "Reorder", + "onDragStart": "Dragging started for item {{item}}", + "onDragMove": "Dragging item {{item}}", + "onDragCancel": "Dragging cancelled. List is unchanged.", + "onDragFinish": "Dragging finished {{list}}", + "notFound": "Could not find the resource that you are looking for", + "password": "Password", + "passwordConfirmation": "Password confirmation", + "temporaryPassword": "Temporary", + "temporaryPasswordHelpText": "If enabled, the user must change the password on next login" +} \ No newline at end of file diff --git a/public/resources/en/dashboard.json b/public/resources/en/dashboard.json new file mode 100644 index 0000000000..f99b008b18 --- /dev/null +++ b/public/resources/en/dashboard.json @@ -0,0 +1,16 @@ +{ + "realmName": "{{name}} realm", + "welcome": "Welcome to", + "introduction": "If you want to leave this page and mange this realm, please click the corresponding menu items in the left navigation bar.", + "serverInfo": "Server info", + "version": "Version", + "product": "Product", + "profile": "Profile", + "enabledFeatures": "Enabled features", + "experimental": "Experimental", + "preview": "Preview", + "infoEnabledFeatures": "Something about what enabled features are.", + "infoDisabledFeatures": "Something about what disabled features are.", + "disabledFeatures": "Disabled features", + "adminUiVersion": "<0 className=\"pf-u-mr-md\">Admin UI version{{version}}" +} \ No newline at end of file diff --git a/public/resources/en/dynamic.json b/public/resources/en/dynamic.json new file mode 100644 index 0000000000..115170f593 --- /dev/null +++ b/public/resources/en/dynamic.json @@ -0,0 +1,155 @@ +{ + "addMultivaluedLabel": "Add {{fieldLabel}}", + "selectARole": "Select a role", + "usermodel": { + "prop": { + "label": "Property", + "tooltip": "Name of the property method in the UserModel interface. For example, a value of 'email' would reference the UserModel.getEmail() method." + }, + "attr": { + "label": "User Attribute", + "tooltip": "Name of stored user attribute which is the name of an attribute within the UserModel.attribute map." + }, + "clientRoleMapping": { + "client": { + "label": "Client ID", + "tooltip": "Client ID for role mappings. Just client roles of this client will be added to the token. If this is unset, client roles of all clients will be added to the token." + }, + "rolePrefix": { + "label": "Client Role prefix", + "tooltip": "A prefix for each client role (optional)." + }, + "tokenClaimName": { + "tooltip": "Name of the claim to insert into the token. This can be a fully qualified name like 'address.street'. In this case, a nested json object will be created. To prevent nesting and use dot literally, escape the dot with backslash (\\.). The special token ${client_id} can be used and this will be replaced by the actual client ID. Example usage is 'resource_access.${client_id}.roles'. This is useful especially when you are adding roles from all the clients (Hence 'Client ID' switch is unset) and you want client roles of each client stored separately." + } + }, + "realmRoleMapping": { + "rolePrefix": { + "label": "Realm Role prefix", + "tooltip": "A prefix for each Realm Role (optional)." + } + } + }, + "userSession": { + "modelNote": { + "label": "User Session Note", + "tooltip": "Name of stored user session note within the UserSessionModel.note map." + } + }, + "multivalued": { + "label": "Multivalued", + "tooltip": "Indicates if attribute supports multiple values. If true, the list of all values of this attribute will be set as claim. If false, just first value will be set as claim" + }, + "aggregate": { + "attrs": { + "label": "Aggregate attribute values", + "tooltip": "Indicates if attribute values should be aggregated with the group attributes. If using OpenID Connect mapper the multivalued option needs to be enabled too in order to get all the values. Duplicated values are discarded and the order of values is not guaranteed with this option." + } + }, + "selectRole": { + "label": "Select Role", + "tooltip": "Enter role in the textbox to the left, or click this button to browse and select the role you want." + }, + "tokenClaimName": { + "label": "Token Claim Name", + "tooltip": "Name of the claim to insert into the token. This can be a fully qualified name like 'address.street'. In this case, a nested json object will be created. To prevent nesting and use dot literally, escape the dot with backslash (\\.)." + }, + "jsonType": { + "label": "Claim JSON Type", + "tooltip": "JSON type that should be used to populate the json claim in the token. long, int, boolean, String and JSON are valid values." + }, + "includeInIdToken": { + "label": "Add to ID token", + "tooltip": "Should the claim be added to the ID token?" + }, + "includeInAccessToken": { + "label": "Add to access token", + "tooltip": "Should the claim be added to the access token?" + }, + "includeInUserInfo": { + "label": "Add to userinfo", + "tooltip": "Should the claim be added to the userinfo?" + }, + "sectorIdentifierUri": { + "label": "Sector Identifier URI", + "tooltip": "Providers that use pairwise sub values and support Dynamic Client Registration SHOULD use the sector_identifier_uri parameter. It provides a way for a group of websites under common administrative control to have consistent pairwise sub values independent of the individual domain names. It also provides a way for Clients to change redirect_uri domains without having to reregister all their users." + }, + "pairwiseSubAlgorithmSalt": { + "label": "Salt", + "tooltip": "Salt used when calculating the pairwise subject identifier. If left blank, a salt will be generated." + }, + "addressClaim": { + "street": { + "label": "User Attribute Name for Street", + "tooltip": "Name of User Attribute, which will be used to map to 'street_address' subclaim inside 'address' token claim. Defaults to 'street' ." + }, + "locality": { + "label": "User Attribute Name for Locality", + "tooltip": "Name of User Attribute, which will be used to map to 'locality' subclaim inside 'address' token claim. Defaults to 'locality' ." + }, + "region": { + "label": "User Attribute Name for Region", + "tooltip": "Name of User Attribute, which will be used to map to 'region' subclaim inside 'address' token claim. Defaults to 'region' ." + }, + "postal_code": { + "label": "User Attribute Name for Postal Code", + "tooltip": "Name of User Attribute, which will be used to map to 'postal_code' subclaim inside 'address' token claim. Defaults to 'postal_code' ." + }, + "country": { + "label": "User Attribute Name for Country", + "tooltip": "Name of User Attribute, which will be used to map to 'country' subclaim inside 'address' token claim. Defaults to 'country' ." + }, + "formatted": { + "label": "User Attribute Name for Formatted Address", + "tooltip": "Name of User Attribute, which will be used to map to 'formatted' subclaim inside 'address' token claim. Defaults to 'formatted' ." + } + }, + "included": { + "client": { + "audience": { + "label": "Included Client Audience", + "tooltip": "The Client ID of the specified audience client will be included in audience (aud) field of the token. If there are existing audiences in the token, the specified value is just added to them. It won't override existing audiences." + } + }, + "custom": { + "audience": { + "label": "Included Custom Audience", + "tooltip": "This is used just if 'Included Client Audience' is not filled. The specified value will be included in audience (aud) field of the token. If there are existing audiences in the token, the specified value is just added to them. It won't override existing audiences." + } + } + }, + "name-id-format": "Name ID Format", + "mapper": { + "nameid": { + "format": { + "tooltip": "Name ID Format using Mapper" + } + } + }, + "client-scopes-condition": { + "label": "Expected Scopes", + "tooltip": "The list of expected client scopes. Condition evaluates to true if specified client request matches some of the client scopes. It depends also whether it should be default or optional client scope based on the 'Scope Type' configured." + }, + "client-accesstype": { + "label": "Client Access Type", + "tooltip": "Access Type of the client, for which the condition will be applied." + }, + "client-roles": { + "label": "Client Roles" + }, + "client-roles-condition": { + "tooltip": "Client roles, which will be checked during this condition evaluation. Condition evaluates to true if client has at least one client role with the name as the client roles specified in the configuration." + }, + "client-updater-source-groups": { + "label": "Groups", + "tooltip": "Name of groups to check. Condition evaluates to true if the entity, who creates/updates client is member of some of the specified groups. Configured groups are specified by their simple name, which must match to the name of the Keycloak group. No support for group hierarchy is used here." + }, + "client-updater-trusted-hosts": { + "label": "Trusted hosts", + "tooltip": "List of Hosts, which are trusted. In case that client registration/update request comes from the host/domain specified in this configuration, condition evaluates to true. You can use hostnames or IP addresses. If you use star at the beginning (for example '*.example.com' ) then whole domain example.com will be trusted." + }, + "client-updater-source-roles": { + "label": "Updating entity role", + "tooltip": "The condition is checked during client registration/update requests and it evaluates to true if the entity (usually user), who is creating/updating client is member of the specified role. For reference the realm role, you can use the realm role name like 'my_realm_role' . For reference client role, you can use the client_id.role_name for example 'my_client.my_client_role' will refer to client role 'my_client_role' of client 'my_client'." + } +} \ No newline at end of file diff --git a/public/resources/en/events.json b/public/resources/en/events.json new file mode 100644 index 0000000000..091bff3dc6 --- /dev/null +++ b/public/resources/en/events.json @@ -0,0 +1,35 @@ +{ + "title": "Events", + "eventExplain": "If you want to configure user events, Admin events or Event listeners, please enter <1>Event configs page realm settings to configure.", + "eventConfigs": "Event configs", + "userEvents": "User events", + "adminEvents": "Admin events", + "searchForUserEvent": "Search user event", + "searchForAdminEvent": "Search admin event", + "refresh": "Refresh", + "emptyEvents": "No events logged", + "emptyEventsInstructions": "Configure event logging in the realm settings", + "time": "Time", + "user": "User", + "userId": "User ID", + "username": "User name", + "email": "Email", + "eventType": "Event type", + "ipAddress": "IP address", + "client": "Client", + "dateFrom": "Date(from)", + "dateTo": "Date(to)", + "searchUserEventsBtn": "Search events", + "searchAdminEventsBtn": "Search admin events", + "realm": "Realm", + "resourcePath": "Resource path", + "resourceType": "Resource type", + "resourceTypes": "Resource types", + "operationType": "Operation type", + "operationTypes": "Operation types", + "auth": "Auth", + "attribute": "Attribute", + "value": "Value", + "representation": "Representation", + "noUserDetails": "No user details" +} \ No newline at end of file diff --git a/public/resources/en/groups.json b/public/resources/en/groups.json new file mode 100644 index 0000000000..2f72710603 --- /dev/null +++ b/public/resources/en/groups.json @@ -0,0 +1,62 @@ +{ + "groups": "Groups", + "groupDetails": "Group details", + "childGroups": "Child groups", + "createGroup": "Create group", + "groupName": "Group name", + "searchForGroups": "Search for groups", + "searchGroups": "Search groups", + "searchGroup": "Search group", + "renameGroup": "Rename group", + "deleteGroup": "Delete group", + "leave": "Leave group", + "usersLeft_one": "{{count}} user left the group", + "usersLeft_other": "{{count}} users left the group", + "usersLeftError": "Could not remove users from the group: {{error}}", + "usersAdded_one": "{{count}} user added to the group", + "usersAdded_other": "{{count}} users added to the group", + "usersAddedError": "Could not add users to the group: {{error}}", + "search": "Search", + "members": "Members", + "searchMembers": "Search members", + "addMember": "Add member", + "includeSubGroups": "Include sub-group users", + "path": "Path", + "moveTo": "Move to", + "moveToGroup": "Move {{group1}} to {{group2}}", + "root": "Root", + "moveHere": "Move here", + "moveGroupEmpty": "No sub groups", + "moveGroupEmptyInstructions": "There are no sub groups, select 'Move here' to move the selected group as a subgroup of this group", + "moveGroupSuccess": "Group moved", + "moveGroupError": "Could not move group {{error}}", + "tableOfGroups": "Table of groups", + "groupsDescription": "Placeholder for groups explanation.", + "groupCreated": "Group created", + "couldNotCreateGroup": "Could not create group {{error}}", + "createAGroup": "Create a group", + "renameAGroup": "Rename group", + "create": "Create", + "rename": "Rename", + "email": "Email", + "lastName": "Last name", + "firstName": "First name", + "membership": "Membership", + "noSearchResults": "No search results", + "noSearchResultsInstructions": "Click on the search bar above to search for groups", + "noGroupsInThisRealm": "No groups in this realm", + "noGroupsInThisRealmInstructions": "You haven't created any groups in this realm. Create a group to get started.", + "noGroupsInThisSubGroup": "No groups in this sub group", + "noGroupsInThisSubGroupInstructions": "You haven't created any groups in this sub group.", + "deleteConfirmTitle_one": "Delete group?", + "deleteConfirmTitle_other": "Delete groups?", + "deleteConfirm_one": "Are you sure you want to delete this group", + "deleteConfirm_other": "Are you sure you want to delete this groups.", + "groupDeleted_one": "Group deleted", + "groupDeleted_other": "Groups deleted", + "groupDeleteError": "Error deleting group {error}", + "attributes": "Attributes", + "groupUpdated": "Group updated", + "groupUpdateError": "Error updating group {error}", + "roleMapping": "Role mapping" +} \ No newline at end of file diff --git a/public/resources/en/identity-providers-help.json b/public/resources/en/identity-providers-help.json new file mode 100644 index 0000000000..99938b4123 --- /dev/null +++ b/public/resources/en/identity-providers-help.json @@ -0,0 +1,91 @@ +{ + "redirectURI": "The redirect uri to use when configuring the identity provider.", + "alias": "The alias uniquely identifies an identity provider and it is also used to build the redirect uri.", + "displayName": "Friendly name for Identity Providers.", + "clientId": "The client identifier registered with the identity provider.", + "clientSecret": "The client secret registered with the identity provider. This field is able to obtain its value from vault, use ${vault.ID} format.", + "displayOrder": "Number defining the order of the providers in GUI (for example, on the Login page). The lowest number will be applied first.", + "endpoints": "Shows the configuration of the Service Provider endpoint", + "useDiscoveryEndpoint": "If this setting is enabled, the discovery endpoint will be used to fetch the provider config. Keycloak can load the config from the endpoint and automatically update the config if the source has any updates", + "discoveryEndpoint": "Import metadata from a remote IDP discovery descriptor.", + "importConfig": "Import metadata from a downloaded IDP discovery descriptor.", + "passLoginHint": "Pass login_hint to identity provider.", + "passCurrentLocale": "Pass the current locale to the identity provider as a ui_locales parameter.", + "logoutUrl": "End session endpoint to use to logout user from external IDP.", + "backchannelLogout": "Does the external IDP support backchannel logout?", + "disableUserInfo": "Disable usage of User Info service to obtain additional user information? Default is to use this OIDC service.", + "userInfoUrl": "The User Info Url. This is optional.", + "issuer": "The issuer identifier for the issuer of the response. If not provided, no validation will be performed.", + "scopes": "The scopes to be sent when asking for authorization. It can be a space-separated list of scopes. Defaults to 'openid'.", + "prompt": "Specifies whether the Authorization Server prompts the End-User for re-authentication and consent.", + "acceptsPromptNone": "This is just used together with Identity Provider Authenticator or when kc_idp_hint points to this identity provider. In case that client sends a request with prompt=none and user is not yet authenticated, the error will not be directly returned to client, but the request with prompt=none will be forwarded to this identity provider.", + "validateSignature": "Enable/disable signature validation of external IDP signatures.", + "useJwksUrl": "If the switch is on, identity provider public keys will be downloaded from given JWKS URL. This allows great flexibility because new keys will be always re-downloaded again when identity provider generates new keypair. If the switch is off, public key (or certificate) from the Keycloak DB is used, so when the identity provider keypair changes, you always need to import the new key to the Keycloak DB as well.", + "jwksUrl": "URL where identity provider keys in JWK format are stored. See JWK specification for more details. If you use external Keycloak identity provider, you can use URL like 'http://broker-keycloak:8180/realms/test/protocol/openid-connect/certs' assuming your brokered Keycloak is running on 'http://broker-keycloak:8180' and its realm is 'test' .", + "allowedClockSkew": "Clock skew in seconds that is tolerated when validating identity provider tokens. Default value is zero.", + "attributeConsumingServiceIndex": "Index of the Attribute Consuming Service profile to request during authentication.", + "attributeConsumingServiceName": "Name of the Attribute Consuming Service profile to advertise in the SP metadata.", + "forwardParameters": "Non OpenID Connect/OAuth standard query parameters to be forwarded to external IDP from the initial application request to Authorization Endpoint. Multiple parameters can be entered, separated by comma (,).", + "clientAuthentication": "The client authentication method (cfr. https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication). In case of JWT signed with private key, the realm private key is used.", + "storeTokens": "Enable/disable if tokens must be stored after authenticating users.", + "storedTokensReadable": "Enable/disable if new users can read any stored tokens. This assigns the broker.read-token role.", + "trustEmail": "If enabled, email provided by this provider is not verified even if verification is enabled for the realm.", + "accountLinkingOnly": "If true, users cannot log in through this provider. They can only link to this provider. This is useful if you don't want to allow login from the provider, but want to integrate with a provider", + "hideOnLoginPage": "If hidden, login with this provider is possible only if requested explicitly, for example using the 'kc_idp_hint' parameter.", + "firstBrokerLoginFlowAlias": "Alias of authentication flow, which is triggered after first login with this identity provider. Term 'First Login' means that no Keycloak account is currently linked to the authenticated identity provider account.", + "postBrokerLoginFlowAlias": "Alias of authentication flow, which is triggered after each login with this identity provider. Useful if you want additional verification of each user authenticated with this identity provider (for example OTP). Leave this to \"None\" if you need no any additional authenticators to be triggered after login with this identity provider. Also note that authenticator implementations must assume that user is already set in ClientSession as identity provider already set it.", + "syncMode": "Default sync mode for all mappers. The sync mode determines when user data will be synced using the mappers. Possible values are: 'legacy' to keep the behaviour before this option was introduced, 'import' to only import the user once during first login of the user with this identity provider, 'force' to always update the user during every login with this identity provider.", + "serviceProviderEntityId": "The Entity ID that will be used to uniquely identify this SAML Service Provider.", + "useEntityDescriptor": "Import metadata from a remote IDP SAML entity descriptor.", + "samlEntityDescriptor": "Allows you to load external IDP metadata from a config file or to download it from a URL.", + "ssoServiceUrl": "The Url that must be used to send authentication requests (SAML AuthnRequest).", + "singleLogoutServiceUrl": "The Url that must be used to send logout requests.", + "nameIdPolicyFormat": "Specifies the URI reference corresponding to a name identifier format.", + "principalType": "Way to identify and track external users from the assertion. Default is using Subject NameID, alternatively you can set up identifying attribute.", + "principalAttribute": "Name or Friendly Name of the attribute used to identify external users.", + "allowCreate": "Allow the external identity provider to create a new identifier to represent the principal.", + "httpPostBindingResponse": "Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", + "httpPostBindingAuthnRequest": "Indicates whether the AuthnRequest must be sent using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", + "httpPostBindingLogout": "Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", + "wantAuthnRequestsSigned": "Indicates whether the identity provider expects a signed AuthnRequest.", + "signatureAlgorithm": "The signature algorithm to use to sign documents.", + "samlSignatureKeyName": "Signed SAML documents contain identification of signing key in KeyName element. For Keycloak / RH-SSO counter-party, use KEY_ID, for MS AD FS use CERT_SUBJECT, for others check and use NONE if no other option works.", + "wantAssertionsSigned": "Indicates whether this service provider expects a signed Assertion.", + "wantAssertionsEncrypted": "Indicates whether this service provider expects an encrypted Assertion.", + "forceAuthentication": "Indicates whether the identity provider must authenticate the presenter directly rather than rely on a previous security context.", + "validateSignatures": "Enable/disable signature validation of SAML responses.", + "validatingX509Certs": "The certificate in PEM format that must be used to check for signatures. Multiple certificates can be entered, separated by comma (,).", + "signServiceProviderMetadata": "Enable/disable signature of the provider SAML metadata.", + "passSubject": "During login phase, forward an optional login_hint query parameter to SAML AuthnRequest's Subject.", + "comparison": "Specifies the comparison method used to evaluate the requested context classes or statements. The default is \"Exact\".", + "authnContextClassRefs": "Ordered list of requested AuthnContext ClassRefs.", + "authnContextDeclRefs": "Ordered list of requested AuthnContext DeclRefs.", + "addIdpMapperName": "Name of the mapper.", + "syncModeOverride": "Overrides the default sync mode of the IDP for this mapper. Values are: 'legacy' to keep the behaviour before this option was introduced, 'import' to only import the user once during first login of the user with this identity provider, 'force' to always update the user during every login with this identity provider and 'inherit' to use the sync mode defined in the identity provider for this mapper.", + "advancedAttributeToRole": "If the set of attributes exists and can be matched, grant the user the specified realm or client role.", + "usernameTemplateImporter": "Format the username to import.", + "hardcodedUserSessionAttribute": "When a user is imported from a provider, hardcode a value to a specific user session attribute.", + "externalRoleToRole": "Looks for an external role in a keycloak access token. If external role exists, grant the user the specified realm or client role.", + "advancedClaimToRole": "If all claims exist, grant the user the specified realm or client role.", + "claimToRole": "If a claim exists, grant the user the specified realm or client role.", + "oidcAttributeImporter": "Import declared claim if it exists in ID, access token, or the claim set returned by the user profile endpoint into the specified user property or attribute.", + "attributeImporter": "Import declared SAML attribute if it exists in assertion into the specified user property or attribute.", + "hardcodedRole": "When user is imported from provider, hardcode a role mapping for it.", + "hardcodedAttribute": "When user is imported from provider, hardcode a value to a specific user attribute.", + "samlAttributeToRole": "If an attribute exists, grant the user the specified realm or client role.", + "template": "Template to use to format the username to import. Substitutions are enclosed in ${}. For example: '${ALIAS}.${CLAIM.sub}'. ALIAS is the provider alias. CLAIM. references an ID or Access token claim. The substitution can be converted to upper or lower case by appending |uppercase or |lowercase to the substituted value, e.g. '${CLAIM.sub | lowercase}", + "target": "Destination field for the mapper. LOCAL (default) means that the changes are applied to the username stored in local database upon user import. BROKER_ID and BROKER_USERNAME means that the changes are stored into the ID or username used for federation user lookup, respectively.", + "userSessionAttribute": "Name of user session attribute you want to hardcode", + "userAttribute": "Name of user attribute you want to hardcode", + "claim": "Name of claim to search for in token. You can reference nested claims by using a '.', i.e. 'address.locality'. To use dot (.) literally, escape it with backslash. (\\.)", + "socialProfileJSONFieldPath": "Path of field in Social Provider User Profile JSON data to get value from. You can use dot notation for nesting and square brackets for array index. E.g. 'contact.address[0].country'.", + "userAttributeValue": "Value you want to hardcode", + "attributeName": "Name of attribute to search for in assertion. You can leave this blank and specify a friendly name instead.", + "friendlyName": "Friendly name of attribute to search for in assertion. You can leave this blank and specify a name instead.", + "userAttributeName": "User attribute name to store SAML attribute. Use email, lastName, and firstName to map to those predefined user properties.", + "socialUserAttributeName": "User attribute name to store information.", + "attributeValue": "Value the attribute must have. If the attribute is a list, then the value must be contained in the list.", + "attributes": "Name and (regex) value of the attributes to search for in token. The configured name of an attribute is searched in SAML attribute name and attribute friendly name fields. Every given attribute description must be met to set the role. If the attribute is an array, then the value must be contained in the array. If an attribute can be found several times, then one match is sufficient.", + "regexAttributeValues": "If enabled attribute values are interpreted as regular expressions.", + "role": "Role to grant to user if all attributes are present. Click 'Select Role' button to browse roles, or just type it in the textbox. To reference a client role the syntax is clientname.clientrole, i.e. myclient.myrole" +} \ No newline at end of file diff --git a/public/resources/en/identity-providers.json b/public/resources/en/identity-providers.json new file mode 100644 index 0000000000..fe2d82d942 --- /dev/null +++ b/public/resources/en/identity-providers.json @@ -0,0 +1,174 @@ +{ + "listExplain": "Through Identity Brokering it's easy to allow users to authenticate to Keycloak using external Identity Provider or Social Networks.", + "searchForProvider": "Search for provider", + "providerDetails": "Provider details", + "addProvider": "Add provider", + "addMapper": "Add mapper", + "addIdPMapper": "Add Identity Provider Mapper", + "editIdPMapper": "Edit Identity Provider Mapper", + "mappersList": "Mappers list", + "noMappers": "No Mappers", + "noMappersInstructions": "There are currently no mappers for this identity provider.", + "searchForMapper": "Search for mapper", + "addKeycloakOpenIdProvider": "Add Keycloak OpenID Connect provider", + "addOpenIdProvider": "Add OpenID Connect provider", + "addSamlProvider": "Add SAML provider", + "manageDisplayOrder": "Manage display order", + "deleteProvider": "Delete provider?", + "deleteProviderMapper": "Delete mapper?", + "deleteConfirm": "Are you sure you want to permanently delete the provider '{{provider}}'?", + "deleteMapperConfirm": "Are you sure you want to permanently delete the mapper {{mapper}}?", + "deleteMapperSuccess": "Mapper successfully deleted.", + "deletedSuccess": "Provider successfully deleted.", + "deleteError": "Could not delete the provider {{error}}", + "disableProvider": "Disable provider?", + "disableConfirm": "Are you sure you want to disable the provider '{{provider}}'", + "disableSuccess": "Provider successfully disabled", + "disableError": "Could not disable the provider {{error}}", + "updateSuccess": "Provider successfully updated", + "updateError": "Could not update the provider {{error}}", + "getStarted": "To get started, select a provider from the list below.", + "addIdentityProvider": "Add {{provider}} provider", + "redirectURI": "Redirect URI", + "clientId": "Client ID", + "clientSecret": "Client Secret", + "displayOrder": "Display order", + "endpoints": "Endpoints", + "samlEndpointsLabel": "SAML 2.0 Service Provider Metadata", + "createSuccess": "Identity provider successfully created", + "createError": "Could not create the identity provider: {{error}}", + "orderDialogIntro": "The order that the providers are listed in the login page or the account console. You can drag the row handles to change the order.", + "manageOrderTableAria": "List of identity providers in the order listed on the login page", + "manageOrderItemAria": "Press space or enter to begin dragging, and use the arrow keys to navigate up or down. Press enter to confirm the drag, or any other key to cancel the drag operation.", + "orderChangeSuccess": "Successfully changed display order of identity providers", + "orderChangeError": "Could not change display order of identity providers {{error}}", + "alias": "Alias", + "displayName": "Display name", + "useDiscoveryEndpoint": "Use discovery endpoint", + "discoveryEndpoint": "Discovery endpoint", + "useEntityDescriptor": "Use entity descriptor", + "samlEntityDescriptor": "SAML entity descriptor", + "ssoServiceUrl": "Single Sign-On service URL", + "singleLogoutServiceUrl": "Single logout service URL", + "nameIdPolicyFormat": "NameID policy format", + "persistent": "Persistent", + "transient": "Transient", + "email": "Email", + "kerberos": "Kerberos", + "x509": "X.509 Subject Name", + "windowsDomainQN": "Windows Domain Qualified Name", + "unspecified": "Unspecified", + "principalType": "Principal type", + "principalAttribute": "Principal attribute", + "allowCreate": "Allow create", + "subjectNameId": "Subject NameID", + "attributeName": "Attribute [Name]", + "attributeFriendlyName": "Attribute [Friendly Name]", + "claim": "Claim", + "claimValue": "Claim Value", + "claims": "Claims", + "socialProfileJSONFieldPath": "Social Profile JSON Field Path", + "mapperAttributeName": "Attribute Name", + "mapperUserAttributeName": "User Attribute Name", + "mapperAttributeFriendlyName": "Friendly name", + "httpPostBindingResponse": "HTTP-POST binding response", + "httpPostBindingAuthnRequest": "HTTP-POST binding for AuthnRequest", + "httpPostBindingLogout": "HTTP-POST binding logout", + "wantAuthnRequestsSigned": "Want AuthnRequests signed", + "signatureAlgorithm": "Signature algorithm", + "samlSignatureKeyName": "SAML signature key name", + "wantAssertionsSigned": "Want Assertions signed", + "wantAssertionsEncrypted": "Want Assertions encrypted", + "forceAuthentication": "Force authentication", + "validatingX509Certs": "Validating X509 certificates", + "signServiceProviderMetadata": "Sign service provider metadata", + "passSubject": "Pass subject", + "serviceProviderEntityId": "Service provider entity ID", + "importConfig": "Import config from file", + "showMetaData": "Show metadata", + "hideMetaData": "Hide metadata", + "noValidMetaDataFound": "No valid metadata was found at this URL: '{{error}}'", + "advanced": "Advanced", + "metadataOfDiscoveryEndpoint": "Metadata of the discovery endpoint", + "authorizationUrl": "Authorization URL", + "passLoginHint": "Pass login_hint", + "passCurrentLocale": "Pass current locale", + "tokenUrl": "Token URL", + "logoutUrl": "Logout URL", + "backchannelLogout": "Backchannel logout", + "disableUserInfo": "Disable user info", + "userInfoUrl": "User Info URL", + "issuer": "Issuer", + "scopes": "Scopes", + "prompt": "Prompt", + "prompts": { + "unspecified": "Unspecified", + "none": "None", + "consent": "Consent", + "login": "Login", + "select_account": "Select account" + }, + "clientAuthentication": "Client authentication", + "clientAuthentications": { + "clientAuth_post": "Client secret sent as post", + "clientAuth_basic": "Client secret sent as basic auth", + "clientAuth_secret_jwt": "Client secret as jwt", + "clientAuth_privatekey_jwt": "JWT signed with private key" + }, + "acceptsPromptNone": "Accepts prompt=none forward from client", + "validateSignature": "Validate Signatures", + "useJwksUrl": "Use JWKS URL", + "jwksUrl": "JWKS URL", + "allowedClockSkew": "Allowed clock skew", + "attributeConsumingServiceIndex": "Attribute Consuming Service Index", + "attributeConsumingServiceName": "Attribute Consuming Service Name", + "forwardParameters": "Forwarded query parameters", + "generalSettings": "General settings", + "oidcSettings": "OpenID Connect settings", + "samlSettings": "SAML settings", + "advancedSettings": "Advanced settings", + "reqAuthnConstraints": "Requested AuthnContext Constraints", + "keyID": "KEY_ID", + "NONE": "NONE", + "certSubject": "CERT_SUBJECT", + "storeTokens": "Store tokens", + "storedTokensReadable": "Stored tokens readable", + "comparison": "Comparison", + "authnContextClassRefs": "AuthnContext ClassRefs", + "addAuthnContextClassRef": "Add AuthnContext ClassRef", + "authnContextDeclRefs": "AuthnContext DeclRefs", + "addAuthnContextDeclRef": "Add AuthnContext DeclRef", + "trustEmail": "Trust Email", + "accountLinkingOnly": "Account linking only", + "hideOnLoginPage": "Hide on login page", + "firstBrokerLoginFlowAlias": "First login flow", + "postBrokerLoginFlowAlias": "Post login flow", + "syncMode": "Sync mode", + "syncModes": { + "inherit": "Inherit", + "import": "Import", + "legacy": "Legacy", + "force": "Force" + }, + "syncModeOverride": "Sync mode override", + "mapperType": "Mapper type", + "regexAttributeValues": "Regex Attribute Values", + "regexClaimValues": "Regex Claim Values", + "selectRole": "Select role", + "mapperCreateSuccess": "Mapper created successfully.", + "mapperCreateError": "Error creating mapper.", + "mapperSaveSuccess": "Mapper saved successfully.", + "mapperSaveError": "Error saving mapper: {{error}}", + "userAttribute": "User Attribute", + "attributeValue": "Attribute Value", + "userAttributeValue": "User Attribute Value", + "userSessionAttribute": "User Session Attribute", + "userSessionAttributeValue": "User Session Attribute Value", + "template": "Template", + "target": "Target", + "targetOptions": { + "local": "LOCAL", + "brokerId": "BROKER_ID", + "brokerUsername": "BROKER_USERNAME" + } +} \ No newline at end of file diff --git a/public/resources/en/partial-export.json b/public/resources/en/partial-export.json new file mode 100644 index 0000000000..10b0f6c2fb --- /dev/null +++ b/public/resources/en/partial-export.json @@ -0,0 +1,9 @@ +{ + "partialExportHeaderText": "Partial export allows you to export realm configuration, and other associated resources into a json file.", + "includeGroupsAndRoles": "Include groups and roles", + "includeClients": "Include clients", + "exportWarningTitle": "Export with caution", + "exportWarningDescription": "If there is a great number of groups, roles or clients in your realm, the operation may make server unresponsive for a while.", + "exportSuccess": "Realm successfully exported.", + "exportFail": "Could not export realm: '{{error}}'" +} \ No newline at end of file diff --git a/public/resources/en/partial-import.json b/public/resources/en/partial-import.json new file mode 100644 index 0000000000..b3fa35d4e5 --- /dev/null +++ b/public/resources/en/partial-import.json @@ -0,0 +1,24 @@ +{ + "partialImportHeaderText": "Partial import allows you to import users, clients, and other resources from a previously exported json file.", + "selectRealm": "Select realm", + "chooseResources": "Choose the resources you want to import", + "selectIfResourceExists": "If a resource already exists, specify what should be done", + "import": "Import", + "resourcesToImport": "Resources to import", + "importFail": "Import failed: {{error}}", + "FAIL": "Fail import", + "SKIP": "Skip", + "OVERWRITE": "Overwrite", + "added": "Added", + "skipped": "Skipped", + "overwritten": "Overwritten", + "importAdded_zero": "No records added.", + "importAdded_one": "One record added.", + "importAdded_other": "{{count}} records added.", + "importOverwritten_zero": "No records overwritten.", + "importOverwritten_one": "One record overwritten.", + "importOverwritten_other": "{{count}} records overwritten.", + "importSkipped_zero": "No records skipped.", + "importSkipped_one": "One record skipped.", + "importSkipped_other": "{{count}} records skipped." +} \ No newline at end of file diff --git a/public/resources/en/realm-settings-help.json b/public/resources/en/realm-settings-help.json new file mode 100644 index 0000000000..d684320ccc --- /dev/null +++ b/public/resources/en/realm-settings-help.json @@ -0,0 +1,99 @@ +{ + "fromDisplayName": "A user-friendly name for the 'From' address (optional).", + "replyToDisplayName": "A user-friendly name for the 'Reply-To' address (optional).", + "envelopeFrom": "An email address used for bounces (optional).", + "password": "SMTP password. This field is able to obtain its value from vault, use ${vault.ID} format.", + "frontendUrl": "Set the frontend URL for the realm. Use in combination with the default hostname provider to override the base URL for frontend requests for a specific realm.", + "requireSsl": "Is HTTPS required? 'None' means HTTPS is not required for any client IP address. 'External requests' means localhost and private IP addresses can access without HTTPS. 'All requests' means HTTPS is required for all IP addresses.", + "userManagedAccess": "If enabled, users are allowed to manage their resources and permissions using the Account Management Console.", + "userProfileEnabled": "If enabled, allows managing user profiles.", + "endpoints": "Shows the configuration of the protocol endpoints", + "loginTheme": "Select theme for login, OTP, grant, registration and forgot password pages.", + "accountTheme": "Select theme for user account management pages.", + "adminConsoleTheme": "Select theme for admin console.", + "emailTheme": "Select theme for emails that are sent by the server.", + "displayName": "Display name of provider when linked in admin console", + "priority": "Priority of the provider", + "enabled": "Set if the keys are enabled", + "active": "Set if the keys can be used for signing", + "AESKeySize": "Size in bytes for the generated AES key. Size 16 is for AES-128, Size 24 for AES-192, and Size 32 for AES-256. WARN: Bigger keys than 128 are not allowed on some JDK implementations.", + "save-user-events": "If enabled, login events are saved to the database, which makes events available to the admin and account management consoles.", + "save-admin-events": "If enabled, admin events are saved to the database, which makes events available to the admin console.", + "expiration": "Sets the expiration for events. Expired events are periodically deleted from the database.", + "admin-clearEvents": "Deletes all admin events in the database.", + "includeRepresentation": "Include JSON representation for create and update requests.", + "user-clearEvents": "Deletes all user events in the database.", + "ellipticCurve": "Elliptic curve used in ECDSA", + "secretSize": "Size in bytes for the generated secret", + "keySize": "Size for the generated keys", + "algorithm": "Intended algorithm for the key", + "keystore": "Path to keys file", + "keystorePassword": "Password for the keys", + "keyAlias": "Alias for the private key", + "keyPassword": "Password for the private key", + "privateRSAKey": "Private RSA Key encoded in PEM format", + "x509Certificate": "X509 Certificate encoded in PEM format", + "xFrameOptions": "Default value prevents pages from being included by non-origin iframes <1>Learn more", + "contentSecurityPolicy": "Default value prevents pages from being included by non-origin iframes <1>Learn more", + "contentSecurityPolicyReportOnly": "For testing Content Security Policies <1>Learn more", + "xContentTypeOptions": "Default value prevents Internet Explorer and Google Chrome from MIME-sniffing a response away from the declared content-type <1>Learn more", + "xRobotsTag": "Prevent pages from appearing in search engines <1>Learn more", + "xXSSProtection": "This header configures the Cross-site scripting (XSS) filter in your browser. Using the default behaviour, the browser will prevent rendering of the page when a XSS attack is detected. <1>Learn more", + "strictTransportSecurity": "The Strict-Transport-Security HTTP header tells browsers to always use HTTPS. Once a browser sees this header, it will only visit the site over HTTPS for the time specified (1 year) at max-age, including the subdomains. <1>Learn more", + "failureFactor": "How many failures before wait is triggered.", + "permanentLockout": "Lock the user permanently when the user exceeds the maximum login failures.", + "waitIncrementSeconds": "When failure threshold has been met, how much time should the user be locked out?", + "maxFailureWaitSeconds": "Max time a user will be locked out.", + "maxDeltaTimeSeconds": "When will failure count be reset?", + "quickLoginCheckMilliSeconds": "If a failure happens concurrently too quickly, lock out the user.", + "minimumQuickLoginWaitSeconds": "How long to wait after a quick login failure.", + "ssoSessionIdle": "Time a session is allowed to be idle before it expires. Tokens and browser sessions are invalidated when a session is expired.", + "ssoSessionMax": "Max time before a session is expired. Tokens and browser sessions are invalidated when a session is expired.", + "ssoSessionIdleRememberMe": "Time a remember me session is allowed to be idle before it expires. Tokens and browser sessions are invalidated when a session is expired. If not set it uses the standard SSO Session Idle value.", + "ssoSessionMaxRememberMe": "Max time before a session is expired when a user has set the remember me option. Tokens and browser sessions are invalidated when a session is expired. If not set it uses the standard SSO Session Max value.", + "clientSessionIdle": "Time a client session is allowed to be idle before it expires. Tokens are invalidated when a client session is expired. If not set it uses the standard SSO Session Idle value.", + "clientSessionMax": "Max time before a client session is expired. Tokens are invalidated when a session is expired. If not set it uses the standard SSO Session Max value.", + "offlineSessionIdle": "Time an offline session is allowed to be idle before it expires. You need to use offline token to refresh at least once within this period; otherwise offline session will expire.", + "offlineSessionMaxLimited": "Enable offline session max", + "offlineSessionMax": "Max time before an offline session is expired regardless of activity.", + "loginTimeout": "Max time a user has to complete a login. This is recommended to be relatively long, such as 30 minutes or more", + "loginActionTimeout": "Max time a user has to complete login related actions like update password or configure totp. This is recommended to be relatively long, such as 5 minutes or more", + "defaultSigAlg": "Default algorithm used to sign tokens for the realm", + "revokeRefreshToken": "If enabled a refresh token can only be used up to 'Refresh Token Max Reuse' and is revoked when a different token is used. Otherwise refresh tokens are not revoked when used and can be used multiple times.", + "refreshTokenMaxReuse": "Maximum number of times a refresh token can be reused. When a different token is used, revocation is immediate.", + "accessTokenLifespan": "Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout", + "accessTokenLifespanImplicitFlow": "Max time before an access token issued during OpenID Connect Implicit Flow is expired. This value is recommended to be shorter than the SSO timeout. There is no possibility to refresh token during implicit flow, that's why there is a separate timeout different to 'Access Token Lifespan'", + "clientLoginTimeout": "Max time a client has to finish the access token protocol. This should normally be 1 minute.", + "userInitiatedActionLifespan": "Maximum time before an action permit sent by a user (such as a forgot password e-mail) is expired. This value is recommended to be short because it's expected that the user would react to self-created action quickly.", + "defaultAdminInitiatedActionLifespan": "Maximum time before an action permit sent to a user by administrator is expired. This value is recommended to be long to allow administrators to send e-mails for users that are currently offline. The default timeout can be overridden immediately before issuing the token.", + "overrideActionTokens": "Override default settings of maximum time before an action permit sent by a user (such as a forgot password e-mail) is expired for specific action. This value is recommended to be short because it's expected that the user would react to self-created action quickly.", + "internationalization": "If enabled, you can choose which locales you support for this realm and which locale is the default.", + "supportedLocales": "The locales to support for this realm. The user chooses one of these locales on the login screen.", + "defaultLocale": "The initial locale to use. It is used on the login screen and other screens in the Admin Console and Account Console.", + "conditions": "Conditions, which will be evaluated to determine if client policy should be applied during particular action or not.", + "clientProfiles": "Client profiles applied on this policy.", + "anyClient": "The condition is satisfied by any client on any event.", + "clientAccessType": "It uses the client's access type (confidential, public, bearer-only) to determine whether the policy is applied. Condition is checked during most of OpenID Connect requests (Authorization requests, token requests, introspection endpoint request, etc.)", + "clientAccesstypeTooltip": "Access Type of the client, for which the condition will be applied.", + "clientRoles": "The condition checks whether one of the specified client roles exists on the client to determine whether the policy is applied. This effectively allows client administrator to create client role of specified name on the client to make sure that particular client policy will be applied on requests of this client. Condition is checked during most of OpenID Connect requests (Authorization requests, token requests, introspection endpoint request, etc.)", + "clientRolesConditionTooltip": "Client roles, which will be checked during this condition evaluation. Condition evaluates to true if client has at least one client role with the name as the client roles specified in the configuration.", + "clientScopes": "It uses the scopes requested or assigned in advance to the client to determine whether the policy is applied to this client. Condition is evaluated during OpenID Connect authorization request and/or token request.", + "clientScopesConditionTooltip": "The list of expected client scopes. Condition evaluates to true if specified client request matches some of the client scopes. It depends also whether it should be default or optional client scope based on the 'Scope Type' configured.", + "clientUpdaterContext": "The condition checks the context how is client created/updated to determine whether the policy is applied. For example it checks if client is created with admin REST API or OIDC dynamic client registration. And for the letter case if it is ANONYMOUS client registration or AUTHENTICATED client registration with Initial access token or Registration access token and so on.", + "clientUpdaterSourceGroups": "The condition checks the group of the entity who tries to create/update the client to determine whether the policy is applied.", + "clientUpdaterSourceGroupsTooltip": "Name of groups to check. Condition evaluates to true if the entity, who creates/updates client is member of some of the specified groups. Configured groups are specified by their simple name, which must match to the name of the Keycloak group. No support for group hierarchy is used here.", + "clientUpdaterSourceHost": "The condition checks the host/domain of the entity who tries to create/update the client to determine whether the policy is applied.", + "clientUpdaterTrustedHostsTooltip": "List of Hosts, which are trusted. In case that client registration/update request comes from the host/domain specified in this configuration, condition evaluates to true. You can use hostnames or IP addresses. If you use star at the beginning (for example '*.example.com' ) then whole domain example.com will be trusted.", + "clientUpdaterSourceRoles": "The condition checks the role of the entity who tries to create/update the client to determine whether the policy is applied.", + "clientUpdaterSourceRolesTooltip": "The condition is checked during client registration/update requests and it evaluates to true if the entity (usually user), who is creating/updating client is member of the specified role. For reference the realm role, you can use the realm role name like 'my_realm_role' . For reference client role, you can use the client_id.role_name for example 'my_client.my_client_role' will refer to client role 'my_client_role' of client 'my_client'. ", + "defaultGroups": "Default groups allow you to automatically assign groups membership whenever any new user is created or imported through <1>identity brokering.", + "attributeGeneralSettingsDescription": "This section contains a few basic settings common to all attributes.", + "attributeNameHelp": "The name of the attribute.", + "attributeDisplayNameHelp": "Display name for the attribute. Supports keys for localized values as well. For example: ${profile.attribute.phoneNumber}.", + "attributeGroupHelp": "user.profile.attribute.group.tooltip", + "requiredHelp": "Set the attribute as required. If enabled, the attribute must be set by users and administrators. Otherwise, the attribute is optional.", + "attributePermissionDescription": "This section contains permissions for who can edit and who can view the attribute.", + "whoCanEditHelp": "If enabled, users or administrators can view and edit the attribute. Otherwise, users or administrators don't have access to write to the attribute.", + "whoCanViewHelp": "If enabled, users or administrators can view the attribute. Otherwise, users or administrators don't have access to the attribute.", + "editUsername": "If enabled, the username field is editable, readonly otherwise." +} \ No newline at end of file diff --git a/public/resources/en/realm-settings.json b/public/resources/en/realm-settings.json new file mode 100644 index 0000000000..650431ddf3 --- /dev/null +++ b/public/resources/en/realm-settings.json @@ -0,0 +1,812 @@ +{ + "realmSettingsExplain": "Placeholder for realm settings explanation.", + "partialImport": "Partial import", + "partialExport": "Partial export", + "deleteRealm": "Delete realm", + "deleteConfirmTitle": "Delete realm?", + "dragInstruction": "Click and drag to change priority", + "deleteConfirm": "If you delete this realm, all associated data will be removed.", + "deleteProviderTitle": "Delete key provider?", + "deleteProviderConfirm": "Are you sure you want to permanently delete the key provider {{provider}}?", + "deleteProviderSuccess": "Success. The provider has been deleted.", + "deleteProviderError": "Error deleting the provider", + "deletedSuccess": "The realm has been deleted", + "deleteError": "Could not delete realm: {{error}}", + "deleteConditionSuccess": "The condition has been deleted", + "disableConfirmTitle": "Disable realm?", + "disableConfirm": "User and clients can't access the realm if it's disabled. Are you sure you want to continue?", + "disablePolicyConfirmTitle": "Disable policy?", + "disablePolicyConfirm": "Users and clients can't access the policy if it's disabled. Are you sure you want to continue?", + "editProvider": "Edit provider", + "editableRowsTable": "Editable rows table", + "saveSuccess": "Realm successfully updated", + "saveProviderSuccess": "The provider has been saved successfully.", + "saveProviderListSuccess": "The priority of the provider has been updated successfully.", + "saveProviderError": "Error saving provider: {{error}}", + "saveError": "Realm could not be updated: {{error}}", + "general": "General", + "login": "Login", + "themes": "Themes", + "events": "Events", + "eventListeners": "Event listeners", + "eventListenersHelpText": "Configure what listeners receive events for the realm.", + "saveEventListeners": "Save Event Listeners", + "saveEventListenersSuccess": "Event listener has been updated.", + "saveEventListenersError": "Error saving event listener: {{error}}", + "userEventsConfig": "User events configuration", + "userEventsSettings": "User events settings", + "adminEventsConfig": "Admin events configuration", + "adminEventsSettings": "Admin events settings", + "saveEvents": "Save events", + "expiration": "Expiration", + "clearUserEvents": "Clear user events", + "clearAdminEvents": "Clear admin events", + "includeRepresentation": "Include representation", + "email": "Email", + "template": "Template", + "connectionAndAuthentication": "Connection & Authentication", + "from": "From", + "fromDisplayName": "From display name", + "replyTo": "Reply to", + "replyToDisplayName": "Reply to display name", + "envelopeFrom": "Envelope from", + "host": "Host", + "port": "Port", + "encryption": "Encryption", + "authentication": "Authentication", + "enableSSL": "Enable SSL", + "enableStartTLS": "Enable StartTLS", + "username": "Username", + "password": "Password", + "keys": "Keys", + "keysList": "Keys list", + "searchKey": "Search key", + "keystore": "Keystore", + "keystorePassword": "Keystore password", + "keyAlias": "Key alias", + "keyPassword": "Key password", + "providers": "Providers", + "algorithm": "Algorithm", + "aesGenerated": "aes-generated", + "ecdsaGenerated": "ecdsca-generated", + "hmacGenerated": "hmac-generated", + "javaKeystore": "java-keystore", + "rsa": "rsa", + "rsaGenerated": "rsa-generated", + "consoleDisplayName": "Console Display Name", + "AESKeySize": "AES Key Size", + "active": "Active", + "privateRSAKey": "Private RSA Key", + "filenamePlaceholder": "Upload a PEM file or paste key below", + "x509Certificate": "X509 Certificate", + "ellipticCurve": "Elliptic Curve", + "secretSize": "Secret size", + "keySize": "Key size", + "type": "Type", + "name": "Name", + "providerId": "ID", + "kid": "Kid", + "provider": "Provider", + "providerDescription": "Provider description", + "addProvider": "Add provider", + "publicKeys": "Public keys", + "keysFilter": { + "ACTIVE": "Active keys", + "PASSIVE": "Passive keys", + "DISABLED": "Disabled keys" + }, + "noKeys": "No keys", + "noKeysDescription": "You haven't created any active keys", + "certificate": "Certificate", + "loginScreenCustomization": "Login screen customization", + "userRegistration": "User registration", + "userRegistrationHelpText": "Enable/disable the registration page. A link for registration will show on login page too.", + "forgotPassword": "Forgot password", + "forgotPasswordHelpText": "Show a link on login page for user to click when they have forgotten their credentials.", + "rememberMe": "Remember me", + "rememberMeHelpText": "Show checkbox on login page to allow user to remain logged in between browser restarts until session expires.", + "emailSettings": "Email settings", + "emailAsUsername": "Email as username", + "emailAsUsernameHelpText": "Allow users to set email as username.", + "loginWithEmail": "Login with email", + "loginWithEmailHelpText": "Allow users to log in with their email address.", + "duplicateEmails": "Duplicate emails", + "duplicateEmailsHelpText": "Allow multiple users to have the same email address. Changing this setting will also clear the user's cache. It is recommended to manually update email constraints of existing users in the database after switching off support for duplicate email addresses.", + "provideEmailTitle": "Provide your email address", + "provideEmail": "To test connection, you should provide your email address first.", + "verifyEmail": "Verify email", + "verifyEmailHelpText": "Require user to verify their email address after initial login or after address changes are submitted.", + "userInfoSettings": "User info settings", + "editUsername": "Edit username", + "testConnection": "Test connection", + "testConnectionSuccess": "Success! SMTP connection successful. E-mail was sent!", + "testConnectionError": "Error! Failed to send email.", + "realmId": "Realm ID", + "displayName": "Display name", + "htmlDisplayName": "HTML Display name", + "frontendUrl": "Frontend URL", + "requireSsl": "Require SSL", + "sslType": { + "all": "All requests", + "external": "External requests", + "none": "None" + }, + "selectATheme": "Select a theme", + "allSupportedLocales": { + "ca": "Català", + "cs": "Čeština", + "da": "Dansk", + "de": "Deutsch", + "en": "English", + "es": "Español", + "fr": "Français", + "hu": "Magyar", + "it": "Italiano", + "ja": "日本語", + "lt": "Lietuvių kalba", + "nl": "Nederlands", + "no": "Norsk", + "pl": "Polski", + "pt-BR": "Português (Brasil)", + "ru": "Русский", + "sk": "Slovenčina", + "sv": "Svenska", + "tr": "Türkçe", + "zh-CN": "中文" + }, + "placeholderText": "Select one", + "userManagedAccess": "User-managed access", + "userProfileEnabled": "User Profile Enabled", + "endpoints": "Endpoints", + "openIDEndpointConfiguration": "OpenID Endpoint Configuration", + "samlIdentityProviderMetadata": "SAML 2.0 Identity Provider Metadata", + "loginTheme": "Login theme", + "accountTheme": "Account theme", + "adminTheme": "Admin console theme", + "emailTheme": "Email theme", + "internationalization": "Internationalization", + "localization": "Localization", + "sessions": "Sessions", + "SSOSessionSettings": "SSO Session Settings", + "SSOSessionIdle": "SSO Session Idle", + "SSOSessionMax": "SSO Session Max", + "SSOSessionIdleRememberMe": "SSO Session Idle Remember Me", + "SSOSessionMaxRememberMe": "SSO Session Max Remember Me", + "clientSessionSettings": "Client session settings", + "clientSessionIdle": "Client Session Idle", + "clientSessionMax": "Client Session Max", + "offlineSessionSettings": "Offline session settings", + "offlineSessionIdle": "Offline Session Idle", + "offlineSessionMaxLimited": "Offline Session Max Limited", + "offlineSessionMax": "Offline Session Max", + "loginSettings": "Login settings", + "loginTimeout": "Login timeout", + "loginActionTimeout": "Login action timeout", + "refreshTokens": "Refresh tokens", + "accessTokens": "Access tokens", + "actionTokens": "Action tokens", + "overrideActionTokens": "Override Action Tokens", + "defaultSigAlg": "Default Signature Algorithm", + "revokeRefreshToken": "Revoke Refresh Token", + "refreshTokenMaxReuse": "Refresh Token Max Reuse", + "accessTokenLifespan": "Access Token Lifespan", + "accessTokenLifespanImplicitFlow": "Access Token Lifespan For Implicit Flow", + "clientLoginTimeout": "Client Login Timeout", + "userInitiatedActionLifespan": "User-Initiated Action Lifespan", + "defaultAdminInitiated": "Default Admin-Initiated Action Lifespan", + "emailVerification": "Email Verification", + "idpAccountEmailVerification": "IdP account email verification", + "executeActions": "Execute actions", + "clientPolicies": "Client policies", + "noClientPolicies": "No client policies", + "noClientPoliciesInstructions": "There are no client policies. Select 'Create client policy' to create a new client policy.", + "createPolicy": "Create policy", + "createClientPolicy": "Create client policy", + "createClientPolicySuccess": "New policy created", + "updateClientPolicySuccess": "Client policy updated", + "createClientPolicyError": "Could not create policy due to: {{error}}", + "createClientConditionSuccess": "Condition created successfully.", + "createClientConditionError": "Error creating condition: {{error}}", + "updateClientConditionSuccess": "Condition updated successfully.", + "deleteClientConditionSuccess": "Condition deleted successfully.", + "deleteClientConditionError": "Error creating condition: {{error}}", + "clientPolicySearch": "Search client policy", + "policiesConfigType": "Configure via:", + "policiesConfigTypes": { + "formView": "Form view", + "jsonEditor": "JSON editor" + }, + "deleteClientPolicy": "Delete client policy", + "deleteClientPolicyConfirmTitle": "Delete policy?", + "deleteClientPolicyConfirm": "This action will permanently delete the policy {{policyName}}. This cannot be undone.", + "deleteClientPolicySuccess": "Client policy deleted", + "deleteClientPolicyError": "Could not delete policy: {{error}}", + "profiles": "Profiles", + "policies": "Policies", + "clientPoliciesProfilesHelpText": "Client Profile allows to setup set of executors, which are enforced for various actions done with the client. Actions can be admin actions like creating or updating client, or user actions like authentication to the client.", + "clientPoliciesProfiles": "Client Policies Profiles", + "clientPoliciesPoliciesHelpText": "Client Policy allows to bind client profiles with various conditions to specify when exactly is enforced behavior specified by executors of the particular client profile.", + "clientPoliciesPolicies": "Client Policies Policies", + "clientPoliciesTab": "Client policies tab", + "clientProfilesSubTab": "Client profiles subtab", + "clientPoliciesSubTab": "Client policies subtab", + "profilesConfigType": "Configure via:", + "profilesConfigTypes": { + "formView": "Form view", + "jsonEditor": "JSON editor" + }, + "clientProfileSearch": "Search", + "searchProfile": "Search profile", + "clientProfileName": "Client profile name", + "clientProfileDescription": "Description", + "emptyClientProfiles": "No profiles", + "emptyClientProfilesInstructions": "There are no profiles, select 'Create client profile' to create a new client profile", + "deleteClientProfileConfirmTitle": "Delete profile?", + "deleteClientProfileConfirm": "This action will permanently delete the profile {{profileName}}. This cannot be undone.", + "deleteClientSuccess": "Client profile deleted", + "deleteClientError": "Could not delete profile: {{error}}", + "deleteClientPolicyProfileConfirmTitle": "Delete profile?", + "deleteClientPolicyProfileConfirm": "This action will permanently delete {{profileName}} from the policy {{policyName}}. This cannot be undone.", + "deleteClientPolicyProfileSuccess": "Profile successfully removed from the policy.", + "deleteClientPolicyProfileError": "Could not delete profile from the policy: {{error}}", + "createClientProfile": "Create client profile", + "deleteClientProfile": "Delete this client profile", + "createClientProfileSuccess": "New client profile created", + "updateClientProfileSuccess": "Client profile updated successfully", + "createClientProfileError": "Could not create client profile: '{{error}}'", + "addClientProfileSuccess": "New client profile added", + "addClientProfileError": "Could not create client profile: '{{error}}'", + "createClientProfileNameHelperText": "The name must be unique within the realm", + "newClientProfile": "Create client profile", + "newClientProfileName": "Client profile name", + "clientProfile": "Client profile details", + "executorDetails": "Executor details", + "back": "Back", + "delete": "delete", + "save": "Save", + "reload": "Reload", + "global": "Global", + "description": "description", + "executors": "Executors", + "executorsHelpText": "Executors, which will be applied for this client profile", + "executorsHelpItem": "Executors help item", + "addExecutor": "Add executor", + "executorType": "Executor type", + "executorTypeSwitchHelpText": "Executor Type Switch Help Text", + "executorTypeSelectHelpText": "Executor Type Select Help Text", + "executorTypeSelectAlgorithm": "Executor Type Select Algorithm", + "executorTypeTextHelpText": "Executor Type Text Help Text", + "executorAuthenticatorMultiSelectHelpText": "Executor Authenticator MultiSelect Help Text", + "executorClientAuthenticator": "Executor Client Authenticator", + "executorsTable": "Executors table", + "executorName": "Name", + "emptyExecutors": "No executors configured", + "addExecutorSuccess": "Success! Executor created successfully", + "addExecutorError": "Executor not created", + "updateExecutorSuccess": "Executor updated successfully", + "updateExecutorError": "Executor not updated", + "deleteExecutorProfileConfirmTitle": "Delete executor?", + "deleteExecutorProfileConfirm": "The action will permanently delete {{executorName}}. This cannot be undone.", + "deleteExecutorSuccess": "Success! The executor was deleted.", + "deleteExecutorError": "Could not delete executor: {{error}}", + "updateClientProfilesSuccess": "The client profiles configuration was updated", + "updateClientProfilesError": "Provided JSON is incorrect: Unexpected token { in JSON", + "deleteClientPolicyConditionConfirmTitle": "Delete condition?", + "deleteClientPolicyConditionConfirm": "This action will permanently delete {{condition}}. This cannot be undone.", + "selectACondition": "Select a condition", + "conditions": "Conditions", + "conditionType": "Condition type", + "policyDetails": "Policy details", + "anyClient": "The condition is satisfied by any client on any event.", + "clientAccesstype": "Client Access Type", + "clientRoles": "Client Roles", + "clientScopesCondition": "Expected Scopes", + "updateClientContext": "Update Client Context", + "clientUpdaterSourceGroups": "Groups", + "clientUpdaterTrustedHosts": "Trusted Hosts", + "clientUpdaterSourceRoles": "Updating entity role", + "conditionsHelpItem": "Conditions help item", + "addCondition": "Add condition", + "editCondition": "Edit condition", + "emptyConditions": "No conditions configured", + "updateClientPoliciesSuccess": "The client policies configuration was updated", + "updateClientPoliciesError": "Provided JSON is incorrect: Unexpected token { in JSON", + "clientProfiles": "Client profiles", + "clientProfilesHelpItem": "Client profiles help item", + "addClientProfile": "Add client profile", + "emptyProfiles": "No client profiles configured", + "tokens": "Tokens", + "userProfile": "User profile", + "jsonEditor": "JSON editor", + "attributes": "Attributes", + "attributesGroup": "Attributes group", + "invalidJsonError": "Unable to save user profile, the provided information is not valid JSON.", + "userProfileSuccess": "User profile settings successfully updated.", + "userProfileError": "Could not update user profile settings: {{error}}", + "status": "Status", + "recommendedSsoTimeout": "It is recommended for this value to be shorter than the SSO session idle timeout: {{time}}", + "supportedLocales": "Supported locales", + "defaultLocale": "Default locale", + "selectLocales": "Select locales", + "searchForMessageBundle": "Search for message bundle", + "addMessageBundle": "Add message bundle", + "addMessageBundleSuccess": "Success! The message bundle has been added.", + "rowEditBtnAriaLabel": "Edit {{messageBundle}}", + "rowSaveBtnAriaLabel": "Save edits for {{messageBundle}}", + "rowCancelBtnAriaLabel": "Cancel edits for {{messageBundle}}", + "updateMessageBundleSuccess": "Success! Message bundle updated.", + "updateMessageBundleError": "Error updating message bundle.", + "addMessageBundleError": "Error creating message bundle, {{error}}", + "allGroups": "All groups", + "attributeName": "Name", + "attributeDisplayName": "Display name", + "attributeGroup": "Attribute group", + "enabledWhen": "Enabled when", + "required": "Required", + "requiredFor": "Required for", + "requiredWhen": "Required when", + "whoCanEdit": "Who can edit?", + "whoCanView": "Who can view?", + "user": "User", + "admin": "Admin", + "addValidator": "Add validator", + "addValidatorRole": "Add {{validatorName}} validator", + "validatorDialogColNames": { + "colName": "Role name", + "colDescription": "Description" + }, + "validatorColNames": { + "colName": "Validator name", + "colConfig": "Config" + }, + "deleteValidatorConfirmTitle": "Delete validator?", + "deleteValidatorConfirmMsg": "Are you sure you want to permanently delete the validator {{validatorName}}?", + "validatorDeletedSuccess": "Success! User Profile configuration has been saved.", + "validatorDeletedError": "Error saving User Profile: {{error}}", + "emptyValidators": "No validators.", + "updatedUserProfileSuccess": "User Profile configuration has been saved", + "updatedUserProfileError": "User Profile configuration hasn't been saved", + "createAttribute": "Create attribute", + "editAttribute": "Edit attribute", + "createAttributeSubTitle": "Create a new attribute", + "createAttributeSuccess": "Success! User Profile configuration has been saved.", + "createAttributeError": "Error! User Profile configuration has not been saved {{error}}.", + "attributesDropdown": "Attributes dropdown", + "deleteAttributeConfirmTitle": "Delete attribute?", + "deleteAttributeConfirm": "Are you sure you want to permanently delete the attribute {{attributeName}}?", + "deleteAttributeSuccess": "Attribute deleted", + "deleteAttributeError": "Attribute not deleted", + "always": "Always", + "scopesAsRequested": "Scopes are requested", + "generalSettings": "General settings", + "permission": "Permission", + "validations": "Validations", + "annotations": "Annotations", + "addAnnotationText": "Add annotation", + "validateName": "Attribute configuration without name is not allowed.", + "eventType": "Event saved type", + "searchEventType": "Search saved event type", + "addSavedTypes": "Add saved types", + "addTypes": "Add types", + "eventTypes": { + "SEND_RESET_PASSWORD": { + "name": "Send reset password", + "description": "Send reset password" + }, + "UPDATE_CONSENT_ERROR": { + "name": "Update consent error", + "description": "Update consent error" + }, + "GRANT_CONSENT": { + "name": "Grant consent", + "description": "Grant consent" + }, + "REMOVE_TOTP": { + "name": "Remove totp", + "description": "Remove totp" + }, + "REVOKE_GRANT": { + "name": "Revoke grant", + "description": "Revoke grant" + }, + "UPDATE_TOTP": { + "name": "Update totp", + "description": "Update totp" + }, + "LOGIN_ERROR": { + "name": "Login error", + "description": "Login error" + }, + "CLIENT_LOGIN": { + "name": "Client login", + "description": "Client login" + }, + "RESET_PASSWORD_ERROR": { + "name": "Reset password error", + "description": "Reset password error" + }, + "IMPERSONATE_ERROR": { + "name": "Impersonate error", + "description": "Impersonate error" + }, + "CODE_TO_TOKEN_ERROR": { + "name": "Code to token error", + "description": "Code to token error" + }, + "CUSTOM_REQUIRED_ACTION": { + "name": "Custom required action", + "description": "Custom required action" + }, + "RESTART_AUTHENTICATION": { + "name": "Restart authentication", + "description": "Restart authentication" + }, + "IMPERSONATE": { + "name": "Impersonate", + "description": "Impersonate" + }, + "UPDATE_PROFILE_ERROR": { + "name": "Update profile error", + "description": "Update profile error" + }, + "LOGIN": { + "name": "Login", + "description": "Login" + }, + "UPDATE_PASSWORD_ERROR": { + "name": "Update password error", + "description": "Update password error" + }, + "CLIENT_INITIATED_ACCOUNT_LINKING": { + "name": "Client initiated account linking", + "description": "Client initiated account linking" + }, + "TOKEN_EXCHANGE": { + "name": "Token exchange", + "description": "Token exchange" + }, + "LOGOUT": { + "name": "Logout", + "description": "Logout" + }, + "REGISTER": { + "name": "Register", + "description": "Register" + }, + "DELETE_ACCOUNT_ERROR": { + "name": "Delete account error", + "description": "Delete account error" + }, + "CLIENT_REGISTER": { + "name": "Client register", + "description": "Client register" + }, + "IDENTITY_PROVIDER_LINK_ACCOUNT": { + "name": "Identity provider link account", + "description": "Identity provider link account" + }, + "DELETE_ACCOUNT": { + "name": "Delete account", + "description": "Delete account" + }, + "UPDATE_PASSWORD": { + "name": "Update password", + "description": "Update password" + }, + "CLIENT_DELETE": { + "name": "Client delete", + "description": "Client delete" + }, + "FEDERATED_IDENTITY_LINK_ERROR": { + "name": "Federated identity link error", + "description": "Federated identity link error" + }, + "IDENTITY_PROVIDER_FIRST_LOGIN": { + "name": "Identity provider first login", + "description": "Identity provider first login" + }, + "CLIENT_DELETE_ERROR": { + "name": "Client delete error", + "description": "Client delete error" + }, + "VERIFY_EMAIL": { + "name": "Verify email", + "description": "Verify email" + }, + "CLIENT_LOGIN_ERROR": { + "name": "Client login error", + "description": "Client login error" + }, + "RESTART_AUTHENTICATION_ERROR": { + "name": "Restart authentication error", + "description": "Restart authentication error" + }, + "EXECUTE_ACTIONS": { + "name": "Execute actions", + "description": "Execute actions" + }, + "REMOVE_FEDERATED_IDENTITY_ERROR": { + "name": "Remove federated identity error", + "description": "Remove federated identity error" + }, + "TOKEN_EXCHANGE_ERROR": { + "name": "Token exchange error", + "description": "Token exchange error" + }, + "PERMISSION_TOKEN": { + "name": "Permission token", + "description": "Permission token" + }, + "SEND_IDENTITY_PROVIDER_LINK_ERROR": { + "name": "Send identity provider link error", + "description": "Send identity provider link error" + }, + "EXECUTE_ACTION_TOKEN_ERROR": { + "name": "Execute action token error", + "description": "Execute action token error" + }, + "SEND_VERIFY_EMAIL": { + "name": "Send verify email", + "description": "Send verify email" + }, + "EXECUTE_ACTIONS_ERROR": { + "name": "Execute actions error", + "description": "Execute actions error" + }, + "REMOVE_FEDERATED_IDENTITY": { + "name": "Remove federated identity", + "description": "Remove federated identity" + }, + "IDENTITY_PROVIDER_POST_LOGIN": { + "name": "Identity provider post login", + "description": "Identity provider post login" + }, + "IDENTITY_PROVIDER_LINK_ACCOUNT_ERROR": { + "name": "Identity provider link account error", + "description": "Identity provider link account error" + }, + "UPDATE_EMAIL": { + "name": "Update email", + "description": "Update email" + }, + "REGISTER_ERROR": { + "name": "Register error", + "description": "Register error" + }, + "REVOKE_GRANT_ERROR": { + "name": "Revoke grant error", + "description": "Revoke grant error" + }, + "EXECUTE_ACTION_TOKEN": { + "name": "Execute action token", + "description": "Execute action token" + }, + "LOGOUT_ERROR": { + "name": "Logout error", + "description": "Logout error" + }, + "UPDATE_EMAIL_ERROR": { + "name": "Update email error", + "description": "Update email error" + }, + "CLIENT_UPDATE_ERROR": { + "name": "Client update error", + "description": "Client update error" + }, + "UPDATE_PROFILE": { + "name": "Update profile", + "description": "Update profile" + }, + "CLIENT_REGISTER_ERROR": { + "name": "Client register error", + "description": "Client register error" + }, + "FEDERATED_IDENTITY_LINK": { + "name": "Federated identity link", + "description": "Federated identity link" + }, + "SEND_IDENTITY_PROVIDER_LINK": { + "name": "Send identity provider link", + "description": "Send identity provider link" + }, + "SEND_VERIFY_EMAIL_ERROR": { + "name": "Send verify email error", + "description": "Send verify email error" + }, + "RESET_PASSWORD": { + "name": "Reset password", + "description": "Reset password" + }, + "CLIENT_INITIATED_ACCOUNT_LINKING_ERROR": { + "name": "Client initiated account linking error", + "description": "Client initiated account linking error" + }, + "UPDATE_CONSENT": { + "name": "Update consent", + "description": "Update consent" + }, + "REMOVE_TOTP_ERROR": { + "name": "Remove totp error", + "description": "Remove totp error" + }, + "VERIFY_EMAIL_ERROR": { + "name": "Verify email error", + "description": "Verify email error" + }, + "SEND_RESET_PASSWORD_ERROR": { + "name": "Send reset password error", + "description": "Send reset password error" + }, + "CLIENT_UPDATE": { + "name": "Client update", + "description": "Client update" + }, + "CUSTOM_REQUIRED_ACTION_ERROR": { + "name": "Custom required action error", + "description": "Custom required action error" + }, + "IDENTITY_PROVIDER_POST_LOGIN_ERROR": { + "name": "Identity provider post login error", + "description": "Identity provider post login error" + }, + "UPDATE_TOTP_ERROR": { + "name": "Update totp error", + "description": "Update totp error" + }, + "CODE_TO_TOKEN": { + "name": "Code to token", + "description": "Code to token" + }, + "GRANT_CONSENT_ERROR": { + "name": "Grant consent error", + "description": "Grant consent error" + }, + "IDENTITY_PROVIDER_FIRST_LOGIN_ERROR": { + "name": "Identity provider first login error", + "description": "Identity provider first login error" + }, + "REGISTER_NODE_ERROR": { + "name": "Register node error", + "description": "Register node error" + }, + "PERMISSION_TOKEN_ERROR": { + "name": "Permission token error", + "description": "Permission token error" + }, + "IDENTITY_PROVIDER_RETRIEVE_TOKEN_ERROR": { + "name": "Identity provider retrieve token error", + "description": "Identity provider retrieve token error" + }, + "CLIENT_INFO": { + "name": "Client info", + "description": "Client info" + }, + "VALIDATE_ACCESS_TOKEN": { + "name": "Validate access token", + "description": "Validate access token" + }, + "IDENTITY_PROVIDER_LOGIN": { + "name": "Identity provider login", + "description": "Identity provider login" + }, + "CLIENT_INFO_ERROR": { + "name": "Client info error", + "description": "Client info error" + }, + "INTROSPECT_TOKEN_ERROR": { + "name": "Introspect token error", + "description": "Introspect token error" + }, + "INTROSPECT_TOKEN": { + "name": "Introspect token", + "description": "Introspect token" + }, + "UNREGISTER_NODE": { + "name": "Unregister node", + "description": "Unregister node" + }, + "REGISTER_NODE": { + "name": "Register node", + "description": "Register node" + }, + "INVALID_SIGNATURE": { + "name": "Invalid signature", + "description": "Invalid signature" + }, + "USER_INFO_REQUEST_ERROR": { + "name": "User info request error", + "description": "User info request error" + }, + "REFRESH_TOKEN": { + "name": "Refresh token", + "description": "Refresh token" + }, + "IDENTITY_PROVIDER_RESPONSE": { + "name": "Identity provider response", + "description": "Identity provider response" + }, + "IDENTITY_PROVIDER_RETRIEVE_TOKEN": { + "name": "Identity provider retrieve token", + "description": "Identity provider retrieve token" + }, + "UNREGISTER_NODE_ERROR": { + "name": "Unregister node error", + "description": "Unregister node error" + }, + "VALIDATE_ACCESS_TOKEN_ERROR": { + "name": "Validate access token error", + "description": "Validate access token error" + }, + "INVALID_SIGNATURE_ERROR": { + "name": "Invalid signature error", + "description": "Invalid signature error" + }, + "USER_INFO_REQUEST": { + "name": "User info request", + "description": "User info request" + }, + "IDENTITY_PROVIDER_RESPONSE_ERROR": { + "name": "Identity provider response error", + "description": "Identity provider response error" + }, + "IDENTITY_PROVIDER_LOGIN_ERROR": { + "name": "Identity provider login error", + "description": "Identity provider login error" + }, + "REFRESH_TOKEN_ERROR": { + "name": "Refresh token error", + "description": "Refresh token error" + } + }, + "emptyEvents": "Nothing to add", + "emptyEventsInstructions": "There are no more events types left to add", + "eventConfigSuccessfully": "Successfully saved configuration", + "eventConfigError": "Could not save event configuration {{error}}", + "deleteEvents": "Clear events", + "deleteEventsConfirm": "If you clear all events of this realm, all records will be permanently cleared in the database", + "admin-events-cleared": "The admin events have been cleared", + "admin-events-cleared-error": "Could not clear the admin events {{error}}", + "user-events-cleared": "The user events have been cleared", + "user-events-cleared-error": "Could not clear the user events {{error}}", + "events-disable-title": "Unsave events?", + "events-disable-confirm": "If \"Save events\" is disabled, subsequent events will not be displayed in the \"Events\" menu", + "confirm": "Confirm", + "noMessageBundles": "No message bundles", + "noMessageBundlesInstructions": "Add a message bundle to get started.", + "messageBundleDescription": "You can edit the supported locales. If you haven't selected supported locales yet, you can only edit the English locale.", + "defaultRoles": "Default roles", + "defaultGroups": "Default groups", + "whatIsDefaultGroups": "What is the function of default groups?", + "searchForGroups": "Search group", + "addDefaultGroups": "Add default groups", + "removeConfirmTitle_one": "Remove group?", + "removeConfirmTitle_other": "Remove groups?", + "removeConfirm_one": "Are you sure you want to remove this group", + "removeConfirm_other": "Are you sure you want to remove these groups.", + "groupRemove_one": "Group removed", + "groupRemove_other": "Groups removed", + "groupRemoveError": "Error removing group {error}", + "defaultGroupAdded_one": "New group added to the default groups", + "defaultGroupAdded_other": "Added {{count}} groups to the default groups", + "defaultGroupAddedError": "Error adding group(s) to the default group {error}", + "noDefaultGroups": "No default groups", + "noDefaultGroupsInstructions": "Default groups allow you to automatically assign group membership whenever any new user is created or imported throughout <1>identity brokering. Add default groups to get started", + "addGroups": "Add groups", + "securityDefences": "Security defenses", + "headers": "Headers", + "bruteForceDetection": "Brute force detection", + "xFrameOptions": "X-Frame-Options", + "contentSecurityPolicy": "Content-Security-Policy", + "contentSecurityPolicyReportOnly": "Content-Security-Policy-Report-Only", + "xContentTypeOptions": "X-Content-Type-Options", + "xRobotsTag": "X-Robots-Tag", + "xXSSProtection": "X-XSS-Protection", + "strictTransportSecurity": "HTTP Strict Transport Security (HSTS)", + "failureFactor": "Max login failures", + "permanentLockout": "Permanent lockout", + "waitIncrementSeconds": "Wait increment", + "maxFailureWaitSeconds": "Max wait", + "maxDeltaTimeSeconds": "Failure reset time", + "quickLoginCheckMilliSeconds": "Quick login check milliseconds", + "minimumQuickLoginWaitSeconds": "Minimum quick login wait" +} \ No newline at end of file diff --git a/public/resources/en/realm.json b/public/resources/en/realm.json new file mode 100644 index 0000000000..bab5038702 --- /dev/null +++ b/public/resources/en/realm.json @@ -0,0 +1,11 @@ +{ + "uploadFile": "Upload JSON file", + "realmName": "Realm name", + "enabled": "Enabled", + "createRealm": "Create realm", + "realmExplain": "A realm manages a set of users, credentials, roles, and groups. A user belongs to and logs into a realm. Realms are isolated from one another and can only manage and authenticate the users that they control.", + "noRealmRoles": "No realm roles", + "emptyStateText": "There aren't any realm roles in this realm. Create a realm role to get started.", + "saveRealmSuccess": "Realm created successfully", + "saveRealmError": "Could not create realm {{error}}" +} \ No newline at end of file diff --git a/public/resources/en/roles.json b/public/resources/en/roles.json new file mode 100644 index 0000000000..32771cb0dc --- /dev/null +++ b/public/resources/en/roles.json @@ -0,0 +1,70 @@ +{ + "deleteAttributeText": "Delete an attribute", + "associatedRolesText": "Associated roles", + "addAssociatedRolesText": "Add associated roles", + "addAssociatedRolesSuccess": "Associated roles have been added", + "addAssociatedRolesError": "Could not associate roles {{error}}", + "associatedRolesModalTitle": "Add roles to {{name}}", + "title": "Realm roles", + "addRole": "Add role", + "createRole": "Create role", + "importRole": "Import role", + "roleID": "Role ID", + "homeURL": "Home URL", + "filterByClients": "Filter by clients", + "filterByRoles": "Filter by roles", + "roleExplain": "Realm-level roles are a global namespace to define your roles.", + "roleCreateExplain": "This is some description", + "roleName": "Role name", + "roleDetails": "Role details", + "composite": "Composite", + "deleteRole": "Delete this role", + "inheritedFrom": "Inherited from", + "roleList": "Role list", + "searchFor": "Search role by name", + "generalSettings": "General Settings", + "capabilityConfig": "Capability config", + "roleImportError": "Could not import role", + "roleCreated": "Role created", + "roleCreateError": "Could not create role: {{error}}", + "roleImportSuccess": "Role import successful", + "roleDeleteConfirm": "Delete role?", + "roleDeleteConfirmDialog": "This action will permanently delete the role {{selectedRoleName}} and cannot be undone.", + "roleDeletedSuccess": "The role has been deleted", + "roleDeleteError": "Could not delete role: {{error}}", + "defaultRole": "This role serves as a container for both realm and client default roles. It cannot be removed.", + "defaultRoleDeleteError": "You cannot delete a default role.", + "roleSaveSuccess": "The role has been saved", + "roleSaveError": "Could not save role: {{error}}", + "noRoles": "No roles in this realm", + "noRolesInstructions": "You haven't created any roles in this realm. Create a role to get started.", + "roleAuthentication": "Role authentication", + "removeAllAssociatedRoles": "Remove all associated roles", + "removeAssociatedRoles": "Remove associated roles", + "removeRoles": "Remove roles", + "removeAllAssociatedRolesConfirmDialog": "This action will remove the associated roles of {{name}}. Users who have permission to {{name}} will no longer have access to these roles.", + "roleRemoveAssociatedRoleConfirm": "Remove associated role?", + "roleRemoveAssociatedText": "This action will remove {{role}} from {{roleName}}. All the associated roles of {{role}} will also be removed.", + "compositeRoleOff": "Composite role turned off", + "associatedRolesRemoved": "Associated roles have been removed", + "compositesRemovedAlertDescription": "All the associated roles have been removed", + "whoWillAppearLinkText": "Who will appear in this user list?", + "whoWillAppearPopoverText": "This tab shows only the users who are assigned directly to this role. To see users who are assigned this role as an associated role or through a group, go to", + "whoWillAppearPopoverFooterText": "Users who have this role as an effective role cannot be added on this tab.", + "usersInRole": "Users in role", + "addUser": "Add user", + "removeUser": "Remove users", + "removeUserText": "Do you want to remove {{numSelected}} users?. These users will no longer have permissions of the role {{role}} and the associated roles of it.", + "noDirectUsers": "No direct users", + "noUsersEmptyStateDescription": "Only the users with this role directly assigned will appear under this tab. If you need to find users assigned to this role, go to", + "noUsersEmptyStateDescriptionContinued": "to find them. Users that already have this role as an effective role cannot be added here.", + "or": "or", + "users": "Users", + "userName": "Username", + "email": "Email", + "lastName": "Last name", + "firstName": "First name", + "clearAllFilters": "Clear all filters", + "noRolesAssociated": "No associated roles", + "noRolesAssociatedInstructions": "To add roles to this role press the 'Add role' button" +} \ No newline at end of file diff --git a/public/resources/en/sessions.json b/public/resources/en/sessions.json new file mode 100644 index 0000000000..b117c2f4eb --- /dev/null +++ b/public/resources/en/sessions.json @@ -0,0 +1,33 @@ +{ + "title": "Sessions", + "sessionExplain": "Placeholder for sessions explanation.", + "searchForSession": "Search session", + "subject": "Subject", + "lastAccess": "Last access", + "startDate": "Start date", + "accessedClients": "Accessed clients", + "sessionsType": { + "allSessions": "All session types", + "regularSSO": "Regular SSO", + "offline": "Offline", + "directGrant": "Direct grant", + "serviceAccount": "Service account" + }, + "revocation": "Revocation", + "revocationDescription": "This is a way to revoke all active sessions and access tokens. Not before means you can revoke any tokens issued before the date.", + "notBefore": "Not before", + "notBeforeSuccess": "Success! \"Not before\" set for realm", + "notBeforeError": "Error clearing \"Not Before\" for realm: {{error}}", + "notBeforeClearedSuccess": "Success! \"Not Before\" cleared for realm.", + "signOutAllActiveSessions": "Sign out all active sessions", + "signOutAllActiveSessionsQuestion": "Sign out all active sessions?", + "setToNow": "Set to now", + "logoutAllDescription": "If you sign out all active sessions, active subjects in this realm will be signed out.", + "logoutAllSessionsError": "Error! Failed to log out of all sessions: {{error}}.", + "setToNowError": "Error! Failed to set notBefore to current date and time.", + "clear": "Clear", + "push": "Push", + "none": "None", + "noSessions": "No sessions", + "noSessionsDescription": "There are currently no active sessions in this realm." +} \ No newline at end of file diff --git a/public/resources/en/user-federation-help.json b/public/resources/en/user-federation-help.json new file mode 100644 index 0000000000..84e0d0be04 --- /dev/null +++ b/public/resources/en/user-federation-help.json @@ -0,0 +1,109 @@ +{ + "addKerberosWizardDescription": "Text needed here", + "addLdapWizardDescription": "Text needed here", + "ldapGeneralOptionsSettingsDescription": "This section contains a few basic options common to all user storage providers.", + "consoleDisplayNameHelp": "Display name of provider when linked in admin console", + "vendorHelp": "LDAP vendor (provider)", + "ldapConnectionAndAuthorizationSettingsDescription": "This section contains options related to the configuration of the connection to the LDAP server. It also contains options related to authentication of the LDAP connection to the LDAP server.", + "consoleDisplayConnectionUrlHelp": "Connection URL to your LDAP server", + "enableStartTlsHelp": "Encrypts the connection to LDAP using STARTTLS, which will disable connection pooling", + "useTruststoreSpiHelp": "Specifies whether LDAP connection will use the Truststore SPI with the truststore configured in standalone.xml/domain.sml. 'Always' means that it will always use it. 'Never' means that it will not use it. 'Only for ldaps' means that it will use it if your connection URL use ldaps. Note that even if standalone.xml/domain.xml is not configured, the default java cacerts or certificate specified by 'javax.net.ssl.trustStore' property will be used.", + "connectionPoolingHelp": "Determines if Keycloak should use connection pooling for accessing LDAP server.", + "connectionTimeoutHelp": "LDAP connection timeout in milliseconds", + "bindTypeHelp": "Type of the authentication method used during LDAP bind operation. It is used in most of the requests sent to the LDAP server. Currently only 'none' (anonymous LDAP authentication) or 'simple' (bind credential + bind password authentication) mechanisms are available.", + "bindDnHelp": "DN of the LDAP admin, which will be used by Keycloak to access LDAP server", + "bindCredentialsHelp": "Password of LDAP admin. This field is able to obtain its value from vault, use ${vault.ID} format.", + "ldapSearchingAndUpdatingSettingsDescription": "This section contains options related to searching the LDAP server for the available users.", + "editModeLdapHelp": "READ_ONLY is a read-only LDAP store. WRITABLE means data will be synced back to LDAP on demand. UNSYNCED means user data will be imported, but not synced back to LDAP.", + "usersDNHelp": "Full DN of LDAP tree where your users are. This DN is the parent of LDAP users. It could be for example 'ou=users,dc=example,dc=com' assuming that your typical user will have DN like 'uid='john',ou=users,dc=example,dc=com'.", + "usernameLdapAttributeHelp": "Name of the LDAP attribute, which is mapped as Keycloak username. For many LDAP server vendors it can be 'uid'. For Active directory it can be 'sAMAccountName' or 'cn'. The attribute should be filled for all LDAP user records you want to import from LDAP to Keycloak.", + "rdnLdapAttributeHelp": "Name of the LDAP attribute, which is used as RDN (top attribute) of typical user DN. Usually it's the same as the Username LDAP attribute, however it is not required. For example for Active directory, it is common to use 'cn' as RDN attribute when username attribute might be 'sAMAccountName'.", + "uuidLdapAttributeHelp": "Name of the LDAP attribute, which is used as a unique object identifier (UUID) for objects in LDAP. For many LDAP server vendors, it is 'entryUUID'; however some are different. For example, for Active directory it should be 'objectGUID'. If your LDAP server does not support the notion of UUID, you can use any other attribute that is supposed to be unique among LDAP users in tree. For example 'uid' or 'entryDN'.", + "userObjectClassesHelp": "All values of LDAP objectClass attribute for users in LDAP, divided by commas. For example: 'inetOrgPerson, organizationalPerson'. Newly created Keycloak users will be written to LDAP with all those object classes and existing LDAP user records are found just if they contain all those object classes.", + "userLdapFilterHelp": "Additional LDAP filter for filtering searched users. Leave this empty if you don't need an additional filter. Make sure that it starts with '(' and ends with ')'.", + "searchScopeHelp": "For one level, the search applies only for users in the DNs specified by User DNs. For subtree, the search applies to the whole subtree. See LDAP documentation for more details.", + "readTimeoutHelp": "LDAP read timeout in milliseconds. This timeout applies for LDAP read operations.", + "paginationHelp": "Whether the LDAP server supports pagination", + "ldapSynchronizationSettingsDescription": "This section contains options related to synchronization of users from LDAP to the Keycloak database.", + "importUsersHelp": "If true, LDAP users will be imported into the Keycloak DB and synced by the configured sync policies.", + "batchSizeHelp": "Count of LDAP users to be imported from LDAP to Keycloak within a single transaction", + "periodicFullSyncHelp": "Whether periodic full synchronization of LDAP users to Keycloak should be enabled or not", + "fullSyncPeriodHelp": "Period for full synchronization in seconds", + "periodicChangedUsersSyncHelp": "Whether periodic synchronization of changed or newly created LDAP users to Keycloak should be enabled or not", + "changedUsersSyncHelp": "Period for synchronization of changed or newly created LDAP users in seconds", + "ldapKerberosSettingsDescription": "This section contains options useful for the Kerberos integration. This is used only when the LDAP server is used together with Kerberos/SPNEGO for user authentication.", + "allowKerberosAuthenticationHelp": "Enable/disable HTTP authentication of users with SPNEGO/Kerberos tokens. The data about authenticated users will be provisioned from this LDAP server.", + "useKerberosForPasswordAuthenticationHelp": "User Kerberos login module for authenticating username/password against Kerberos server instead of authenticating against LDAP server with Directory Service API", + "cacheSettingsDescription": "This section contains options useful for caching users, which were loaded from this user storage provider.", + "cachePolicyHelp": "Cache Policy for this storage provider. 'DEFAULT' is whatever the default settings are for the global cache. 'EVICT_DAILY' is a time of day every day that the cache will be invalidated. 'EVICT_WEEKLY' is a day of the week and time the cache will be invalidated. 'MAX_LIFESPAN' is the time in milliseconds that will be the lifespan of a cache entry.", + "evictionDayHelp": "Day of the week the entry will become invalid", + "evictionHourHelp": "Hour of the day the entry will become invalid", + "evictionMinuteHelp": "Minute of the hour the entry will become invalid", + "maxLifespanHelp": "Max lifespan of cache entry in milliseconds", + "ldapAdvancedSettingsDescription": "This section contains all the other options for more fine-grained configuration of the LDAP storage provider.", + "enableLdapv3PasswordHelp": "Use the LDAPv3 Password Modify Extended Operation (RFC-3062). The password modify extended operation usually requires that LDAP user already has password in the LDAP server. So when this is used with 'Sync Registrations', it can be good to add also 'Hardcoded LDAP attribute mapper' with randomly generated initial password.", + "validatePasswordPolicyHelp": "Determines if Keycloak should validate the password with the realm password policy before updating it", + "trustEmailHelp": "If enabled, email provided by this provider is not verified even if verification is enabled for the realm.", + "IDK-periodicChangedUsersSyncHelp": "Should newly created users be created within LDAP store? Priority affects which provider is chosen to sync the new user.", + "kerberosWizardDescription": "Text needed here.", + "kerberosRequiredSettingsDescription": "This section contains a few basic options common to all user storage providers.", + "kerberosRealmHelp": "Name of kerberos realm. For example, FOO.ORG", + "serverPrincipalHelp": "Full name of server principal for HTTP service including server and domain name. For example, HTTP/host.foo.org@FOO.ORG", + "keyTabHelp": "Location of Kerberos KeyTab file containing the credentials of server principal. For example, /etc/krb5.keytab", + "debugHelp": "Enable/disable debug logging to standard output for Krb5LoginModule.", + "allowPasswordAuthenticationHelp": "Enable/disable possibility of username/password authentication against Kerberos database", + "editModeKerberosHelp": "READ_ONLY means that password updates are not allowed and user always authenticates with Kerberos password. UNSYNCED means that the user can change the password in the Keycloak database and this one will be used instead of the Kerberos password.", + "updateFirstLoginHelp": "Update profile on first login", + "mapperTypeMsadUserAccountControlManagerHelp": "Mapper specific to MSAD. It's able to integrate the MSAD user account state into Keycloak account state (account enabled, password is expired etc). It's using userAccountControl and pwdLastSet MSAD attributes for that. For example if pwdLastSet is 0, the Keycloak user is required to update the password; if userAccountControl is 514 (disabled account) the Keycloak user is disabled as well etc. Mapper is also able to handle the exception code from LDAP user authentication.", + "mapperTypeMsadLdsUserAccountControlMapperHelp": "Mapper specific to MSAD LDS. It's able to integrate the MSAD LDS user account state into Keycloak account state (account enabled, password is expired etc). It's using msDS-UserAccountDisabled and pwdLastSet is 0, the Keycloak user is required to update password, if msDS-UserAccountDisabled is 'TRUE' the Keycloak user is disabled as well etc. Mapper is also able to handle exception code from LDAP user authentication.", + "mapperTypeGroupLdapMapperHelp": "Used to map group mappings of groups from some LDAP DN to Keycloak group mappings", + "mapperTypeUserAttributeLdapMapperHelp": "Used to map single attribute from LDAP user to attribute of UserModel in Keycloak DB", + "mapperTypeRoleLdapMapperHelp": "Used to map role mappings of roles from some LDAP DN to Keycloak role mappings of either realm roles or client roles of particular client", + "mapperTypeHardcodedAttributeMapperHelp": "This mapper will hardcode any model user attribute and some property (like emailVerified or enabled) when importing user from LDAP.", + "mapperTypeHardcodedLdapRoleMapperHelp": "Users imported from LDAP will be automatically added into this configured role.", + "mapperTypeCertificateLdapMapperHelp": "Used to map single attribute which contains a certificate from LDAP user to attribute of UserModel in Keycloak DB", + "mapperTypeFullNameLdapMapperHelp": "Used to map the full-name of a user from single attribute in LDAP (usually 'cn' attribute) to firstName and lastName attributes of UserModel in Keycloak DB", + "mapperTypeHardcodedLdapGroupMapperHelp": "Users imported from LDAP will be automatically added into this configured group.", + "mapperTypeLdapAttributeMapperHelp": "This mapper is supported just if syncRegistrations is enabled. New users registered in Keycloak will be written to the LDAP with the hardcoded value of some specified attribute.", + "passwordPolicyHintsEnabledHelp": "Applicable just for writable MSAD. If on, then updating password of MSAD user will use LDAP_SERVER_POLICY_HINTS_OID extension, which means that advanced MSAD password policies like 'password history' or 'minimal password age' will be applied. This extension works just for MSAD 2008 R2 or newer.", + "nameHelp": "Name of the mapper", + "mapperTypeHelp": "Used to map single attribute from LDAP user to attribute of UserModel in Keycloak DB", + "userModelAttributeHelp": "Name of the UserModel property or attribute you want to map the LDAP attribute into. For example 'firstName', 'lastName, 'email', 'street' etc.", + "ldapAttributeHelp": "Name of mapped attribute on LDAP object. For example 'cn', 'sn', 'mail', 'street', etc.", + "readOnlyHelp": "Read-only attribute is imported from LDAP to UserModel, but it's not saved back to LDAP when user is updated in Keycloak.", + "alwaysReadValueFromLdapHelp": "If on, then during reading of the LDAP attribute value will always used instead of the value from Keycloak DB.", + "isMandatoryInLdapHelp": "If true, attribute is mandatory in LDAP. Hence if there is no value in Keycloak DB, the empty value will be set to be propagated to LDAP.", + "attributeDefaultValueHelp": "If there is no value in Keycloak DB and attribute is mandatory in LDAP, this value will be propagated to LDAP.", + "isBinaryAttributeHelp": "Should be true for binary LDAP attributes.", + "derFormattedHelp": "Activate this if the certificate is DER formatted in LDAP and not PEM formatted.", + "ldapFullNameAttributeHelp": "Name of the LDAP attribute, which contains the fullName of the user. Usually it will be 'cn'.", + "fullNameLdapReadOnlyHelp": "For Read-only, data is imported from LDAP to Keycloak DB, but it's not saved back to LDAP when the user is updated in Keycloak.", + "fullNameLdapWriteOnlyHelp": "For Write-only, data is propagated to LDAP when a user is created or updated in Keycloak. But this mapper is not used to propagate data from LDAP back into Keycloak. This setting is useful if you configured separate firstName and lastName attribute mappers and you want to use those to read the attribute from LDAP into Keycloak.", + "ldapGroupsDnHelp": "LDAP DN where groups of this tree are saved. For example 'ou=groups,dc=example,dc=org'", + "groupNameLdapAttributeHelp": "Name of LDAP attribute, which is used in group objects for name and RDN of group. Usually it will be 'cn'. In this case typical group/role object may have DN like 'cn=Group1,ouu=groups,dc=example,dc=org'.", + "groupObjectClassesHelp": "Object class (or classes) of the group object. It's divided by commas if more classes needed. In typical LDAP deployment it could be 'groupOfNames'. In Active Directory it's usually 'group'.", + "preserveGroupInheritanceHelp": "Flag whether group inheritance from LDAP should be propagated to Keycloak. If false, then all LDAP groups will be mapped as flat top-level groups in Keycloak. Otherwise group inheritance is preserved into Keycloak, but the group sync might fail if LDAP structure contains recursions or multiple parent groups per child groups.", + "ignoreMissingGroupsHelp": "Ignore missing groups in the group hierarchy.", + "userGroupsRetrieveStrategyHelp": "Specify how to retrieve groups of user. LOAD_GROUPS_BY_MEMBER_ATTRIBUTE means that roles of user will be retrieved by sending LDAP query to retrieve all groups where 'member' is our user. GET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE means that groups of user will be retrieved from 'memberOf' attribute of our user or from the other attribute specified by 'Member-Of LDAP Attribute'.", + "mappedGroupAttributesHelp": "List of names of attributes divided by commas. This points to the list of attributes on LDAP group, which will be mapped as attributes of Group in Keycloak. Leave this empty if no additional group attributes are required to be mapped in Keycloak.", + "dropNonexistingGroupsDuringSyncHelp": "If this flag is true, then during sync of groups from LDAP to Keycloak, we will keep just those Keycloak groups that still exist in LDAP. The rest will be deleted.", + "groupsPathHelp": "Keycloak group path the LDAP groups are added to. For example if value '/Applications/App1' is used, then LDAP groups will be available in Keycloak under group 'App1', which is child of top level group 'Applications'. The default value is '/' so LDAP groups will be mapped to the Keycloak groups at the top level. The configured group path must already exist in the Keycloak when creating this mapper.", + "ldapRolesDnHelp": "LDAP DN where roles of this tree are saved. For example, 'ou=finance,dc=example,dc=org'", + "roleNameLdapAttributeHelp": "Name of LDAP attribute, which is used in role objects for name and RDN of role. Usually it will be 'cn'. In this case typical group/role object may have DN like 'cn=role1,ou=finance,dc=example,dc=org'.", + "roleObjectClassesHelp": "Object class (or classes) of the role object. It's divided by commas if more classes are needed. In typical LDAP deployment it could be 'groupOfNames'. In Active Directory it's usually 'group'.", + "userRolesRetrieveStrategyHelp": "Specify how to retrieve roles of user. LOAD_ROLES_BY_MEMBER_ATTRIBUTE means that roles fo user will be retrieved by sending LDAP query to retrieve all roles where 'member' is our user. GET_ROLES_FROM_USER_MEMBEROF means that roles of user will be retrieved from 'memberOf' attribute of our user. Or from the other attributes specified by 'Member-Of LDAP Attribute'. LOAD_ROLES_BY_MEMBER_ATTRIBUTE is applicable just in Active Directory and it means that roles of user will be retrieved recursively with usage of LDAP_MATCHING_RULE_IN_CHAIN LDAP extension.", + "useRealmRolesMappingHelp": "If true, then LDAP role mappings will be mapped to realm role mappings in Keycloak. Otherwise it will be mapped to client role mappings.", + "clientIdHelp": "Client ID of client to which LDAP role mappings will be mapped. Applicable only if 'Use Realm Roles Mapping' is false.", + "membershipLdapAttributeHelp": "Name of LDAP attribute on group, which is used for membership mappings. Usually it will be 'member'. However when 'Membership Attribute Type' is 'UID', then 'Membership LDAP Attribute' could be typically 'memberUid'.", + "membershipAttributeTypeHelp": "DN means that LDAP group has it's members declared in form of their full DN. For example 'member: uid=john,ou=users,dc=example,dc=com'. UID means that LDAP group has it's members declared in form of pure user uids. For example 'memberUid: john'.", + "membershipUserLdapAttributeHelp": "Used just if Membership Attribute Type is UID. It is the name of the LDAP attribute on user, which is used for membership mappings. Usually it will be 'uid'. For example if the value of 'Membership User LDAP Attribute' is 'uid' and LDAP group has 'memberUid: john', then it is expected that particular LDAP user will have attribute 'uid: john'.", + "ldapFilterHelp": "LDAP Filter adds an additional custom filter to the whole query for retrieve LDAP groups. Leave this empty if no additional filtering is needed and you want to retrieve all groups from LDAP. Otherwise make sure that filter starts with '(' and ends with ')'.", + "modeHelp": "LDAP_ONLY means that all group mappings of users are retrieved from LDAP and saved into LDAP. READ_ONLY is Read-only LDAP mode where group mappings are retrieved from both LDAP and DB and merged together. New group joins are not saved to LDAP but to DB. IMPORT is Read-only LDAP mode where group mappings are retrieved from LDAP just at the time when user is imported from LDAP and then they are saved to local keycloak DB.", + "memberofLdapAttributeHelp": "Used just when 'User Roles Retrieve Strategy' is GET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE. It specifies the name of the LDAP attribute on the LDAP user, which contains the groups, which the user is member of. Usually it will be the default 'memberOf'.", + "userModelAttributeNameHelp": "Name of the model attribute to be added when importing user from LDAP", + "attributeValueHelp": "Value of the model attribute to be added when importing user from LDAP", + "roleHelp": "Role to grant to user. Click 'Select Role' button to browse roles, or just type it in the textbox. To reference an application role the syntax is appname.approle, i.e. myapp.myrole.", + "groupHelp": "Group to add the user in. Fill the full path of the group including path. For example: '/root-group/child-group'.", + "ldapAttributeNameHelp": "Name of the LDAP attribute, which will be added to the new user during registration", + "ldapAttributeValueHelp": "Value of the LDAP attribute, which will be added to the new user during registration. You can either hardcode any value like 'foo' but you can also use some special tokens. Only supported token right now is '${RANDOM}', which will be replaced with some randomly generated string." +} \ No newline at end of file diff --git a/public/resources/en/user-federation.json b/public/resources/en/user-federation.json new file mode 100644 index 0000000000..81ca5ac2f5 --- /dev/null +++ b/public/resources/en/user-federation.json @@ -0,0 +1,168 @@ +{ + "userFederation": "User federation", + "descriptionLanding": "This is the description for the user federation landing page", + "userFederationExplain": "Keycloak can federate external user databases. Out of the box we have support for LDAP and Active Directory.", + "getStarted": "To get started, select a provider from the list below.", + "providers": "Add providers", + "addProvider_one": "Add {{provider}} provider", + "addProvider_other": "Add {{provider}} providers", + "addKerberosWizardTitle": "Add Kerberos user federation provider", + "addLdapWizardTitle": "Add LDAP user federation provider", + "syncChangedUsers": "Sync changed users", + "syncAllUsers": "Sync all users", + "unlinkUsers": "Unlink users", + "removeImported": "Remove imported", + "deleteProvider": "Delete provider", + "generalOptions": "General options", + "consoleDisplayName": "Console display name", + "vendor": "Vendor", + "connectionAndAuthenticationSettings": "Connection and authentication settings", + "connectionURL": "Connection URL", + "enableStartTls": "Enable StartTLS", + "useTruststoreSpi": "Use Truststore SPI", + "connectionPooling": "Connection pooling", + "connectionTimeout": "Connection timeout", + "bindType": "Bind type", + "bindDn": "Bind DN", + "bindCredentials": "Bind credentials", + "ldapSearchingAndUpdatingSettings": "LDAP searching and updating", + "editMode": "Edit mode", + "usersDN": "Users DN", + "usernameLdapAttribute": "Username LDAP attribute", + "rdnLdapAttribute": "RDN LDAP attribute", + "uuidLdapAttribute": "UUID LDAP attribute", + "userObjectClasses": "User object classes", + "userLdapFilter": "User LDAP filter", + "searchScope": "Search scope", + "readTimeout": "Read timeout", + "pagination": "Pagination", + "synchronizationSettings": "Synchronization settings", + "importUsers": "Import users", + "batchSize": "Batch size", + "periodicFullSync": "Periodic full sync", + "fullSyncPeriod": "Full sync period", + "periodicChangedUsersSync": "Periodic changed users sync", + "changedUsersSyncPeriod": "Changed users sync period", + "kerberosIntegration": "Kerberos integration", + "allowKerberosAuthentication": "Allow Kerberos authentication", + "useKerberosForPasswordAuthentication": "Use Kerberos for password authentication", + "cacheSettings": "Cache settings", + "cachePolicy": "Cache policy", + "evictionDay": "Eviction day", + "evictionHour": "Eviction hour", + "evictionMinute": "Eviction minute", + "maxLifespan": "Max lifespan", + "ms": "milliseconds", + "advancedSettings": "Advanced settings", + "enableLdapv3Password": "Enable the LDAPv3 password modify extended operation", + "validatePasswordPolicy": "Validate password policy", + "trustEmail": "Trust email", + "requiredSettings": "Required Settings", + "kerberosRealm": "Kerberos realm", + "serverPrincipal": "Server principal", + "keyTab": "Key tab", + "debug": "Debug", + "allowPasswordAuthentication": "Allow password authentication", + "updateFirstLogin": "Update first login", + "always": "Always", + "never": "Never", + "onlyLdaps": "Only for ldaps", + "oneLevel": "One Level", + "subtree": "Subtree", + "saveSuccess": "User federation provider successfully saved", + "saveError": "User federation provider could not be saved: {{error}}", + "createSuccess": "User federation provider successfully created", + "createError": "User federation provider could not be created: {{error}}", + "queryExtensions": "Query Supported Extensions", + "testAuthentication": "Test authentication", + "testSuccess": "Successfully connected to LDAP", + "testError": "Error when trying to connect to LDAP. See server.log for details. {{error}}", + "learnMore": "Learn more", + "managePriorities": "Manage priorities", + "managePriorityOrder": "Manage priority order", + "managePriorityInfo": "Priority is the order of providers when doing a user lookup. You can drag the row handlers to change the priorities.", + "orderChangeSuccess": "Successfully changed the priority order of user federation providers", + "orderChangeError": "Could not change the priority order of user federation providers {{error}}", + "addNewProvider": "Add new provider", + "addCustomProvider": "Add custom provider", + "providerDetails": "Provider details", + "userFedDeletedSuccess": "The user federation provider has been deleted.", + "userFedDeleteError": "Could not delete user federation provider: '{{error}}'", + "userFedDeleteConfirmTitle": "Delete user federation provider?", + "userFedDeleteConfirm": "If you delete this user federation provider, all associated data will be removed.", + "userFedDisableConfirmTitle": "Disable user federation provider?", + "userFedDisableConfirm": "If you disable this user federation provider, it will not be considered for queries and imported users will be disabled and read-only until the provider is enabled again.", + "userFedUnlinkUsersConfirmTitle": "Unlink all users?", + "userFedUnlinkUsersConfirm": "Do you want to unlink all the users? Any users without a password in the database will not be able to authenticate anymore.", + "removeImportedUsers": "Remove imported users?", + "removeImportedUsersMessage": "Do you really want to remove all imported users?", + "removeImportedUsersSuccess": "Imported users have been removed.", + "removeImportedUsersError": "Could not remove imported users: '{{error}}'", + "syncUsersSuccess": "Sync of users finished successfully.", + "syncUsersError": "Could not sync users: '{{error}}'", + "unlinkUsersSuccess": "Unlink of users finished successfully.", + "unlinkUsersError": "Could not unlink users: '{{error}}'", + "validateName": "You must enter a name", + "validateRealm": "You must enter a realm", + "validateServerPrincipal": "You must enter a server principal", + "validateKeyTab": "You must enter a key tab", + "validateConnectionUrl": "You must enter a connection URL", + "validateBindDn": "You must enter the DN of the LDAP admin", + "validateBindCredentials": "You must enter the password of the LDAP admin", + "validateUuidLDAPAttribute": "You must enter a UUID LDAP attribute", + "validateUserObjectClasses": "You must enter one or more user object classes", + "validateEditMode": "You must select an edit mode", + "validateUsersDn": "You must enter users DN", + "validateUsernameLDAPAttribute": "You must enter a username LDAP attribute", + "validateRdnLdapAttribute": "You must enter an RDN LDAP attribute", + "validateCustomUserSearchFilter": "Filter must be enclosed in parentheses, for example: (filter)", + "mapperTypeMsadUserAccountControlManager": "msad-user-account-control-mapper", + "mapperTypeMsadLdsUserAccountControlMapper": "msad-user-account-control-mapper", + "mapperTypeGroupLdapMapper": "group-ldap-mapper", + "mapperTypeUserAttributeLdapMapper": "user-attribute-ldap-mapper", + "mapperTypeRoleLdapMapper": "role-ldap-mapper", + "mapperTypeHardcodedAttributeMapper": "hardcoded-attribute-mapper", + "mapperTypeHardcodedLdapRoleMapper": "hardcoded-ldap-role-mapper", + "mapperTypeCertificateLdapMapper": "certificate-ldap-mapper", + "mapperTypeFullNameLdapMapper": "full-name-ldap-mapper", + "mapperTypeHardcodedLdapGroupMapper": "hardcoded-ldap-group-mapper", + "mapperTypeLdapAttributeMapper": "hardcoded-ldap-attribute-mapper", + "ldapMappersList": "LDAP Mappers", + "ldapFullNameAttribute": "LDAP full name attribute", + "writeOnly": "Write only", + "ldapGroupsDn": "LDAP groups DN", + "groupNameLdapAttribute": "Group name LDAP attribute", + "groupObjectClasses": "Group object classes", + "preserveGroupInheritance": "Preserve group inheritance", + "ignoreMissingGroups": "Ignore missing groups", + "userGroupsRetrieveStrategy": "User groups retrieve strategy", + "mappedGroupAttributes": "Mapped group attributes", + "dropNonexistingGroupsDuringSync": "Drop non-existing groups during sync", + "groupsPath": "Groups path", + "membershipLdapAttribute": "Membership LDAP attribute", + "membershipAttributeType": "Membership attribute type", + "membershipUserLdapAttribute": "Membership user LDAP attribute", + "ldapFilter": "LDAP filter", + "mode": "Mode", + "memberofLdapAttribute": "Member-of LDAP attribute", + "ldapRolesDn": "LDAP roles DN", + "roleNameLdapAttribute": "Role name LDAP attribute", + "roleObjectClasses": "Role object classes", + "userRolesRetrieveStrategy": "User roles retrieve strategy", + "useRealmRolesMapping": "Use realm roles mapping", + "ldapAttributeName": "LDAP attribute name", + "ldapAttributeValue": "LDAP attribute value", + "userModelAttribute": "User model attribute", + "ldapAttribute": "LDAP attribute", + "readOnly": "Read only", + "alwaysReadValueFromLdap": "Always read value from LDAP", + "isMandatoryInLdap": "Is mandatory in LDAP", + "attributeDefaultValue": "Attribute default value", + "isBinaryAttribute": "Is binary attribute", + "derFormatted": "DER formatted", + "passwordPolicyHintsEnabled": "Password policy hints enabled", + "userModelAttributeName": "User model attribute name", + "attributeValue": "Attribute value", + "selectRole": "Select role", + "group": "Group" +} \ No newline at end of file diff --git a/public/resources/en/users-help.json b/public/resources/en/users-help.json new file mode 100644 index 0000000000..1c5092ab29 --- /dev/null +++ b/public/resources/en/users-help.json @@ -0,0 +1,9 @@ +{ + "temporaryLocked": "The user may be locked due to multiple failed attempts to log in.", + "disabled": "A disabled user cannot log in.", + "emailVerified": "Has the user's email been verified?", + "requiredUserActions": "Require an action when the user logs in. 'Verify email' sends an email to the user to verify their email address. 'Update profile' requires user to enter in new personal information. 'Update password' requires user to enter in a new password. 'Configure OTP' requires setup of a mobile password generator.", + "groups": "Groups where the user has membership. To leave a group, select it and click Leave.", + "userIdHelperText": "Enter the unique ID of the user for this identity provider.", + "usernameHelperText": "Enter the username of the user for this identity provider." +} \ No newline at end of file diff --git a/public/resources/en/users.json b/public/resources/en/users.json new file mode 100644 index 0000000000..32c1f192b2 --- /dev/null +++ b/public/resources/en/users.json @@ -0,0 +1,168 @@ +{ + "title": "Users", + "usersExplain": "Placeholder for users explanation.", + "userList": "User list", + "searchForUser": "Search user", + "startBySearchingAUser": "Start by searching for users", + "searchForUserDescription": "This realm has a federated provider. Viewing all users may cause the system to slow down. Please search for a user above.", + "createUser": "Create user", + "createNewUser": "Create new user", + "noUsersFound": "No users found", + "noUsersFoundError": "No users found due to {{error}}", + "noUsersFoundErrorStorage": "No users found, could be due to wrongly configured federated provider {{error}}", + "noGroups": "No groups", + "noGroupsText": "You haven't added this user to any groups. Join a group to get started.", + "joinGroup": "Join Group", + "joinGroups": "Join Groups", + "join": "Join", + "joinGroupsFor": "Join groups for user {{username}}", + "selectGroups": "Select groups to join", + "searchForGroups": "Search for groups", + "leave": "Leave", + "leaveGroup_one": "Leave group {{name}}?", + "leaveGroup_other": "Leave groups?", + "leaveGroupConfirmDialog_one": "Are you sure you want to remove {{username}} from the group {{groupname}}?", + "leaveGroupConfirmDialog_other": "Are you sure you want to remove {{username}} from the {{count}} selected groups?", + "directMembership": "Direct membership", + "groupMembership": "Group membership", + "addedGroupMembership": "Added group membership", + "addedGroupMembershipError": "Error adding group membership", + "removedGroupMembership": "Removed group membership", + "removedGroupMembershipError": "Error removing group membership", + "path": "Path", + "emptyInstructions": "Change your search criteria or add a user", + "createdAt": "Created at", + "username": "Username", + "email": "Email", + "emailVerified": "Email verified", + "lastName": "Last name", + "firstName": "First name", + "status": "Status", + "disabled": "Disabled", + "temporaryLocked": "Temporarily locked", + "unlockSuccess": "User successfully unlocked", + "unlockError": "Could not unlock user due to {{error}}", + "emailInvalid": "You must enter a valid email.", + "temporaryDisabled": "Temporarily disabled", + "notVerified": "Not verified", + "requiredUserActions": "Required user actions", + "addUser": "Add user", + "impersonate": "Impersonate", + "impersonateConfirm": "Impersonate user?", + "impersonateConfirmDialog": "Are you sure you want to log in as this user? If this user is in the same realm with you, your current login session will be logged out before you log in as this user.", + "impersonateError": "Could not impersonate the user: {{error}}", + "deleteUser": "Delete user", + "deleteConfirm": "Delete user?", + "deleteConfirmCurrentUser": "Are you sure you want to permanently delete this user", + "deleteConfirmDialog_one": "Are you sure you want to permanently delete {{count}} selected user", + "deleteConfirmDialog_other": "Are you sure you want to permanently delete {{count}} selected users", + "userID": "User ID", + "userCreated": "The user has been created", + "userSaved": "The user has been saved", + "userDetails": "User details", + "userCreateError": "Could not create user: {{error}}", + "userDeletedSuccess": "The user has been deleted", + "userDeletedError": "The user could not be deleted {{error}}", + "linkAccount": "Link account", + "unlink": "Unlink", + "unlinkAccount": "Unlink account", + "unlinkAccountTitle": "Unlink account from {{provider}}?", + "unlinkAccountConfirm": "Are you sure you want to permanently unlink this account from {{provider}}?", + "link": "Link", + "linkAccountTitle": "Link account to {{provider}}?", + "idpLinkSuccess": "Identity provider has been linked", + "couldNotLinkIdP": "Could not link identity provider {{error}}", + "configureOTP": "Configure OTP", + "updatePassword": "Update Password", + "updateProfile": "Update Profile", + "verifyEmail": "Verify Email", + "updateUserLocale": "Update User Locale", + "consents": "Consents", + "noConsents": "No consents", + "noConsentsText": "The consents will only be recorded when users try to access a client that is configured to require consent. In that case, users will get a consent page which asks them to grant access to the client.", + "identityProvider": "Identity provider", + "identityProviderLinks": "Identity provider links", + "noProvidersLinked": "No identity providers linked. Choose one from the list below.", + "noAvailableIdentityProviders": "No available identity providers.", + "linkedIdPs": "Linked identity providers", + "linkedIdPsText": "The identity providers which are already linked to this user account", + "availableIdPs": "Available identity providers", + "availableIdPsText": "All the configured identity providers in this realm are listed here. You can link the user account to any of the IdP accounts.", + "whoWillAppearLinkText": "Who will appear in this group list?", + "whoWillAppearPopoverText": "Groups are hierarchical. When you select Direct Membership, you see only the child group that the user joined. Ancestor groups are not included.", + "revoke": "Revoke", + "revokeClientScopesTitle": "Revoke all granted client scopes?", + "revokeClientScopes": "Are you sure you want to revoke all granted client scopes for {{clientId}}?", + "deleteGrantsSuccess": "Grants successfully revoked.", + "deleteGrantsError": "Error deleting grants.", + "roleMapping": "Role mapping", + "noRoles": "No roles for this user", + "noRolesInstructions": "You haven't assigned any roles to this user. Assign a role to get started.", + "unlockAllUsers": "Unlock all users", + "unlockUsersConfirm": "All the users that are temporarily locked will be unlocked.", + "unlock": "Unlock", + "unlockUsersSuccess": "Any temporarily locked users are now unlocked", + "unlockUsersError": "Could not unlock all users {{error}}", + "noCredentials": "No credentials", + "noCredentialsText": "This user does not have any credentials. You can set password for this user.", + "setPassword": "Set password", + "setPasswordFor": "Set password for {{username}}", + "defaultPasswordLabel": "My password", + "save": "Save", + "cancel": "Cancel", + "savePasswordSuccess": "The password has been set successfully.", + "savePasswordError": "Error saving password: {{error}}", + "confirmPasswordDoesNotMatch": "Password and confirmation does not match.", + "credentialType": "Type", + "credentialUserLabel": "User Label", + "credentialData": "Data", + "credentialsList": "Credentials List", + "setPasswordConfirm": "Set password?", + "setPasswordConfirmText": "Are you sure you want to set the password for the user {{username}}?", + "password": "Password", + "passwordConfirmation": "Password confirmation", + "resetPasswordConfirmation": "New password confirmation", + "savePassword": "Save password", + "deleteCredentialsConfirmTitle": "Delete credentials?", + "deleteCredentialsConfirm": "Are you sure you want to delete these users credentials?", + "deleteCredentialsSuccess": "The credentials has been deleted successfully.", + "deleteCredentialsError": "Error deleting users credentials: {{error}}", + "deleteBtn": "Delete", + "updatedCredentialMoveSuccess": "User Credential configuration has been saved", + "updatedCredentialMoveError": "User Credential configuration hasn't been saved", + "resetPasswordFor": "Reset password for {{username}}", + "resetPasswordConfirm": "Reset password?", + "resetPasswordConfirmText": "Are you sure you want to reset the password for the user {{username}}?", + "resetPassword": "Reset password", + "resetCredentialsSuccess": "The password has been reset successfully.", + "resetCredentialsError": "Error resetting users credentials: {{error}}", + "resetPasswordError": "Error resetting password: {{error}}", + "resetPasswordBtn": "Reset password", + "showPasswordDataName": "Name", + "showPasswordDataValue": "Value", + "showDataBtn": "Show data", + "userCredentialsHelpText": "The top level handlers allow you to shift the priority of the credential for the user, the topmost credential having the highest priority. The handlers within one expandable panel allow you to change the visual order of the credentials, the topmost credential will show at the most left.", + "userCredentialsHelpTextLabel": "User Credentials Help Text", + "type": "Type", + "userLabel": "User label", + "data": "Data", + "passwordDataTitle": "Password data", + "updateCredentialUserLabelSuccess": "The user label has been changed successfully.", + "updateCredentialUserLabelError": "Error changing user label: {{error}}", + "credentialReset": "Credentials Reset", + "credentialResetBtn": "Credential Reset", + "resetActions": "Reset Actions", + "lifespan": "Expires In", + "VERIFY_EMAIL": "Verify Email (VERIFY_EMAIL)", + "UPDATE_PASSWORD": "Update password (UPDATE_PASSWORD)", + "UPDATE_PROFILE": "Update Profile (UPDATE_PROFILE)", + "CONFIGURE_TOTP": "Configure OTP (CONFIGURE_TOTP)", + "terms_and_conditions": "Terms and Conditions (terms_and_conditions)", + "hours": "Hours", + "minutes": "Minutes", + "seconds": "Seconds", + "credentialResetConfirm": "Send Email", + "credentialResetConfirmText": "Are you sure you want to send email to user", + "credentialResetEmailSuccess": "Email sent to user.", + "credentialResetEmailError": "Failed: {{error}}" +} \ No newline at end of file diff --git a/public/resources/es/authentication-help.json b/public/resources/es/authentication-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/es/authentication-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/es/authentication.json b/public/resources/es/authentication.json new file mode 100644 index 0000000000..e36bbc76aa --- /dev/null +++ b/public/resources/es/authentication.json @@ -0,0 +1,7 @@ +{ + "attestationPreference": { + "none": "ninguno" + }, + "edit": "Editar", + "alias": "Alias" +} \ No newline at end of file diff --git a/public/resources/es/client-scopes-help.json b/public/resources/es/client-scopes-help.json new file mode 100644 index 0000000000..234aad1001 --- /dev/null +++ b/public/resources/es/client-scopes-help.json @@ -0,0 +1,6 @@ +{ + "multiValued": "Indica si el atributo soporta múltiples valores. Si está habilitado, la lista de todos los valores de este atributo se fijará como reclamación. Si está deshabilitado, solo el primer valor será fijado como reclamación.", + "tokenClaimName": "Nombre del reclamo a insertar en el token. Puede ser un nombre completo como ''address.street''. En este caso, se creará un objeto JSON anidado.", + "claimJsonType": "El tipo de JSON que debería ser usado para rellenar la petición de JSON en el token. long, int, boolean y String son valores válidos", + "protocolMapper": "Protocolo." +} \ No newline at end of file diff --git a/public/resources/es/client-scopes.json b/public/resources/es/client-scopes.json new file mode 100644 index 0000000000..71b2cb41e7 --- /dev/null +++ b/public/resources/es/client-scopes.json @@ -0,0 +1,6 @@ +{ + "protocol": "Protocolo", + "type": "Tipo", + "realmRoles": "Roles de dominio", + "clients": "Clientes" +} \ No newline at end of file diff --git a/public/resources/es/clients-help.json b/public/resources/es/clients-help.json new file mode 100644 index 0000000000..ab11fc0636 --- /dev/null +++ b/public/resources/es/clients-help.json @@ -0,0 +1,41 @@ +{ + "clientType": "''OpenID connect'' permite a los clientes verificar la identidad del usuario final basado en la autenticación realizada por un servidor de autorización. ''SAML'' habilita la autenticación y autorización de escenarios basados en web incluyendo cross-domain y single sign-on (SSO) y utiliza tokens de seguridad que contienen afirmaciones para pasar información.", + "serviceAccount": "Permitir autenticar este cliente contra Keycloak y recibir un token de acceso dedicado para este cliente.", + "rootURL": "URL raíz añadida a las URLs relativas", + "validRedirectURIs": "Patrón de URI válida para la cual un navegador puede solicitar la redirección tras un inicio o cierre de sesión completado. Se permiten comodines simples p.ej. ''http://example.com/*''. También se pueden indicar rutas relativas p.ej. ''/my/relative/path/*''. Las rutas relativas generarán una URI de redirección usando el host y puerto de la petición. Para SAML, se deben fijar patrones de URI válidos si quieres confiar en la URL del servicio del consumidor indicada en la petición de inicio de sesión.", + "nameIdFormat": "El formato de NameID que se usará para el título", + "forceNameIdFormat": "Ignorar la petición de sujeto NameID y usar la configurada en la consola de administración.", + "forcePostBinding": "Usar siempre POST para las respuestas", + "includeAuthnStatement": "¿Debería incluirse una declaración especificando el método y la marca de tiempo en la respuesta de inicio de sesión?", + "signDocuments": "¿Debería el dominio firmar los documentos SAML?", + "signAssertions": "¿Deberían firmarse las aserciones en documentos SAML? Este ajuste no es necesario si el documento ya está siendo firmado.", + "signatureAlgorithm": "El algoritmo de firma usado para firmar los documentos.", + "canonicalization": "Método de canonicalización para las firmas XML", + "webOrigins": "Orígenes CORS permitidos. Para permitir todos los orígenes de URIs de redirección válidas añade ''+''. Para permitir todos los orígenes añade ''*''.", + "homeURL": "URL por defecto para usar cuando el servidor de autorización necesita redirigir o enviar de vuelta al cliente.", + "adminURL": "URL a la interfaz de administración del cliente. Fija este valor si el cliente soporta el adaptador de REST. Esta API REST permite al servidor de autenticación enviar al cliente políticas de revocación y otras tareas administrativas. Normalment se fija a la URL base del cliente.", + "clientId": "Indica el identificador (ID) referenciado en URIs y tokens. Por ejemplo ''my-client''", + "clientName": "Indica el nombre visible del cliente. Por ejemplo ''My Client''. También soporta claves para valores localizados. Por ejemplo: ${my_client}", + "description": "Indica la descripción del cliente. Por ejemplo ''My Client for TimeSheets''. También soporta claves para valores localizados. Por ejemplo: ${my_client_description}", + "loginTheme": "Selecciona el tema para las páginas de inicio de sesión, OTP, permisos, registro y recordatorio de contraseña.", + "encryptAssertions": "¿Deberían cifrarse las afirmaciones SAML con la clave pública del cliente usando AES?", + "clientSignature": "¿Firmará el cliente sus peticiones y respuestas SAML? ¿Y deberían ser validadas?", + "client-authenticator-type": "Cliente autenticador usado para autenticar este cliente contra el servidor Keycloak", + "nodeReRegistrationTimeout": "Indica el máximo intervalo de tiempo para que los nodos del cluster registrados se vuelvan a registrar. Si el nodo del cluster no envía una petición de re-registro a Keycloak dentro de este intervalo, será desregistrado de Keycloak", + "idpInitiatedSsoUrlName": "Nombre del fragmento de la URL para referenciar al cliente cuando quieres un SSO iniciado por el IDP. Dejando esto vacío deshabilita los SSO iniciados por el IDP. La URL referenciada desde el navegador será: {server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}", + "idpInitiatedSsoRelayState": "Estado de retransmisión que quieres enviar con una petición SAML cuando se inicia un SSO iniciado por el IDP", + "masterSamlProcessingUrl": "Si está configurada, esta URL se usará para cada enlace al proveedor del servicio del consumidor de aserciones y servicios de desconexión únicos. Puede ser sobreescrito de forma individual para cada enlace y servicio en el punto final de configuración fina de SAML.", + "accessTokenLifespan": "Tiempo máximo antes de que un token de acceso expire. Se recomienda que este valor sea corto en relación al tiempo máximo de SSO", + "assertionConsumerServicePostBindingURL": "SAML POST Binding URL for the client''s assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.", + "assertionConsumerServiceRedirectBindingURL": "Assertion Consumer Service Redirect Binding URL", + "logoutServicePostBindingURL": "URL de enlace SAML POST para la desconexión única del cliente. Puedes dejar esto en blanco si estás usando un enlace distinto.", + "logoutServiceRedirectBindingURL": "URL de enlace SAML de redirección para la desconexión única del cliente. Puedes dejar esto en blanco si estás usando un enlace distinto.", + "frontchannelLogout": "Cuando está activado, la desconexión require una redirección del navegador hacia el cliente. Cuando no está activado, el servidor realiza una invovación de desconexión en segundo plano.", + "certificate": "Certificado de cliente para validar los JWT emitidos por este cliente y firmados con la clave privada del cliente de tu almacén de claves.", + "archiveFormat": "Formato de archivo Java keystore o PKCS12", + "keyAlias": "Alias del archivo de tu clave privada y certificado.", + "keyPassword": "Contraseña para acceder a la clave privada contenida en el archivo", + "storePassword": "Contraseña para acceder al archivo", + "consentRequired": "Si está habilitado, los usuarios tienen que consentir el acceso del cliente.", + "fullScopeAllowed": "Permite deshabilitar todas las restricciones." +} \ No newline at end of file diff --git a/public/resources/es/clients.json b/public/resources/es/clients.json new file mode 100644 index 0000000000..b241df3f6d --- /dev/null +++ b/public/resources/es/clients.json @@ -0,0 +1,65 @@ +{ + "protocol": "Protocolo", + "importClient": "Importar Cliente", + "webOrigins": "Orígenes web", + "adminURL": "URL de administración", + "formatOption": "Formato", + "encryptAssertions": "Cifrar afirmaciones", + "clientSignature": "Firma de Cliente requerida", + "credentials": "Credenciales", + "roles": "Roles", + "fullScopeAllowed": "Permitir todos los ámbitos", + "kc": { + "realm": { + "name": "Dominio" + } + }, + "password": "Contraseña", + "settings": "Ajustes", + "type": "Tipo", + "user": "Usuario", + "clientList": "Clientes", + "realmRoles": "Roles de dominio", + "frontchannelLogout": "Desonexión en primer plano (Front Channel)", + "rootUrl": "URL raíz", + "validRedirectUri": "URIs de redirección válidas", + "idpInitiatedSsoRelayState": "Estado de retransmisión de un SSO iniciado por el IDP", + "masterSamlProcessingUrl": "URL principal de procesamiento SAML", + "nameIdFormat": "Formato de NameID", + "forceNameIdFormat": "Forzar formato NameID", + "forcePostBinding": "Forzar enlaces POST", + "includeAuthnStatement": "Incluir AuthnStatement", + "signDocuments": "Firmar documentos", + "signAssertions": "Firmar aserciones", + "canonicalization": "Método de canonicalización", + "loginTheme": "Tema de inicio de sesión", + "clientAuthenticator": "Cliente autenticador", + "clientSecret": "Secreto de Cliente", + "revocation": "Revocación", + "clustering": "Clustering", + "notBefore": "No antes de", + "setToNow": "Fijar a ahora", + "addNode": "Añadir Nodo", + "push": "Push", + "clear": "Limpiar", + "nodeReRegistrationTimeout": "Tiempo de espera de re-registro de nodo", + "registeredClusterNodes": "Registrar nodos de cluster", + "nodeHost": "Host del nodo", + "lastRegistration": "Último registro", + "testClusterAvailability": "Probar disponibilidad del cluster", + "registerNodeManually": "Registrar nodo manualmente", + "fineGrainSamlEndpointConfig": "Fine Grain SAML Endpoint Configuration", + "assertionConsumerServicePostBindingURL": "Assertion Consumer Service POST Binding URL", + "assertionConsumerServiceRedirectBindingURL": "Assertion Consumer Service Redirect Binding URL", + "logoutServicePostBindingURL": "URL de enlace SAML POST para la desconexión", + "logoutServiceRedirectBindingURL": "URL de enlace SAML de redirección para la desconexión", + "accessTokenLifespan": "Duración del token de acceso", + "certificate": "Certificado", + "generateNewKeys": "Generar nuevas claves", + "archiveFormat": "Formato de Archivo", + "keyAlias": "Alias de clave", + "keyPassword": "Contraseña de la clave", + "storePassword": "Contraseña del almacén", + "importFile": "Archivo de Importación", + "mappers": "Asignadores" +} \ No newline at end of file diff --git a/public/resources/es/common-help.json b/public/resources/es/common-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/es/common-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/es/common.json b/public/resources/es/common.json new file mode 100644 index 0000000000..afee906eed --- /dev/null +++ b/public/resources/es/common.json @@ -0,0 +1,32 @@ +{ + "create": "Crear", + "save": "Guardar", + "key": "Clave", + "export": "Exportar", + "download": "Descargar", + "clear": "Limpiar", + "on": "Activado", + "edit": "Editar", + "enabled": "Habilitado", + "none": "ninguno", + "description": "Descripción", + "type": "Tipo", + "category": "Categoría", + "clients": "Clientes", + "realmRoles": "Roles de dominio", + "sessions": "Sesiones", + "mappers": "Asignadores", + "identityProviders": "Proveedores de identidad", + "settings": "Ajustes", + "times": { + "seconds": "Segundos", + "minutes": "Minutos", + "hours": "Horas", + "days": "Días" + }, + "credentials": "Credenciales", + "clientId": "ID Cliente", + "id": "ID", + "mapperType": "Tipo de asignador", + "password": "Contraseña" +} \ No newline at end of file diff --git a/public/resources/es/dashboard.json b/public/resources/es/dashboard.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/es/dashboard.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/es/dynamic.json b/public/resources/es/dynamic.json new file mode 100644 index 0000000000..d93d3e08d2 --- /dev/null +++ b/public/resources/es/dynamic.json @@ -0,0 +1,47 @@ +{ + "usermodel": { + "prop": { + "label": "Propiedad", + "tooltip": "Nombre del método de propiedad en la interfaz UserModel. Por ejemplo, un valor de ''email'' referenciaría al método UserModel.getEmail()." + }, + "attr": { + "label": "Atributo de usuario", + "tooltip": "Nombre del atributo de usuario almacenado que es el nombre del atributo dentro del map UserModel.attribute." + }, + "clientRoleMapping": { + "client": { + "label": "ID Cliente" + } + } + }, + "userSession": { + "modelNote": { + "label": "Nota sesión usuario", + "tooltip": "Nombre de la nota almacenada en la sesión de usuario dentro del mapa UserSessionModel.note" + } + }, + "multivalued": { + "label": "Valores múltiples", + "tooltip": "Indica si el atributo soporta múltiples valores. Si está habilitado, la lista de todos los valores de este atributo se fijará como reclamación. Si está deshabilitado, solo el primer valor será fijado como reclamación." + }, + "selectRole": { + "label": "Selecciona rol", + "tooltip": "Introduce el rol en la caja de texto de la izquierda, o haz clic en este botón para navegar y buscar el rol que quieres." + }, + "tokenClaimName": { + "label": "Nombre de reclamo del token", + "tooltip": "Nombre del reclamo a insertar en el token. Puede ser un nombre completo como ''address.street''. En este caso, se creará un objeto JSON anidado." + }, + "jsonType": { + "label": "Tipo JSON de reclamación", + "tooltip": "El tipo de JSON que debería ser usado para rellenar la petición de JSON en el token. long, int, boolean y String son valores válidos" + }, + "includeInIdToken": { + "label": "Añadir al token de ID" + }, + "includeInAccessToken": { + "label": "Añadir al token de acceso", + "tooltip": "¿Debería añadirse la identidad reclamada al token de acceso?" + }, + "name-id-format": "Formato de NameID" +} \ No newline at end of file diff --git a/public/resources/es/events.json b/public/resources/es/events.json new file mode 100644 index 0000000000..4bf06592c6 --- /dev/null +++ b/public/resources/es/events.json @@ -0,0 +1,4 @@ +{ + "user": "Usuario", + "realm": "Dominio" +} \ No newline at end of file diff --git a/public/resources/es/groups.json b/public/resources/es/groups.json new file mode 100644 index 0000000000..e0a011d394 --- /dev/null +++ b/public/resources/es/groups.json @@ -0,0 +1,3 @@ +{ + "create": "Crear" +} \ No newline at end of file diff --git a/public/resources/es/identity-providers-help.json b/public/resources/es/identity-providers-help.json new file mode 100644 index 0000000000..656da38963 --- /dev/null +++ b/public/resources/es/identity-providers-help.json @@ -0,0 +1,28 @@ +{ + "redirectURI": "La URI de redirección usada para configurar el proveedor de identidad.", + "alias": "El alias que identifica de forma única un proveedor de identidad, se usa también para construir la URI de redirección.", + "clientId": "El identificador del cliente registrado con el proveedor de identidad.", + "clientSecret": "El secreto del cliente registrado con el proveedor de identidad.", + "discoveryEndpoint": "Importar metadatos desde un descriptor de un proveedor de identidad (IDP) remoto.", + "importConfig": "Importar metadatos desde un descriptor de un proveedor de identidad (IDP) descargado.", + "logoutUrl": "Punto de cierre de sesión para usar en la desconexión de usuarios desde un proveedor de identidad (IDP) externo.", + "backchannelLogout": "Does the external IDP support backchannel logout?", + "userInfoUrl": "La URL de información de usuario. Opcional.", + "issuer": "El identificador del emisor para el emisor de la respuesta. Si no se indica, no se realizará ninguna validación.", + "scopes": "Los ámbitos que se enviarán cuando se solicite autorización. Puede ser una lista de ámbitos separados por espacios. El valor por defecto es ''openid''.", + "validateSignature": "Habilitar/deshabilitar la validación de firmas de proveedores de identidad (IDP) externos", + "storeTokens": "Habilitar/deshabilitar si los tokens deben ser almacenados después de autenticar a los usuarios.", + "storedTokensReadable": "Habilitar/deshabilitar si los nuevos usuarios pueden leer los tokens almacenados. Esto asigna el rol ''broker.read-token''.", + "trustEmail": "Si está habilitado, el email recibido de este proveedor no se verificará aunque la verificación esté habilitada para el dominio.", + "useEntityDescriptor": "Importar metadatos desde un descriptor de entidad remoto de un IDP de SAML", + "samlEntityDescriptor": "Te permite cargar metadatos de un proveedor de identidad (IDP) externo de un archivo de coniguración o descargarlo desde una URL.", + "ssoServiceUrl": "La URL que debe ser usada para enviar peticiones de autenticación (SAML AuthnRequest).", + "singleLogoutServiceUrl": "La URL que debe usarse para enviar peticiones de desconexión.", + "httpPostBindingAuthnRequest": "Indica si AuthnRequest debe ser enviada usando HTTP-POST. Si no está activado se hace HTTP-REDIRECT.", + "wantAuthnRequestsSigned": "Indica si el proveedor de identidad espera recibir firmadas las AuthnRequest.", + "signatureAlgorithm": "El algoritmo de firma usado para firmar los documentos.", + "forceAuthentication": "Indica si el proveedor de identidad debe autenticar al presentar directamente las credenciales en lugar de depender de un contexto de seguridad previo.", + "validateSignatures": "Habilitar/deshabilitar la validación de firma en respuestas SAML.", + "validatingX509Certs": "El certificado en formato PEM que debe usarse para comprobar las firmas.", + "addIdpMapperName": "Nombre del asignador." +} \ No newline at end of file diff --git a/public/resources/es/identity-providers.json b/public/resources/es/identity-providers.json new file mode 100644 index 0000000000..ea0af9ab8a --- /dev/null +++ b/public/resources/es/identity-providers.json @@ -0,0 +1,35 @@ +{ + "addIdPMapper": "Añadir asignador de proveedor de identidad", + "redirectURI": "URI de redirección", + "clientId": "ID Cliente", + "clientSecret": "Secreto de Cliente", + "alias": "Alias", + "ssoServiceUrl": "URL de servicio de conexión único (SSO)", + "singleLogoutServiceUrl": "URL de servicio de desconexión único", + "nameIdPolicyFormat": "Formato de política NameID", + "unspecified": "no especificado", + "httpPostBindingResponse": "HTTP-POST enlace de respuesta", + "httpPostBindingAuthnRequest": "HTTP-POST para AuthnRequest", + "wantAuthnRequestsSigned": "Firmar AuthnRequests", + "forceAuthentication": "Forzar autenticación", + "validatingX509Certs": "Validando certificado X509", + "authorizationUrl": "URL de autorización", + "tokenUrl": "Token URL", + "logoutUrl": "URL de desconexión", + "backchannelLogout": "Backchannel Logout", + "userInfoUrl": "URL de información de usuario", + "issuer": "Emisor", + "prompt": "Prompt", + "prompts": { + "none": "ninguno", + "consent": "consentimiento", + "login": "login" + }, + "validateSignature": "Validar firmas", + "storeTokens": "Almacenar tokens", + "storedTokensReadable": "Tokens almacenados legibles", + "trustEmail": "Confiar en el email", + "mapperType": "Tipo de asignador", + "selectRole": "Selecciona rol", + "userAttribute": "Atributo de usuario" +} \ No newline at end of file diff --git a/public/resources/es/realm-settings-help.json b/public/resources/es/realm-settings-help.json new file mode 100644 index 0000000000..3c7be568dd --- /dev/null +++ b/public/resources/es/realm-settings-help.json @@ -0,0 +1,18 @@ +{ + "requireSsl": "¿Es HTTP obligatorio? ''ninguna'' significa que HTTPS no es obligatorio para ninguna direcicón IP de cliente, ''peticiones externas'' indica que localhost y las direcciones IP privadas pueden acceder sin HTTPS, ''todas las peticiones'' significa que HTTPS es obligatorio para todas las direcciones IP.", + "accountTheme": "Selecciona el tema para las páginas de gestión de la cuenta de usuario.", + "adminConsoleTheme": "Selecciona el tema para la consola de administración.", + "emailTheme": "Selecciona el tema para los emails que son enviados por el servidor.", + "failureFactor": "Indica cuantos fallos se permiten antes de que se dispare una espera.", + "waitIncrementSeconds": "Cuando se ha alcanzado el umbral de fallo, ¿cuanto tiempo debe estar un usuario bloqueado?", + "maxFailureWaitSeconds": "Tiempo máximo que un usuario quedará bloqueado.", + "maxDeltaTimeSeconds": "¿Cuando se debe reiniciar el contador de errores?", + "quickLoginCheckMilliSeconds": "Si ocurren errores de forma concurrente y muy rápida, bloquear al usuario.", + "minimumQuickLoginWaitSeconds": "Cuanto tiempo se debe esperar tras un fallo en un intento rápido de identificación", + "ssoSessionIdle": "Tiempo máximo que una sesión puede estar inactiva antes de que expire. Los tokens y sesiones de navegador son invalidadas cuando la sesión expira.", + "ssoSessionMax": "Tiempo máximo antes de que una sesión expire. Los tokens y sesiones de navegador son invalidados cuando una sesión expira.", + "offlineSessionIdle": "Tiempo máximo inactivo de una sesión sin conexión antes de que expire. Necesitas usar un token sin conexión para refrescar al menos una vez dentro de este periodo, en otro caso la sesión sin conexión expirará.", + "revokeRefreshToken": "Si está activado los tokens de actualización solo pueden usarse una vez. En otro caso los tokens de actualización no se revocan cuando se utilizan y pueden ser usado múltiples veces.", + "clientLoginTimeout": "Tiempo máximo que un cliente tiene para finalizar el protocolo de obtención del token de acceso. Debería ser normalmente del orden de 1 minuto.", + "editUsername": "Si está habilitado, el nombre de usuario es editable, en otro caso es de solo lectura." +} \ No newline at end of file diff --git a/public/resources/es/realm-settings.json b/public/resources/es/realm-settings.json new file mode 100644 index 0000000000..dbd24d3a28 --- /dev/null +++ b/public/resources/es/realm-settings.json @@ -0,0 +1,63 @@ +{ + "general": "General", + "login": "login", + "themes": "Temas", + "from": "De", + "host": "Host", + "port": "Puerto", + "enableSSL": "Habilitar SSL", + "enableStartTLS": "Habilitar StartTLS", + "username": "Usuario", + "password": "Contraseña", + "keyAlias": "Alias de clave", + "keyPassword": "Contraseña de la clave", + "type": "Tipo", + "providerId": "ID", + "provider": "Proveedor", + "certificate": "Certificado", + "userRegistration": "Registro de usuario", + "userRegistrationHelpText": "Habilitar/deshabilitar la página de registro. Un enlace para el registro se mostrará también en la página de inicio de sesión.", + "rememberMe": "Seguir conectado", + "rememberMeHelpText": "Muestra la casilla de selección en la página de inicio de sesión para permitir al usuario permanecer conectado entre reinicios del navegador hasta que la sesión expire.", + "emailAsUsername": "Email como nombre de usuario", + "verifyEmail": "Verificar email", + "editUsername": "Editar nombre de usuario", + "requireSsl": "Solicitar SSL", + "sslType": { + "all": "todas las peticiones", + "external": "peticiones externas", + "none": "ninguno" + }, + "loginTheme": "Tema de inicio de sesión", + "accountTheme": "Tema de cuenta", + "adminTheme": "Tema de consola de administración", + "emailTheme": "Tema de email", + "sessions": "Sesiones", + "SSOSessionIdle": "Sesiones SSO inactivas", + "SSOSessionMax": "Tiempo máximo sesión SSO", + "offlineSessionIdle": "Inactividad de sesión sin conexión", + "loginTimeout": "Tiempo máximo de desconexión", + "loginActionTimeout": "Tiempo máximo de acción en el inicio de sesión", + "revokeRefreshToken": "Revocar el token de actualización", + "accessTokenLifespan": "Duración del token de acceso", + "clientLoginTimeout": "Tiempo máximo de autenticación", + "clientProfileDescription": "Descripción", + "save": "Guardar", + "tokens": "Tokens", + "supportedLocales": "Idiomas soportados", + "defaultLocale": "Idioma por defecto", + "user": "Usuario", + "validatorDialogColNames": { + "colName": "Nombre de rol" + }, + "securityDefences": "Defensas de seguridad", + "headers": "Cabeceras", + "bruteForceDetection": "Detección de ataques por fuerza bruta", + "xFrameOptions": "X-Frame-Options", + "contentSecurityPolicy": "Content-Security-Policy", + "failureFactor": "Número máximo de fallos de inicio de sesión", + "waitIncrementSeconds": "Incremento de espera", + "maxFailureWaitSeconds": "Espera máxima", + "maxDeltaTimeSeconds": "Reinicio del contador de errores", + "minimumQuickLoginWaitSeconds": "Tiempo mínimo entre fallos de conexión rápidos" +} \ No newline at end of file diff --git a/public/resources/es/realm.json b/public/resources/es/realm.json new file mode 100644 index 0000000000..f5a067c96d --- /dev/null +++ b/public/resources/es/realm.json @@ -0,0 +1,3 @@ +{ + "enabled": "Habilitado" +} \ No newline at end of file diff --git a/public/resources/es/roles.json b/public/resources/es/roles.json new file mode 100644 index 0000000000..79aa2a117e --- /dev/null +++ b/public/resources/es/roles.json @@ -0,0 +1,8 @@ +{ + "associatedRolesText": "Roles Asociados", + "title": "Roles de dominio", + "addRole": "Añadir rol", + "roleName": "Nombre de rol", + "composite": "Compuesto", + "userName": "Usuario" +} \ No newline at end of file diff --git a/public/resources/es/sessions.json b/public/resources/es/sessions.json new file mode 100644 index 0000000000..f6d31af30a --- /dev/null +++ b/public/resources/es/sessions.json @@ -0,0 +1,10 @@ +{ + "title": "Sesiones", + "lastAccess": "Último Acceso", + "revocation": "Revocación", + "notBefore": "No antes de", + "setToNow": "Fijar a ahora", + "clear": "Limpiar", + "push": "Push", + "none": "ninguno" +} \ No newline at end of file diff --git a/public/resources/es/user-federation-help.json b/public/resources/es/user-federation-help.json new file mode 100644 index 0000000000..8c0e1bc080 --- /dev/null +++ b/public/resources/es/user-federation-help.json @@ -0,0 +1,3 @@ +{ + "trustEmailHelp": "Si está habilitado, el email recibido de este proveedor no se verificará aunque la verificación esté habilitada para el dominio." +} \ No newline at end of file diff --git a/public/resources/es/user-federation.json b/public/resources/es/user-federation.json new file mode 100644 index 0000000000..8a3ddf75ae --- /dev/null +++ b/public/resources/es/user-federation.json @@ -0,0 +1,5 @@ +{ + "enableStartTls": "Habilitar StartTLS", + "trustEmail": "Confiar en el email", + "selectRole": "Selecciona rol" +} \ No newline at end of file diff --git a/public/resources/es/users-help.json b/public/resources/es/users-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/es/users-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/es/users.json b/public/resources/es/users.json new file mode 100644 index 0000000000..a3d607fe22 --- /dev/null +++ b/public/resources/es/users.json @@ -0,0 +1,10 @@ +{ + "username": "Usuario", + "verifyEmail": "Verificar email", + "save": "Guardar", + "credentialType": "Tipo", + "password": "Contraseña", + "hours": "Horas", + "minutes": "Minutos", + "seconds": "Segundos" +} \ No newline at end of file diff --git a/public/resources/fr/authentication-help.json b/public/resources/fr/authentication-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/fr/authentication-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/fr/authentication.json b/public/resources/fr/authentication.json new file mode 100644 index 0000000000..e7e4460554 --- /dev/null +++ b/public/resources/fr/authentication.json @@ -0,0 +1,3 @@ +{ + "title": "Authentification" +} \ No newline at end of file diff --git a/public/resources/fr/client-scopes-help.json b/public/resources/fr/client-scopes-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/fr/client-scopes-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/fr/client-scopes.json b/public/resources/fr/client-scopes.json new file mode 100644 index 0000000000..b59e586419 --- /dev/null +++ b/public/resources/fr/client-scopes.json @@ -0,0 +1,3 @@ +{ + "clients": "Clients" +} \ No newline at end of file diff --git a/public/resources/fr/clients-help.json b/public/resources/fr/clients-help.json new file mode 100644 index 0000000000..a46fcb328a --- /dev/null +++ b/public/resources/fr/clients-help.json @@ -0,0 +1,4 @@ +{ + "loginTheme": "Sélectionnez le thème pour les pages de connexion, de mot de passe à usage unique basé sur le temps, des droits, de l''enregistrement, et du mot passe oublié.", + "accessTokenLifespan": "Durée maximale avant que le jeton d''accès n''expire. Cette valeur devrait être relativement plus petite que la durée d''inactivité (timeout) du SSO." +} \ No newline at end of file diff --git a/public/resources/fr/clients.json b/public/resources/fr/clients.json new file mode 100644 index 0000000000..cb1f9d391d --- /dev/null +++ b/public/resources/fr/clients.json @@ -0,0 +1,13 @@ +{ + "password": "Mot de passe", + "clientList": "Clients", + "authentication": "Authentification", + "loginTheme": "Thème de connexion", + "revocation": "Révocation", + "notBefore": "Pas avant", + "setToNow": "Mettre à maintenant", + "push": "Appuyer", + "clear": "Effacer", + "accessTokenLifespan": "Durée de vie du jeton d''accès", + "certificate": "Certificat" +} \ No newline at end of file diff --git a/public/resources/fr/common-help.json b/public/resources/fr/common-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/fr/common-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/fr/common.json b/public/resources/fr/common.json new file mode 100644 index 0000000000..698b265f2b --- /dev/null +++ b/public/resources/fr/common.json @@ -0,0 +1,21 @@ +{ + "add": "Ajouter", + "save": "Sauver", + "clear": "Effacer", + "enabled": "Actif", + "manage": "Gérer", + "clients": "Clients", + "sessions": "Sessions", + "events": "Évènements", + "configure": "Configurer", + "realmSettings": "Configurations du domaine", + "authentication": "Authentification", + "userFederation": "Regroupement Utilisateur", + "times": { + "seconds": "Secondes", + "minutes": "Minutes", + "hours": "Heures", + "days": "Jours" + }, + "password": "Mot de passe" +} \ No newline at end of file diff --git a/public/resources/fr/dashboard.json b/public/resources/fr/dashboard.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/fr/dashboard.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/fr/dynamic.json b/public/resources/fr/dynamic.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/fr/dynamic.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/fr/events.json b/public/resources/fr/events.json new file mode 100644 index 0000000000..bd83a6b13d --- /dev/null +++ b/public/resources/fr/events.json @@ -0,0 +1,3 @@ +{ + "title": "Évènements" +} \ No newline at end of file diff --git a/public/resources/fr/groups.json b/public/resources/fr/groups.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/fr/groups.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/fr/identity-providers-help.json b/public/resources/fr/identity-providers-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/fr/identity-providers-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/fr/identity-providers.json b/public/resources/fr/identity-providers.json new file mode 100644 index 0000000000..e9eec9d723 --- /dev/null +++ b/public/resources/fr/identity-providers.json @@ -0,0 +1,3 @@ +{ + "endpoints": "Endpoints" +} \ No newline at end of file diff --git a/public/resources/fr/realm-settings-help.json b/public/resources/fr/realm-settings-help.json new file mode 100644 index 0000000000..0d8cc2dd5f --- /dev/null +++ b/public/resources/fr/realm-settings-help.json @@ -0,0 +1,16 @@ +{ + "requireSsl": "Niveau d''exigence HTTPS : ''aucun'' signifie que le HTTPS n''est requis pour aucune adresse IP cliente. ''les requêtes externes'' signifie que localhost et les adresses IP privées peuvent accéder sans HTTPS. ''toutes les requêtes'' signifie que le protocole HTTPS est obligatoire pour toutes les adresses IP.", + "accountTheme": "Sélectionnez le thème pour la gestion des comptes.", + "adminConsoleTheme": "Sélectionnez le thème de la console d''administration.", + "emailTheme": "Sélectionnez le thème pour les courriels envoyées par le serveur.", + "failureFactor": "Nombre d''erreurs avant de déclencher le temps d''attente.", + "waitIncrementSeconds": "Quand le seuil des erreurs est atteint, combien de temps l''utilisateur est-il bloqué ?", + "maxFailureWaitSeconds": "Durée maximale de blocage du compte utilisateur", + "maxDeltaTimeSeconds": "Quand les erreurs sont-elles remises à zéro ?", + "quickLoginCheckMilliSeconds": "Si une erreur apparait trop rapidement, bloquer le compte utilisateur.", + "minimumQuickLoginWaitSeconds": "Durée d''attente demandée après une erreur entre deux connexions.", + "ssoSessionIdle": "Temps d''inactivité autorisé avant expiration de la session. Les jetons et les sessions navigateurs sont invalidées quand la session expire.", + "ssoSessionMax": "Durée maximale avant que la session n''expire. Les jetons et les sessions navigateurs sont invalidées quand la session expire.", + "clientLoginTimeout": "Durée maximale qu''a un client pour finir le protocole du jeton d''accès. Devrait être de l''ordre de la minute (1 min).", + "editUsername": "Si actif, le champ du nom de l''utilisateur est modifiable." +} \ No newline at end of file diff --git a/public/resources/fr/realm-settings.json b/public/resources/fr/realm-settings.json new file mode 100644 index 0000000000..7053974963 --- /dev/null +++ b/public/resources/fr/realm-settings.json @@ -0,0 +1,57 @@ +{ + "general": "Général", + "themes": "Thèmes", + "events": "Évènements", + "from": "De", + "host": "Hôte", + "port": "Port", + "authentication": "Authentification", + "enableSSL": "Activer SSL/TLS", + "enableStartTLS": "Activer StartTLS", + "username": "Nom de l''utilisateur", + "password": "Mot de passe", + "certificate": "Certificat", + "userRegistration": "Enregistrement d''utilisateur", + "userRegistrationHelpText": "Activer/désactiver la page d''enregistrement. Un lien pour l''enregistrement sera visible sur la page de connexion.", + "rememberMe": "Se souvenir de moi", + "rememberMeHelpText": "Affiche une case à cocher sur la page de connexion pour permettre aux utilisateurs de rester connectés entre deux redémarrages de leur navigateur, jusqu''à expiration de la session.", + "emailAsUsername": "Courriel comme nom d''utilisateur", + "loginWithEmail": "Authentification avec courriel", + "loginWithEmailHelpText": "Autorise l''utilisateur à s''authentifier avec son adresse de courriel.", + "duplicateEmails": "Doublon courriel", + "duplicateEmailsHelpText": "Autorise plusieurs utilisateurs à avoir la même adresse de courriel. Changer cette configuration va vider le cache. Il est recommandé de mettre à jour manuellement les contraintes sur le courriel dans la base de données après la désactivation du support des doublons.", + "verifyEmail": "Vérification du courriel", + "editUsername": "Éditez le nom de l''utilisateur", + "htmlDisplayName": "HTML Display name", + "requireSsl": "SSL requis", + "sslType": { + "all": "toutes les requêtes", + "external": "les requêtes externes" + }, + "endpoints": "Endpoints", + "loginTheme": "Thème de connexion", + "accountTheme": "Thème du compte", + "adminTheme": "Thème de la console d''administration", + "emailTheme": "Thème pour le courriel", + "sessions": "Sessions", + "SSOSessionIdle": "Sessions SSO inactives", + "SSOSessionMax": "Maximum de sessions SSO", + "loginTimeout": "Durée d''inactivité de connexion", + "loginActionTimeout": "Durée d''inactivité des actions de connexions", + "accessTokenLifespan": "Durée de vie du jeton d''accès", + "clientLoginTimeout": "Durée d''inactivité de connexion (timeout)", + "save": "Sauver", + "tokens": "Jetons", + "supportedLocales": "Locales supportées", + "defaultLocale": "Locale par défaut", + "securityDefences": "Mesures de sécurité", + "headers": "En-têtes", + "bruteForceDetection": "Détection des attaques par force brute", + "xFrameOptions": "X-Frame-Options", + "contentSecurityPolicy": "Content-Security-Policy", + "failureFactor": "Nombre maximal d''erreurs de connexion", + "waitIncrementSeconds": "Temps d''attente", + "maxFailureWaitSeconds": "Durée maximale d''attente", + "maxDeltaTimeSeconds": "Durée de remise à zéro des erreurs", + "minimumQuickLoginWaitSeconds": "Durée minimale d''attente entre deux connexions" +} \ No newline at end of file diff --git a/public/resources/fr/realm.json b/public/resources/fr/realm.json new file mode 100644 index 0000000000..485ee5e90a --- /dev/null +++ b/public/resources/fr/realm.json @@ -0,0 +1,3 @@ +{ + "enabled": "Actif" +} \ No newline at end of file diff --git a/public/resources/fr/roles.json b/public/resources/fr/roles.json new file mode 100644 index 0000000000..35ce0efb58 --- /dev/null +++ b/public/resources/fr/roles.json @@ -0,0 +1,3 @@ +{ + "userName": "Nom de l''utilisateur" +} \ No newline at end of file diff --git a/public/resources/fr/sessions.json b/public/resources/fr/sessions.json new file mode 100644 index 0000000000..2f16c63f9c --- /dev/null +++ b/public/resources/fr/sessions.json @@ -0,0 +1,8 @@ +{ + "title": "Sessions", + "revocation": "Révocation", + "notBefore": "Pas avant", + "setToNow": "Mettre à maintenant", + "clear": "Effacer", + "push": "Appuyer" +} \ No newline at end of file diff --git a/public/resources/fr/user-federation-help.json b/public/resources/fr/user-federation-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/fr/user-federation-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/fr/user-federation.json b/public/resources/fr/user-federation.json new file mode 100644 index 0000000000..cdba0893f8 --- /dev/null +++ b/public/resources/fr/user-federation.json @@ -0,0 +1,4 @@ +{ + "userFederation": "Regroupement Utilisateur", + "enableStartTls": "Activer StartTLS" +} \ No newline at end of file diff --git a/public/resources/fr/users-help.json b/public/resources/fr/users-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/fr/users-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/fr/users.json b/public/resources/fr/users.json new file mode 100644 index 0000000000..fef248c21b --- /dev/null +++ b/public/resources/fr/users.json @@ -0,0 +1,9 @@ +{ + "username": "Nom de l''utilisateur", + "verifyEmail": "Vérification du courriel", + "save": "Sauver", + "password": "Mot de passe", + "hours": "Heures", + "minutes": "Minutes", + "seconds": "Secondes" +} \ No newline at end of file diff --git a/public/resources/it/authentication-help.json b/public/resources/it/authentication-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/authentication-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/authentication.json b/public/resources/it/authentication.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/authentication.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/client-scopes-help.json b/public/resources/it/client-scopes-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/client-scopes-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/client-scopes.json b/public/resources/it/client-scopes.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/client-scopes.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/clients-help.json b/public/resources/it/clients-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/clients-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/clients.json b/public/resources/it/clients.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/clients.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/common-help.json b/public/resources/it/common-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/common-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/common.json b/public/resources/it/common.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/common.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/dashboard.json b/public/resources/it/dashboard.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/dashboard.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/dynamic.json b/public/resources/it/dynamic.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/dynamic.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/events.json b/public/resources/it/events.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/events.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/groups.json b/public/resources/it/groups.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/groups.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/identity-providers-help.json b/public/resources/it/identity-providers-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/identity-providers-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/identity-providers.json b/public/resources/it/identity-providers.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/identity-providers.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/realm-settings-help.json b/public/resources/it/realm-settings-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/realm-settings-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/realm-settings.json b/public/resources/it/realm-settings.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/realm-settings.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/realm.json b/public/resources/it/realm.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/realm.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/roles.json b/public/resources/it/roles.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/roles.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/sessions.json b/public/resources/it/sessions.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/sessions.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/user-federation-help.json b/public/resources/it/user-federation-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/user-federation-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/user-federation.json b/public/resources/it/user-federation.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/user-federation.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/users-help.json b/public/resources/it/users-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/users-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/it/users.json b/public/resources/it/users.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/it/users.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/ja/authentication-help.json b/public/resources/ja/authentication-help.json new file mode 100644 index 0000000000..ee23dacb0a --- /dev/null +++ b/public/resources/ja/authentication-help.json @@ -0,0 +1,22 @@ +{ + "flowType": "どの種類のフォームかを設定します。", + "topLevelFlowType": "どの種類のトップレベル・フローを作成するか設定します。「client」タイプは、クライアント(アプリケーション)の認証で使用します。「generic」はユーザーと他のすべてで使用します。", + "alias": "この設定の名前を設定します。", + "otpType": "「totp」はタイムベースのワンタイム・パスワードです。「hotp」は、サーバーでハッシュに対してカウンターを保持するカウンターベースのワンタイム・パスワードです。", + "webAuthnPolicyRpEntityName": "WebAuthnリライング・パーティーとしての人間が読み取れるサーバー名", + "otpHashAlgorithm": "OTPを生成するのにどのハッシュ・アルゴリズムを使用するか設定します。", + "otpPolicyDigits": "OTPの桁数を設定します。", + "otpPolicyPeriod": "OTPトークンが有効な秒数を設定します。デフォルトは30秒です。", + "supportedActions": "現在のOTPポリシーで動作することが分かっているアプリケーション", + "webAuthnPolicyFormHelp": "WebAuthn認証のポリシー。これは、「WebAuthn Register」必須アクションと「WebAuthn Authenticator」オーセンティケーターで使用されます。一般的な用途は、2要素認証にWebAuthnを使用する場合です。", + "webAuthnPolicyPasswordlessFormHelp": "パスワードレスWebAuthn認証のポリシー。これは、「Webauthn Register Passwordless」必須アクションおよび「WebAuthn Passwordless Authenticator」オーセンティケーターによって使用されます。一般的な使用法は、WebAuthnが一要素認証として使用される場合です。「WebAuthnポリシー」と「WebAuthnパスワードレス・ポリシー」の両方を使用すると、WebAuthnを同じレルムの第1要素オーセンティケーターと第2要素オーセンティケーターの両方として使用できます。", + "webAuthnPolicySignatureAlgorithms": "認証アサーションに使用する署名アルゴリズム。", + "webAuthnPolicyRpId": "これは、WebAuthnリライング・パーティーとしてのIDです。オリジンの有効なドメインでなければなりません。", + "webAuthnPolicyAttestationConveyancePreference": "認証ステートメントを生成する方法の優先権をオーセンティケーターに通知します。", + "webAuthnPolicyAuthenticatorAttachment": "受け入れ可能なアタッチメント・パターンでオーセンティケーターと通信します。", + "webAuthnPolicyRequireResidentKey": "これは、オーセンティケーターに公開鍵クレデンシャルを常駐鍵として作成するかどうかを指示します。", + "webAuthnPolicyUserVerificationRequirement": "ユーザーを実際に検証することを確認するためにオーセンティケーターと通信します。", + "webAuthnPolicyCreateTimeout": "ユーザーの公開鍵クレデンシャルの作成に対するタイムアウト値(秒単位)。0に設定すると、このタイムアウト・オプションは適応されません。", + "webAuthnPolicyAvoidSameAuthenticatorRegister": "すでに登録されているオーセンティケーターの登録を避けるかどうかを設定します。", + "webAuthnPolicyAcceptableAaguids": "登録可能なオーセンティケーターのAAGUIDのリスト。" +} \ No newline at end of file diff --git a/public/resources/ja/authentication.json b/public/resources/ja/authentication.json new file mode 100644 index 0000000000..4c02988daa --- /dev/null +++ b/public/resources/ja/authentication.json @@ -0,0 +1,51 @@ +{ + "title": "認証", + "flows": "フロー", + "requiredActions": "必須アクション", + "policies": "ポリシー", + "passwordPolicy": "パスワード・ポリシー", + "otpPolicy": "OTPポリシー", + "webauthnPolicy": "WebAuthnポリシー", + "webauthnPasswordlessPolicy": "WebAuthnパスワードレス・ポリシー", + "webAuthnPolicyRpEntityName": "リライング・パーティー・エンティティー名", + "otpType": "OTPタイプ", + "policyType": { + "totp": "タイムベース", + "hotp": "カウンターベース" + }, + "otpHashAlgorithm": "OTPハッシュ・アルゴリズム", + "otpPolicyDigits": "桁数", + "lookAhead": "先読みウィンドウ", + "otpPolicyPeriod": "OTPトークンの期間", + "initialCounter": "初期カウンター", + "webAuthnPolicySignatureAlgorithms": "署名アルゴリズム", + "webAuthnPolicyRpId": "リライング・パーティー・エンティティーID", + "webAuthnPolicyAttestationConveyancePreference": "期待する構成証明伝達", + "attestationPreference": { + "none": "none" + }, + "webAuthnPolicyAuthenticatorAttachment": "オーセンティケーター・アタッチメント", + "webAuthnPolicyRequireResidentKey": "常駐鍵が必要", + "webAuthnPolicyUserVerificationRequirement": "ユーザー検証要件", + "webAuthnPolicyCreateTimeout": "タイムアウト", + "webAuthnPolicyAvoidSameAuthenticatorRegister": "オーセンティケーターの重複登録回避", + "webAuthnPolicyAcceptableAaguids": "許容可能なAAGUID", + "default": "DEFAULT", + "flow": { + "browserFlow": "ブラウザーフロー", + "registrationFlow": "登録フロー", + "directGrantFlow": "ダイレクト・グラント・フロー" + }, + "edit": "編集", + "flowType": "フロータイプ", + "flow-type": { + "basic-flow": "generic", + "form-flow": "form" + }, + "addExecution": "エグゼキューションを追加", + "requirement": "必要条件", + "requirements": { + "DISABLED": "無効" + }, + "alias": "エイリアス" +} \ No newline at end of file diff --git a/public/resources/ja/client-scopes-help.json b/public/resources/ja/client-scopes-help.json new file mode 100644 index 0000000000..b00812c84d --- /dev/null +++ b/public/resources/ja/client-scopes-help.json @@ -0,0 +1,15 @@ +{ + "name": "クライアント・スコープの名前。レルム内でユニークでなければなりません。スコープ・パラメーターの値として使用されるため、名前には空白文字を含めないでください", + "description": "クライアント・スコープの説明", + "protocol": "このクライアント・スコープによって提供されているSSOプロトコル設定がどれか", + "type": "作成された各クライアントにデフォルト・スコープとして追加されるクライアント・スコープ", + "displayOnConsentScreen": "オンで、同意が必要なクライアントにこのクライアント・スコープが追加された場合、「同意画面のテキスト」で指定されたテキストが同意画面に表示されます。オフの場合、このクライアント・スコープは同意画面に表示されません", + "consentScreenText": "このクライアント・スコープが同意が必要なクライアントに追加された場合に、同意画面に表示されるテキスト。指定しない場合は、デフォルトでクライアント・スコープの名前になります", + "includeInTokenScope": "オンの場合、このクライアント・スコープの名前がアクセストークン・プロパティーの「scope」と同様にトークン・イントロスペクション・エンドポイントのレスポンスに追加されます。オフの場合、このクライアント・スコープはトークンとトークン・イントロスペクション・エンドポイントのレスポンスから除外されます。", + "guiOrder": "GUI(同意ページのような)でのプロバイダーの順序を整数で指定します。", + "prefix": "各レルムロールのプレフィックスを設定します(オプション)。", + "multiValued": "属性がマルチバリューをサポートしているかどうかを示します。サポートしている場合は、この属性のすべての値リストがクレームとして設定されます。サポートしていない場合は、最初の値だけがクレームとして設定されます。", + "tokenClaimName": "トークン内に挿入するクレームの名前を設定します。「address.street」のように完全修飾名で設定します。この場合、ネストされたJSONオブジェクトが作成されます。ネスティングを防ぎ、ドットを文字通りに使用するには、ドットをバックスラッシュ(\\.)でエスケープします。", + "claimJsonType": "トークンへのJSONクレームの追加で使用されるJSONタイプを設定します。long、int、boolean、String、JSONが有効な値です。", + "protocolMapper": "プロトコルです。" +} \ No newline at end of file diff --git a/public/resources/ja/client-scopes.json b/public/resources/ja/client-scopes.json new file mode 100644 index 0000000000..6d4d16aedf --- /dev/null +++ b/public/resources/ja/client-scopes.json @@ -0,0 +1,13 @@ +{ + "clientScopeList": "クライアント・スコープ", + "grantedClientScopes": "付与されたクライアント・スコープ", + "protocol": "プロトコル", + "type": "タイプ", + "includeInTokenScope": "トークンスコープに含める", + "realmRolePrefix": "レルムロールのプレフィックス", + "realmRoles": "レルムロール", + "clients": "クライアント", + "displayOnConsentScreen": "同意画面で表示する", + "consentScreenText": "同意画面のテキスト", + "scope": "スコープ" +} \ No newline at end of file diff --git a/public/resources/ja/clients-help.json b/public/resources/ja/clients-help.json new file mode 100644 index 0000000000..bcf66f9674 --- /dev/null +++ b/public/resources/ja/clients-help.json @@ -0,0 +1,110 @@ +{ + "clientType": "「OpenID Connect」により、クライアントは認可サーバーによって実行される認証に基づいてエンドユーザーのアイデンティティーを検証できます。「SAML」は、クロスドメインのシングル・サインオン(SSO)を含むWebベースの認証および認可のシナリオを可能にし、アサーションを含むセキュリティー・トークンを使用して情報を渡します。", + "serviceAccount": "このクライアントをKeycloakで認証し、このクライアント専用のアクセストークンの取得ができるようになります。OAuth2の仕様における「クライアント・クレデンシャル・グラント」のサポートを有効にします。", + "authorization": "きめ細かい認可のサポートを有効/無効にします。", + "directAccess": "ダイレクト・アクセス・グラントのサポートを有効にします。これは、アクセストークンの取得のためにKeycloakサーバーとユーザーのユーザー名/パスワードで直接アクセスを行います。OAuth2の仕様における「リソース・オーナー・パスワード・クレデンシャル・グラント」のサポートを有効にします。", + "standardFlow": "OpenID Connectの標準的な、認可コードによるリダイレクト・ベースの認証を有効にします。OpenID ConnectまたはOAuth2の仕様における「認可コードフロー」のサポートを有効にします。", + "implicitFlow": "OpenID Connectの認可コードなしのリダイレクト・ベース認証のサポートを有効にします。OpenID ConnectまたはOAuth2の仕様における「インプリシット・フロー」のサポートを有効にします。", + "rootURL": "相対URLに追加するルートURLを設定します。", + "validRedirectURIs": "ログインまたはログインの成功後にブラウザーがリダイレクト可能とする、有効なURIパターンを設定します。「http://example.com/*」のような単純なワイルドカードが使用可能です。相対パス、つまり「/my/relative/path/*」も指定可能です。相対パスはクライアントのルートURLを基準とします。または、未指定の場合は認証サーバーのルートURLが使用されます。SAMLでは、ログイン・リクエストに埋め込まれたコンシューマー・サービスのURLに依存している場合は、有効なURIパターンを設定する必要があります。", + "nameIdFormat": "サブジェクトに使用するName IDフォーマットを設定します。", + "alwaysDisplayInConsole": "ユーザーのアクティブなセッションがない場合でも、このクライアントを常にアカウント・コンソールに一覧表示します。", + "forceNameIdFormat": "要求されたNameIDサブジェクト・フォーマットを無視し、管理コンソールで設定された物を使用します。", + "forcePostBinding": "レスポンスに常にPOSTバインディングを使用します。", + "includeAuthnStatement": "認証方式とタイムスタンプを含めたステートメントをログイン・レスポンスに含めるべきか設定します。", + "includeOneTimeUseCondition": "OneTimeUse条件をログイン・レスポンスに含めるべきか設定します。", + "optimizeLookup": "Keycloakアダプターによって保護されたSPのREDIRECTバインディングでSAMLドキュメントに署名する際、署名鍵のIDを要素のSAMLプロトコルメッセージに含める必要があるかどうかを設定します。これにより、検証のために既知のすべてのキーを試行する代わりに単一のキーを使用するため、署名の検証が最適化されます。", + "signDocuments": "SAMLドキュメントをレルムで署名すべきか設定します。", + "signAssertions": "SAMLドキュメント内のアサーションを署名すべきか設定します。もしドキュメントが既に署名済みの場合は、この設定は不要です。", + "signatureAlgorithm": "ドキュメントの署名に使用する署名アルゴリズムです。", + "signatureKeyName": "署名されたSAML文書には、KeyName要素の署名鍵の識別情報が含まれています。Keycloak / RH-SSOカウンター・パーティーの場合は、KEY_IDを使用し、MS AD FSの場合はCERT_SUBJECTを使用します。他のオプションが動作しない場合はNONEをチェックして使用します。", + "canonicalization": "XML署名の正規化方式(Canonicalization Method)を設定します。", + "webOrigins": "許可されるCORSオリジンを設定します。有効なリダイレクトURIのすべてのオリジンを許可するには「+」を追加してください。ただし、これには「*」ワイルドカードは含まれません。すべてのオリジンを許可するには、明示的に「*」を追加してください。", + "homeURL": "認証サーバーがクライアントへのリダイレクトまたは戻るリンクを必要とする際に使用するデフォルトURLを設定します。", + "adminURL": "クライアントの管理インターフェイスのURLを設定します。クライアントがアダプターのREST APIをサポートしている場合に設定してください。このREST APIにより、認証サーバーは無効化ポリシーや他の管理タスクをプッシュすることができます。通常、クライアントのベースURLを設定します。", + "client": "認可リクエストを作成するクライアントを選択してください。提供されない場合は、認可リクエストは今いるページのクライアントで行われることになります。", + "clientId": "URIとトークンで参照されるIDを指定します。例えば「my-client」です。SAMLにおいては期待されるAuthnRequestのIssuerの値になります。", + "selectUser": "サーバーからパーミッションを検索するためにIDが使用されるユーザーを選択します。", + "roles": "選択されたユーザーに関連付けたいロールを選択してください。", + "contextualAttributes": "実行環境や実行コンテキストによって提供される任意の属性を設定します。", + "applyToResourceType": "このパーミッションが、特定タイプの全リソースに適用されるべきかどうかを指定します。この場合、パーミッションは特定リソースタイプの全インスタンスに対して評価されます。", + "resources": "このパーミッションが適用されるリソース・インスタンスを指定します。", + "scopesSelect": "このパーミッションは1つまたは複数のスコープに適用されるように指定してください。", + "clientName": "クライアントの表示名を指定します。例えば、「My Client」です。ローカライズ用のキーもサポートしています。例: ${my_client}", + "description": "クライアントの説明を指定します。例えば「タイムシート用のクライアント」です。ローカライズ用のキーもサポートしています。例: ${my_client_description}", + "loginTheme": "ログイン、OTP、グラント、登録、およびパスワード忘れに使用するページのテーマを選択します。", + "encryptAssertions": "SAMLアサーションをクライアントの公開鍵でAESを使い暗号化すべきか設定します。", + "clientSignature": "クライアントがSAMLリクエストとレスポンスを署名するか、そしてそれらを検証すべきどうかか設定します。", + "expiration": "トークンの有効期間を指定します。", + "count": "このトークンを利用してクライアントをいくつ作成可能か指定します。", + "client-authenticator-type": "Keycloakサーバーに対してこのクライアントの認証に使用するクライアント認証方式を設定します。", + "registration-access-token": "登録用アクセストークンにより、クライアントはクライアント登録サービスにアクセスできます。", + "effectiveProtocolMappers": "すべてのデフォルトのクライアント・スコープと選択されたオプションのスコープが含まれます。クライアントに発行されたアクセストークンを生成するときに、すべてのクライアント・スコープのすべてのプロトコル・マッパーとロールスコープのマッピングが使用されます", + "scopeParameter": "このスコープ・パラメーターの値をコピー/ペーストし、このクライアント・アダプターから送信された最初のOpenID Connect認証リクエストで使用できます。このクライアントに発行されたトークンを生成するときは、デフォルトのクライアント・スコープと選択されたオプションのクライアント・スコープが使用されます", + "user": "必要に応じて、サンプルのアクセストークンを生成するユーザーを選択します。ユーザーを選択しないと、評価中にサンプルのアクセストークンは生成されません", + "nodeReRegistrationTimeout": "登録されたクライアントをクラスターノードへ再登録する際の最大時間間隔を設定します。クラスターノードがこの時間内にKeycloakに再登録リクエストを送信しない場合は、Keycloakから登録解除されます。", + "accessTokenSignatureAlgorithm": "アクセストークンの署名に使用されるJWAアルゴリズム。", + "idTokenSignatureAlgorithm": "IDトークンの署名に使用されるJWAアルゴリズム。", + "idTokenEncryptionKeyManagementAlgorithm": "IDトークンの暗号化鍵の管理に使用されるJWAアルゴリズム。このオプションは、暗号化されたIDトークンが必要な場合に必須です。空のままにすると、IDトークンは署名されますが、暗号化されません。", + "idTokenEncryptionContentEncryptionAlgorithm": "IDトークンの暗号化の際に、コンテンツの暗号化に使用されるJWAアルゴリズム。このオプションは、暗号化されたIDトークンが必要な場合にのみ必須です。空のままにすると、IDトークンは署名されますが、暗号化されません。", + "userInfoSignedResponseAlgorithm": "署名付きUserInfoエンドポイントのレスポンスに使用するJWAアルゴリズムを設定します。「unsigned」に設定した場合は、UserInfoレスポンスは署名されず、application/json形式で返されます。", + "requestObjectSignatureAlgorithm": "クライアントが「request」または「request_uri」パラメーターで指定されたOIDCリクエスト・オブジェクトを送信する際に使用する必要がある、JWAアルゴリズムを設定します。「any」に設定した場合は、リクエスト・オブジェクトは任意のアルゴリズム(「none」を含む)で署名されます。", + "requestObjectRequired": "クライアントが認可リクエストとともにリクエスト・オブジェクトを提供する必要があるかどうか、およびそのためにどの方法を使用できるかを指定します。「not required」に設定されている場合、リクエスト・オブジェクトの提供はオプションです。それ以外のケースでは、リクエスト・オブジェクトを提供する必要があります。「request」に設定されている場合、リクエスト・オブジェクトは値で提供される必要があります。「request_uri」に設定されている場合、リクエスト・オブジェクトは参照によって提供される必要があります。「requestまたはrequest_uri」に設定されている場合、いずれの方法も使用できます。", + "idpInitiatedSsoUrlName": "IDP Initiated SSOを行う際にクライアントを参照するためのURLフラグメント名を設定します。空にするとIDP Initiated SSOは無効になります。ブラウザーから参照するURLは「{server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}」になります。", + "idpInitiatedSsoRelayState": "IDP Initiated SSOを行う際のSAMLリクエストで送信したいRelayStateを設定します。", + "masterSamlProcessingUrl": "設定された場合は、このURLがSPのアサーション・コンシューマーおよびシングル・ログアウト・サービスの両方のBindingに使われます。これは、SAMLエンドポイントの詳細設定にある各Bindingやサービスの設定にて個別に上書きすることができます。", + "excludeSessionStateFromAuthenticationResponse": "これがオンの場合、パラメーター「session_state」はOpenID Connect認証レスポンスに含まれません。クライアントが「session_state」パラメーターをサポートしていない古いOIDC / OAuth2アダプターを使用している場合に便利です。", + "assertionLifespan": "SAMLアサーション条件に設定された有効期限。その後、アサーションは無効になります。「SessionNotOnOrAfter」属性は変更されず、レルムレベルで定義された「SSOセッション最大」時間を引き続き使用します。", + "accessTokenLifespan": "アクセストークンが有効期限切れとなる最大時間です。この値はSSOタイムアウトと比べて短くすることをお勧めします。", + "oAuthMutual": "これにより、OAuth 2.0相互TLS証明書バインド・アクセストークンがサポートされます。つまり、Keycloakは、Keycloakのトークン・エンドポイントとこのクライアントの間で相互TLSにより交換されるクライアントのX.509証明書と、アクセストークンおよびリフレッシュ・トークンをバインドします。これらのトークンは、ベアラートークンの代わりにHolder-of-Keyトークンとして扱うことができます。", + "keyForCodeExchange": "PKCEのどのコードチャレンジ方式を使用するかを選択します。指定しない場合、Keycloakは、クライアントが適切なコードチャレンジとコード交換の方式で認可リクエストを送信しない限り、クライアントにPKCEを適用しません。", + "assertionConsumerServicePostBindingURL": "アサーション・コンシューマー・サービス(ログイン・レスポンス)のSAML POSTバインディングURLを設定します。このBindingのためのURLがない場合は空でよいです。", + "assertionConsumerServiceRedirectBindingURL": "アサーション・コンシューマー・サービス(ログイン・レスポンス)のSAML RedirectバインディングURLを設定します。このBindingのためのURLがない場合は空でよいです。", + "logoutServicePostBindingURL": "シングル・ログアウト・サービスのSAMLPOSTバインディングURLを設定します。異なるBindingを使用している場合は空でよいです。", + "logoutServiceRedirectBindingURL": "シングル・ログアウト・サービスのSAMLRedirectバインディングURLを設定します。異なるBindingを使用している場合は空でよいです。", + "frontchannelLogout": "有効の場合は、ログアウトはクライアントへのブラウザー・リダイレクトが必要になります。無効の場合は、サーバーはログアウトのバックグラウンド呼び出しを行います。", + "authenticationOverrides": "レルム認証フロー・バインディングをオーバーライドします。", + "browserFlow": "ブラウザー認証で使用したいフローを選択してください。", + "directGrant": "ダイレクト・グラント認証で使用したいフローを選択してください。", + "certificate": "クライアントで発行され、キーストアの秘密鍵で署名されたJWTを検証するためのクライアント証明書です。", + "jwksUrl": "JWK形式のクライアント鍵が格納されているURLを設定します。詳細はJWKの仕様を参照してください。「jwt」クレデンシャルを持つKeycloakクライアント・アダプターを使用している場合は、アプリケーションに「/k_jwks」という接尾辞を付けたURLを使用することができます。例えば、「http://www.myhost.com/myapp/k_jwks」です。", + "archiveFormat": "JavaキーストアまたはPKCS12アーカイブ形式", + "keyAlias": "秘密鍵と証明書のアーカイブ・エイリアスです。", + "keyPassword": "アーカイブ内の秘密鍵にアクセスするためのパスワード", + "storePassword": "アーカイブ自身にアクセスするためのパスワード", + "consentRequired": "有効の場合は、ユーザーはクライアント・アクセスに同意する必要があります。", + "import": "リソースサーバーの認可設定を含むJSONファイルをインポートします。", + "policyEnforcementMode": "ポリシー施行モードは、認可リクエストを評価する際に適用される方法を決定します。「Enforcing」は、与えられたリソースに関連するポリシーが存在しない場合でも、リクエストはデフォルトで拒否されることを意味します。「Permissive」は、与えられたリソースに関連するポリシーが存在しない場合でも、リクエストは許可されることを意味します。「Disabled」は、完全にポリシーの評価を無効にし、任意のリソースへのアクセスを許可します。", + "decisionStrategy": "決定戦略は、パーミッションの評価方法と最終的な判定の取得方法を決定します。「Affirmative」とは、リソースおよびそのスコープへのアクセスを許可するために、少なくとも1つのパーミッションが肯定的な判定に評価される必要があることを意味します。「Unanimous」とは、最終的な判定も肯定的であるために、すべてのパーミッションが肯定的な判定に評価される必要があることを意味します。", + "allowRemoteResourceManagement": "リソースは、リソースサーバーによりリモートで管理すべきかどうかを設定します。オフの場合は、リソースはこの管理コンソールだけで管理されます。", + "resourceName": "このリソースの一意な名前。この名前は、リソースを一意に識別するために使用でき、特定のリソースを照会するときに便利です。", + "type": "このリソースのタイプを設定します。異なるリソース・インスタンスを同じタイプにグルーピングすることができます。", + "uris": "リソースによって保護されているURIのセット。", + "scopes": "このリソースに関連付けるスコープを設定します。", + "fullScopeAllowed": "全ての制限の無効を許可します。", + "ownerManagedAccess": "有効にすると、このリソースへのアクセスをリソースオーナーが管理できます。", + "resourceAttribute": "リソースに関連付けられた属性。", + "resetActions": "ユーザーにリセット・アクションEメールを送信するときに実行するアクションのセット。「Verify Email」は、Eメールアドレスを確認するためのEメールをユーザーに送信します。「Update Profile」は、新しい個人情報を入力する必要があります。「Update Password」は、ユーザーが新しいパスワードを入力する必要があります。「Configure OTP」は、モバイル・パスワード・ジェネレーターの設定が必要です。", + "lifespan": "アクション許可が失効するまでの最大時間。", + "scopeName": "このスコープのユニークな名前を設定します。名前はスコープの一意な識別に使用され、特定のスコープを照会する際に使用することができます。", + "policy-name": "このポリシーの名前を設定します。", + "policy-description": "このポリシーの説明を設定します。", + "policyDecisionStagey": "決定戦略は、ポリシーの評価方法と最終的な判定方法を決定します。「Affirmative」は、最終判定がpositiveとなるためには、少なくとも1つのポリシーがpositiveと評価する必要がある、ということを意味します。「Unanimous」は、全体の判定がpositiveとなるためには、すべてのポリシーがpositiveと評価する必要がある、ということを意味します。「Consensus」は、positiveの数がnegativeの数より多くなければならないことを意味します。positiveとnegativeの数が同じ場合は、最終的な判定はnegativeになります。", + "applyPolicy": "このポリシーやパーミッションで定義されたスコープに適用するすべてのポリシーを設定します。", + "policyClient": "このポリシーで許可されるクライアントを指定します。", + "groupsClaim": "定義されている場合、ポリシーは、パーミッションを要求するアイデンティティーを表すアクセストークンまたはIDトークン内の特定のクレームから、ユーザーのグループを取得します。定義されていない場合、ユーザーのグループはレルム設定から取得されます。", + "policyGroups": "どのユーザーがこのポリシーで許可されるか指定してください。", + "policyRoles": "このポリシーで許可されるクライアント・ロールを指定してください。", + "startTime": "ポリシーを許可しない日時を定義します。現在日時がこの値より後か、等しい場合にのみ許可されます。", + "expireTime": "ポリシーを許可しない日時を定義します。現在日時がこの値より前か、等しい場合にのみ許可されます。", + "month": "ポリシーが許可される月を定義します。2番目のフィールドに値を入力して範囲を指定することもできます。この場合、現在の月が指定した2つの値の間にあるか、等しい場合のみ許可されます。", + "dayMonth": "ポリシーが許可される日を定義します。2番目のフィールドに値を入力して範囲を指定することもできます。この場合、現在の日が指定した2つの値の間にあるか、等しい場合のみ許可されます。", + "hour": "ポリシーが許可される時を定義します。2番目のフィールドに値を入力して範囲を指定することもできます。この場合、現在の時が指定した2つの値の間にあるか、等しい場合のみ許可されます。", + "minute": "ポリシーが許可される分を定義します。2番目のフィールドに値を入力して範囲を指定することもできます。この場合、現在の分が指定した2つの値の間にあるか、等しい場合のみ許可されます。", + "policyCode": "このポリシーに対する条件を提供するJavaScriptコード。", + "logic": "ロジックは、ポリシーの判定方法を決定します。「Positive」の場合は、このポリシーの評価中に得られた結果(許可または拒否)が判定の実行に使用されます。「Negative」の場合は、結果は反転されます。つまり、許可は拒否になり、拒否は許可になります。", + "permissionName": "このパーミッションの名前を設定します。", + "permissionDescription": "このパーミッションの説明を設定します。", + "permissionType": "このパーミッションが適用されるリソースタイプを指定します。", + "permissionsEnabled": "このロールを管理するために、きめ細かいパーミッションを有効にするかどうかを決定します。無効にすると、設定されている現在のパーミッションがすべて削除されます。" +} \ No newline at end of file diff --git a/public/resources/ja/clients.json b/public/resources/ja/clients.json new file mode 100644 index 0000000000..5643fbceab --- /dev/null +++ b/public/resources/ja/clients.json @@ -0,0 +1,163 @@ +{ + "protocol": "プロトコル", + "copy": "コピー", + "clientAuthorization": "認可", + "importClient": "クライアントのインポート", + "webOrigins": "Webオリジン", + "adminURL": "管理URL", + "formatOption": "フォーマット・オプション", + "encryptAssertions": "アサーションを暗号化する", + "clientSignature": "クライアント署名が必須", + "keys": "鍵", + "credentials": "クレデンシャル", + "roles": "ロール", + "clientScopes": "クライアント・スコープ", + "addClientScope": "クライアント・スコープの追加", + "fullScopeAllowed": "フルスコープを許可", + "setup": "セットアップ", + "selectAUser": "ユーザーを選択", + "client": "client", + "evaluate": "評価", + "reevaluate": "再評価", + "showAuthData": "認可データを表示", + "unanimous": "Unanimous", + "affirmative": "Affirmative", + "consensus": "Consensus", + "authScopes": "認可スコープ", + "anyResource": "任意のリソース", + "anyScope": "任意のスコープ", + "selectScope": "スコープを選択", + "applyToResourceType": "リソースタイプに適用", + "contextualInfo": "コンテキスト情報", + "contextualAttributes": "コンテキスト属性", + "kc": { + "realm": { + "name": "レルム" + } + }, + "password": "パスワード", + "settings": "設定", + "policyEnforcementMode": "ポリシー施行モード", + "policyEnforcementModes": { + "ENFORCING": "実施", + "PERMISSIVE": "許容", + "DISABLED": "無効" + }, + "decisionStrategy": "決定戦略", + "type": "タイプ", + "iconUri": "アイコンURI", + "ownerManagedAccess": "User-Managed Accessの有効", + "allowRemoteResourceManagement": "リモートリソース管理", + "resources": "リソース", + "resource": "リソース", + "allTypes": "すべてのタイプ", + "scope": "スコープ", + "owner": "オーナー", + "uris": "URI", + "scopes": "スコープ", + "policies": "ポリシー", + "createPermission": "パーミッションを作成", + "identityInformation": "アイデンティティー情報", + "resourceType": "リソースタイプ", + "createPolicy": "ポリシーを作成", + "applyPolicy": "ポリシーの適用", + "groupsClaim": "グループクレーム", + "users": "ユーザー", + "month": "月", + "hour": "時", + "minute": "分", + "code": "コード", + "logic": "ロジック", + "logicType": { + "positive": "Positive", + "negative": "Negative" + }, + "scopeParameter": "スコープ・パラメーター", + "effectiveProtocolMappers": "有効なプロトコル・マッパー", + "effectiveRoleScopeMappings": "有効なロールスコープ・マッピング", + "generatedAccessToken": "生成されたアクセストークン", + "parentClientScope": "親クライアント・スコープ", + "user": "ユーザー", + "clientList": "クライアント", + "initialAccessToken": "初期アクセストークン", + "alwaysDisplayInConsole": "常にコンソールに表示", + "created": "作成日", + "lastUpdated": "最終更新日", + "expires": "有効期限", + "count": "カウント", + "remainingCount": "残りのカウント", + "expiration": "有効期限", + "clientAuthentication": "クライアント認証", + "authentication": "認証", + "realmRoles": "レルムロール", + "frontchannelLogout": "フロントチャンネル・ログアウト", + "rootUrl": "ルートURL", + "validRedirectUri": "有効なリダイレクトURI", + "idpInitiatedSsoRelayState": "IDP Initiated SSOのRelayState", + "masterSamlProcessingUrl": "SAMLを処理するマスターURL", + "nameIdFormat": "Name IDフォーマット", + "forceNameIdFormat": "Name IDフォーマットを強制", + "forcePostBinding": "POSTバインディングを強制", + "includeAuthnStatement": "AuthnStatementを含める", + "includeOneTimeUseCondition": "OneTimeUse条件を含める", + "optimizeLookup": "REDIRECT署名鍵検索の最適化", + "signDocuments": "ドキュメントを署名する", + "signAssertions": "アサーションを署名する", + "signatureKeyName": "SAML署名鍵名", + "canonicalization": "正規化方式", + "loginTheme": "ログインテーマ", + "clientAuthenticator": "クライアント認証", + "clientSecret": "クライアント・シークレット", + "selectMethodType": { + "import": "インポート" + }, + "registrationAccessToken": "登録用アクセストークン", + "subject": "サブジェクトDN", + "revocation": "無効化", + "clustering": "クラスタリング", + "notBefore": "この日時より前", + "setToNow": "現在日時を設定", + "addNode": "ノードを追加", + "push": "プッシュ", + "clear": "クリア", + "nodeReRegistrationTimeout": "ノード再登録のタイムアウト", + "registeredClusterNodes": "登録済みクラスターノード", + "nodeHost": "ノードホスト", + "lastRegistration": "最終登録", + "testClusterAvailability": "クラスターの可用性をテスト", + "registerNodeManually": "ノードを手動で登録", + "fineGrainOpenIdConnectConfiguration": "OpenID Connectの詳細設定", + "fineGrainSamlEndpointConfig": "SAMLエンドポイントの詳細設定", + "accessTokenSignatureAlgorithm": "アクセストークン署名アルゴリズム", + "idTokenSignatureAlgorithm": "IDトークン署名アルゴリズム", + "idTokenEncryptionKeyManagementAlgorithm": "IDトークン暗号化鍵管理アルゴリズム", + "idTokenEncryptionContentEncryptionAlgorithm": "IDトークン暗号化コンテンツの暗号化アルゴリズム", + "userInfoSignedResponseAlgorithm": "署名付きUserInfoレスポンスのアルゴリズム", + "requestObjectSignatureAlgorithm": "リクエスト・オブジェクトの署名アルゴリズム", + "requestObjectRequired": "リクエスト・オブジェクトが必要", + "excludeSessionStateFromAuthenticationResponse": "認証レスポンスからセッション状態を除外", + "assertionConsumerServicePostBindingURL": "アサーション・コンシューマー・サービスのPOSTバインディングURL", + "assertionConsumerServiceRedirectBindingURL": "アサーション・コンシューマー・サービスのRedirectバインディングURL", + "logoutServicePostBindingURL": "ログアウト・サービスのPOSTバインディングURL", + "logoutServiceRedirectBindingURL": "ログアウト・サービスのRedirectバインディングURL", + "assertionLifespan": "アサーションの有効期限", + "accessTokenLifespan": "アクセストークン生存期間", + "oAuthMutual": "OAuth 2.0相互TLS証明書バインド・アクセストークンが有効", + "keyForCodeExchange": "Proof Key for Code Exchangeのコードチャレンジ方式", + "authenticationOverrides": "認証フローのオーバーライド", + "browserFlow": "ブラウザーフロー", + "directGrant": "ダイレクト・グラント・フロー", + "useJwksUrl": "JWKS URLの使用", + "certificate": "証明書", + "jwksUrl": "JWKS URL", + "generateNewKeys": "新しい鍵を生成", + "archiveFormat": "アーカイブ形式", + "keyAlias": "キーエイリアス", + "keyPassword": "鍵のパスワード", + "storePassword": "ストアのパスワード", + "importFile": "ファイルをインポート", + "tokenLifespan": { + "expires": "有効期限" + }, + "mappers": "マッパー" +} \ No newline at end of file diff --git a/public/resources/ja/common-help.json b/public/resources/ja/common-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/ja/common-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/ja/common.json b/public/resources/ja/common.json new file mode 100644 index 0000000000..6bcd825dac --- /dev/null +++ b/public/resources/ja/common.json @@ -0,0 +1,94 @@ +{ + "add": "追加", + "create": "作成", + "save": "保存", + "continue": "続ける", + "remove": "削除", + "key": "キー", + "value": "値", + "next": "次へ", + "back": "戻る", + "export": "エクスポート", + "action": "アクション", + "download": "ダウンロード", + "clear": "クリア", + "on": "オン", + "off": "オフ", + "edit": "編集", + "enabled": "有効", + "disabled": "無効", + "disable": "無効", + "none": "none", + "signOut": "サインアウト", + "manageAccount": "アカウントの管理", + "serverInfo": "サーバー情報", + "testConnection": "接続テスト", + "description": "説明", + "type": "タイプ", + "category": "カテゴリー", + "priority": "優先度", + "clientScope": { + "default": "DEFAULT" + }, + "allTypes": "すべてのタイプ", + "manage": "管理", + "clients": "クライアント", + "clientScopes": "クライアント・スコープ", + "realmRoles": "レルムロール", + "users": "ユーザー", + "sessions": "セッション", + "events": "イベント", + "mappers": "マッパー", + "permissions": "パーミッション", + "usersPermissionsHint": "レルム内のすべてのユーザーを管理するきめ細かいパーミッション。レルム内のユーザーを管理できるユーザーには、さまざまなポリシーを定義できます。", + "clientsPermissionsHint": "このクライアントを管理したり、このクライアントによって定義されたロールを適用したりする管理者のきめ細かいパーミッションです。", + "permissionsEnabled": "パーミッションが有効", + "scopePermissions": { + "clients": { + "manage-description": "管理者がこのクライアントを管理できるかどうかを決定するポリシー", + "view-description": "管理者がこのクライアントを表示できるかどうかを決定するポリシー", + "map-roles-description": "管理者がこのクライアントによって定義されたロールをマップできるかどうかを決定するポリシー", + "map-roles-client-scope-description": "管理者がこのクライアントによって定義されたロールを別のクライアントのクライアント・スコープに適用できるかどうかを決定するポリシー", + "map-roles-composite-description": "管理者がこのクライアントによって定義されたロールをコンポジットとして別のロールに適用できるかどうかを決定するポリシー", + "token-exchange-description": "このクライアントを対象とするトークンのトークン交換を許可するクライアントを決定するポリシー。" + }, + "users": { + "view-description": "管理者がレルム内のすべてのユーザーを表示できるかどうかを決定するポリシー", + "manage-description": "管理者がレルム内のすべてのユーザーを管理できるかどうかを決定するポリシー", + "map-roles-description": "管理者がすべてのユーザーのロールをマップできるかどうかを決定するポリシー", + "manage-group-membership-description": "管理者がレルム内のすべてのユーザーのグループ・メンバーシップを管理できるかどうかを決定するポリシー。これは、特定のグループポリシーと組み合わせて使用??されます", + "impersonate-description": "管理者が他のユーザーを偽装できるかどうかを決定するポリシー", + "user-impersonated-description": "どのユーザーを偽装するかを決定するポリシー。これらのポリシーは、偽装されているユーザーに適用されます。" + } + }, + "configure": "設定", + "realmSettings": "レルムの設定", + "authentication": "認証", + "identityProviders": "アイデンティティー・プロバイダー", + "userFederation": "ユーザー・フェデレーション", + "settings": "設定", + "details": "詳細", + "Sunday": "日", + "Monday": "月", + "Tuesday": "火", + "Wednesday": "水", + "Thursday": "木", + "Friday": "金", + "Saturday": "土", + "times": { + "seconds": "秒", + "minutes": "分", + "hours": "時", + "days": "日" + }, + "attributes": "属性", + "credentials": "クレデンシャル", + "clientId": "クライアントID", + "id": "ID", + "mapperType": "マッパータイプ", + "leave": "外す", + "password": "パスワード", + "passwordConfirmation": "新しいパスワード(確認)", + "temporaryPassword": "一時的", + "temporaryPasswordHelpText": "有効の場合は、ユーザーは次のログイン時にパスワードの変更が必要となります。" +} \ No newline at end of file diff --git a/public/resources/ja/dashboard.json b/public/resources/ja/dashboard.json new file mode 100644 index 0000000000..de7b32120d --- /dev/null +++ b/public/resources/ja/dashboard.json @@ -0,0 +1,5 @@ +{ + "serverInfo": "サーバー情報", + "profile": "プロファイル", + "disabledFeatures": "使用できない機能" +} \ No newline at end of file diff --git a/public/resources/ja/dynamic.json b/public/resources/ja/dynamic.json new file mode 100644 index 0000000000..b4c2c632f5 --- /dev/null +++ b/public/resources/ja/dynamic.json @@ -0,0 +1,128 @@ +{ + "selectARole": "ロールを選択してください", + "usermodel": { + "prop": { + "label": "プロパティー", + "tooltip": "UserModelインターフェイスのプロパティー・メソッドの名前です。例えば、「email」の値はUserModel.getEmail()メソッドを参照しています。" + }, + "attr": { + "label": "ユーザー属性", + "tooltip": "格納されるユーザー属性名、UserMode.attributeマップ内の属性名です。" + }, + "clientRoleMapping": { + "client": { + "label": "クライアントID", + "tooltip": "ロールマッピング用のクライアントID。このクライアントのクライアント・ロールだけがトークンに追加されます。これが設定されていない場合は、すべてのクライアントのクライアント・ロールがトークンに追加されます。" + }, + "rolePrefix": { + "label": "クライアント・ロールのプレフィックス", + "tooltip": "各クライアント・ロールのプレフィックスを設定します(オプション)。" + }, + "tokenClaimName": { + "tooltip": "トークン内に挿入するクレームの名前を設定します。「address.street」のように完全修飾名で設定します。この場合、ネストされたJSONオブジェクトが作成されます。ネスティングを防ぎ、ドットを文字通りに使用するには、ドットをバックスラッシュ(\\.)でエスケープします。特別なトークン${client_id}を使うことができ、これは実際のクライアントIDに置き換えられます。使用例は「resource_access.${client_id}.roles」です。これは、すべてのクライアントからロールを追加する場合(特に「Client ID」スイッチが設定されていない場合)や、各クライアントのクライアント・ロールを別々の場所に保存する場合に、特に便利です。" + } + }, + "realmRoleMapping": { + "rolePrefix": { + "label": "レルムロールのプレフィックス", + "tooltip": "各レルムロールのプレフィックスを設定します(オプション)。" + } + } + }, + "userSession": { + "modelNote": { + "label": "ユーザー・セッション・ノート", + "tooltip": "UserSessionModel.noteマップ内のユーザー・セッション・ノート名です。" + } + }, + "multivalued": { + "label": "マルチバリュー", + "tooltip": "属性がマルチバリューをサポートしているかどうかを示します。サポートしている場合は、この属性のすべての値リストがクレームとして設定されます。サポートしていない場合は、最初の値だけがクレームとして設定されます。" + }, + "aggregate": { + "attrs": { + "label": "属性値の集約", + "tooltip": "属性値をグループ属性と集約する必要があるかどうかを示します。OpenID Connectマッパーを使用している場合は、すべての値を取得するためにマルチバリューのオプションも有効にする必要があります。重複した値は破棄され、値の順序はこのオプションでは保証されません。" + } + }, + "selectRole": { + "label": "ロールの選択", + "tooltip": "左側にあるテキストボックスにロールを入力するか、ブラウズして必要なロールを選択するためにこのボタンをクリックしてください。" + }, + "tokenClaimName": { + "label": "トークンクレーム名", + "tooltip": "トークン内に挿入するクレームの名前を設定します。「address.street」のように完全修飾名で設定します。この場合、ネストされたJSONオブジェクトが作成されます。ネスティングを防ぎ、ドットを文字通りに使用するには、ドットをバックスラッシュ(\\.)でエスケープします。" + }, + "jsonType": { + "label": "クレームJSONタイプ", + "tooltip": "トークンへのJSONクレームの追加で使用されるJSONタイプを設定します。long、int、boolean、String、JSONが有効な値です。" + }, + "includeInIdToken": { + "label": "IDトークンに追加", + "tooltip": "クレームをIDトークンに追加すべきかどうかを設定します。" + }, + "includeInAccessToken": { + "label": "アクセストークンに追加", + "tooltip": "クレームをアクセストークンに追加すべきかどうかを設定します。" + }, + "includeInUserInfo": { + "label": "UserInfoに追加", + "tooltip": "クレームをUserInfoに追加すべきかどうかを設定します。" + }, + "sectorIdentifierUri": { + "label": "セクター識別子URI", + "tooltip": "pairwise sub値を使用し、かつ動的クライアント登録をサポートするプロバイダーは、sector_identifier_uriパラメーターを使用すべきです(SHOULD)。これは、共通の管理下にあるWebサイト群に対し、個々のドメイン名とは独立してparwise sub値の一貫性を保持する方法を提供します。また、クライアントに対し、すべてのユーザーを再登録させることなしにredirect_uriを変更する方法も提供します。" + }, + "pairwiseSubAlgorithmSalt": { + "label": "ソルト", + "tooltip": "ペアワイズ対象識別子を計算する際に使用するソルトを設定します。空白のままにするとソルトは生成されます。" + }, + "addressClaim": { + "street": { + "label": "その他住所のユーザー属性名", + "tooltip": "「address」トークンクレーム内の「street_address」サブクレームにマップするために使用されるユーザー属性の名前。デフォルトは「street」です。" + }, + "locality": { + "label": "市区町村のユーザー属性名", + "tooltip": "「address」トークンクレーム内の「locality」サブクレームにマップするために使用されるユーザー属性の名前。デフォルトは「locality」です。" + }, + "region": { + "label": "都道府県のユーザー属性名", + "tooltip": "「address」トークンクレーム内の「region」サブクレームにマップするために使用されるユーザー属性の名前。デフォルトは「region」です。" + }, + "postal_code": { + "label": "郵便番号のユーザー属性名", + "tooltip": "「address」トークンクレーム内の「postal_code」サブクレームにマップするために使用されるユーザー属性の名前。デフォルトは「postal_code」です。" + }, + "country": { + "label": "国のユーザー属性名", + "tooltip": "「address」トークンクレーム内の「country」サブクレームにマップするために使用されるユーザー属性の名前。デフォルトは「country」です。" + }, + "formatted": { + "label": "整形された住所のユーザー属性名", + "tooltip": "「address」トークンクレーム内の「formatted」サブクレームにマップするために使用されるユーザー属性の名前。デフォルトは「formatted」です。" + } + }, + "included": { + "client": { + "audience": { + "label": "含まれるクライアント・オーディエンス", + "tooltip": "指定されたオーディエンス・クライアントのクライアントIDが、トークンのオーディエンス(aud)フィールドに含まれます。トークンに既存のオーディエンスが存在する場合は、指定された値が単にそれらに追加されます。既存のオーディエンスを上書きすることはありません。" + } + }, + "custom": { + "audience": { + "label": "含まれるカスタム・オーディエンス", + "tooltip": "これは「含まれるクライアント・オーディエンス」が入力されていない場合にのみ使用されます。指定された値が、トークンのオーディエンス(aud)フィールドに含まれます。トークンに既存のオーディエンスが存在する場合は、指定された値が単にそれらに追加されます。既存のオーディエンスを上書きすることはありません。" + } + } + }, + "name-id-format": "Name IDフォーマット", + "mapper": { + "nameid": { + "format": { + "tooltip": "マッパーを適用するName IDフォーマット" + } + } + } +} \ No newline at end of file diff --git a/public/resources/ja/events.json b/public/resources/ja/events.json new file mode 100644 index 0000000000..47568c0fa0 --- /dev/null +++ b/public/resources/ja/events.json @@ -0,0 +1,20 @@ +{ + "title": "イベント", + "adminEvents": "管理イベント", + "time": "日時", + "user": "ユーザー", + "username": "ユーザー名", + "email": "Eメール", + "eventType": "イベントタイプ", + "ipAddress": "IPアドレス", + "client": "client", + "realm": "レルム", + "resourcePath": "リソースパス", + "resourceType": "リソースタイプ", + "resourceTypes": "リソースタイプ", + "operationType": "操作タイプ", + "operationTypes": "操作タイプ", + "auth": "認証", + "value": "値", + "representation": "Representation" +} \ No newline at end of file diff --git a/public/resources/ja/groups.json b/public/resources/ja/groups.json new file mode 100644 index 0000000000..670ac5f55a --- /dev/null +++ b/public/resources/ja/groups.json @@ -0,0 +1,9 @@ +{ + "createGroup": "グループの作成", + "members": "メンバー", + "create": "作成", + "email": "Eメール", + "lastName": "姓", + "firstName": "名", + "attributes": "属性" +} \ No newline at end of file diff --git a/public/resources/ja/identity-providers-help.json b/public/resources/ja/identity-providers-help.json new file mode 100644 index 0000000000..a70c6eeb7e --- /dev/null +++ b/public/resources/ja/identity-providers-help.json @@ -0,0 +1,47 @@ +{ + "redirectURI": "アイデンティティー・プロバイダーの設定で使用するリダイレクトURIです。", + "alias": "エイリアスは一意にアイデンティティー・プロバイダーを識別するもので、リダイレクトURIの構築にも使用されます。", + "displayName": "アイデンティティー・プロバイダーの分かりやすい名前を設定します。", + "clientId": "アイデンティティー・プロバイダーで登録されているクライアント識別子を設定します。", + "clientSecret": "アイデンティティー・プロバイダーで登録されているクライアント・シークレットを設定します。このフィールドは、ボールトから値を取得できます。${vault.ID}形式を使用します。", + "discoveryEndpoint": "リモートIDPディスカバリー・ディスクリプターよりメタデータをインポートします。", + "importConfig": "ダウンロードしたIDPディスカバリー・ディスクリプターよりメタデータをインポートします。", + "passLoginHint": "アイデンティティー・プロバイダーにlogin_hintを渡します。", + "passCurrentLocale": "現在のロケールをui_localesパラメーターとしてアイデンティティー・プロバイダーに渡します。", + "logoutUrl": "外部IDPからユーザーのログアウトに使用するセッション終了エンドポイントを設定します。", + "backchannelLogout": "外部IDPがバックチャンネル・ログアウトをサポートするどうかを設定します。", + "disableUserInfo": "追加のユーザー情報を取得するUserInfoサービスの使用を無効にするかどうかを設定します。デフォルトではこのOIDCサービスを使用します。", + "userInfoUrl": "UserInfoのURLを設定します。これはオプションです。", + "issuer": "レスポンス内の発行者の識別子(Issuer Identifier)を設定します。未設定の場合は、検証は実行されません。", + "scopes": "認可リクエストの際に送信されるスコープです。スペース区切りでスコープのリストを設定します。デフォルトは「openid」です。", + "acceptsPromptNone": "これは、アイデンティティー・プロバイダー・オーセンティケーターとともに使用されるか、またはkc_idp_hintがこのアイデンティティー・プロバイダーを指す場合に使用されます。クライアントがprompt=noneでリクエストを送信し、ユーザーがまだ認証されていない場合、エラーは直接クライアントに返されませんが、prompt=noneのリクエストはこのアイデンティティー・プロバイダーに転送されます。", + "validateSignature": "外部IDPの署名検証の有効/無効を設定します。", + "useJwksUrl": "有効とした場合は、アイデンティティー・プロバイダーの公開鍵が指定されたJWKS URLからダウンロードされます。アイデンティティー・プロバイダーが新しい鍵ペアを生成する際に、新しい鍵が常に再ダウンロードされるため、柔軟性が大幅に向上します。無効とした場合は、Keycloak DBの公開鍵(または証明書)が使用されるため、アイデンティティー・プロバイダーの鍵ペアが変更された際には、常にKeycloak DBに新しい鍵をインポートする必要があります。", + "allowedClockSkew": "アイデンティティー・プロバイダーのトークンの検証時に許容されるクロックスキュー(秒単位)。デフォルト値は0です。", + "forwardParameters": "最初のアプリケーションへのリクエストから取得し、外部IDPの認可エンドポイントへ転送されるOpenID Connect/OAuth標準以外のクエリー・パラメーター。複数のパラメーターをカンマ(,)で区切って入力できます。", + "clientAuthentication": "クライアント認証方法(参照:https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication)。秘密鍵で署名されたJWTの場合、レルム秘密鍵が使用されます。", + "storeTokens": "ユーザー認証後のトークン格納の有効/無効を設定します。", + "storedTokensReadable": "新しいユーザーが格納されたトークンを読み取り可能かどうかの有効/無効設定です。broker.read-tokenロールをアサインします。", + "trustEmail": "有効とした場合は、このレルムでEメールの確認が有効となっている場合でも、このプロバイダーが提供するEメールは確認されなくなります。", + "accountLinkingOnly": "オンの場合、ユーザーはこのプロバイダーからログインできません。このプロバイダーにリンクすることのみできます。これは、プロバイダーからのログインを許可したくないが、プロバイダーと統合したい場合に便利です", + "hideOnLoginPage": "非表示の場合、明示的に要求されていれば(例えば、「kc_idp_hint」パラメーターを使用していれば)、このプロバイダーによるログインが可能です。", + "firstBrokerLoginFlowAlias": "このアイデンティティー・プロバイダーでの初回ログイン後に起動させる認証フローのエイリアスです。「初回ログイン」という用語は、認証したアイデンティティー・プロバイダー・アカウントに現在関連付けられているKeycloakアカウントがない状態であることを意味します。", + "syncMode": "すべてのマッパーのデフォルトの同期モード。同期モードは、マッパーを使用してユーザーデータを同期するタイミングを決定します。可能な値は次のとおりです。このオプションが導入される前の動作を維持する「レガシー」、このアイデンティティー・プロバイダーを使用したユーザーの初回ログイン時に一度だけユーザーをインポートする「インポート」、このアイデンティティー・プロバイダーでログインするたびにユーザーを常に更新する「強制」。", + "useEntityDescriptor": "リモートIDPのSAMLエンティティー・ディスクリプターからメタデータをインポートします。", + "samlEntityDescriptor": "外部IDPメタデータを設定ファイルよりロード、またはURLよりダウンロードして設定します。", + "ssoServiceUrl": "認証リクエスト(SAML AuthnRequest)の送信に使用するURLを設定します。", + "singleLogoutServiceUrl": "ログアウト・リクエストの送信に使用するURLを設定します。", + "principalType": "アサーションから外部ユーザーを識別し、追跡する方法。デフォルトではSubject NameIDを使用しますが、識別属性を設定することもできます。", + "principalAttribute": "外部ユーザーを識別するために使用される属性の名前またはフレンドリー名。", + "httpPostBindingResponse": "HTTP-POSTバインディングを使用してリクエストに応答するかどうかを設定します。オフの場合は、HTTP-REDIRECTバインディングが使用されます。", + "httpPostBindingAuthnRequest": "HTTP-POSTバインディングを使用してAuthnRequestを送信するかどうかを設定します。オフの場合は、HTTP-REDIRECTバインディングが使用されます。", + "wantAuthnRequestsSigned": "アイデンティティー・プロバイダーが署名付きAuthnRequestを要求するかどうかを設定します。", + "signatureAlgorithm": "ドキュメントの署名に使用する署名アルゴリズムです。", + "wantAssertionsSigned": "このサービス・プロバイダーが署名付きアサーションを要求するかどうかを設定します。", + "wantAssertionsEncrypted": "このサービス・プロバイダーが暗号化されたアサーションを期待するかどうかを設定します。", + "forceAuthentication": "アイデンティティー・プロバイダーが以前のセキュリティー・コンテキストに頼るのではなく、プレゼンターを直接認証すべきかどうかを設定します。", + "validateSignatures": "SAMLレスポンスの署名検証の有効/無効を設定します。", + "validatingX509Certs": "署名の確認に使用するPEM形式の証明書を設定します。", + "addIdpMapperName": "マッパーの名前です。", + "syncModeOverride": "このマッパーのIDPのデフォルトの同期モードをオーバーライドします。値は次のとおりです。このオプションが導入される前の動作を維持する「レガシー」、このアイデンティティー・プロバイダーを使用したユーザーの初回ログイン時に一度だけユーザーをインポートする「インポート」、このアイデンティティー・プロバイダーでログインするたびにユーザーを常に更新する「強制」、このマッパーのアイデンティティー・プロバイダーで定義された同期モードを使用する「継承」。" +} \ No newline at end of file diff --git a/public/resources/ja/identity-providers.json b/public/resources/ja/identity-providers.json new file mode 100644 index 0000000000..c0303af030 --- /dev/null +++ b/public/resources/ja/identity-providers.json @@ -0,0 +1,71 @@ +{ + "addIdPMapper": "アイデンティティー・プロバイダー・マッパーを追加", + "redirectURI": "リダイレクトURI", + "clientId": "クライアントID", + "clientSecret": "クライアント・シークレット", + "endpoints": "エンドポイント", + "alias": "エイリアス", + "ssoServiceUrl": "シングル・サインオン・サービスのURL", + "singleLogoutServiceUrl": "シングル・ログアウト・サービスのURL", + "nameIdPolicyFormat": "Name IDポリシー・フォーマット", + "email": "Eメール", + "unspecified": "未定義", + "principalType": "プリンシパル・タイプ", + "principalAttribute": "プリンシパル属性", + "httpPostBindingResponse": "HTTP-POSTバインディング・レスポンス", + "httpPostBindingAuthnRequest": "AuthnRequestのHTTP-POSTバインディング", + "httpPostBindingLogout": "HTTP-POSTバインディング・ログアウト", + "wantAuthnRequestsSigned": "AuthnRequestの署名が必要", + "samlSignatureKeyName": "SAML署名鍵名", + "wantAssertionsSigned": "アサーションの署名が必要", + "wantAssertionsEncrypted": "アサーションの暗号化が必要", + "forceAuthentication": "認証を強制", + "validatingX509Certs": "検証用のX509証明書", + "authorizationUrl": "認可URL", + "passLoginHint": "login_hintを渡す", + "passCurrentLocale": "現在のロケールを渡す", + "tokenUrl": "トークンURL", + "logoutUrl": "ログアウトURL", + "backchannelLogout": "バックチャンネル・ログアウト", + "disableUserInfo": "UserInfoの無効", + "userInfoUrl": "UserInfo URL", + "issuer": "発行者(Issuer)", + "scopes": "スコープ", + "prompt": "プロンプト(prompt)", + "prompts": { + "none": "none", + "consent": "consent", + "login": "login" + }, + "clientAuthentication": "クライアント認証", + "clientAuthentications": { + "clientAuth_post": "POSTで送信されたクライアント・シークレット", + "clientAuth_basic": "基本認証で送信されたクライアント・シークレット", + "clientAuth_secret_jwt": "JWTでクライアント・シークレット", + "clientAuth_privatekey_jwt": "秘密鍵で署名されたJWT" + }, + "acceptsPromptNone": "クライアントから転送されるprompt=noneを受け入れる", + "validateSignature": "署名検証", + "useJwksUrl": "JWKS URLの使用", + "jwksUrl": "JWKS URL", + "allowedClockSkew": "許容されるクロックスキュー", + "forwardParameters": "転送されるクエリー・パラメーター", + "storeTokens": "トークンの格納", + "storedTokensReadable": "読み取り可能なトークンを格納", + "trustEmail": "Eメールを信頼", + "accountLinkingOnly": "アカウントのリンクのみ", + "hideOnLoginPage": "ログインページで非表示", + "firstBrokerLoginFlowAlias": "初回ログインフロー", + "postBrokerLoginFlowAlias": "ログイン後のフロー", + "syncMode": "同期モード", + "syncModes": { + "inherit": "継承", + "import": "インポート", + "legacy": "レガシー", + "force": "強制" + }, + "syncModeOverride": "同期モードのオーバーライド", + "mapperType": "マッパータイプ", + "selectRole": "ロールの選択", + "userAttribute": "ユーザー属性" +} \ No newline at end of file diff --git a/public/resources/ja/realm-settings-help.json b/public/resources/ja/realm-settings-help.json new file mode 100644 index 0000000000..5a7954e5b9 --- /dev/null +++ b/public/resources/ja/realm-settings-help.json @@ -0,0 +1,35 @@ +{ + "fromDisplayName": "差出人のアドレスのユーザー・フレンドリーな名前です(オプション)。", + "replyToDisplayName": "返信先のアドレスのユーザー・フレンドリーな名前です(オプション)。", + "envelopeFrom": "バウンスに使用されるEメールアドレス(オプション)。", + "password": "SMTPパスワード。このフィールドは、ボールトから値を取得できます。${vault.ID}形式を使用します。", + "frontendUrl": "レルムのフロントエンドURLを設定します。デフォルトのホスト名プロバイダーと組み合わせて使用し、特定のレルムのフロントエンド・リクエストのベースURLをオーバーライドします。", + "requireSsl": "HTTPSが必須かどうか。「なし」は、HTTPSがどのIPアドレスのクライアントにも要求されないことを意味します。「外部リクエスト」は、ローカルホストとプライベートIPアドレスのクライアントがHTTPSなしでアクセスできることを意味します。「すべてのリクエスト」は、HTTPSがすべてのIPアドレスのクライアントに要求されることを意味します。", + "userManagedAccess": "有効にすると、ユーザーはアカウント管理コンソールを使用してリソースとパーミッションを管理できます。", + "endpoints": "プロトコル・エンドポイントの設定を表示します。", + "accountTheme": "ユーザー・アカウント管理画面のテーマを選択します。", + "adminConsoleTheme": "管理コンソールのテーマを選択します。", + "emailTheme": "サーバーから送信されるEメールのテーマを選択します。", + "save-user-events": "有効の場合は、ログインイベントがデータベースに保存され、管理コンソールとアカウント管理で使用することができます。", + "save-admin-events": "有効の場合は、管理イベントがデータベースに保存され、管理コンソールで使用可能になります。", + "expiration": "イベントの有効期限を設定します。期限切れのイベントはデータベースから定期的に削除されます。", + "admin-clearEvents": "データベース内のすべての管理イベントを削除します。", + "includeRepresentation": "作成または更新リクエストのJSON Representationを含めるかどうかを設定します。", + "failureFactor": "検出するまでの失敗回数です。", + "permanentLockout": "最大ログイン失敗回数を超えたときに、ユーザーを永久にロックします。", + "waitIncrementSeconds": "失敗回数が閾値に達した場合、どれくらいの時間ユーザーはロックアウトされるか設定します。", + "maxFailureWaitSeconds": "ユーザーがロックアウトされる最大待機時間を設定します。", + "maxDeltaTimeSeconds": "いつ失敗回数がリセットされるか設定します。", + "quickLoginCheckMilliSeconds": "クイックログイン失敗があまりにも頻繁に発生した場合は、ユーザーをロックアウトします。", + "minimumQuickLoginWaitSeconds": "クイックログイン失敗後にどれくらいの時間待機するか設定します。", + "ssoSessionIdle": "セッションの有効期限が切れるまでのアイドル時間です。セッションの有効期限が切れると、トークンとブラウザー・セッションは無効化されます。", + "ssoSessionMax": "セッションの有効期限が切れるまでの最大時間です。セッションの有効期限が切れると、トークンとブラウザー・セッションは無効化されます。", + "ssoSessionIdleRememberMe": "リメンバーミー・セッションの有効期限が切れるまでのアイドル時間です。セッションが期限切れになると、トークンおよびブラウザー・セッションは無効になります。設定されていない場合は、標準のSSOセッション・アイドル値が使用されます。", + "clientSessionIdle": "クライアント・セッションが期限切れになるまでアイドル状態にできる時間。トークンは、クライアント・セッションが期限切れになると無効になります。設定しない場合、標準のSSOセッション・アイドルの値が使用されます。", + "offlineSessionIdle": "セッションの有効期限が切れるまでのオフライン時間です。この期限内に少なくとも1回はオフライン・トークンを使用してリフレッシュしないと、オフライン・セッションは有効期限切れとなります。", + "defaultSigAlg": "このレルムでトークンの署名に使用されるデフォルトのアルゴリズム", + "revokeRefreshToken": "有効にすると、リフレッシュ・トークンは「リフレッシュ・トークンの最大再利用回数」までしか使用できず、別のトークンが使用されると無効化されます。無効にすると、リフレッシュ・トークンは使用後に無効化されず、複数回使用できます。", + "refreshTokenMaxReuse": "リフレッシュ・トークンを再利用できる最大回数。別のトークンが使用された場合、即時に無効化されます。", + "clientLoginTimeout": "クライアントがアクセストークン・プロトコルを終了するまでの最大時間。これは通常1分です。", + "editUsername": "有効の場合はユーザー名フィールドが編集可能になり、そうでない場合は読み取り専用になります。" +} \ No newline at end of file diff --git a/public/resources/ja/realm-settings.json b/public/resources/ja/realm-settings.json new file mode 100644 index 0000000000..9909b2e4f4 --- /dev/null +++ b/public/resources/ja/realm-settings.json @@ -0,0 +1,143 @@ +{ + "partialImport": "部分インポート", + "partialExport": "部分エクスポート", + "general": "一般", + "login": "login", + "themes": "テーマ", + "events": "イベント", + "eventListeners": "イベントリスナー", + "eventListenersHelpText": "どのリスナーがレルムのイベントを受け取るか設定します。", + "adminEventsSettings": "管理イベントの設定", + "saveEvents": "イベントの保存", + "expiration": "有効期限", + "clearAdminEvents": "管理イベントのクリア", + "includeRepresentation": "Representationを含める", + "email": "Eメール", + "from": "差出人", + "fromDisplayName": "差出人の表示名", + "replyTo": "返信先", + "replyToDisplayName": "返信先の表示名", + "envelopeFrom": "Envelope From", + "host": "ホスト", + "port": "ポート", + "authentication": "認証", + "enableSSL": "SSLの有効", + "enableStartTLS": "StartTLSの有効", + "username": "ユーザー名", + "password": "パスワード", + "keys": "鍵", + "keystore": "キーストア", + "keyAlias": "キーエイリアス", + "keyPassword": "鍵のパスワード", + "providers": "プロバイダー", + "algorithm": "アルゴリズム", + "consoleDisplayName": "コンソール表示名", + "active": "アクティブ", + "type": "タイプ", + "providerId": "ID", + "kid": "Kid", + "provider": "プロバイダー", + "providerDescription": "プロバイダーの説明", + "publicKeys": "公開鍵", + "certificate": "証明書", + "userRegistration": "ユーザー登録", + "userRegistrationHelpText": "登録ページの有効/無効。ログインページに登録のリンクも表示されるようになります。", + "forgotPassword": "パスワード忘れ", + "rememberMe": "ログイン状態の保存", + "rememberMeHelpText": "セッションの有効期限が切れるまではブラウザーの再起動でもログイン状態を保存するチェックボックスをログインページに表示します。", + "emailAsUsername": "Eメールをユーザー名とする", + "loginWithEmail": "Eメールでログイン", + "loginWithEmailHelpText": "ユーザーがEメールアドレスでログインできるようにします。", + "duplicateEmails": "メールの重複", + "duplicateEmailsHelpText": "複数のユーザーが同じEメールアドレスを持つことを許可します。この設定を変更すると、ユーザーのキャッシュもクリアされます。重複するEメールアドレスのサポートを無効にした後で、データベース内の既存ユーザーのEメールの制約を手動で更新することをお勧めします。", + "verifyEmail": "Eメールの確認", + "editUsername": "ユーザー名の編集", + "testConnection": "接続テスト", + "htmlDisplayName": "HTML表示名", + "frontendUrl": "フロントエンドURL", + "requireSsl": "SSLの要求", + "sslType": { + "all": "全てのリクエスト", + "external": "外部リクエスト", + "none": "none" + }, + "userManagedAccess": "User-Managed Access", + "endpoints": "エンドポイント", + "openIDEndpointConfiguration": "OpenIDエンドポイントの設定", + "samlIdentityProviderMetadata": "SAML 2.0アイデンティティー・プロバイダー・メタデータ", + "loginTheme": "ログインテーマ", + "accountTheme": "アカウントテーマ", + "adminTheme": "管理コンソールテーマ", + "emailTheme": "Eメールテーマ", + "sessions": "セッション", + "SSOSessionIdle": "SSOセッション・アイドル", + "SSOSessionMax": "SSOセッション最大", + "SSOSessionIdleRememberMe": "SSOセッション・アイドル・リメンバーミー", + "SSOSessionMaxRememberMe": "SSOセッション最大リメンバーミー", + "clientSessionIdle": "クライアント・セッション・アイドル", + "clientSessionMax": "クライアント・セッション最大", + "offlineSessionIdle": "オフライン・セッション・アイドル", + "offlineSessionMaxLimited": "オフライン・セッション最大制限", + "offlineSessionMax": "オフライン・セッション最大", + "loginTimeout": "ログイン・タイムアウト", + "loginActionTimeout": "ログイン・アクション・タイムアウト", + "defaultSigAlg": "デフォルトの署名アルゴリズム", + "revokeRefreshToken": "リフレッシュ・トークンの無効化", + "refreshTokenMaxReuse": "リフレッシュ・トークンの最大再利用回数", + "accessTokenLifespan": "アクセストークン生存期間", + "accessTokenLifespanImplicitFlow": "インプリシット・フローにおけるアクセストークン生存期間", + "clientLoginTimeout": "クライアントのログイン・タイムアウト", + "userInitiatedActionLifespan": "ユーザー起動アクションの有効期間", + "defaultAdminInitiated": "デフォルトの管理者起動アクションの有効期間", + "executeActions": "アクションの実行", + "createPolicy": "ポリシーを作成", + "policies": "ポリシー", + "clientProfileDescription": "説明", + "back": "戻る", + "save": "保存", + "tokens": "トークン", + "attributes": "属性", + "status": "ステータス", + "supportedLocales": "サポートされるロケール", + "defaultLocale": "デフォルト・ロケール", + "user": "ユーザー", + "validatorDialogColNames": { + "colName": "ロール名" + }, + "validatorColNames": { + "colConfig": "設定" + }, + "eventTypes": { + "IMPERSONATE": { + "name": "代理ログイン" + }, + "LOGOUT": { + "name": "ログアウト" + }, + "REGISTER": { + "name": "登録" + }, + "RESET_PASSWORD": { + "name": "パスワードをリセット" + } + }, + "deleteEvents": "イベントのクリア", + "defaultRoles": "デフォルトロール", + "defaultGroups": "デフォルト・グループ", + "securityDefences": "セキュリティー防御", + "headers": "ヘッダー", + "bruteForceDetection": "ブルートフォースの検出", + "xFrameOptions": "X-Frame-Options", + "contentSecurityPolicy": "Content-Security-Policy", + "contentSecurityPolicyReportOnly": "Content-Security-Policy-Report-Only", + "xContentTypeOptions": "X-Content-Type-Options", + "xRobotsTag": "X-Robots-Tag", + "xXSSProtection": "X-XSS-Protection", + "strictTransportSecurity": "HTTP Strict Transport Security(HSTS)", + "failureFactor": "最大ログイン失敗回数", + "permanentLockout": "永久ロックアウト", + "waitIncrementSeconds": "連続失敗時の待機時間", + "maxFailureWaitSeconds": "最大待機時間", + "maxDeltaTimeSeconds": "ログイン失敗回数のリセット時間", + "minimumQuickLoginWaitSeconds": "クイックログイン失敗時の最小待機時間" +} \ No newline at end of file diff --git a/public/resources/ja/realm.json b/public/resources/ja/realm.json new file mode 100644 index 0000000000..3d414aa207 --- /dev/null +++ b/public/resources/ja/realm.json @@ -0,0 +1,3 @@ +{ + "enabled": "有効" +} \ No newline at end of file diff --git a/public/resources/ja/roles.json b/public/resources/ja/roles.json new file mode 100644 index 0000000000..ce2c39e522 --- /dev/null +++ b/public/resources/ja/roles.json @@ -0,0 +1,14 @@ +{ + "associatedRolesText": "関連ロール", + "title": "レルムロール", + "addRole": "ロールの追加", + "roleName": "ロール名", + "composite": "複合", + "usersInRole": "ロールのユーザー", + "addUser": "ユーザーの追加", + "users": "ユーザー", + "userName": "ユーザー名", + "email": "Eメール", + "lastName": "姓", + "firstName": "名" +} \ No newline at end of file diff --git a/public/resources/ja/sessions.json b/public/resources/ja/sessions.json new file mode 100644 index 0000000000..ba17ad7302 --- /dev/null +++ b/public/resources/ja/sessions.json @@ -0,0 +1,10 @@ +{ + "title": "セッション", + "lastAccess": "最終アクセス", + "revocation": "無効化", + "notBefore": "この日時より前", + "setToNow": "現在日時を設定", + "clear": "クリア", + "push": "プッシュ", + "none": "none" +} \ No newline at end of file diff --git a/public/resources/ja/user-federation-help.json b/public/resources/ja/user-federation-help.json new file mode 100644 index 0000000000..d3281dc313 --- /dev/null +++ b/public/resources/ja/user-federation-help.json @@ -0,0 +1,13 @@ +{ + "vendorHelp": "LDAPベンダー(プロバイダー)", + "consoleDisplayConnectionUrlHelp": "LDAPサーバーへの接続URL", + "connectionTimeoutHelp": "LDAP接続タイムアウト(ミリ秒単位)", + "bindCredentialsHelp": "LDAP管理者のパスワードを設定します。このフィールドは、ボールトから値を取得できます。${vault.ID}形式を使用します。", + "editModeLdapHelp": "READ_ONLYの場合、LDAPストアに読み取り専用でアクセスします。WRITABLEは、必要に応じてデータをLDAPに同期させることを意味します。UNSYNCEDは、ユーザーデータをインポートするが、LDAPに同期しないことを意味します。", + "fullSyncPeriodHelp": "フル同期の周期を秒で設定します。", + "changedUsersSyncHelp": "変更または新規作成されたLDAPユーザーの同期周期を秒で設定します。", + "trustEmailHelp": "有効とした場合は、このレルムでEメールの確認が有効となっている場合でも、このプロバイダーが提供するEメールは確認されなくなります。", + "debugHelp": "Krb5LoginModuleの標準出力へのデバッグロギングの有効/無効を設定します。", + "allowPasswordAuthenticationHelp": "Kerberosデータベースに対するユーザー名/パスワード認証の有効/無効を設定します。", + "updateFirstLoginHelp": "初回ログイン時のプロファイル更新の有効/無効を設定します。" +} \ No newline at end of file diff --git a/public/resources/ja/user-federation.json b/public/resources/ja/user-federation.json new file mode 100644 index 0000000000..49537075b6 --- /dev/null +++ b/public/resources/ja/user-federation.json @@ -0,0 +1,49 @@ +{ + "userFederation": "ユーザー・フェデレーション", + "unlinkUsers": "ユーザーのリンクを解除する", + "removeImported": "インポートを削除", + "consoleDisplayName": "コンソール表示名", + "vendor": "ベンダー", + "connectionURL": "接続URL", + "enableStartTls": "StartTLSの有効", + "useTruststoreSpi": "トラストストアSPIを使用", + "connectionPooling": "接続プーリング", + "connectionTimeout": "接続タイムアウト", + "bindType": "バインドタイプ", + "bindDn": "バインドDN", + "editMode": "編集モード", + "usersDN": "ユーザーDN", + "usernameLdapAttribute": "ユーザー名のLDAP属性", + "rdnLdapAttribute": "RDN LDAP属性", + "uuidLdapAttribute": "UUID LDAP属性", + "userObjectClasses": "ユーザー・オブジェクト・クラス", + "searchScope": "検索スコープ", + "readTimeout": "読み取りタイムアウト", + "pagination": "ページネーション", + "importUsers": "ユーザーのインポート", + "batchSize": "バッチサイズ", + "periodicFullSync": "定期的なフル同期", + "fullSyncPeriod": "フル同期の周期", + "periodicChangedUsersSync": "定期的な変更ユーザーの同期", + "changedUsersSyncPeriod": "変更ユーザーの同期周期", + "kerberosIntegration": "Kerberosと統合", + "allowKerberosAuthentication": "Kerberos認証を許可", + "useKerberosForPasswordAuthentication": "パスワード認証にKerberosを使用", + "cacheSettings": "キャッシュ設定", + "cachePolicy": "キャッシュ・ポリシー", + "evictionDay": "エビクションの日", + "evictionHour": "エビクションの時", + "evictionMinute": "エビクションの分", + "maxLifespan": "最大生存期間", + "validatePasswordPolicy": "パスワード・ポリシーの検証", + "trustEmail": "Eメールを信頼", + "requiredSettings": "必要な設定", + "kerberosRealm": "Kerberosレルム", + "serverPrincipal": "サーバー・プリンシパル", + "debug": "デバッグ", + "allowPasswordAuthentication": "パスワード認証を許可", + "testAuthentication": "認証テスト", + "ldapMappersList": "LDAPマッパー", + "ldapFilter": "LDAPフィルター", + "selectRole": "ロールの選択" +} \ No newline at end of file diff --git a/public/resources/ja/users-help.json b/public/resources/ja/users-help.json new file mode 100644 index 0000000000..a33d92306c --- /dev/null +++ b/public/resources/ja/users-help.json @@ -0,0 +1,6 @@ +{ + "temporaryLocked": "ユーザーは、ログインに複数回失敗したため、ロックされている可能性があります。", + "emailVerified": "ユーザーのEメールが確認済みかどうかを設定します。", + "requiredUserActions": "ユーザーがログインするときに必要なアクションです。「Verify email」は、Eメールアドレスを確認するためのEメールをユーザーに送信します。「Update profile」は、新しい個人情報を入力する必要があります。「Update password」は、ユーザーが新しいパスワードを入力する必要があります。「Configure OTP」は、モバイル・パスワード・ジェネレーターの設定が必要です。", + "groups": "メンバーであるグループです。グループから外すには、グループを選択して「外す」ボタンをクリックしてください。" +} \ No newline at end of file diff --git a/public/resources/ja/users.json b/public/resources/ja/users.json new file mode 100644 index 0000000000..500e70730c --- /dev/null +++ b/public/resources/ja/users.json @@ -0,0 +1,38 @@ +{ + "title": "ユーザー", + "join": "参加", + "leave": "外す", + "groupMembership": "グループ・メンバーシップ", + "createdAt": "作成日", + "username": "ユーザー名", + "email": "Eメール", + "emailVerified": "Eメールが確認済み", + "lastName": "姓", + "firstName": "名", + "status": "ステータス", + "disabled": "無効", + "requiredUserActions": "必要なユーザー・アクション", + "addUser": "ユーザーの追加", + "impersonate": "代理ログイン", + "verifyEmail": "Eメールの確認", + "consents": "同意", + "identityProvider": "アイデンティティー・プロバイダー", + "identityProviderLinks": "アイデンティティー・プロバイダーのリンク", + "revoke": "無効化", + "setPassword": "パスワードを設定", + "save": "保存", + "credentialType": "タイプ", + "credentialUserLabel": "ユーザーラベル", + "credentialData": "データ", + "password": "パスワード", + "passwordConfirmation": "新しいパスワード(確認)", + "resetPassword": "パスワードをリセット", + "showPasswordDataValue": "値", + "credentialResetBtn": "クレデンシャルのリセット", + "resetActions": "リセット・アクション", + "lifespan": "有効期限", + "hours": "時", + "minutes": "分", + "seconds": "秒", + "credentialResetConfirm": "Eメールを送信" +} \ No newline at end of file diff --git a/public/resources/lt/authentication-help.json b/public/resources/lt/authentication-help.json new file mode 100644 index 0000000000..85ccdb8f13 --- /dev/null +++ b/public/resources/lt/authentication-help.json @@ -0,0 +1,9 @@ +{ + "flowType": "Kokios rūšies ši forma?", + "topLevelFlowType": "Kokio tipo ši aukščiausio lygio sritis? 'client' tipas naudojamas klientų (programų) autentifikacijai. 'generic' naudojamas visais kitais atvejais.", + "alias": "Konfigūracijos pavadinimas", + "otpType": "'totp' paremtas ribotą laiką galiojančiu vienkartiniu slaptažodžiu. 'hotp' - ribotą kartų galiojančiu vienkartiniu slaptažodžiu.", + "otpHashAlgorithm": "Kuris maišos algoritmas turi būti naudojamas OTP generavimui.", + "otpPolicyDigits": "Kiek OTP turėtų turėti skaitmenų?", + "otpPolicyPeriod": "Kiek sekundžiu galios OTP prieigos raktas? Numatyta reikšmė 30 sekundžių." +} \ No newline at end of file diff --git a/public/resources/lt/authentication.json b/public/resources/lt/authentication.json new file mode 100644 index 0000000000..c9de35dd33 --- /dev/null +++ b/public/resources/lt/authentication.json @@ -0,0 +1,34 @@ +{ + "title": "Autentifikavimas", + "flows": "Sekos", + "requiredActions": "Privalomi veiksmai", + "policies": "Taisyklės", + "passwordPolicy": "Slaptažodžių taisyklės", + "otpPolicy": "OTP taisyklės", + "otpType": "OTP tipas", + "policyType": { + "totp": "Paremtas laiku", + "hotp": "Paremtas skaitliuku" + }, + "otpHashAlgorithm": "OTP maišos algoritmas", + "otpPolicyDigits": "Skaitmenų skaičius", + "lookAhead": "Neatitikimo langas", + "otpPolicyPeriod": "OTP rakto galiojimo intervalas", + "initialCounter": "Pradinė skaitliuko reikšmė", + "attestationPreference": { + "none": "jokio" + }, + "flow": { + "browserFlow": "Autentifikacijos seka", + "registrationFlow": "Registracijos seka", + "directGrantFlow": "Tiesioginių teisių seka" + }, + "edit": "Redaguoti", + "flowType": "Sekos tipas", + "flow-type": { + "form-flow": "form" + }, + "addExecution": "Pridėti išimtį", + "requirement": "Privalomumas", + "alias": "Pseudonimas" +} \ No newline at end of file diff --git a/public/resources/lt/client-scopes-help.json b/public/resources/lt/client-scopes-help.json new file mode 100644 index 0000000000..5b1e1132cd --- /dev/null +++ b/public/resources/lt/client-scopes-help.json @@ -0,0 +1,10 @@ +{ + "name": "Kliento šablono pavadinimas. Privalo būti unikalus šioje srityje", + "description": "Kliento šablono aprašymas", + "protocol": "Kurio SSO protokolo konfigūracija teikia šis šablonas", + "prefix": "Prefiksas, pridedamas prieš kiekvieną srities rolę (neprivalomas)", + "multiValued": "Nurodo, kad atributas gali turėti daugiau nei vieną reikšmę. Jei pažymėtas, tuomet visos reikšmės nustatomos kaip privalomos. Kitu atveju privaloma tik pirmoji reikšmė.", + "tokenClaimName": "Į raktą įterpiamas privalomas atributas. Galite nurodyte pilną kelią iki atributo, pavyzdžiui 'address.street'. Pateiktu atveju bus sukuriamas sudėtinis (nested) JSON objektas.", + "claimJsonType": "Naudojamas JSON lauko tipas, kuris turi būti užpildomas rakto privalomoje JSON informacijoje. Galimi tipai: long, int, boolean ir String.", + "protocolMapper": "Protokolas..." +} \ No newline at end of file diff --git a/public/resources/lt/client-scopes.json b/public/resources/lt/client-scopes.json new file mode 100644 index 0000000000..b9d69f8c8c --- /dev/null +++ b/public/resources/lt/client-scopes.json @@ -0,0 +1,8 @@ +{ + "protocol": "Protokolas", + "type": "Tipas", + "realmRolePrefix": "Srities rolės prefiksas", + "realmRoles": "Srities rolės", + "clients": "Klientai", + "scope": "Taikymo sritis" +} \ No newline at end of file diff --git a/public/resources/lt/clients-help.json b/public/resources/lt/clients-help.json new file mode 100644 index 0000000000..db43fd5095 --- /dev/null +++ b/public/resources/lt/clients-help.json @@ -0,0 +1,86 @@ +{ + "clientType": "'OpenID connect' leidžia klientams tikrinti galutinio naudotojo tapatybę remiantis autorizacijos serverio atlikta autentifikacija. 'SAML' įgalina žiniatinklio, įskaitant skirtingų domenų atvejus, vieningos autentifikacijos ir autorizacijos scenarijus perduodant informaciją saugiose žinutėse.", + "serviceAccount": "Įgalina klientą autentifikuotis su Keycloak serveriu ir gauti dedikuotą prieigos raktą skirtą šiam klientui. OAuth2 specifikacijos terminais, tai reiškia 'Client Credentials Grant' teisę šiam klientui.", + "authorization": "Įgalinti detalų kliento autorizacijos palaikymą", + "directAccess": "Įgalina tiesioginį prieigos suteikimą, kuomet klientas turi prieigą prie naudotojo vardo ir slaptažodžio ir prieigos raktų gavimui šiais duomenimis gali tiesiogiai apsikeisti su Keycloak serveriu. OAuth2 specifikacijos terminais, šiam klientui įgalinimas 'Resource Owner Password Credentials Grant'.", + "standardFlow": "Įgalina standartinį OpenID Connect nukreipimą, kuomet autentifikacijos metu yra perduodamas autorizacijos kodas. OpenID Connect arba OAuth2 specifikacijos terminais tai reiškia 'Authorization Code Flow' įgalinimą šiam klientui.", + "implicitFlow": "Įgalina OpenID Connect nukreipimą, kuomet autentifikacijos metu nėra perduodamas autorizacijos kodas. OpenID Connect arba OAuth2 specifikacijos terminais tai reiškia 'Implicit Flow' įgalinimą šiam klientui.", + "rootURL": "Prie reliatyvių nuorodų pridedamas šakninis URL", + "validRedirectURIs": "Nukreipimo URI šablonas, kuomet naršyklei leidžiama nukreipti naudotoją po sėkmingos autentifikacijos ar atsijungimo metu. Leidžiami pakaitos simboliai, pvz. 'http://pavyzdys.lt/*'. Leidžiami reliatyvūs keliai pvz. /mano/reliatyvus/kelias/*. Reliatyvumas skaičiuojamas nuo kliento šakninio URL (jei nurodyta) arba nuo autentifikacijos serverio šakninio adreso. SAML atveju, kuomet tikimasi gavėjo paslaugos URL įtraukimo į prisijungimo užklausą, privaloma nurodyti teisingus URI šablonus.", + "nameIdFormat": "Koks tapatybės identifikatoriaus formatas turi būti naudojamas.", + "forceNameIdFormat": "Ignoruoti NameID tapatybės identifikatoriaus formatą, naudojant administratoriaus konsolėje nurodytą formatą.", + "forcePostBinding": "Visuomet naudoti POST sąryšį siunčiant atsakymus.", + "includeAuthnStatement": "Ar prisijungimo būdas ir laikas šurėtų būti įtraukiami į prisijungimo operacijos atsakymą?", + "optimizeLookup": "Ar privalo būti itrauktas pasirašymo rakto ID į SAML protokolo žinutės elementą kuomet pasirašomi Keycloak REDIRECT SP sąsajos dokumentai? Tokiu būdu tikrinančioji pusė optimizuoja tikrinimo proceą naudodama tik vieną raktą vietoj to, kad bandytų visų raktų kombinacijas.", + "signDocuments": "Ar SAML dokumentai turi būtį pasirašomi šios srities?", + "signAssertions": "Ar SAML sprendiniai SAML dokumentuose turi būti pasirašomi? Šis nustatymas nebūtinas, kuomet naudojamas viso dokumento pasirašymas.", + "signatureAlgorithm": "Parašo algoritmas naudojamas dokumentų pasirašymui.", + "canonicalization": "XML parašo metodas.", + "webOrigins": "Leidžiamos CORS nuorodos. Norėdami leisti nukreipimą į teisingas nuorodas, naudokite '+'. Norėdami leisti visas nuorodas, naudokite '*'.", + "homeURL": "Numatytas URL, kuris turi būti naudojamas naudotojo nukreipimui atgal į klientą.", + "adminURL": "Kliento administravimo tinklinės sąsajos URL. Įrašyti tuomet, kai klientas palaiko adapterio REST API. Šis REST API leidžia autentifikacijos serveriui perduoti atšaukimo ir kitas su administravimu susijusias taisykles. Dažniausiai šis URL sutampa su kliento pagrindiniu URL.", + "client": "Nurodykite klientą, kuris atlieka autorizacijos užklausas. Nei nenurodyta, tuomet autorizacijos užklausa bus vertinama naudojant dabartinį klientą.", + "clientId": "Identifikatorius, naudojamas URI adresuose ir prieigos raktuose. Pavyzdžiui 'my-client'. SAML protokolo atveju, šią reikšmę tikimasi gauti kaip authn užklausos siuntėją", + "selectUser": "Nurodykite naudotoją, kurio vardu atliekamas teisių serveryje filtravimas.", + "roles": "Nurodykite pasirinkto naudotojo roles.", + "contextualAttributes": "Galite pateikti vykdymo aplinkos arba vykdymo konteksto atributus.", + "applyToResourceType": "Nurodykite ar šis leidimas turi būti pritaikomas visiems šio tipo resursams. Jei įgalinta, tuomet leidimo tikrinimas bus atliekamas visiems nurodyto tipo resursams.", + "resources": "Nurodykite, kad šis leidimas turi būti taikomas tik tam tikriems resursams.", + "scopesSelect": "Nurodo, kad šis leidimas turi būti pritaikytas vienai ar daugiau taikymo sričių.", + "clientName": "Reikšmė, kuri rodoma naudotojams. Pavyzdžiui 'My Client'. Galimos lokalizuotos reikšmės - pavyzdžiui: ${my_client}", + "description": "Nurodomas kliento aprašas. Pavyzdžiui 'Mano laiko lentelių klientas'. Palaikomos lokalizuotos reikšmės. Pavyzdžiui: ${my_client_description}", + "loginTheme": "Pasirinkite kaip atrodys Jūsų prisijungimo, OTP, teisių suteikimo, naudotojų registracijos ir slaptažodžių priminimo langai.", + "encryptAssertions": "Ar SAML sprendiniai turi būti užkoduojami kliento viešuoju raktu naudojant AES?", + "clientSignature": "Ar kliento siunčiamos SAML užklausos ir atsakymai bus pasirašyti? Jei taip, tuomet ar juos privaloma tikrinti?", + "expiration": "Nurodykite kiek laiko galios prieigos raktas ", + "count": "Nurodykite kiek klientų gali būti sukurti naudojant prieigos raktą", + "client-authenticator-type": "Kliento autentifikavimo priemonės naudojamos kliento autentifikavimuisi į Keycloak serverį", + "registration-access-token": "Registracijos prieigos raktas klientams suteikia prieigą prie klientų registracijos paslaugos ", + "nodeReRegistrationTimeout": "Nurodykite maksimalų laiko intervalą, per kurį mazgai privalo iš naujo prisiregistruoti. Jei mazgas neatsiųs persiregistravimo užklausos per nurodytą laiką, tuomet šis mazgas bus išregistruojamas iš Keycloak ", + "userInfoSignedResponseAlgorithm": "JWA algoritmas naudojamas pasirašyti naudotojo informacijos prieigos taško atsaką. Jei nustatyta 'unsigned', tuomet naudotojo informacijos atsakas nebus pasirašytas ir bus grąžintas application/json formatu.", + "requestObjectSignatureAlgorithm": "JWA algoritmas, kurį klientas naudoja siunčiant OIDC užklausos objektą, nusakytą 'request' arba 'request_uri' parameterais. Jei nustatyta 'any', tuomet užklausos objektas gali būti nepasirašytas arba pasirašytas bet kuriuo algoritmu.", + "idpInitiatedSsoUrlName": "Pavadinimas, kuris IDP inicijuoto SSO prisijungimo metu, perduodamas klientui per URL fragmentą. Palikus tuščią reikšmę IDP inicjuojamą SSO prisijungimo funkcionalumas išjungiamas. Šis fragmentas buv naudojamas formuojant šią nuorodą: {server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}", + "idpInitiatedSsoRelayState": "SSO būsenos parametro (RelayState) perdavimas kartu su IDP inicijuota SSO SAML užklausa.", + "masterSamlProcessingUrl": "Kuomet sukonfigūruotas, šis URL bus naudojamas visoms, 'SP Assertion Consumer' ir 'Single Logout Services' užklausoms. Detalioje SAML prieigos adresų konfigūravimo skyriuje šios reikšmės gali būti atskirai pakeistos.", + "accessTokenLifespan": "Laikas, po kurio prisijungimui naudojamas raktas (Access Token) nustoja galioti. Rekomenduojama, kad šios reikšmės galiojimas būtų reliatyviai trumpas palyginus su SSO galiojimo laiku.", + "assertionConsumerServicePostBindingURL": "Kliento sprendinių priėmimo paslaugos (prisijungimo rezultatų) SAML POST jungties URL. Jei tokių jungčių neturite, tuomet palikite tuščias reikšmes.", + "assertionConsumerServiceRedirectBindingURL": "Kliento sprendinio priėmimo paslaugos SAML nukreipimo jungties URL (prisijungimo atsakymams). Jei tokių jungčių neturite, tuomet palikite tuščias reikšmes.", + "logoutServiceRedirectBindingURL": "Kliento vieningo atsijungimo paslaugos SAML nukreipimo jungties. Jei naudojate kitas jungtis, tuomet šias reikšmes galite palikti neužpildytas.", + "frontchannelLogout": "Jei įgalinta, tuomet atsijungimas atliekamas naršyklės nukreipimu į kliento puslapį. Kitu atveju, atsijungimas atliekamas perduodant serveris-serveris užklausą.", + "browserFlow": "Pasirinkite autentifikacijos naršyklėje seką", + "directGrant": "Pasirinkite tiesioginių teisių seką (direct grant authentication).", + "certificate": "Kliento sertifikatas naudojamas kliento išduotų ir privačiu raktu pasirašytų JWT prieigos raktų tikrinimui.", + "jwksUrl": "URL, kuriuo pasiekiami kliento JWK formatu saugomi raktai. Žiūrėkite JWK specifikaciją detalesnei informacijai. Jei naudojamas kliento adapteris su \"jwt\" kredencialais, tuomet galite naudoti jūsų programos URL su '/k_jwks' sufiksu. Pavyzdžiui 'http://www.myhost.com/myapp/k_jwks' .", + "archiveFormat": "Java raktų saugykla (keystore) arba PKCS12 formato rinkmena.", + "keyAlias": "Privataus rakto ir sertifikato rinkmenos pseudonimas.", + "keyPassword": "Slaptažodžių saugykloje esančio privataus rakto slaptažodis", + "storePassword": "Slaptažodis, reikalingas norint atidaryti slaptažodžių saugyklą", + "consentRequired": "Jei įgalinta, tuomet naudotojai privalo patvirtinti, kad pageidauja prisijungti prie kliento (programos).", + "import": "Importuoti šio resursų serverio autorizacijos nustatymų JSON rinkmeną.", + "policyEnforcementMode": "Taisyklių vykdymo rėžimas nusako kaip turi būti tenkinamos autorizacijos užklausų taisyklės. 'Taikyti' reiškia, kad tuo atveju kai nėra sukonfigūruota nei viena su resursu susijusi taisyklė, prieiga draudžiama. 'Liberalus' reiškia, kad tuo atveju kai nėra sukonfigūruota nei viena su resursu susijusi taisyklė, prieiga leidžiama. 'Išjungta' reiškia, kad neatliekamas taisyklių tikrinimas ir prieiga leidžiama prie visų resursų.", + "allowRemoteResourceManagement": "Ar leidžiama nuotoliniu būdu resursų serveriui valdyti resursus? Jei neįgalinta, tuomet resursai gali būti valdomi tik per šią administravimo konsolę.", + "resourceName": "Unikalus resurso vardas. Vardas turi unikaliai identifikuoti resursą. Naudingas, kuomet ieškoma specifinių resursų.", + "type": "Šio resurso tipas. Reikšmė leidžia sugrupuoti skirtingus resursus turinčius tą patį tipą.", + "uris": "URI kuris taip pat gali būti naudojamas vienareikšmiškam resurso identifikavimui.", + "scopes": "Su šiuo resursu susietos taikymo sritys.", + "fullScopeAllowed": "Įgalinimo atveju visi apribojimai išjungiami", + "resetActions": "Nurodykite naudotojui el. paštu siunčiamus privalomus atlikti veiksmus. 'Patvirtinti el. pašto adresą' į naudotojo el. pašto adresą siunčia patvirtinimo nuorodą. 'Atnaujinti profilio informaciją' reikalauja naudotojo peržiūrėti ir atnaujinti profilio informaciją. 'Atnaujinti slaptažodį' reikalauja naudotojo pasikeisti slaptažodį. 'Konfigūruoti OTP' reikalauja atnaujinti mobilaus slaptažodžių generatoriaus konfigūraciją.", + "scopeName": "Unikalus taikymo srities pavadinimas. Šis pavadinimas gali vienareikšmiškai identifikuoti taikymo sritį. Naudingas kuomet ieškoma šios tam tikros srities. ", + "policy-name": "Šios taisyklės pavadinimas.", + "policy-description": "Šios taisyklės aprašymas.", + "policyDecisionStagey": "Sprendimo strategija nurodo kaip priimamas galutinis sprendimas, kuomet yra vykdomos visos šio leidimo taisyklės. 'Pozityvi' reiškia, kad galutiniam teigiamam sprendimui turi būti tenkinama bent viena taisyklė. 'Vienbalsė' reiškia, kad galutiniam teigiamam sprendimui visos taisyklės turi būti teigiamos. 'Daugumos' reiškia, kad galutinis teigiamas sprendimas bus priimtas tuomet, kai teigiamų taisyklių bus daugiau nei neigiamų. Jei teigiamų ir neigiamų taisyklių skaičius yra vienodas, tuomet galutinis rezultatas bus neigiamas.", + "applyPolicy": "Nurodo visas taisykles, kurios turi būti įvertintos šios taisyklės ar leidimo taikymo sričiai.", + "policyGroups": "Nurodo kurie naudotojai tenkina šią taisyklę.", + "policyRoles": "Nurodo *kliento* rolė(įs) kurios tenkina šią taisyklę.", + "startTime": "Nurodykite laiką iki kurio ši taisyklė NETENKINAMA. Teigiamas rezultatas duodamas tik tuo atveju, kuomet dabartinė data ir laikas yra vėlesnė arba lygi šiai reikšmei.", + "expireTime": "Nurodykite laiką po kurio ši taisyklė NETENKINAMA. Teigiamas rezultatas duodamas tik tuo atveju, kuomet dabartinė data ir laikas yra ankstesni arba lygi šiai reikšmei.", + "month": "Nurodykite mėnesį iki kurio ši taisyklė TENKINAMA. Užpildžius antrąjį laukelį, taisyklė bus TENKINAMA jei mėnesis patenka į nurodytą intervalą. Reikšmės nurodomos imtinai.", + "dayMonth": "Nurodykite mėnesio dieną iki kurios ši taisyklė TENKINAMA. Užpildžius antrąjį laukelį, taisyklė bus TENKINAMA jei diena patenka į nurodytą intervalą. Reikšmės nurodomos imtinai.", + "hour": "Nurodykite valandą iki kurios ši taisyklė TENKINAMA. Užpildžius antrąjį laukelį, taisyklė bus TENKINAMA jei valanda patenka į nurodytą intervalą. Reikšmės nurodomos imtinai.", + "minute": "Nurodykite minutę iki kurios ši taisyklė TENKINAMA. Užpildžius antrąjį laukelį, taisyklė bus TENKINAMA jei minutė patenka į nurodytą intervalą. Reikšmės nurodomos imtinai.", + "policyCode": "JavaScript kodas kuriame aprašytos šios taisyklės sąlygos.", + "logic": "Logika nurodo kaip turi būti tenkinama taisyklė. Jei nurodyta 'Teigiama', tuomet šios taisyklės vykdymo metu gautas rezultatas (leisti arba drausti) bus naudojamas sprendinio priėmimui. Jei nurodyta 'Neigiama', tuomet šios taisyklės vykdymo rezultatas bus paneigtas, t.y. leidžiama taps draudžiama ir atvirkščiai.", + "permissionName": "Šio leidimo pavadinimas.", + "permissionDescription": "Šio leidimo aprašymas.", + "permissionType": "Nurodykite, kad ši taisyklė turi būti taikoma visiems šio tipo resursams." +} \ No newline at end of file diff --git a/public/resources/lt/clients.json b/public/resources/lt/clients.json new file mode 100644 index 0000000000..c8fbcf1d64 --- /dev/null +++ b/public/resources/lt/clients.json @@ -0,0 +1,131 @@ +{ + "protocol": "Protokolas", + "copy": "Kopijuoti", + "clientAuthorization": "Autorizacija", + "importClient": "Įdiegti programos nustatymus", + "webOrigins": "Šakninės nuorodos", + "adminURL": "Administravimo URL", + "formatOption": "Formato pasirinkimas", + "encryptAssertions": "Užkoduoti sprendinius", + "clientSignature": "Privalomas kliento parašas", + "keys": "Raktai", + "credentials": "Prisijungimo duomenys", + "roles": "Rolės", + "addClientScope": "Kliento šablono kūrimas", + "fullScopeAllowed": "Taikymas pilna apimtimi", + "selectAUser": "Parinkite naudotoją", + "client": "client", + "evaluate": "Vertinti", + "reevaluate": "Vertinti pakartotinai", + "showAuthData": "Rodyti autorizacijos duomenis", + "unanimous": "Vienbalsė", + "affirmative": "Pozityvi", + "consensus": "Daugumos", + "authScopes": "Autorizacijos taikymo sritys", + "anyResource": "Bet kuris resursas", + "anyScope": "Bet kuri taikymo sritis", + "selectScope": "Parinkite taikymo sritį", + "applyToResourceType": "Pritaikyti resurso tipui", + "contextualInfo": "Kontekstinė informacija", + "contextualAttributes": "Kontekstiniai atributai", + "kc": { + "realm": { + "name": "Sritis" + } + }, + "password": "Slaptažodis", + "settings": "Nustatymai", + "policyEnforcementMode": "Taisyklių vykdymo rėžimas", + "policyEnforcementModes": { + "ENFORCING": "Taikyti", + "PERMISSIVE": "Liberalus" + }, + "decisionStrategy": "Sprendimo strategija", + "type": "Tipas", + "iconUri": "Ikonos URI", + "allowRemoteResourceManagement": "Nuotolinis resursų valdymas", + "resources": "Resursai", + "resource": "Resursas", + "allTypes": "Visi tipai", + "scope": "Taikymo sritis", + "owner": "Savininkas", + "scopes": "Taikymo sritys", + "policies": "Taisyklės", + "createPermission": "Sukurti leidimą", + "identityInformation": "Tapatybės informacija", + "resourceType": "Resurso tipas", + "createPolicy": "Sukurti taisyklę", + "applyPolicy": "Pritaikyti taisyklę", + "users": "Naudotojai", + "month": "Mėnesis", + "hour": "Valanda", + "minute": "Minutė", + "code": "Programinis kodas", + "logic": "Logika", + "logicType": { + "positive": "Teigiama", + "negative": "Neigiama" + }, + "user": "Naudotojas", + "clientList": "Klientai", + "initialAccessToken": "Pradinis prieigos raktas", + "created": "Sukurta", + "lastUpdated": "Pask. kartą atnaujinta", + "expires": "Galioja iki", + "count": "Kiekis", + "remainingCount": "Likęs kiekis", + "expiration": "Galiojimas", + "clientAuthentication": "Klientų autentifikacijos seka", + "authentication": "Autentifikavimas", + "realmRoles": "Srities rolės", + "frontchannelLogout": "Išregistravimas per naršyklę", + "rootUrl": "Šakninis URL", + "validRedirectUri": "Leidžiamos nukreipimo nuorodos", + "idpInitiatedSsoRelayState": "IDP inicijuotos SSO būsenos perdavimas", + "masterSamlProcessingUrl": "Šakninis SAML apdorojimo URL", + "nameIdFormat": "NameID formatas", + "forceNameIdFormat": "Priverstinai naudoti NameID formatą", + "forcePostBinding": "Priverstinai naudoti POST sąryšį", + "includeAuthnStatement": "Įtraukti AuthnStatement", + "optimizeLookup": "Optimizuoti REDIRECT pasirašymo rakto paiešką", + "signDocuments": "Pasirašyti dokumentus", + "signAssertions": "Pasirašyti sprendinius", + "canonicalization": "Standartizavimo metodas", + "loginTheme": "Prisijungimo lango tema", + "clientAuthenticator": "Kliento autentifikavimo priemonės", + "clientSecret": "Kliento slaptas kodas", + "registrationAccessToken": "Registracijos prieigos raktas", + "revocation": "Atšaukimai", + "clustering": "Klasteriai", + "notBefore": "Ne anksčiau", + "setToNow": "Parinkti dabartinę datą", + "addNode": "Pridėti mazgą", + "push": "Informuoti apie atšaukimą", + "clear": "Išvalyti", + "nodeReRegistrationTimeout": "Mazgo persiregistravimui skirtas laikas", + "registeredClusterNodes": "Registruoti klasterio mazgus", + "nodeHost": "Mazgo serveris", + "lastRegistration": "Vėliausia registracija", + "testClusterAvailability": "Tikrinti ar mazgas prieinamas", + "registerNodeManually": "Registruoti mazgą rankiniu būdu", + "fineGrainOpenIdConnectConfiguration": "Detalioji OpenID prisijungimo konfigūracija", + "fineGrainSamlEndpointConfig": "Detalioji SAML prieigos taškų konfigūracija", + "userInfoSignedResponseAlgorithm": "Naudotojo informacijos pasirašyto atsako algoritmas", + "requestObjectSignatureAlgorithm": "Užklausos objekto parašo algoritmas", + "assertionConsumerServicePostBindingURL": "Sprendinių naudotojo paslaugos POST jungties URL", + "assertionConsumerServiceRedirectBindingURL": "Sprendinių priėmimo paslaugos nukreipimo jungties URL", + "logoutServiceRedirectBindingURL": "Atsijungimo paslaugos nukreipimo jungties URL", + "accessTokenLifespan": "Prisijungimo rakto galiojimo laikas", + "browserFlow": "Autentifikacijos seka", + "directGrant": "Tiesioginių teisių seka", + "useJwksUrl": "Naudoti JWKS URL", + "certificate": "Sertifikatas", + "jwksUrl": "JWKS URL", + "generateNewKeys": "Generuoti naujus raktus", + "archiveFormat": "Archyvo formatas", + "keyAlias": "Rakto pseudonimas", + "keyPassword": "Rakto slaptažodis", + "storePassword": "Saugyklos slaptažodis", + "importFile": "Importuoti rinkmeną", + "mappers": "Atributų atitikmenys" +} \ No newline at end of file diff --git a/public/resources/lt/common-help.json b/public/resources/lt/common-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lt/common-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lt/common.json b/public/resources/lt/common.json new file mode 100644 index 0000000000..839e1e7009 --- /dev/null +++ b/public/resources/lt/common.json @@ -0,0 +1,66 @@ +{ + "add": "Pridėti", + "create": "Sukurti", + "save": "Saugoti", + "continue": "Tęsti", + "remove": "Šalinti", + "key": "Raktas", + "value": "Reikšmė", + "back": "Atgal", + "export": "Eksportuoti", + "action": "Veiksmas", + "download": "Atsisiųsti", + "clear": "Išvalyti", + "on": "On", + "edit": "Redaguoti", + "enabled": "Įgalintas", + "disable": "Išjungti", + "none": "jokio", + "signOut": "Atsijungti", + "manageAccount": "Valdyti paskyrą", + "serverInfo": "Serverio informacija", + "testConnection": "Tikrinti jungtį", + "description": "Aprašymas", + "type": "Tipas", + "category": "Kategorija", + "priority": "Prioritetas", + "allTypes": "Visi tipai", + "manage": "Valdyti", + "clients": "Klientai", + "realmRoles": "Srities rolės", + "users": "Naudotojai", + "sessions": "Sesijos", + "events": "Įvykiai", + "mappers": "Atributų atitikmenys", + "permissions": "Leidimai", + "configure": "Konfigūruoti", + "realmSettings": "Srities nustatymai", + "authentication": "Autentifikavimas", + "identityProviders": "Tapatybės teikėjai", + "userFederation": "Naudotojų federavimas", + "settings": "Nustatymai", + "details": "Detaliau", + "Sunday": "Sekmadienis", + "Monday": "Pirmadienis", + "Tuesday": "Antradienis", + "Wednesday": "Trečiadienis", + "Thursday": "Ketvirtadienis", + "Friday": "Penktadienis", + "Saturday": "Šeštadienis", + "times": { + "seconds": "Sekundės", + "minutes": "Minutės", + "hours": "Valandos", + "days": "Dienos" + }, + "attributes": "Atributai", + "credentials": "Prisijungimo duomenys", + "clientId": "Kliento ID", + "id": "ID", + "mapperType": "Atitikmens tipas", + "leave": "Palikti", + "password": "Slaptažodis", + "passwordConfirmation": "Pakartotas slaptažodis", + "temporaryPassword": "Laikinas", + "temporaryPasswordHelpText": "Jei įgalinta, tuomet naudotojas privalės pasikeisti slaptažodį sekančio prisijungimo metu" +} \ No newline at end of file diff --git a/public/resources/lt/dashboard.json b/public/resources/lt/dashboard.json new file mode 100644 index 0000000000..57b5550c7d --- /dev/null +++ b/public/resources/lt/dashboard.json @@ -0,0 +1,3 @@ +{ + "serverInfo": "Serverio informacija" +} \ No newline at end of file diff --git a/public/resources/lt/dynamic.json b/public/resources/lt/dynamic.json new file mode 100644 index 0000000000..142f175303 --- /dev/null +++ b/public/resources/lt/dynamic.json @@ -0,0 +1,72 @@ +{ + "selectARole": "Pasirinkti rolę", + "usermodel": { + "prop": { + "label": "Atributas", + "tooltip": "Sąsajos UserModel atributo metodo pavadinimas. Pavyzdžiui reikšmė 'email' atitinka UserMode.getEmail() metodą." + }, + "attr": { + "label": "Naudotojo atributas", + "tooltip": "Išsaugoto naudotojo atributo pavadinimas kuris naudojamas UserModel.attribute rinkinyje." + }, + "clientRoleMapping": { + "client": { + "label": "Kliento ID", + "tooltip": "Kliento ID naudojamas rolių atributų susiejime" + }, + "rolePrefix": { + "label": "Kliento rolės prefiksas", + "tooltip": "Prefiksas, pridedamas prieš kiekvieną kliento rolę (neprivalomas)" + } + }, + "realmRoleMapping": { + "rolePrefix": { + "label": "Srities rolės prefiksas", + "tooltip": "Prefiksas, pridedamas prieš kiekvieną srities rolę (neprivalomas)" + } + } + }, + "userSession": { + "modelNote": { + "label": "Naudotojo sesijos pastaba", + "tooltip": "Išsaugotos naudotojo sesijos pastaba, kuri saugoma UserSessionModel.note rinkinyje." + } + }, + "multivalued": { + "label": "Daugiareikšmis", + "tooltip": "Nurodo, kad atributas gali turėti daugiau nei vieną reikšmę. Jei pažymėtas, tuomet visos reikšmės nustatomos kaip privalomos. Kitu atveju privaloma tik pirmoji reikšmė." + }, + "selectRole": { + "label": "Parinkite rolę", + "tooltip": "Kairėje pusėje esančiame laukelyje įveskite rolės pavadinimą arba paspauskite Rinktis norėdami nurodyti pageidaujamą rolę." + }, + "tokenClaimName": { + "label": "Reikalaujamo rakto pavadinimas", + "tooltip": "Į raktą įterpiamas privalomas atributas. Galite nurodyte pilną kelią iki atributo, pavyzdžiui 'address.street'. Pateiktu atveju bus sukuriamas sudėtinis (nested) JSON objektas." + }, + "jsonType": { + "label": "Privalomo atributo JSON tipas", + "tooltip": "Naudojamas JSON lauko tipas, kuris turi būti užpildomas rakto privalomoje JSON informacijoje. Galimi tipai: long, int, boolean ir String." + }, + "includeInIdToken": { + "label": "Pridėti prie ID rakto", + "tooltip": "Ar privaloma informacija turi būti pridedama prie ID rakto?" + }, + "includeInAccessToken": { + "label": "Pridėti prie prieigos rakto", + "tooltip": "Ar privaloma informacija turi būti pridedama prie prieigos rakto?" + }, + "includeInUserInfo": { + "label": "Pridėti prie naudotojo informacijos", + "tooltip": "Ar privaloma informacija turi būti pridedama prie naudotojo informacijos?" + }, + "sectorIdentifierUri": { + "label": "Sektoriaus identifikatoriaus URI", + "tooltip": "Paslaugų teikėjai, kurie naudoja porines subreikšmes ir palaiko dinaminę klientų registraciją (Dynamic Client Registration) turėtų naudoti sector_identifier_uri parametrą. Teikiamas funkcionalumas leidžia svetainių grupėms, valdomoms centralizuotos administravimo panelės, turėti pastovias porines subreikšmes nepriklausomas nuo domeno vardų. Tokiu būdu klientai gali keisti domenų redirect_uri neperregistruojant visų naudotojų." + }, + "pairwiseSubAlgorithmSalt": { + "label": "Druska", + "tooltip": "Druska naudojama porinio objekto identifikatoriaus skaičiavimo metu. Jei paliekama tuščia reikšmė, tuomet druskos reikšmė bus automatikšai sugeneruota." + }, + "name-id-format": "NameID formatas" +} \ No newline at end of file diff --git a/public/resources/lt/events.json b/public/resources/lt/events.json new file mode 100644 index 0000000000..522e327b3a --- /dev/null +++ b/public/resources/lt/events.json @@ -0,0 +1,20 @@ +{ + "title": "Įvykiai", + "adminEvents": "Administravimo įvykiai", + "time": "Laikas", + "user": "Naudotojas", + "username": "User Name", + "email": "El. paštas", + "eventType": "Įvykio tipas", + "ipAddress": "IP adresas", + "client": "client", + "realm": "Sritis", + "resourcePath": "Resurso kelias", + "resourceType": "Resurso tipas", + "resourceTypes": "Resurso tipas", + "operationType": "Veiksmo tipas", + "operationTypes": "Veiksmas", + "auth": "Autentifikacijos informacija", + "value": "Reikšmė", + "representation": "Reprezentacija" +} \ No newline at end of file diff --git a/public/resources/lt/groups.json b/public/resources/lt/groups.json new file mode 100644 index 0000000000..421325b0b1 --- /dev/null +++ b/public/resources/lt/groups.json @@ -0,0 +1,9 @@ +{ + "createGroup": "Sukurti grupę", + "members": "Nariai", + "create": "Sukurti", + "email": "El. paštas", + "lastName": "Pavardė", + "firstName": "Vardas", + "attributes": "Atributai" +} \ No newline at end of file diff --git a/public/resources/lt/identity-providers-help.json b/public/resources/lt/identity-providers-help.json new file mode 100644 index 0000000000..20a5bdb4eb --- /dev/null +++ b/public/resources/lt/identity-providers-help.json @@ -0,0 +1,32 @@ +{ + "redirectURI": "Tapatybės teikėjo konfigūravimo nuoroda.", + "alias": "Pseudonimas, kuris vienareikšmiškai identifikuoja tapatybės teikėją ir yra naudojamas konstruojant nukreipimo nuorodą.", + "displayName": "Žmogui suprantamas, draugiškas tapatybės teikėjo pavadinimas.", + "clientId": "Kliento identifikatorius užregistruotas tapatybės teikėjo sistemoje.", + "clientSecret": "Kliento saugos kodas užregistruotas tapatybės teikėjo sistemoje.", + "discoveryEndpoint": "Importuoti metaduomenis iš nutolusio IDP aptikimo aprašo (IDP discovery descriptor).", + "importConfig": "Importuoti metaduomenis iš rinkmenos, kurią atsisiuntėte iš IDP aptikimo aprašo (IDP discovery descriptor).", + "logoutUrl": "Adresas, kuris turi būti naudojamas norint atjungti naudotoją nuo išorinio tapatybės teikėjo.", + "backchannelLogout": "Ar išorinis tapatybės teikėjas palaiko serveris-serveris naudotojo atjungimo būdą?", + "disableUserInfo": "Ar uždrausti prieigą prie papildomos naudotojo profilio informacijos per User Info paslaugą? Numatyta reikšmė - naudoti šią OIDC paslaugą.", + "userInfoUrl": "Naudotojo informacijos URL. Neprivalomas.", + "issuer": "Išdavėjo identifikatorius perduodamas išdavėjo atsakyme. Tikrinimas nebus atliekamas jei reikšmė tuščia.", + "scopes": "Taikymos sritys, kurios siunčiamos autorizavimo užklausoje. Reikšmės turi būti atskirtos tarpo simboliu. Numatyta reikšmė - 'openid'.", + "validateSignature": "Įgalinamas išorinių IDP parašų tikrinimas.", + "useJwksUrl": "Jei įgalinta, tuomet tapatybės teikėjo viešasis raktas atsiunčiamas iš pateiktos JWKS URL. Įgalinimas suteikia lankstumo, nes tapatybės teikėjui pergeneravus raktus jie automatiškai atsiunčiami. Jei ši nuostata išjungta, tuomet naudojamas Keycloak DB saugomas viešasis raktas (arba sertifikatas) ir klientui sugeneravus naujus raktus juos rankiniu būdu reikės importuoti į Keycloak DB.", + "storeTokens": "Jei įgalinta, tuomet po naudotojų prisijungimo, prieigos raktai bus išsaugoti.", + "storedTokensReadable": "Jei įgalinta, tuomet naudotojai gali peržiūrėti išsaugotus prieigos raktus. Įgalinama broker.read-token rolė.", + "trustEmail": "Jei įgalintas, tuomet šio tapatybės teikėjo pateiktas el. pašto adresas laikomas patikimu ir, nepaisant bendrųjų srities nustatymų, nėra papildomai tikrinamas.", + "firstBrokerLoginFlowAlias": "Autentifikacijos eigos pseudonimas, kuris bus sužadintas šio tapatybės teikėjo naudotojui prisijungus pirmą kartą. Terminas 'pirmas kartas' reiškia, kad Keycloak sistemoje nebuvo saugomas naudotojo profilis susietas su autentifikuotu šio tapatybės teikėjo naudotoju.", + "useEntityDescriptor": "Importuoti metaduomenis iš nutolusio IDP SAML subjekto aprašo.", + "samlEntityDescriptor": "Leidžia įkelti konfigūracinę rinkmeną arba nurodyti atsisiuntimo URL su išorinio IDP metaduomenimis.", + "ssoServiceUrl": "Adresas, kuriuo turi būti siunčiamos autentifikacijos užklausos (SAML AuthnRequest).", + "singleLogoutServiceUrl": "Adresas, kuriuo turi būti siunčiamos naudotojo atjungimo užklausos.", + "httpPostBindingAuthnRequest": "Jei įgalinta, tuomet AuthnRequest siunčiami HTTP-POST saistymu. Kitu atveju bus naudojamas HTTP-REDIRECT.", + "wantAuthnRequestsSigned": "Nurodykite, ar tapatybės teikėjas tikisi pasirašytų AuthnRequest užklausų.", + "signatureAlgorithm": "Parašo algoritmas naudojamas dokumentų pasirašymui.", + "forceAuthentication": "Jei įgalinta, tuomet tapatybės teikėjas privalo autentifikuoti naudotoją iš naujo nepasitikint ankstesniu prisijungimu.", + "validateSignatures": "Įjungti/išjungti SAML atsakymų parašo tikrinimą.", + "validatingX509Certs": "PEM formato sertifikatai, kurie turi būti naudojami parašų tikrinimui. Reikšmės skiriamos kableliais (,).", + "addIdpMapperName": "Atitikmens susiejimo vardas." +} \ No newline at end of file diff --git a/public/resources/lt/identity-providers.json b/public/resources/lt/identity-providers.json new file mode 100644 index 0000000000..720b267d49 --- /dev/null +++ b/public/resources/lt/identity-providers.json @@ -0,0 +1,44 @@ +{ + "addIdPMapper": "Pridėti tapatybės teikėjo atitikmens susiejimą", + "redirectURI": "Nukreipimo URI", + "clientId": "Kliento ID", + "clientSecret": "Kliento slaptas kodas", + "endpoints": "Prieigos adresai", + "alias": "Pseudonimas", + "ssoServiceUrl": "Vieningo prisijungimo paslaugos URL", + "singleLogoutServiceUrl": "Vieningo atsijungimo paslaugos URL", + "nameIdPolicyFormat": "NameID taisyklių formatas", + "email": "El. paštas", + "unspecified": "nenurodyta", + "httpPostBindingResponse": "Siųsti atsakymus HTTP-POST", + "httpPostBindingAuthnRequest": "Siųsti AuthnRequest HTTP-POST ", + "wantAuthnRequestsSigned": "Reikalaujami pasirašytų AuthnRequests", + "forceAuthentication": "Priverstinė autentifikacija", + "validatingX509Certs": "X509 sertifikatai tikrinimui", + "authorizationUrl": "Autorizacijos URL", + "tokenUrl": "Prieigos raktų URL", + "logoutUrl": "Atsijungimo URL", + "backchannelLogout": "Foninis atjungimas", + "disableUserInfo": "Uždrausti naudotojo informacijos prieigą", + "userInfoUrl": "Naudotojo informacijos URL", + "issuer": "Išdavėjas", + "scopes": "Taikymo sritys", + "prompt": "Raginimas", + "prompts": { + "none": "jokio", + "consent": "sutikimo tekstas", + "login": "prisijungimas" + }, + "clientAuthentication": "Klientų autentifikacijos seka", + "validateSignature": "Parašo tikrinimas", + "useJwksUrl": "Naudoti JWKS URL", + "jwksUrl": "JWKS URL", + "storeTokens": "Saugoti raktus", + "storedTokensReadable": "Saugoti raktus skaitomame formate", + "trustEmail": "El. paštas patikimas", + "firstBrokerLoginFlowAlias": "Pirmojo prisijungimo eiga", + "postBrokerLoginFlowAlias": "Sekančių prisijungimų eiga", + "mapperType": "Atitikmens tipas", + "selectRole": "Parinkite rolę", + "userAttribute": "Naudotojo atributas" +} \ No newline at end of file diff --git a/public/resources/lt/realm-settings-help.json b/public/resources/lt/realm-settings-help.json new file mode 100644 index 0000000000..a689246218 --- /dev/null +++ b/public/resources/lt/realm-settings-help.json @@ -0,0 +1,23 @@ +{ + "requireSsl": "Ar HTTPS privalomas? 'niekada' - HTTPS nereikalaujamas. 'išorinėms užklausoms' - jungiantis iš localhost ar serverio IP adresų galima prieiti ir per HTTP. 'visoms užklausoms' - HTTPS reikalaujamas jungiantis iš visų IP adresų.", + "accountTheme": "Pasirinkite kaip atrodys naudotojo profilio valdymo langai.", + "adminConsoleTheme": "Pasirinkite kaip atrodys administravimo konsolės langai.", + "emailTheme": "Pasirinkite kaip atrodys siunčiami el. pašto laiškai.", + "save-user-events": "Jei įgalinta, tuomet su prisijungimu susiję veiksmai saugomi duomenų bazėje ir tampa prieinami per administravimo bei naudotojo paskyros valdymo skydus. ", + "save-admin-events": "Jei įgalinta, tuomet administravimo veiksmai saugomi duomenų bazėje ir tampa prieinami per administravimo valdymo skydą.", + "expiration": "Nustato įvykių galiojimo laiką. Nebegaliojantys įvykiai periodiškai ištrinami iš duomenų bazės.", + "admin-clearEvents": "Ištrina visus su administravimu susijusius veiksmus iš duomenų bazės.", + "includeRepresentation": "Išsaugoti kurūmo ir redagavimo užklausų JSON reprezentaciją.", + "failureFactor": "Pasiekus maksimalų nesėkmingų bandymų prisijungti skaičių įjungiamas specialus rėžimas, kuomet laukimo intervalas yra didinamas po kiekvieno sekančio neteisingo bandymo.", + "waitIncrementSeconds": "Laikas, kurį naudotojo prisijungimai yra draudžiami, kai nėsėkmingų bandymų skaičius pasiekia nustatytą ribą", + "maxFailureWaitSeconds": "Maksimalus laikas, kuomet naudotojo paskyra yra užrakinama po nesėkmingų bandymų prisijungti.", + "maxDeltaTimeSeconds": "Laikas, po kurio nepavykę prisijungimai bus pamiršti", + "quickLoginCheckMilliSeconds": "Jei nėsėkmingi bandymai prisijungti seka vienas kitą per greitai, tuomet naudotojo paskyra yra užrakinama.", + "minimumQuickLoginWaitSeconds": "Laikas, kurį naudotojo prisijungimai yra draudžiami, kai nėsėkmingi bandymai prisijungti seka vienas kitą per greitai.", + "ssoSessionIdle": "Laikas, po kurio neaktyvi sesija bus užbaigta. Sesijos pasibaigimo metu visi raktai (Tokens) ir naršyklių sesijos sunaikinamos.", + "ssoSessionMax": "Laikas, po kurio prisijungimo sesija yra sunaikinama. Sesijos pasibaigimo metu visi raktai (Tokens) ir naršyklių sesijos sunaikinamos.", + "offlineSessionIdle": "Darbo neprisijungus sesijos neveikimo laikas, po kurio neaktyvi sesija bus užbaigta. Darbo neprisijungus metu, prisijungimo raktai turi būti atnaujinami bent kartą per nurodytą periodą. Kitu atveju sesijos galiojmas bus sustabdytas.", + "revokeRefreshToken": "Jei įgalintas, tuomet atnaujinimo raktai (Refresh Token) gali būti naudojami tik vieną kartą. Kitu atveju - atnaujinimo raktai gali būti pernaudojami daugelį kartų. ", + "clientLoginTimeout": "Laikas, per kurį klientas turi užbaigti prisijungimo procesą. Normaliu atveju reikšmė turėtų būti 1 minutė.", + "editUsername": "Jei įgalintas, tuomet naudotojas gali keisti savo naudotojo vardą." +} \ No newline at end of file diff --git a/public/resources/lt/realm-settings.json b/public/resources/lt/realm-settings.json new file mode 100644 index 0000000000..7bfe0a6706 --- /dev/null +++ b/public/resources/lt/realm-settings.json @@ -0,0 +1,110 @@ +{ + "partialImport": "Dalinis duomenų importavimas", + "general": "Bendra informacija", + "login": "prisijungimas", + "themes": "Temos", + "events": "Įvykiai", + "eventListeners": "Įvykių gavėjai", + "eventListenersHelpText": "Nurodykite srities įvykių gavėjus.", + "adminEventsSettings": "Administravimo veiksmų nustatymai", + "saveEvents": "Saugoti įvykius", + "expiration": "Galiojimas", + "clearAdminEvents": "Išvalyti administravimo įvykius", + "includeRepresentation": "Išsaugoti reprezentaciją", + "email": "El. paštas", + "from": "Nuo", + "host": "Serveris", + "port": "Prievadas", + "authentication": "Autentifikavimas", + "enableSSL": "Įgalinti SSL", + "enableStartTLS": "Įgalinti StartTLS", + "username": "Naudotojo vardas", + "password": "Slaptažodis", + "keys": "Raktai", + "keystore": "Raktų saugykla", + "keyAlias": "Rakto pseudonimas", + "keyPassword": "Rakto slaptažodis", + "providers": "Teikėjai", + "consoleDisplayName": "Konsolėje rodomas pavadinimas", + "active": "Aktyvus", + "type": "Tipas", + "providerId": "ID", + "kid": "KID", + "provider": "Teikėjas", + "certificate": "Sertifikatas", + "userRegistration": "Naudotojų registracija", + "userRegistrationHelpText": "Įgalina naudotojų registravimosi sąsają. Prisijungimo lange rodoma nuoroda į registravimosi puslapį.", + "rememberMe": "Prisiminti mane", + "rememberMeHelpText": "Prisijungimo lange rodyti pasirinkimą leidžiantį naudotojui likti prisijungus netgi tuomet, kai naršyklė yra išjungiama/įjungiama tol, kol nepasibaigia prisijungimo sesija.", + "emailAsUsername": "El. paštas kaip naudojo vardas", + "verifyEmail": "El. pašto patvirtinimas", + "editUsername": "Naudotojo vardo redagavimas", + "testConnection": "Tikrinti jungtį", + "htmlDisplayName": "Rodomas pavadinimas HTML formatu", + "requireSsl": "Reikalauti SSL", + "sslType": { + "all": "visoms užklausoms", + "external": "išorinėms užklausoms", + "none": "jokio" + }, + "endpoints": "Prieigos adresai", + "loginTheme": "Prisijungimo lango tema", + "accountTheme": "Naudotojo profilio tema", + "adminTheme": "Administravimo konsolės tema", + "emailTheme": "El. pašto tema", + "sessions": "Sesijos", + "SSOSessionIdle": "SSO sesijos neveikimo laikas", + "SSOSessionMax": "SSO sesijos maksimalus laikas", + "offlineSessionIdle": "Neprisijungusios sesijos neveikimo laikas", + "loginTimeout": "Naudotojo prisijungimui skirtas laikas", + "loginActionTimeout": "Naudotojo prisijungimo veiksmui skirtas laikas", + "revokeRefreshToken": "Prieigos raktą naudoti tik kartą", + "accessTokenLifespan": "Prisijungimo rakto galiojimo laikas", + "accessTokenLifespanImplicitFlow": "Prisijungimo rakto galiojimo laikas (Implicit Flow)", + "clientLoginTimeout": "Kliento prisijungimui skirtas laikas", + "createPolicy": "Sukurti taisyklę", + "policies": "Taisyklės", + "clientProfileDescription": "Aprašymas", + "back": "Atgal", + "save": "Saugoti", + "tokens": "Raktai", + "attributes": "Atributai", + "status": "Būsena", + "supportedLocales": "Palaikomos kalbos", + "defaultLocale": "Numatyta kalba", + "user": "Naudotojas", + "validatorDialogColNames": { + "colName": "Rolės pavadinimas" + }, + "validatorColNames": { + "colConfig": "Konfigūruoti" + }, + "eventTypes": { + "IMPERSONATE": { + "name": "Įkūnyti" + }, + "LOGOUT": { + "name": "Seanso pabaiga" + }, + "REGISTER": { + "name": "Registracijos" + }, + "RESET_PASSWORD": { + "name": "Pakeisti slaptažodį" + } + }, + "deleteEvents": "Išvalyti įvykius", + "defaultRoles": "Numatytosios rolės", + "defaultGroups": "Numatytos grupės", + "securityDefences": "Saugos priemonės", + "headers": "Antraštės", + "bruteForceDetection": "Grubios jėgos ataka", + "xFrameOptions": "X-Frame-Options", + "contentSecurityPolicy": "Content-Security-Policy", + "xContentTypeOptions": "X-Content-Type-Options", + "failureFactor": "Maksimalus bandymų prisijungimų skaičius", + "waitIncrementSeconds": "Laukimo laiko didinimas po", + "maxFailureWaitSeconds": "Maksimalus užrakinimo laikas", + "maxDeltaTimeSeconds": "Pamiršti nepavykusius prisijungimus po", + "minimumQuickLoginWaitSeconds": "Per greito bandymo prisijungti užrakinimo laikas" +} \ No newline at end of file diff --git a/public/resources/lt/realm.json b/public/resources/lt/realm.json new file mode 100644 index 0000000000..fc29f1c8d6 --- /dev/null +++ b/public/resources/lt/realm.json @@ -0,0 +1,3 @@ +{ + "enabled": "Įgalintas" +} \ No newline at end of file diff --git a/public/resources/lt/roles.json b/public/resources/lt/roles.json new file mode 100644 index 0000000000..275d3389e8 --- /dev/null +++ b/public/resources/lt/roles.json @@ -0,0 +1,13 @@ +{ + "associatedRolesText": "Priskirtos rolės", + "title": "Srities rolės", + "addRole": "Pridėti rolę", + "roleName": "Rolės pavadinimas", + "composite": "Sudėtinis", + "addUser": "Pridėti naudotoją", + "users": "Naudotojai", + "userName": "Naudotojo vardas", + "email": "El. paštas", + "lastName": "Pavardė", + "firstName": "Vardas" +} \ No newline at end of file diff --git a/public/resources/lt/sessions.json b/public/resources/lt/sessions.json new file mode 100644 index 0000000000..63c6d54e20 --- /dev/null +++ b/public/resources/lt/sessions.json @@ -0,0 +1,10 @@ +{ + "title": "Sesijos", + "lastAccess": "Vėliausios prieigos laikas", + "revocation": "Atšaukimai", + "notBefore": "Ne anksčiau", + "setToNow": "Parinkti dabartinę datą", + "clear": "Išvalyti", + "push": "Informuoti apie atšaukimą", + "none": "jokio" +} \ No newline at end of file diff --git a/public/resources/lt/user-federation-help.json b/public/resources/lt/user-federation-help.json new file mode 100644 index 0000000000..c0682c56c3 --- /dev/null +++ b/public/resources/lt/user-federation-help.json @@ -0,0 +1,12 @@ +{ + "vendorHelp": "LDAP gamintojas (teikėjas)", + "consoleDisplayConnectionUrlHelp": "Jungties į LDAP serverį URL", + "bindCredentialsHelp": "LDAP administratoriaus slaptažodis", + "editModeLdapHelp": "READ_ONLY reiškia, kad LDAP saugykla bus naudojama vien tik skaitymo rėžimu. WRITABLE reiškia, kad duomenys sinchronizuojami atgal į LDAP pagal poreikį. UNSYNCED reiškia, kad naudotojų duomenys bus importuoti, tačiau niekuomet nesinchronizuojami atgal į LDAP.", + "fullSyncPeriodHelp": "Laikas sekundėmis, kas kurį atliekamas pilnas naudotojų sinchronizavimas į Keycloak sistemą", + "changedUsersSyncHelp": "Intervalas sekundėmis, kas kurį atliekamas periodinis naujai registruotų arba su pakeistais duomenimis LDAP naudotojų sinchronizavimas į Keycloak", + "trustEmailHelp": "Jei įgalintas, tuomet šio tapatybės teikėjo pateiktas el. pašto adresas laikomas patikimu ir, nepaisant bendrųjų srities nustatymų, nėra papildomai tikrinamas.", + "debugHelp": "Ar įgalinti Krb5LoginModule veikimo pranešimų rašymą į standarinę išvestį derinimo rėžimu?", + "allowPasswordAuthenticationHelp": "Ar suteikti galimybę naudotojui prisijungti prie Kerberos naudojant naudotojo vardą ir slaptažodį?", + "updateFirstLoginHelp": "Pirmojo prisijungimo metu atnaujinti naudotojo profilio duomenis" +} \ No newline at end of file diff --git a/public/resources/lt/user-federation.json b/public/resources/lt/user-federation.json new file mode 100644 index 0000000000..bb22abb897 --- /dev/null +++ b/public/resources/lt/user-federation.json @@ -0,0 +1,37 @@ +{ + "userFederation": "Naudotojų federavimas", + "consoleDisplayName": "Konsolėje rodomas pavadinimas", + "vendor": "Gamintojas", + "connectionURL": "Jungties URL", + "enableStartTls": "Įgalinti StartTLS", + "useTruststoreSpi": "Naudoti raktų saugyklos SPI", + "connectionPooling": "Jungčių buferizavimas", + "bindType": "Autentifikacijos tipas", + "bindDn": "Prisijungimo DN", + "editMode": "Pakeitimų rėžimas", + "usersDN": "Naudotojų DN", + "usernameLdapAttribute": "Prisijungimo vardo LDAP atributas", + "rdnLdapAttribute": "RDN LDAP atributas", + "uuidLdapAttribute": "UUID LDAP atributas", + "userObjectClasses": "Naudotojų objektų klasės", + "searchScope": "Paieškos apimtis", + "pagination": "Puslapiavimas", + "batchSize": "Paketo dydis", + "periodicFullSync": "Pilnas periodinis sinchronizavimas", + "fullSyncPeriod": "Pilno sinchronizavimo intervalas", + "periodicChangedUsersSync": "Periodinis pakeitimų sinchronizavimas", + "changedUsersSyncPeriod": "Periodinis sinchronizavimo intervalas", + "kerberosIntegration": "Kerberos intergacija", + "allowKerberosAuthentication": "Leisti Kerberos autentifikaciją", + "useKerberosForPasswordAuthentication": "Naudoti Kerberos autentifikacijai su slaptažodžiu", + "trustEmail": "El. paštas patikimas", + "requiredSettings": "Privalomi nustatymai", + "kerberosRealm": "Kerberos sritis", + "serverPrincipal": "Pagrindinis serveris", + "debug": "Derinti", + "allowPasswordAuthentication": "Leisti autentifikaciją naudojant slaptažodį", + "testAuthentication": "Tikrinti autentifikaciją", + "ldapMappersList": "LDAP atitikmenų parinkėjai", + "ldapFilter": "LDAP filtras", + "selectRole": "Parinkite rolę" +} \ No newline at end of file diff --git a/public/resources/lt/users-help.json b/public/resources/lt/users-help.json new file mode 100644 index 0000000000..8755791161 --- /dev/null +++ b/public/resources/lt/users-help.json @@ -0,0 +1,6 @@ +{ + "temporaryLocked": "Naudotojas laikintai užrakintas, nes per daug klydo prisijungiant prie sistemos.", + "emailVerified": "Ar naudotojo el. pašto adresas yra patvirtintas?", + "requiredUserActions": "Nurodykite kuriuos veiksmus po prisijungimo naudotojas privalo atlikti. 'Patvirtinti el. pašto adresą' į naudotojo el. pašto adresą siunčia patvirtinimo nuorodą. 'Atnaujinti profilio informaciją' reikalauja naudotojo peržiūrėti ir atnaujinti profilio informaciją. 'Atnaujinti slaptažodį' reikalauja naudotojo pasikeisti slaptažodį. 'Konfigūruoti OTP' reikalauja atnaujinti mobilaus slaptažodžių generatoriaus konfigūraciją.", + "groups": "Visos grupės, kurių narys yra šis naudotojas. Pažymėkite grupę ir paspauskite 'Palikti' norėdami pašalinti naudotoją iš grupės." +} \ No newline at end of file diff --git a/public/resources/lt/users.json b/public/resources/lt/users.json new file mode 100644 index 0000000000..046a83acdb --- /dev/null +++ b/public/resources/lt/users.json @@ -0,0 +1,33 @@ +{ + "title": "Naudotojai", + "join": "Prijungti", + "leave": "Palikti", + "groupMembership": "Narystė grupėse", + "createdAt": "Sukūrimo data", + "username": "Naudotojo vardas", + "email": "El. paštas", + "emailVerified": "El. paštas patvirtintas", + "lastName": "Pavardė", + "firstName": "Vardas", + "status": "Būsena", + "requiredUserActions": "Privalomi veiksmai naudotojui", + "addUser": "Pridėti naudotoją", + "impersonate": "Įkūnyti", + "verifyEmail": "El. pašto patvirtinimas", + "consents": "Sutikimai", + "identityProvider": "Tapatybės teikėjas", + "identityProviderLinks": "Sąsajos su tapatybės teikėjais", + "revoke": "Atšaukti", + "save": "Saugoti", + "credentialType": "Tipas", + "password": "Slaptažodis", + "passwordConfirmation": "Pakartotas slaptažodis", + "resetPassword": "Pakeisti slaptažodį", + "showPasswordDataValue": "Reikšmė", + "credentialResetBtn": "Prisijungimo duomenų atkūrimas", + "resetActions": "Atkurti veiksmus", + "hours": "Valandos", + "minutes": "Minutės", + "seconds": "Sekundės", + "credentialResetConfirm": "Siųsti el. pašto laišką" +} \ No newline at end of file diff --git a/public/resources/lv/authentication-help.json b/public/resources/lv/authentication-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/authentication-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/authentication.json b/public/resources/lv/authentication.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/authentication.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/client-scopes-help.json b/public/resources/lv/client-scopes-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/client-scopes-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/client-scopes.json b/public/resources/lv/client-scopes.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/client-scopes.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/clients-help.json b/public/resources/lv/clients-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/clients-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/clients.json b/public/resources/lv/clients.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/clients.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/common-help.json b/public/resources/lv/common-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/common-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/common.json b/public/resources/lv/common.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/common.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/dashboard.json b/public/resources/lv/dashboard.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/dashboard.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/dynamic.json b/public/resources/lv/dynamic.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/dynamic.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/events.json b/public/resources/lv/events.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/events.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/groups.json b/public/resources/lv/groups.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/groups.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/identity-providers-help.json b/public/resources/lv/identity-providers-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/identity-providers-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/identity-providers.json b/public/resources/lv/identity-providers.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/identity-providers.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/realm-settings-help.json b/public/resources/lv/realm-settings-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/realm-settings-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/realm-settings.json b/public/resources/lv/realm-settings.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/realm-settings.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/realm.json b/public/resources/lv/realm.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/realm.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/roles.json b/public/resources/lv/roles.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/roles.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/sessions.json b/public/resources/lv/sessions.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/sessions.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/user-federation-help.json b/public/resources/lv/user-federation-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/user-federation-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/user-federation.json b/public/resources/lv/user-federation.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/user-federation.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/users-help.json b/public/resources/lv/users-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/users-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/lv/users.json b/public/resources/lv/users.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/lv/users.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/authentication-help.json b/public/resources/nl/authentication-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/authentication-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/authentication.json b/public/resources/nl/authentication.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/authentication.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/client-scopes-help.json b/public/resources/nl/client-scopes-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/client-scopes-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/client-scopes.json b/public/resources/nl/client-scopes.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/client-scopes.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/clients-help.json b/public/resources/nl/clients-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/clients-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/clients.json b/public/resources/nl/clients.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/clients.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/common-help.json b/public/resources/nl/common-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/common-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/common.json b/public/resources/nl/common.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/common.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/dashboard.json b/public/resources/nl/dashboard.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/dashboard.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/dynamic.json b/public/resources/nl/dynamic.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/dynamic.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/events.json b/public/resources/nl/events.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/events.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/groups.json b/public/resources/nl/groups.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/groups.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/identity-providers-help.json b/public/resources/nl/identity-providers-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/identity-providers-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/identity-providers.json b/public/resources/nl/identity-providers.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/identity-providers.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/realm-settings-help.json b/public/resources/nl/realm-settings-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/realm-settings-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/realm-settings.json b/public/resources/nl/realm-settings.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/realm-settings.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/realm.json b/public/resources/nl/realm.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/realm.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/roles.json b/public/resources/nl/roles.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/roles.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/sessions.json b/public/resources/nl/sessions.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/sessions.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/user-federation-help.json b/public/resources/nl/user-federation-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/user-federation-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/user-federation.json b/public/resources/nl/user-federation.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/user-federation.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/users-help.json b/public/resources/nl/users-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/users-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/nl/users.json b/public/resources/nl/users.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/nl/users.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/no/authentication-help.json b/public/resources/no/authentication-help.json new file mode 100644 index 0000000000..255823ee31 --- /dev/null +++ b/public/resources/no/authentication-help.json @@ -0,0 +1,9 @@ +{ + "flowType": "Hva slags skjema det er", + "topLevelFlowType": "Hvilken type toppnivå flyt er det? Type 'klient' brukes for autentisering av klienter (applikasjoner) når generisk brukes for brukere og alt annet", + "alias": "Navn på konfigurasjonen", + "otpType": "Totp er et tidsbasert engangspassord. 'hotp' er et teller basert engangspassord hvor serveren følger med på en teller som den kan hashe mot.", + "otpHashAlgorithm": "Hva slags hashing algoritme skal brukes for å generere OTP.", + "otpPolicyDigits": "Hvor mange sifre skal OTP ha?", + "otpPolicyPeriod": "Hvor mange sekunder burde et engangskode token være gyldig? Standard er satt til 30 sekunder." +} \ No newline at end of file diff --git a/public/resources/no/authentication.json b/public/resources/no/authentication.json new file mode 100644 index 0000000000..7c4eae5653 --- /dev/null +++ b/public/resources/no/authentication.json @@ -0,0 +1,34 @@ +{ + "title": "Autentisering", + "flows": "Flyt", + "requiredActions": "Påkrevde handlinger", + "policies": "Policier", + "passwordPolicy": "Passordpolicy", + "otpPolicy": "Policy for engangskode", + "otpType": "Type engangskode", + "policyType": { + "totp": "Tidsbasert", + "hotp": "Tellerbasert" + }, + "otpHashAlgorithm": "OTP hash-algoritme", + "otpPolicyDigits": "Antall siffer", + "lookAhead": "Look Ahead Window", + "otpPolicyPeriod": "Engangskode token", + "initialCounter": "Initiell teller", + "attestationPreference": { + "none": "Ingen" + }, + "flow": { + "browserFlow": "Nettleserflyt", + "registrationFlow": "Registreringsflyt", + "directGrantFlow": "Direct Grant Flyt" + }, + "edit": "Rediger", + "flowType": "Type av flyt", + "flow-type": { + "form-flow": "skjema" + }, + "addExecution": "Legg til eksekvering", + "requirement": "Krav", + "alias": "Alias" +} \ No newline at end of file diff --git a/public/resources/no/client-scopes-help.json b/public/resources/no/client-scopes-help.json new file mode 100644 index 0000000000..d5ab50b99d --- /dev/null +++ b/public/resources/no/client-scopes-help.json @@ -0,0 +1,10 @@ +{ + "name": "Navn på klientmal. Må være unik i sikkerhetsdomenet.", + "description": "Beskrivelse av klientmal", + "protocol": "Hvilken SSO protokoll-konfigurasjon som blir levert av denne klientmalen", + "prefix": "Prefiks for hver sikkerhetsdomenerolle (valgfri).", + "multiValued": "Angir om en attributt støtter flere verdier. Hvis true, vil listen med alle verdier for dette attributtet bli satt som claims. Hvis false, vil bare den første verdien bli satt som claim.", + "tokenClaimName": "Navn på claim som skal legges inn i token. Denne kan være et fullt kvalifisert navn som 'address.street'. I dette tilfellet vil et nestet jsonobjekt bli laget.", + "claimJsonType": "JSON-type som burde bli brukt for å fylle json claimet i tokenet. long, int, boolean og String er gyldige verdier.", + "protocolMapper": "Protokoll..." +} \ No newline at end of file diff --git a/public/resources/no/client-scopes.json b/public/resources/no/client-scopes.json new file mode 100644 index 0000000000..15c12075c4 --- /dev/null +++ b/public/resources/no/client-scopes.json @@ -0,0 +1,8 @@ +{ + "protocol": "Protokoll", + "type": "Type", + "realmRolePrefix": "Prefiks for sikkerhetsdomenerolle", + "realmRoles": "Sikkerhetsdomeneroller", + "clients": "Klienter", + "scope": "Scope" +} \ No newline at end of file diff --git a/public/resources/no/clients-help.json b/public/resources/no/clients-help.json new file mode 100644 index 0000000000..2ef5c14a00 --- /dev/null +++ b/public/resources/no/clients-help.json @@ -0,0 +1,79 @@ +{ + "clientType": "'OpenID connect' tillater klienter å verifisere identiteten til sluttbrukeren basert på autentisering utført av en autorisasjonsserver. 'SAML' aktiverer en web-basert autentisering og autoriseringsscenarier som inkluderer cross-domain single sign-on (SSO) og som bruker security tokens som inneholder assertions for å dele informasjon videre.", + "serviceAccount": "Lar deg autentisere denne klienten til Keycloak og hente access token dedikert til denne klienten. I følge OAuth2 spesifikasjonen, aktiverer dette støtte for 'Client Credentials Grant' for denne klienten.", + "authorization": "Aktiver/deaktiver finkornet autorisasjonssupport for en klient", + "directAccess": "Dette gir støtte for Direct Access Grants, som betyr at klienten har tilgang til brukerens brukernavn/passord og kan bytte dette direkte med Keycloak-serveren for access token. I følge OAuth2 spesifikasjonen, aktiverer dette støtte for 'Resource Owner Password Credentials Grant' for denne klienten.", + "standardFlow": "Dette aktiverer standard OpenID Connect redirect-basert autentisering med autorisasjonskode. I forhold til OpenID Connect eller OAuth2 spesifikasjoner aktiverer dette støtte for 'Authorization Code Flow' for denne klienten.", + "implicitFlow": "Dette aktiverer støtte for OpenID Connect redirect-basert autentisering uten autorisasjonskode. I forhold til OpenID Connect eller OAuth2 spesifikasjoner aktiverer dette støtte for 'Implicit Flow' for denne klienten.", + "rootURL": "Root URL lagt til relative URLer", + "validRedirectURIs": "Gyldig URI mønster som en nettleser kan redirecte til etter en vellykket innlogging eller utlogging. Enkle jokertegn er tillatt, for eksempel 'http://example.com/*'. Relativ sti kan også spesifiseres, for eksempel /my/relative/path/*. Relative stier er relative til klientens root URL, eller hvis ingen er spesifisert brukes root URL for autorisasjonsserveren. For SAML må du sette et gyldig URI mønster hvis du er avhengig av at URL for forbrukertjenesten er integrert med forespørselen for pålogging.", + "nameIdFormat": "Navn-ID formatet som skal brukes for emnet.", + "forceNameIdFormat": "Ignorer forespurt format på Navn-ID emnet og bruk den som er konfigurert i administrasjonskonsollen.", + "forcePostBinding": "Bruk alltid POST binding for svar.", + "includeAuthnStatement": "Skal et statement som spesifiserer metoden for tidsstempel inngå i innloggingssvaret?", + "signDocuments": "Skal SAML dokumenter bli signert av sikkerhetsdomenet?", + "signAssertions": "Skal assertions i SAML dokumenter bli signert? Denne innstillingen er ikke nødvendig hvis et dokument allerede har blitt signert.", + "signatureAlgorithm": "Signaturalgoritmen som brukes for å signere et dokument.", + "canonicalization": "Kanoniseringsmetode for XML signaturer.", + "webOrigins": "Tillat CORS origins. For å tillate alle origins med gyldig Redirect URIer legg til '+'. For å tillate alle origins legg til '*'.", + "homeURL": "Standard URL som kan brukes når autorisasjonsserveren trenger å redirecte eller lenke tilbake til klienten.", + "adminURL": "URL til administratorgrensesnitt for klienten. Sett denne hvis klienten støtter adapter REST API. Dette REST APIet tillater autorisasjonsserveren til å sende tilbakekallingsregler og andre administrative oppgaver. Vanligvis er dette satt til klientens base URL.", + "client": "Velg klienten som vil utføre denne autorisasjonsforespørselen.", + "clientId": "Angir ID referert i URI og tokens. For eksempel 'min-klient'. For SAML er dette også forventet utgiververdi fra authn-forespørsler", + "selectUser": "Velg en bruker hvis identitet vil bli brukt for å søke tillatelser fra serveren.", + "roles": "Velg en rolle som du vil knytte til den valgte brukeren.", + "contextualAttributes": "Ethvert attributt gitt av et kjørende miljø eller ved utførelseskontekst.", + "applyToResourceType": "Spesifiserer om denne tillatelsen skal gjelde for alle ressurser med en gitt type. I dette tilfellet vil tillatelsen bli evaluert for alle instanser av gitt ressurstype.", + "resources": "Spesifiserer at denne tillatelsen må bli brukt for en spesifikk ressursinstans.", + "scopesSelect": "Spesifiserer at denne tillatelse må anvendes på en eller flere scopes.", + "clientName": "Angir klientnavnet som blir vist. For eksempel, 'Min klient'. Støtter nøkler for lokaliserte verdier. For eksempel: ${my_client}", + "description": "Angir beskrivelse av klienten. For eksempel: 'Min klient for timelister'. Støtter nøkler for lokaliserte verdier. For eksempel: ${my_client_description}", + "loginTheme": "Velg tema for sidene: innlogging, OTP, rettigheter, registrering, glemt passord.", + "encryptAssertions": "Skal SAML assertions bli kryptert med klientens offentlige nøkkel ved å bruke AES?", + "clientSignature": "Skal klienten signere sine SAML forespørsler og svar? Og skal de valideres?", + "expiration": "Angir hvor lenge et token skal være gyldig", + "count": "Angir hvor mange klienter som kan bli opprettet ved å bruke token.", + "client-authenticator-type": "Klientautentikator som blir brukt for å autentisere denne klienten mot keycloak-server", + "registration-access-token": "Access token for registrering gir klienter tilgang til registreringstjenesten for klienter.", + "nodeReRegistrationTimeout": "Intervall for å angi maksimum tid for registrerte klienters clusternoder for å re-registreres. Hvis en clusternode ikke sender re-regisreringsforespørsel til Keycloak innen dette intervallet, vil den bli uregistrert fra Keycloak.", + "idpInitiatedSsoUrlName": "Navn på URL-fragment som refererer til klienten når du vil gjøre en IDP initiert SSO. La denne stå tom om du ønsker å deaktivere IDP initiert SSO. URLen vil være: {server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}", + "idpInitiatedSsoRelayState": "Relay state du ønsker å sende med SAML forespørselen når du vil utføre en IDP initiert SSO.", + "masterSamlProcessingUrl": "Hvis konfigurert vil denne URLen bli brukt for hver binding til både SPs Assertion Consumer og Single Logout-tjenester. Denne kan bli individuelt overstyrt for hver binding og tjenester i konfigurasjonen for finkornet SAML endepunkt.", + "accessTokenLifespan": "Maksimum tid før et access token utløper. Det anbefales at denne verdien er kort i forhold til SSO timeout.", + "assertionConsumerServicePostBindingURL": "SAML POST binding URL for klientens assertion customer service (innloggingsrespons). Du kan la denne stå tom om du ikke ønsker en URL for denne bindingen.", + "assertionConsumerServiceRedirectBindingURL": "SAML redirect for klientens assertion consumer service (innloggingsrespons). Du kan la denne stå tom om du ikke ønsker en URL for denne bindingen.", + "logoutServiceRedirectBindingURL": "SAML redirect binding URL for klientens single logout-tjeneste. Du kan la dette stå tomt om du bruker en annen binding.", + "frontchannelLogout": "Hvis satt til true, krever utlogging en redirect i nettleser til klient. Hvis satt til false, vil server utføre en bakgrunnskall for utlogging.", + "browserFlow": "Velg flyten du ønsker å bruke for nettleser-autentisering.", + "directGrant": "Velg flyten du ønsker å bruke for direct grant autentisering.", + "certificate": "Klientsertifikat for å validere JWT utstedt av klienten og signert av privatnøkkel til klient fra din keystore.", + "archiveFormat": "Java keystore eller PKCS12 arkivformat.", + "keyAlias": "Arkiv-alias for din privatnøkkel og sertifikater.", + "keyPassword": "Passord for å få tilgang til privatnøkler i arkivet", + "storePassword": "Passord for å få tilgang til arkivet", + "consentRequired": "Hvis aktivert må brukere gi samtykke for at klienten skal få tilgang.", + "import": "Importer en JSON-fil som inneholder innstillinger for autorisasjon for denne ressursserveren.", + "policyEnforcementMode": "Modus for håndhevelse av policy dikterer hvordan policier blir håndhevet når autorisasjonsforespørsler blir evaluert. 'Håndhevende' betyr at forespørsler blir nektet som standard selv om det ikke er en policy knyttet til en gitt ressurs. 'Ettergivende' betyr at forespørsler blir tillatt selv om det ikke er en policy knyttet til en gitt ressurs. 'Deaktivert' deaktiverer fullstendig evalueringen av policier og tillater tilgang til enhver ressurs.", + "allowRemoteResourceManagement": "Skal ressursene bli håndtert eksternt av ressursserveren? Hvis satt til false kan ressursene kun bli håndtert fra denne administratorkonsollen.", + "resourceName": "Et unikt navn for denne ressursen. Navnet kan bli brukt til å identifisere en ressurs og er nyttig i spørringer for en bestemt ressurs.", + "type": "Ressurstype. Den kan brukes til å gruppere ulike ressursinstanser av samme type.", + "uris": "En URI som også kan brukes for å identifisere denne ressursen.", + "scopes": "Scopes assosiert med denne ressursen.", + "fullScopeAllowed": "Lar deg å deaktivere alle restriksjoner.", + "resetActions": "Sett med handlinger som kan utføres ved å sende en bruker en Tilbakestillingshandling for E-post. 'Verifiser e-post' sender en e-post til brukeren for å verifisere e-postadresse. 'Oppdater profil' krever at bruker legger inn personlig informasjon. 'Oppdater passord' krever at bruker skriver inn et nytt passord. 'Konfigurer OTP' krever installasjon av en passordgenerator for mobil.", + "scopeName": "Et unikt navn for dette scopet. Navnet kan bli brukt for å identifisere et scope, og er nyttig i spørringer for en bestemt ressurs.", + "policy-name": "Navnet på denne policien.", + "policy-description": "En beskrivelse av denne policien.", + "policyDecisionStagey": "Beslutningsstrategi som dikterer hvordan policies knyttet til en gitt policy blir evaluert og hvordan endelig avgjørelse oppnås. 'Bekreftende' betyr at minst en policy må evalueres til en positiv beslutning for at den samlede avgjørelsen kan bli positiv. 'Enstemmig' betyr at alle policies må evalueres til en positiv beslutning for at den samlede avgjørelsen kan bli positiv. 'Konsensus' betyr at antall positive beslutninger må være høyere enn antall negative beslutninger. Hvis antallet av positive og negative er likt, blir den samlede avgjørelsen negativ.", + "applyPolicy": "Spesifiserer alle policies som må bli anvendt for scopes definert av denne policien eller tillatelsen.", + "policyClient": "Spesifiser klient(er) som tillates av denne policien.", + "policyGroups": "Spesifiser bruker(e) som tillates av denne policien.", + "policyRoles": "Spesifiserer klientroller tillatt av denne policien.", + "startTime": "Definerer tiden før policien MÅ IKKE innvilges. Denne innvilges kun om gjeldende dato/tid er før eller lik denne verdien.", + "expireTime": "Definerer tiden etter en policy MÅ IKKE innvilges. Denne innvilges kun om gjeldende dato/tid er før eller lik denne verdien.", + "policyCode": "JavaScript-koden angir betingelsene for denne politikken.", + "logic": "Logikken som dikterer hvordan beslutningspolicien skal utførres. Hvis 'Positiv', vil resulterende effekt (tillate eller nekte) oppnådd under evalueringen av denne policien bli brukt for å ta en beslutning. Hvis 'Negativ', vil resulterende effekt bli opphevet, med andre ord blir en tillatelse til et avslag og motsatt.", + "permissionName": "Navnet på denne tillatelsen.", + "permissionDescription": "En beskrivelse av denne tillatelsen.", + "permissionType": "Spesifiserer at denne tillatelsen må bli anvendt for alle ressursinstanser for en gitt type." +} \ No newline at end of file diff --git a/public/resources/no/clients.json b/public/resources/no/clients.json new file mode 100644 index 0000000000..a9c4569b46 --- /dev/null +++ b/public/resources/no/clients.json @@ -0,0 +1,121 @@ +{ + "protocol": "Protokoll", + "copy": "Kopi", + "clientAuthorization": "Autorisasjon", + "importClient": "Importer klient", + "webOrigins": "Web origins", + "adminURL": "Admin URL", + "formatOption": "Formatalternativer", + "encryptAssertions": "Krypter assertions", + "clientSignature": "Klientens signatur er påkrevd", + "credentials": "Innloggingsdetaljer", + "roles": "Roller", + "addClientScope": "Legg til klientmal", + "fullScopeAllowed": "Tillatt med fullt scope", + "selectAUser": "Velg en bruker", + "client": "klient", + "evaluate": "Evaluer", + "reevaluate": "Re-evaluering", + "showAuthData": "Vis autorisasjonsdata", + "unanimous": "Enstemmig", + "affirmative": "Bekreftende", + "consensus": "Konsensus", + "authScopes": "Autorisasjonsscopes", + "anyResource": "Enhver ressurs", + "anyScope": "Ethvert scope", + "selectScope": "Velg et scope", + "applyToResourceType": "Bruk på ressurstype", + "contextualInfo": "Kontekstuell informasjon", + "contextualAttributes": "Kontekstuelle attributter", + "kc": { + "realm": { + "name": "Sikkerhetsdomene" + } + }, + "password": "Passord", + "settings": "Innstillinger", + "policyEnforcementMode": "Modus for håndhevelse av policy", + "policyEnforcementModes": { + "ENFORCING": "Håndhevende", + "PERMISSIVE": "Ettergivende" + }, + "decisionStrategy": "Beslutningsstrategi", + "type": "Type", + "iconUri": "Ikon URI", + "allowRemoteResourceManagement": "Håndtering av ekstern ressurs", + "resources": "Ressurser", + "resource": "Ressurs", + "allTypes": "Alle typer", + "scope": "Scope", + "owner": "Eier", + "scopes": "Scope", + "policies": "Policier", + "createPermission": "Opprett tillatelse", + "identityInformation": "Identitetsinformasjon", + "resourceType": "Ressurstype", + "createPolicy": "Opprett policy", + "applyPolicy": "Anvend policy", + "users": "Brukere", + "code": "Kode", + "logic": "Logikk", + "logicType": { + "positive": "Positiv", + "negative": "Negativ" + }, + "user": "Bruker", + "clientList": "Klienter", + "initialAccessToken": "Første access token", + "created": "Opprettet", + "lastUpdated": "Sist oppdatert", + "expires": "Utløper", + "count": "Teller", + "remainingCount": "Resterende antall", + "expiration": "Holdbarhet", + "clientAuthentication": "Autentisering av klient", + "authentication": "Autentisering", + "realmRoles": "Sikkerhetsdomeneroller", + "frontchannelLogout": "Front channel utlogging", + "rootUrl": "Root URL", + "validRedirectUri": "Gyldig redirect URIer", + "idpInitiatedSsoRelayState": "IDP initiert SSO relay state", + "masterSamlProcessingUrl": "Master SAML prosesserings URL", + "nameIdFormat": "Navn-ID format", + "forceNameIdFormat": "Force navn-ID format", + "forcePostBinding": "Force POST binding", + "includeAuthnStatement": "Inkluder AuthnStatement", + "signDocuments": "Signer dokumenter", + "signAssertions": "Signer assertions", + "canonicalization": "Kanoniseringsmetode", + "loginTheme": "Innloggingstema", + "clientAuthenticator": "Klientautentikator", + "clientSecret": "Klient secret", + "registrationAccessToken": "Access token for registrering", + "revocation": "Oppheving", + "clustering": "Clustering", + "notBefore": "Ikke før", + "setToNow": "Sett til nå", + "addNode": "Legg til node", + "push": "Send", + "clear": "Tøm", + "nodeReRegistrationTimeout": "Timeout for re-registrering av node", + "registeredClusterNodes": "Registrerte clusternoder", + "nodeHost": "Nodevert", + "lastRegistration": "Siste registrering", + "testClusterAvailability": "Test cluster tilgjengelighet", + "registerNodeManually": "Register node manuelt", + "fineGrainSamlEndpointConfig": "Finkornet SAML endepunktskonfigurasjon", + "assertionConsumerServicePostBindingURL": "Assertion consumer service POST binding URL", + "assertionConsumerServiceRedirectBindingURL": "Assertion Consumer Service redirect binding URL", + "logoutServiceRedirectBindingURL": "Logout-tjeneste redirect binding URL", + "accessTokenLifespan": "Levetid for access token", + "browserFlow": "Nettleserflyt", + "directGrant": "Direct Grant Flyt", + "certificate": "Sertifikat", + "generateNewKeys": "Generer nye nøkler", + "archiveFormat": "Arkivformat", + "keyAlias": "Nøkkelalias", + "keyPassword": "Nøkkelpassord", + "storePassword": "Lagre passord", + "importFile": "Importer fil", + "mappers": "Mappere" +} \ No newline at end of file diff --git a/public/resources/no/common-help.json b/public/resources/no/common-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/no/common-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/no/common.json b/public/resources/no/common.json new file mode 100644 index 0000000000..a895a1074c --- /dev/null +++ b/public/resources/no/common.json @@ -0,0 +1,58 @@ +{ + "add": "Legg til", + "create": "Opprett", + "save": "Lagre", + "continue": "Fortsett", + "remove": "Fjern", + "key": "Nøkkel", + "value": "Verdi", + "back": "Tilbake", + "export": "Eksporter", + "action": "Handling", + "download": "Last ned", + "clear": "Tøm", + "on": "På", + "edit": "Rediger", + "enabled": "Aktivert", + "none": "Ingen", + "signOut": "Logg ut", + "manageAccount": "Administrer konto", + "serverInfo": "Serverinformasjon", + "testConnection": "Testkobling", + "description": "Beskrivelse", + "type": "Type", + "category": "Kategori", + "priority": "Prioritet", + "allTypes": "Alle typer", + "manage": "Håndter", + "clients": "Klienter", + "realmRoles": "Sikkerhetsdomeneroller", + "users": "Brukere", + "sessions": "Sesjoner", + "events": "Hendelser", + "mappers": "Mappere", + "permissions": "Tillatelser", + "configure": "Konfigurer", + "realmSettings": "Innstillinger for sikkerhetsdomene", + "authentication": "Autentisering", + "identityProviders": "Identitetsleverandør", + "userFederation": "Brukerfederering", + "settings": "Innstillinger", + "details": "Detaljer", + "times": { + "seconds": "Sekunder", + "minutes": "Minutter", + "hours": "Timer", + "days": "Dager" + }, + "attributes": "Attributter", + "credentials": "Innloggingsdetaljer", + "clientId": "Klient-ID", + "id": "ID", + "mapperType": "Mappertype", + "leave": "Forlat", + "password": "Passord", + "passwordConfirmation": "Passord bekreftelse", + "temporaryPassword": "Midlertidig", + "temporaryPasswordHelpText": "Hvis aktivert, er brukeren påkrevd til å endre passordet ved neste innlogging" +} \ No newline at end of file diff --git a/public/resources/no/dashboard.json b/public/resources/no/dashboard.json new file mode 100644 index 0000000000..96c462aafa --- /dev/null +++ b/public/resources/no/dashboard.json @@ -0,0 +1,3 @@ +{ + "serverInfo": "Serverinformasjon" +} \ No newline at end of file diff --git a/public/resources/no/dynamic.json b/public/resources/no/dynamic.json new file mode 100644 index 0000000000..d86925efd9 --- /dev/null +++ b/public/resources/no/dynamic.json @@ -0,0 +1,64 @@ +{ + "selectARole": "Velg en rolle", + "usermodel": { + "prop": { + "label": "Egenskap", + "tooltip": "Navn på egenskapsmetoden i UserModel-grensesnittet. For eksempel, en verdi av 'e-post' vil referere til metoden UserModel.getEmail()." + }, + "attr": { + "label": "Brukerattributt", + "tooltip": "Navn på lagret brukerattributt som er navnet på en attributt innenfor UserModel.attribute map." + }, + "clientRoleMapping": { + "client": { + "label": "Klient-ID", + "tooltip": "Klient-ID for å mappe roller" + }, + "rolePrefix": { + "label": "Prefiks for klientrolle", + "tooltip": "Prefiks for hver klientrolle (valgfri)." + } + }, + "realmRoleMapping": { + "rolePrefix": { + "label": "Prefiks for sikkerhetsdomenerolle", + "tooltip": "Prefiks for hver sikkerhetsdomenerolle (valgfri)." + } + } + }, + "userSession": { + "modelNote": { + "label": "Brukersesjonsmerknad", + "tooltip": "Navn på lagret brukersesjonsmerknad innenfor UserSessionModel.note map." + } + }, + "multivalued": { + "label": "Flere verdier", + "tooltip": "Angir om en attributt støtter flere verdier. Hvis true, vil listen med alle verdier for dette attributtet bli satt som claims. Hvis false, vil bare den første verdien bli satt som claim." + }, + "selectRole": { + "label": "Velg rolle", + "tooltip": "Skriv inn rolle i tekstboksen til venstre, eller klikk på denne knappen for å bla gjennom og velge rollen du ønsker." + }, + "tokenClaimName": { + "label": "Navn på token claim", + "tooltip": "Navn på claim som skal legges inn i token. Denne kan være et fullt kvalifisert navn som 'address.street'. I dette tilfellet vil et nestet jsonobjekt bli laget." + }, + "jsonType": { + "label": "JSON-type for claims", + "tooltip": "JSON-type som burde bli brukt for å fylle json claimet i tokenet. long, int, boolean og String er gyldige verdier." + }, + "includeInIdToken": { + "label": "Legg til i ID token", + "tooltip": "Burde claim bli lagt til i ID token?" + }, + "includeInAccessToken": { + "label": "Legg til i access token", + "tooltip": "Burde claim bli lagt til i access token?" + }, + "includeInUserInfo": { + "label": "Legg til i brukerinfo", + "tooltip": "Burde claim bli lagt til i brukerinfo?" + }, + "name-id-format": "Navn-ID format" +} \ No newline at end of file diff --git a/public/resources/no/events.json b/public/resources/no/events.json new file mode 100644 index 0000000000..7313cf5a78 --- /dev/null +++ b/public/resources/no/events.json @@ -0,0 +1,20 @@ +{ + "title": "Hendelser", + "adminEvents": "administratorhendelser", + "time": "Tid", + "user": "Bruker", + "username": "Brukers navn", + "email": "E-postadresse", + "eventType": "Hendelsestype", + "ipAddress": "IP-adresse", + "client": "klient", + "realm": "Sikkerhetsdomene", + "resourcePath": "Filsti for ressurs", + "resourceType": "Ressurstype", + "resourceTypes": "Ressurstyper", + "operationType": "Operasjonstype", + "operationTypes": "Operasjonstyper", + "auth": "Auth", + "value": "Verdi", + "representation": "Representasjon" +} \ No newline at end of file diff --git a/public/resources/no/groups.json b/public/resources/no/groups.json new file mode 100644 index 0000000000..8ba4918f69 --- /dev/null +++ b/public/resources/no/groups.json @@ -0,0 +1,9 @@ +{ + "createGroup": "Opprett gruppe", + "members": "Medlemmer", + "create": "Opprett", + "email": "E-postadresse", + "lastName": "Etternavn", + "firstName": "Fornavn", + "attributes": "Attributter" +} \ No newline at end of file diff --git a/public/resources/no/identity-providers-help.json b/public/resources/no/identity-providers-help.json new file mode 100644 index 0000000000..044bf0fba1 --- /dev/null +++ b/public/resources/no/identity-providers-help.json @@ -0,0 +1,29 @@ +{ + "redirectURI": "Redirect URI som skal brukes når du konfigurerer identitetsleverandøren.", + "alias": "Aliaset identifiserer en identitetsleverandør og kan brukes for å bygge en redirect uri.", + "clientId": "Identifikator for klient registrert hos identitetsleverandør.", + "clientSecret": "Klient secret registrert hos identitetsleverandør.", + "discoveryEndpoint": "Importer metadata fra et eksternt IDP discovery descriptor.", + "importConfig": "Importer metadata fra en nedlastet IDP discovery descriptor.", + "logoutUrl": "Endepunkt for avsluttende sesjon som brukes for å logge ut bruker fra ekstern IDP.", + "backchannelLogout": "Støtter ekstern IDP backchannel utlogging?", + "userInfoUrl": "Brukerinfo URLen. Denne er valgfri.", + "issuer": "Identifikator for utgiver av forespørselen. Hvis dette ikke er oppgitt vil ingen validering utføres.", + "scopes": "Scopes som sendes når du ber om autorisasjon. Dette kan være en liste med scopes separert med mellomrom. Standard er satt til 'openid'.", + "validateSignature": "Aktiver/deaktiver signaturvalidering av eksterne IDP signaturer.", + "storeTokens": "Aktiver/deaktiver hvis tokens må bli lagret etter at brukere har blitt autentisert.", + "storedTokensReadable": "Aktiver/deaktiver hvis nye brukere kan lese lagrede tokens. Dette tildeles broker.read-token rollen.", + "trustEmail": "Hvis aktivert vil ikke e-post levert av denne leverandøren bli verifisert selv om verifisering er aktivert for sikkerhetsdomenet.", + "firstBrokerLoginFlowAlias": "Alias for autentiseringsflyt, som trigges etter første innlogging med denne identitetsleverandøren. Begrepet 'Første innlogging' betyr at det ennå ikke eksisterer en Keycloak-konto koblet til den autentiserte kontoen til identitetsleverandøren.", + "useEntityDescriptor": "Importer metadata fra et eksternt IDP SAML entity descriptor.", + "samlEntityDescriptor": "Lar deg laste inn ekstern IDP metadata fra en konfigurasjonsfil eller ved å laste det ned fra en URL.", + "ssoServiceUrl": "URL som må brukes for å sende autentiseringsforespørsler (SAML AuthnRequest).", + "singleLogoutServiceUrl": "URL som må brukes for å sende utloggingsforespørsler.", + "httpPostBindingAuthnRequest": "Indikerer om AuthnRequests må bli sendt ved å bruke en HTTP-POST binding. Hvis satt til false, vil HTTP-REDIRECT binding bli brukt.", + "wantAuthnRequestsSigned": "Indikerer om identitetsleverandør forventer en signert AuthnRequest.", + "signatureAlgorithm": "Signaturalgoritmen som brukes for å signere et dokument.", + "forceAuthentication": "Indikerer om identitetsleverandør må autentisere presentatøren direkte i stedet for å stole på en tidligere sikkerhetskontekst.", + "validateSignatures": "Aktiver/deaktiver signaturvalidering av SAML svar.", + "validatingX509Certs": "Sertifikatet i PEM format som må brukes for å se etter signaturer.", + "addIdpMapperName": "Navn på mapper." +} \ No newline at end of file diff --git a/public/resources/no/identity-providers.json b/public/resources/no/identity-providers.json new file mode 100644 index 0000000000..9c47b48c18 --- /dev/null +++ b/public/resources/no/identity-providers.json @@ -0,0 +1,41 @@ +{ + "addIdPMapper": "Legg til identitetsleverandørmappere", + "redirectURI": "Redirect URI", + "clientId": "Klient-ID", + "clientSecret": "Klient secret", + "endpoints": "Endepunkter", + "alias": "Alias", + "ssoServiceUrl": "Single sign-on service URL", + "singleLogoutServiceUrl": "Single utloggingstjeneste URL", + "nameIdPolicyFormat": "Policy for nameid-format", + "email": "E-postadresse", + "unspecified": "uspesifisert", + "httpPostBindingResponse": "HTTP-POST binding svar", + "httpPostBindingAuthnRequest": "HTTP-POST binding for AuthnRequest", + "wantAuthnRequestsSigned": "Vil ha AuthnRequests signert", + "forceAuthentication": "Force autentisering", + "validatingX509Certs": "Validerer X509 sertifikat", + "authorizationUrl": "Autorisasjons URL", + "tokenUrl": "Token URL", + "logoutUrl": "Utloggings URL", + "backchannelLogout": "Backchannel utlogging", + "userInfoUrl": "Brukerinfo URL", + "issuer": "Utgiver", + "scopes": "Scope", + "prompt": "Prompt", + "prompts": { + "none": "Ingen", + "consent": "samtykke", + "login": "Innlogging" + }, + "clientAuthentication": "Autentisering av klient", + "validateSignature": "Valider signaturer", + "storeTokens": "Lagre Tokens", + "storedTokensReadable": "Lagrede lesbare tokens", + "trustEmail": "Stol på e-post", + "firstBrokerLoginFlowAlias": "Flyt for første innlogging", + "postBrokerLoginFlowAlias": "Post-påloggingsflyt", + "mapperType": "Mappertype", + "selectRole": "Velg rolle", + "userAttribute": "Brukerattributt" +} \ No newline at end of file diff --git a/public/resources/no/realm-settings-help.json b/public/resources/no/realm-settings-help.json new file mode 100644 index 0000000000..81dd45822e --- /dev/null +++ b/public/resources/no/realm-settings-help.json @@ -0,0 +1,23 @@ +{ + "requireSsl": "Kreves HTTPS? 'Ingen' betyr at HTTPS ikke kreves for noen klienters IP-adresse. 'Ekstern forespørsel' betyr at localhost og private IP-adresser kan få tilgang uten HTTPS. 'Alle forespørsler' betyr at HTTPS kreves for alle IP-adresser.", + "accountTheme": "Velg tema for brukerkontoadministrasjonssider.", + "adminConsoleTheme": "Velg et tema for administrasjonskonsollen.", + "emailTheme": "Velg tema for e-post sendt av server.", + "save-user-events": "Hvis aktivert vil innloggingshendelser bli lagret i databasen, noe som gjør hendelsene tilgjengelige for administrator og kontoadministrasjonskonsoll.", + "save-admin-events": "Hvis aktivert vil administratorhendelser bli lagret i databasen, som vil gjøre hendelsene tilgjengelige i administrasjonskonsollen.", + "expiration": "Setter utløpstid for hendelser. Utløpte hendelser vil med jevne mellomrom bli slettet fra databasen.", + "admin-clearEvents": "Sletter alle administratorhendelser i databasen.", + "includeRepresentation": "Inkluder JSON-representasjon for å skape og oppdatere forespørsler.", + "failureFactor": "Hvor mange feil før ventetid blir aktivert.", + "waitIncrementSeconds": "Når terskelen for feil er nådd, hvor lenge skal brukeren stenges ute?", + "maxFailureWaitSeconds": "Maksimum tid en bruker vil være stengt ute.", + "maxDeltaTimeSeconds": "Når vil teller for feil nullstilles?", + "quickLoginCheckMilliSeconds": "Hvis en feil skjer for raskt samtidig, steng brukeren ute.", + "minimumQuickLoginWaitSeconds": "Ventetid etter en hurtig innloggingsfeil.", + "ssoSessionIdle": "Tiden en sesjon er tillatt å være inaktiv før den utløper. Tokens og nettlesersesjoner vil bli ugyldig når en sesjon utløper.", + "ssoSessionMax": "Maksimum tid før en sesjon utløper. Tokens og nettlesersesjoner vil bli ugyldig når en sesjon utløper.", + "offlineSessionIdle": "Tiden en sesjon i frakoblet modus er tillatt å være inaktiv før den utløper. Du må bruke tokens for frakoblet modus for å oppdatere sesjonen minst en gang i denne perioden, ellers vil sesjonen utløpe.", + "revokeRefreshToken": "Hvis aktivert kan refresh token kun bli brukt en gang. Ellers vil refresh tokens kunne bli brukt flere ganger.", + "clientLoginTimeout": "Maksimum tid en klient har for å fullføre access token protokollen. Dette burde normalt være 1 minutt.", + "editUsername": "Dersom aktivert, er feltet for brukernavn redigerbart, ellers kun lesbart." +} \ No newline at end of file diff --git a/public/resources/no/realm-settings.json b/public/resources/no/realm-settings.json new file mode 100644 index 0000000000..8770e16ee3 --- /dev/null +++ b/public/resources/no/realm-settings.json @@ -0,0 +1,106 @@ +{ + "partialImport": "Delvis import", + "general": "Generelt", + "login": "Innlogging", + "themes": "Tema", + "events": "Hendelser", + "eventListeners": "Hendelseslyttere", + "eventListenersHelpText": "Konfigurer hvilke lyttere som skal motta eventer fra sikkerhetsdomenet.", + "adminEventsSettings": "Innstillinger for administratorhendelser", + "saveEvents": "Lagre hendelser", + "expiration": "Holdbarhet", + "clearAdminEvents": "Fjern administratorhendelser", + "includeRepresentation": "Inkluder representasjon", + "email": "E-postadresse", + "from": "Fra", + "host": "Vert", + "port": "Port", + "authentication": "Autentisering", + "enableSSL": "Aktiver SSL", + "enableStartTLS": "Aktiver StartTLS", + "username": "Brukernavn", + "password": "Passord", + "keyAlias": "Nøkkelalias", + "keyPassword": "Nøkkelpassord", + "providers": "Leverandører", + "consoleDisplayName": "Konsoll vis navn", + "type": "Type", + "providerId": "ID", + "provider": "Leverandør", + "certificate": "Sertifikat", + "userRegistration": "Registrering av bruker", + "userRegistrationHelpText": "Aktiver/deaktiver registreringssiden. En lenke for registrering vil være synlig på innloggingssiden.", + "rememberMe": "Husk meg", + "rememberMeHelpText": "Vis en avkryssingsboks på innloggingssiden som lar brukere forbli innlogget mellom omstart av nettleser og inntil sesjonen utløper.", + "emailAsUsername": "E-postadresse som brukernavn", + "verifyEmail": "Bekreft e-postadresse", + "editUsername": "Rediger brukernavn", + "testConnection": "Testkobling", + "htmlDisplayName": "HTML vis navn", + "requireSsl": "Krev SSL", + "sslType": { + "all": "Alle forespørsler", + "external": "Eksterne forespørsler", + "none": "Ingen" + }, + "endpoints": "Endepunkter", + "loginTheme": "Innloggingstema", + "accountTheme": "Kontotema", + "adminTheme": "Administrasjonskonsolltema", + "emailTheme": "E-posttema", + "sessions": "Sesjoner", + "SSOSessionIdle": "Inaktiv SSO sesjon", + "SSOSessionMax": "Maksimum SSO sesjon", + "offlineSessionIdle": "Inaktiv sesjon i frakoblet modus", + "loginTimeout": "Timeout for innlogging", + "loginActionTimeout": "Timeout for innloggingshandling.", + "revokeRefreshToken": "Fjern refresh token", + "accessTokenLifespan": "Levetid for access token", + "accessTokenLifespanImplicitFlow": "Access token-levetid for implicit flow", + "clientLoginTimeout": "Timeout av klientinnlogging", + "createPolicy": "Opprett policy", + "policies": "Policier", + "clientProfileDescription": "Beskrivelse", + "back": "Tilbake", + "save": "Lagre", + "tokens": "Tokens", + "attributes": "Attributter", + "supportedLocales": "Støttede lokaliteter", + "defaultLocale": "Standard lokalitet", + "user": "Bruker", + "validatorDialogColNames": { + "colName": "Rollenavn" + }, + "validatorColNames": { + "colConfig": "Konfig" + }, + "eventTypes": { + "IMPERSONATE": { + "name": "Utgi deg for å være bruker" + }, + "LOGOUT": { + "name": "Logg ut" + }, + "REGISTER": { + "name": "Registrer" + }, + "RESET_PASSWORD": { + "name": "Tilbakestill passord" + } + }, + "deleteEvents": "Fjern hendelser", + "defaultRoles": "Standardroller", + "defaultGroups": "Standardgrupper", + "securityDefences": "Sikkerhetsmekanismer", + "headers": "Headere", + "bruteForceDetection": "Deteksjon av Brute Force", + "xFrameOptions": "Alternativer for X-Frame", + "contentSecurityPolicy": "Sikkerhetspolicy for innhold", + "contentSecurityPolicyReportOnly": "Rapporterende sikkerhetspolicy for innhold", + "xContentTypeOptions": "Alternativer for X-innholdstyper", + "failureFactor": "Maksimum antall innloggingsfeil", + "waitIncrementSeconds": "økning av ventetid", + "maxFailureWaitSeconds": "Maksimum ventetid", + "maxDeltaTimeSeconds": "Tid for tilbakestilling av feil.", + "minimumQuickLoginWaitSeconds": "Minimum ventetid for hurtig innlogging" +} \ No newline at end of file diff --git a/public/resources/no/realm.json b/public/resources/no/realm.json new file mode 100644 index 0000000000..88698af557 --- /dev/null +++ b/public/resources/no/realm.json @@ -0,0 +1,3 @@ +{ + "enabled": "Aktivert" +} \ No newline at end of file diff --git a/public/resources/no/roles.json b/public/resources/no/roles.json new file mode 100644 index 0000000000..cde61f3dac --- /dev/null +++ b/public/resources/no/roles.json @@ -0,0 +1,13 @@ +{ + "associatedRolesText": "Assosierte roller", + "title": "Sikkerhetsdomeneroller", + "addRole": "Legg til rolle", + "roleName": "Rollenavn", + "composite": "Sammensatt", + "addUser": "Legg til bruker", + "users": "Brukere", + "userName": "Brukernavn", + "email": "E-postadresse", + "lastName": "Etternavn", + "firstName": "Fornavn" +} \ No newline at end of file diff --git a/public/resources/no/sessions.json b/public/resources/no/sessions.json new file mode 100644 index 0000000000..837092ac2e --- /dev/null +++ b/public/resources/no/sessions.json @@ -0,0 +1,10 @@ +{ + "title": "Sesjoner", + "lastAccess": "Sist aksessert", + "revocation": "Oppheving", + "notBefore": "Ikke før", + "setToNow": "Sett til nå", + "clear": "Tøm", + "push": "Send", + "none": "Ingen" +} \ No newline at end of file diff --git a/public/resources/no/user-federation-help.json b/public/resources/no/user-federation-help.json new file mode 100644 index 0000000000..c65a573945 --- /dev/null +++ b/public/resources/no/user-federation-help.json @@ -0,0 +1,12 @@ +{ + "vendorHelp": "LDAP leverandør (provider)", + "consoleDisplayConnectionUrlHelp": "Tilkoblings URL din til LDAP-server", + "bindCredentialsHelp": "Passord for LDAP administrator", + "editModeLdapHelp": "READ_ONLY er et skrivebeskyttet LDAP-lager. WRITABLE betyr at data vil bli synkronisert tilbake til LDAP på forespørsel. UNSYNCED betyr at brukerdata vil bli importert, men vil ikke bli synkronisert tilbake til LDAP.", + "fullSyncPeriodHelp": "Periode for fullstendig synkronisering i sekunder", + "changedUsersSyncHelp": "Tidsperiode for synkronisering av endrede eller nylig opprettede LDAP-brukere i sekunder.", + "trustEmailHelp": "Hvis aktivert vil ikke e-post levert av denne leverandøren bli verifisert selv om verifisering er aktivert for sikkerhetsdomenet.", + "debugHelp": "Aktiver/deaktiver logging av feilsøking til standard output for Krb5LoginModule.", + "allowPasswordAuthenticationHelp": "Aktiver/deaktivert muligheten for autentisering med brukernavn/passord mot databasen til Kerberos", + "updateFirstLoginHelp": "Oppdater profil ved første innlogging" +} \ No newline at end of file diff --git a/public/resources/no/user-federation.json b/public/resources/no/user-federation.json new file mode 100644 index 0000000000..e60c515352 --- /dev/null +++ b/public/resources/no/user-federation.json @@ -0,0 +1,36 @@ +{ + "userFederation": "Brukerfederering", + "consoleDisplayName": "Konsoll vis navn", + "vendor": "Leverandør", + "connectionURL": "Tilkoblings URL", + "enableStartTls": "Aktiver StartTLS", + "useTruststoreSpi": "Bruk Truststore SPI", + "connectionPooling": "Connection Pooling", + "bindType": "Autentiseringstype", + "bindDn": "Bind DN", + "editMode": "Redigeringsmodus", + "usersDN": "DN-brukere", + "usernameLdapAttribute": "Brukernavn LDAP-attributt", + "rdnLdapAttribute": "RDN LDAP-attributt", + "uuidLdapAttribute": "UUID LDAP-attributt", + "userObjectClasses": "Brukerobjektklasser", + "searchScope": "Scope for søk", + "pagination": "Paginering", + "batchSize": "Batch størrelse", + "periodicFullSync": "Fullstendig periodisk synkronisering", + "fullSyncPeriod": "Fullstendig synkroniseringsperiode", + "periodicChangedUsersSync": "Periodisk synkronisering av endrede brukere", + "changedUsersSyncPeriod": "Synkroniseringsperiode for endrede brukere", + "kerberosIntegration": "Kerberos Integrasjon", + "allowKerberosAuthentication": "Tillat autentisering med Kerberos", + "useKerberosForPasswordAuthentication": "Bruk Kerberos for autentisering av passord", + "trustEmail": "Stol på e-post", + "requiredSettings": "Påkrevde innstillinger", + "kerberosRealm": "Sikkerhetsdomene for Kerberos", + "serverPrincipal": "Server principal", + "debug": "Feilsøking", + "allowPasswordAuthentication": "Tillat autentisering med passord", + "testAuthentication": "Testautentisering", + "ldapFilter": "LDAP filter", + "selectRole": "Velg rolle" +} \ No newline at end of file diff --git a/public/resources/no/users-help.json b/public/resources/no/users-help.json new file mode 100644 index 0000000000..9e694ba7c8 --- /dev/null +++ b/public/resources/no/users-help.json @@ -0,0 +1,6 @@ +{ + "temporaryLocked": "Brukeren kan ha blitt låst på grunn av at innloggingsforsøk har feilet for mange ganger.", + "emailVerified": "Har brukerens e-post blitt verifisert?", + "requiredUserActions": "Krev en handling når brukeren logger inn. 'Verifiser e-post' sender en e-post til brukeren for å verifisere deres e-postadresse. 'Oppdater profil' krever at bruker legger inn personlig informasjon. 'Oppdater passord' krever at bruker skriver inn et nytt passord. 'Konfigurer OTP' krever installasjon av en passordgenerator for mobil.", + "groups": "Gruppen som brukeren er medlem av. Velg en gruppe på listen og klikk på 'Forlat' for å forlate gruppen." +} \ No newline at end of file diff --git a/public/resources/no/users.json b/public/resources/no/users.json new file mode 100644 index 0000000000..b4b8393c5e --- /dev/null +++ b/public/resources/no/users.json @@ -0,0 +1,31 @@ +{ + "title": "Brukere", + "join": "Bli med", + "leave": "Forlat", + "groupMembership": "Gruppemedlemskap", + "createdAt": "Opprettet ved", + "username": "Brukernavn", + "email": "E-postadresse", + "emailVerified": "E-post verifisert", + "lastName": "Etternavn", + "firstName": "Fornavn", + "requiredUserActions": "Påkrevde brukerhandlinger", + "addUser": "Legg til bruker", + "impersonate": "Utgi deg for å være bruker", + "verifyEmail": "Bekreft e-postadresse", + "consents": "Samtykke", + "identityProvider": "Identitetsleverandør", + "identityProviderLinks": "Lenker til identitetsleverandør", + "revoke": "Opphev", + "save": "Lagre", + "credentialType": "Type", + "password": "Passord", + "passwordConfirmation": "Passord bekreftelse", + "resetPassword": "Tilbakestill passord", + "showPasswordDataValue": "Verdi", + "resetActions": "Tilbakestill handlinger", + "hours": "Timer", + "minutes": "Minutter", + "seconds": "Sekunder", + "credentialResetConfirm": "Send e-post" +} \ No newline at end of file diff --git a/public/resources/pl/authentication-help.json b/public/resources/pl/authentication-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/authentication-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/authentication.json b/public/resources/pl/authentication.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/authentication.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/client-scopes-help.json b/public/resources/pl/client-scopes-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/client-scopes-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/client-scopes.json b/public/resources/pl/client-scopes.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/client-scopes.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/clients-help.json b/public/resources/pl/clients-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/clients-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/clients.json b/public/resources/pl/clients.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/clients.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/common-help.json b/public/resources/pl/common-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/common-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/common.json b/public/resources/pl/common.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/common.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/dashboard.json b/public/resources/pl/dashboard.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/dashboard.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/dynamic.json b/public/resources/pl/dynamic.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/dynamic.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/events.json b/public/resources/pl/events.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/events.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/groups.json b/public/resources/pl/groups.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/groups.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/identity-providers-help.json b/public/resources/pl/identity-providers-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/identity-providers-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/identity-providers.json b/public/resources/pl/identity-providers.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/identity-providers.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/realm-settings-help.json b/public/resources/pl/realm-settings-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/realm-settings-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/realm-settings.json b/public/resources/pl/realm-settings.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/realm-settings.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/realm.json b/public/resources/pl/realm.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/realm.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/roles.json b/public/resources/pl/roles.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/roles.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/sessions.json b/public/resources/pl/sessions.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/sessions.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/user-federation-help.json b/public/resources/pl/user-federation-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/user-federation-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/user-federation.json b/public/resources/pl/user-federation.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/user-federation.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/users-help.json b/public/resources/pl/users-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/users-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pl/users.json b/public/resources/pl/users.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pl/users.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pt-BR/authentication-help.json b/public/resources/pt-BR/authentication-help.json new file mode 100644 index 0000000000..5515ed224d --- /dev/null +++ b/public/resources/pt-BR/authentication-help.json @@ -0,0 +1,9 @@ +{ + "flowType": "What kind of form is it", + "topLevelFlowType": "What kind of top level flow is it? Type 'client' is used for authentication of clients (applications) when generic is for users and everything else", + "alias": "Name of the configuration", + "otpType": "totp is Time-Based One Time Password. 'hotp' is a counter base one time password in which the server keeps a counter to hash against.", + "otpHashAlgorithm": "What hashing algorithm should be used to generate the OTP.", + "otpPolicyDigits": "How many digits should the OTP have?", + "otpPolicyPeriod": "How many seconds should an OTP token be valid? Defaults to 30 seconds." +} \ No newline at end of file diff --git a/public/resources/pt-BR/authentication.json b/public/resources/pt-BR/authentication.json new file mode 100644 index 0000000000..951791ffb7 --- /dev/null +++ b/public/resources/pt-BR/authentication.json @@ -0,0 +1,35 @@ +{ + "title": "Autenticação", + "flows": "Fluxos", + "requiredActions": "Ações requeridas", + "policies": "Políticas", + "passwordPolicy": "Política de senha", + "otpPolicy": "Política OTP", + "otpType": "Tipo OTP", + "policyType": { + "totp": "Baseado em tempo", + "hotp": "Baseado em contador" + }, + "otpHashAlgorithm": "Algoritmo de hash OTP", + "otpPolicyDigits": "Quantidade de dígitos", + "lookAhead": "Look Ahead Window", + "otpPolicyPeriod": "Período de token OTP ", + "initialCounter": "Contador inicial", + "attestationPreference": { + "none": "Nenhum" + }, + "flow": { + "browserFlow": "Fluxo de browser", + "registrationFlow": "Fluxo de registro", + "directGrantFlow": "Fluxo de Direct Grant" + }, + "edit": "Editar", + "flowType": "Flow Type", + "flow-type": { + "basic-flow": "genérico", + "form-flow": "formulário" + }, + "addExecution": "Adicionar execução", + "requirement": "Condição", + "alias": "Alias" +} \ No newline at end of file diff --git a/public/resources/pt-BR/client-scopes-help.json b/public/resources/pt-BR/client-scopes-help.json new file mode 100644 index 0000000000..2455b4460c --- /dev/null +++ b/public/resources/pt-BR/client-scopes-help.json @@ -0,0 +1,10 @@ +{ + "name": "Nome do modelo de cliente. Deve ser único neste Realm.", + "description": "Descrição do modelo de cliente.", + "protocol": "Qual configuração de protocolo SSO será provida por este modelo de cliente.", + "prefix": "Um prefixo para cada Realm Role (opcional).", + "multiValued": "Indica se um atributo suporta múltiplos valores. Se verdadeiro, então a lista de todos os valores desse atributo será definida como o claim. Se falso, então apenas o primeiro valor será utilizado.", + "tokenClaimName": "Nome do claim para inserir no token. Pode ser um nome completo (fully qualified) como 'address.street'. Neste caso, um objeto json aninhado será criado.", + "claimJsonType": "Tipo JSON que deve ser utilizado para popular o claim json no token. Os valores válidos são Long, int boolean e String.", + "protocolMapper": "Protocolo..." +} \ No newline at end of file diff --git a/public/resources/pt-BR/client-scopes.json b/public/resources/pt-BR/client-scopes.json new file mode 100644 index 0000000000..24f15f7ab3 --- /dev/null +++ b/public/resources/pt-BR/client-scopes.json @@ -0,0 +1,8 @@ +{ + "protocol": "Protocolo", + "type": "Tipo", + "realmRolePrefix": "Prefixo do Realm Role", + "realmRoles": "Roles do Realm", + "clients": "Clientes", + "scope": "Escopo" +} \ No newline at end of file diff --git a/public/resources/pt-BR/clients-help.json b/public/resources/pt-BR/clients-help.json new file mode 100644 index 0000000000..3095f050ef --- /dev/null +++ b/public/resources/pt-BR/clients-help.json @@ -0,0 +1,79 @@ +{ + "clientType": "'OpenID connect' permite aos Clientes verificarem a identidade do usuário final baseado na autenticação realizada por um servidor de Autorização. 'SAML' permite cenários de autenticação e autorização web-based incluindo cross-domain single sign-on (SSO) e utiliza tokens de segurança contendo assertions para trafegar informações.", + "serviceAccount": "Permite autenticar este cliente no Keycloak e recuperar tokens de acesso dedicados para este cliente. Em termos da especificações OAuth2, habilita suporte para 'Client Credentials Grants' para este cliente.", + "authorization": "Enable/Disable fine-grained authorization support for a client", + "directAccess": "Habilita o suporte para concessões de acesso direto (Direct Access Grants), o que significa que o cliente tem acesso ao nome de usuário/senha e negocia diretamente com o servidor Keycloak pelo token de acesso. Em termos de especificações OAuth2, habilita suporte de \"Resource Owner Password Credentials Grant\" para este cliente.", + "standardFlow": "Isto habilita a autenticação baseada em redirecionamento com código de autorização padrão do OpenID Connect. Em termos de especificações OpenID Connect ou OAuth2, isto habilita suporte ao 'Fluxo de Código de Autorização' para este cliente.", + "implicitFlow": "Isto habilita suporte a autenticação baseada em redirecionamento sem código de autorização. Em tempos de especificações OpenID Connect ou OAuth2, isto habilita suporte do 'Fluxo Implícito' para este cliente.", + "rootURL": "URL raiz adicionada à URLs relativas", + "validRedirectURIs": "Padrão de URI válido para onde um navegador pode redirecionar depois de um login bem-sucedido ou sair. Wildcards simples são permitidos, por exemplo 'http://example.com/*'. Caminhos relativos podem ser especificados também, ex: /my/relative/path/*. Caminhos relativos são relativos à URL raiz do cliente, ou se nenhum for especificado a URL raiz do servidor é usado. Para SAML, é necessário definir padrões de URI válidos se você está contando com a URL do serviço consumidor incorporada com a solicitação de login.", + "nameIdFormat": "O formato de Name ID para utilizar como assunto.", + "forceNameIdFormat": "Ignora o NameID de assunto solicitado e utiliza o configurado no console de administração.", + "forcePostBinding": "Sempre utilizar POST para respostas.", + "includeAuthnStatement": "Deve ser adicionado um statement especificando o método e timestamp nas respostas de login?", + "signDocuments": "Devem os documentos SAML serem assinados pelo realm?", + "signAssertions": "Devem as asserções dentro dos documentos SAML serem assinadas? Esta configuração não é necessária se o documento já está sendo assinado.", + "signatureAlgorithm": "O algoritmo de assinatura a ser utilizado para assinar documentos.", + "canonicalization": "Canonicalization Method para assinaturas XML.", + "webOrigins": "Permitir origens CORS. Para permitir todas as URIs de redirecionamento de origem válidas adicionar '+'. Para permitir todas as origens adicionar '*'.", + "homeURL": "URL padrão para utilizar quando o servidor de autenticação necessita redirecionar ou linkar para o cliente.", + "adminURL": "URL para a inteface administrativa do cliente. Defina este valor se o cliente suporta a API do adaptador REST. Esta API rest permite que o servidor de autenticação envie políticas de revogação e outras tarefas administrativas. Geralmente este valor é definido apontando para a URL base do cliente.", + "client": "Select the client making this authorization request. If not provided, authorization requests would be done based on the client you are in.", + "clientId": "Especifica o ID referenciado em URI e tokens. Por exemplo 'meu-cliente'. Para SAML também representa o valor do emissor esperado dos authn requests", + "selectUser": "Select an user whose identity is going to be used to query permissions from the server.", + "roles": "Select the roles you want to associate with the selected user.", + "contextualAttributes": "Any attribute provided by a running environment or execution context.", + "applyToResourceType": "Specifies if this permission would be applied to all resources with a given type. In this case, this permission will be evaluated for all instances of a given resource type.", + "resources": "Specifies that this permission must be applied to a specific resource instance.", + "scopesSelect": "Define que esta permissões deve ser aplicada para um ou mais escopos.", + "clientName": "Especifica o nome de exibição do cliente. Por exemplo 'Meu Cliente'. Também aceita chaves para valores localizados. Por exemplo: ${meu_cliente}", + "description": "Especifica a descrição do cliente. Por exemplo 'Meu cliente para TimeSheets'. Também aceita chaves para valores localizados. Por exemplo: ${meu_cliente_descricao}", + "loginTheme": "Selecione o tema para páginas de login, OTP, grant, cadastro e recuperar senha.", + "encryptAssertions": "Devem as asserções SAML serem encriptadas com a chave pública do cliente usando AES?", + "clientSignature": "O cliente irá assinar os pedidos e respostas saml? E eles devem ser validados?", + "expiration": "Especifica por quanto tempo o token deve ser válido", + "count": "Especifica quantos clientes podem ser criados usando o token", + "client-authenticator-type": "Autenticador de Cliente usado para autenticar este cliente ao servidor Keycloak", + "registration-access-token": "O token de acesso para registro provê acesso aos cliente para o serviço de registro cliente.", + "nodeReRegistrationTimeout": "Intervalo para especificar o tempo máximo para nós clientes de cluster registrados se re-registrarem. Se os nós do cluster não enviarem solicitações de re-registro dentro deste intervalo eles serão deregistrados do Keycloak.", + "idpInitiatedSsoUrlName": "Nome do fragmento URL para referenciar o cliente quando você deseja um SSO iniciado por IDP. Deixar este campo vazio irá desabilitar SSO iniciado por IDP. A URL que você irá referenciar do seu browser será: {server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}", + "idpInitiatedSsoRelayState": "O estado de Relay que você deseja enviar com um pedido SAML quando você deseja realizar SSO iniciado por IDP.", + "masterSamlProcessingUrl": "Se configurado, esta URL será utilizada para todos os bindings do \"SP's Assertion Consumer\" e \"Single Logout Services\". Ela pode ser sobreescriva idnvidualmente para cada ligação e serviço na Configuração Detalhada do Endpoint SAML.", + "accessTokenLifespan": "Tempo máximo antes que um token de acesso expire. Recomenda-se que este valor seja menor em relação ao tempo de inativação do inativação do SSO.", + "assertionConsumerServicePostBindingURL": "URL de ligação SAML via post para as asserções de consumidor de serviços do cliente (respostas de login). Você pode deixar este campo em branco se você não tiver uma URL para esta ligação.", + "assertionConsumerServiceRedirectBindingURL": "URL de ligação SAML de redirecionamento para as asserções de consumidor de serviços do cliente (respostas de login). Você pode deixar este campo em branco se você não tiver uma URL para esta ligação.", + "logoutServicePostBindingURL": "URL de conexão POST para o serviço de logout", + "logoutServiceRedirectBindingURL": "URL de ligação SAML de redirecionamento para o serviço de logout único do cliente. Voce pode deixar este campo em branco s e estiver usando uma ligação diferente.", + "frontchannelLogout": "Quando marcado, o logout requer um redirecionamento do browser para o cliente. Caso contrário o servidor executo uma invocação em background para o logout.", + "browserFlow": "Select the flow you want to use for browser authentication.", + "directGrant": "Select the flow you want to use for direct grant authentication.", + "certificate": "Certificado do cliente para validar JWT emitidos pelo cliente e assinados pela chave privada do cliente da sua keystore.", + "archiveFormat": "Keystore Java ou arquivo em formato PKCS12.", + "keyAlias": "Alias do arquivo para sua chave privada e certificado.", + "keyPassword": "Senha para acessar a chave privada no certificado.", + "storePassword": "Senha para acessar o arquivo em si.", + "consentRequired": "Se habilitado os usuários devem consentir com o acesso ao cliente.", + "import": "Import a JSON file containing authorization settings for this resource server.", + "policyEnforcementMode": "The policy enforcement mode dictates how policies are enforced when evaluating authorization requests. 'Enforcing' means requests are denied by default even when there is no policy associated with a given resource. 'Permissive' means requests are allowed even when there is no policy associated with a given resource. 'Disabled' completely disables the evaluation of policies and allow access to any resource.", + "allowRemoteResourceManagement": "Should resources be managed remotely by the resource server? If false, resources can only be managed from this admin console.", + "resourceName": "An unique name for this resource. The name can be used to uniquely identify a resource, useful when querying for a specific resource.", + "type": "The type of this resource. It can be used to group different resource instances with the same type.", + "uris": "An URI that can also be used to uniquely identify this resource.", + "scopes": "The scopes associated with this resource.", + "fullScopeAllowed": "Permite a você desabilitar todas as restrições.", + "resetActions": "Set of actions to execute when sending the user a Reset Actions Email. 'Verify email' sends an email to the user to verify their email address. 'Update profile' requires user to enter in new personal information. 'Update password' requires user to enter in a new password. 'Configure OTP' requires setup of a mobile password generator.", + "scopeName": "An unique name for this scope. The name can be used to uniquely identify a scope, useful when querying for a specific scope.", + "policy-name": "The name of this policy.", + "policy-description": "A description for this policy.", + "policyDecisionStagey": "The decision strategy dictates how the policies associated with a given policy are evaluated and how a final decision is obtained. 'Affirmative' means that at least one policy must evaluate to a positive decision in order to the overall decision be also positive. 'Unanimous' means that all policies must evaluate to a positive decision in order to the overall decision be also positive. 'Consensus' means that the number of positive decisions must be greater than the number of negative decisions. If the number of positive and negative is the same, the final decision will be negative.", + "applyPolicy": "Specifies all the policies that must be applied to the scopes defined by this policy or permission.", + "policyGroups": "Specifies which user(s) are allowed by this policy.", + "policyRoles": "Especifica quais role(s) do *cliente* são permitidos por esta política.", + "startTime": "Defines the time before which the policy MUST NOT be granted. Only granted if current date/time is after or equal to this value.", + "expireTime": "Defines the time after which the policy MUST NOT be granted. Only granted if current date/time is before or equal to this value.", + "policyCode": "The JavaScript code providing the conditions for this policy.", + "logic": "The logic dictates how the policy decision should be made. If 'Positive', the resulting effect (permit or deny) obtained during the evaluation of this policy will be used to perform a decision. If 'Negative', the resulting effect will be negated, in other words, a permit becomes a deny and vice-versa.", + "permissionName": "The name of this permission.", + "permissionDescription": "A description for this permission.", + "permissionType": "Specifies that this permission must be applied to all resources instances of a given type." +} \ No newline at end of file diff --git a/public/resources/pt-BR/clients.json b/public/resources/pt-BR/clients.json new file mode 100644 index 0000000000..45b89e5263 --- /dev/null +++ b/public/resources/pt-BR/clients.json @@ -0,0 +1,117 @@ +{ + "protocol": "Protocolo", + "copy": "Copiar", + "clientAuthorization": "Autorização", + "importClient": "Importar cliente", + "adminURL": "URL do administrador", + "formatOption": "Formato", + "encryptAssertions": "Encriptar Assertions", + "clientSignature": "Assinatura do cliente requerida", + "credentials": "Credenciais", + "roles": "Roles", + "addClientScope": "Adicionar modelo de cliente", + "fullScopeAllowed": "Permitir Escopo completo", + "selectAUser": "Selecione um usuário", + "client": "cliente", + "evaluate": "Avaliar", + "reevaluate": "Re-avaliar", + "showAuthData": "Exibir dados da autorização", + "unanimous": "Unânime", + "affirmative": "Afirmativa", + "consensus": "Consensual", + "authScopes": "Autorização de escopos", + "anyResource": "Qualquer recurso", + "anyScope": "Qualquer escopo", + "selectScope": "Selecione um escopo", + "applyToResourceType": "Aplicar ao tipo de recurso", + "contextualInfo": "Informação contextual", + "contextualAttributes": "Atributos contextuais", + "kc": { + "realm": { + "name": "Realm" + } + }, + "password": "Senha", + "settings": "Configurações", + "policyEnforcementMode": "Modo de execução da política", + "policyEnforcementModes": { + "ENFORCING": "Restritiva", + "PERMISSIVE": "Permissiva" + }, + "decisionStrategy": "Estratégia de decisão", + "type": "Tipo", + "iconUri": "URI do ícone", + "allowRemoteResourceManagement": "Administração remota de recursos", + "resources": "Recursos", + "resource": "Recurso", + "allTypes": "Todos os tipos", + "scope": "Escopo", + "owner": "Proprietário", + "scopes": "Escopos", + "policies": "Políticas", + "createPermission": "Criar permissão", + "identityInformation": "Informação de identidade", + "resourceType": "Tipo de recurso", + "createPolicy": "Criar política", + "applyPolicy": "Aplicar política", + "users": "Usuários", + "code": "Código", + "logic": "Lógica", + "logicType": { + "positive": "Positiva", + "negative": "Negativa" + }, + "user": "Usuário", + "clientList": "Clientes", + "initialAccessToken": "Token de acesso inicial", + "expires": "Expira em", + "count": "Quantidade", + "remainingCount": "Quantidade restante", + "expiration": "Duração", + "clientAuthentication": "Autenticação do cliente", + "authentication": "Autenticação", + "realmRoles": "Roles do Realm", + "frontchannelLogout": "Front Channel Logout", + "validRedirectUri": "URIs de redirecionamento válidas", + "idpInitiatedSsoRelayState": "Estado de relay para SSO iniciado via IDP", + "masterSamlProcessingUrl": "URL de processamento SAML principal", + "nameIdFormat": "Formato do NameID", + "forceNameIdFormat": "Forçar formato do NameID", + "forcePostBinding": "Forçar Binding via POST", + "includeAuthnStatement": "Incluir AuthnStatement", + "signDocuments": "Assinar documentos", + "signAssertions": "Assinar assertions", + "canonicalization": "Método de Canonicalization ", + "loginTheme": "Tema de login", + "clientAuthenticator": "Autenticador do cliente", + "clientSecret": "Secret do Cliente", + "registrationAccessToken": "Token de acesso para registro", + "revocation": "Revogação", + "notBefore": "Não antes de", + "setToNow": "Definir como agora", + "addNode": "Adicionar nó", + "push": "Enviar", + "clear": "Limpar", + "nodeReRegistrationTimeout": "Tempo limite para re-registro de nó", + "registeredClusterNodes": "Nós de cluster registrados", + "nodeHost": "Host", + "lastRegistration": "Último registro", + "testClusterAvailability": "Testar disponibilidade do cluster", + "registerNodeManually": "Registrar nó manualmente", + "fineGrainSamlEndpointConfig": "Configuração de endpoint para configuração fina do SAML ", + "assertionConsumerServicePostBindingURL": "URL para conexão post para o serviço consumidor de Assertions", + "assertionConsumerServiceRedirectBindingURL": "URL para conexão de redirecionamento do serviço consumidor de Assertions", + "logoutServicePostBindingURL": "URL de conexão POST para o serviço de logout", + "logoutServiceRedirectBindingURL": "URL de conexão para o redirecionamento do serviço de logout", + "accessTokenLifespan": "Duração do Token de Acesso", + "browserFlow": "Fluxo de browser", + "directGrant": "Fluxo de Direct Grant", + "certificate": "Certificado", + "generateNewKeys": "Gerar novas chaves", + "archiveFormat": "Formato do arquivo", + "keyAlias": "Alias da chave", + "keyPassword": "Senha da chave", + "storePassword": "Salvar senha", + "importFile": "Importar arquivo", + "mappers": "Mapeamentos" +} \ No newline at end of file diff --git a/public/resources/pt-BR/common-help.json b/public/resources/pt-BR/common-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/pt-BR/common-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/pt-BR/common.json b/public/resources/pt-BR/common.json new file mode 100644 index 0000000000..821bd93682 --- /dev/null +++ b/public/resources/pt-BR/common.json @@ -0,0 +1,57 @@ +{ + "add": "Adicionar", + "create": "Criar", + "save": "Salvar", + "continue": "Continuar", + "remove": "Remover", + "key": "Chave", + "value": "Valor", + "back": "Voltar", + "export": "Exportar", + "action": "Ações", + "download": "Download", + "clear": "Limpar", + "edit": "Editar", + "enabled": "Habilitado", + "none": "Nenhum", + "signOut": "Sign Out", + "manageAccount": "Administrar a conta", + "serverInfo": "Informação do servidor", + "testConnection": "Testar conexão", + "description": "Descrição", + "type": "Tipo", + "category": "Categoria", + "priority": "Prioridade", + "allTypes": "Todos os tipos", + "manage": "Administração", + "clients": "Clientes", + "realmRoles": "Roles do Realm", + "users": "Usuários", + "sessions": "Sessões", + "events": "Eventos", + "mappers": "Mapeamentos", + "permissions": "Permissões", + "configure": "Configuração", + "realmSettings": "Configurações do Realm", + "authentication": "Autenticação", + "identityProviders": "Provedores de identificação", + "userFederation": "Federação de usuários", + "settings": "Configurações", + "details": "Detalhes", + "times": { + "seconds": "Segundos", + "minutes": "Minutos", + "hours": "Horas", + "days": "Dias" + }, + "attributes": "Atributos", + "credentials": "Credenciais", + "clientId": "ID do cliente", + "id": "ID", + "mapperType": "Tipo de mapeamento", + "leave": "Sair", + "password": "Senha", + "passwordConfirmation": "Confirmação de senha", + "temporaryPassword": "Temporária", + "temporaryPasswordHelpText": "If enabled user is required to change password on next login" +} \ No newline at end of file diff --git a/public/resources/pt-BR/dashboard.json b/public/resources/pt-BR/dashboard.json new file mode 100644 index 0000000000..426eb7e445 --- /dev/null +++ b/public/resources/pt-BR/dashboard.json @@ -0,0 +1,3 @@ +{ + "serverInfo": "Informação do servidor" +} \ No newline at end of file diff --git a/public/resources/pt-BR/dynamic.json b/public/resources/pt-BR/dynamic.json new file mode 100644 index 0000000000..845ccf8328 --- /dev/null +++ b/public/resources/pt-BR/dynamic.json @@ -0,0 +1,64 @@ +{ + "selectARole": "Selecione um role", + "usermodel": { + "prop": { + "label": "Propriedade", + "tooltip": "Nome do método da propriedade na interface UserModel. Por exemplo, o valor 'email' iria referenciar o método UserModel.getEmail() ." + }, + "attr": { + "label": "Atributo do usuário", + "tooltip": "Nome do atributo do usuário que é uma chave de atributo no mapa UserModel.attribute." + }, + "clientRoleMapping": { + "client": { + "label": "ID do cliente", + "tooltip": "ID do cliente para mapeamentos de roles" + }, + "rolePrefix": { + "label": "Prefixo para o role de Cliente", + "tooltip": "Um prefixo para cada role do cliente (opcional)" + } + }, + "realmRoleMapping": { + "rolePrefix": { + "label": "Prefixo do Realm Role", + "tooltip": "Um prefixo para cada Realm Role (opcional)." + } + } + }, + "userSession": { + "modelNote": { + "label": "Nota da sessão de usuário", + "tooltip": "Nome da nota de sessão do usuário salva no mapa UserSessionModel.note." + } + }, + "multivalued": { + "label": "Múltiplos valores", + "tooltip": "Indica se um atributo suporta múltiplos valores. Se verdadeiro, então a lista de todos os valores desse atributo será definida como o claim. Se falso, então apenas o primeiro valor será utilizado." + }, + "selectRole": { + "label": "Selecione o Role", + "tooltip": "Entre com o role na caixa à esquerda, ou clique neste botão para navegar e selecionar o role desejado." + }, + "tokenClaimName": { + "label": "Nome do Token Claim", + "tooltip": "Nome do claim para inserir no token. Pode ser um nome completo (fully qualified) como 'address.street'. Neste caso, um objeto json aninhado será criado." + }, + "jsonType": { + "label": "Tipo JSON do Claim", + "tooltip": "Tipo JSON que deve ser utilizado para popular o claim json no token. Os valores válidos são Long, int boolean e String." + }, + "includeInIdToken": { + "label": "Adicionar ao token de ID", + "tooltip": "O claim deve ser adicionado ao token de ID?" + }, + "includeInAccessToken": { + "label": "Adicionar ao token de acesso", + "tooltip": "O claim deve ser adicionado ao token de acesso?" + }, + "includeInUserInfo": { + "label": "Adicionar à informação do usuário", + "tooltip": "O claim deve ser adicionado à informação do usuário?" + }, + "name-id-format": "Formato do NameID" +} \ No newline at end of file diff --git a/public/resources/pt-BR/events.json b/public/resources/pt-BR/events.json new file mode 100644 index 0000000000..9824933ee1 --- /dev/null +++ b/public/resources/pt-BR/events.json @@ -0,0 +1,19 @@ +{ + "title": "Eventos", + "adminEvents": "Eventos de adminstração", + "time": "Tempo", + "user": "Usuário", + "username": "Usuário", + "email": "E-mail", + "eventType": "Tipo de evento", + "ipAddress": "Endereço IP", + "client": "cliente", + "realm": "Realm", + "resourcePath": "Path do recurso", + "resourceType": "Tipo de recurso", + "operationType": "Tipo de operação", + "operationTypes": "Tipos de operações", + "auth": "Autenticação", + "value": "Valor", + "representation": "Representação" +} \ No newline at end of file diff --git a/public/resources/pt-BR/groups.json b/public/resources/pt-BR/groups.json new file mode 100644 index 0000000000..1b3427f090 --- /dev/null +++ b/public/resources/pt-BR/groups.json @@ -0,0 +1,9 @@ +{ + "createGroup": "Criar grupo", + "members": "Membros", + "create": "Criar", + "email": "E-mail", + "lastName": "Sobrenome", + "firstName": "Primeiro nome", + "attributes": "Atributos" +} \ No newline at end of file diff --git a/public/resources/pt-BR/identity-providers-help.json b/public/resources/pt-BR/identity-providers-help.json new file mode 100644 index 0000000000..3f9305eea8 --- /dev/null +++ b/public/resources/pt-BR/identity-providers-help.json @@ -0,0 +1,29 @@ +{ + "redirectURI": "A url de redirecionamento para usar quando da configuração do provedor de identidade.", + "alias": "O alias é o identificador único de um provedor de identidade e também é utilizado para construir a uri de redirecionamento.", + "clientId": "O identificador do cliente registrado com o provedor de identificação.", + "clientSecret": "A senha do cliente registrado junto ao provedor de identificação.", + "discoveryEndpoint": "Importar metadata de um descritor de descoberta remoto do IDP.", + "importConfig": "Importar metadata fr um descritor de descoberta baixado do IDP.", + "logoutUrl": "'End session endpoint' para utilizar para realizar logour dos usuários do IDP externo.", + "backchannelLogout": "O IDP externo suporta logou via backchannel?", + "userInfoUrl": "A Url de informações de usuário. Opcional.", + "issuer": "O identificador de emissor para o emissor da resposta. Se não for provido nenhuma validação será realizada.", + "scopes": "Os escopos que serão enviados ao solicitar autorização. Pode ser uma lista de escopos separadas por espaço. Valor padrão é 'openid'.", + "validateSignature": "Habilita/Desabilita a validação de assinatura de IDP externo.", + "storeTokens": "Habilita/desabilita se os tokens deve ser guardados depois de autenticar os usuários.", + "storedTokensReadable": "Habilita/desabilita se novos usuários podem ler quaisquer tokens salvo. Isto irá adicionar o role broker.read-token.", + "trustEmail": "Se habilitado então o e-mail provido por este provedor não será verificado mesmo que a verificação esteja habilitada para este realm.", + "firstBrokerLoginFlowAlias": "Alias do fluxo de autenticação que será invocado depois do primeiro login com este provedor de identificação. O termo 'Primeiro Login' significa que ainda não existe uma conta no Keycloak ligada a esta conta autenticada neste provedor.", + "useEntityDescriptor": "Importar metadata de um descritor de entidade IDP SAML remoto.", + "samlEntityDescriptor": "Permite que vocÊ carregue metadata de IDP externos de um arquivo de configuração ou baixando a partir de uma URL.", + "ssoServiceUrl": "A Url que deve ser utilizada para enviar solicitações de autenticação (SAML AuthnRequest).", + "singleLogoutServiceUrl": "A Url que deve ser utilizada para enviar solicitações de logout.", + "httpPostBindingAuthnRequest": "Indica se o AuthnRequest deve ser enviado utilizando HTTP-POST. Se falso, HTTP-REDIRECT será utilizado.", + "wantAuthnRequestsSigned": "Indicate se um provedor de identificação deve experar um AuthnRequest assinado.", + "signatureAlgorithm": "O algoritmo de assinatura a ser utilizado para assinar documentos.", + "forceAuthentication": "Indica se um provedor de identificação deve autenticar o apresentador diretamente ao invés de confiar em um contexto de segurança anterior.", + "validateSignatures": "Habilita/Desabilita validação de assinaturas de respostas SAML.", + "validatingX509Certs": "O certificado em formato PEM que deve ser usado para verificar assinaturas.", + "addIdpMapperName": "Nome do mapeamento" +} \ No newline at end of file diff --git a/public/resources/pt-BR/identity-providers.json b/public/resources/pt-BR/identity-providers.json new file mode 100644 index 0000000000..ece514b5c6 --- /dev/null +++ b/public/resources/pt-BR/identity-providers.json @@ -0,0 +1,41 @@ +{ + "addIdPMapper": "Adicionar mapeamento de provedor de identificação", + "redirectURI": "URI de redirecionamento", + "clientId": "ID do cliente", + "clientSecret": "Secret do Cliente", + "endpoints": "Endpoints", + "alias": "Alias", + "ssoServiceUrl": "URL de serviço do Single Sign On", + "singleLogoutServiceUrl": "URL de serviço de Single Logout", + "nameIdPolicyFormat": "Política de formato NameID", + "email": "E-mail", + "unspecified": "Não especificado", + "httpPostBindingResponse": "Responder com HTTP-POST", + "httpPostBindingAuthnRequest": "Utilizar HTTP-POST binding para AuthnRequest", + "wantAuthnRequestsSigned": "Esperar AuthnRequests assinados", + "forceAuthentication": "Forçar autenticação", + "validatingX509Certs": "Validar certificados X509", + "authorizationUrl": "URL de autorização", + "tokenUrl": "URL do Token", + "logoutUrl": "URL de logout", + "backchannelLogout": "Backchannel Logout", + "userInfoUrl": "URL de informações do usuário", + "issuer": "Emissor", + "scopes": "Escopos", + "prompt": "Prompt", + "prompts": { + "none": "Nenhum", + "consent": "Consentimento", + "login": "Login" + }, + "clientAuthentication": "Autenticação do cliente", + "validateSignature": "Validar assinaturas", + "storeTokens": "Salvar Tokens", + "storedTokensReadable": "Leitura de tokens salvos", + "trustEmail": "Confiar no e-mail recebido", + "firstBrokerLoginFlowAlias": "Fluxo do primeiro login", + "postBrokerLoginFlowAlias": "Fluxo pós login", + "mapperType": "Tipo de mapeamento", + "selectRole": "Selecione o Role", + "userAttribute": "Atributo do usuário" +} \ No newline at end of file diff --git a/public/resources/pt-BR/realm-settings-help.json b/public/resources/pt-BR/realm-settings-help.json new file mode 100644 index 0000000000..2549e51d38 --- /dev/null +++ b/public/resources/pt-BR/realm-settings-help.json @@ -0,0 +1,23 @@ +{ + "requireSsl": "É necessário SSL? 'Nunca' significa que HTTPS não é requerido para nenhum endereço IP cliente. 'Requisições externas' significa que localhost e IPs privados podem acessar sem HTTPS. 'Todas requisições' significa que HTTPS é requerido para todos os endereços IPs.", + "accountTheme": "Selecione o tema para as páginas de administração de conta do usuário.", + "adminConsoleTheme": "Selecione o tema para o console de administração.", + "emailTheme": "Selecione o tema para os e-mail que são enviados pelo servidor.", + "save-user-events": "If enabled login events are saved to the database which makes events available to the admin and account management consoles.", + "save-admin-events": "If enabled admin events are saved to the database which makes events available to the admin console.", + "expiration": "Sets the expiration for events. Expired events are periodically deleted from the database.", + "admin-clearEvents": "Deletes all admin events in the database.", + "includeRepresentation": "Include JSON representation for create and update requests.", + "failureFactor": "Quantas falhas de login antes que a espera seja habilitada.", + "waitIncrementSeconds": "Quando a quantidade de falhas for alcançada, quanto tempo o usuário deve aguardar antes de tentar novamente?", + "maxFailureWaitSeconds": "Tempo máximo que um usuário deverá aguardar após uma falha de quick login.", + "maxDeltaTimeSeconds": "Quando o contador de falhas será resetado?", + "quickLoginCheckMilliSeconds": "Se uma falha ocorre concorrentemente neste período, travar a conta do usuário.", + "minimumQuickLoginWaitSeconds": "Quanto tempo aguardar após uma falha de quick login.", + "ssoSessionIdle": "Tempo que uma sessão pode ficar inativa antes de expirar. Tokens e sessões de navegador são invalidados quando uma sessão é expirada.", + "ssoSessionMax": "Tempo máximo antes que uma sessão seja expirada. Tokens e sessões de navegador são invalidados quando uma sessão é expirada.", + "offlineSessionIdle": "Tempo que uma sessão offline pode ficar inativa antes de expirar. Você precisa utilizar um token de atualização offline pelo menos uma vez neste período, caso contrário a sessão offline será expirada.", + "revokeRefreshToken": "Se habilitado os tokens de atualização podem ser utilizados somente uma vez. Caso contrário os tokens de atualização não são revogados quando utilizados e podem ser utilizados várias vezes.", + "clientLoginTimeout": "Tempo máximo que um cliente tem para finalizar o procolo do token de acesso. Normalmente deve ser 1 minuto.", + "editUsername": "Se habilitado, o campo nome de usuário é editável, senão será apenas leitura." +} \ No newline at end of file diff --git a/public/resources/pt-BR/realm-settings.json b/public/resources/pt-BR/realm-settings.json new file mode 100644 index 0000000000..8cd7f3887c --- /dev/null +++ b/public/resources/pt-BR/realm-settings.json @@ -0,0 +1,105 @@ +{ + "partialImport": "Importação parcial", + "general": "Geral", + "login": "Login", + "themes": "Temas", + "events": "Eventos", + "eventListeners": "Listeners de eventos", + "eventListenersHelpText": "Configure what listeners receive events for the realm.", + "adminEventsSettings": "Configuração de eventos de administração", + "saveEvents": "Salvar eventos", + "expiration": "Duração", + "clearAdminEvents": "Limpar eventos administrativos", + "includeRepresentation": "Incluir representação", + "email": "E-mail", + "from": "Remetente", + "host": "Host", + "port": "Porta", + "authentication": "Autenticação", + "enableSSL": "Habilitar SSL", + "enableStartTLS": "Habilitar StartTLS", + "username": "Usuário", + "password": "Senha", + "keyAlias": "Alias da chave", + "keyPassword": "Senha da chave", + "providers": "Provedores", + "consoleDisplayName": "Nome de exibição no console", + "type": "Tipo", + "providerId": "ID", + "provider": "Provedor", + "certificate": "Certificado", + "userRegistration": "Cadastro de usuário", + "userRegistrationHelpText": "Habilita/desabilita a página de cadastro. Um link para a página de cadastro também será exibido na tela de login.", + "rememberMe": "Lembrar me", + "rememberMeHelpText": "Exibe um checkbox na página de login para permitir ao usuário continuar logado entre restarts do browser até que a sessão expire.", + "emailAsUsername": "Email como nome de usuário", + "verifyEmail": "Verificar e-mail", + "editUsername": "Editar nome de usuário", + "testConnection": "Testar conexão", + "htmlDisplayName": "Nome de exibição HTML", + "requireSsl": "SSL requerido", + "sslType": { + "all": "todas requisições", + "external": "requisições externas", + "none": "Nenhum" + }, + "endpoints": "Endpoints", + "loginTheme": "Tema de login", + "accountTheme": "Tema para conta", + "adminTheme": "Tema para console de administração", + "emailTheme": "Tema de e-mail", + "sessions": "Sessões", + "SSOSessionIdle": "Sessão SSO inativa", + "SSOSessionMax": "Sessão SSO Máxima", + "offlineSessionIdle": "Sessão Offline Inativa", + "loginTimeout": "Tempo máximo do Login", + "loginActionTimeout": "Tempo limite da ação de Login", + "revokeRefreshToken": "Revogar Token de Atualização", + "accessTokenLifespan": "Duração do Token de Acesso", + "accessTokenLifespanImplicitFlow": "Duração do token de acesso para fluxos Implícitos", + "clientLoginTimeout": "Tempo limite para login do Cliente", + "createPolicy": "Criar política", + "policies": "Políticas", + "clientProfileDescription": "Descrição", + "back": "Voltar", + "save": "Salvar", + "tokens": "Tokens", + "attributes": "Atributos", + "supportedLocales": "Locais disponíveis", + "defaultLocale": "Local padrão", + "user": "Usuário", + "validatorDialogColNames": { + "colName": "Nome do Role" + }, + "validatorColNames": { + "colConfig": "Configuração" + }, + "eventTypes": { + "IMPERSONATE": { + "name": "Personificar" + }, + "LOGOUT": { + "name": "Logout" + }, + "REGISTER": { + "name": "Registro" + }, + "RESET_PASSWORD": { + "name": "Reiniciar senha" + } + }, + "deleteEvents": "Limpar eventos", + "defaultRoles": "Roles padrão", + "defaultGroups": "Grupos Padrão", + "securityDefences": "Defesas", + "headers": "Cabeçalhos", + "bruteForceDetection": "Detecção de ataque de Força Bruta", + "xFrameOptions": "X-Frame-Options", + "contentSecurityPolicy": "Content-Security-Policy", + "xContentTypeOptions": "X-Content-Type-Options", + "failureFactor": "Falhas de login", + "waitIncrementSeconds": "Incremento de Espera", + "maxFailureWaitSeconds": "Espera máxima", + "maxDeltaTimeSeconds": "Tempo para zerar falhas", + "minimumQuickLoginWaitSeconds": "Espera mínima após Quick Login" +} \ No newline at end of file diff --git a/public/resources/pt-BR/realm.json b/public/resources/pt-BR/realm.json new file mode 100644 index 0000000000..f5a067c96d --- /dev/null +++ b/public/resources/pt-BR/realm.json @@ -0,0 +1,3 @@ +{ + "enabled": "Habilitado" +} \ No newline at end of file diff --git a/public/resources/pt-BR/roles.json b/public/resources/pt-BR/roles.json new file mode 100644 index 0000000000..01c4c96adc --- /dev/null +++ b/public/resources/pt-BR/roles.json @@ -0,0 +1,14 @@ +{ + "associatedRolesText": "Roles associados", + "title": "Roles do Realm", + "addRole": "Adicionar Role", + "roleName": "Nome do Role", + "composite": "Composto", + "usersInRole": "Usuários no role", + "addUser": "Adicionar usuário", + "users": "Usuários", + "userName": "Usuário", + "email": "E-mail", + "lastName": "Sobrenome", + "firstName": "Primeiro nome" +} \ No newline at end of file diff --git a/public/resources/pt-BR/sessions.json b/public/resources/pt-BR/sessions.json new file mode 100644 index 0000000000..5774bb24b9 --- /dev/null +++ b/public/resources/pt-BR/sessions.json @@ -0,0 +1,10 @@ +{ + "title": "Sessões", + "lastAccess": "Último acesso", + "revocation": "Revogação", + "notBefore": "Não antes de", + "setToNow": "Definir como agora", + "clear": "Limpar", + "push": "Enviar", + "none": "Nenhum" +} \ No newline at end of file diff --git a/public/resources/pt-BR/user-federation-help.json b/public/resources/pt-BR/user-federation-help.json new file mode 100644 index 0000000000..d111c69858 --- /dev/null +++ b/public/resources/pt-BR/user-federation-help.json @@ -0,0 +1,12 @@ +{ + "vendorHelp": "LDAP vendor (provedor)", + "consoleDisplayConnectionUrlHelp": "Conexão URL para o seu servidor LDAP", + "bindCredentialsHelp": "Senha do administrador do LDAP", + "editModeLdapHelp": "READ_ONLY é um LDAP somente leitura. WRITABLE significa que os dados serão sicronizados de volta para o LDAP on demand. UNSYNCED significa que os dados do usuário serão importados, mas não sicronizados de volta para o LDAP.", + "fullSyncPeriodHelp": "Intervalo para a sincronização completa em segundos.", + "changedUsersSyncHelp": "Intervalo para sincronização dos usuários alterados ou novos do LDAP em segundos.", + "trustEmailHelp": "Se habilitado então o e-mail provido por este provedor não será verificado mesmo que a verificação esteja habilitada para este realm.", + "debugHelp": "Habilita/Desabilita log de nível debug para a saída padrão para Krb5LoginModule.", + "allowPasswordAuthenticationHelp": "Habilita/Desabilita a possibilidade de autenticação via usuário/senha contra o banco Kerberos", + "updateFirstLoginHelp": "Atualizar o perfil no primeiro login" +} \ No newline at end of file diff --git a/public/resources/pt-BR/user-federation.json b/public/resources/pt-BR/user-federation.json new file mode 100644 index 0000000000..b8a9e0aaa0 --- /dev/null +++ b/public/resources/pt-BR/user-federation.json @@ -0,0 +1,36 @@ +{ + "userFederation": "Federação de usuários", + "consoleDisplayName": "Nome de exibição no console", + "vendor": "Vendor", + "connectionURL": "URL de conexão", + "enableStartTls": "Habilitar StartTLS", + "useTruststoreSpi": "Utilizar Truststore SPI", + "connectionPooling": "Pooling de conexões", + "bindType": "Tipo de autenticação", + "bindDn": "Bind DN", + "editMode": "Modo de edição", + "usersDN": "Users DN", + "usernameLdapAttribute": "Atributo LDAP para Username", + "rdnLdapAttribute": "Atributo LDAP para RDN", + "uuidLdapAttribute": "Atributo LDAP para UUID", + "userObjectClasses": "Classes do objeto User", + "searchScope": "Escopo de pesquisa", + "pagination": "Paginação", + "batchSize": "Tamanho do lote", + "periodicFullSync": "Syncronização completa periódica", + "fullSyncPeriod": "Período", + "periodicChangedUsersSync": "Sincronização periódica de usuários alterados", + "changedUsersSyncPeriod": "Período", + "kerberosIntegration": "Integração com Kerberos", + "allowKerberosAuthentication": "Permitir autenticação Kerberos", + "useKerberosForPasswordAuthentication": "Utilizar Kerberos para autenticação via senha", + "trustEmail": "Confiar no e-mail recebido", + "requiredSettings": "Configurações obrigatórias", + "kerberosRealm": "Realm do Kerberos", + "serverPrincipal": "Principal do servidor", + "debug": "Debug", + "allowPasswordAuthentication": "Permitir autenticação via senha", + "testAuthentication": "Testar autenticação", + "ldapFilter": "Filtro do LDAP", + "selectRole": "Selecione o Role" +} \ No newline at end of file diff --git a/public/resources/pt-BR/users-help.json b/public/resources/pt-BR/users-help.json new file mode 100644 index 0000000000..96ce8c5b7f --- /dev/null +++ b/public/resources/pt-BR/users-help.json @@ -0,0 +1,6 @@ +{ + "temporaryLocked": "The user may have been locked due to failing to login too many times.", + "emailVerified": "Has the user's email been verified?", + "requiredUserActions": "Require an action when the user logs in. 'Verify email' sends an email to the user to verify their email address. 'Update profile' requires user to enter in new personal information. 'Update password' requires user to enter in a new password. 'Configure OTP' requires setup of a mobile password generator.", + "groups": "Groups user is a member of. Select a listed group and click the Leave button to leave the group." +} \ No newline at end of file diff --git a/public/resources/pt-BR/users.json b/public/resources/pt-BR/users.json new file mode 100644 index 0000000000..3b6db63b4f --- /dev/null +++ b/public/resources/pt-BR/users.json @@ -0,0 +1,31 @@ +{ + "title": "Usuários", + "join": "Participar", + "leave": "Sair", + "groupMembership": "Grupos associados", + "createdAt": "Criado em", + "username": "Usuário", + "email": "E-mail", + "emailVerified": "E-mail verificado", + "lastName": "Sobrenome", + "firstName": "Primeiro nome", + "requiredUserActions": "Ações necessárias do usuário", + "addUser": "Adicionar usuário", + "impersonate": "Personificar", + "verifyEmail": "Verificar e-mail", + "consents": "Consentimentos", + "identityProvider": "Provedor de identificação", + "identityProviderLinks": "Links de provedores de identificação.", + "revoke": "Revogar", + "save": "Salvar", + "credentialType": "Tipo", + "password": "Senha", + "passwordConfirmation": "Confirmação de senha", + "resetPassword": "Reiniciar senha", + "showPasswordDataValue": "Valor", + "resetActions": "Ações para reiniciar", + "hours": "Horas", + "minutes": "Minutos", + "seconds": "Segundos", + "credentialResetConfirm": "Enviar e-mail" +} \ No newline at end of file diff --git a/public/resources/ru/authentication-help.json b/public/resources/ru/authentication-help.json new file mode 100644 index 0000000000..86a21ac44b --- /dev/null +++ b/public/resources/ru/authentication-help.json @@ -0,0 +1,9 @@ +{ + "flowType": "Какого типа эта форма", + "topLevelFlowType": "Какой это тип сценария верхнего уровня? Тип \"клиент\" используется для аутентификации клиентов (приложений), когда \"общий\" для пользователей и всего остального", + "alias": "Наименование конфигурации", + "otpType": "totp является Временным одноразовым паролем. 'hotp' основанный на счетчике одноразовый пароль в котором сервер хранит счетчик хеша.", + "otpHashAlgorithm": "Какой алгоритм хеширования должен быть использован для генерации OTP.", + "otpPolicyDigits": "Сколько цифр должен иметь OTP?", + "otpPolicyPeriod": "Сколько секунд токен OTP должен быть действителен? По умолчанию 30 секунд." +} \ No newline at end of file diff --git a/public/resources/ru/authentication.json b/public/resources/ru/authentication.json new file mode 100644 index 0000000000..d5ee1ff047 --- /dev/null +++ b/public/resources/ru/authentication.json @@ -0,0 +1,35 @@ +{ + "title": "Аутентификация", + "flows": "Сценарии", + "requiredActions": "Требуемые действия", + "policies": "Политики", + "passwordPolicy": "Политики пароля", + "otpPolicy": "Политики OTP", + "otpType": "Тип одноразового пароля OTP", + "policyType": { + "totp": "Основан на времени", + "hotp": "Основан на счетчике" + }, + "otpHashAlgorithm": "Алгоритм хеша OTP", + "otpPolicyDigits": "Количество цифр", + "lookAhead": "Окно вперед", + "otpPolicyPeriod": "Период токена OTP", + "initialCounter": "Начальное значение счетчика", + "attestationPreference": { + "none": "нет" + }, + "flow": { + "browserFlow": "Сценарий браузера", + "registrationFlow": "Сценарий регистрации", + "directGrantFlow": "Сценарий Direct Grant Flow" + }, + "edit": "Редактировать", + "flowType": "Тип сценария", + "flow-type": { + "basic-flow": "общий", + "form-flow": "форма" + }, + "addExecution": "Добавить исполнение", + "requirement": "Требования", + "alias": "Синоним" +} \ No newline at end of file diff --git a/public/resources/ru/client-scopes-help.json b/public/resources/ru/client-scopes-help.json new file mode 100644 index 0000000000..cc763e3930 --- /dev/null +++ b/public/resources/ru/client-scopes-help.json @@ -0,0 +1,10 @@ +{ + "name": "Наименование шаблона клиента. Должно быть уникально для realm", + "description": "Описание шаблона клиента", + "protocol": "Какая конфигурация протокола SSO будет поддержана шаблоном клиента", + "prefix": "Префикс для каждой роли Realm (опционально).", + "multiValued": "Отображается, если атрибут поддерживает несколько значений. Если включен, то список всех значений будет претендовать на этот атрибут. В противном случае выбираться будет только первое значение ", + "tokenClaimName": "Имя переменной при добавлении ее в токен. Может быть полное имя, например 'address.street'. В таком случае будет создан вложенный json объект.", + "claimJsonType": "Тип переменной в JSON, который должен использоваться при добавлении ее в токен. Допустимые значения long, int, boolean, и String.", + "protocolMapper": "Протокол..." +} \ No newline at end of file diff --git a/public/resources/ru/client-scopes.json b/public/resources/ru/client-scopes.json new file mode 100644 index 0000000000..c510b98d13 --- /dev/null +++ b/public/resources/ru/client-scopes.json @@ -0,0 +1,8 @@ +{ + "protocol": "Протокол", + "type": "Тип", + "realmRolePrefix": "Префикс ролей Realm", + "realmRoles": "Роли Realm", + "clients": "Клиенты", + "scope": "Область" +} \ No newline at end of file diff --git a/public/resources/ru/clients-help.json b/public/resources/ru/clients-help.json new file mode 100644 index 0000000000..5d4b3ede6d --- /dev/null +++ b/public/resources/ru/clients-help.json @@ -0,0 +1,90 @@ +{ + "clientType": "'OpenID connect' разрешает клиентам проверить личность конечного пользователя, основанного на выполнении аутентификации на Сервере Авторизации.'SAML' включает веб-сценарии аутентификации и авторизации, включая кроссдоменные центры единого управления доступом (SSO) и использующие токены безопасности, содержащие заявления на передачу информации.", + "serviceAccount": "Разрешает Вам аутентифицировать этого клиента в Keycloak и получить токен доступа специально для этого клиента. В терминах OAuth2 спецификации включает поддержку 'Client Credentials Grant' для этого клиента.", + "authorization": "Включить/Выключить тонко-настраиваемую поддержку авторизации для клиента", + "directAccess": "Включает поддержку Direct Access Grants, которая означает, что клиент имеет доступ к имени пользователя и пароля и обменивает их напрямую с сервером Keycloak на токен доступа. В терминах OAuth2 спецификации означает поддержку 'Resource Owner Password Credentials Grant' для этого клиента.", + "standardFlow": "Включает стандартное OpenID Connect перенаправление, основанное на аутентификации с кодом авторизации. В терминах OpenID Connect или OAuth2 спецификаций включает 'Authorization Code Flow' для этого клиента.", + "implicitFlow": "Включает поддержку OpenID Connect перенаправления, основанного на аутентификации без кода авторизации. В терминах OpenID Connect или OAuth2 спецификаций включает поддержку 'Implicit Flow' для этого клиента.", + "rootURL": "Корневой URL добавляется к относительным URL", + "validRedirectURIs": "Валидирует паттерн URI, на который может быть перенаправлен браузер после успешного входа или выхода. Разрешены простые ссылки, напр. 'http://example.com/*'. Также допускается использовать относительный путь, напр. '/my/relative/path/*'. Относительные пути необходимо указывать относительно корневого URL клиента, или, если он не специфицирован, корневого URL сервера авторизации. Для SAML Вы должны задать валидный паттерн URI, если Вы полагаетесь на URL сервиса потребителя, внедренного в запрос авторизации.", + "nameIdFormat": "Наименование формата ID для использования в теме.", + "forceNameIdFormat": "Игнорирует запрошенный формат заголовка NameID и использует сконфигурированный через консоль администратора.", + "forcePostBinding": "Всегда использовать POST Binding для ответов.", + "includeAuthnStatement": "Должны ли заявки на методы и временные метки быть включены в ответе на вход?", + "includeOneTimeUseCondition": "Должно ли условие одноразового использования быть включено в ответе на вход?", + "optimizeLookup": "При подписи SAML документов при REDIRECT сопоставлении с SP, который обеспечивается безопасностью адаптера Keycloak, должен ли включать ID подписанного ключа в сообщение по протоколу SAML в элемент? Это оптимизирует валидацию сигнатуры, где в качестве проверки используется один ключ вместо попытки проверки каждого ключа во время валидации.", + "signDocuments": "Должны ли SAML документы быть подписаны в realm?", + "signAssertions": "Должны ли утверждения внутри SAML документов быть подписаны? Устанавливает отсутствие необходимости подписывать уже подписанные документы.", + "signatureAlgorithm": "Алгоритм, используемый для подписи документов.", + "signatureKeyName": "Подписанные SAML документы содержат идентификаторы ключей подписи в элементе KeyName. Для Keycloak / RH-SSO контрагентов, используйте KEY_ID, для MS AD FS используйте CERT_SUBJECT, для остальных установите и используйте NONE если другие опции не работают.", + "canonicalization": "Метод канонизации для XML сигнатур.", + "webOrigins": "Разрешает CORS источникам. Чтобы разрешить всем источники с допустимыми URI-адресами переадресации, добавьте '+'. Чтобы разрешить все источники, добавьте '*'.", + "homeURL": "Используемый URL по умолчанию. Используется в случае, если серверу требуется перенаправление или обратная ссылка на клиента.", + "adminURL": "URL для доступа к интерфейсу администратора в заданном клиенте. Необходимо установить, если клиент поддерживает адаптер REST API. Это REST API разрешает серверу авторизации слать политики отзыва и прочие административные задачи. Обычно устанавливается значение, соответствующее базовому URL клиента.", + "client": "Выберите клиента, осуществляющего авторизационный запрос. Если не задан, авторизационные запросы будут основаны на том клиенте, в котором вы находитесь.", + "clientId": "Задает идентификатор, указываемый в URI и в токенах. Например 'my-client'. Для SAML это также ожидаемое имя издателя для запросов аутентификации", + "selectUser": "Выберите пользователя, идентификационные данные которого будут использованы для запроса разрешений с сервера.", + "roles": "Выберите роли, которые вы хотите связать с выбранным пользователем.", + "contextualAttributes": "Любой аттрибут определяется запущенным окружением или контекстом исполнения.", + "applyToResourceType": "Определяет, будет ли это разрешение будет применено ко всем ресурсам с данным типом. В этом случае это разрешение будет вычисляться для всех экземпляров с заданным типом ресурса.", + "resources": "Определяет, что это разрешение должно быть применено к конкретному экземпляру ресурсов.", + "scopesSelect": "Определяет, что разрешение должно быть применено к одной или нескольким областям.", + "clientName": "Задает отображаемое название клиента. Например 'My Client'. Поддерживает ключи для локализованных значений. Например\\: ${my_client}", + "description": "Задает описание клиента. Например 'Мой клиент для табеля учета времени'. Поддерживает ключи для локализованных значений. Например: ${my_client_description}", + "loginTheme": "Выберите тему для страниц входа, временного одноразового пароля (OTP), выдачи разрешений, регистрации и восстановления пароля.", + "encryptAssertions": "Должны ли SAML утверждения быть зашифрованы публичным ключом клиента, используя AES?", + "clientSignature": "Будет ли клиент подписывать свои saml запросы и ответы? И должны ли они быть провалидированы?", + "expiration": "Определяет, как долго токен будет оставаться валидным", + "count": "Определяет, как много клиентов может быть создано с помощью этого токена", + "client-authenticator-type": "Проверка подлинности клиента используется для аутентификации этого клиента вместо сервера Keycloak", + "registration-access-token": "Токен доступа к регистрации обеспечивает доступ для клиентов к сервису регистрации клиентов.", + "nodeReRegistrationTimeout": "Интервал, означающий максимальное время для узлов кластера зарегистрированных клиентов для их перерегистрации. Если узел кластера не может послать запрос перерегистрации в Keycloak за указанное время, то он будет разрегистрирован из Keycloak", + "userInfoSignedResponseAlgorithm": "JWA алгоритм используется для подписи ответа ресурса информации о пользователе. Если установлено в 'unsigned', то ответ инофрмации о пользователе не будет подписан и будет возвращен в формате application/json.", + "requestObjectSignatureAlgorithm": "JWA алгоритм, который необходим клиенту для использования во время отсылки OIDC запроса объекта, специфицированного по 'request' или 'request_uri' параметрам. Если установлено в 'any', то объект запроса будет подписан любым алгоритмом (включая 'none' ).", + "idpInitiatedSsoUrlName": "Имя URL фрагмента, обозначающего клиента, если вы хотите, чтобы SSO был проинициирован поставщиком идентификации. Оставьте это поле пустым, чтобы отключить инициирование SSO с помощью поставщика идентификации. URL для ссылки вашего браузера может быть в следующем виде: {server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}", + "idpInitiatedSsoRelayState": "Передать состояние, которое вы хотите послать вместе с SAML запросом, которым хотите проиницировать SSO поставщиком идентификации.", + "masterSamlProcessingUrl": "Если URL сконфигурирован, то он будет каждый раз для связывания SP's Assertion Consumer и Single Logout Services. Может быть переопределен индивидуально для связывания каждого сервиса в тонкой настройке конфигурации конечных точек доступа SAML.", + "accessTokenLifespan": "Максимальное время действия токена доступа. Значение рекомендуется устанавливать как можно ближе к таймауту SSO.", + "assertionConsumerServicePostBindingURL": "URL-адрес SAML POST запроса для клиентских сервисов подтверждения потребителей (запросы входа). Вы можете оставить это поле пустым, если не имеете URL для осуществления такой приввязки.", + "assertionConsumerServiceRedirectBindingURL": "SAML переадресация на привязанный URL для клиентского сервиса подтверждения потребителей (запросы входа). Вы можете оставить это поле пустым, если вы не имеете URL для осуществления такой привязки.", + "logoutServicePostBindingURL": "SAML POST связанный URL для клиентского сервиса единого выхода. Если Вы используете другие привязки, то можете оставить это поле пустым.", + "logoutServiceRedirectBindingURL": "SAML переадресует на привязанный URL для единой точки выхода из сервиса для клиентов. Если Вы используете другие привязки, то можете остаавить это поле пустым.", + "frontchannelLogout": "Когда правила, выход требует перенаправить браузер на клиента. Если ложь, сервер выполняет фоновый режим для выхода из системы.", + "browserFlow": "Выберите сценарий, который вы хотите использовать для аутентификации через браузер.", + "directGrant": "Выберите сценарий, который вы хотите использоваться для аутентификации direct grant.", + "certificate": "Клиентский сертификат для валидации JWT, выпущенный клиентом и подписанный клиентским приватным ключом из Вашего хранилища ключей.", + "jwksUrl": "URL, где клиентские ключи хранятся в формате JWK. Для дополнительных деталей смотрите спецификацию JWK. Если Вы будете использовать адаптер клиента keycloak с учетными записями \"jwt\", то Вы можете использовать URL вашего приложения с суффиксом '/k_jwks'. Например 'http://www.myhost.com/myapp/k_jwks' .", + "archiveFormat": "Формат архивации Java keystore или PKCS12.", + "keyAlias": "Синоним архива для Вашего приватного ключа и сертификата.", + "keyPassword": "Пароль для доступа к приватного ключу в архиве", + "storePassword": "Пароль для доступа в сам архив ", + "consentRequired": "Если включено, пользователи должны дать согласие на доступ клиентскому приложению.", + "import": "Импорт JSON файла, содержащего авторизационные настройки для этого сервера ресурсов.", + "policyEnforcementMode": "Режим применения политик диктует, каким образом политики применяются при оценке запросов на авторизацию. «Обязывающая» означает, что запросы запрещены по умолчанию, даже если нет никакой политики, связанной с данным ресурсом. \"Разрешающая\" означает, что запросы разрешены даже если не существует политика, связанная с данным ресурсом. 'Отключено' полностью отключает оценку политики и позволяет получить доступ к любому ресурсу.", + "allowRemoteResourceManagement": "Должны ли ресурсы управляться удаленно сервером ресурсов? Если нет, то ресурсы могут управляться только через консоль администратора. ", + "resourceName": "Уникальное имя для этого ресурса. Имя может быть использовано для уникальной идентификации ресурса, используется при запросах конкретных ресурсов.", + "type": "Тип этого ресурса. Может быть использовано для группировки различных экземпляров ресурса с тем же типом.", + "uris": "URI, который также может быть использован для уникальной идентификации этого ресурса.", + "scopes": "Области, ассоциироваанные с этим ресурсом.", + "fullScopeAllowed": "Отключает все ограничения.", + "resetActions": "Набор действия для выполнения при отправке пользователю письма с указаниями по сбросу пароля. 'Подтвердить E-mail' высылает пользователю письмо для подтверждения его E-mail. 'Обновить профиль' требует от пользователя ввести новую персональную информацию. 'Обновить пароль' требует от пользователя ввести новый пароль. 'Настроить OTP' требует установить мобильное приложение с генератором паролей.", + "scopeName": "Уникальное имя для области. Имя может быть использовано для уникальной идентификации области, используется при запросах конкретных областей.", + "policy-name": "Название этой политики.", + "policy-description": "Описание этой политики.", + "policyDecisionStagey": "Стратегия решения диктует как политики связаны с заданными разрешениями и как формируется окончательное решение. 'Утвердительная' означает, что, по крайней мере, одна политика должна дать положительную оценку для того, чтобы окончательное решение также было положительным. 'Единогласная' означает что все политики должны дать положительную оценку для того, чтобы окончательная оценка также была положительной. 'Консенсусная' означает, что количество положительных решений должно превышать количество отрицательных решений. Если количество положительных и отрицательных решений совпадает, окончательное решение будет отрицательным.", + "applyPolicy": "Определяем все политики, которые должны быть применены к областям, определенным этой политикой или разрешением.", + "policyClient": "Задайте, какие клиенты допущеный этой политикой.", + "policyGroups": "Задайте, какие пользователи допущены этой политикой.", + "policyRoles": "Задайте роли клиента, допущенные этой политикой.", + "startTime": "Определете время, до наступления которого политика НЕ ДОЛЖНА быть разрешена. Разрешено только если текущее время/дата больше или равны заданному значению.", + "expireTime": "Определяет время, после которого политика НЕ ДОЛЖНА быть разрешена. Разрешено только если текущее время/дата менеьше или равны заданному значению.", + "month": "Определяет месяц, в который политика ДОЛЖНА быть разрешена. Вы также можете определить диапазон, заполнив второе поле. В этом случае разрешение выдается только если текущий месяц равен или находится между заданными значениями.", + "dayMonth": "Определяет день месяца, в который политика ДОЛЖНА быть разрешена. Вы также можете определить диапазон, заполнив второе поле. В этом случае разрешение выдается только если текущий день месяца равен или находится между заданными значениями.", + "hour": "Определяет час, в который политика ДОЛЖНА быть разрешена. Вы также можете определить диапазон, заполнив второе поле. В этом случае разрешение выдается только если текущий час равен или находится между заданными значениями.", + "minute": "Определяет минуту, в которую политика ДОЛЖНА быть разрешена. Вы также можете определить диапазон, заполнив второе поле. В этом случае разрешение выдается только если текущая минута равна или находится между заданными значениями.", + "policyCode": "Код JavaScript, предоставляющий условия для этой политики.", + "logic": "Логика диктует, как политика должна применяться. Если 'Позитивная', результирующий эффект (разрешение или запрещение) полученный в ходе оценки этой политики будет использован для выполнения решения. Если 'Негативная', результирующий эффект будет отрицательным, другими словами, разрешение становится запрещением и наоборот.", + "permissionName": "Имя этого разрешения.", + "permissionDescription": "Описание этого разрешения.", + "permissionType": "Определяет, что это разрешение должно быть применено ко всем экземплярам ресурсов заданного типа." +} \ No newline at end of file diff --git a/public/resources/ru/clients.json b/public/resources/ru/clients.json new file mode 100644 index 0000000000..32b98e2d58 --- /dev/null +++ b/public/resources/ru/clients.json @@ -0,0 +1,134 @@ +{ + "protocol": "Протокол", + "copy": "Копировать", + "clientAuthorization": "Авторизация", + "importClient": "Импортировать клиента", + "webOrigins": "Web источники", + "adminURL": "URL администрирования приложения", + "formatOption": "Формат", + "encryptAssertions": "Зашифровка утверждений", + "clientSignature": "Подпись клиента обязательна", + "keys": "Ключи", + "credentials": "Учетные данные", + "roles": "Роли", + "addClientScope": "Добавить шаблон клиента", + "fullScopeAllowed": "Полный доступ к областям", + "selectAUser": "Выберите пользователя", + "client": "клиент", + "evaluate": "Оценка", + "reevaluate": "Переоценить", + "showAuthData": "Показать авторизационные данные", + "unanimous": "Единогласная", + "affirmative": "Утвердительная", + "consensus": "Консенсусная", + "authScopes": "Области авторизации", + "anyResource": "Любой ресурс", + "anyScope": "Любая область", + "selectScope": "Выберите область", + "applyToResourceType": "Применить к типу ресурса", + "contextualInfo": "Контекстная информация", + "contextualAttributes": "Контекстные аттрибуты", + "kc": { + "realm": { + "name": "Realm" + } + }, + "password": "Пароль", + "settings": "Настройки", + "policyEnforcementMode": "Режим применения политик", + "policyEnforcementModes": { + "ENFORCING": "Обязывающая", + "PERMISSIVE": "Разрешающая" + }, + "decisionStrategy": "Стратегия решения", + "type": "Тип", + "iconUri": "Иконка URI", + "allowRemoteResourceManagement": "Удаленное управление ресурсами", + "resources": "Ресурсы", + "resource": "Ресурс", + "allTypes": "Все типы", + "scope": "Область", + "owner": "Владелец", + "scopes": "Области", + "policies": "Политики", + "createPermission": "Создать полномочия", + "identityInformation": "Идентичность данных", + "resourceType": "Тип ресурса", + "createPolicy": "Создать политику", + "applyPolicy": "Применить политику", + "users": "Пользователи", + "month": "Месяц", + "hour": "Час", + "minute": "Минута", + "code": "Код", + "logic": "Логика", + "logicType": { + "positive": "Позитивная", + "negative": "Негитивная" + }, + "user": "Пользователь", + "clientList": "Клиенты", + "initialAccessToken": "Токен первичного доступа", + "created": "Создано", + "lastUpdated": "Обновлено", + "expires": "Истекает", + "count": "Счетчик", + "remainingCount": "Счетчик остатка", + "expiration": "Истечение", + "clientAuthentication": "Аутентификация клиента", + "authentication": "Аутентификация", + "realmRoles": "Роли Realm", + "frontchannelLogout": "Выход с переднего канала", + "rootUrl": "Корневой URL", + "validRedirectUri": "Валидация URI перенаправления", + "idpInitiatedSsoRelayState": "Передача состояния SSO инициирующим поставщиком идентификации", + "masterSamlProcessingUrl": "Основной URL обработчика SAML", + "nameIdFormat": "Наименование формата ID", + "forceNameIdFormat": "Принудительно использовать формат ID", + "forcePostBinding": "Принудительно использовать POST Binding", + "includeAuthnStatement": "Включать Аутентификационные Заявки", + "includeOneTimeUseCondition": "Включить условие одноразового использования", + "optimizeLookup": "Оптимизация REDIRECT поиска подписанного ключа", + "signDocuments": "Подпись документов", + "signAssertions": "Sign Assertions", + "signatureKeyName": "Наименование ключа сигнатуры SAML", + "canonicalization": "Метод канонизации", + "loginTheme": "Тема страницы входа", + "clientAuthenticator": "Проверка подлинности клиента", + "clientSecret": "Секрет клиента", + "registrationAccessToken": "Токен доступа к регистрации", + "revocation": "Отзыв", + "clustering": "Кластеризация", + "notBefore": "Не ранее чем", + "setToNow": "Установить на сейчас", + "addNode": "Добавить узел", + "push": "Разослать", + "clear": "Очистить", + "nodeReRegistrationTimeout": "Таймаут узла перерегистрации", + "registeredClusterNodes": "Зарегистрированные узлы кластера", + "nodeHost": "Хост узла", + "lastRegistration": "Последняя регистрация", + "testClusterAvailability": "Протестировать доступность кластера", + "registerNodeManually": "Зарегистрировать узел вручную", + "fineGrainOpenIdConnectConfiguration": "Тонкая настройка конфигурации OpenID Connect", + "fineGrainSamlEndpointConfig": "Тонкая настройка конфигурации конечных точек доступа SAML", + "userInfoSignedResponseAlgorithm": "Алгоритм подписи ответа информации о пользователе", + "requestObjectSignatureAlgorithm": "Алгоритм сигнатуры объекта запроса", + "assertionConsumerServicePostBindingURL": "Привязка URL POST-запроса для сервиса подтверждения потребителей", + "assertionConsumerServiceRedirectBindingURL": "Привязка URL-адреса переадресации для сервиса подтверждения потребителей", + "logoutServicePostBindingURL": "URL для выхода из сервиса в привязанном POST-методе", + "logoutServiceRedirectBindingURL": "URL переадресации для выхода из сервиса", + "accessTokenLifespan": "Продолжительность жизни токена доступа", + "browserFlow": "Сценарий браузера", + "directGrant": "Сценарий Direct Grant Flow", + "useJwksUrl": "Использовать JWKS URL", + "certificate": "Сертификат", + "jwksUrl": "JWKS URL", + "generateNewKeys": "Сгенерировать новые ключи", + "archiveFormat": "Формат архивации", + "keyAlias": "Синоним ключа", + "keyPassword": "Пароль для ключа", + "storePassword": "Пароль хранилища", + "importFile": "Импортировать файл", + "mappers": "Сопоставления" +} \ No newline at end of file diff --git a/public/resources/ru/common-help.json b/public/resources/ru/common-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/ru/common-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/ru/common.json b/public/resources/ru/common.json new file mode 100644 index 0000000000..0deb86d61d --- /dev/null +++ b/public/resources/ru/common.json @@ -0,0 +1,66 @@ +{ + "add": "Добавить", + "create": "Создать", + "save": "Сохранить", + "continue": "Продолжить", + "remove": "Удалить", + "key": "Ключ", + "value": "Значение", + "back": "Назад", + "export": "Экспорт", + "action": "Действие", + "download": "Скачать", + "clear": "Очистить", + "on": "Вкл", + "edit": "Редактировать", + "enabled": "Включено", + "disable": "Отключено", + "none": "нет", + "signOut": "Выход", + "manageAccount": "Управление учетной записью", + "serverInfo": "Информация о сервере", + "testConnection": "Тест соединения", + "description": "Описание", + "type": "Тип", + "category": "Категория", + "priority": "Приоритет", + "allTypes": "Все типы", + "manage": "Управление", + "clients": "Клиенты", + "realmRoles": "Роли Realm", + "users": "Пользователи", + "sessions": "Сессии", + "events": "События", + "mappers": "Сопоставления", + "permissions": "Разрешения", + "configure": "Конфигурация", + "realmSettings": "Настройки Realm", + "authentication": "Аутентификация", + "identityProviders": "Поставщики идентификации", + "userFederation": "Федерация пользователей", + "settings": "Настройки", + "details": "Детали", + "Sunday": "Воскресенье", + "Monday": "Понедельник", + "Tuesday": "Вторник", + "Wednesday": "Среда", + "Thursday": "Четверг", + "Friday": "Пятница", + "Saturday": "Суббота", + "times": { + "seconds": "секунд", + "minutes": "минут", + "hours": "часов", + "days": "дней" + }, + "attributes": "Атрибуты", + "credentials": "Учетные данные", + "clientId": "ID клиента", + "id": "ID", + "mapperType": "Тип сопоставления", + "leave": "Покинуть", + "password": "Пароль", + "passwordConfirmation": "Подтверждение пароля", + "temporaryPassword": "Временный", + "temporaryPasswordHelpText": "Если включено, пользователю необходимо сменить пароль при следующем входе" +} \ No newline at end of file diff --git a/public/resources/ru/dashboard.json b/public/resources/ru/dashboard.json new file mode 100644 index 0000000000..0b751aec3d --- /dev/null +++ b/public/resources/ru/dashboard.json @@ -0,0 +1,4 @@ +{ + "serverInfo": "Информация о сервере", + "disabledFeatures": "Отключенные функции сервера" +} \ No newline at end of file diff --git a/public/resources/ru/dynamic.json b/public/resources/ru/dynamic.json new file mode 100644 index 0000000000..a4ed242470 --- /dev/null +++ b/public/resources/ru/dynamic.json @@ -0,0 +1,98 @@ +{ + "selectARole": "Выберите роль", + "usermodel": { + "prop": { + "label": "Свойство", + "tooltip": "Имя свойства метода в интерфейсе UserModel. Для примера, значение 'email' будет ссылкой на метод UserModel.getEmail()." + }, + "attr": { + "label": "Атрибут пользователя", + "tooltip": "Имя сохраненного атрибута пользователя, которое является именем атрибута, согласованным с UserModel.attribute." + }, + "clientRoleMapping": { + "client": { + "label": "ID клиента", + "tooltip": "ID клиента для сопоставления ролей" + }, + "rolePrefix": { + "label": "Префикс ролей клиента", + "tooltip": "Префикс для каждой роли клиента (опционально)." + } + }, + "realmRoleMapping": { + "rolePrefix": { + "label": "Префикс ролей Realm", + "tooltip": "Префикс для каждой роли Realm (опционально)." + } + } + }, + "userSession": { + "modelNote": { + "label": "Заметка сессии пользователя", + "tooltip": "Наименование процедуры заметки сессии пользователя согласованным с UserSessionModel.note." + } + }, + "multivalued": { + "label": "Несколько значений", + "tooltip": "Отображается, если атрибут поддерживает несколько значений. Если включен, то список всех значений будет претендовать на этот атрибут. В противном случае выбираться будет только первое значение " + }, + "selectRole": { + "label": "Выберите роль", + "tooltip": "Введите роль в текстовом поле слева, или нажмите на кнопку, чтобы выбрать желаемую роль." + }, + "tokenClaimName": { + "label": "Имя переменной в токене", + "tooltip": "Имя переменной при добавлении ее в токен. Может быть полное имя, например 'address.street'. В таком случае будет создан вложенный json объект." + }, + "jsonType": { + "label": "Тип переменной JSON", + "tooltip": "Тип переменной в JSON, который должен использоваться при добавлении ее в токен. Допустимые значения long, int, boolean, и String." + }, + "includeInIdToken": { + "label": "Добавить в токен ID", + "tooltip": "Должно ли значение быть добавлено в токен ID?" + }, + "includeInAccessToken": { + "label": "Добавить в токен доступа", + "tooltip": "Должно ли значение быть добавлено в токен доступа?" + }, + "includeInUserInfo": { + "label": "Добавить в информацию о пользователе", + "tooltip": "Должно ли требование быть добавлено в информацию о пользователе?" + }, + "sectorIdentifierUri": { + "label": "Сектор идентификации URI", + "tooltip": "Провайдеры, использующие пары вспомогательных значений и поддерживающие динамическую регистрацию клиентов ДОЛЖНЫ использовать sector_identified_uri параметр. Это обеспечивает способ для группы сайтов под общим административным контролем, чтобы иметь последовательные попарные значения независимо от индивидуальных доменных имен. Это также обеспечивает способ для клиентов для изменения redirect_uri доменов, не имещющих возможности перерегистрации всех своих пользователей." + }, + "pairwiseSubAlgorithmSalt": { + "label": "Соль", + "tooltip": "Соль, используемая для вычисления парного субъекта идентификатора. Если поле не заполнено, то соль будет сгенерирована." + }, + "addressClaim": { + "street": { + "label": "Имя пользовательского атрибута, обозначающего Улицу", + "tooltip": "Имя пользовательского атрибута, которое будет использоваться для сопоставления атрибута 'street_address' внутри атрибута 'address' токена. По умолчанию 'street' ." + }, + "locality": { + "label": "Имя пользовательского атрибута, обозначающего Местонахождение", + "tooltip": "Имя пользовательского атрибута, которое будет использоваться для сопоставления атрибута 'locality' внутри атрибута 'address' токена. По умолчанию 'locality' ." + }, + "region": { + "label": "Имя пользовательского атрибута, обозначающего Регион", + "tooltip": "Имя пользовательского атрибута, которое будет использоваться для сопоставления атрибута 'region' внутри атрибута 'address' токена. По умолчанию 'region' ." + }, + "postal_code": { + "label": "Имя пользовательского атрибута, обозначающего Почтовый индекс", + "tooltip": "Имя пользоватеслького атрибута, котоое будет использоваться для сопоставления атрибута 'postal_code' внутри атрибута 'address' токена. По умолчанию 'postal_code' ." + }, + "country": { + "label": "Имя пользовательского атрибута, обозначающего Страна", + "tooltip": "Имя пользовательского атрибута, которое будет использоватлься для сопоставления атрибута 'country' внутри атрибута 'address' токена. По умолчанию 'country' ." + }, + "formatted": { + "label": "Имя пользовательсокого атрибута, обозначающего Формитированный адрес", + "tooltip": "Имя пользовательского атрибута, которое будет использоваться для сопоставления атрибута 'formatted' внутри атрибута 'address' токена. По умолчанию 'formatted' ." + } + }, + "name-id-format": "Наименование формата ID" +} \ No newline at end of file diff --git a/public/resources/ru/events.json b/public/resources/ru/events.json new file mode 100644 index 0000000000..f8b4a65adf --- /dev/null +++ b/public/resources/ru/events.json @@ -0,0 +1,20 @@ +{ + "title": "События", + "adminEvents": "События администратора", + "time": "Время", + "user": "Пользователь", + "username": "Имя пользователя", + "email": "E-mail", + "eventType": "Тип события", + "ipAddress": "IP адрес", + "client": "клиент", + "realm": "Realm", + "resourcePath": "Путь к ресурсу", + "resourceType": "Тип ресурса", + "resourceTypes": "Типы ресурсов", + "operationType": "Тип операции", + "operationTypes": "Типы операций", + "auth": "Аутентификация", + "value": "Значение", + "representation": "Представление" +} \ No newline at end of file diff --git a/public/resources/ru/groups.json b/public/resources/ru/groups.json new file mode 100644 index 0000000000..6df859bb62 --- /dev/null +++ b/public/resources/ru/groups.json @@ -0,0 +1,9 @@ +{ + "createGroup": "Создать группу", + "members": "Члены", + "create": "Создать", + "email": "E-mail", + "lastName": "Фамилия", + "firstName": "Имя", + "attributes": "Атрибуты" +} \ No newline at end of file diff --git a/public/resources/ru/identity-providers-help.json b/public/resources/ru/identity-providers-help.json new file mode 100644 index 0000000000..64d745299c --- /dev/null +++ b/public/resources/ru/identity-providers-help.json @@ -0,0 +1,37 @@ +{ + "redirectURI": "Этот uri перенаправления используется в том случае, если сконфигурирован поставщик идентификации.", + "alias": "Синоним уникально идентифицирует поставщика идентификации, а также используется для построения адреса переадресации.", + "displayName": "Дружелюбное имя для провайдеров идентификации.", + "clientId": "Идентификатор клиента, зарегистрированный с помощью поставщика идентификации.", + "clientSecret": "Секрет клиента, зарегистрированный с помощью поставщика идентификации.", + "discoveryEndpoint": "Импорт метаданных из дескриптора развертывания удаленного поставщика идентификации.", + "importConfig": "Импорт метаданных со скачанного дескриптора развертывания удаленного поставщика идентификации.", + "logoutUrl": "Конечная точка окончания сессии, используемая для выхода пользователя из внешнего IDP.", + "backchannelLogout": "Поддерживает ли внешний IDP backchannel logout?", + "disableUserInfo": "Отключить использование сервиса информации о пользователе, чтобы получить дополнительную информацию о пользователе? По умолчанию используется сервис OIDC.", + "userInfoUrl": "Url информации о пользователе. Это поле опционально.", + "issuer": "Идентификатор эмитента для эмитента ответа. Если не предоставлен, проверка не будет выполняться.", + "scopes": "Области, которые будут посланы после запроса авторизации. Это может быть список областей, разделенных пробелом. По умолчанию 'openid'.", + "validateSignature": "Включить/выключить проверку подписей внешних поставщиков идентификации.", + "useJwksUrl": "Если включено, то публичные ключи поставщиков идентификации будет скачаны с заданного JWKS URL. Это дает дополнительную гибкость, так как новые ключи скачиваются каждый раз когда поставщик идентификации создает новую пару. Если выключено, то будут использованы публичные ключи (или сертификат) из базы данных Keycloak, и в случае изменений пары на поставщике идентификации вам будет необходимо каждый раз импортировать новые ключи в базу данных Keycloak.", + "storeTokens": "Включено/выключено хранение токенов после аутентификации пользователя.", + "storedTokensReadable": "Включено/выключено чтение новыми пользователями любых сохраненных токенов. Это назначается ролью broker.read-token.", + "trustEmail": "Если включено, то E-mail, предоставленный этим поставщиком не будет подтвержденным даже если подтверждение включено для realm.", + "accountLinkingOnly": "Если установлено, то пользователи не смогут войти через этого провайдера. Только устанавливает связь к этому провайдеру. Используется, если вы не хотите разрешать вход через этого провайдера, но хотите с этим провайдером иметь интеграцию.", + "hideOnLoginPage": "Если скрыто, то вход с этим провайдером возможен только при явном вызове, например при использовании параметра 'kc_idp_hint'.", + "firstBrokerLoginFlowAlias": "Синоним сценария аутентификации, который срабатывает после первого входа с этого поставщика идентификации. Термин 'First Login' означает, что еще не существует учетной записи Keycloak связанной с аутентифицированной учетной записью поставщика идентификации.", + "useEntityDescriptor": "Импортировать метаданные из удаленного дескриптора сущностей IDP SAML.", + "samlEntityDescriptor": "Позволяет вам загрузить метаданные внешнего IDP из файла конфигурации или скачать его из URL.", + "ssoServiceUrl": "Url, который должен быть использован для отправленных запросов на аутентификацию (SAML AuthnRequest).", + "singleLogoutServiceUrl": "Url, который должен быть использован для отправленных запросов на выход.", + "principalType": "Определяет, каким образом Keycloak идентифицирует внешних пользователей по SAML-сообщению. По умолчанию идентификация происходит по Subject NameID, в качестве альтернативы можно использовать атрибут-идентификатор.", + "principalAttribute": "Имя (Name) или \"дружественное имя\" (Friendly Name) атрибута, идентифицирующего внешних пользователей.", + "httpPostBindingResponse": "Указывает, необходоимо ли отвечать на завпросы, используя привязку HTTP-POST. Если не задано, то будет использован HTTP-REDIRECT.", + "httpPostBindingAuthnRequest": "Указывает, должны ли AuthnRequest быть посланы, используя привязку HTTP-POST. Если нет, то будет использован HTTP-REDIRECT.", + "wantAuthnRequestsSigned": "Указывает, ожидает ли поставщик идентификации подписанных AuthnRequest.", + "signatureAlgorithm": "Алгоритм, используемый для подписи документов.", + "forceAuthentication": "Указывает, должен ли поставщик идентификации аутентифицировать ведущего напрямую, а не использовать предыдущий контекст безопасности.", + "validateSignatures": "Включает/выключает проверку подписи ответов от SAML.", + "validatingX509Certs": "Сертификат в формате PEM, который должен быть использован для проверки подписи.", + "addIdpMapperName": "Наименование сопоставления." +} \ No newline at end of file diff --git a/public/resources/ru/identity-providers.json b/public/resources/ru/identity-providers.json new file mode 100644 index 0000000000..f0093b0c76 --- /dev/null +++ b/public/resources/ru/identity-providers.json @@ -0,0 +1,50 @@ +{ + "addIdPMapper": "Добавить сопоставление поставщика учетных записей", + "redirectURI": "URI перенаправления", + "clientId": "ID клиента", + "clientSecret": "Секрет клиента", + "endpoints": "Конечные точки", + "alias": "Синоним", + "ssoServiceUrl": "Адрес сервиса единой точки входа", + "singleLogoutServiceUrl": "Адреса сервиса единого выхода", + "nameIdPolicyFormat": "Формат политики NameID", + "email": "E-mail", + "unspecified": "неопределенный", + "principalType": "Тип идентификации", + "principalAttribute": "Атрибут-идентификатор", + "httpPostBindingResponse": "Привязанный ответ HTTP-POST", + "httpPostBindingAuthnRequest": "Привязывание HTTP-POST для AuthnRequest", + "httpPostBindingLogout": "Привязывание HTTP-POST для выхода", + "wantAuthnRequestsSigned": "Ожидание подписи AuthnRequests", + "samlSignatureKeyName": "Наименование ключа сигнатуры SAML", + "forceAuthentication": "Принудительная аутентификация", + "validatingX509Certs": "Проверка X509 сертификатов", + "authorizationUrl": "URL авторизации", + "tokenUrl": "URL токена", + "logoutUrl": "URL выхода", + "backchannelLogout": "Backchannel Logout", + "disableUserInfo": "Отключить информацию о пользователе", + "userInfoUrl": "URL информации о пользователе", + "issuer": "Эмитент", + "scopes": "Области", + "prompt": "Подсказка", + "prompts": { + "none": "нет", + "consent": "согласие", + "login": "вход" + }, + "clientAuthentication": "Аутентификация клиента", + "validateSignature": "Проверка подписей", + "useJwksUrl": "Использовать JWKS URL", + "jwksUrl": "JWKS URL", + "storeTokens": "Хранение токенов", + "storedTokensReadable": "Сохраненные токены доступны на чтение", + "trustEmail": "Подтверждение E-mail", + "accountLinkingOnly": "Только связывание учетной записи", + "hideOnLoginPage": "Скрыть на странице входа", + "firstBrokerLoginFlowAlias": "Сценарий первого входа", + "postBrokerLoginFlowAlias": "Сценарий после входа", + "mapperType": "Тип сопоставления", + "selectRole": "Выберите роль", + "userAttribute": "Атрибут пользователя" +} \ No newline at end of file diff --git a/public/resources/ru/realm-settings-help.json b/public/resources/ru/realm-settings-help.json new file mode 100644 index 0000000000..153a998046 --- /dev/null +++ b/public/resources/ru/realm-settings-help.json @@ -0,0 +1,23 @@ +{ + "requireSsl": "Требуется ли HTTPS? 'нет' означает, что HTTPS не требуется для клиентов с любым IP адресом. 'Внешние запросы' означает, что localhost и внутренние IP адреса могут получить доступ без HTTPS. 'Все запросы' означает, что HTTPS требуется вне зависимости от IP адреса.", + "accountTheme": "Выберите тему для управления учетной записью пользователя.", + "adminConsoleTheme": "Выберите тему для консоли администратора.", + "emailTheme": "Выберите тему для E-mail, которые будут отсылаться с сервера.", + "save-user-events": "Если включено, то события будут сохранены в базу данных, что сделает их доступными администратору и консоли управления учетной записью.", + "save-admin-events": "Если включено, то события администратора будет сохранены в базу данных, что сделает их доступными через консоль администратора.", + "expiration": "Установить срок истечения для событий. Истекшие события периодически удаляются из базы данных.", + "admin-clearEvents": "Удалить все события администратора из базы данных.", + "includeRepresentation": "Включить JSON представление для запросов на создание и обновление.", + "failureFactor": "Количество неудачных попыток входа до блокировки пользователя.", + "waitIncrementSeconds": "Если порог ошибок превышен, сколько времени пользователь будет заблокирован?", + "maxFailureWaitSeconds": "Максимальное время, на которое пользователь будет заблокирован.", + "maxDeltaTimeSeconds": "Через какое время счетчик неудачных попыток будет сброшен?", + "quickLoginCheckMilliSeconds": "Если попытки аутентификации происходят слишком часто, то пользователя необходимо заблокировать.", + "minimumQuickLoginWaitSeconds": "Как долго ждать после неудачной попытки быстрого входа.", + "ssoSessionIdle": "Допустимое время бездействия сессии. По истечении этого времени токены и браузерные сессии становятся невалидными.", + "ssoSessionMax": "Максимальное время до того, как истечет сессия. По истечении этого времени токены и браузерные сессии становятся невалидными.", + "offlineSessionIdle": "Допустимое время бездействия оффлайн сессии. Вам необходимо использовать оффлайн токен для обновления хотя бы раз за этот период, иначе сессия истечет.", + "revokeRefreshToken": "Если включено, то токены обновления могут быть использованы один раз. Иначе токен отзываться не будет и может использоваться многократно.", + "clientLoginTimeout": "Максимальное время клиента для завершения протокола access token. Обычно устанавливается равным 1-ой минуте.", + "editUsername": "Если включено,то имя пользователя можно будет отредактировать, иначе оно будет доступным только для чтения." +} \ No newline at end of file diff --git a/public/resources/ru/realm-settings.json b/public/resources/ru/realm-settings.json new file mode 100644 index 0000000000..ab2b7a1b19 --- /dev/null +++ b/public/resources/ru/realm-settings.json @@ -0,0 +1,115 @@ +{ + "partialImport": "Частичный импорт", + "general": "Главная", + "login": "вход", + "themes": "Темы", + "events": "События", + "eventListeners": "Слушатели событий", + "eventListenersHelpText": "Настройка слушателей, получающих события для realm.", + "adminEventsSettings": "Настройки событий администратора", + "saveEvents": "Сохранять события", + "expiration": "Истечение", + "clearAdminEvents": "Очистить события администратора", + "includeRepresentation": "Включить представление", + "email": "E-mail", + "from": "От", + "host": "Сервер", + "port": "Порт", + "authentication": "Аутентификация", + "enableSSL": "Включить SSL", + "enableStartTLS": "Включить StartTLS", + "username": "Имя пользователя", + "password": "Пароль", + "keys": "Ключи", + "keystore": "Хранилище ключей", + "keyAlias": "Синоним ключа", + "keyPassword": "Пароль для ключа", + "providers": "Поставщики", + "consoleDisplayName": "Наименование в консоли", + "active": "Активные", + "type": "Тип", + "providerId": "ID", + "kid": "KID", + "provider": "Поставщик", + "publicKeys": "Публичные ключи", + "certificate": "Сертификат", + "userRegistration": "Самостоятельная регистрация пользователей", + "userRegistrationHelpText": "Включить/выключить страницу регистрации. Ссылка для регистрации будет также показана на странице входа.", + "rememberMe": "Запомнить меня", + "rememberMeHelpText": "Показать чекбокс на странице входа, чтобы разрешить пользователю запомнить вход в учетную запись в случае если браузерная сессия устареет.", + "emailAsUsername": "E-mail как имя пользователя", + "loginWithEmail": "Вход по E-mail", + "loginWithEmailHelpText": "Разрешает пользователям входить с помощью E-mail.", + "duplicateEmails": "Дублирующиеся E-mail", + "duplicateEmailsHelpText": "Разрешает разным пользователям иметь один и тот же E-mail. Изменение этой настройки также очистит пользовательский кэш. После выключения поддержки дублирующихся email рекомендуется вручную почистить в базе данных ограничения по E-mail существующим пользователям.", + "verifyEmail": "Подтверждение E-mail", + "editUsername": "Редактируемое имя пользователя", + "testConnection": "Тест соединения", + "htmlDisplayName": "Отображаемое название в HTML", + "requireSsl": "Требует SSL", + "sslType": { + "all": "все запросы", + "external": "внешние запросы", + "none": "нет" + }, + "endpoints": "Конечные точки", + "loginTheme": "Тема страницы входа", + "accountTheme": "Тема учетной записи", + "adminTheme": "Тема консоли администратора", + "emailTheme": "Тема для E-mail", + "sessions": "Сессии", + "SSOSessionIdle": "Таймаут сессии SSO", + "SSOSessionMax": "Ограничение сессии SSO", + "offlineSessionIdle": "Таймаут оффлайн сессии", + "loginTimeout": "Таймаут входа", + "loginActionTimeout": "Таймаут действий по входу", + "revokeRefreshToken": "Одноразовые токены обновления", + "accessTokenLifespan": "Продолжительность жизни токена доступа", + "accessTokenLifespanImplicitFlow": "Продолжительность жизни токена доступа для Implicit Flow", + "clientLoginTimeout": "Таймаут авторизации клиента", + "createPolicy": "Создать политику", + "policies": "Политики", + "clientProfileDescription": "Описание", + "back": "Назад", + "save": "Сохранить", + "tokens": "Токены", + "attributes": "Атрибуты", + "status": "Статус", + "supportedLocales": "Поддерживаемые языки", + "defaultLocale": "Язык по умолчанию", + "user": "Пользователь", + "validatorDialogColNames": { + "colName": "Наименование роли" + }, + "validatorColNames": { + "colConfig": "Конфигурация" + }, + "eventTypes": { + "IMPERSONATE": { + "name": "Имперсонировать" + }, + "LOGOUT": { + "name": "Выход" + }, + "REGISTER": { + "name": "Регистрация" + }, + "RESET_PASSWORD": { + "name": "Сброс пароля" + } + }, + "deleteEvents": "Очистить события", + "defaultRoles": "Роли по умолчанию", + "defaultGroups": "Группы по умолчанию", + "securityDefences": "Защита безопасности", + "headers": "Заголовки", + "bruteForceDetection": "Определение Brute Force", + "xFrameOptions": "X-Frame-Options", + "contentSecurityPolicy": "Content-Security-Policy", + "xContentTypeOptions": "X-Content-Type-Options", + "failureFactor": "Максимальное количество неудачных попыток входа", + "waitIncrementSeconds": "Порог ожидания", + "maxFailureWaitSeconds": "Максимальное ожидание", + "maxDeltaTimeSeconds": "Время сброса неудачных попыток", + "minimumQuickLoginWaitSeconds": "Минимальное ожидание быстрого входа" +} \ No newline at end of file diff --git a/public/resources/ru/realm.json b/public/resources/ru/realm.json new file mode 100644 index 0000000000..3ebed99188 --- /dev/null +++ b/public/resources/ru/realm.json @@ -0,0 +1,3 @@ +{ + "enabled": "Включено" +} \ No newline at end of file diff --git a/public/resources/ru/roles.json b/public/resources/ru/roles.json new file mode 100644 index 0000000000..369919c07e --- /dev/null +++ b/public/resources/ru/roles.json @@ -0,0 +1,13 @@ +{ + "associatedRolesText": "Ассоциированные роли", + "title": "Роли Realm", + "addRole": "Добавить роль", + "roleName": "Наименование роли", + "composite": "Составная", + "addUser": "Добавить пользователя", + "users": "Пользователи", + "userName": "Имя пользователя", + "email": "E-mail", + "lastName": "Фамилия", + "firstName": "Имя" +} \ No newline at end of file diff --git a/public/resources/ru/sessions.json b/public/resources/ru/sessions.json new file mode 100644 index 0000000000..5a2cf44833 --- /dev/null +++ b/public/resources/ru/sessions.json @@ -0,0 +1,10 @@ +{ + "title": "Сессии", + "lastAccess": "Последний доступ", + "revocation": "Отзыв", + "notBefore": "Не ранее чем", + "setToNow": "Установить на сейчас", + "clear": "Очистить", + "push": "Разослать", + "none": "нет" +} \ No newline at end of file diff --git a/public/resources/ru/user-federation-help.json b/public/resources/ru/user-federation-help.json new file mode 100644 index 0000000000..1efce04c45 --- /dev/null +++ b/public/resources/ru/user-federation-help.json @@ -0,0 +1,13 @@ +{ + "vendorHelp": "LDAP поставщик (провайдер)", + "consoleDisplayConnectionUrlHelp": "URL соединения с вашим сервером LDAP", + "connectionTimeoutHelp": "Таймаут соединения с LDAP в миллисекундах", + "bindCredentialsHelp": "Пароль администратора LDAP", + "editModeLdapHelp": "READ_ONLY означает доступ только на чтение из LDAP. WRITABLE означает, что данные будут обратно синхронизированы в LDAP по заявке. UNSYNCED означает, что данные пользователя будут импортированы, но не синхронизированы обратно в LDAP.", + "fullSyncPeriodHelp": "Период для полной синхронизации в секундах", + "changedUsersSyncHelp": "Период для синхронизации измененных или вновь созданных пользователей LDAP в секундах", + "trustEmailHelp": "Если включено, то E-mail, предоставленный этим поставщиком не будет подтвержденным даже если подтверждение включено для realm.", + "debugHelp": "Включить/выключить отладочные логи в стандартный вывод для Krb5LoginModule.", + "allowPasswordAuthenticationHelp": "Включить/выключить возможность аутентификации по имени/пароля вопреки базе данных Kerberos", + "updateFirstLoginHelp": "Обновить профиль при первом входе" +} \ No newline at end of file diff --git a/public/resources/ru/user-federation.json b/public/resources/ru/user-federation.json new file mode 100644 index 0000000000..17bc2f16b7 --- /dev/null +++ b/public/resources/ru/user-federation.json @@ -0,0 +1,42 @@ +{ + "userFederation": "Федерация пользователей", + "unlinkUsers": "Отвязать пользователей", + "removeImported": "Удалить импортированных", + "consoleDisplayName": "Наименование в консоли", + "vendor": "Поставщик", + "connectionURL": "URL соединения", + "enableStartTls": "Включить StartTLS", + "useTruststoreSpi": "Использование доверенных сертификатов SPI", + "connectionPooling": "Пул соединений", + "connectionTimeout": "Таймаут соединения", + "bindType": "Тип аутентификации", + "bindDn": "Сопоставление DN", + "editMode": "Режим редактирования", + "usersDN": "Пользователи DN", + "usernameLdapAttribute": "Атрибут Username в LDAP", + "rdnLdapAttribute": "Атрибут RDN в LDAP", + "uuidLdapAttribute": "Атрибут UUID в LDAP", + "userObjectClasses": "Классы объектов пользователя", + "searchScope": "Поиск области", + "readTimeout": "Таймаут чтения", + "pagination": "Постраничный вывод", + "importUsers": "Импортировать пользователей", + "batchSize": "Размер пачки", + "periodicFullSync": "Периодическая полная синхронизация", + "fullSyncPeriod": "Период полной синхронизации", + "periodicChangedUsersSync": "Периодическая синхронизация изменений пользователей", + "changedUsersSyncPeriod": "Период синхронизации измененных пользователей", + "kerberosIntegration": "Интеграция с Kerberos", + "allowKerberosAuthentication": "Разрешить аутентификацию Kerberos", + "useKerberosForPasswordAuthentication": "Использовать Kerberos для аутентификации по паролю", + "trustEmail": "Подтверждение E-mail", + "requiredSettings": "Требуемые настройки", + "kerberosRealm": "Kerberos Realm", + "serverPrincipal": "Основной сервер", + "debug": "Отладчик", + "allowPasswordAuthentication": "Разрешить аутентификацию по паролю", + "testAuthentication": "Проверка аутентификации", + "ldapMappersList": "Сопоставления LDAP", + "ldapFilter": "LDAP фильтр", + "selectRole": "Выберите роль" +} \ No newline at end of file diff --git a/public/resources/ru/users-help.json b/public/resources/ru/users-help.json new file mode 100644 index 0000000000..e794182285 --- /dev/null +++ b/public/resources/ru/users-help.json @@ -0,0 +1,6 @@ +{ + "temporaryLocked": "Пользователь может быть заблокирован в случае многократных неудачных попыток входа.", + "emailVerified": "Должен ли пользователь подтверждать свой E-mail?", + "requiredUserActions": "Требует действий от пользователя когда он входит. 'Подтвердить E-mail' высылает письмо пользователю для подтверждения его E-mail. 'Обновить профиль' требует от пользователя ввести новую персональную информацию. 'Обновить пароль' требует от пользователя ввести новый пароль. 'Настроить OTP' требует установить мобильное приложение генерации паролей.", + "groups": "Пользователь является членом группы. Выберите в списке группу и нажмите кнопку Покинуть, чтобы покинуть группу." +} \ No newline at end of file diff --git a/public/resources/ru/users.json b/public/resources/ru/users.json new file mode 100644 index 0000000000..676a520a27 --- /dev/null +++ b/public/resources/ru/users.json @@ -0,0 +1,33 @@ +{ + "title": "Пользователи", + "join": "Присоединиться", + "leave": "Покинуть", + "groupMembership": "Членство в группах", + "createdAt": "Создан", + "username": "Имя пользователя", + "email": "E-mail", + "emailVerified": "Подтверждение E-mail", + "lastName": "Фамилия", + "firstName": "Имя", + "status": "Статус", + "requiredUserActions": "Требуемые действия от пользователя", + "addUser": "Добавить пользователя", + "impersonate": "Имперсонировать", + "verifyEmail": "Подтверждение E-mail", + "consents": "Согласия", + "identityProvider": "Поставщик идентификации", + "identityProviderLinks": "Ссылки поставщика идентификации", + "revoke": "Отобрать", + "save": "Сохранить", + "credentialType": "Тип", + "password": "Пароль", + "passwordConfirmation": "Подтверждение пароля", + "resetPassword": "Сброс пароля", + "showPasswordDataValue": "Значение", + "credentialResetBtn": "Сброс учетных данных", + "resetActions": "Действия сброса", + "hours": "часов", + "minutes": "минут", + "seconds": "секунд", + "credentialResetConfirm": "Послать письмо" +} \ No newline at end of file diff --git a/public/resources/zh-CN/authentication-help.json b/public/resources/zh-CN/authentication-help.json new file mode 100644 index 0000000000..2ee2b57f04 --- /dev/null +++ b/public/resources/zh-CN/authentication-help.json @@ -0,0 +1,9 @@ +{ + "flowType": "它是什么样的形式", + "topLevelFlowType": "什么样的顶层流是什么?类型“客户端”用于客户端(应用程序)的认证,当通用是为用户和其他", + "alias": "配置的名称", + "otpType": "totp是基于时间的一次性密码。 'hotp'是一个计数器基本一次性密码,其中服务器保持一个计数器哈希。", + "otpHashAlgorithm": "应该使用什么散列算法来生成OTP。", + "otpPolicyDigits": "OTP有多少位?", + "otpPolicyPeriod": "OTP令牌有效多少秒?默认为30秒。" +} \ No newline at end of file diff --git a/public/resources/zh-CN/authentication.json b/public/resources/zh-CN/authentication.json new file mode 100644 index 0000000000..be16592465 --- /dev/null +++ b/public/resources/zh-CN/authentication.json @@ -0,0 +1,35 @@ +{ + "title": "验证", + "flows": "流量", + "requiredActions": "必需操作", + "policies": "策略", + "passwordPolicy": "密码策略", + "otpPolicy": "OTP策略", + "otpType": "OTP类型", + "policyType": { + "totp": "基于时间的", + "hotp": "基于计数器" + }, + "otpHashAlgorithm": "OTP哈希算法", + "otpPolicyDigits": "位数", + "lookAhead": "向前看窗口", + "otpPolicyPeriod": "OTP令牌周期", + "initialCounter": "初始计数器", + "attestationPreference": { + "none": "none" + }, + "flow": { + "browserFlow": "浏览器流", + "registrationFlow": "注册流程", + "directGrantFlow": "直接授权流" + }, + "edit": "编辑", + "flowType": "流类型", + "flow-type": { + "basic-flow": "generic", + "form-flow": "form" + }, + "addExecution": "添加执行", + "requirement": "需求", + "alias": "别名" +} \ No newline at end of file diff --git a/public/resources/zh-CN/client-scopes-help.json b/public/resources/zh-CN/client-scopes-help.json new file mode 100644 index 0000000000..9ea74e8d84 --- /dev/null +++ b/public/resources/zh-CN/client-scopes-help.json @@ -0,0 +1,10 @@ +{ + "name": "客户端模板的名称。在领域中必须是唯一的", + "description": "客户端模板的描述", + "protocol": "此客户端模板提供的SSO协议配置", + "prefix": "每个领域角色的前缀(可选)。", + "multiValued": "表示此值是否支持多值.如果为真,所有值会设置为已知。如果为假,只有第一个值是已知。", + "tokenClaimName": "token中加入的申请者名. 这可以是个完整的分级信息例如 'address.street'. 这种情况下,会生成一个复杂的json回复", + "claimJsonType": "用来展现申请的JSON 类型 long, int, boolean, 和 String 是有效值", + "protocolMapper": "协议..." +} \ No newline at end of file diff --git a/public/resources/zh-CN/client-scopes.json b/public/resources/zh-CN/client-scopes.json new file mode 100644 index 0000000000..44ee42f73d --- /dev/null +++ b/public/resources/zh-CN/client-scopes.json @@ -0,0 +1,8 @@ +{ + "protocol": "协议", + "type": "类型", + "realmRolePrefix": "Realm角色前缀", + "realmRoles": "Realm角色", + "clients": "客户端", + "scope": "范围" +} \ No newline at end of file diff --git a/public/resources/zh-CN/clients-help.json b/public/resources/zh-CN/clients-help.json new file mode 100644 index 0000000000..8a1705ae54 --- /dev/null +++ b/public/resources/zh-CN/clients-help.json @@ -0,0 +1,87 @@ +{ + "clientType": "'OpenID connect'允许客户端基于授权服务器执行的认证来验证最终用户的身份。'SAML'启用基于Web的身份验证和授权方案,包括跨域单点登录(SSO),并使用包含断言的安全令牌传递信息。", + "serviceAccount": "允许您向Keycloak验证此客户端并检索专用于此客户端的访问令牌。在OAuth2规范方面,这将支持此客户端的“客户端凭据授予”。", + "authorization": "启用/禁用客户端的细粒度授权支持", + "directAccess": "这启用对直接访问授权的支持,这意味着客户端可以访问用户的用户名/密码,并直接与Keycloak服务器交换访问令牌。在OAuth2规范方面,这允许支持此客户端的“资源所有者密码凭据授权”。", + "standardFlow": "这使标准的基于OpenID Connect重定向的身份验证与授权码。根据OpenID Connect或OAuth2规范,这将支持此客户端的“授权代码流”。", + "implicitFlow": "这启用对无授权代码的基于OpenID Connect重定向的身份验证的支持。根据OpenID Connect或OAuth2规范,这将支持此客户端的“隐式流”。", + "rootURL": "附加到相对URL的根URL", + "validRedirectURIs": "浏览器可以在成功登录或注销后重定向到的有效URI模式。允许使用简单通配符,即“http://example.com/*”。也可以指定相对路径,即/ my / relative / path / *。相对路径是相对于客户端根URL的,如果没有指定,则使用auth服务器根URL。对于SAML,如果您依赖嵌入登录请求的使用者服务URL,则必须设置有效的URI模式。", + "nameIdFormat": "要用于主题的名称ID格式。", + "forceNameIdFormat": "忽略请求的NameID主题格式并使用管理控制台配置的。", + "forcePostBinding": "始终对POST响应使用POST绑定。", + "includeAuthnStatement": "是否应该在登录响应中包含指定方法和时间戳的语句?", + "optimizeLookup": "在由Keycloak适配器保护的SP的REDIRECT绑定中签名SAML文档时,如果签名密钥的ID包含在元素中的SAML协议消息中?这将优化签名的验证,因为验证方使用单个密钥,而不是尝试每个已知密钥进行验证。", + "signDocuments": "SAML文档是否应该由领域签名?", + "signAssertions": "SAML文档中的断言是否应该签名?如果文档已签署,则不需要此设置。", + "signatureAlgorithm": "用于签署文档的签名算法。", + "canonicalization": "XML签名的规范化方法。", + "webOrigins": "允许的CORS起点。要允许有效重定向URI的所有来源,请添加“+”。允许所有起点添加'*'。", + "homeURL": "当auth服务器需要重定向或链接回客户端时使用的默认URL。", + "adminURL": "客户端管理界面的URL。如果客户端支持适配器REST API,请设置此选项。此REST API允许auth服务器推送吊销策略和其他管理任务。通常将此设置为客户端的基本URL。", + "client": "选择进行此授权请求的客户端。如果未提供,授权请求将根据您所在的客户端完成。", + "clientId": "指定在URI和令牌中引用的ID。例如“my-client”。对于SAML,这也是authn请求的预期发放者值", + "selectUser": "选择一个用户,其身份将被用于查询服务器的权限。", + "roles": "选择要与所选用户关联的角色。", + "contextualAttributes": "由正在运行的环境或执行上下文提供的任何属性。", + "applyToResourceType": "指定是否将此权限应用于具有给定类型的所有资源。 在这种情况下,将对给定资源类型的所有实例评估此权限。", + "resources": "指定此权限必须应用于特定资源实例。", + "scopesSelect": "指定此权限必须应用于一个或多个作用域。", + "clientName": "指定客户端的显示名称。例如“我的客户端”。支持本地化值的键。例如\\uff1a$ {my_client}", + "description": "指定客户端的描述。例如“我的客户端的时间表”。支持本地化值的键。例如\\uff1a$ {my_client_description}", + "loginTheme": "为登录、授权、注册、忘记密码界面选择页面主题", + "encryptAssertions": "是否应使用AES通过客户端的公钥对SAML断言进行加密?", + "clientSignature": "客户端是否签署了saml请求和响应?他们应该验证吗?", + "expiration": "指定令牌有效的时间", + "count": "指定可以使用令牌创建多少个客户端", + "client-authenticator-type": "客户端身份验证器用于认证此客户端对Keycloak服务器", + "registration-access-token": "注册访问令牌为客户端提供对客户端注册服务的访问。", + "nodeReRegistrationTimeout": "指定注册的客户端群集节点重新注册的最大时间的间隔。如果集群节点在此时间内不会向Keycloak发送重新注册请求,则它将从Keycloak注销", + "userInfoSignedResponseAlgorithm": "用于签名的用户信息端点响应的JWA算法。如果设置为“unsigned”,则用户信息响应将不会被签名,并将以application / json格式返回。", + "requestObjectSignatureAlgorithm": "JWA算法,客户端在发送由'request'或'request_uri'参数指定的OIDC请求对象时需要使用。如果设置为“any”,则Request对象可以由任何算法(包括“none”)签名。", + "idpInitiatedSsoUrlName": "当您想要进行IDP发起的SSO时,引用客户端的URL片段名称。留下此空将禁用IDP启动的SSO。您将从浏览器引用的URL为:{server-root} / realms / {realm} / protocol / saml / clients / {client-url-name}", + "idpInitiatedSsoRelayState": "当您想要执行IDP发起的SSO时,要使用SAML请求发送的中继状态。", + "masterSamlProcessingUrl": "如果配置,此URL将用于每次绑定到SP的断言使用者和单一注销服务。这可以对细粒度SAML端点配置中的每个绑定和服务单独进行覆盖。", + "accessTokenLifespan": "access token最长有效时间,这个值推荐要比SSO超时要短一些。", + "assertionConsumerServicePostBindingURL": "SAML POST绑定客户端断言使用者服务的URL(登录响应)。如果您没有此绑定的URL,则可以将此字段留空。", + "assertionConsumerServiceRedirectBindingURL": "SAML重定向客户端断言使用者服务的绑定URL(登录响应)。如果您没有此绑定的URL,则可以将此字段留空。", + "logoutServicePostBindingURL": "SAML POST绑定客户端单一注销服务的URL。如果使用不同的绑定,则可以将此留空", + "logoutServiceRedirectBindingURL": "SAML重定向客户端单一注销服务的绑定URL。如果使用不同的绑定,则可以将此留空。", + "frontchannelLogout": "当为true时,注销需要浏览器重定向到客户端。当为false时,服务器对注销执行后台调用。", + "browserFlow": "选择要用于浏览器身份验证的流。", + "directGrant": "选择要用于直接授予身份验证的流。", + "certificate": "客户端发出的验证JWT的客户端证书,由客户端私钥从您的密钥库签名。", + "jwksUrl": "存储JWK格式的客户端密钥的URL。有关更多详细信息,请参阅JWK规范。如果您使用带有“jwt”凭据的keycloak客户端适配器,那么您可以使用带有'/ k_jwks'后缀的应用程序的URL。例如“http://www.myhost.com/myapp/k_jwks”。", + "archiveFormat": "Java密钥库或PKCS12归档格式。", + "keyAlias": "存档您的私钥和证书的别名。", + "keyPassword": "访问存档中私钥的密码", + "storePassword": "访问归档本身的密码", + "consentRequired": "如果已启用的用户必须同意客户端访问。", + "import": "导入包含此资源服务器的授权设置的JSON文件。", + "policyEnforcementMode": "策略强制模式指示在评估授权请求时如何强制执行策略。 “Enforcing”表示即使没有与给定资源相关联的策略,也会默认拒绝请求。 “Permissive”表示即使没有与给定资源相关联的策略也允许请求。 “禁用”完全禁用策略的评估,并允许访问任何资源。", + "allowRemoteResourceManagement": "资源服务器是否应该远程管理资源?如果为false,则只能从此管理控制台管理资源。", + "resourceName": "此资源的唯一名称。 该名称可用于唯一标识资源,在查询特定资源时很有用。", + "type": "此资源的类型。 它可以用于对具有相同类型的不同资源实例进行分组。", + "uris": "也可以用于唯一标识此资源的URI。", + "scopes": "与此资源关联的范围。", + "fullScopeAllowed": "允许您禁用所有限制。", + "resetActions": "发送用户重置操作电子邮件时要执行的操作的集合。 “验证电子邮件”向用户发送电子邮件以验证其电子邮件地址。 “更新个人资料”要求用户输入新的个人信息。 “更新密码”要求用户输入新密码。 '配置OTP'需要设置移动密码生成器。", + "scopeName": "此作用域的唯一名称。该名称可用于唯一标识范围,在查询特定范围时很有用。", + "policy-name": "此策略的名称。", + "policy-description": "此策略的描述。", + "policyDecisionStagey": "决策策略规定如何评估与给定权限相关联的策略以及如何获得最终决策。 “肯定”意味着至少一个政策必须评估为积极的决定,以使最终决定也是积极的。 “一致”是指所有政策必须评估为一个积极的决定,以使最终决定也是积极的。 “共识”意味着积极决策的数量必须大于负面决策的数量。如果正数和负数相同,最终决定将为负数。", + "applyPolicy": "指定必须应用于此策略或权限定义的范围的所有策略。", + "policyGroups": "指定此策略允许哪些用户。", + "policyRoles": "指定此策略允许的客户端角色。", + "startTime": "定义不得授予策略的时间。仅当当前日期/时间晚于或等于此值时才被授予。", + "expireTime": "定义不能授予策略的时间。仅当当前日期/时间在此值之前或之前时才被授予。", + "month": "定义必须授予策略的月份。您还可以通过填充第二个字段来提供范围。在这种情况下,仅当当前月份介于或等于您提供的两个值之间时才会授予权限。", + "dayMonth": "定义必须授予策略的月份日期。您还可以通过填充第二个字段来提供范围。在这种情况下,只有当月的当天介于或等于您提供的两个值之后,才会授予权限。", + "hour": "定义策略必须被授予的小时。您还可以通过填充第二个字段来提供范围。在这种情况下,只有当前小时介于或等于您提供的两个值之间时才会授予权限。", + "minute": "定义策略必须被授予的分钟。您还可以通过填充第二个字段来提供范围。在这种情况下,仅当当前分钟介于或等于您提供的两个值之间时才会授予权限。", + "policyCode": "提供此策略条件的JavaScript代码。", + "logic": "逻辑决定如何进行策略决策。如果为“积极”,则在评估本政策期间获得的效果(许可或拒绝)将用于执行决策。如果为“否定”,则所得的效果将被否定,换句话说,许可证变为拒绝,反之亦然。", + "permissionName": "此权限的名称。", + "permissionDescription": "此权限的描述。", + "permissionType": "指定此权限必须应用于给定类型的所有资源实例。" +} \ No newline at end of file diff --git a/public/resources/zh-CN/clients.json b/public/resources/zh-CN/clients.json new file mode 100644 index 0000000000..dfd1238113 --- /dev/null +++ b/public/resources/zh-CN/clients.json @@ -0,0 +1,132 @@ +{ + "protocol": "协议", + "copy": "复制", + "clientAuthorization": "授权", + "importClient": "导入客户端", + "webOrigins": "Web起源", + "adminURL": "管理员网址", + "formatOption": "格式选项", + "encryptAssertions": "加密断言", + "clientSignature": "需要客户端签名", + "keys": "秘钥", + "credentials": "凭据", + "roles": "角色", + "addClientScope": "添加客户端模板", + "fullScopeAllowed": "允许的全范围", + "selectAUser": "选择用户", + "client": "client", + "evaluate": "评估", + "reevaluate": "重新评估", + "showAuthData": "显示授权数据", + "unanimous": "一致", + "affirmative": "肯定", + "consensus": "共识", + "authScopes": "授权范围", + "anyResource": "任何资源", + "anyScope": "任何作用域", + "selectScope": "选择范围", + "applyToResourceType": "应用于资源类型", + "contextualInfo": "上下文信息", + "contextualAttributes": "上下文属性", + "kc": { + "realm": { + "name": "领域" + } + }, + "password": "密码", + "settings": "设置", + "policyEnforcementMode": "策略强制模式", + "policyEnforcementModes": { + "ENFORCING": "强制", + "PERMISSIVE": "Permissive" + }, + "decisionStrategy": "决策策略", + "type": "类型", + "iconUri": "图标URI", + "allowRemoteResourceManagement": "远程资源管理", + "resources": "资源", + "resource": "资源", + "allTypes": "所有类型", + "scope": "范围", + "owner": "所有者", + "scopes": "范围", + "policies": "策略", + "createPermission": "创建权限", + "identityInformation": "身份信息", + "resourceType": "资源类型", + "createPolicy": "创建策略", + "applyPolicy": "应用策略", + "users": "用户", + "month": "month", + "hour": "小时", + "minute": "分钟", + "code": "代码", + "logic": "逻辑", + "logicType": { + "positive": "肯定", + "negative": "否定" + }, + "user": "用户", + "clientList": "客户端", + "initialAccessToken": "初始接入令牌", + "created": "创建", + "lastUpdated": "最后更新", + "expires": "到期", + "count": "Count", + "remainingCount": "剩余计数", + "expiration": "到期", + "clientAuthentication": "客户端验证", + "authentication": "验证", + "realmRoles": "Realm角色", + "frontchannelLogout": "前通道注销", + "rootUrl": "根URL", + "validRedirectUri": "有效的重定向URI", + "idpInitiatedSsoRelayState": "IDP发起的SSO中继状态", + "masterSamlProcessingUrl": "主SAML处理URL", + "nameIdFormat": "名称ID格式", + "forceNameIdFormat": "强制名称ID格式", + "forcePostBinding": "强制POST绑定", + "includeAuthnStatement": "Include AuthnStatement", + "optimizeLookup": "优化REDIRECT签名密钥查找", + "signDocuments": "签署文件", + "signAssertions": "符号断言", + "canonicalization": "规范化方法", + "loginTheme": "登录主题", + "clientAuthenticator": "客户端认证器", + "clientSecret": "客户端密钥", + "registrationAccessToken": "注册访问令牌", + "revocation": "回收", + "clustering": "聚类", + "notBefore": "不早于", + "setToNow": "设置到现在", + "addNode": "添加节点", + "push": "推送", + "clear": "清除", + "nodeReRegistrationTimeout": "节点重新注册超时", + "registeredClusterNodes": "注册的集群节点", + "nodeHost": "节点主机", + "lastRegistration": "最后一次注册", + "testClusterAvailability": "测试集群可用性", + "registerNodeManually": "手动注册节点", + "fineGrainOpenIdConnectConfiguration": "Fine Grain OpenID连接配置", + "fineGrainSamlEndpointConfig": "细粒度SAML端点配置", + "userInfoSignedResponseAlgorithm": "用户信息签名的响应算法", + "requestObjectSignatureAlgorithm": "请求对象签名算法", + "assertionConsumerServicePostBindingURL": "断言使用者服务POST绑定URL", + "assertionConsumerServiceRedirectBindingURL": "断言使用者服务重定向绑定URL", + "logoutServicePostBindingURL": "注销服务POST绑定URL", + "logoutServiceRedirectBindingURL": "注销服务重定向绑定URL", + "accessTokenLifespan": "Access Token 有效期", + "browserFlow": "浏览器流", + "directGrant": "直接授权流", + "useJwksUrl": "使用JWKS URL", + "certificate": "证书", + "jwksUrl": "JWKS URL", + "generateNewKeys": "生成新密钥", + "archiveFormat": "归档格式", + "keyAlias": "密钥别名", + "keyPassword": "密钥密码", + "storePassword": "存储密码", + "importFile": "导入文件", + "mappers": "Mappers" +} \ No newline at end of file diff --git a/public/resources/zh-CN/common-help.json b/public/resources/zh-CN/common-help.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/public/resources/zh-CN/common-help.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/public/resources/zh-CN/common.json b/public/resources/zh-CN/common.json new file mode 100644 index 0000000000..c5309b5240 --- /dev/null +++ b/public/resources/zh-CN/common.json @@ -0,0 +1,66 @@ +{ + "add": "添加", + "create": "创建", + "save": "保存", + "continue": "继续", + "remove": "删除", + "key": "Key", + "value": "Value", + "back": "返回", + "export": "导出", + "action": "Action", + "download": "下载", + "clear": "清除", + "on": "开", + "edit": "编辑", + "enabled": "开启", + "disable": "关闭", + "none": "none", + "signOut": "退出", + "manageAccount": "管理帐户", + "serverInfo": "服务器信息", + "testConnection": "测试连接", + "description": "描述", + "type": "类型", + "category": "目录", + "priority": "优先级", + "allTypes": "所有类型", + "manage": "管理", + "clients": "客户端", + "realmRoles": "Realm角色", + "users": "用户", + "sessions": "会话", + "events": "事件", + "mappers": "Mappers", + "permissions": "权限", + "configure": "配置", + "realmSettings": "领域设置", + "authentication": "验证", + "identityProviders": "身份提供者", + "userFederation": "用户联合", + "settings": "设置", + "details": "详细", + "Sunday": "星期天", + "Monday": "星期一", + "Tuesday": "星期二", + "Wednesday": "星期三", + "Thursday": "星期四", + "Friday": "星期五", + "Saturday": "星期六", + "times": { + "seconds": "秒", + "minutes": "分", + "hours": "小时", + "days": "天" + }, + "attributes": "属性", + "credentials": "凭据", + "clientId": "客户端 ID", + "id": "ID", + "mapperType": "映射器类型", + "leave": "离开", + "password": "密码", + "passwordConfirmation": "密码确认", + "temporaryPassword": "临时", + "temporaryPasswordHelpText": "如果启用,用户需要在下次登录时更改密码" +} \ No newline at end of file diff --git a/public/resources/zh-CN/dashboard.json b/public/resources/zh-CN/dashboard.json new file mode 100644 index 0000000000..7b84f30d00 --- /dev/null +++ b/public/resources/zh-CN/dashboard.json @@ -0,0 +1,3 @@ +{ + "serverInfo": "服务器信息" +} \ No newline at end of file diff --git a/public/resources/zh-CN/dynamic.json b/public/resources/zh-CN/dynamic.json new file mode 100644 index 0000000000..4ea6d8c828 --- /dev/null +++ b/public/resources/zh-CN/dynamic.json @@ -0,0 +1,72 @@ +{ + "selectARole": "选择角色", + "usermodel": { + "prop": { + "label": "属性", + "tooltip": "UserModel 接口中属性方法的名字. 例如, 'email' 会引用UserModel.getEmail() 方法." + }, + "attr": { + "label": "用户属性", + "tooltip": "在UserModel.attribute映射中定义的存储的用户属性名。" + }, + "clientRoleMapping": { + "client": { + "label": "客户端 ID", + "tooltip": "角色映射的客户端ID" + }, + "rolePrefix": { + "label": "客户端角色前缀", + "tooltip": "每个客户端角色的前缀(可选)。" + } + }, + "realmRoleMapping": { + "rolePrefix": { + "label": "Realm角色前缀", + "tooltip": "每个领域角色的前缀(可选)。" + } + } + }, + "userSession": { + "modelNote": { + "label": "用户会话标记", + "tooltip": "用户会话标记在 UserSessionModel.note映射中的属性名。" + } + }, + "multivalued": { + "label": "多值的", + "tooltip": "表示此值是否支持多值.如果为真,所有值会设置为已知。如果为假,只有第一个值是已知。" + }, + "selectRole": { + "label": "选择角色", + "tooltip": "在左边文本框输入角色或点击这个按钮浏览并选择您想要的角色。" + }, + "tokenClaimName": { + "label": "Token申请名", + "tooltip": "token中加入的申请者名. 这可以是个完整的分级信息例如 'address.street'. 这种情况下,会生成一个复杂的json回复" + }, + "jsonType": { + "label": "申请 JSON 的类型", + "tooltip": "用来展现申请的JSON 类型 long, int, boolean, 和 String 是有效值" + }, + "includeInIdToken": { + "label": "添加到ID令牌", + "tooltip": "是否应将声明添加到ID令牌?" + }, + "includeInAccessToken": { + "label": "添加到访问令牌", + "tooltip": "是否应该将声明添加到访问令牌?" + }, + "includeInUserInfo": { + "label": "添加到userinfo", + "tooltip": "是否应该将声明添加到userinfo?" + }, + "sectorIdentifierUri": { + "label": "扇区标识符URI", + "tooltip": "使用成对子值和支持的提供程序动态客户端注册应使用sector_identifier_uri参数。它为一组在共同管理控制下的网站提供了一种独立于各个域名的具有一致的成对子值的方法。它还为客户端更改redirect_uri域而不必重新注册其所有用户提供了一种方法。" + }, + "pairwiseSubAlgorithmSalt": { + "label": "Salt", + "tooltip": "计算成对主体标识符时使用的盐。如果留空,将产生盐。" + }, + "name-id-format": "名称ID格式" +} \ No newline at end of file diff --git a/public/resources/zh-CN/events.json b/public/resources/zh-CN/events.json new file mode 100644 index 0000000000..734a812aec --- /dev/null +++ b/public/resources/zh-CN/events.json @@ -0,0 +1,20 @@ +{ + "title": "事件", + "adminEvents": "管理事件", + "time": "时间", + "user": "用户", + "username": "用户名", + "email": "电子邮件", + "eventType": "事件类型", + "ipAddress": "IP地址", + "client": "client", + "realm": "领域", + "resourcePath": "资源路径", + "resourceType": "资源类型", + "resourceTypes": "资源类型", + "operationType": "操作类型", + "operationTypes": "操作类型", + "auth": "Auth", + "value": "Value", + "representation": "表示" +} \ No newline at end of file diff --git a/public/resources/zh-CN/groups.json b/public/resources/zh-CN/groups.json new file mode 100644 index 0000000000..3699b5676d --- /dev/null +++ b/public/resources/zh-CN/groups.json @@ -0,0 +1,9 @@ +{ + "createGroup": "创建组", + "members": "成员", + "create": "创建", + "email": "电子邮件", + "lastName": "姓氏", + "firstName": "名字", + "attributes": "属性" +} \ No newline at end of file diff --git a/public/resources/zh-CN/identity-providers-help.json b/public/resources/zh-CN/identity-providers-help.json new file mode 100644 index 0000000000..c20dc48aa4 --- /dev/null +++ b/public/resources/zh-CN/identity-providers-help.json @@ -0,0 +1,32 @@ +{ + "redirectURI": "配置身份提供程序时要使用的重定向uri。", + "alias": "别名唯一标识身份提供者,它也用于构建重定向uri。", + "displayName": "身份提供者的友好名称。", + "clientId": "向身份提供者注册的客户机标识符。", + "clientSecret": "向身份提供者注册的客户端密钥。", + "discoveryEndpoint": "从远程IDP发现描述符导入元数据。", + "importConfig": "从下载的IDP发现描述符导入元数据。", + "logoutUrl": "用于从外部IDP注销用户的会话终结点。", + "backchannelLogout": "外部IDP是否支持反向通道注销?", + "disableUserInfo": "禁用用户信息服务的使用以获取其他用户信息?默认是使用此OIDC服务。", + "userInfoUrl": "用户信息网址。这是可选的。", + "issuer": "响应的发行者的发行者标识符。如果未提供,将不执行验证。", + "scopes": "在请求授权时要发送的作用域。它可以是以空格分隔的范围列表。默认为'openid'。", + "validateSignature": "启用/禁用外部IDP签名的签名验证。", + "useJwksUrl": "如果交换机打开,那么将从给定的JWKS URL下载身份提供程序公钥。这允许很大的灵活性,因为当身份提供商生成新的密钥对时,新密钥将总是被重新下载。如果交换机关闭,则使用来自Keycloak DB的公钥(或证书),因此当身份提供商密钥更改时,您始终需要将新密钥导入到Keycloak数据库。", + "storeTokens": "如果在验证用户后必须存储令牌,则启用/禁用。", + "storedTokensReadable": "如果新用户可以读取任何存储的令牌,则启用/禁用。这将分配broker.read-token角色。", + "trustEmail": "如果启用,则此提供商提供的电子邮件不会验证,即使已启用对领域的验证。", + "firstBrokerLoginFlowAlias": "认证流的别名,在首次使用此身份提供者登录后触发。术语“首次登录”意味着尚未存在与认证身份提供商帐户链接的Keycloak帐户。", + "useEntityDescriptor": "从远程IDP SAML实体描述符导入元数据。", + "samlEntityDescriptor": "允许您从配置文件加载外部IDP元数据或从URL下载它。", + "ssoServiceUrl": "必须用于发送认证请求(SAML AuthnRequest)的URL。", + "singleLogoutServiceUrl": "必须用于发送注销请求的网址。", + "httpPostBindingAuthnRequest": "指示是否必须使用HTTP-POST绑定发送AuthnRequest。如果为false,将使用HTTP-REDIRECT绑定。", + "wantAuthnRequestsSigned": "指示身份提供者是否期望签署AuthnRequest。", + "signatureAlgorithm": "用于签署文档的签名算法。", + "forceAuthentication": "指示身份提供者是否必须直接认证演示者,而不是依赖以前的安全上下文。", + "validateSignatures": "启用/禁用SAML响应的签名验证。", + "validatingX509Certs": "必须用于检查签名的PEM格式的证书。可以输入多个证书,用逗号(,)分隔。", + "addIdpMapperName": "映射器的名称。" +} \ No newline at end of file diff --git a/public/resources/zh-CN/identity-providers.json b/public/resources/zh-CN/identity-providers.json new file mode 100644 index 0000000000..1c064e2a27 --- /dev/null +++ b/public/resources/zh-CN/identity-providers.json @@ -0,0 +1,44 @@ +{ + "addIdPMapper": "添加身份提供者映射器", + "redirectURI": "重定向URI", + "clientId": "客户端 ID", + "clientSecret": "客户端密钥", + "endpoints": "服务路径", + "alias": "别名", + "ssoServiceUrl": "单点登录服务URL", + "singleLogoutServiceUrl": "单一注销服务URL", + "nameIdPolicyFormat": "NameID策略格式", + "email": "电子邮件", + "unspecified": "未指定", + "httpPostBindingResponse": "HTTP-POST绑定响应", + "httpPostBindingAuthnRequest": "HTTP-POST AuthnRequest的绑定", + "wantAuthnRequestsSigned": "需要AuthnRequests签名", + "forceAuthentication": "强制验证", + "validatingX509Certs": "验证X509证书", + "authorizationUrl": "授权URL", + "tokenUrl": "令牌URL", + "logoutUrl": "注销URL", + "backchannelLogout": "Backchannel注销", + "disableUserInfo": "禁用用户信息", + "userInfoUrl": "用户信息URL", + "issuer": "发行人", + "scopes": "范围", + "prompt": "提示", + "prompts": { + "none": "none", + "consent": "同意", + "login": "login" + }, + "clientAuthentication": "客户端验证", + "validateSignature": "验证签名", + "useJwksUrl": "使用JWKS URL", + "jwksUrl": "JWKS URL", + "storeTokens": "存储令牌", + "storedTokensReadable": "存储令牌可读", + "trustEmail": "信任电子邮件", + "firstBrokerLoginFlowAlias": "第一登录流", + "postBrokerLoginFlowAlias": "登录后流程", + "mapperType": "映射器类型", + "selectRole": "选择角色", + "userAttribute": "用户属性" +} \ No newline at end of file diff --git a/public/resources/zh-CN/realm-settings-help.json b/public/resources/zh-CN/realm-settings-help.json new file mode 100644 index 0000000000..765f9596d9 --- /dev/null +++ b/public/resources/zh-CN/realm-settings-help.json @@ -0,0 +1,23 @@ +{ + "requireSsl": "是否需要HTTPS?‘无’代表对于任何客户端IP地址都不需要HTTPS,‘外部请求’代表localhost和私有ip地址可以不通过https访问,‘所有请求’代表所有IP地址都需要通过https访问。", + "accountTheme": "为用户管理界面选择主题", + "adminConsoleTheme": "为管理员控制台选择主题", + "emailTheme": "为服务器发送的邮件选择主题", + "save-user-events": "如果启用的登录事件保存到数据库,使事件可用于管理和帐户管理控制台。", + "save-admin-events": "如果已启用的管理事件保存到数据库,使事件可用于管理控制台。", + "expiration": "设置事件的到期时间。过期事件将定期从数据库中删除。", + "admin-clearEvents": "删除数据库中的所有管理事件。", + "includeRepresentation": "包含用于创建和更新请求的JSON表示。", + "failureFactor": "触发等待之前的失败次数。", + "waitIncrementSeconds": "当满足故障阈值时,用户应该锁定多长时间?", + "maxFailureWaitSeconds": "用户将被锁定的最长时间。", + "maxDeltaTimeSeconds": "何时将故障计数复位?", + "quickLoginCheckMilliSeconds": "如果故障同时发生太快,则锁定用户。", + "minimumQuickLoginWaitSeconds": "快速登录失败后等待多长时间。", + "ssoSessionIdle": "设置会话在过期之前可以空闲的时间长度,当会话过期时 Token 和浏览器会话都会被设置为无效。", + "ssoSessionMax": "会话的最大时间长度,当会话过期时 Token 和浏览器会话都会被设置为无效。", + "offlineSessionIdle": "离线会话允许的空闲时间。你需要使用离线Token在这段时间内至少刷新一次否则会话就会过期", + "revokeRefreshToken": "如果开启 refresh tokens只能使用一次,否则refresh token不会被收回并且可以使用多次", + "clientLoginTimeout": "客户端必须完成访问令牌协议的最大时间。这通常是1分钟。", + "editUsername": "如果开启,用户名域是可以编辑的。否则用户名域是只读的。" +} \ No newline at end of file diff --git a/public/resources/zh-CN/realm-settings.json b/public/resources/zh-CN/realm-settings.json new file mode 100644 index 0000000000..15522a73fe --- /dev/null +++ b/public/resources/zh-CN/realm-settings.json @@ -0,0 +1,113 @@ +{ + "partialImport": "部分导入", + "general": "通用", + "login": "login", + "themes": "主题", + "events": "事件", + "eventListeners": "事件监听器", + "eventListenersHelpText": "配置什么侦听器接收领域的事件。", + "adminEventsSettings": "管理事件设置", + "saveEvents": "保存事件", + "expiration": "到期", + "clearAdminEvents": "清除管理事件", + "includeRepresentation": "包含表示", + "email": "电子邮件", + "from": "来自", + "host": "主机", + "port": "端口号", + "authentication": "验证", + "enableSSL": "启用 SSL", + "enableStartTLS": "启用 StartTLS", + "username": "用户名", + "password": "密码", + "keys": "秘钥", + "keystore": "钥匙链", + "keyAlias": "密钥别名", + "keyPassword": "密钥密码", + "providers": "提供者", + "consoleDisplayName": "控制台显示名称", + "active": "活跃", + "type": "类型", + "providerId": "ID", + "kid": "孩子", + "provider": "提供程序", + "certificate": "证书", + "userRegistration": "用户注册", + "userRegistrationHelpText": "开启/关闭注册页面,注册页面的链接也会显示在登录页面", + "rememberMe": "记住我", + "rememberMeHelpText": "显示一个选择框来让用户在重启浏览器时仍然处于登录状态,直到会话过期。", + "emailAsUsername": "Email当做用户名", + "loginWithEmail": "使用电子邮件登录", + "duplicateEmails": "重复的邮件", + "verifyEmail": "验证email", + "editUsername": "编辑用户名", + "testConnection": "测试连接", + "htmlDisplayName": "HTML 显示名称", + "requireSsl": "需要SSL", + "sslType": { + "all": "所有请求", + "external": "外部请求", + "none": "none" + }, + "endpoints": "服务路径", + "loginTheme": "登录主题", + "accountTheme": "账户主题", + "adminTheme": "管理员控制台主题", + "emailTheme": "邮件主题", + "localization": "本地化", + "sessions": "会话", + "SSOSessionIdle": "SSO会话空闲时间", + "SSOSessionMax": "SSO会话最长时间", + "offlineSessionIdle": "离线会话的空闲时间", + "loginTimeout": "登录超时", + "loginActionTimeout": "登录操作超时", + "revokeRefreshToken": "收回 Refresh Token", + "accessTokenLifespan": "Access Token 有效期", + "accessTokenLifespanImplicitFlow": "隐式流的访问令牌生命周期", + "clientLoginTimeout": "客户端登录超时", + "createPolicy": "创建策略", + "policies": "策略", + "clientProfileDescription": "描述", + "back": "返回", + "save": "保存", + "tokens": "令牌", + "attributes": "属性", + "status": "状态", + "supportedLocales": "支持的语言", + "defaultLocale": "默认语言", + "user": "用户", + "validatorDialogColNames": { + "colName": "角色名称" + }, + "validatorColNames": { + "colConfig": "Config" + }, + "eventTypes": { + "IMPERSONATE": { + "name": "模拟" + }, + "LOGOUT": { + "name": "注销" + }, + "REGISTER": { + "name": "寄存器" + }, + "RESET_PASSWORD": { + "name": "重置密码" + } + }, + "deleteEvents": "清除事件", + "defaultRoles": "默认角色", + "defaultGroups": "默认组", + "securityDefences": "安全防护", + "headers": "标题", + "bruteForceDetection": "强力检测", + "xFrameOptions": "X-Frame-Options", + "contentSecurityPolicy": "Content-Security-Policy", + "xContentTypeOptions": "X-Content-Type-Options", + "failureFactor": "最大登录失败", + "waitIncrementSeconds": "等待增量", + "maxFailureWaitSeconds": "Max Wait", + "maxDeltaTimeSeconds": "故障复位时间", + "minimumQuickLoginWaitSeconds": "最小快速登录等待" +} \ No newline at end of file diff --git a/public/resources/zh-CN/realm.json b/public/resources/zh-CN/realm.json new file mode 100644 index 0000000000..2efb8455c8 --- /dev/null +++ b/public/resources/zh-CN/realm.json @@ -0,0 +1,3 @@ +{ + "enabled": "开启" +} \ No newline at end of file diff --git a/public/resources/zh-CN/roles.json b/public/resources/zh-CN/roles.json new file mode 100644 index 0000000000..67865ce792 --- /dev/null +++ b/public/resources/zh-CN/roles.json @@ -0,0 +1,13 @@ +{ + "associatedRolesText": "关联角色", + "title": "Realm角色", + "addRole": "添加角色", + "roleName": "角色名称", + "composite": "Composite", + "addUser": "添加用户", + "users": "用户", + "userName": "用户名", + "email": "电子邮件", + "lastName": "姓氏", + "firstName": "名字" +} \ No newline at end of file diff --git a/public/resources/zh-CN/sessions.json b/public/resources/zh-CN/sessions.json new file mode 100644 index 0000000000..8ab198bb4d --- /dev/null +++ b/public/resources/zh-CN/sessions.json @@ -0,0 +1,10 @@ +{ + "title": "会话", + "lastAccess": "最后访问", + "revocation": "回收", + "notBefore": "不早于", + "setToNow": "设置到现在", + "clear": "清除", + "push": "推送", + "none": "none" +} \ No newline at end of file diff --git a/public/resources/zh-CN/user-federation-help.json b/public/resources/zh-CN/user-federation-help.json new file mode 100644 index 0000000000..2f7e3d3d16 --- /dev/null +++ b/public/resources/zh-CN/user-federation-help.json @@ -0,0 +1,12 @@ +{ + "vendorHelp": "LDAP供应商(提供者)", + "consoleDisplayConnectionUrlHelp": "与LDAP服务器的连接URL", + "bindCredentialsHelp": "LDAP管理员的密码", + "editModeLdapHelp": "READ_ONLY是只读LDAP存储。可写意味着数据将按需同步回LDAP。 UNSYNCED表示将导入用户数据,但不会同步回LDAP。", + "fullSyncPeriodHelp": "完全同步的周期(以秒为单位)", + "changedUsersSyncHelp": "用于同步更改的或新创建的LDAP用户的时间段(以秒为单位)", + "trustEmailHelp": "如果启用,则此提供商提供的电子邮件不会验证,即使已启用对领域的验证。", + "debugHelp": "启用/禁用调试日志到Krb5LoginModule的标准输出。", + "allowPasswordAuthenticationHelp": "启用/禁用Kerberos数据库的用户名/密码身份验证的可能性", + "updateFirstLoginHelp": "首次登录时更新配置文件" +} \ No newline at end of file diff --git a/public/resources/zh-CN/user-federation.json b/public/resources/zh-CN/user-federation.json new file mode 100644 index 0000000000..c38c192e24 --- /dev/null +++ b/public/resources/zh-CN/user-federation.json @@ -0,0 +1,37 @@ +{ + "userFederation": "用户联合", + "consoleDisplayName": "控制台显示名称", + "vendor": "供应商", + "connectionURL": "连接URL", + "enableStartTls": "启用 StartTLS", + "useTruststoreSpi": "使用Truststore SPI", + "connectionPooling": "连接池", + "bindType": "认证类型", + "bindDn": "绑定DN", + "editMode": "编辑模式", + "usersDN": "用户DN", + "usernameLdapAttribute": "用户名LDAP属性", + "rdnLdapAttribute": "RDN LDAP属性", + "uuidLdapAttribute": "UUID LDAP属性", + "userObjectClasses": "用户对象类", + "searchScope": "搜索范围", + "pagination": "分页", + "batchSize": "批量大小", + "periodicFullSync": "周期性完全同步", + "fullSyncPeriod": "完全同步周期", + "periodicChangedUsersSync": "定期更改的用户同步", + "changedUsersSyncPeriod": "更改的用户同步期间", + "kerberosIntegration": "Kerberos集成", + "allowKerberosAuthentication": "允许Kerberos身份验证", + "useKerberosForPasswordAuthentication": "使用Kerberos进行密码验证", + "trustEmail": "信任电子邮件", + "requiredSettings": "必需的设置", + "kerberosRealm": "Kerberos领域", + "serverPrincipal": "服务器主体", + "debug": "Debug", + "allowPasswordAuthentication": "允许密码验证", + "testAuthentication": "测试验证", + "ldapMappersList": "LDAP 映射器", + "ldapFilter": "LDAP过滤器", + "selectRole": "选择角色" +} \ No newline at end of file diff --git a/public/resources/zh-CN/users-help.json b/public/resources/zh-CN/users-help.json new file mode 100644 index 0000000000..3a7f66ac81 --- /dev/null +++ b/public/resources/zh-CN/users-help.json @@ -0,0 +1,6 @@ +{ + "temporaryLocked": "用户可能由于无法登录太多次而被锁定。", + "emailVerified": "用户的电子邮件经过验证吗?", + "requiredUserActions": "需要用户登录时的操作。“验证电子邮件”向用户发送电子邮件以验证其电子邮件地址。 “更新个人资料”要求用户输入新的个人信息。 “更新密码”要求用户输入新密码。 '配置OTP'需要设置移动密码生成器。", + "groups": "组用户是的成员。选择列出的组,然后单击离开按钮退出组。" +} \ No newline at end of file diff --git a/public/resources/zh-CN/users.json b/public/resources/zh-CN/users.json new file mode 100644 index 0000000000..e010a13801 --- /dev/null +++ b/public/resources/zh-CN/users.json @@ -0,0 +1,33 @@ +{ + "title": "用户", + "join": "加入", + "leave": "离开", + "groupMembership": "组成员资格", + "createdAt": "创建于", + "username": "用户名", + "email": "电子邮件", + "emailVerified": "电子邮件验证", + "lastName": "姓氏", + "firstName": "名字", + "status": "状态", + "requiredUserActions": "必需的用户操作", + "addUser": "添加用户", + "impersonate": "模拟", + "verifyEmail": "验证email", + "consents": "同意", + "identityProvider": "身份提供者", + "identityProviderLinks": "身份提供者链接", + "revoke": "撤消", + "save": "保存", + "credentialType": "类型", + "password": "密码", + "passwordConfirmation": "密码确认", + "resetPassword": "重置密码", + "showPasswordDataValue": "Value", + "credentialResetBtn": "重置密码", + "resetActions": "复位操作", + "hours": "小时", + "minutes": "分", + "seconds": "秒", + "credentialResetConfirm": "发送电子邮件" +} \ No newline at end of file diff --git a/src/authentication/help.ts b/src/authentication/help.ts deleted file mode 100644 index 8b0e38ab37..0000000000 --- a/src/authentication/help.ts +++ /dev/null @@ -1,76 +0,0 @@ -export default { - "authentication-help": { - name: "Help text for the name of the new flow", - description: "Help text for the description of the new flow", - createFlow: "You can create a top level flow within this from", - flowType: "What kind of form is it", - topLevelFlowType: - "What kind of top level flow is it? Type 'client' is used for authentication of clients (applications) when generic is for users and everything else", - addExecution: - "Execution can have a wide range of actions, from sending a reset email to validating an OTP", - addSubFlow: - "Sub-Flows can be either generic or form. The form type is used to construct a sub-flow that generates a single flow for the user. Sub-flows are a special type of execution that evaluate as successful depending on how the executions they contain evaluate.", - alias: "Name of the configuration", - otpType: - "totp is Time-Based One Time Password. 'hotp' is a counter base one time password in which the server keeps a counter to hash against.", - webAuthnPolicyRpEntityName: - "Human-readable server name as WebAuthn Relying Party", - otpHashAlgorithm: - "What hashing algorithm should be used to generate the OTP.", - otpPolicyDigits: "How many digits should the OTP have?", - lookAhead: - "How far ahead should the server look just in case the token generator and server are out of time sync or counter sync?", - otpPolicyPeriod: - "How many seconds should an OTP token be valid? Defaults to 30 seconds.", - supportedActions: - "Applications that are known to work with the current OTP policy", - webauthnIntro: "What is this form used for?", - webAuthnPolicyFormHelp: - "Policy for WebAuthn authentication. This one will be used by 'WebAuthn Register' required action and 'WebAuthn Authenticator' authenticator. Typical usage is, when WebAuthn will be used for the two-factor authentication.", - webAuthnPolicyPasswordlessFormHelp: - "Policy for passwordless WebAuthn authentication. This one will be used by 'Webauthn Register Passwordless' required action and 'WebAuthn Passwordless Authenticator' authenticator. Typical usage is, when WebAuthn will be used as first-factor authentication. Having both 'WebAuthn Policy' and 'WebAuthn Passwordless Policy' allows to use WebAuthn as both first factor and second factor authenticator in the same realm.", - webAuthnPolicySignatureAlgorithms: - "What signature algorithms should be used for Authentication Assertion.", - webAuthnPolicyRpId: - "This is ID as WebAuthn Relying Party. It must be origin's effective domain.", - webAuthnPolicyAttestationConveyancePreference: - "Communicates to an authenticator the preference of how to generate an attestation statement.", - webAuthnPolicyAuthenticatorAttachment: - "Communicates to an authenticator an acceptable attachment pattern.", - webAuthnPolicyRequireResidentKey: - "It tells an authenticator create a public key credential as Resident Key or not.", - webAuthnPolicyUserVerificationRequirement: - "Communicates to an authenticator to confirm actually verifying a user.", - webAuthnPolicyCreateTimeout: - "Timeout value for creating user's public key credential in seconds. if set to 0, this timeout option is not adapted.", - webAuthnPolicyAvoidSameAuthenticatorRegister: - "Avoid registering the authenticator that has already been registered.", - webAuthnPolicyAcceptableAaguids: - "The list of AAGUID of which an authenticator can be registered.", - - passwordPolicies: { - forceExpiredPasswordChange: - "The number of days the password is valid before a new password is required.", - hashIterations: - "The number of times a password is hashed before storage or verification. Default: 27,500.", - passwordHistory: "Prevents a recently used password from being reused.", - passwordBlacklist: - "Prevents the use of a password that is in a blacklist file.", - regexPattern: - "Requires that the password matches one or more defined regular expression patterns.", - length: "The minimum number of characters required for the password.", - notUsername: "The password cannot match the username.", - notEmail: "The password cannot match the email address of the user.", - specialChars: - "The number of special characters required in the password string.", - upperCase: - "The number of uppercase letters required in the password string.", - lowerCase: - "The number of lowercase letters required in the password string.", - digits: "The number of numerical digits required in the password string.", - hashAlgorithm: - "Applies a hashing algorithm to passwords, so they are not stored in clear text.", - maxLength: "The maximum number of characters allowed in the password.", - }, - }, -}; diff --git a/src/authentication/messages.ts b/src/authentication/messages.ts deleted file mode 100644 index 30f509f5ad..0000000000 --- a/src/authentication/messages.ts +++ /dev/null @@ -1,155 +0,0 @@ -export default { - authentication: { - title: "Authentication", - authenticationExplain: "Placeholder for authentication explanation.", - flows: "Flows", - requiredActions: "Required actions", - policies: "Policies", - passwordPolicy: "Password policy", - otpPolicy: "OTP Policy", - webauthnPolicy: "Webauthn Policy", - webauthnPasswordlessPolicy: "Webauthn Passwordless Policy", - noPasswordPolicies: "No password policies", - noPasswordPoliciesInstructions: - "You haven't added any password policies to this realm. Add a policy to get started.", - updatePasswordPolicySuccess: "Password policies successfully updated", - updatePasswordPolicyError: - "Could not update the password policies: '{{error}}'", - webAuthnPolicyRpEntityName: "Relying party entity name", - addPolicy: "Add policy", - otpType: "OTP type", - policyType: { - totp: "Time based", - hotp: "Counter based", - }, - otpHashAlgorithm: "OTP hash algorithm", - otpPolicyDigits: "Number of digits", - lookAhead: "Look ahead window", - otpPolicyPeriod: "OTP Token period", - otpPolicyPeriodErrorHint: - "Value needs to be between 1 second and 2 minutes", - initialCounter: "Initial counter", - initialCounterErrorHint: "Value needs to be between 1 and 120", - supportedActions: "Supported actions", - updateOtpSuccess: "OTP policy successfully updated", - updateOtpError: "Could not update OTP policy: {{error}}", - webAuthnPolicySignatureAlgorithms: "Signature algorithms", - webAuthnPolicyRpId: "Relying party ID", - webAuthnPolicyAttestationConveyancePreference: - "Attestation conveyance preference", - attestationPreference: { - "not specified": "Not specified", - none: "None", - indirect: "Indirect", - direct: "Direct", - }, - webAuthnPolicyAuthenticatorAttachment: "Authenticator Attachment", - authenticatorAttachment: { - "not specified": "Not specified", - platform: "Platform", - "cross-platform": "Cross platform", - }, - webAuthnPolicyRequireResidentKey: "Require resident key", - residentKey: { - "not specified": "Not specified", - Yes: "Yes", - No: "No", - }, - webAuthnPolicyUserVerificationRequirement: "User verification requirement", - userVerify: { - "not specified": "Not specified", - required: "Required", - preferred: "Preferred", - discouraged: "Discouraged", - }, - webAuthnPolicyCreateTimeout: "Timeout", - webAuthnPolicyCreateTimeoutHint: - "Timeout needs to be between 0 seconds and 8 hours", - webAuthnPolicyAvoidSameAuthenticatorRegister: - "Avoid same authenticator registration", - webAuthnPolicyAcceptableAaguids: "Acceptable AAGUIDs", - addAaguids: "Add AAGUID", - webAuthnUpdateSuccess: "Updated webauthn policies successfully", - webAuthnUpdateError: "Could not update webauthn policies due to {{error}}", - flowName: "Flow name", - searchForFlow: "Search for flow", - usedBy: "Used by", - buildIn: "Built-in", - appliedByProviders: "Applied by the following providers", - appliedByClients: "Applied by the following clients", - specificProviders: "Specific providers", - specificClients: "Specific clients", - default: "Default", - notInUse: "Not in use", - duplicate: "Duplicate", - bindFlow: "Bind flow", - chooseBindingType: "Choose binding type", - flow: { - browserFlow: "Browser flow", - registrationFlow: "Registration flow", - directGrantFlow: "Direct grant flow", - resetCredentialsFlow: "Reset credentials flow", - clientAuthenticationFlow: "Client authentication flow", - }, - editInfo: "Edit info", - editFlow: "Edit flow", - edit: "Edit", - deleteConfirmFlow: "Delete flow?", - deleteConfirmFlowMessage: - 'Are you sure you want to permanently delete the flow "<1>{{flow}}".', - deleteFlowSuccess: "Flow successfully deleted", - deleteFlowError: "Could not delete flow: {{error}}", - duplicateFlow: "Duplicate flow", - deleteConfirmExecution: "Delete execution?", - deleteConfirmExecutionMessage: - 'Are you sure you want to permanently delete the execution "<1>{{name}}".', - deleteExecutionSuccess: "Execution successfully deleted", - deleteExecutionError: "Could not delete execution: {{error}}", - updateFlowSuccess: "Flow successfully updated", - updateFlowError: "Could not update flow: {{error}}", - copyOf: "Copy of {{name}}", - copyFlowSuccess: "Flow successfully duplicated", - copyFlowError: "Could not duplicate flow: {{error}}", - createFlow: "Create flow", - flowType: "Flow type", - "flow-type": { - "basic-flow": "Generic", - "form-flow": "Form", - }, - "top-level-flow-type": { - "basic-flow": "Basic flow", - "client-flow": "Client flow", - }, - flowCreatedSuccess: "Flow created", - flowCreateError: "Could not create flow: {{error}}", - flowDetails: "Flow details", - tableView: "Table view", - diagramView: "Diagram view", - emptyExecution: "No steps", - emptyExecutionInstructions: - "You can start defining this flow by adding a sub-flow or an execution", - addExecutionTitle: "Add an execution", - addExecution: "Add execution", - addSubFlowTitle: "Add a sub-flow", - addSubFlow: "Add sub-flow", - addCondition: "Add condition", - addStep: "Add step", - addStepTo: "Add step to {{name}}", - steps: "Steps", - requirement: "Requirement", - requirements: { - REQUIRED: "Required", - ALTERNATIVE: "Alternative", - DISABLED: "Disabled", - CONDITIONAL: "Conditional", - }, - executionConfig: "{{name}} config", - alias: "Alias", - configSaveSuccess: "Successfully saved the execution config", - configSaveError: "Could not save the execution config: {{error}}", - setAsDefaultAction: "Set as default action", - disabledOff: "Disabled off", - updatedRequiredActionSuccess: "Updated required action successfully", - updatedRequiredActionError: "Could not update required action: {{error}}", - }, -}; diff --git a/src/client-scopes/help.ts b/src/client-scopes/help.ts deleted file mode 100644 index e31e23bb60..0000000000 --- a/src/client-scopes/help.ts +++ /dev/null @@ -1,29 +0,0 @@ -export default { - "client-scopes-help": { - name: "Name of the client scope. Must be unique in the realm. Name should not contain space characters as it is used as value of scope parameter", - description: "Description of the client scope", - protocol: - "Which SSO protocol configuration is being supplied by this client scope", - type: "Client scopes, which will be added as default scopes to each created client", - displayOnConsentScreen: - "If on, and this client scope is added to some client with consent required, the text specified by 'Consent Screen Text' will be displayed on consent screen. If off, this client scope will not be displayed on the consent screen", - consentScreenText: - "Text that will be shown on the consent screen when this client scope is added to some client with consent required. Defaults to name of client scope if it is not filled", - includeInTokenScope: - "If on, the name of this client scope will be added to the access token property 'scope' as well as to the Token Introspection Endpoint response. If off, this client scope will be omitted from the token and from the Token Introspection Endpoint response.", - guiOrder: - "Specify order of the provider in GUI (such as in Consent page) as integer", - prefix: "A prefix for each Realm Role (optional).", - multiValued: - "Indicates if attribute supports multiple values. If true, the list of all values of this attribute will be set as claim. If false, just first value will be set as claim", - tokenClaimName: - "Name of the claim to insert into the token. This can be a fully qualified name like 'address.street'. In this case, a nested json object will be created. To prevent nesting and use dot literally, escape the dot with backslash (\\.).", - claimJsonType: - "JSON type that should be used to populate the json claim in the token. long, int, boolean, String and JSON are valid values.", - protocolMapper: "Protocol...", - mapperName: "Name of the mapper", - role: "Role name you want changed. Click 'Select Role' button to browse roles, or just type it in the textbox. To reference an application role the syntax is appname.approle, i.e. myapp.myrole", - newRoleName: - "The new role name. The new name format corresponds to where in the access token the role will be mapped to. So, a new name of 'myapp.newname' will map the role to that position in the access token. A new name of 'newname' will map the role to the realm roles in the token.", - }, -}; diff --git a/src/client-scopes/messages.ts b/src/client-scopes/messages.ts deleted file mode 100644 index 6f4a8b2681..0000000000 --- a/src/client-scopes/messages.ts +++ /dev/null @@ -1,66 +0,0 @@ -export default { - "client-scopes": { - createClientScope: "Create client scope", - clientScopeList: "Client scopes", - grantedClientScopes: "Granted client scopes", - clientScopeDetails: "Client scope details", - clientScopeExplain: - "Client scopes allow you to define a common set of protocol mappers and roles, which are shared between multiple clients.", - searchFor: "Search for client scope", - protocol: "Protocol", - assignedType: "Assigned type", - displayOrder: "Display order", - type: "Type", - deleteClientScope_one: "Delete client scope {{name}}", - deleteClientScope_other: "Delete {{count}} client scopes", - deleteConfirm: "Are you sure you want to delete this client scope", - changeTypeTo: "Change type to", - changeTypeIntro: "{{count}} selected client scopes will be changed to", - clientScopeSuccess: "Scope mapping updated", - clientScopeError: "Could not update scope mapping {{error}}", - deletedSuccess: "The client scope has been deleted", - deleteError: "Could not delete client scope: {{error}}", - includeInTokenScope: "Include in token scope", - realmRolePrefix: "Realm role prefix", - userInfo: "User info", - createSuccess: "Client scope created", - createError: "Could not create client scope: '{{error}}'", - updateSuccess: "Client scope updated", - updateError: "Could not update client scope: '{{error}}'", - addMapperExplain: - "If you want more fine-grain control, you can create protocol mapper on this client", - realmRoles: "Realm roles", - newRoleName: "New role name", - searchClientByName: "Search client by name", - clients: "Clients", - mapperCreateSuccess: "New mapping has been added", - mapperCreateError: "Could not create mapping: {{error}}", - fromPredefinedMapper: "From predefined mappers", - byConfiguration: "By configuration", - emptyBuiltInMappersInstructions: - "All built in mappers were added to this client", - emptySecondaryAction: "Configure a new mapper", - displayOnConsentScreen: "Display on consent screen", - consentScreenText: "Consent screen text", - guiOrder: "Display Order", - shouldBeANumber: "Should be a number", - chooseAMapperType: "Choose a mapper type", - addPredefinedMappers: "Add predefined mappers", - predefinedMappingDescription: - "Choose any of the predefined mappings from this table", - mappingTable: "Table with predefined mapping", - scope: "Scope", - roleMappingUpdatedSuccess: "Role mapping updated", - roleMappingUpdatedError: "Could not update role mapping {{error}}", - protocolTypes: { - all: "All", - saml: "SAML", - "openid-connect": "openid-connect", - }, - }, - clientScopes: { - noRoles: "No roles for this client scope", - noRolesInstructions: - "You haven't created any roles for this client scope. Create a role to get started.", - }, -}; diff --git a/src/clients/help.ts b/src/clients/help.ts deleted file mode 100644 index deded0f204..0000000000 --- a/src/clients/help.ts +++ /dev/null @@ -1,303 +0,0 @@ -export default { - "clients-help": { - enableDisable: - "Disabled clients cannot initiate a login or have obtained access tokens.", - clientType: - "'OpenID Connect' allows Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server.'SAML' enables web-based authentication and authorization scenarios including cross-domain single sign-on (SSO) and uses security tokens containing assertions to pass information.", - serviceAccount: - "Allows you to authenticate this client to Keycloak and retrieve access token dedicated to this client. In terms of OAuth2 specification, this enables support of 'Client Credentials Grant' for this client.", - manageServiceAccountUser: - "To manage detail and group mappings, click on the username <1>{{link}}", - authentication: - "This defines the type of the OIDC client. When it's ON, the OIDC type is set to confidential access type. When it's OFF, it is set to public access type", - authorization: - "Enable/Disable fine-grained authorization support for a client", - authDetails: - "Export and download all resource settings for this resource server.", - directAccess: - "This enables support for Direct Access Grants, which means that client has access to username/password of user and exchange it directly with Keycloak server for access token. In terms of OAuth2 specification, this enables support of 'Resource Owner Password Credentials Grant' for this client.", - standardFlow: - "This enables standard OpenID Connect redirect based authentication with authorization code. In terms of OpenID Connect or OAuth2 specifications, this enables support of 'Authorization Code Flow' for this client.", - implicitFlow: - "This enables support for OpenID Connect redirect based authentication without authorization code. In terms of OpenID Connect or OAuth2 specifications, this enables support of 'Implicit Flow' for this client.", - oauthDeviceAuthorizationGrant: - "This enables support for OAuth 2.0 Device Authorization Grant, which means that client is an application on device that has limited input capabilities or lack a suitable browser.", - oidcCibaGrant: - "This enables support for OIDC CIBA Grant, which means that the user is authenticated via some external authentication device instead of the user's browser.", - rootURL: "Root URL appended to relative URLs", - validRedirectURIs: - "Valid URI pattern a browser can redirect to after a successful login or logout. Simple wildcards are allowed such as 'http://example.com/*'. Relative path can be specified too such as /my/relative/path/*. Relative paths are relative to the client root URL, or if none is specified the auth server root URL is used. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.", - nameIdFormat: "The name ID format to use for the subject.", - alwaysDisplayInConsole: - "Always list this client in the Account Console, even if the user does not have an active session.", - forceNameIdFormat: - "Ignore requested NameID subject format and use admin console configured one.", - forcePostBinding: "Always use POST binding for responses.", - forceArtifactBinding: - "Should response messages be returned to the client through the SAML ARTIFACT binding system?", - includeAuthnStatement: - "Should a statement specifying the method and timestamp be included in login responses?", - includeOneTimeUseCondition: - "Should a OneTimeUse Condition be included in login responses?", - optimizeLookup: - "When signing SAML documents in REDIRECT binding for SP that is secured by Keycloak adapter, should the ID of the signing key be included in SAML protocol message in element? This optimizes validation of the signature as the validating party uses a single key instead of trying every known key for validation.", - signDocuments: "Should SAML documents be signed by the realm?", - signAssertions: - "Should assertions inside SAML documents be signed? This setting is not needed if document is already being signed.", - signatureAlgorithm: "The signature algorithm to use to sign documents.", - signatureKeyName: - "Signed SAML documents contain identification of signing key in KeyName element. For Keycloak / RH-SSO counterparty, use KEY_ID, for MS AD FS use CERT_SUBJECT, for others check and use NONE if no other option works.", - canonicalization: "Canonicalization Method for XML signatures.", - webOrigins: - "Allowed CORS origins. To permit all origins of Valid Redirect URIs, add '+'. This does not include the '*' wildcard though. To permit all origins, explicitly add '*'.", - homeURL: - "Default URL to use when the auth server needs to redirect or link back to the client.", - adminURL: - "URL to the admin interface of the client. Set this if the client supports the adapter REST API. This REST API allows the auth server to push revocation policies and other administrative tasks. Usually this is set to the base URL of the client.", - client: - "Select the client making this authorization request. If not provided, authorization requests would be done based on the client you are in.", - clientId: - "Specifies ID referenced in URI and tokens. For example 'my-client'. For SAML this is also the expected issuer value from authn requests", - selectUser: - "Select a user whose identity is going to be used to query permissions from the server.", - roles: "Select the roles you want to associate with the selected user.", - contextualAttributes: - "Any attribute provided by a running environment or execution context.", - resourceType: - "Specifies that this permission must be applied to all resource instances of a given type.", - applyToResourceType: - "Specifies if this permission should be applied to all resources with a given type. In this case, this permission will be evaluated for all instances of a given resource type.", - resources: - "Specifies that this permission must be applied to a specific resource instance.", - scopesSelect: - "Specifies that this permission must be applied to one or more scopes.", - clientName: - "Specifies display name of the client. For example 'My Client'. Supports keys for localized values as well. For example: ${my_client}", - description: - "Specifies description of the client. For example 'My Client for TimeSheets'. Supports keys for localized values as well. For example: ${my_client_description}", - loginTheme: - "Select theme for login, OTP, grant, registration, and forgot password pages.", - encryptAssertions: - "Should SAML assertions be encrypted with client's public key using AES?", - clientSignature: - "Will the client sign their saml requests and responses? And should they be validated?", - downloadType: "this is information about the download type", - details: "this is information about the details", - createToken: "An initial access token can only be used to create clients", - expiration: "Specifies how long the token should be valid", - count: "Specifies how many clients can be created using the token", - "client-authenticator-type": - "Client Authenticator used for authentication of this client against Keycloak server", - "registration-access-token": - "The registration access token provides access for clients to the client registration service.", - "signature-algorithm": - "JWA algorithm, which the client needs to use when signing a JWT for authentication. If left blank, the client is allowed to use any algorithm.", - allowRegexComparison: - "If OFF, then the Subject DN from given client certificate must exactly match the given DN from the 'Subject DN' property as described in the RFC8705 specification. The Subject DN can be in the RFC2553 or RFC1779 format. If ON, then the Subject DN from given client certificate should match regex specified by 'Subject DN' property.", - subject: - 'A regular expression for validating Subject DN in the Client Certificate. Use "(.*?)(?:$)" to match all kind of expressions.', - evaluateExplain: - "This page allows you to see all protocol mappers and role scope mappings", - effectiveProtocolMappers: - "Contains all default client scopes and selected optional scopes. All protocol mappers and role scope mappings of all those client scopes will be used when generating access token issued for your client", - effectiveRoleScopeMappings: - "Selected Optional Client Scopes, which will be used when issuing access token for this client. You can see above what value of OAuth Scope Parameter needs to be used when you want to have these optional client scopes applied when the initial OpenID Connect Authentication request will be sent from your client adapter", - generatedAccessToken: - "See the example access token, which will be generated and sent to the client when selected user is authenticated. You can see claims and roles that the token will contain based on the effective protocol mappers and role scope mappings and also based on the claims/roles assigned to user himself", - generatedIdToken: - "See the example ID Token, which will be generated and sent to the client when selected user is authenticated. You can see claims and roles that the token will contain based on the effective protocol mappers and role scope mappings and also based on the claims/roles assigned to user himself", - generatedUserInfo: - "See the example User Info, which will be provided by the User Info Endpoint", - scopeParameter: - "You can copy/paste this value of scope parameter and use it in initial OpenID Connect Authentication Request sent from this client adapter. Default client scopes and selected optional client scopes will be used when generating token issued for this client", - user: "Optionally select user, for whom the example access token will be generated. If you do not select a user, example access token will not be generated during evaluation", - notBefore: - "Revoke any tokens issued before this time for this client. To push the policy, you should set an effective admin URL in the Settings tab first.", - notBeforeIntro: - "In order to successfully push a revocation policy to the client, you need to set an Admin URL under the <1>Settings tab for this client first", - notBeforeTooltip: "The admin URL should be set in the Settings tab first.", - nodeReRegistrationTimeout: - "Interval to specify max time for registered clients cluster nodes to re-register. If cluster node will not send re-registration request to Keycloak within this time, it will be unregistered from Keycloak", - fineGrainOpenIdConnectConfiguration: - "This section is used to configure advanced settings of this client related to OpenID Connect protocol.", - fineGrainSamlEndpointConfig: - "This section to configure exact URLs for Assertion Consumer and Single Logout Service.", - logoUrl: "URL that references a logo for the Client application", - policyUrl: - "URL that the Relying Party Client provides to the End-User to read about the how the profile data will be used", - termsOfServiceUrl: - "URL that the Relying Party Client provides to the End-User to read about the Relying Party's terms of service", - accessTokenSignatureAlgorithm: - "JWA algorithm used for signing access tokens.", - idTokenSignatureAlgorithm: "JWA algorithm used for signing ID tokens.", - idTokenEncryptionKeyManagementAlgorithm: - "JWA Algorithm used for key management in encrypting ID tokens. This option is needed if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.", - idTokenEncryptionContentEncryptionAlgorithm: - "JWA Algorithm used for content encryption in encrypting ID tokens. This option is needed just if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.", - userInfoSignedResponseAlgorithm: - "JWA algorithm used for signed User Info Endpoint response. If set to 'unsigned', User Info Response won't be signed and will be returned in application/json format.", - requestObjectSignatureAlgorithm: - "JWA algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', Request object can be signed by any algorithm (including 'none' ).", - requestObjectRequired: - 'Specifies if the client needs to provide a request object with their authorization requests, and what method they can use for this. If set to "not required", providing a request object is optional. In all other cases, providing a request object is mandatory. If set to "request", the request object must be provided by value. If set to "request_uri", the request object must be provided by reference. If set to "request or request_uri", either method can be used.', - requestObjectEncryption: - "JWE algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', encryption is optional and any algorithm is allowed.", - requestObjectEncoding: - "JWE algorithm, which client needs to use when encrypting the content of the OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', any algorithm is allowed.", - validRequestURIs: - "List of valid URIs, which can be used as values of 'request_uri' parameter during OpenID Connect authentication request. There is support for the same capabilities like for Valid Redirect URIs. For example wildcards or relative paths.", - idpInitiatedSsoUrlName: - "URL fragment name to reference client when you want to do IDP Initiated SSO. Leaving this empty will disable IDP Initiated SSO. The URL you will reference from your browser will be: {server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}", - idpInitiatedSsoRelayState: - "Relay state you want to send with SAML request when you want to do IDP Initiated SSO.", - masterSamlProcessingUrl: - "If configured, this URL will be used for every binding to both the SP's Assertion Consumer and Single Logout Services. This can be individually overridden for each binding and service in the Fine Grain SAML Endpoint Configuration.", - authorizationSignedResponseAlg: - "JWA algorithm used for signing authorization response tokens when the response mode is jwt.", - authorizationEncryptedResponseAlg: - "JWA Algorithm used for key management in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.", - authorizationEncryptedResponseEnc: - "JWA Algorithm used for content encryption in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.", - openIdConnectCompatibilityModes: - "This section is used to configure settings for backward compatibility with older OpenID Connect / OAuth 2 adaptors. It's useful especially if your client uses older version of Keycloak / RH-SSO adapter.", - excludeSessionStateFromAuthenticationResponse: - "If this is on, the parameter 'session_state' will not be included in OpenID Connect Authentication Response. It is useful if your client uses older OIDC / OAuth2 adapter, which does not support 'session_state' parameter.", - useRefreshTokens: - "If this is on, a refresh_token will be created and added to the token response. If this is off then no refresh_token will be generated.", - useRefreshTokenForClientCredentialsGrant: - "If this is on, a refresh_token will be created and added to the token response if the client_credentials grant is used. The OAuth 2.0 RFC6749 Section 4.4.3 states that a refresh_token should not be generated when client_credentials grant is used. If this is off then no refresh_token will be generated and the associated user session will be removed.", - "advancedSettingsOpenid-connect": - "This section is used to configure advanced settings of this client related to OpenID Connect protocol", - advancedSettingsSaml: - "This section is used to configure advanced settings of this client", - assertionLifespan: - 'Lifespan set in the SAML assertion conditions. After that time the assertion will be invalid. The "SessionNotOnOrAfter" attribute is not modified and continue using the "SSO Session Max" time defined at realm level.', - accessTokenLifespan: - "Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout.", - oAuthMutual: - "This enables support for OAuth 2.0 Mutual TLS Certificate Bound Access Tokens, which means that keycloak bind an access token and a refresh token with a X.509 certificate of a token requesting client exchanged in mutual TLS between keycloak's Token Endpoint and this client. These tokens can be treated as Holder-of-Key tokens instead of bearer tokens.", - keyForCodeExchange: - "Choose which code challenge method for PKCE is used. If not specified, keycloak does not applies PKCE to a client unless the client sends an authorization request with appropriate code challenge and code exchange method.", - pushedAuthorizationRequestRequired: - "Boolean parameter indicating whether the authorization server accepts authorization request data only via the pushed authorization request method.", - acrToLoAMapping: - "Define which ACR (Authentication Context Class Reference) value is mapped to which LoA (Level of Authentication). The ACR can be any value, whereas the LoA must be numeric.", - assertionConsumerServicePostBindingURL: - "SAML POST Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.", - assertionConsumerServiceRedirectBindingURL: - "SAML Redirect Binding URL for the client's assertion consumer service (login responses). You can leave this blank if you do not have a URL for this binding.", - logoutServicePostBindingURL: - "SAML POST Binding URL for the client's single logout service. You can leave this blank if you are using a different binding", - logoutServiceRedirectBindingURL: - "SAML Redirect Binding URL for the client's single logout service. You can leave this blank if you are using a different binding.", - logoutServiceArtifactBindingUrl: - "SAML ARTIFACT Binding URL for the client's single logout service. You can leave this blank if you are using a different binding.", - artifactBindingUrl: - "URL to send the HTTP ARTIFACT messages to. You can leave this blank if you are using a different binding. This value should be set when forcing ARTIFACT binding together with IdP initiated login.", - frontchannelLogout: - "When true, logout requires a browser redirect to client. When false, server performs a background invocation for logout.", - frontchannelLogoutUrl: - "URL that will cause the client to log itself out when a logout request is sent to this realm (via end_session_endpoint). If not provided, it defaults to the base url.", - backchannelLogoutUrl: - "URL that will cause the client to log itself out when a logout request is sent to this realm (via end_session_endpoint). If omitted, no logout request will be sent to the client is this case.", - backchannelLogoutSessionRequired: - "Specifying whether a sid (session ID) Claim is included in the Logout Token when the Backchannel Logout URL is used.", - backchannelLogoutRevokeOfflineSessions: - 'Specifying whether a "revoke_offline_access" event is included in the Logout Token when the Backchannel Logout URL is used. Keycloak will revoke offline sessions when receiving a Logout Token with this event.', - artifactResolutionService: - "SAML Artifact resolution service for the client. This is the endpoint to which Keycloak will send a SOAP ArtifactResolve message. You can leave this blank if you do not have a URL for this binding.", - authenticationOverrides: "Override realm authentication flow bindings.", - browserFlow: "Select the flow you want to use for browser authentication.", - directGrant: - "Select the flow you want to use for direct grant authentication.", - useJwksUrl: - "If the switch is on, client public keys will be downloaded from given JWKS URL. This allows great flexibility because new keys will be always re-downloaded again when client generates new keypair. If the switch is off, public key (or certificate) from the Keycloak DB is used, so when client keypair changes, you always need to import new key (or certificate) to the Keycloak DB as well.", - certificate: - "Client Certificate for validate JWT issued by client and signed by Client private key from your keystore.", - jwksUrl: - "URL where client keys in JWK format are stored. See JWK specification for more details. If you use Keycloak client adapter with \"jwt\" credential, you can use URL of your app with '/k_jwks' suffix. For example 'http://www.myhost.com/myapp/k_jwks' .", - generateKeysDescription: - "If you generate new keys, you can download the keystore with the private key automatically and save it on your client's side. Keycloak server will save just the certificate and public key, but not the private key.", - archiveFormat: "Java keystore or PKCS12 archive format.", - keyAlias: "Archive alias for your private key and certificate.", - keyPassword: "Password to access the private key in the archive", - storePassword: "Password to access the archive itself", - consentRequired: "If enabled, users have to consent to client access.", - displayOnClient: - "Applicable only if 'Consent Required' is on for this client. If this switch is off, the consent screen will contain just the consents corresponding to configured client scopes. If on, there will be also one item on the consent screen about this client itself.", - consentScreenText: - "Applicable only if 'Display Client On Consent Screen' is on for this client. Contains the text which will be on the consent screen about permissions specific just for this client.", - import: - "Import a JSON file containing authorization settings for this resource server.", - policyEnforcementMode: - "The policy enforcement mode dictates how policies are enforced when evaluating authorization requests. 'Enforcing' means requests are denied by default even when there is no policy associated with a given resource. 'Permissive' means requests are allowed even when there is no policy associated with a given resource. 'Disabled' completely disables the evaluation of policies and allows access to any resource.", - decisionStrategy: - "The decision strategy dictates how permissions are evaluated and how a final decision is obtained. 'Affirmative' means that at least one permission must evaluate to a positive decision in order to grant access to a resource and its scopes. 'Unanimous' means that all permissions must evaluate to a positive decision in order for the final decision to be also positive.", - allowRemoteResourceManagement: - "Should resources be managed remotely by the resource server? If false, resources can be managed only from this admin console.", - resourceName: - "A unique name for this resource. The name can be used to uniquely identify a resource, useful when querying for a specific resource.", - displayName: - "A unique name for this resource. The name can be used to uniquely identify a resource, useful when querying for a specific resource.", - type: "The type of this resource. It can be used to group different resource instances with the same type.", - uris: "Set of URIs which are protected by resource.", - scopes: "The scopes associated with this resource.", - dedicatedScopeExplain: - "This is a client scope which includes the dedicated mappers and scope", - fullScopeAllowed: "Allows you to disable all restrictions.", - iconUri: "A URI pointing to an icon.", - ownerManagedAccess: - "If enabled, the access to this resource can be managed by the resource owner.", - resourceAttribute: "The attributes associated wth the resource.", - resetActions: - "Set of actions to execute when sending the user a Reset Actions Email. 'Verify email' sends an email to the user to verify their email address. 'Update profile' requires user to enter in new personal information. 'Update password' requires user to enter in a new password. 'Configure OTP' requires setup of a mobile password generator.", - lifespan: "Maximum time before the action permit expires.", - scopeName: - "A unique name for this scope. The name can be used to uniquely identify a scope, useful when querying for a specific scope.", - scopeDisplayName: - "A unique name for this scope. The name can be used to uniquely identify a scope, useful when querying for a specific scope.", - "policy-name": "The name of this policy.", - "policy-description": "A description for this policy.", - policyDecisionStagey: - "The decision strategy dictates how the policies associated with a given permission are evaluated and how a final decision is obtained. 'Affirmative' means that at least one policy must evaluate to a positive decision in order for the final decision to be also positive. 'Unanimous' means that all policies must evaluate to a positive decision in order for the final decision to be also positive. 'Consensus' means that the number of positive decisions must be greater than the number of negative decisions. If the number of positive and negative is the same, the final decision will be negative.", - applyPolicy: - "Specifies all the policies that must be applied to the scopes defined by this policy or permission.", - policyClient: "Specifies which client(s) are allowed by this policy.", - groupsClaim: - "If defined, the policy will fetch user's groups from the given claim within an access token or ID token representing the identity asking permissions. If not defined, user's groups are obtained from your realm configuration.", - policyGroups: "Specifies which user(s) are allowed by this policy.", - targetClaim: "Specifies the target claim which the policy will fetch.", - regexPattern: "Specifies the regex pattern.", - policyRoles: "Specifies the client roles allowed by this policy.", - startTime: - "Defines the time before which the policy MUST NOT be granted. Only granted if current date/time is after or equal to this value.", - expireTime: - "Defines the time after which the policy MUST NOT be granted. Only granted if current date/time is before or equal to this value.", - month: - "Defines the month which the policy MUST be granted. You can also provide a range by filling the second field. In this case, permission is granted only if current month is between or equal to the two values you provided.", - dayMonth: - "Defines the day of month when the policy MUST be granted. You can also provide a range by filling the second field. In this case, permission is granted only if current day of month is between or equal to the two values you provided.", - hour: "Defines the hour when the policy MUST be granted. You can also provide a range by filling the second field. In this case, permission is granted only if current hour is between or equal to the two values you provided.", - minute: - "Defines the minute when the policy MUST be granted. You can also provide a range by filling the second field. In this case, permission is granted only if current minute is between or equal to the two values you provided.", - policyCode: "The JavaScript code providing the conditions for this policy.", - logic: - "The logic dictates how the policy decision should be made. If 'Positive', the resulting effect (permit or deny) obtained during the evaluation of this policy will be used to perform a decision. If 'Negative', the resulting effect will be negated, in other words, a permit becomes a deny and vice-versa.", - permissionName: "The name of this permission.", - permissionDescription: "A description for this permission.", - applyToResourceTypeFlag: - "Specifies if this permission should be applied to all resources with a given type. In this case, this permission will be evaluated for all instances of a given resource type.", - permissionResources: - "Specifies that this permission must be applied to a specific resource instance.", - permissionScopes: - "Specifies that this permission must be applied to one or more scopes.", - permissionPolicies: - "Specifies all the policies that must be applied to the scopes defined by this policy or permission.", - permissionType: - "Specifies that this permission must be applied to all resources instances of a given type.", - permissionDecisionStrategy: - "The decision strategy dictates how the policies associated with a given permission are evaluated and how a final decision is obtained. 'Affirmative' means that at least one policy must evaluate to a positive decision in order for the final decision to be also positive. 'Unanimous' means that all policies must evaluate to a positive decision in order for the final decision to be also positive. 'Consensus' means that the number of positive decisions must be greater than the number of negative decisions. If the number of positive and negative is the same, the final decision will be negative.", - permissionsEnabled: - "Determines if fine grained permissions are enabled for managing this role. Disabling will delete all current permissions that have been set up.", - }, -}; diff --git a/src/clients/messages.ts b/src/clients/messages.ts deleted file mode 100644 index 1331ad61fa..0000000000 --- a/src/clients/messages.ts +++ /dev/null @@ -1,557 +0,0 @@ -export default { - clients: { - protocolTypes: { - openIdConnect: "OpenID Connect", - saml: "SAML", - all: "All", - }, - protocol: "Protocol", - copy: "Copy", - copied: "Authorization details copied.", - copyError: "Error copying authorization details: {{error}}", - exportAuthDetailsSuccess: "Successfully exported authorization details.", - exportAuthDetailsError: "Error exporting authorization details: {{error}}", - clientType: "Client type", - clientAuthorization: "Authorization", - implicitFlow: "Implicit flow", - createClient: "Create client", - importClient: "Import client", - homeURL: "Home URL", - webOrigins: "Web origins", - addWebOrigins: "Add web origins", - adminURL: "Admin URL", - formatOption: "Format option", - encryptAssertions: "Encrypt assertions", - clientSignature: "Client signature required", - downloadAdaptorTitle: "Download adaptor configs", - privateKeyMask: "PRIVATE KEY NOT SET UP OR KNOWN", - keys: "Keys", - credentials: "Credentials", - roles: "Roles", - createRole: "Create role", - noRoles: "No roles for this client", - noRolesInstructions: - "You haven't created any roles for this client. Create a role to get started.", - clientScopes: "Client scopes", - addClientScope: "Add client scope", - dedicatedScopeName: "{{clientName}}-dedicated", - dedicatedScopeDescription: "Dedicated scope and mappers for this client", - dedicatedScopes: "Dedicated scopes", - fullScopeAllowed: "Full scope allowed", - addClientScopesTo: "Add client scopes to {{clientName}}", - clientScopeRemoveSuccess: "Scope mapping successfully removed", - clientScopeRemoveError: "Could not remove the scope mapping {{error}}", - clientScopeSuccess: "Scope mapping successfully updated", - clientScopeError: "Could not update the scope mapping {{error}}", - searchByName: "Search by name", - setup: "Setup", - selectAUser: "Select a user", - client: "Client", - evaluate: "Evaluate", - reevaluate: "Re-evaluate", - showAuthData: "Show authorization data", - results: "Results", - allResults: "All results", - resultPermit: "Result-Permit", - resultDeny: "Result-Deny", - permit: "Permit", - deny: "Deny", - unanimous: "Unanimous", - affirmative: "Affirmative", - consensus: "Consensus", - votedToStatus: " voted to {{status}}", - overallResults: "Overall Results", - grantedScopes: "Granted scopes", - deniedScopes: "Denied scopes", - permission: "Permission", - lastEvaluation: "Last Evaluation", - resourcesAndAuthScopes: "Resources and Authentication Scopes", - authScopes: "Authorization scopes", - authDetails: "Authorization details", - anyResource: "Any resource", - anyScope: "Any scope", - selectScope: "Select a scope", - applyToResourceType: "Apply to Resource Type", - contextualInfo: "Contextual Information", - contextualAttributes: "Contextual Attributes", - selectOrTypeAKey: "Select or type a key", - custom: "Custom Attribute...", - kc: { - identity: { - authc: { - method: "Authentication Method", - }, - }, - realm: { - name: "Realm", - }, - time: { - date_time: "Date/Time (MM/dd/yyyy hh:mm:ss)", - }, - client: { - network: { - ip_address: "Client IPv4 Address", - host: "Client Host", - }, - user_agent: "Client/User Agent", - }, - }, - password: "Password", - oneTimePassword: "One-Time Password", - kerberos: "Kerberos", - removeMappingTitle: "Remove mapping?", - removeMappingConfirm_one: "Are you sure you want to remove this mapping?", - removeMappingConfirm_other: - "Are you sure you want to remove {{count}} mappings", - clientScopeSearch: { - name: "Name", - type: "Assigned type", - protocol: "Protocol", - }, - authorization: "Authorization", - settings: "Settings", - policyEnforcementMode: "Policy enforcement mode", - policyEnforcementModes: { - ENFORCING: "Enforcing", - PERMISSIVE: "Permissive", - DISABLED: "Disabled", - }, - decisionStrategy: "Decision strategy", - decisionStrategies: { - UNANIMOUS: "Unanimous", - AFFIRMATIVE: "Affirmative", - CONSENSUS: "Consensus", - }, - importResources: "The following settings and data will be imported:", - importWarning: - "The data and settings imported above may overwrite the data and settings that already exist.", - importResourceSuccess: "The resource was successfully imported", - importResourceError: "Could not import the resource due to {{error}}", - createResource: "Create resource", - emptyPermissions: "No permissions", - emptyPermissionInstructions: - "If you want to create a permission, please click the button below to create a resource-based or scope-based permission.", - noScopeCreateHint: - "There is no authorization scope you can't create scope-based permission", - noResourceCreateHint: - "There are no resources you can't create resource-based permission", - createResourceBasedPermission: "Create resource-based permission", - createScopeBasedPermission: "Create scope-based permission", - displayName: "Display name", - type: "Type", - addUri: "Add URI", - authorizationScopes: "Authorization scopes", - iconUri: "Icon URI", - ownerManagedAccess: "User-Managed access enabled", - resourceAttribute: "Resource attribute", - createResourceSuccess: "Resource created successfully", - updateResourceSuccess: "Resource successfully updated", - resourceSaveError: "Could not persist resource due to {{error}}", - associatedPermissions: "Associated permission", - allowRemoteResourceManagement: "Remote resource management", - resources: "Resources", - resource: "Resource", - allTypes: "All types", - scope: "Scope", - owner: "Owner", - uris: "URIs", - scopes: "Scopes", - policies: "Policies", - createPermission: "Create permission", - permissionDetails: "Permission details", - deleteResource: "Permanently delete resource?", - deleteResourceConfirm: - "If you delete this resource, some permissions will be affected.", - deleteResourceWarning: - "The permissions below will be removed when they are no longer used by other resources:", - resourceDeletedSuccess: "The resource successfully deleted", - resourceDeletedError: "Could not remove the resource {{error}}", - identityInformation: "Identity Information", - searchForPermission: "Search for permission", - deleteScope: "Permanently delete authorization scope?", - deleteScopeConfirm: - "If you delete this authorization scope, some permissions will be affected.", - deleteScopeWarning: - "The permissions below will be removed when they are no longer used by other authorization scopes:", - resourceScopeSuccess: "The authorization scope successfully deleted", - resourceScopeError: - "Could not remove the authorization scope due to {{error}}", - associatedPolicy: "Associated policy", - deletePermission: "Permanently delete permission?", - deletePermissionConfirm: - "Are you sure you want to delete the permission {{permission}}", - permissionDeletedSuccess: "Successfully deleted permission", - permissionDeletedError: "Could not delete permission due to {{error}}", - applyToResourceTypeFlag: "Apply to resource type", - resourceType: "Resource type", - createPermissionSuccess: "Successfully created the permission", - updatePermissionSuccess: "Successfully updated the permission", - permissionSaveError: "Could not update the permission due to {{error}}", - createAuthorizationScope: "Create authorization scope", - emptyAuthorizationScopes: "No authorization scopes", - emptyAuthorizationInstructions: - "If you want to create authorization scopes, please click the button below to create the authorization scope", - createScopeSuccess: "Authorization scope created successfully", - updateScopeSuccess: "Authorization scope successfully updated", - scopeSaveError: "Could not persist authorization scope due to {{error}}", - createPolicy: "Create policy", - dependentPermission: "Dependent permission", - deletePolicy: "Permanently delete policy?", - deletePolicyConfirm: - "If you delete this policy, some permissions or aggregated policies will be affected.", - deletePolicyWarning: - "The aggregated polices below will be removed automatically:", - policyDeletedSuccess: "The Policy successfully deleted", - policyDeletedError: "Could not remove the resource {{error}}", - emptyPolicies: "No policies", - emptyPoliciesInstructions: - "If you want to create a policy, please click the button below to create the policy.", - chooseAPolicyType: "Choose a policy type", - chooseAPolicyTypeInstructions: - "Choose one policy type from the list below and then you can configure a new policy for authorization. There are some types and description.", - policyProvider: { - regex: "Define regex conditions for your permissions.", - role: "Define conditions for your permissions where a set of one or more roles is permitted to access an object.", - js: "Define conditions for your permissions using JavaScript. It is one of the rule-based policy types supported by Keycloak, and provides flexibility to write any policy based on the Evaluation API.", - client: - "Define conditions for your permissions where a set of one or more clients is permitted to access an object.", - time: "Define time conditions for your permissions.", - user: "Define conditions for your permissions where a set of one or more users is permitted to access an object.", - "client-scope": - "Define conditions for your permissions where a set of one or more client scopes is permitted to access an object.", - aggregate: - "Reuse existing policies to build more complex ones and keep your permissions even more decoupled from the policies that are evaluated during the processing of authorization requests.", - group: - "Define conditions for your permissions where a set of one or more groups (and their hierarchies) is permitted to access an object.", - }, - applyPolicy: "Apply policy", - addClientScopes: "Add client scopes", - emptyAddClientScopes: "No client scopes", - emptyAddClientScopesInstructions: "There are no client scopes left to add", - clientScope: "Client scope", - groupsClaim: "Groups claim", - addGroups: "Add groups", - groups: "Groups", - users: "Users", - requiredClient: "Please add at least one client.", - requiredClientScope: "Please add at least one client scope.", - requiredGroups: "Please add at least one group.", - requiredRoles: "Please add at least one role.", - addGroupsToGroupPolicy: "Add groups to group policy", - extendToChildren: "Extend to children", - targetClaim: "Target claim", - regexPattern: "Regex pattern", - addRoles: "Add roles", - required: "Required", - startTime: "Start time", - repeat: "Repeat", - notRepeat: "Not repeat", - month: "Month", - dayMonth: "Day", - hour: "Hour", - minute: "Minute", - code: "Code", - expireTime: "Expire time", - logic: "Logic", - logicType: { - positive: "Positive", - negative: "Negative", - }, - createPolicySuccess: "Successfully created the policy", - updatePolicySuccess: "Successfully updated the policy", - policySaveError: "Could not update the policy due to {{error}}", - assignedClientScope: "Assigned client scope", - assignedType: "Assigned type", - emptyClientScopes: "This client doesn't have any added client scopes", - emptyClientScopesInstructions: - "There are currently no client scopes linked to this client. You can add existing client scopes to this client to share protocol mappers and roles.", - emptyClientScopesPrimaryAction: "Add client scopes", - scopeParameter: "Scope parameter", - scopeParameterPlaceholder: "Select scope parameters", - effectiveProtocolMappers: "Effective protocol mappers", - effectiveRoleScopeMappings: "Effective role scope mappings", - generatedAccessToken: "Generated access token", - generatedIdToken: "Generated ID token", - generatedIdTokenNo: "No generated id token", - generatedIdTokenIsDisabled: - "Generated id token is disabled when no user is selected", - generatedUserInfo: "Generated user info", - generatedUserInfoNo: "No generated user info", - generatedUserInfoIsDisabled: - "Generated user info is disabled when no user is selected", - searchForProtocol: "Search protocol mapper", - parentClientScope: "Parent client scope", - searchForRole: "Search role", - origin: "Origin", - user: "User", - generatedAccessTokenNo: "No generated access token", - generatedAccessTokenIsDisabled: - "Generated access token is disabled when no user is selected", - clientList: "Clients", - clientsList: "Clients list", - initialAccessToken: "Initial access token", - expirationValueNotValid: "Value should should be greater or equal to 1", - clientSettings: "Client details", - selectEncryptionType: "Select Encryption type", - generalSettings: "General Settings", - alwaysDisplayInConsole: "Always display in console", - capabilityConfig: "Capability config", - clientsExplain: - "Clients are applications and services that can request authentication of a user.", - explainBearerOnly: - "This is a special OIDC type. This client only allows bearer token requests and cannot participate in browser logins.", - createSuccess: "Client created successfully", - createError: "Could not create client: '{{error}}'", - clientImportError: "Could not import client: {{error}}", - clientSaveSuccess: "Client successfully updated", - clientSaveError: "Client could not be updated: {{error}}", - clientImportSuccess: "Client imported successfully", - clientDelete: "Delete {{clientId}} ?", - clientDeletedSuccess: "The client has been deleted", - clientDeleteError: "Could not delete client: {{error}}", - clientDeleteConfirmTitle: "Delete client?", - disableConfirmTitle: "Disable client?", - downloadAdapterConfig: "Download adapter config", - disableConfirm: - "If you disable this client, you cannot initiate a login or obtain access tokens.", - clientDeleteConfirm: - "If you delete this client, all associated data will be removed.", - searchInitialAccessToken: "Search token", - createToken: "Create initial access token", - tokenDeleteConfirm: - "Are you sure you want to permanently delete the initial access token {{id}}", - tokenDeleteConfirmTitle: "Delete initial access token?", - tokenDeleteSuccess: "Initial access token deleted successfully", - tokenDeleteError: "Could not delete initial access token: '{{error}}'", - timestamp: "Created date", - created: "Created", - lastUpdated: "Last updated", - expires: "Expires", - count: "Count", - remainingCount: "Remaining count", - expiration: "Expiration", - noTokens: "No initial access tokens", - noTokensInstructions: - 'You haven\'t created any initial access tokens. Create an initial access token by clicking "Create".', - tokenSaveSuccess: "New initial access token has been created", - tokenSaveError: "Could not create initial access token {{error}}", - initialAccessTokenDetails: "Initial access token details", - copyInitialAccessToken: - "Please copy and paste the initial access token before closing as it can not be retrieved later.", - copySuccess: "Successfully copied to clipboard!", - clipboardCopyError: "Error copying to clipboard.", - copyToClipboard: "Copy to clipboard", - clientAuthentication: "Client authentication", - authentication: "Authentication", - authenticationFlow: "Authentication flow", - standardFlow: "Standard flow", - directAccess: "Direct access grants", - serviceAccount: "Service accounts roles", - oauthDeviceAuthorizationGrant: "OAuth 2.0 Device Authorization Grant", - oidcCibaGrant: "OIDC CIBA Grant", - enableServiceAccount: "Enable service account roles", - searchByRoleName: "Search by role name", - filterByOrigin: "Filter by Origin", - realmRoles: "Realm roles", - clients: "Clients", - assign: "Assign", - roleMappingUpdatedSuccess: "Role mapping updated", - roleMappingUpdatedError: "Could not update role mapping {{error}}", - displayOnClient: "Display client on screen", - consentScreenText: "Client consent screen text", - loginSettings: "Login settings", - logoutSettings: "Logout settings", - backchannelLogoutUrl: "Backchannel logout URL", - backchannelUrlInvalid: "Backchannel logout URL is not a valid URL", - backchannelLogoutSessionRequired: "Backchannel logout session required", - backchannelLogoutRevokeOfflineSessions: - "Backchannel logout revoke offline sessions", - frontchannelLogout: "Front channel logout", - frontchannelLogoutUrl: "Front-channel logout URL", - frontchannelUrlInvalid: "Front-channel logout URL is not a valid URL", - accessSettings: "Access settings", - rootUrl: "Root URL", - validRedirectUri: "Valid redirect URIs", - idpInitiatedSsoUrlName: "IDP-Initiated SSO URL name", - idpInitiatedSsoUrlNameHelp: "Target IDP initiated SSO URL: {{url}}", - idpInitiatedSsoRelayState: "IDP Initiated SSO Relay State", - masterSamlProcessingUrl: "Master SAML Processing URL", - samlCapabilityConfig: "SAML capabilities", - signatureAndEncryption: "Signature and Encryption", - nameIdFormat: "Name ID format", - forceNameIdFormat: "Force name ID format", - forcePostBinding: "Force POST binding", - forceArtifactBinding: "Force artifact binding", - includeAuthnStatement: "Include AuthnStatement", - includeOneTimeUseCondition: "Include OneTimeUse Condition", - optimizeLookup: "Optimize REDIRECT signing key lookup", - signDocuments: "Sign documents", - signAssertions: "Sign assertions", - signatureKeyName: "SAML signature key name", - canonicalization: "Canonicalization method", - addRedirectUri: "Add valid redirect URIs", - loginTheme: "Login theme", - consentRequired: "Consent required", - clientAuthenticator: "Client Authenticator", - changeAuthenticatorConfirmTitle: "Change to {{clientAuthenticatorType}}", - changeAuthenticatorConfirm: - "If you change authenticator to {{clientAuthenticatorType}}, the keycloak database will be updated and you may need to download a new adapter configuration for this client", - signedJWTConfirm: - 'You should configure JWKS URL or keys in the "Keys" tab to change the parameters of Signed JWT authenticator.', - anyAlgorithm: "Any algorithm", - clientSecret: "Client secret", - regenerate: "Regenerate", - confirmClientSecretTitle: "Regenerate secret for this client?", - confirmClientSecretBody: - "If you regenerate secret, the Keycloak database will be updated and you will need to download a new adapter for this client.", - confirmAccessTokenTitle: "Regenerate registration access token?", - confirmAccessTokenBody: - "If you regenerate registration access token, the access data regarding the client registration service will be updated.", - clientSecretSuccess: "Client secret regenerated", - clientSecretError: "Could not regenerate client secret due to: {{error}}", - signingKeysConfig: "Signing keys config", - signingKeysConfigExplain: - 'If you enable the "Client signature required" below, you must configure the signing keys by generating or importing keys, and the client will sign their saml requests and responses. The signature will be validated.', - encryptionKeysConfig: "Encryption keys config", - encryptionKeysConfigExplain: - 'If you enable the "Encryption assertions" below, you must configure the encryption keys by generating or importing keys, and the SAML assertions will be encrypted with the client\'s public key using AES.', - enableClientSignatureRequired: 'Enable "Client signature required"?', - enableClientSignatureRequiredExplain: - 'If you enable "Client signature required", the adapter of this client will be updated. You may need to download a new adapter for this client. You need to generate or import keys for this client otherwise the authentication will not work.', - selectMethod: "Select method", - selectMethodType: { - generate: "Generate", - import: "Import", - }, - confirm: "Confirm", - browse: "Browse", - importKey: "Import key", - disableSigning: 'Disable "{{key}}"', - disableSigningExplain: - 'If you disable "{{key}}", the Keycloak database will be updated and you may need to download a new adapter for this client.', - reGenerateSigning: "Regenerate signing key for this client", - reGenerateSigningExplain: - "If you regenerate signing key for client, the Keycloak database will be updated and you may need to download a new adapter for this client.", - registrationAccessToken: "Registration access token", - accessTokenSuccess: "Access token regenerated", - accessTokenError: "Could not regenerate access token due to: {{error}}", - signatureAlgorithm: "Signature algorithm", - allowRegexComparison: "Allow regex pattern comparison", - subject: "Subject DN", - searchForClient: "Search for client", - advanced: "Advanced", - revocation: "Revocation", - clustering: "Clustering", - notBefore: "Not before", - setToNow: "Set to now", - noAdminUrlSet: - "No push sent. No admin URI configured or no registered cluster nodes available", - notBeforeSetToNow: "Not Before set for client", - notBeforeNowClear: "Not Before cleared for client", - notBeforePushFail: 'Failed to push "not before" to: {{failedNodes}}', - notBeforePushSuccess: 'Successfully push "not before" to: {{successNodes}}', - testClusterFail: - "Failed verified availability for: {{failedNodes}}. Fix or unregister failed cluster nodes and try again", - testClusterSuccess: - "Successfully verified availability for: {{successNodes}}", - deleteNode: "Delete node?", - deleteNodeBody: - 'Are you sure you want to permanently delete the node "{{node}}"', - deleteNodeSuccess: "Node successfully removed", - deleteNodeFail: "Could not delete node: '{{error}}'", - addedNodeSuccess: "Node successfully added", - addedNodeFail: "Could not add node: '{{error}}'", - addNode: "Add node", - push: "Push", - clear: "Clear", - nodeReRegistrationTimeout: "Node Re-registration timeout", - registeredClusterNodes: "Registered cluster nodes", - nodeHost: "Node host", - noNodes: "No nodes registered", - noNodesInstructions: - "There are no nodes registered, you can add one manually.", - lastRegistration: "Last registration", - testClusterAvailability: "Test cluster availability", - registerNodeManually: "Register node manually", - fineGrainOpenIdConnectConfiguration: - "Fine grain OpenID Connect configuration", - fineGrainSamlEndpointConfig: "Fine Grain SAML Endpoint Configuration", - logoUrl: "Logo URL", - policyUrl: "Policy URL", - termsOfServiceUrl: "Terms of service URL", - accessTokenSignatureAlgorithm: "Access token signature algorithm", - idTokenSignatureAlgorithm: "ID token signature algorithm", - idTokenEncryptionKeyManagementAlgorithm: - "ID token encryption key management algorithm", - idTokenEncryptionContentEncryptionAlgorithm: - "ID token encryption content encryption algorithm", - userInfoSignedResponseAlgorithm: "User info signed response algorithm", - requestObjectSignatureAlgorithm: "Request object signature algorithm", - requestObjectRequired: "Request object required", - requestObject: { - "not required": "Not required", - "request or request_uri": "Request or Request URI", - "request only": "Request only", - "request_uri only": "Request URI only", - }, - requestObjectEncryption: "Request object encryption algorithm", - requestObjectEncoding: "Request object content encryption algorithm", - validRequestURIs: "Valid request URIs", - addRequestUri: "Add valid request URIs", - authorizationSignedResponseAlg: - "Authorization response signature algorithm", - authorizationEncryptedResponseAlg: - "Authorization response encryption key management algorithm", - authorizationEncryptedResponseEnc: - "Authorization response encryption content encryption algorithm", - openIdConnectCompatibilityModes: "Open ID Connect Compatibly Modes", - excludeSessionStateFromAuthenticationResponse: - "Exclude Session State From Authentication Response", - useRefreshTokens: "Use refresh tokens", - useRefreshTokenForClientCredentialsGrant: - "Use refresh tokens for client credentials grant", - assertionConsumerServicePostBindingURL: - "Assertion Consumer Service POST Binding URL", - assertionConsumerServiceRedirectBindingURL: - "Assertion Consumer Service Redirect Binding URL", - logoutServicePostBindingURL: "Logout Service POST Binding URL", - logoutServiceRedirectBindingURL: "Logout Service Redirect Binding URL", - logoutServiceArtifactBindingUrl: "Logout Service ARTIFACT Binding URL", - artifactBindingUrl: "Artifact Binding URL", - artifactResolutionService: "Artifact Resolution Service", - advancedSettings: "Advanced Settings", - assertionLifespan: "Assertion Lifespan", - accessTokenLifespan: "Access Token Lifespan", - oAuthMutual: "OAuth 2.0 Mutual TLS Certificate Bound Access Tokens Enabled", - keyForCodeExchange: "Proof Key for Code Exchange Code Challenge Method", - pushedAuthorizationRequestRequired: "Pushed authorization request required", - acrToLoAMapping: "ACR to LoA Mapping", - authenticationOverrides: "Authentication flow overrides", - browserFlow: "Browser Flow", - directGrant: "Direct Grant Flow", - jwksUrlConfig: "JWKS URL configs", - keysIntro: - 'If "Use JWKS URL switch" is on, you need to fill a valid JWKS URL. After saving, admin can download keys from the JWKS URL or keys will be downloaded automatically by Keycloak server when see the stuff signed by the unknown KID', - useJwksUrl: "Use JWKS URL", - certificate: "Certificate", - jwksUrl: "JWKS URL", - generateNewKeys: "Generate new keys", - generateKeys: "Generate keys?", - generate: "Generate", - archiveFormat: "Archive format", - keyAlias: "Key alias", - keyPassword: "Key password", - storePassword: "Store password", - generateSuccess: "New key pair and certificate generated successfully", - generateError: "Could not generate new key pair and certificate {{error}}", - import: "Import", - importFile: "Import file", - importSuccess: "New certificate imported", - importError: "Could not import certificate {{error}}", - tokenLifespan: { - expires: "Expires in", - never: "Never expires", - }, - mappers: "Mappers", - }, -}; diff --git a/src/common-help.ts b/src/common-help.ts deleted file mode 100644 index 39568fa8d3..0000000000 --- a/src/common-help.ts +++ /dev/null @@ -1,10 +0,0 @@ -export default { - "common-help": { - helpToggleInfo: - "This toggle will enable / disable part of the help info in the console. Includes any help text, links and popovers.", - showPassword: "Show password field in clear text", - helpFileUpload: "Upload a JSON file", - dragHelp: - "Press space or enter to begin dragging, and use the arrow keys to navigate up or down. Press enter to confirm the drag, or any other key to cancel the drag operation.", - }, -}; diff --git a/src/common-messages.ts b/src/common-messages.ts deleted file mode 100644 index 85e2be4aec..0000000000 --- a/src/common-messages.ts +++ /dev/null @@ -1,229 +0,0 @@ -export default { - common: { - fullName: "{{givenName}} {{familyName}}", - unknownUser: "Anonymous", - - add: "Add", - yes: "Yes", - no: "No", - create: "Create", - save: "Save", - revert: "Revert", - cancel: "Cancel", - reload: "Reload", - continue: "Continue", - close: "Close", - delete: "Delete", - remove: "Remove", - search: "Search", - key: "Key", - value: "Value", - noSearchResults: "No search results", - noSearchResultsInstructions: "Click on the search bar above to search", - clearAllFilters: "Clear all filters", - next: "Next", - back: "Back", - finish: "Finish", - skipCustomizationAndFinish: "Skip customization and finish", - export: "Export", - action: "Action", - download: "Download", - resourceFile: "Resource file", - clear: "Clear", - clearFile: "Clear this file", - clearFileExplain: "Are you sure you want to clear this file?", - on: "On", - off: "Off", - edit: "Edit", - enabled: "Enabled", - disabled: "Disabled", - disable: "Disable", - selectOne: "Select an option", - select: "Select", - choose: "Choose...", - any: "Any", - none: "None", - signOut: "Sign out", - manageAccount: "Manage account", - serverInfo: "Server info", - realmInfo: "Realm info", - help: "Help", - helpLabel: "More help for '{{label}}'", - helpEnabled: "Help on", - helpDisabled: "Help off", - documentation: "Documentation", - enableHelpMode: "Enable help mode", - learnMore: "Learn more", - show: "Show", - hide: "Hide", - showRemaining: "Show ${remaining}", - more: "{{count}} more", - test: "Test", - testConnection: "Test connection", - name: "Name", - role: "Role", - description: "Description", - type: "Type", - category: "Category", - priority: "Priority", - unexpectedError: "An unexpected error occurred: '{{error}}'", - retry: "Press here to refresh and continue", - plus: "Plus", - minus: "Minus", - confirm: "Confirm", - - clientScope: { - default: "Default", - optional: "Optional", - none: "None", - }, - allTypes: "All types", - - home: "Home", - manage: "Manage", - clients: "Clients", - clientScopes: "Client scopes", - realmRoles: "Realm roles", - clientRoles: "Client roles", - users: "Users", - groups: "Groups", - sessions: "Sessions", - events: "Events", - mappers: "Mappers", - permissions: "Permissions", - permissionsList: "Permission list", - permissionsListIntro: - "Edit the permission list by clicking the scope-name. It then redirects to the permission details page of the client named <1>{{realm}}", - usersPermissionsHint: - "Fine grained permissions for managing all users in realm. You can define different policies for who is allowed to manage users in the realm.", - clientsPermissionsHint: - "Fine grained permissions for administrators that want to manage this client or apply roles defined by this client.", - - permissionsScopeName: "Scope-name", - permissionsEnabled: "Permissions enabled", - permissionsDisable: "Disable permissions?", - permissionsDisableConfirm: - "If you disable the permissions, all the permissions in the list below will be delete automatically. In addition, the resources and scopes that are related will be removed", - scopePermissions: { - clients: { - "manage-description": - "Policies that decide if an administrator can manage this client", - "configure-description": - "Reduced management permissions for administrator. Cannot set scope, template, or protocol mappers.", - "view-description": - "Policies that decide if an administrator can view this client", - "map-roles-description": - "Policies that decide if an administrator can map roles defined by this client", - "map-roles-client-scope-description": - "Policies that decide if an administrator can apply roles defined by this client to the client scope of another client", - "map-roles-composite-description": - "Policies that decide if an administrator can apply roles defined by this client as a composite to another role", - "token-exchange-description": - "Policies that decide which clients are allowed exchange tokens for a token that is targeted to this client.", - }, - users: { - "view-description": - "Policies that decide if an administrator can view all users in realm", - "manage-description": - "Policies that decide if an administrator can manage all users in the realm", - "map-roles-description": - "Policies that decide if administrator can map roles for all users", - "manage-group-membership-description": - "Policies that decide if an administrator can manage group membership for all users in the realm. This is used in conjunction with specific group policy", - "impersonate-description": - "Policies that decide if administrator can impersonate other users", - "user-impersonated-description": - "Policies that decide which users can be impersonated. These policies are applied to the user being impersonated.", - }, - }, - - configure: "Configure", - realmSettings: "Realm settings", - authentication: "Authentication", - identityProviders: "Identity providers", - userFederation: "User federation", - - settings: "Settings", - details: "Details", - - required: "Required field", - maxLength: "Max length {{length}}", - - createRealm: "Create Realm", - recent: "Recent", - - jumpToSection: "Jump to section", - - Sunday: "Sunday", - Monday: "Monday", - Tuesday: "Tuesday", - Wednesday: "Wednesday", - Thursday: "Thursday", - Friday: "Friday", - Saturday: "Saturday", - - assignRole: "Assign role", - assign: "Assign", - unAssignRole: "Unassign", - hideInheritedRoles: "Hide inherited roles", - assignRolesTo: "Assign roles to {{client}} account", - inherentFrom: "Inherited from", - - unitLabel: "Select a time unit", - times: { - seconds: "Seconds", - minutes: "Minutes", - hours: "Hours", - days: "Days", - years: "Years", - }, - - attributes: "Attributes", - addAttribute: "Add an attribute", - removeAttribute: "Remove attribute", - keyPlaceholder: "Type a key", - valuePlaceholder: "Type a value", - - credentials: "Credentials", - clientId: "Client ID", - id: "ID", - - addMapper: "Add mapper", - createNewMapper: "Create new mapper", - searchForMapper: "Search for mapper", - mapperType: "Mapper type", - mappingDeletedSuccess: "Mapping successfully deleted", - mappingDeletedError: "Could not delete mapping: '{{error}}'", - mappingDetails: "Mapper details", - mappingUpdatedSuccess: "Mapping successfully updated", - mappingUpdatedError: "Could not update mapping: '{{error}}'", - mappingCreatedSuccess: "Mapping successfully created", - mappingCreatedError: "Could not create mapping: '{{error}}'", - deleteMappingTitle: "Delete mapping?", - deleteMappingConfirm: "Are you sure you want to delete this mapping?", - - emptyMappers: "No mappers", - emptyMappersInstructions: - "If you want to add mappers, please click the button below to add some predefined mappers or to configure a new mapper.", - emptyPrimaryAction: "Add predefined mapper", - - leaveDirtyTitle: "Leave without saving?", - leaveDirtyConfirm: - "Do you want to leave this page without saving? Any unsaved changes will be lost.", - leave: "Leave", - reorder: "Reorder", - - onDragStart: "Dragging started for item {{item}}", - onDragMove: "Dragging item {{item}}", - onDragCancel: "Dragging cancelled. List is unchanged.", - onDragFinish: "Dragging finished {{list}}", - - notFound: "Could not find the resource that you are looking for", - - password: "Password", - passwordConfirmation: "Password confirmation", - temporaryPassword: "Temporary", - temporaryPasswordHelpText: - "If enabled, the user must change the password on next login", - }, -}; diff --git a/src/components/dynamic/labels.ts b/src/components/dynamic/labels.ts deleted file mode 100644 index cf01bf7fc4..0000000000 --- a/src/components/dynamic/labels.ts +++ /dev/null @@ -1,200 +0,0 @@ -export default { - dynamic: { - addMultivaluedLabel: "Add {{fieldLabel}}", - selectARole: "Select a role", - selectASourceOfRoles: "Select a source of roles", - clientRoles: "Client roles", - roleGroup: "Use a realm role from:", - clientGroup: "Use a client role from:", - selectGroup: "Select group", - "loa-condition-level": "Level of Authentication (LoA)", - "loa-condition-level.tooltip": - "The number value, usually 1 or bigger, which specifies level of authentication. Condition evaluates to true if user does not yet have this authentication level and this level is requested. This level of authentication will be set to the session after the subflow, where this condition is configured, is successfully finished.", - "loa-max-age": "Max Age", - "loa-max-age.tooltip": - "Maximum age in seconds for which this level is considered valid after successful authentication. For example if this is set to 300 and user authenticated with this level and then tries to authenticate again in less than 300 second, then this level will be automatically considered as authenticated without need of user to re-authenticate. If it is set to 0, then the authenticated level is valid just for this authentication and next authentication will always need to re-authenticate. Default value is 10 hours, which is same as default SSO session timeout and it means that level is valid until end of SSO session and user doesn't need to re-authenticate.", - usermodel: { - prop: { - label: "Property", - tooltip: - "Name of the property method in the UserModel interface. For example, a value of 'email' would reference the UserModel.getEmail() method.", - }, - attr: { - label: "User Attribute", - tooltip: - "Name of stored user attribute which is the name of an attribute within the UserModel.attribute map.", - }, - clientRoleMapping: { - clientId: { - label: "Client ID", - tooltip: - "Client ID for role mappings. Just client roles of this client will be added to the token. If this is unset, client roles of all clients will be added to the token.", - }, - rolePrefix: { - label: "Client Role prefix", - tooltip: "A prefix for each client role (optional).", - }, - tokenClaimName: { - tooltip: - "Name of the claim to insert into the token. This can be a fully qualified name like 'address.street'. In this case, a nested json object will be created. To prevent nesting and use dot literally, escape the dot with backslash (\\.). The special token ${client_id} can be used and this will be replaced by the actual client ID. Example usage is 'resource_access.${client_id}.roles'. This is useful especially when you are adding roles from all the clients (Hence 'Client ID' switch is unset) and you want client roles of each client stored separately.", - }, - }, - realmRoleMapping: { - rolePrefix: { - label: "Realm Role prefix", - tooltip: "A prefix for each Realm Role (optional).", - }, - }, - }, - userSession: { - modelNote: { - label: "User Session Note", - tooltip: - "Name of stored user session note within the UserSessionModel.note map.", - }, - }, - multivalued: { - label: "Multivalued", - tooltip: - "Indicates if attribute supports multiple values. If true, the list of all values of this attribute will be set as claim. If false, just first value will be set as claim", - }, - aggregate: { - attrs: { - label: "Aggregate attribute values", - tooltip: - "Indicates if attribute values should be aggregated with the group attributes. If using OpenID Connect mapper the multivalued option needs to be enabled too in order to get all the values. Duplicated values are discarded and the order of values is not guaranteed with this option.", - }, - }, - selectRole: { - label: "Select Role", - tooltip: - "Enter role in the textbox to the left, or click this button to browse and select the role you want.", - }, - tokenClaimName: { - label: "Token Claim Name", - tooltip: - "Name of the claim to insert into the token. This can be a fully qualified name like 'address.street'. In this case, a nested json object will be created. To prevent nesting and use dot literally, escape the dot with backslash (\\.).", - }, - jsonType: { - label: "Claim JSON Type", - tooltip: - "JSON type that should be used to populate the json claim in the token. long, int, boolean, String and JSON are valid values.", - }, - includeInIdToken: { - label: "Add to ID token", - tooltip: "Should the claim be added to the ID token?", - }, - includeInAccessToken: { - label: "Add to access token", - tooltip: "Should the claim be added to the access token?", - }, - includeInAccessTokenResponse: { - label: "Add to access token response", - tooltip: - "Should the claim be added to the access token response? Should only be used for informative and non-sensitive data", - }, - includeInUserInfo: { - label: "Add to userinfo", - tooltip: "Should the claim be added to the userinfo?", - }, - sectorIdentifierUri: { - label: "Sector Identifier URI", - tooltip: - "Providers that use pairwise sub values and support Dynamic Client Registration SHOULD use the sector_identifier_uri parameter. It provides a way for a group of websites under common administrative control to have consistent pairwise sub values independent of the individual domain names. It also provides a way for Clients to change redirect_uri domains without having to reregister all their users.", - }, - pairwiseSubAlgorithmSalt: { - label: "Salt", - tooltip: - "Salt used when calculating the pairwise subject identifier. If left blank, a salt will be generated.", - }, - addressClaim: { - street: { - label: "User Attribute Name for Street", - tooltip: - "Name of User Attribute, which will be used to map to 'street_address' subclaim inside 'address' token claim. Defaults to 'street' .", - }, - locality: { - label: "User Attribute Name for Locality", - tooltip: - "Name of User Attribute, which will be used to map to 'locality' subclaim inside 'address' token claim. Defaults to 'locality' .", - }, - region: { - label: "User Attribute Name for Region", - tooltip: - "Name of User Attribute, which will be used to map to 'region' subclaim inside 'address' token claim. Defaults to 'region' .", - }, - postal_code: { - label: "User Attribute Name for Postal Code", - tooltip: - "Name of User Attribute, which will be used to map to 'postal_code' subclaim inside 'address' token claim. Defaults to 'postal_code' .", - }, - country: { - label: "User Attribute Name for Country", - tooltip: - "Name of User Attribute, which will be used to map to 'country' subclaim inside 'address' token claim. Defaults to 'country' .", - }, - formatted: { - label: "User Attribute Name for Formatted Address", - tooltip: - "Name of User Attribute, which will be used to map to 'formatted' subclaim inside 'address' token claim. Defaults to 'formatted' .", - }, - }, - included: { - client: { - audience: { - label: "Included Client Audience", - tooltip: - "The Client ID of the specified audience client will be included in audience (aud) field of the token. If there are existing audiences in the token, the specified value is just added to them. It won't override existing audiences.", - }, - }, - custom: { - audience: { - label: "Included Custom Audience", - tooltip: - "This is used just if 'Included Client Audience' is not filled. The specified value will be included in audience (aud) field of the token. If there are existing audiences in the token, the specified value is just added to them. It won't override existing audiences.", - }, - }, - }, - "name-id-format": "Name ID Format", - mapper: { - nameid: { - format: { - tooltip: "Name ID Format using Mapper", - }, - }, - }, - - "client-scopes-condition": { - label: "Expected Scopes", - tooltip: - "The list of expected client scopes. Condition evaluates to true if specified client request matches some of the client scopes. It depends also whether it should be default or optional client scope based on the 'Scope Type' configured.", - }, - "client-accesstype": { - label: "Client Access Type", - tooltip: - "Access Type of the client, for which the condition will be applied.", - }, - "client-roles": { - label: "Client Roles", - }, - "client-roles-condition": { - tooltip: - "Client roles, which will be checked during this condition evaluation. Condition evaluates to true if client has at least one client role with the name as the client roles specified in the configuration.", - }, - "client-updater-source-groups": { - label: "Groups", - tooltip: - "Name of groups to check. Condition evaluates to true if the entity, who creates/updates client is member of some of the specified groups. Configured groups are specified by their simple name, which must match to the name of the Keycloak group. No support for group hierarchy is used here.", - }, - "client-updater-trusted-hosts": { - label: "Trusted hosts", - tooltip: - "List of Hosts, which are trusted. In case that client registration/update request comes from the host/domain specified in this configuration, condition evaluates to true. You can use hostnames or IP addresses. If you use star at the beginning (for example '*.example.com' ) then whole domain example.com will be trusted.", - }, - "client-updater-source-roles": { - label: "Updating entity role", - tooltip: - "The condition is checked during client registration/update requests and it evaluates to true if the entity (usually user), who is creating/updating client is member of the specified role. For reference the realm role, you can use the realm role name like 'my_realm_role' . For reference client role, you can use the client_id.role_name for example 'my_client.my_client_role' will refer to client role 'my_client_role' of client 'my_client'.", - }, - }, -}; diff --git a/src/components/key-value-form/AttributeForm.tsx b/src/components/key-value-form/AttributeForm.tsx index 18f7896db6..dbcc2726aa 100644 --- a/src/components/key-value-form/AttributeForm.tsx +++ b/src/components/key-value-form/AttributeForm.tsx @@ -3,7 +3,7 @@ import { useTranslation } from "react-i18next"; import { FormProvider, UseFormMethods } from "react-hook-form"; import { ActionGroup, Button } from "@patternfly/react-core"; -import type { RoleRepresentation } from "../../model/role-model"; +import type RoleRepresentation from "@keycloak/keycloak-admin-client/lib/defs/roleRepresentation"; import type { KeyValueType } from "./key-value-convert"; import { KeyValueInput } from "./KeyValueInput"; import { FormAccess } from "../form-access/FormAccess"; diff --git a/src/context/auth/AdminClient.tsx b/src/context/auth/AdminClient.tsx index 4bb44c9bc9..e98b8ec676 100644 --- a/src/context/auth/AdminClient.tsx +++ b/src/context/auth/AdminClient.tsx @@ -1,7 +1,9 @@ +import KeycloakAdminClient from "@keycloak/keycloak-admin-client"; import axios from "axios"; -import type KeycloakAdminClient from "@keycloak/keycloak-admin-client"; import { createContext, DependencyList, useEffect } from "react"; import { useErrorHandler } from "react-error-boundary"; + +import environment from "../../environment"; import useRequiredContext from "../../utils/useRequiredContext"; export const AdminClient = createContext( @@ -61,3 +63,23 @@ export function useFetch( }; }, deps); } + +export async function initAdminClient() { + const kcAdminClient = new KeycloakAdminClient(); + + await kcAdminClient.init( + { onLoad: "check-sso", pkceMethod: "S256" }, + { + url: environment.authUrl, + realm: environment.loginRealm, + clientId: environment.isRunningAsTheme + ? "security-admin-console" + : "security-admin-console-v2", + } + ); + + kcAdminClient.setConfig({ realmName: environment.loginRealm }); + kcAdminClient.baseUrl = environment.authUrl; + + return kcAdminClient; +} diff --git a/src/context/auth/keycloak.ts b/src/context/auth/keycloak.ts deleted file mode 100644 index 7d27bb41ae..0000000000 --- a/src/context/auth/keycloak.ts +++ /dev/null @@ -1,25 +0,0 @@ -import KcAdminClient from "@keycloak/keycloak-admin-client"; -import environment from "../../environment"; - -export default async function (): Promise { - const kcAdminClient = new KcAdminClient(); - try { - await kcAdminClient.init( - { onLoad: "check-sso", pkceMethod: "S256" }, - { - url: environment.authUrl, - realm: environment.loginRealm, - clientId: environment.isRunningAsTheme - ? "security-admin-console" - : "security-admin-console-v2", - } - ); - kcAdminClient.setConfig({ realmName: environment.loginRealm }); - - kcAdminClient.baseUrl = environment.authUrl; - } catch (error) { - alert("failed to initialize keycloak"); - } - - return kcAdminClient; -} diff --git a/src/dashboard/messages.ts b/src/dashboard/messages.ts deleted file mode 100644 index cff7854c47..0000000000 --- a/src/dashboard/messages.ts +++ /dev/null @@ -1,19 +0,0 @@ -export default { - dashboard: { - realmName: "{{name}} realm", - welcome: "Welcome to", - introduction: - "If you want to leave this page and mange this realm, please click the corresponding menu items in the left navigation bar.", - serverInfo: "Server info", - version: "Version", - product: "Product", - profile: "Profile", - enabledFeatures: "Enabled features", - experimental: "Experimental", - preview: "Preview", - infoEnabledFeatures: "Something about what enabled features are.", - infoDisabledFeatures: "Something about what disabled features are.", - disabledFeatures: "Disabled features", - adminUiVersion: '<0 className="pf-u-mr-md">Admin UI version{{version}}', - }, -}; diff --git a/src/events/messages.ts b/src/events/messages.ts deleted file mode 100644 index bc116ef1e8..0000000000 --- a/src/events/messages.ts +++ /dev/null @@ -1,38 +0,0 @@ -export default { - events: { - title: "Events", - eventExplain: - "If you want to configure user events, Admin events or Event listeners, please enter <1>Event configs page realm settings to configure.", - eventConfigs: "Event configs", - userEvents: "User events", - adminEvents: "Admin events", - searchForUserEvent: "Search user event", - searchForAdminEvent: "Search admin event", - refresh: "Refresh", - emptyEvents: "No events logged", - emptyEventsInstructions: "Configure event logging in the realm settings", - time: "Time", - user: "User", - userId: "User ID", - username: "User name", - email: "Email", - eventType: "Event type", - ipAddress: "IP address", - client: "Client", - dateFrom: "Date(from)", - dateTo: "Date(to)", - searchUserEventsBtn: "Search events", - searchAdminEventsBtn: "Search admin events", - realm: "Realm", - resourcePath: "Resource path", - resourceType: "Resource type", - resourceTypes: "Resource types", - operationType: "Operation type", - operationTypes: "Operation types", - auth: "Auth", - attribute: "Attribute", - value: "Value", - representation: "Representation", - noUserDetails: "No user details", - }, -}; diff --git a/src/groups/messages.ts b/src/groups/messages.ts deleted file mode 100644 index 7471a4b537..0000000000 --- a/src/groups/messages.ts +++ /dev/null @@ -1,68 +0,0 @@ -export default { - groups: { - groups: "Groups", - groupDetails: "Group details", - childGroups: "Child groups", - createGroup: "Create group", - groupName: "Group name", - searchForGroups: "Search for groups", - searchGroups: "Search groups", - searchGroup: "Search group", - renameGroup: "Rename group", - deleteGroup: "Delete group", - leave: "Leave group", - usersLeft_one: "{{count}} user left the group", - usersLeft_other: "{{count}} users left the group", - usersLeftError: "Could not remove users from the group: {{error}}", - usersAdded_one: "{{count}} user added to the group", - usersAdded_other: "{{count}} users added to the group", - usersAddedError: "Could not add users to the group: {{error}}", - search: "Search", - members: "Members", - searchMembers: "Search members", - addMember: "Add member", - includeSubGroups: "Include sub-group users", - path: "Path", - moveTo: "Move to", - moveToGroup: "Move {{group1}} to {{group2}}", - root: "Root", - moveHere: "Move here", - moveGroupEmpty: "No sub groups", - moveGroupEmptyInstructions: - "There are no sub groups, select 'Move here' to move the selected group as a subgroup of this group", - moveGroupSuccess: "Group moved", - moveGroupError: "Could not move group {{error}}", - tableOfGroups: "Table of groups", - groupsDescription: "Placeholder for groups explanation.", - groupCreated: "Group created", - couldNotCreateGroup: "Could not create group {{error}}", - createAGroup: "Create a group", - renameAGroup: "Rename group", - create: "Create", - rename: "Rename", - email: "Email", - lastName: "Last name", - firstName: "First name", - membership: "Membership", - noSearchResults: "No search results", - noSearchResultsInstructions: - "Click on the search bar above to search for groups", - noGroupsInThisRealm: "No groups in this realm", - noGroupsInThisRealmInstructions: - "You haven't created any groups in this realm. Create a group to get started.", - noGroupsInThisSubGroup: "No groups in this sub group", - noGroupsInThisSubGroupInstructions: - "You haven't created any groups in this sub group.", - deleteConfirmTitle_one: "Delete group?", - deleteConfirmTitle_other: "Delete groups?", - deleteConfirm_one: "Are you sure you want to delete this group", - deleteConfirm_other: "Are you sure you want to delete this groups.", - groupDeleted_one: "Group deleted", - groupDeleted_other: "Groups deleted", - groupDeleteError: "Error deleting group {error}", - attributes: "Attributes", - groupUpdated: "Group updated", - groupUpdateError: "Error updating group {error}", - roleMapping: "Role mapping", - }, -}; diff --git a/src/i18n.ts b/src/i18n.ts index 0bd1df6398..62a22662bb 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -1,76 +1,87 @@ -import i18n from "i18next"; +import i18n, { InitOptions, TOptions } from "i18next"; +import HttpBackend, { LoadPathOption } from "i18next-http-backend"; import { initReactI18next } from "react-i18next"; -// import backend from "i18next-http-backend"; +import type KeycloakAdminClient from "@keycloak/keycloak-admin-client"; -import common from "./common-messages"; -import help from "./common-help"; -import dashboard from "./dashboard/messages"; -import clients from "./clients/messages"; -import clientsHelp from "./clients/help"; -import clientScopes from "./client-scopes/messages"; -import clientScopesHelp from "./client-scopes/help"; -import groups from "./groups/messages"; -import realm from "./realm/messages"; -import roles from "./realm-roles/messages"; -import users from "./user/messages"; -import usersHelp from "./user/help"; -import sessions from "./sessions/messages"; -import events from "./events/messages"; -import realmSettings from "./realm-settings/messages"; -import realmSettingsHelp from "./realm-settings/help"; -import authentication from "./authentication/messages"; -import authenticationHelp from "./authentication/help"; -import userFederation from "./user-federation/messages"; -import userFederationHelp from "./user-federation/help"; -import identityProviders from "./identity-providers/messages"; -import identityProvidersHelp from "./identity-providers/help"; - -import dynamicLabels from "./components/dynamic/labels"; +import environment from "./environment"; export const DEFAULT_LOCALE = "en"; -const initOptions = { - defaultNS: "common", - resources: { - en: { - ...common, - ...help, - ...dashboard, - ...clients, - ...clientsHelp, - ...clientScopes, - ...clientScopesHelp, - ...groups, - ...realm, - ...roles, - ...groups, - ...users, - ...usersHelp, - ...sessions, - ...userFederation, - ...events, - ...realmSettings, - ...realmSettingsHelp, - ...authentication, - ...authenticationHelp, - ...identityProviders, - ...identityProvidersHelp, - ...userFederation, - ...userFederationHelp, - ...dynamicLabels, - }, - }, - lng: DEFAULT_LOCALE, - fallbackLng: DEFAULT_LOCALE, +export async function initI18n(adminClient: KeycloakAdminClient) { + const options = await initOptions(adminClient); + await i18n.init(options); +} - interpolation: { - escapeValue: false, - }, +const initOptions = async ( + adminClient: KeycloakAdminClient +): Promise => { + const constructLoadPath: LoadPathOption = (_, namespaces) => { + if (namespaces[0] === "overrides") { + return `/admin/realms/${adminClient.realmName}/localization/{{lng}}`; + } else { + return `${environment.resourceUrl}/resources/{{lng}}/{{ns}}.json`; + } + }; + + return { + defaultNS: "common", + fallbackLng: DEFAULT_LOCALE, + preload: [DEFAULT_LOCALE], + ns: [ + "common", + "common-help", + "dashboard", + "clients", + "clients-help", + "client-scopes", + "client-scopes-help", + "groups", + "realm", + "roles", + "users", + "users-help", + "sessions", + "events", + "realm-settings", + "realm-settings-help", + "authentication", + "authentication-help", + "user-federation", + "user-federation-help", + "identity-providers", + "identity-providers-help", + "dynamic", + "overrides", + ], + interpolation: { + escapeValue: false, + }, + postProcess: ["overrideProcessor"], + backend: { + loadPath: constructLoadPath, + customHeaders: { + Authorization: `Bearer ${await adminClient.getAccessToken()}`, + }, + }, + }; }; -i18n +const configuredI18n = i18n + .use({ + type: "postProcessor", + name: "overrideProcessor", + process: function ( + value: string, + key: string, + _: TOptions, + translator: any + ) { + const override: string = + translator.resourceStore.data[translator.language].overrides[key]; + return override || value; + }, + }) .use(initReactI18next) - // .use(backend) - .init(initOptions); + .use(HttpBackend); -export default i18n; +export default configuredI18n; diff --git a/src/identity-providers/add/AddMapper.tsx b/src/identity-providers/add/AddMapper.tsx index bfd23963c7..64f0762200 100644 --- a/src/identity-providers/add/AddMapper.tsx +++ b/src/identity-providers/add/AddMapper.tsx @@ -17,7 +17,7 @@ import { ViewHeader } from "../../components/view-header/ViewHeader"; import { FormAccess } from "../../components/form-access/FormAccess"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import type { IdentityProviderAddMapperParams } from "../routes/AddMapper"; -import type { RoleRepresentation } from "../../model/role-model"; +import type RoleRepresentation from "@keycloak/keycloak-admin-client/lib/defs/roleRepresentation"; import { useAlerts } from "../../components/alert/Alerts"; import { IdentityProviderEditMapperParams, diff --git a/src/identity-providers/help.ts b/src/identity-providers/help.ts deleted file mode 100644 index b9093e86b1..0000000000 --- a/src/identity-providers/help.ts +++ /dev/null @@ -1,164 +0,0 @@ -export default { - "identity-providers-help": { - redirectURI: - "The redirect uri to use when configuring the identity provider.", - alias: - "The alias uniquely identifies an identity provider and it is also used to build the redirect uri.", - displayName: "Friendly name for Identity Providers.", - clientId: "The client identifier registered with the identity provider.", - clientSecret: - "The client secret registered with the identity provider. This field is able to obtain its value from vault, use ${vault.ID} format.", - displayOrder: - "Number defining the order of the providers in GUI (for example, on the Login page). The lowest number will be applied first.", - endpoints: "Shows the configuration of the Service Provider endpoint", - useDiscoveryEndpoint: - "If this setting is enabled, the discovery endpoint will be used to fetch the provider config. Keycloak can load the config from the endpoint and automatically update the config if the source has any updates", - discoveryEndpoint: - "Import metadata from a remote IDP discovery descriptor.", - importConfig: "Import metadata from a downloaded IDP discovery descriptor.", - passLoginHint: "Pass login_hint to identity provider.", - passCurrentLocale: - "Pass the current locale to the identity provider as a ui_locales parameter.", - logoutUrl: "End session endpoint to use to logout user from external IDP.", - backchannelLogout: "Does the external IDP support backchannel logout?", - disableUserInfo: - "Disable usage of User Info service to obtain additional user information? Default is to use this OIDC service.", - userInfoUrl: "The User Info Url. This is optional.", - issuer: - "The issuer identifier for the issuer of the response. If not provided, no validation will be performed.", - scopes: - "The scopes to be sent when asking for authorization. It can be a space-separated list of scopes. Defaults to 'openid'.", - prompt: - "Specifies whether the Authorization Server prompts the End-User for re-authentication and consent.", - acceptsPromptNone: - "This is just used together with Identity Provider Authenticator or when kc_idp_hint points to this identity provider. In case that client sends a request with prompt=none and user is not yet authenticated, the error will not be directly returned to client, but the request with prompt=none will be forwarded to this identity provider.", - validateSignature: - "Enable/disable signature validation of external IDP signatures.", - useJwksUrl: - "If the switch is on, identity provider public keys will be downloaded from given JWKS URL. This allows great flexibility because new keys will be always re-downloaded again when identity provider generates new keypair. If the switch is off, public key (or certificate) from the Keycloak DB is used, so when the identity provider keypair changes, you always need to import the new key to the Keycloak DB as well.", - jwksUrl: - "URL where identity provider keys in JWK format are stored. See JWK specification for more details. If you use external Keycloak identity provider, you can use URL like 'http://broker-keycloak:8180/realms/test/protocol/openid-connect/certs' assuming your brokered Keycloak is running on 'http://broker-keycloak:8180' and its realm is 'test' .", - allowedClockSkew: - "Clock skew in seconds that is tolerated when validating identity provider tokens. Default value is zero.", - attributeConsumingServiceIndex: - "Index of the Attribute Consuming Service profile to request during authentication.", - attributeConsumingServiceName: - "Name of the Attribute Consuming Service profile to advertise in the SP metadata.", - forwardParameters: - "Non OpenID Connect/OAuth standard query parameters to be forwarded to external IDP from the initial application request to Authorization Endpoint. Multiple parameters can be entered, separated by comma (,).", - clientAuthentication: - "The client authentication method (cfr. https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication). In case of JWT signed with private key, the realm private key is used.", - storeTokens: - "Enable/disable if tokens must be stored after authenticating users.", - storedTokensReadable: - "Enable/disable if new users can read any stored tokens. This assigns the broker.read-token role.", - trustEmail: - "If enabled, email provided by this provider is not verified even if verification is enabled for the realm.", - accountLinkingOnly: - "If true, users cannot log in through this provider. They can only link to this provider. This is useful if you don't want to allow login from the provider, but want to integrate with a provider", - hideOnLoginPage: - "If hidden, login with this provider is possible only if requested explicitly, for example using the 'kc_idp_hint' parameter.", - firstBrokerLoginFlowAlias: - "Alias of authentication flow, which is triggered after first login with this identity provider. Term 'First Login' means that no Keycloak account is currently linked to the authenticated identity provider account.", - postBrokerLoginFlowAlias: - 'Alias of authentication flow, which is triggered after each login with this identity provider. Useful if you want additional verification of each user authenticated with this identity provider (for example OTP). Leave this to "None" if you need no any additional authenticators to be triggered after login with this identity provider. Also note that authenticator implementations must assume that user is already set in ClientSession as identity provider already set it.', - syncMode: - "Default sync mode for all mappers. The sync mode determines when user data will be synced using the mappers. Possible values are: 'legacy' to keep the behaviour before this option was introduced, 'import' to only import the user once during first login of the user with this identity provider, 'force' to always update the user during every login with this identity provider.", - serviceProviderEntityId: - "The Entity ID that will be used to uniquely identify this SAML Service Provider.", - useEntityDescriptor: - "Import metadata from a remote IDP SAML entity descriptor.", - samlEntityDescriptor: - "Allows you to load external IDP metadata from a config file or to download it from a URL.", - ssoServiceUrl: - "The Url that must be used to send authentication requests (SAML AuthnRequest).", - singleLogoutServiceUrl: - "The Url that must be used to send logout requests.", - nameIdPolicyFormat: - "Specifies the URI reference corresponding to a name identifier format.", - principalType: - "Way to identify and track external users from the assertion. Default is using Subject NameID, alternatively you can set up identifying attribute.", - principalAttribute: - "Name or Friendly Name of the attribute used to identify external users.", - allowCreate: - "Allow the external identity provider to create a new identifier to represent the principal.", - httpPostBindingResponse: - "Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", - httpPostBindingAuthnRequest: - "Indicates whether the AuthnRequest must be sent using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", - httpPostBindingLogout: - "Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", - wantAuthnRequestsSigned: - "Indicates whether the identity provider expects a signed AuthnRequest.", - signatureAlgorithm: "The signature algorithm to use to sign documents.", - samlSignatureKeyName: - "Signed SAML documents contain identification of signing key in KeyName element. For Keycloak / RH-SSO counter-party, use KEY_ID, for MS AD FS use CERT_SUBJECT, for others check and use NONE if no other option works.", - wantAssertionsSigned: - "Indicates whether this service provider expects a signed Assertion.", - wantAssertionsEncrypted: - "Indicates whether this service provider expects an encrypted Assertion.", - forceAuthentication: - "Indicates whether the identity provider must authenticate the presenter directly rather than rely on a previous security context.", - validateSignatures: - "Enable/disable signature validation of SAML responses.", - validatingX509Certs: - "The certificate in PEM format that must be used to check for signatures. Multiple certificates can be entered, separated by comma (,).", - signServiceProviderMetadata: - "Enable/disable signature of the provider SAML metadata.", - passSubject: - "During login phase, forward an optional login_hint query parameter to SAML AuthnRequest's Subject.", - comparison: - 'Specifies the comparison method used to evaluate the requested context classes or statements. The default is "Exact".', - authnContextClassRefs: "Ordered list of requested AuthnContext ClassRefs.", - authnContextDeclRefs: "Ordered list of requested AuthnContext DeclRefs.", - addIdpMapperName: "Name of the mapper.", - syncModeOverride: - "Overrides the default sync mode of the IDP for this mapper. Values are: 'legacy' to keep the behaviour before this option was introduced, 'import' to only import the user once during first login of the user with this identity provider, 'force' to always update the user during every login with this identity provider and 'inherit' to use the sync mode defined in the identity provider for this mapper.", - advancedAttributeToRole: - "If the set of attributes exists and can be matched, grant the user the specified realm or client role.", - usernameTemplateImporter: "Format the username to import.", - hardcodedUserSessionAttribute: - "When a user is imported from a provider, hardcode a value to a specific user session attribute.", - externalRoleToRole: - "Looks for an external role in a keycloak access token. If external role exists, grant the user the specified realm or client role.", - advancedClaimToRole: - "If all claims exist, grant the user the specified realm or client role.", - claimToRole: - "If a claim exists, grant the user the specified realm or client role.", - oidcAttributeImporter: - "Import declared claim if it exists in ID, access token, or the claim set returned by the user profile endpoint into the specified user property or attribute.", - attributeImporter: - "Import declared SAML attribute if it exists in assertion into the specified user property or attribute.", - hardcodedRole: - "When user is imported from provider, hardcode a role mapping for it.", - hardcodedAttribute: - "When user is imported from provider, hardcode a value to a specific user attribute.", - samlAttributeToRole: - "If an attribute exists, grant the user the specified realm or client role.", - template: - "Template to use to format the username to import. Substitutions are enclosed in ${}. For example: '${ALIAS}.${CLAIM.sub}'. ALIAS is the provider alias. CLAIM. references an ID or Access token claim. The substitution can be converted to upper or lower case by appending |uppercase or |lowercase to the substituted value, e.g. '${CLAIM.sub | lowercase}", - target: - "Destination field for the mapper. LOCAL (default) means that the changes are applied to the username stored in local database upon user import. BROKER_ID and BROKER_USERNAME means that the changes are stored into the ID or username used for federation user lookup, respectively.", - userSessionAttribute: "Name of user session attribute you want to hardcode", - userAttribute: "Name of user attribute you want to hardcode", - claim: - "Name of claim to search for in token. You can reference nested claims by using a '.', i.e. 'address.locality'. To use dot (.) literally, escape it with backslash. (\\.)", - socialProfileJSONFieldPath: - "Path of field in Social Provider User Profile JSON data to get value from. You can use dot notation for nesting and square brackets for array index. E.g. 'contact.address[0].country'.", - userAttributeValue: "Value you want to hardcode", - attributeName: - "Name of attribute to search for in assertion. You can leave this blank and specify a friendly name instead.", - friendlyName: - "Friendly name of attribute to search for in assertion. You can leave this blank and specify a name instead.", - userAttributeName: - "User attribute name to store SAML attribute. Use email, lastName, and firstName to map to those predefined user properties.", - socialUserAttributeName: "User attribute name to store information.", - attributeValue: - "Value the attribute must have. If the attribute is a list, then the value must be contained in the list.", - attributes: - "Name and (regex) value of the attributes to search for in token. The configured name of an attribute is searched in SAML attribute name and attribute friendly name fields. Every given attribute description must be met to set the role. If the attribute is an array, then the value must be contained in the array. If an attribute can be found several times, then one match is sufficient.", - regexAttributeValues: - "If enabled attribute values are interpreted as regular expressions.", - role: "Role to grant to user if all attributes are present. Click 'Select Role' button to browse roles, or just type it in the textbox. To reference a client role the syntax is clientname.clientrole, i.e. myclient.myrole", - }, -}; diff --git a/src/identity-providers/messages.ts b/src/identity-providers/messages.ts deleted file mode 100644 index ab7a6869f9..0000000000 --- a/src/identity-providers/messages.ts +++ /dev/null @@ -1,187 +0,0 @@ -export default { - "identity-providers": { - listExplain: - "Through Identity Brokering it's easy to allow users to authenticate to Keycloak using external Identity Provider or Social Networks.", - searchForProvider: "Search for provider", - providerDetails: "Provider details", - addProvider: "Add provider", - addMapper: "Add mapper", - addIdPMapper: "Add Identity Provider Mapper", - editIdPMapper: "Edit Identity Provider Mapper", - mappersList: "Mappers list", - noMappers: "No Mappers", - noMappersInstructions: - "There are currently no mappers for this identity provider.", - searchForMapper: "Search for mapper", - addKeycloakOpenIdProvider: "Add Keycloak OpenID Connect provider", - addOpenIdProvider: "Add OpenID Connect provider", - addSamlProvider: "Add SAML provider", - manageDisplayOrder: "Manage display order", - deleteProvider: "Delete provider?", - deleteProviderMapper: "Delete mapper?", - deleteConfirm: - "Are you sure you want to permanently delete the provider '{{provider}}'?", - deleteMapperConfirm: - "Are you sure you want to permanently delete the mapper {{mapper}}?", - deleteMapperSuccess: "Mapper successfully deleted.", - deletedSuccess: "Provider successfully deleted.", - deleteError: "Could not delete the provider {{error}}", - disableProvider: "Disable provider?", - disableConfirm: - "Are you sure you want to disable the provider '{{provider}}'", - disableSuccess: "Provider successfully disabled", - disableError: "Could not disable the provider {{error}}", - updateSuccess: "Provider successfully updated", - updateError: "Could not update the provider {{error}}", - getStarted: "To get started, select a provider from the list below.", - addIdentityProvider: "Add {{provider}} provider", - redirectURI: "Redirect URI", - clientId: "Client ID", - clientSecret: "Client Secret", - displayOrder: "Display order", - endpoints: "Endpoints", - samlEndpointsLabel: "SAML 2.0 Service Provider Metadata", - createSuccess: "Identity provider successfully created", - createError: "Could not create the identity provider: {{error}}", - orderDialogIntro: - "The order that the providers are listed in the login page or the account console. You can drag the row handles to change the order.", - manageOrderTableAria: - "List of identity providers in the order listed on the login page", - manageOrderItemAria: - "Press space or enter to begin dragging, and use the arrow keys to navigate up or down. Press enter to confirm the drag, or any other key to cancel the drag operation.", - orderChangeSuccess: - "Successfully changed display order of identity providers", - orderChangeError: - "Could not change display order of identity providers {{error}}", - alias: "Alias", - displayName: "Display name", - useDiscoveryEndpoint: "Use discovery endpoint", - discoveryEndpoint: "Discovery endpoint", - useEntityDescriptor: "Use entity descriptor", - samlEntityDescriptor: "SAML entity descriptor", - ssoServiceUrl: "Single Sign-On service URL", - singleLogoutServiceUrl: "Single logout service URL", - nameIdPolicyFormat: "NameID policy format", - persistent: "Persistent", - transient: "Transient", - email: "Email", - kerberos: "Kerberos", - x509: "X.509 Subject Name", - windowsDomainQN: "Windows Domain Qualified Name", - unspecified: "Unspecified", - principalType: "Principal type", - principalAttribute: "Principal attribute", - allowCreate: "Allow create", - subjectNameId: "Subject NameID", - attributeName: "Attribute [Name]", - attributeFriendlyName: "Attribute [Friendly Name]", - claim: "Claim", - claimValue: "Claim Value", - claims: "Claims", - socialProfileJSONFieldPath: "Social Profile JSON Field Path", - mapperAttributeName: "Attribute Name", - mapperUserAttributeName: "User Attribute Name", - mapperAttributeFriendlyName: "Friendly name", - httpPostBindingResponse: "HTTP-POST binding response", - httpPostBindingAuthnRequest: "HTTP-POST binding for AuthnRequest", - httpPostBindingLogout: "HTTP-POST binding logout", - wantAuthnRequestsSigned: "Want AuthnRequests signed", - signatureAlgorithm: "Signature algorithm", - samlSignatureKeyName: "SAML signature key name", - wantAssertionsSigned: "Want Assertions signed", - wantAssertionsEncrypted: "Want Assertions encrypted", - forceAuthentication: "Force authentication", - validatingX509Certs: "Validating X509 certificates", - signServiceProviderMetadata: "Sign service provider metadata", - passSubject: "Pass subject", - serviceProviderEntityId: "Service provider entity ID", - importConfig: "Import config from file", - showMetaData: "Show metadata", - hideMetaData: "Hide metadata", - noValidMetaDataFound: - "No valid metadata was found at this URL: '{{error}}'", - advanced: "Advanced", - metadataOfDiscoveryEndpoint: "Metadata of the discovery endpoint", - authorizationUrl: "Authorization URL", - passLoginHint: "Pass login_hint", - passCurrentLocale: "Pass current locale", - tokenUrl: "Token URL", - logoutUrl: "Logout URL", - backchannelLogout: "Backchannel logout", - disableUserInfo: "Disable user info", - userInfoUrl: "User Info URL", - issuer: "Issuer", - scopes: "Scopes", - prompt: "Prompt", - prompts: { - unspecified: "Unspecified", - none: "None", - consent: "Consent", - login: "Login", - select_account: "Select account", - }, - clientAuthentication: "Client authentication", - clientAuthentications: { - clientAuth_post: "Client secret sent as post", - clientAuth_basic: "Client secret sent as basic auth", - clientAuth_secret_jwt: "Client secret as jwt", - clientAuth_privatekey_jwt: "JWT signed with private key", - }, - acceptsPromptNone: "Accepts prompt=none forward from client", - validateSignature: "Validate Signatures", - useJwksUrl: "Use JWKS URL", - jwksUrl: "JWKS URL", - allowedClockSkew: "Allowed clock skew", - attributeConsumingServiceIndex: "Attribute Consuming Service Index", - attributeConsumingServiceName: "Attribute Consuming Service Name", - forwardParameters: "Forwarded query parameters", - generalSettings: "General settings", - oidcSettings: "OpenID Connect settings", - samlSettings: "SAML settings", - advancedSettings: "Advanced settings", - reqAuthnConstraints: "Requested AuthnContext Constraints", - keyID: "KEY_ID", - NONE: "NONE", - certSubject: "CERT_SUBJECT", - storeTokens: "Store tokens", - storedTokensReadable: "Stored tokens readable", - comparison: "Comparison", - authnContextClassRefs: "AuthnContext ClassRefs", - addAuthnContextClassRef: "Add AuthnContext ClassRef", - authnContextDeclRefs: "AuthnContext DeclRefs", - addAuthnContextDeclRef: "Add AuthnContext DeclRef", - trustEmail: "Trust Email", - accountLinkingOnly: "Account linking only", - hideOnLoginPage: "Hide on login page", - firstBrokerLoginFlowAlias: "First login flow", - postBrokerLoginFlowAlias: "Post login flow", - syncMode: "Sync mode", - syncModes: { - inherit: "Inherit", - import: "Import", - legacy: "Legacy", - force: "Force", - }, - syncModeOverride: "Sync mode override", - mapperType: "Mapper type", - regexAttributeValues: "Regex Attribute Values", - regexClaimValues: "Regex Claim Values", - selectRole: "Select role", - mapperCreateSuccess: "Mapper created successfully.", - mapperCreateError: "Error creating mapper.", - mapperSaveSuccess: "Mapper saved successfully.", - mapperSaveError: "Error saving mapper: {{error}}", - userAttribute: "User Attribute", - attributeValue: "Attribute Value", - userAttributeValue: "User Attribute Value", - userSessionAttribute: "User Session Attribute", - userSessionAttributeValue: "User Session Attribute Value", - template: "Template", - target: "Target", - targetOptions: { - local: "LOCAL", - brokerId: "BROKER_ID", - brokerUsername: "BROKER_USERNAME", - }, - }, -}; diff --git a/src/index.tsx b/src/index.tsx index cf08d97203..ffab3dd450 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,24 +1,29 @@ -import "./index.css"; import React, { StrictMode } from "react"; import ReactDOM from "react-dom"; import { App } from "./App"; -import i18n from "./i18n"; -import init from "./context/auth/keycloak"; +import { initAdminClient } from "./context/auth/AdminClient"; +import { initI18n } from "./i18n"; -console.info("supported languages", ...i18n.languages); - -init().then((adminClient) => { - ReactDOM.render( - - - , - document.getElementById("app") - ); -}); +import "./index.css"; // Hot Module Replacement (HMR) - Remove this snippet to remove HMR. // Learn more: https://snowpack.dev/concepts/hot-module-replacement if (import.meta.hot) { import.meta.hot.accept(); } + +async function initialize() { + const adminClient = await initAdminClient(); + + await initI18n(adminClient); + + ReactDOM.render( + + + , + document.getElementById("app") + ); +} + +initialize(); diff --git a/src/model/role-model.ts b/src/model/role-model.ts deleted file mode 100644 index 377aaa7b8e..0000000000 --- a/src/model/role-model.ts +++ /dev/null @@ -1,19 +0,0 @@ -// Generated using typescript-generator version 2.0.400 on 2020-09-11 12:02:07. - -export interface RoleRepresentation { - id?: string; - name?: string; - description?: string; - scopeParamRequired?: boolean; - composite?: boolean; - composites?: Composites; - clientRole?: boolean; - containerId?: string; - attributes?: { [index: string]: string[] }; -} - -export interface Composites { - realm?: string[]; - client?: { [index: string]: string[] }; - application?: { [index: string]: string[] }; -} diff --git a/src/realm-roles/messages.ts b/src/realm-roles/messages.ts deleted file mode 100644 index 5ea8d0d129..0000000000 --- a/src/realm-roles/messages.ts +++ /dev/null @@ -1,85 +0,0 @@ -export default { - roles: { - deleteAttributeText: "Delete an attribute", - associatedRolesText: "Associated roles", - addAssociatedRolesText: "Add associated roles", - addAssociatedRolesSuccess: "Associated roles have been added", - addAssociatedRolesError: "Could not associate roles {{error}}", - associatedRolesModalTitle: "Add roles to {{name}}", - title: "Realm roles", - addRole: "Add role", - createRole: "Create role", - importRole: "Import role", - roleID: "Role ID", - homeURL: "Home URL", - filterByClients: "Filter by clients", - filterByRoles: "Filter by roles", - roleExplain: - "Realm-level roles are a global namespace to define your roles.", - roleCreateExplain: "This is some description", - roleName: "Role name", - roleDetails: "Role details", - composite: "Composite", - deleteRole: "Delete this role", - inheritedFrom: "Inherited from", - roleList: "Role list", - searchFor: "Search role by name", - generalSettings: "General Settings", - capabilityConfig: "Capability config", - roleImportError: "Could not import role", - roleCreated: "Role created", - roleCreateError: "Could not create role: {{error}}", - roleImportSuccess: "Role import successful", - roleDeleteConfirm: "Delete role?", - roleDeleteConfirmDialog: - "This action will permanently delete the role {{selectedRoleName}} and cannot be undone.", - roleDeletedSuccess: "The role has been deleted", - roleDeleteError: "Could not delete role: {{error}}", - defaultRole: - "This role serves as a container for both realm and client default roles. It cannot be removed.", - defaultRoleDeleteError: "You cannot delete a default role.", - roleSaveSuccess: "The role has been saved", - roleSaveError: "Could not save role: {{error}}", - noRoles: "No roles in this realm", - noRolesInstructions: - "You haven't created any roles in this realm. Create a role to get started.", - roleAuthentication: "Role authentication", - removeAllAssociatedRoles: "Remove all associated roles", - removeAssociatedRoles: "Remove associated roles", - removeRoles: "Remove roles", - removeAllAssociatedRolesConfirmDialog: - "This action will remove the associated roles of {{name}}. Users who have permission to {{name}} will no longer have access to these roles.", - roleRemoveAssociatedRoleConfirm: "Remove associated role?", - roleRemoveAssociatedText: - "This action will remove {{role}} from {{roleName}}. All the associated roles of {{role}} will also be removed.", - compositeRoleOff: "Composite role turned off", - associatedRolesRemoved: "Associated roles have been removed", - compositesRemovedAlertDescription: - "All the associated roles have been removed", - whoWillAppearLinkText: "Who will appear in this user list?", - whoWillAppearPopoverText: - "This tab shows only the users who are assigned directly to this role. To see users who are assigned this role as an associated role or through a group, go to", - whoWillAppearPopoverFooterText: - "Users who have this role as an effective role cannot be added on this tab.", - usersInRole: "Users in role", - addUser: "Add user", - removeUser: "Remove users", - removeUserText: - "Do you want to remove {{numSelected}} users?. These users will no longer have permissions of the role {{role}} and the associated roles of it.", - noDirectUsers: "No direct users", - noUsersEmptyStateDescription: - "Only the users with this role directly assigned will appear under this tab. If you need to find users assigned to this role, go to", - noUsersEmptyStateDescriptionContinued: - "to find them. Users that already have this role as an effective role cannot be added here.", - or: "or", - users: "Users", - userName: "Username", - email: "Email", - lastName: "Last name", - firstName: "First name", - clearAllFilters: "Clear all filters", - noRolesAssociated: "No associated roles", - noRolesAssociatedInstructions: - "To add roles to this role press the 'Add role' button", - }, -}; diff --git a/src/realm-settings/help.ts b/src/realm-settings/help.ts deleted file mode 100644 index 08d21ce55f..0000000000 --- a/src/realm-settings/help.ts +++ /dev/null @@ -1,166 +0,0 @@ -export default { - "realm-settings-help": { - fromDisplayName: "A user-friendly name for the 'From' address (optional).", - replyToDisplayName: - "A user-friendly name for the 'Reply-To' address (optional).", - envelopeFrom: "An email address used for bounces (optional).", - password: - "SMTP password. This field is able to obtain its value from vault, use ${vault.ID} format.", - frontendUrl: - "Set the frontend URL for the realm. Use in combination with the default hostname provider to override the base URL for frontend requests for a specific realm.", - requireSsl: - "Is HTTPS required? 'None' means HTTPS is not required for any client IP address. 'External requests' means localhost and private IP addresses can access without HTTPS. 'All requests' means HTTPS is required for all IP addresses.", - userManagedAccess: - "If enabled, users are allowed to manage their resources and permissions using the Account Management Console.", - userProfileEnabled: "If enabled, allows managing user profiles.", - endpoints: "Shows the configuration of the protocol endpoints", - loginTheme: - "Select theme for login, OTP, grant, registration and forgot password pages.", - accountTheme: "Select theme for user account management pages.", - adminConsoleTheme: "Select theme for admin console.", - emailTheme: "Select theme for emails that are sent by the server.", - displayName: "Display name of provider when linked in admin console", - priority: "Priority of the provider", - enabled: "Set if the keys are enabled", - active: "Set if the keys can be used for signing", - AESKeySize: - "Size in bytes for the generated AES key. Size 16 is for AES-128, Size 24 for AES-192, and Size 32 for AES-256. WARN: Bigger keys than 128 are not allowed on some JDK implementations.", - "save-user-events": - "If enabled, login events are saved to the database, which makes events available to the admin and account management consoles.", - "save-admin-events": - "If enabled, admin events are saved to the database, which makes events available to the admin console.", - expiration: - "Sets the expiration for events. Expired events are periodically deleted from the database.", - "admin-clearEvents": "Deletes all admin events in the database.", - includeRepresentation: - "Include JSON representation for create and update requests.", - "user-clearEvents": "Deletes all user events in the database.", - ellipticCurve: "Elliptic curve used in ECDSA", - secretSize: "Size in bytes for the generated secret", - keySize: "Size for the generated keys", - algorithm: "Intended algorithm for the key", - keystore: "Path to keys file", - keystorePassword: "Password for the keys", - keyAlias: "Alias for the private key", - keyPassword: "Password for the private key", - privateRSAKey: "Private RSA Key encoded in PEM format", - x509Certificate: "X509 Certificate encoded in PEM format", - xFrameOptions: - "Default value prevents pages from being included by non-origin iframes <1>Learn more", - contentSecurityPolicy: - "Default value prevents pages from being included by non-origin iframes <1>Learn more", - contentSecurityPolicyReportOnly: - "For testing Content Security Policies <1>Learn more", - xContentTypeOptions: - "Default value prevents Internet Explorer and Google Chrome from MIME-sniffing a response away from the declared content-type <1>Learn more", - xRobotsTag: - "Prevent pages from appearing in search engines <1>Learn more", - xXSSProtection: - "This header configures the Cross-site scripting (XSS) filter in your browser. Using the default behaviour, the browser will prevent rendering of the page when a XSS attack is detected. <1>Learn more", - strictTransportSecurity: - "The Strict-Transport-Security HTTP header tells browsers to always use HTTPS. Once a browser sees this header, it will only visit the site over HTTPS for the time specified (1 year) at max-age, including the subdomains. <1>Learn more", - failureFactor: "How many failures before wait is triggered.", - permanentLockout: - "Lock the user permanently when the user exceeds the maximum login failures.", - waitIncrementSeconds: - "When failure threshold has been met, how much time should the user be locked out?", - maxFailureWaitSeconds: "Max time a user will be locked out.", - maxDeltaTimeSeconds: "When will failure count be reset?", - quickLoginCheckMilliSeconds: - "If a failure happens concurrently too quickly, lock out the user.", - minimumQuickLoginWaitSeconds: - "How long to wait after a quick login failure.", - ssoSessionIdle: - "Time a session is allowed to be idle before it expires. Tokens and browser sessions are invalidated when a session is expired.", - ssoSessionMax: - "Max time before a session is expired. Tokens and browser sessions are invalidated when a session is expired.", - ssoSessionIdleRememberMe: - "Time a remember me session is allowed to be idle before it expires. Tokens and browser sessions are invalidated when a session is expired. If not set it uses the standard SSO Session Idle value.", - ssoSessionMaxRememberMe: - "Max time before a session is expired when a user has set the remember me option. Tokens and browser sessions are invalidated when a session is expired. If not set it uses the standard SSO Session Max value.", - clientSessionIdle: - "Time a client session is allowed to be idle before it expires. Tokens are invalidated when a client session is expired. If not set it uses the standard SSO Session Idle value.", - clientSessionMax: - "Max time before a client session is expired. Tokens are invalidated when a session is expired. If not set it uses the standard SSO Session Max value.", - offlineSessionIdle: - "Time an offline session is allowed to be idle before it expires. You need to use offline token to refresh at least once within this period; otherwise offline session will expire.", - offlineSessionMaxLimited: "Enable offline session max", - offlineSessionMax: - "Max time before an offline session is expired regardless of activity.", - loginTimeout: - "Max time a user has to complete a login. This is recommended to be relatively long, such as 30 minutes or more", - loginActionTimeout: - "Max time a user has to complete login related actions like update password or configure totp. This is recommended to be relatively long, such as 5 minutes or more", - defaultSigAlg: "Default algorithm used to sign tokens for the realm", - revokeRefreshToken: - "If enabled a refresh token can only be used up to 'Refresh Token Max Reuse' and is revoked when a different token is used. Otherwise refresh tokens are not revoked when used and can be used multiple times.", - refreshTokenMaxReuse: - "Maximum number of times a refresh token can be reused. When a different token is used, revocation is immediate.", - accessTokenLifespan: - "Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout", - accessTokenLifespanImplicitFlow: - "Max time before an access token issued during OpenID Connect Implicit Flow is expired. This value is recommended to be shorter than the SSO timeout. There is no possibility to refresh token during implicit flow, that's why there is a separate timeout different to 'Access Token Lifespan'", - clientLoginTimeout: - "Max time a client has to finish the access token protocol. This should normally be 1 minute.", - userInitiatedActionLifespan: - "Maximum time before an action permit sent by a user (such as a forgot password e-mail) is expired. This value is recommended to be short because it's expected that the user would react to self-created action quickly.", - defaultAdminInitiatedActionLifespan: - "Maximum time before an action permit sent to a user by administrator is expired. This value is recommended to be long to allow administrators to send e-mails for users that are currently offline. The default timeout can be overridden immediately before issuing the token.", - overrideActionTokens: - "Override default settings of maximum time before an action permit sent by a user (such as a forgot password e-mail) is expired for specific action. This value is recommended to be short because it's expected that the user would react to self-created action quickly.", - internationalization: - "If enabled, you can choose which locales you support for this realm and which locale is the default.", - supportedLocales: - "The locales to support for this realm. The user chooses one of these locales on the login screen.", - defaultLocale: - "The initial locale to use. It is used on the login screen and other screens in the Admin Console and Account Console.", - conditions: - "Conditions, which will be evaluated to determine if client policy should be applied during particular action or not.", - clientProfiles: "Client profiles applied on this policy.", - anyClient: "The condition is satisfied by any client on any event.", - clientAccessType: - "It uses the client's access type (confidential, public, bearer-only) to determine whether the policy is applied. Condition is checked during most of OpenID Connect requests (Authorization requests, token requests, introspection endpoint request, etc.)", - clientAccesstypeTooltip: - "Access Type of the client, for which the condition will be applied.", - clientRoles: - "The condition checks whether one of the specified client roles exists on the client to determine whether the policy is applied. This effectively allows client administrator to create client role of specified name on the client to make sure that particular client policy will be applied on requests of this client. Condition is checked during most of OpenID Connect requests (Authorization requests, token requests, introspection endpoint request, etc.)", - clientRolesConditionTooltip: - "Client roles, which will be checked during this condition evaluation. Condition evaluates to true if client has at least one client role with the name as the client roles specified in the configuration.", - clientScopes: - "It uses the scopes requested or assigned in advance to the client to determine whether the policy is applied to this client. Condition is evaluated during OpenID Connect authorization request and/or token request.", - clientScopesConditionTooltip: - "The list of expected client scopes. Condition evaluates to true if specified client request matches some of the client scopes. It depends also whether it should be default or optional client scope based on the 'Scope Type' configured.", - clientUpdaterContext: - "The condition checks the context how is client created/updated to determine whether the policy is applied. For example it checks if client is created with admin REST API or OIDC dynamic client registration. And for the letter case if it is ANONYMOUS client registration or AUTHENTICATED client registration with Initial access token or Registration access token and so on.", - clientUpdaterSourceGroups: - "The condition checks the group of the entity who tries to create/update the client to determine whether the policy is applied.", - clientUpdaterSourceGroupsTooltip: - "Name of groups to check. Condition evaluates to true if the entity, who creates/updates client is member of some of the specified groups. Configured groups are specified by their simple name, which must match to the name of the Keycloak group. No support for group hierarchy is used here.", - clientUpdaterSourceHost: - "The condition checks the host/domain of the entity who tries to create/update the client to determine whether the policy is applied.", - clientUpdaterTrustedHostsTooltip: - "List of Hosts, which are trusted. In case that client registration/update request comes from the host/domain specified in this configuration, condition evaluates to true. You can use hostnames or IP addresses. If you use star at the beginning (for example '*.example.com' ) then whole domain example.com will be trusted.", - clientUpdaterSourceRoles: - "The condition checks the role of the entity who tries to create/update the client to determine whether the policy is applied.", - clientUpdaterSourceRolesTooltip: - "The condition is checked during client registration/update requests and it evaluates to true if the entity (usually user), who is creating/updating client is member of the specified role. For reference the realm role, you can use the realm role name like 'my_realm_role' . For reference client role, you can use the client_id.role_name for example 'my_client.my_client_role' will refer to client role 'my_client_role' of client 'my_client'. ", - defaultGroups: - "Default groups allow you to automatically assign groups membership whenever any new user is created or imported through <1>identity brokering.", - attributeGeneralSettingsDescription: - "This section contains a few basic settings common to all attributes.", - attributeNameHelp: "The name of the attribute.", - attributeDisplayNameHelp: - "Display name for the attribute. Supports keys for localized values as well. For example: ${profile.attribute.phoneNumber}.", - attributeGroupHelp: "user.profile.attribute.group.tooltip", - requiredHelp: - "Set the attribute as required. If enabled, the attribute must be set by users and administrators. Otherwise, the attribute is optional.", - attributePermissionDescription: - "This section contains permissions for who can edit and who can view the attribute.", - whoCanEditHelp: - "If enabled, users or administrators can view and edit the attribute. Otherwise, users or administrators don't have access to write to the attribute.", - whoCanViewHelp: - "If enabled, users or administrators can view the attribute. Otherwise, users or administrators don't have access to the attribute.", - editUsername: - "If enabled, the username field is editable, readonly otherwise.", - }, -}; diff --git a/src/realm-settings/messages.ts b/src/realm-settings/messages.ts deleted file mode 100644 index 0154c1f804..0000000000 --- a/src/realm-settings/messages.ts +++ /dev/null @@ -1,891 +0,0 @@ -export default { - "realm-settings": { - realmSettingsExplain: "Placeholder for realm settings explanation.", - partialImport: "Partial import", - partialExport: "Partial export", - deleteRealm: "Delete realm", - deleteConfirmTitle: "Delete realm?", - dragInstruction: "Click and drag to change priority", - deleteConfirm: - "If you delete this realm, all associated data will be removed.", - deleteProviderTitle: "Delete key provider?", - deleteProviderConfirm: - "Are you sure you want to permanently delete the key provider {{provider}}?", - deleteProviderSuccess: "Success. The provider has been deleted.", - deleteProviderError: "Error deleting the provider", - deletedSuccess: "The realm has been deleted", - deleteError: "Could not delete realm: {{error}}", - deleteConditionSuccess: "The condition has been deleted", - disableConfirmTitle: "Disable realm?", - disableConfirm: - "User and clients can't access the realm if it's disabled. Are you sure you want to continue?", - disablePolicyConfirmTitle: "Disable policy?", - disablePolicyConfirm: - "Users and clients can't access the policy if it's disabled. Are you sure you want to continue?", - editProvider: "Edit provider", - editableRowsTable: "Editable rows table", - saveSuccess: "Realm successfully updated", - saveProviderSuccess: "The provider has been saved successfully.", - saveProviderListSuccess: - "The priority of the provider has been updated successfully.", - saveProviderError: "Error saving provider: {{error}}", - saveError: "Realm could not be updated: {{error}}", - general: "General", - login: "Login", - themes: "Themes", - events: "Events", - eventListeners: "Event listeners", - eventListenersHelpText: - "Configure what listeners receive events for the realm.", - saveEventListeners: "Save Event Listeners", - saveEventListenersSuccess: "Event listener has been updated.", - saveEventListenersError: "Error saving event listener: {{error}}", - userEventsConfig: "User events configuration", - userEventsSettings: "User events settings", - adminEventsConfig: "Admin events configuration", - adminEventsSettings: "Admin events settings", - saveEvents: "Save events", - expiration: "Expiration", - clearUserEvents: "Clear user events", - clearAdminEvents: "Clear admin events", - includeRepresentation: "Include representation", - email: "Email", - template: "Template", - connectionAndAuthentication: "Connection & Authentication", - from: "From", - fromDisplayName: "From display name", - replyTo: "Reply to", - replyToDisplayName: "Reply to display name", - envelopeFrom: "Envelope from", - host: "Host", - port: "Port", - encryption: "Encryption", - authentication: "Authentication", - enableSSL: "Enable SSL", - enableStartTLS: "Enable StartTLS", - username: "Username", - password: "Password", - keys: "Keys", - keysList: "Keys list", - searchKey: "Search key", - keystore: "Keystore", - keystorePassword: "Keystore password", - keyAlias: "Key alias", - keyPassword: "Key password", - providers: "Providers", - algorithm: "Algorithm", - aesGenerated: "aes-generated", - ecdsaGenerated: "ecdsca-generated", - hmacGenerated: "hmac-generated", - javaKeystore: "java-keystore", - rsa: "rsa", - rsaGenerated: "rsa-generated", - consoleDisplayName: "Console Display Name", - AESKeySize: "AES Key Size", - active: "Active", - privateRSAKey: "Private RSA Key", - filenamePlaceholder: "Upload a PEM file or paste key below", - x509Certificate: "X509 Certificate", - ellipticCurve: "Elliptic Curve", - secretSize: "Secret size", - keySize: "Key size", - type: "Type", - name: "Name", - providerId: "ID", - kid: "Kid", - provider: "Provider", - providerDescription: "Provider description", - addProvider: "Add provider", - publicKeys: "Public keys", - keysFilter: { - ACTIVE: "Active keys", - PASSIVE: "Passive keys", - DISABLED: "Disabled keys", - }, - noKeys: "No keys", - noKeysDescription: "You haven't created any active keys", - certificate: "Certificate", - loginScreenCustomization: "Login screen customization", - userRegistration: "User registration", - userRegistrationHelpText: - "Enable/disable the registration page. A link for registration will show on login page too.", - forgotPassword: "Forgot password", - forgotPasswordHelpText: - "Show a link on login page for user to click when they have forgotten their credentials.", - rememberMe: "Remember me", - rememberMeHelpText: - "Show checkbox on login page to allow user to remain logged in between browser restarts until session expires.", - emailSettings: "Email settings", - emailAsUsername: "Email as username", - emailAsUsernameHelpText: "Allow users to set email as username.", - loginWithEmail: "Login with email", - loginWithEmailHelpText: "Allow users to log in with their email address.", - duplicateEmails: "Duplicate emails", - duplicateEmailsHelpText: - "Allow multiple users to have the same email address. Changing this setting will also clear the user's cache. It is recommended to manually update email constraints of existing users in the database after switching off support for duplicate email addresses.", - provideEmailTitle: "Provide your email address", - provideEmail: - "To test connection, you should provide your email address first.", - verifyEmail: "Verify email", - verifyEmailHelpText: - "Require user to verify their email address after initial login or after address changes are submitted.", - userInfoSettings: "User info settings", - editUsername: "Edit username", - testConnection: "Test connection", - testConnectionSuccess: - "Success! SMTP connection successful. E-mail was sent!", - testConnectionError: "Error! Failed to send email.", - realmId: "Realm ID", - displayName: "Display name", - htmlDisplayName: "HTML Display name", - frontendUrl: "Frontend URL", - requireSsl: "Require SSL", - sslType: { - all: "All requests", - external: "External requests", - none: "None", - }, - selectATheme: "Select a theme", - allSupportedLocales: { - ca: "Català", - cs: "Čeština", - da: "Dansk", - de: "Deutsch", - en: "English", - es: "Español", - fr: "Français", - hu: "Magyar", - it: "Italiano", - ja: "日本語", - lt: "Lietuvių kalba", - nl: "Nederlands", - no: "Norsk", - pl: "Polski", - "pt-BR": "Português (Brasil)", - ru: "Русский", - sk: "Slovenčina", - sv: "Svenska", - tr: "Türkçe", - "zh-CN": "中文", - }, - placeholderText: "Select one", - userManagedAccess: "User-managed access", - userProfileEnabled: "User Profile Enabled", - endpoints: "Endpoints", - openIDEndpointConfiguration: "OpenID Endpoint Configuration", - samlIdentityProviderMetadata: "SAML 2.0 Identity Provider Metadata", - loginTheme: "Login theme", - accountTheme: "Account theme", - adminTheme: "Admin console theme", - emailTheme: "Email theme", - internationalization: "Internationalization", - localization: "Localization", - sessions: "Sessions", - SSOSessionSettings: "SSO Session Settings", - SSOSessionIdle: "SSO Session Idle", - SSOSessionMax: "SSO Session Max", - SSOSessionIdleRememberMe: "SSO Session Idle Remember Me", - SSOSessionMaxRememberMe: "SSO Session Max Remember Me", - clientSessionSettings: "Client session settings", - clientSessionIdle: "Client Session Idle", - clientSessionMax: "Client Session Max", - offlineSessionSettings: "Offline session settings", - offlineSessionIdle: "Offline Session Idle", - offlineSessionMaxLimited: "Offline Session Max Limited", - offlineSessionMax: "Offline Session Max", - loginSettings: "Login settings", - loginTimeout: "Login timeout", - loginActionTimeout: "Login action timeout", - refreshTokens: "Refresh tokens", - accessTokens: "Access tokens", - actionTokens: "Action tokens", - overrideActionTokens: "Override Action Tokens", - defaultSigAlg: "Default Signature Algorithm", - revokeRefreshToken: "Revoke Refresh Token", - refreshTokenMaxReuse: "Refresh Token Max Reuse", - accessTokenLifespan: "Access Token Lifespan", - accessTokenLifespanImplicitFlow: "Access Token Lifespan For Implicit Flow", - clientLoginTimeout: "Client Login Timeout", - userInitiatedActionLifespan: "User-Initiated Action Lifespan", - defaultAdminInitiated: "Default Admin-Initiated Action Lifespan", - emailVerification: "Email Verification", - idpAccountEmailVerification: "IdP account email verification", - executeActions: "Execute actions", - clientPolicies: "Client policies", - noClientPolicies: "No client policies", - noClientPoliciesInstructions: - "There are no client policies. Select 'Create client policy' to create a new client policy.", - createPolicy: "Create policy", - createClientPolicy: "Create client policy", - createClientPolicySuccess: "New policy created", - updateClientPolicySuccess: "Client policy updated", - createClientPolicyError: "Could not create policy due to: {{error}}", - createClientConditionSuccess: "Condition created successfully.", - createClientConditionError: "Error creating condition: {{error}}", - updateClientConditionSuccess: "Condition updated successfully.", - deleteClientConditionSuccess: "Condition deleted successfully.", - deleteClientConditionError: "Error creating condition: {{error}}", - clientPolicySearch: "Search client policy", - policiesConfigType: "Configure via:", - policiesConfigTypes: { - formView: "Form view", - jsonEditor: "JSON editor", - }, - deleteClientPolicy: "Delete client policy", - deleteClientPolicyConfirmTitle: "Delete policy?", - deleteClientPolicyConfirm: - "This action will permanently delete the policy {{policyName}}. This cannot be undone.", - deleteClientPolicySuccess: "Client policy deleted", - deleteClientPolicyError: "Could not delete policy: {{error}}", - profiles: "Profiles", - policies: "Policies", - clientPoliciesProfilesHelpText: - "Client Profile allows to setup set of executors, which are enforced for various actions done with the client. Actions can be admin actions like creating or updating client, or user actions like authentication to the client.", - clientPoliciesProfiles: "Client Policies Profiles", - clientPoliciesPoliciesHelpText: - "Client Policy allows to bind client profiles with various conditions to specify when exactly is enforced behavior specified by executors of the particular client profile.", - clientPoliciesPolicies: "Client Policies Policies", - clientPoliciesTab: "Client policies tab", - clientProfilesSubTab: "Client profiles subtab", - clientPoliciesSubTab: "Client policies subtab", - profilesConfigType: "Configure via:", - profilesConfigTypes: { - formView: "Form view", - jsonEditor: "JSON editor", - }, - clientProfileSearch: "Search", - searchProfile: "Search profile", - clientProfileName: "Client profile name", - clientProfileDescription: "Description", - emptyClientProfiles: "No profiles", - emptyClientProfilesInstructions: - "There are no profiles, select 'Create client profile' to create a new client profile", - deleteClientProfileConfirmTitle: "Delete profile?", - deleteClientProfileConfirm: - "This action will permanently delete the profile {{profileName}}. This cannot be undone.", - deleteClientSuccess: "Client profile deleted", - deleteClientError: "Could not delete profile: {{error}}", - deleteClientPolicyProfileConfirmTitle: "Delete profile?", - deleteClientPolicyProfileConfirm: - "This action will permanently delete {{profileName}} from the policy {{policyName}}. This cannot be undone.", - deleteClientPolicyProfileSuccess: - "Profile successfully removed from the policy.", - deleteClientPolicyProfileError: - "Could not delete profile from the policy: {{error}}", - createClientProfile: "Create client profile", - deleteClientProfile: "Delete this client profile", - createClientProfileSuccess: "New client profile created", - updateClientProfileSuccess: "Client profile updated successfully", - createClientProfileError: "Could not create client profile: '{{error}}'", - addClientProfileSuccess: "New client profile added", - addClientProfileError: "Could not create client profile: '{{error}}'", - createClientProfileNameHelperText: - "The name must be unique within the realm", - newClientProfile: "Create client profile", - newClientProfileName: "Client profile name", - clientProfile: "Client profile details", - executorDetails: "Executor details", - back: "Back", - delete: "delete", - save: "Save", - reload: "Reload", - global: "Global", - description: "description", - executors: "Executors", - executorsHelpText: - "Executors, which will be applied for this client profile", - executorsHelpItem: "Executors help item", - addExecutor: "Add executor", - executorType: "Executor type", - executorTypeSwitchHelpText: "Executor Type Switch Help Text", - executorTypeSelectHelpText: "Executor Type Select Help Text", - executorTypeSelectAlgorithm: "Executor Type Select Algorithm", - executorTypeTextHelpText: "Executor Type Text Help Text", - executorAuthenticatorMultiSelectHelpText: - "Executor Authenticator MultiSelect Help Text", - executorClientAuthenticator: "Executor Client Authenticator", - executorsTable: "Executors table", - executorName: "Name", - emptyExecutors: "No executors configured", - addExecutorSuccess: "Success! Executor created successfully", - addExecutorError: "Executor not created", - updateExecutorSuccess: "Executor updated successfully", - updateExecutorError: "Executor not updated", - deleteExecutorProfileConfirmTitle: "Delete executor?", - deleteExecutorProfileConfirm: - "The action will permanently delete {{executorName}}. This cannot be undone.", - deleteExecutorSuccess: "Success! The executor was deleted.", - deleteExecutorError: "Could not delete executor: {{error}}", - updateClientProfilesSuccess: - "The client profiles configuration was updated", - updateClientProfilesError: - "Provided JSON is incorrect: Unexpected token { in JSON", - deleteClientPolicyConditionConfirmTitle: "Delete condition?", - deleteClientPolicyConditionConfirm: - "This action will permanently delete {{condition}}. This cannot be undone.", - selectACondition: "Select a condition", - conditions: "Conditions", - conditionType: "Condition type", - policyDetails: "Policy details", - anyClient: "The condition is satisfied by any client on any event.", - clientAccesstype: "Client Access Type", - clientRoles: "Client Roles", - clientScopesCondition: "Expected Scopes", - updateClientContext: "Update Client Context", - clientUpdaterSourceGroups: "Groups", - clientUpdaterTrustedHosts: "Trusted Hosts", - clientUpdaterSourceRoles: "Updating entity role", - conditionsHelpItem: "Conditions help item", - addCondition: "Add condition", - editCondition: "Edit condition", - emptyConditions: "No conditions configured", - updateClientPoliciesSuccess: - "The client policies configuration was updated", - updateClientPoliciesError: - "Provided JSON is incorrect: Unexpected token { in JSON", - - clientProfiles: "Client profiles", - clientProfilesHelpItem: "Client profiles help item", - addClientProfile: "Add client profile", - emptyProfiles: "No client profiles configured", - tokens: "Tokens", - userProfile: "User profile", - jsonEditor: "JSON editor", - attributes: "Attributes", - attributesGroup: "Attributes group", - invalidJsonError: - "Unable to save user profile, the provided information is not valid JSON.", - userProfileSuccess: "User profile settings successfully updated.", - userProfileError: "Could not update user profile settings: {{error}}", - status: "Status", - recommendedSsoTimeout: - "It is recommended for this value to be shorter than the SSO session idle timeout: {{time}}", - supportedLocales: "Supported locales", - defaultLocale: "Default locale", - selectLocales: "Select locales", - searchForMessageBundle: "Search for message bundle", - addMessageBundle: "Add message bundle", - addMessageBundleSuccess: "Success! The message bundle has been added.", - rowEditBtnAriaLabel: "Edit {{messageBundle}}", - rowSaveBtnAriaLabel: "Save edits for {{messageBundle}}", - rowCancelBtnAriaLabel: "Cancel edits for {{messageBundle}}", - updateMessageBundleSuccess: "Success! Message bundle updated.", - updateMessageBundleError: "Error updating message bundle.", - addMessageBundleError: "Error creating message bundle, {{error}}", - allGroups: "All groups", - attributeName: "Name", - attributeDisplayName: "Display name", - attributeGroup: "Attribute group", - enabledWhen: "Enabled when", - required: "Required", - requiredFor: "Required for", - requiredWhen: "Required when", - whoCanEdit: "Who can edit?", - whoCanView: "Who can view?", - user: "User", - admin: "Admin", - addValidator: "Add validator", - addValidatorRole: "Add {{validatorName}} validator", - validatorDialogColNames: { - colName: "Role name", - colDescription: "Description", - }, - validatorColNames: { - colName: "Validator name", - colConfig: "Config", - }, - deleteValidatorConfirmTitle: "Delete validator?", - deleteValidatorConfirmMsg: - "Are you sure you want to permanently delete the validator {{validatorName}}?", - validatorDeletedSuccess: - "Success! User Profile configuration has been saved.", - validatorDeletedError: "Error saving User Profile: {{error}}", - emptyValidators: "No validators.", - updatedUserProfileSuccess: "User Profile configuration has been saved", - updatedUserProfileError: "User Profile configuration hasn't been saved", - createAttribute: "Create attribute", - editAttribute: "Edit attribute", - createAttributeSubTitle: "Create a new attribute", - createAttributeSuccess: - "Success! User Profile configuration has been saved.", - createAttributeError: - "Error! User Profile configuration has not been saved {{error}}.", - attributesDropdown: "Attributes dropdown", - deleteAttributeConfirmTitle: "Delete attribute?", - deleteAttributeConfirm: - "Are you sure you want to permanently delete the attribute {{attributeName}}?", - deleteAttributeSuccess: "Attribute deleted", - deleteAttributeError: "Attribute not deleted", - always: "Always", - scopesAsRequested: "Scopes are requested", - generalSettings: "General settings", - permission: "Permission", - validations: "Validations", - annotations: "Annotations", - addAnnotationText: "Add annotation", - validateName: "Attribute configuration without name is not allowed.", - eventType: "Event saved type", - searchEventType: "Search saved event type", - addSavedTypes: "Add saved types", - addTypes: "Add types", - eventTypes: { - SEND_RESET_PASSWORD: { - name: "Send reset password", - description: "Send reset password", - }, - UPDATE_CONSENT_ERROR: { - name: "Update consent error", - description: "Update consent error", - }, - GRANT_CONSENT: { - name: "Grant consent", - description: "Grant consent", - }, - REMOVE_TOTP: { name: "Remove totp", description: "Remove totp" }, - REVOKE_GRANT: { name: "Revoke grant", description: "Revoke grant" }, - UPDATE_TOTP: { name: "Update totp", description: "Update totp" }, - LOGIN_ERROR: { name: "Login error", description: "Login error" }, - CLIENT_LOGIN: { name: "Client login", description: "Client login" }, - RESET_PASSWORD_ERROR: { - name: "Reset password error", - description: "Reset password error", - }, - IMPERSONATE_ERROR: { - name: "Impersonate error", - description: "Impersonate error", - }, - CODE_TO_TOKEN_ERROR: { - name: "Code to token error", - description: "Code to token error", - }, - CUSTOM_REQUIRED_ACTION: { - name: "Custom required action", - description: "Custom required action", - }, - RESTART_AUTHENTICATION: { - name: "Restart authentication", - description: "Restart authentication", - }, - IMPERSONATE: { name: "Impersonate", description: "Impersonate" }, - UPDATE_PROFILE_ERROR: { - name: "Update profile error", - description: "Update profile error", - }, - LOGIN: { name: "Login", description: "Login" }, - UPDATE_PASSWORD_ERROR: { - name: "Update password error", - description: "Update password error", - }, - CLIENT_INITIATED_ACCOUNT_LINKING: { - name: "Client initiated account linking", - description: "Client initiated account linking", - }, - TOKEN_EXCHANGE: { - name: "Token exchange", - description: "Token exchange", - }, - LOGOUT: { name: "Logout", description: "Logout" }, - REGISTER: { name: "Register", description: "Register" }, - DELETE_ACCOUNT_ERROR: { - name: "Delete account error", - description: "Delete account error", - }, - CLIENT_REGISTER: { - name: "Client register", - description: "Client register", - }, - IDENTITY_PROVIDER_LINK_ACCOUNT: { - name: "Identity provider link account", - description: "Identity provider link account", - }, - DELETE_ACCOUNT: { - name: "Delete account", - description: "Delete account", - }, - UPDATE_PASSWORD: { - name: "Update password", - description: "Update password", - }, - CLIENT_DELETE: { - name: "Client delete", - description: "Client delete", - }, - FEDERATED_IDENTITY_LINK_ERROR: { - name: "Federated identity link error", - description: "Federated identity link error", - }, - IDENTITY_PROVIDER_FIRST_LOGIN: { - name: "Identity provider first login", - description: "Identity provider first login", - }, - CLIENT_DELETE_ERROR: { - name: "Client delete error", - description: "Client delete error", - }, - VERIFY_EMAIL: { name: "Verify email", description: "Verify email" }, - CLIENT_LOGIN_ERROR: { - name: "Client login error", - description: "Client login error", - }, - RESTART_AUTHENTICATION_ERROR: { - name: "Restart authentication error", - description: "Restart authentication error", - }, - EXECUTE_ACTIONS: { - name: "Execute actions", - description: "Execute actions", - }, - REMOVE_FEDERATED_IDENTITY_ERROR: { - name: "Remove federated identity error", - description: "Remove federated identity error", - }, - TOKEN_EXCHANGE_ERROR: { - name: "Token exchange error", - description: "Token exchange error", - }, - PERMISSION_TOKEN: { - name: "Permission token", - description: "Permission token", - }, - SEND_IDENTITY_PROVIDER_LINK_ERROR: { - name: "Send identity provider link error", - description: "Send identity provider link error", - }, - EXECUTE_ACTION_TOKEN_ERROR: { - name: "Execute action token error", - description: "Execute action token error", - }, - SEND_VERIFY_EMAIL: { - name: "Send verify email", - description: "Send verify email", - }, - EXECUTE_ACTIONS_ERROR: { - name: "Execute actions error", - description: "Execute actions error", - }, - REMOVE_FEDERATED_IDENTITY: { - name: "Remove federated identity", - description: "Remove federated identity", - }, - IDENTITY_PROVIDER_POST_LOGIN: { - name: "Identity provider post login", - description: "Identity provider post login", - }, - IDENTITY_PROVIDER_LINK_ACCOUNT_ERROR: { - name: "Identity provider link account error", - description: "Identity provider link account error", - }, - UPDATE_EMAIL: { name: "Update email", description: "Update email" }, - REGISTER_ERROR: { - name: "Register error", - description: "Register error", - }, - REVOKE_GRANT_ERROR: { - name: "Revoke grant error", - description: "Revoke grant error", - }, - EXECUTE_ACTION_TOKEN: { - name: "Execute action token", - description: "Execute action token", - }, - LOGOUT_ERROR: { name: "Logout error", description: "Logout error" }, - UPDATE_EMAIL_ERROR: { - name: "Update email error", - description: "Update email error", - }, - CLIENT_UPDATE_ERROR: { - name: "Client update error", - description: "Client update error", - }, - UPDATE_PROFILE: { - name: "Update profile", - description: "Update profile", - }, - CLIENT_REGISTER_ERROR: { - name: "Client register error", - description: "Client register error", - }, - FEDERATED_IDENTITY_LINK: { - name: "Federated identity link", - description: "Federated identity link", - }, - SEND_IDENTITY_PROVIDER_LINK: { - name: "Send identity provider link", - description: "Send identity provider link", - }, - SEND_VERIFY_EMAIL_ERROR: { - name: "Send verify email error", - description: "Send verify email error", - }, - RESET_PASSWORD: { - name: "Reset password", - description: "Reset password", - }, - CLIENT_INITIATED_ACCOUNT_LINKING_ERROR: { - name: "Client initiated account linking error", - description: "Client initiated account linking error", - }, - UPDATE_CONSENT: { - name: "Update consent", - description: "Update consent", - }, - REMOVE_TOTP_ERROR: { - name: "Remove totp error", - description: "Remove totp error", - }, - VERIFY_EMAIL_ERROR: { - name: "Verify email error", - description: "Verify email error", - }, - SEND_RESET_PASSWORD_ERROR: { - name: "Send reset password error", - description: "Send reset password error", - }, - CLIENT_UPDATE: { - name: "Client update", - description: "Client update", - }, - CUSTOM_REQUIRED_ACTION_ERROR: { - name: "Custom required action error", - description: "Custom required action error", - }, - IDENTITY_PROVIDER_POST_LOGIN_ERROR: { - name: "Identity provider post login error", - description: "Identity provider post login error", - }, - UPDATE_TOTP_ERROR: { - name: "Update totp error", - description: "Update totp error", - }, - CODE_TO_TOKEN: { - name: "Code to token", - description: "Code to token", - }, - GRANT_CONSENT_ERROR: { - name: "Grant consent error", - description: "Grant consent error", - }, - IDENTITY_PROVIDER_FIRST_LOGIN_ERROR: { - name: "Identity provider first login error", - description: "Identity provider first login error", - }, - REGISTER_NODE_ERROR: { - name: "Register node error", - description: "Register node error", - }, - PERMISSION_TOKEN_ERROR: { - name: "Permission token error", - description: "Permission token error", - }, - IDENTITY_PROVIDER_RETRIEVE_TOKEN_ERROR: { - name: "Identity provider retrieve token error", - description: "Identity provider retrieve token error", - }, - CLIENT_INFO: { - name: "Client info", - description: "Client info", - }, - VALIDATE_ACCESS_TOKEN: { - name: "Validate access token", - description: "Validate access token", - }, - IDENTITY_PROVIDER_LOGIN: { - name: "Identity provider login", - description: "Identity provider login", - }, - CLIENT_INFO_ERROR: { - name: "Client info error", - description: "Client info error", - }, - INTROSPECT_TOKEN_ERROR: { - name: "Introspect token error", - description: "Introspect token error", - }, - INTROSPECT_TOKEN: { - name: "Introspect token", - description: "Introspect token", - }, - UNREGISTER_NODE: { - name: "Unregister node", - description: "Unregister node", - }, - REGISTER_NODE: { - name: "Register node", - description: "Register node", - }, - INVALID_SIGNATURE: { - name: "Invalid signature", - description: "Invalid signature", - }, - USER_INFO_REQUEST_ERROR: { - name: "User info request error", - description: "User info request error", - }, - REFRESH_TOKEN: { - name: "Refresh token", - description: "Refresh token", - }, - IDENTITY_PROVIDER_RESPONSE: { - name: "Identity provider response", - description: "Identity provider response", - }, - IDENTITY_PROVIDER_RETRIEVE_TOKEN: { - name: "Identity provider retrieve token", - description: "Identity provider retrieve token", - }, - UNREGISTER_NODE_ERROR: { - name: "Unregister node error", - description: "Unregister node error", - }, - VALIDATE_ACCESS_TOKEN_ERROR: { - name: "Validate access token error", - description: "Validate access token error", - }, - INVALID_SIGNATURE_ERROR: { - name: "Invalid signature error", - description: "Invalid signature error", - }, - USER_INFO_REQUEST: { - name: "User info request", - description: "User info request", - }, - IDENTITY_PROVIDER_RESPONSE_ERROR: { - name: "Identity provider response error", - description: "Identity provider response error", - }, - IDENTITY_PROVIDER_LOGIN_ERROR: { - name: "Identity provider login error", - description: "Identity provider login error", - }, - REFRESH_TOKEN_ERROR: { - name: "Refresh token error", - description: "Refresh token error", - }, - }, - emptyEvents: "Nothing to add", - emptyEventsInstructions: "There are no more events types left to add", - eventConfigSuccessfully: "Successfully saved configuration", - eventConfigError: "Could not save event configuration {{error}}", - deleteEvents: "Clear events", - deleteEventsConfirm: - "If you clear all events of this realm, all records will be permanently cleared in the database", - "admin-events-cleared": "The admin events have been cleared", - "admin-events-cleared-error": "Could not clear the admin events {{error}}", - "user-events-cleared": "The user events have been cleared", - "user-events-cleared-error": "Could not clear the user events {{error}}", - "events-disable-title": "Unsave events?", - "events-disable-confirm": - 'If "Save events" is disabled, subsequent events will not be displayed in the "Events" menu', - confirm: "Confirm", - noMessageBundles: "No message bundles", - noMessageBundlesInstructions: "Add a message bundle to get started.", - messageBundleDescription: - "You can edit the supported locales. If you haven't selected supported locales yet, you can only edit the English locale.", - defaultRoles: "Default roles", - defaultGroups: "Default groups", - whatIsDefaultGroups: "What is the function of default groups?", - searchForGroups: "Search group", - addDefaultGroups: "Add default groups", - removeConfirmTitle_one: "Remove group?", - removeConfirmTitle_other: "Remove groups?", - removeConfirm_one: "Are you sure you want to remove this group", - removeConfirm_other: "Are you sure you want to remove these groups.", - groupRemove_one: "Group removed", - groupRemove_other: "Groups removed", - groupRemoveError: "Error removing group {error}", - defaultGroupAdded_one: "New group added to the default groups", - defaultGroupAdded_other: "Added {{count}} groups to the default groups", - defaultGroupAddedError: - "Error adding group(s) to the default group {error}", - noDefaultGroups: "No default groups", - noDefaultGroupsInstructions: - "Default groups allow you to automatically assign group membership whenever any new user is created or imported throughout <1>identity brokering. Add default groups to get started", - addGroups: "Add groups", - securityDefences: "Security defenses", - headers: "Headers", - bruteForceDetection: "Brute force detection", - xFrameOptions: "X-Frame-Options", - contentSecurityPolicy: "Content-Security-Policy", - contentSecurityPolicyReportOnly: "Content-Security-Policy-Report-Only", - xContentTypeOptions: "X-Content-Type-Options", - xRobotsTag: "X-Robots-Tag", - xXSSProtection: "X-XSS-Protection", - strictTransportSecurity: "HTTP Strict Transport Security (HSTS)", - failureFactor: "Max login failures", - permanentLockout: "Permanent lockout", - waitIncrementSeconds: "Wait increment", - maxFailureWaitSeconds: "Max wait", - maxDeltaTimeSeconds: "Failure reset time", - quickLoginCheckMilliSeconds: "Quick login check milliseconds", - minimumQuickLoginWaitSeconds: "Minimum quick login wait", - }, - "partial-import": { - partialImportHeaderText: - "Partial import allows you to import users, clients, and other resources from a previously exported json file.", - selectRealm: "Select realm", - chooseResources: "Choose the resources you want to import", - selectIfResourceExists: - "If a resource already exists, specify what should be done", - import: "Import", - resourcesToImport: "Resources to import", - importFail: "Import failed: {{error}}", - FAIL: "Fail import", - SKIP: "Skip", - OVERWRITE: "Overwrite", - added: "Added", - skipped: "Skipped", - overwritten: "Overwritten", - importAdded_zero: "No records added.", - importAdded_one: "One record added.", - importAdded_other: "{{count}} records added.", - importOverwritten_zero: "No records overwritten.", - importOverwritten_one: "One record overwritten.", - importOverwritten_other: "{{count}} records overwritten.", - importSkipped_zero: "No records skipped.", - importSkipped_one: "One record skipped.", - importSkipped_other: "{{count}} records skipped.", - }, - "partial-export": { - partialExportHeaderText: - "Partial export allows you to export realm configuration, and other associated resources into a json file.", - includeGroupsAndRoles: "Include groups and roles", - includeClients: "Include clients", - exportWarningTitle: "Export with caution", - exportWarningDescription: - "If there is a great number of groups, roles or clients in your realm, the operation may make server unresponsive for a while.", - exportSuccess: "Realm successfully exported.", - exportFail: "Could not export realm: '{{error}}'", - }, - "attributes-group": { - createGroupText: "Create attributes group", - editGroupText: "Edit attributes group", - tableTitle: "Attributes groups", - columnName: "Name", - columnDisplayName: "Display name", - columnDisplayDescription: "Display description", - emptyStateMessage: "No attributes groups", - emptyStateInstructions: - "If you want to add an attributes group click the button below.", - deleteDialogTitle: "Delete attribute group?", - deleteDialogDescription: - "Are you sure you want to permanently delete the attributes group <1>{{group}}?", - deleteSuccess: "Attributes group deleted.", - deleteError: "Could not delete user attributes group: {{error}}", - nameField: "Name", - nameHint: - "A unique name for the group. This name will be used to reference the group when binding an attribute to a group.", - displayHeaderField: "Display name", - displayHeaderHint: - "A user-friendly name for the group that should be used when rendering a group of attributes in user-facing forms. Supports keys for localized values as well. For example: ${profile.attribute.group.address}.", - displayDescriptionField: "Display description", - displayDescriptionHint: - "A text that should be used as a tooltip when rendering user-facing forms.", - annotationsText: "Annotations", - addAnnotationText: "Add annotation", - removeAnnotationText: "Remove annotation", - keyPlaceholder: "Type a key", - keyLabel: "Key", - valuePlaceholder: "Type a value", - valueLabel: "Value", - }, -}; diff --git a/src/realm/messages.ts b/src/realm/messages.ts deleted file mode 100644 index 0de5e95c51..0000000000 --- a/src/realm/messages.ts +++ /dev/null @@ -1,15 +0,0 @@ -export default { - realm: { - uploadFile: "Upload JSON file", - realmName: "Realm name", - enabled: "Enabled", - createRealm: "Create realm", - realmExplain: - "A realm manages a set of users, credentials, roles, and groups. A user belongs to and logs into a realm. Realms are isolated from one another and can only manage and authenticate the users that they control.", - noRealmRoles: "No realm roles", - emptyStateText: - "There aren't any realm roles in this realm. Create a realm role to get started.", - saveRealmSuccess: "Realm created successfully", - saveRealmError: "Could not create realm {{error}}", - }, -}; diff --git a/src/sessions/messages.ts b/src/sessions/messages.ts deleted file mode 100644 index f5b63c12ef..0000000000 --- a/src/sessions/messages.ts +++ /dev/null @@ -1,39 +0,0 @@ -export default { - sessions: { - title: "Sessions", - sessionExplain: "Placeholder for sessions explanation.", - searchForSession: "Search session", - subject: "Subject", - lastAccess: "Last access", - startDate: "Start date", - accessedClients: "Accessed clients", - sessionsType: { - allSessions: "All session types", - regularSSO: "Regular SSO", - offline: "Offline", - directGrant: "Direct grant", - serviceAccount: "Service account", - }, - revocation: "Revocation", - revocationDescription: - "This is a way to revoke all active sessions and access tokens. Not before means you can revoke any tokens issued before the date.", - notBefore: "Not before", - notBeforeSuccess: 'Success! "Not before" set for realm', - notBeforeError: 'Error clearing "Not Before" for realm: {{error}}', - notBeforeClearedSuccess: 'Success! "Not Before" cleared for realm.', - signOutAllActiveSessions: "Sign out all active sessions", - signOutAllActiveSessionsQuestion: "Sign out all active sessions?", - setToNow: "Set to now", - logoutAllDescription: - "If you sign out all active sessions, active subjects in this realm will be signed out.", - logoutAllSessionsError: - "Error! Failed to log out of all sessions: {{error}}.", - setToNowError: "Error! Failed to set notBefore to current date and time.", - clear: "Clear", - push: "Push", - none: "None", - noSessions: "No sessions", - noSessionsDescription: - "There are currently no active sessions in this realm.", - }, -}; diff --git a/src/user-federation/help.ts b/src/user-federation/help.ts deleted file mode 100644 index 4c1e9b5c59..0000000000 --- a/src/user-federation/help.ts +++ /dev/null @@ -1,224 +0,0 @@ -export default { - "user-federation-help": { - addKerberosWizardDescription: "Text needed here", - addLdapWizardDescription: "Text needed here", - - ldapGeneralOptionsSettingsDescription: - "This section contains a few basic options common to all user storage providers.", - consoleDisplayNameHelp: - "Display name of provider when linked in admin console", - vendorHelp: "LDAP vendor (provider)", - - ldapConnectionAndAuthorizationSettingsDescription: - "This section contains options related to the configuration of the connection to the LDAP server. It also contains options related to authentication of the LDAP connection to the LDAP server.", - consoleDisplayConnectionUrlHelp: "Connection URL to your LDAP server", - enableStartTlsHelp: - "Encrypts the connection to LDAP using STARTTLS, which will disable connection pooling", - useTruststoreSpiHelp: - "Specifies whether LDAP connection will use the Truststore SPI with the truststore configured in standalone.xml/domain.sml. 'Always' means that it will always use it. 'Never' means that it will not use it. 'Only for ldaps' means that it will use it if your connection URL use ldaps. Note that even if standalone.xml/domain.xml is not configured, the default java cacerts or certificate specified by 'javax.net.ssl.trustStore' property will be used.", - connectionPoolingHelp: - "Determines if Keycloak should use connection pooling for accessing LDAP server.", - connectionTimeoutHelp: "LDAP connection timeout in milliseconds", - bindTypeHelp: - "Type of the authentication method used during LDAP bind operation. It is used in most of the requests sent to the LDAP server. Currently only 'none' (anonymous LDAP authentication) or 'simple' (bind credential + bind password authentication) mechanisms are available.", - bindDnHelp: - "DN of the LDAP admin, which will be used by Keycloak to access LDAP server", - bindCredentialsHelp: - "Password of LDAP admin. This field is able to obtain its value from vault, use ${vault.ID} format.", - - ldapSearchingAndUpdatingSettingsDescription: - "This section contains options related to searching the LDAP server for the available users.", - editModeLdapHelp: - "READ_ONLY is a read-only LDAP store. WRITABLE means data will be synced back to LDAP on demand. UNSYNCED means user data will be imported, but not synced back to LDAP.", - usersDNHelp: - "Full DN of LDAP tree where your users are. This DN is the parent of LDAP users. It could be for example 'ou=users,dc=example,dc=com' assuming that your typical user will have DN like 'uid='john',ou=users,dc=example,dc=com'.", - usernameLdapAttributeHelp: - "Name of the LDAP attribute, which is mapped as Keycloak username. For many LDAP server vendors it can be 'uid'. For Active directory it can be 'sAMAccountName' or 'cn'. The attribute should be filled for all LDAP user records you want to import from LDAP to Keycloak.", - rdnLdapAttributeHelp: - "Name of the LDAP attribute, which is used as RDN (top attribute) of typical user DN. Usually it's the same as the Username LDAP attribute, however it is not required. For example for Active directory, it is common to use 'cn' as RDN attribute when username attribute might be 'sAMAccountName'.", - uuidLdapAttributeHelp: - "Name of the LDAP attribute, which is used as a unique object identifier (UUID) for objects in LDAP. For many LDAP server vendors, it is 'entryUUID'; however some are different. For example, for Active directory it should be 'objectGUID'. If your LDAP server does not support the notion of UUID, you can use any other attribute that is supposed to be unique among LDAP users in tree. For example 'uid' or 'entryDN'.", - userObjectClassesHelp: - "All values of LDAP objectClass attribute for users in LDAP, divided by commas. For example: 'inetOrgPerson, organizationalPerson'. Newly created Keycloak users will be written to LDAP with all those object classes and existing LDAP user records are found just if they contain all those object classes.", - userLdapFilterHelp: - "Additional LDAP filter for filtering searched users. Leave this empty if you don't need an additional filter. Make sure that it starts with '(' and ends with ')'.", - searchScopeHelp: - "For one level, the search applies only for users in the DNs specified by User DNs. For subtree, the search applies to the whole subtree. See LDAP documentation for more details.", - readTimeoutHelp: - "LDAP read timeout in milliseconds. This timeout applies for LDAP read operations.", - paginationHelp: "Whether the LDAP server supports pagination", - - ldapSynchronizationSettingsDescription: - "This section contains options related to synchronization of users from LDAP to the Keycloak database.", - importUsersHelp: - "If true, LDAP users will be imported into the Keycloak DB and synced by the configured sync policies.", - batchSizeHelp: - "Count of LDAP users to be imported from LDAP to Keycloak within a single transaction", - periodicFullSyncHelp: - "Whether periodic full synchronization of LDAP users to Keycloak should be enabled or not", - fullSyncPeriodHelp: "Period for full synchronization in seconds", - periodicChangedUsersSyncHelp: - "Whether periodic synchronization of changed or newly created LDAP users to Keycloak should be enabled or not", - changedUsersSyncHelp: - "Period for synchronization of changed or newly created LDAP users in seconds", - - ldapKerberosSettingsDescription: - "This section contains options useful for the Kerberos integration. This is used only when the LDAP server is used together with Kerberos/SPNEGO for user authentication.", - allowKerberosAuthenticationHelp: - "Enable/disable HTTP authentication of users with SPNEGO/Kerberos tokens. The data about authenticated users will be provisioned from this LDAP server.", - useKerberosForPasswordAuthenticationHelp: - "User Kerberos login module for authenticating username/password against Kerberos server instead of authenticating against LDAP server with Directory Service API", - - cacheSettingsDescription: - "This section contains options useful for caching users, which were loaded from this user storage provider.", - cachePolicyHelp: - "Cache Policy for this storage provider. 'DEFAULT' is whatever the default settings are for the global cache. 'EVICT_DAILY' is a time of day every day that the cache will be invalidated. 'EVICT_WEEKLY' is a day of the week and time the cache will be invalidated. 'MAX_LIFESPAN' is the time in milliseconds that will be the lifespan of a cache entry.", - evictionDayHelp: "Day of the week the entry will become invalid", - evictionHourHelp: "Hour of the day the entry will become invalid", - evictionMinuteHelp: "Minute of the hour the entry will become invalid", - maxLifespanHelp: "Max lifespan of cache entry in milliseconds", - - ldapAdvancedSettingsDescription: - "This section contains all the other options for more fine-grained configuration of the LDAP storage provider.", - enableLdapv3PasswordHelp: - "Use the LDAPv3 Password Modify Extended Operation (RFC-3062). The password modify extended operation usually requires that LDAP user already has password in the LDAP server. So when this is used with 'Sync Registrations', it can be good to add also 'Hardcoded LDAP attribute mapper' with randomly generated initial password.", - validatePasswordPolicyHelp: - "Determines if Keycloak should validate the password with the realm password policy before updating it", - trustEmailHelp: - "If enabled, email provided by this provider is not verified even if verification is enabled for the realm.", - - "IDK-periodicChangedUsersSyncHelp": - "Should newly created users be created within LDAP store? Priority affects which provider is chosen to sync the new user.", - - kerberosWizardDescription: "Text needed here.", - - kerberosRequiredSettingsDescription: - "This section contains a few basic options common to all user storage providers.", - kerberosRealmHelp: "Name of kerberos realm. For example, FOO.ORG", - serverPrincipalHelp: - "Full name of server principal for HTTP service including server and domain name. For example, HTTP/host.foo.org@FOO.ORG", - keyTabHelp: - "Location of Kerberos KeyTab file containing the credentials of server principal. For example, /etc/krb5.keytab", - debugHelp: - "Enable/disable debug logging to standard output for Krb5LoginModule.", - allowPasswordAuthenticationHelp: - "Enable/disable possibility of username/password authentication against Kerberos database", - editModeKerberosHelp: - "READ_ONLY means that password updates are not allowed and user always authenticates with Kerberos password. UNSYNCED means that the user can change the password in the Keycloak database and this one will be used instead of the Kerberos password.", - updateFirstLoginHelp: "Update profile on first login", - - mapperTypeMsadUserAccountControlManagerHelp: - "Mapper specific to MSAD. It's able to integrate the MSAD user account state into Keycloak account state (account enabled, password is expired etc). It's using userAccountControl and pwdLastSet MSAD attributes for that. For example if pwdLastSet is 0, the Keycloak user is required to update the password; if userAccountControl is 514 (disabled account) the Keycloak user is disabled as well etc. Mapper is also able to handle the exception code from LDAP user authentication.", - mapperTypeMsadLdsUserAccountControlMapperHelp: - "Mapper specific to MSAD LDS. It's able to integrate the MSAD LDS user account state into Keycloak account state (account enabled, password is expired etc). It's using msDS-UserAccountDisabled and pwdLastSet is 0, the Keycloak user is required to update password, if msDS-UserAccountDisabled is 'TRUE' the Keycloak user is disabled as well etc. Mapper is also able to handle exception code from LDAP user authentication.", - mapperTypeGroupLdapMapperHelp: - "Used to map group mappings of groups from some LDAP DN to Keycloak group mappings", - mapperTypeUserAttributeLdapMapperHelp: - "Used to map single attribute from LDAP user to attribute of UserModel in Keycloak DB", - mapperTypeRoleLdapMapperHelp: - "Used to map role mappings of roles from some LDAP DN to Keycloak role mappings of either realm roles or client roles of particular client", - mapperTypeHardcodedAttributeMapperHelp: - "This mapper will hardcode any model user attribute and some property (like emailVerified or enabled) when importing user from LDAP.", - mapperTypeHardcodedLdapRoleMapperHelp: - "Users imported from LDAP will be automatically added into this configured role.", - mapperTypeCertificateLdapMapperHelp: - "Used to map single attribute which contains a certificate from LDAP user to attribute of UserModel in Keycloak DB", - mapperTypeFullNameLdapMapperHelp: - "Used to map the full-name of a user from single attribute in LDAP (usually 'cn' attribute) to firstName and lastName attributes of UserModel in Keycloak DB", - mapperTypeHardcodedLdapGroupMapperHelp: - "Users imported from LDAP will be automatically added into this configured group.", - mapperTypeLdapAttributeMapperHelp: - "This mapper is supported just if syncRegistrations is enabled. New users registered in Keycloak will be written to the LDAP with the hardcoded value of some specified attribute.", - - passwordPolicyHintsEnabledHelp: - "Applicable just for writable MSAD. If on, then updating password of MSAD user will use LDAP_SERVER_POLICY_HINTS_OID extension, which means that advanced MSAD password policies like 'password history' or 'minimal password age' will be applied. This extension works just for MSAD 2008 R2 or newer.", - - nameHelp: "Name of the mapper", - mapperTypeHelp: - "Used to map single attribute from LDAP user to attribute of UserModel in Keycloak DB", - - userModelAttributeHelp: - "Name of the UserModel property or attribute you want to map the LDAP attribute into. For example 'firstName', 'lastName, 'email', 'street' etc.", - ldapAttributeHelp: - "Name of mapped attribute on LDAP object. For example 'cn', 'sn', 'mail', 'street', etc.", - readOnlyHelp: - "Read-only attribute is imported from LDAP to UserModel, but it's not saved back to LDAP when user is updated in Keycloak.", - alwaysReadValueFromLdapHelp: - "If on, then during reading of the LDAP attribute value will always used instead of the value from Keycloak DB.", - isMandatoryInLdapHelp: - "If true, attribute is mandatory in LDAP. Hence if there is no value in Keycloak DB, the empty value will be set to be propagated to LDAP.", - attributeDefaultValueHelp: - "If there is no value in Keycloak DB and attribute is mandatory in LDAP, this value will be propagated to LDAP.", - isBinaryAttributeHelp: "Should be true for binary LDAP attributes.", - - derFormattedHelp: - "Activate this if the certificate is DER formatted in LDAP and not PEM formatted.", - - ldapFullNameAttributeHelp: - "Name of the LDAP attribute, which contains the fullName of the user. Usually it will be 'cn'.", - fullNameLdapReadOnlyHelp: - "For Read-only, data is imported from LDAP to Keycloak DB, but it's not saved back to LDAP when the user is updated in Keycloak.", - fullNameLdapWriteOnlyHelp: - "For Write-only, data is propagated to LDAP when a user is created or updated in Keycloak. But this mapper is not used to propagate data from LDAP back into Keycloak. This setting is useful if you configured separate firstName and lastName attribute mappers and you want to use those to read the attribute from LDAP into Keycloak.", - - ldapGroupsDnHelp: - "LDAP DN where groups of this tree are saved. For example 'ou=groups,dc=example,dc=org'", - groupNameLdapAttributeHelp: - "Name of LDAP attribute, which is used in group objects for name and RDN of group. Usually it will be 'cn'. In this case typical group/role object may have DN like 'cn=Group1,ouu=groups,dc=example,dc=org'.", - groupObjectClassesHelp: - "Object class (or classes) of the group object. It's divided by commas if more classes needed. In typical LDAP deployment it could be 'groupOfNames'. In Active Directory it's usually 'group'.", - preserveGroupInheritanceHelp: - "Flag whether group inheritance from LDAP should be propagated to Keycloak. If false, then all LDAP groups will be mapped as flat top-level groups in Keycloak. Otherwise group inheritance is preserved into Keycloak, but the group sync might fail if LDAP structure contains recursions or multiple parent groups per child groups.", - ignoreMissingGroupsHelp: "Ignore missing groups in the group hierarchy.", - userGroupsRetrieveStrategyHelp: - "Specify how to retrieve groups of user. LOAD_GROUPS_BY_MEMBER_ATTRIBUTE means that roles of user will be retrieved by sending LDAP query to retrieve all groups where 'member' is our user. GET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE means that groups of user will be retrieved from 'memberOf' attribute of our user or from the other attribute specified by 'Member-Of LDAP Attribute'.", - mappedGroupAttributesHelp: - "List of names of attributes divided by commas. This points to the list of attributes on LDAP group, which will be mapped as attributes of Group in Keycloak. Leave this empty if no additional group attributes are required to be mapped in Keycloak.", - dropNonexistingGroupsDuringSyncHelp: - "If this flag is true, then during sync of groups from LDAP to Keycloak, we will keep just those Keycloak groups that still exist in LDAP. The rest will be deleted.", - groupsPathHelp: - "Keycloak group path the LDAP groups are added to. For example if value '/Applications/App1' is used, then LDAP groups will be available in Keycloak under group 'App1', which is child of top level group 'Applications'. The default value is '/' so LDAP groups will be mapped to the Keycloak groups at the top level. The configured group path must already exist in the Keycloak when creating this mapper.", - - ldapRolesDnHelp: - "LDAP DN where roles of this tree are saved. For example, 'ou=finance,dc=example,dc=org'", - roleNameLdapAttributeHelp: - "Name of LDAP attribute, which is used in role objects for name and RDN of role. Usually it will be 'cn'. In this case typical group/role object may have DN like 'cn=role1,ou=finance,dc=example,dc=org'.", - roleObjectClassesHelp: - "Object class (or classes) of the role object. It's divided by commas if more classes are needed. In typical LDAP deployment it could be 'groupOfNames'. In Active Directory it's usually 'group'.", - userRolesRetrieveStrategyHelp: - "Specify how to retrieve roles of user. LOAD_ROLES_BY_MEMBER_ATTRIBUTE means that roles fo user will be retrieved by sending LDAP query to retrieve all roles where 'member' is our user. GET_ROLES_FROM_USER_MEMBEROF means that roles of user will be retrieved from 'memberOf' attribute of our user. Or from the other attributes specified by 'Member-Of LDAP Attribute'. LOAD_ROLES_BY_MEMBER_ATTRIBUTE is applicable just in Active Directory and it means that roles of user will be retrieved recursively with usage of LDAP_MATCHING_RULE_IN_CHAIN LDAP extension.", - useRealmRolesMappingHelp: - "If true, then LDAP role mappings will be mapped to realm role mappings in Keycloak. Otherwise it will be mapped to client role mappings.", - clientIdHelp: - "Client ID of client to which LDAP role mappings will be mapped. Applicable only if 'Use Realm Roles Mapping' is false.", - - membershipLdapAttributeHelp: - "Name of LDAP attribute on group, which is used for membership mappings. Usually it will be 'member'. However when 'Membership Attribute Type' is 'UID', then 'Membership LDAP Attribute' could be typically 'memberUid'.", - membershipAttributeTypeHelp: - "DN means that LDAP group has it's members declared in form of their full DN. For example 'member: uid=john,ou=users,dc=example,dc=com'. UID means that LDAP group has it's members declared in form of pure user uids. For example 'memberUid: john'.", - membershipUserLdapAttributeHelp: - "Used just if Membership Attribute Type is UID. It is the name of the LDAP attribute on user, which is used for membership mappings. Usually it will be 'uid'. For example if the value of 'Membership User LDAP Attribute' is 'uid' and LDAP group has 'memberUid: john', then it is expected that particular LDAP user will have attribute 'uid: john'.", - ldapFilterHelp: - "LDAP Filter adds an additional custom filter to the whole query for retrieve LDAP groups. Leave this empty if no additional filtering is needed and you want to retrieve all groups from LDAP. Otherwise make sure that filter starts with '(' and ends with ')'.", - modeHelp: - "LDAP_ONLY means that all group mappings of users are retrieved from LDAP and saved into LDAP. READ_ONLY is Read-only LDAP mode where group mappings are retrieved from both LDAP and DB and merged together. New group joins are not saved to LDAP but to DB. IMPORT is Read-only LDAP mode where group mappings are retrieved from LDAP just at the time when user is imported from LDAP and then they are saved to local keycloak DB.", - memberofLdapAttributeHelp: - "Used just when 'User Roles Retrieve Strategy' is GET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE. It specifies the name of the LDAP attribute on the LDAP user, which contains the groups, which the user is member of. Usually it will be the default 'memberOf'.", - - userModelAttributeNameHelp: - "Name of the model attribute to be added when importing user from LDAP", - attributeValueHelp: - "Value of the model attribute to be added when importing user from LDAP", - - roleHelp: - "Role to grant to user. Click 'Select Role' button to browse roles, or just type it in the textbox. To reference an application role the syntax is appname.approle, i.e. myapp.myrole.", - - groupHelp: - "Group to add the user in. Fill the full path of the group including path. For example: '/root-group/child-group'.", - - ldapAttributeNameHelp: - "Name of the LDAP attribute, which will be added to the new user during registration", - ldapAttributeValueHelp: - "Value of the LDAP attribute, which will be added to the new user during registration. You can either hardcode any value like 'foo' but you can also use some special tokens. Only supported token right now is '${RANDOM}', which will be replaced with some randomly generated string.", - }, -}; diff --git a/src/user-federation/messages.ts b/src/user-federation/messages.ts deleted file mode 100644 index 38796a2dc3..0000000000 --- a/src/user-federation/messages.ts +++ /dev/null @@ -1,215 +0,0 @@ -export default { - "user-federation": { - userFederation: "User federation", - descriptionLanding: - "This is the description for the user federation landing page", - userFederationExplain: - "Keycloak can federate external user databases. Out of the box we have support for LDAP and Active Directory.", - getStarted: "To get started, select a provider from the list below.", - providers: "Add providers", - addProvider_one: "Add {{provider}} provider", - addProvider_other: "Add {{provider}} providers", - addKerberosWizardTitle: "Add Kerberos user federation provider", - addLdapWizardTitle: "Add LDAP user federation provider", - - syncChangedUsers: "Sync changed users", - syncAllUsers: "Sync all users", - unlinkUsers: "Unlink users", - removeImported: "Remove imported", - deleteProvider: "Delete provider", - - generalOptions: "General options", - consoleDisplayName: "Console display name", - vendor: "Vendor", - - connectionAndAuthenticationSettings: - "Connection and authentication settings", - connectionURL: "Connection URL", - enableStartTls: "Enable StartTLS", - useTruststoreSpi: "Use Truststore SPI", - connectionPooling: "Connection pooling", - connectionTimeout: "Connection timeout", - bindType: "Bind type", - bindDn: "Bind DN", - bindCredentials: "Bind credentials", - - ldapSearchingAndUpdatingSettings: "LDAP searching and updating", - editMode: "Edit mode", - usersDN: "Users DN", - usernameLdapAttribute: "Username LDAP attribute", - rdnLdapAttribute: "RDN LDAP attribute", - uuidLdapAttribute: "UUID LDAP attribute", - userObjectClasses: "User object classes", - userLdapFilter: "User LDAP filter", - searchScope: "Search scope", - readTimeout: "Read timeout", - pagination: "Pagination", - - synchronizationSettings: "Synchronization settings", - importUsers: "Import users", - batchSize: "Batch size", - periodicFullSync: "Periodic full sync", - fullSyncPeriod: "Full sync period", - periodicChangedUsersSync: "Periodic changed users sync", - changedUsersSyncPeriod: "Changed users sync period", - - kerberosIntegration: "Kerberos integration", - allowKerberosAuthentication: "Allow Kerberos authentication", - useKerberosForPasswordAuthentication: - "Use Kerberos for password authentication", - - cacheSettings: "Cache settings", - cachePolicy: "Cache policy", - evictionDay: "Eviction day", - evictionHour: "Eviction hour", - evictionMinute: "Eviction minute", - maxLifespan: "Max lifespan", - ms: "milliseconds", - - advancedSettings: "Advanced settings", - enableLdapv3Password: - "Enable the LDAPv3 password modify extended operation", - validatePasswordPolicy: "Validate password policy", - trustEmail: "Trust email", - - requiredSettings: "Required Settings", - kerberosRealm: "Kerberos realm", - serverPrincipal: "Server principal", - keyTab: "Key tab", - debug: "Debug", - allowPasswordAuthentication: "Allow password authentication", - updateFirstLogin: "Update first login", - - always: "Always", - never: "Never", - onlyLdaps: "Only for ldaps", - oneLevel: "One Level", - subtree: "Subtree", - - saveSuccess: "User federation provider successfully saved", - saveError: "User federation provider could not be saved: {{error}}", - createSuccess: "User federation provider successfully created", - createError: "User federation provider could not be created: {{error}}", - queryExtensions: "Query Supported Extensions", - testAuthentication: "Test authentication", - testSuccess: "Successfully connected to LDAP", - testError: - "Error when trying to connect to LDAP. See server.log for details. {{error}}", - - learnMore: "Learn more", - managePriorities: "Manage priorities", - managePriorityOrder: "Manage priority order", - managePriorityInfo: - "Priority is the order of providers when doing a user lookup. You can drag the row handlers to change the priorities.", - orderChangeSuccess: - "Successfully changed the priority order of user federation providers", - orderChangeError: - "Could not change the priority order of user federation providers {{error}}", - addNewProvider: "Add new provider", - addCustomProvider: "Add custom provider", - providerDetails: "Provider details", - userFedDeletedSuccess: "The user federation provider has been deleted.", - userFedDeleteError: - "Could not delete user federation provider: '{{error}}'", - userFedDeleteConfirmTitle: "Delete user federation provider?", - userFedDeleteConfirm: - "If you delete this user federation provider, all associated data will be removed.", - userFedDisableConfirmTitle: "Disable user federation provider?", - userFedDisableConfirm: - "If you disable this user federation provider, it will not be considered for queries and imported users will be disabled and read-only until the provider is enabled again.", - - userFedUnlinkUsersConfirmTitle: "Unlink all users?", - userFedUnlinkUsersConfirm: - "Do you want to unlink all the users? Any users without a password in the database will not be able to authenticate anymore.", - - removeImportedUsers: "Remove imported users?", - removeImportedUsersMessage: - "Do you really want to remove all imported users?", - removeImportedUsersSuccess: "Imported users have been removed.", - removeImportedUsersError: "Could not remove imported users: '{{error}}'", - - syncUsersSuccess: "Sync of users finished successfully.", - syncUsersError: "Could not sync users: '{{error}}'", - - unlinkUsersSuccess: "Unlink of users finished successfully.", - unlinkUsersError: "Could not unlink users: '{{error}}'", - - validateName: "You must enter a name", - validateRealm: "You must enter a realm", - validateServerPrincipal: "You must enter a server principal", - validateKeyTab: "You must enter a key tab", - validateConnectionUrl: "You must enter a connection URL", - validateBindDn: "You must enter the DN of the LDAP admin", - validateBindCredentials: "You must enter the password of the LDAP admin", - validateUuidLDAPAttribute: "You must enter a UUID LDAP attribute", - validateUserObjectClasses: "You must enter one or more user object classes", - validateEditMode: "You must select an edit mode", - validateUsersDn: "You must enter users DN", - validateUsernameLDAPAttribute: "You must enter a username LDAP attribute", - validateRdnLdapAttribute: "You must enter an RDN LDAP attribute", - validateCustomUserSearchFilter: - "Filter must be enclosed in parentheses, for example: (filter)", - - mapperTypeMsadUserAccountControlManager: "msad-user-account-control-mapper", - mapperTypeMsadLdsUserAccountControlMapper: - "msad-user-account-control-mapper", - mapperTypeGroupLdapMapper: "group-ldap-mapper", - mapperTypeUserAttributeLdapMapper: "user-attribute-ldap-mapper", - mapperTypeRoleLdapMapper: "role-ldap-mapper", - mapperTypeHardcodedAttributeMapper: "hardcoded-attribute-mapper", - mapperTypeHardcodedLdapRoleMapper: "hardcoded-ldap-role-mapper", - mapperTypeCertificateLdapMapper: "certificate-ldap-mapper", - mapperTypeFullNameLdapMapper: "full-name-ldap-mapper", - mapperTypeHardcodedLdapGroupMapper: "hardcoded-ldap-group-mapper", - mapperTypeLdapAttributeMapper: "hardcoded-ldap-attribute-mapper", - - ldapMappersList: "LDAP Mappers", - - ldapFullNameAttribute: "LDAP full name attribute", - writeOnly: "Write only", - - ldapGroupsDn: "LDAP groups DN", - groupNameLdapAttribute: "Group name LDAP attribute", - groupObjectClasses: "Group object classes", - preserveGroupInheritance: "Preserve group inheritance", - ignoreMissingGroups: "Ignore missing groups", - userGroupsRetrieveStrategy: "User groups retrieve strategy", - mappedGroupAttributes: "Mapped group attributes", - dropNonexistingGroupsDuringSync: "Drop non-existing groups during sync", - groupsPath: "Groups path", - - membershipLdapAttribute: "Membership LDAP attribute", - membershipAttributeType: "Membership attribute type", - membershipUserLdapAttribute: "Membership user LDAP attribute", - ldapFilter: "LDAP filter", - mode: "Mode", - memberofLdapAttribute: "Member-of LDAP attribute", - - ldapRolesDn: "LDAP roles DN", - roleNameLdapAttribute: "Role name LDAP attribute", - roleObjectClasses: "Role object classes", - userRolesRetrieveStrategy: "User roles retrieve strategy", - useRealmRolesMapping: "Use realm roles mapping", - - ldapAttributeName: "LDAP attribute name", - ldapAttributeValue: "LDAP attribute value", - - userModelAttribute: "User model attribute", - ldapAttribute: "LDAP attribute", - readOnly: "Read only", - alwaysReadValueFromLdap: "Always read value from LDAP", - isMandatoryInLdap: "Is mandatory in LDAP", - attributeDefaultValue: "Attribute default value", - isBinaryAttribute: "Is binary attribute", - derFormatted: "DER formatted", - - passwordPolicyHintsEnabled: "Password policy hints enabled", - - userModelAttributeName: "User model attribute name", - attributeValue: "Attribute value", - - selectRole: "Select role", - - group: "Group", - }, -}; diff --git a/src/user/help.ts b/src/user/help.ts deleted file mode 100644 index e0a9074bc2..0000000000 --- a/src/user/help.ts +++ /dev/null @@ -1,16 +0,0 @@ -export default { - "users-help": { - temporaryLocked: - "The user may be locked due to multiple failed attempts to log in.", - disabled: "A disabled user cannot log in.", - emailVerified: "Has the user's email been verified?", - requiredUserActions: - "Require an action when the user logs in. 'Verify email' sends an email to the user to verify their email address. 'Update profile' requires user to enter in new personal information. 'Update password' requires user to enter in a new password. 'Configure OTP' requires setup of a mobile password generator.", - groups: - "Groups where the user has membership. To leave a group, select it and click Leave.", - userIdHelperText: - "Enter the unique ID of the user for this identity provider.", - usernameHelperText: - "Enter the username of the user for this identity provider.", - }, -}; diff --git a/src/user/messages.ts b/src/user/messages.ts deleted file mode 100644 index cbfd8e45a4..0000000000 --- a/src/user/messages.ts +++ /dev/null @@ -1,197 +0,0 @@ -export default { - users: { - title: "Users", - usersExplain: "Placeholder for users explanation.", - userList: "User list", - searchForUser: "Search user", - startBySearchingAUser: "Start by searching for users", - searchForUserDescription: - "This realm has a federated provider. Viewing all users may cause the system to slow down. Please search for a user above.", - createUser: "Create user", - createNewUser: "Create new user", - noUsersFound: "No users found", - noUsersFoundError: "No users found due to {{error}}", - noUsersFoundErrorStorage: - "No users found, could be due to wrongly configured federated provider {{error}}", - noGroups: "No groups", - noGroupsText: - "You haven't added this user to any groups. Join a group to get started.", - joinGroup: "Join Group", - joinGroups: "Join Groups", - join: "Join", - joinGroupsFor: "Join groups for user {{username}}", - selectGroups: "Select groups to join", - searchForGroups: "Search for groups", - leave: "Leave", - leaveGroup_one: "Leave group {{name}}?", - leaveGroup_other: "Leave groups?", - leaveGroupConfirmDialog_one: - "Are you sure you want to remove {{username}} from the group {{groupname}}?", - leaveGroupConfirmDialog_other: - "Are you sure you want to remove {{username}} from the {{count}} selected groups?", - directMembership: "Direct membership", - groupMembership: "Group membership", - addedGroupMembership: "Added group membership", - addedGroupMembershipError: "Error adding group membership", - removedGroupMembership: "Removed group membership", - removedGroupMembershipError: "Error removing group membership", - path: "Path", - emptyInstructions: "Change your search criteria or add a user", - createdAt: "Created at", - username: "Username", - email: "Email", - emailVerified: "Email verified", - lastName: "Last name", - firstName: "First name", - status: "Status", - disabled: "Disabled", - temporaryLocked: "Temporarily locked", - unlockSuccess: "User successfully unlocked", - unlockError: "Could not unlock user due to {{error}}", - emailInvalid: "You must enter a valid email.", - temporaryDisabled: "Temporarily disabled", - notVerified: "Not verified", - requiredUserActions: "Required user actions", - addUser: "Add user", - impersonate: "Impersonate", - impersonateConfirm: "Impersonate user?", - impersonateConfirmDialog: - "Are you sure you want to log in as this user? If this user is in the same realm with you, your current login session will be logged out before you log in as this user.", - impersonateError: "Could not impersonate the user: {{error}}", - - deleteUser: "Delete user", - deleteConfirm: "Delete user?", - deleteConfirmCurrentUser: - "Are you sure you want to permanently delete this user", - deleteConfirmDialog_one: - "Are you sure you want to permanently delete {{count}} selected user", - deleteConfirmDialog_other: - "Are you sure you want to permanently delete {{count}} selected users", - userID: "User ID", - userCreated: "The user has been created", - userSaved: "The user has been saved", - userDetails: "User details", - userCreateError: "Could not create user: {{error}}", - userDeletedSuccess: "The user has been deleted", - userDeletedError: "The user could not be deleted {{error}}", - linkAccount: "Link account", - unlink: "Unlink", - unlinkAccount: "Unlink account", - unlinkAccountTitle: "Unlink account from {{provider}}?", - unlinkAccountConfirm: - "Are you sure you want to permanently unlink this account from {{provider}}?", - link: "Link", - linkAccountTitle: "Link account to {{provider}}?", - idpLinkSuccess: "Identity provider has been linked", - couldNotLinkIdP: "Could not link identity provider {{error}}", - configureOTP: "Configure OTP", - updatePassword: "Update Password", - updateProfile: "Update Profile", - verifyEmail: "Verify Email", - updateUserLocale: "Update User Locale", - consents: "Consents", - noConsents: "No consents", - noConsentsText: - "The consents will only be recorded when users try to access a client that is configured to require consent. In that case, users will get a consent page which asks them to grant access to the client.", - identityProvider: "Identity provider", - identityProviderLinks: "Identity provider links", - noProvidersLinked: - "No identity providers linked. Choose one from the list below.", - noAvailableIdentityProviders: "No available identity providers.", - linkedIdPs: "Linked identity providers", - linkedIdPsText: - "The identity providers which are already linked to this user account", - availableIdPs: "Available identity providers", - availableIdPsText: - "All the configured identity providers in this realm are listed here. You can link the user account to any of the IdP accounts.", - whoWillAppearLinkText: "Who will appear in this group list?", - whoWillAppearPopoverText: - "Groups are hierarchical. When you select Direct Membership, you see only the child group that the user joined. Ancestor groups are not included.", - revoke: "Revoke", - revokeClientScopesTitle: "Revoke all granted client scopes?", - revokeClientScopes: - "Are you sure you want to revoke all granted client scopes for {{clientId}}?", - deleteGrantsSuccess: "Grants successfully revoked.", - deleteGrantsError: "Error deleting grants.", - roleMapping: "Role mapping", - noRoles: "No roles for this user", - noRolesInstructions: - "You haven't assigned any roles to this user. Assign a role to get started.", - unlockAllUsers: "Unlock all users", - unlockUsersConfirm: - "All the users that are temporarily locked will be unlocked.", - unlock: "Unlock", - unlockUsersSuccess: "Any temporarily locked users are now unlocked", - unlockUsersError: "Could not unlock all users {{error}}", - noCredentials: "No credentials", - noCredentialsText: - "This user does not have any credentials. You can set password for this user.", - setPassword: "Set password", - setPasswordFor: "Set password for {{username}}", - defaultPasswordLabel: "My password", - save: "Save", - cancel: "Cancel", - savePasswordSuccess: "The password has been set successfully.", - savePasswordError: "Error saving password: {{error}}", - confirmPasswordDoesNotMatch: "Password and confirmation does not match.", - credentialType: "Type", - credentialUserLabel: "User Label", - credentialData: "Data", - credentialsList: "Credentials List", - setPasswordConfirm: "Set password?", - setPasswordConfirmText: - "Are you sure you want to set the password for the user {{username}}?", - password: "Password", - passwordConfirmation: "Password confirmation", - resetPasswordConfirmation: "New password confirmation", - savePassword: "Save password", - deleteCredentialsConfirmTitle: "Delete credentials?", - deleteCredentialsConfirm: - "Are you sure you want to delete these users credentials?", - deleteCredentialsSuccess: "The credentials has been deleted successfully.", - deleteCredentialsError: "Error deleting users credentials: {{error}}", - deleteBtn: "Delete", - updatedCredentialMoveSuccess: - "User Credential configuration has been saved", - updatedCredentialMoveError: - "User Credential configuration hasn't been saved", - resetPasswordFor: "Reset password for {{username}}", - resetPasswordConfirm: "Reset password?", - resetPasswordConfirmText: - "Are you sure you want to reset the password for the user {{username}}?", - resetPassword: "Reset password", - resetCredentialsSuccess: "The password has been reset successfully.", - resetCredentialsError: "Error resetting users credentials: {{error}}", - resetPasswordError: "Error resetting password: {{error}}", - resetPasswordBtn: "Reset password", - showPasswordDataName: "Name", - showPasswordDataValue: "Value", - showDataBtn: "Show data", - userCredentialsHelpText: - "The top level handlers allow you to shift the priority of the credential for the user, the topmost credential having the highest priority. The handlers within one expandable panel allow you to change the visual order of the credentials, the topmost credential will show at the most left.", - userCredentialsHelpTextLabel: "User Credentials Help Text", - type: "Type", - userLabel: "User label", - data: "Data", - passwordDataTitle: "Password data", - updateCredentialUserLabelSuccess: - "The user label has been changed successfully.", - updateCredentialUserLabelError: "Error changing user label: {{error}}", - credentialReset: "Credentials Reset", - credentialResetBtn: "Credential Reset", - resetActions: "Reset Actions", - lifespan: "Expires In", - VERIFY_EMAIL: "Verify Email (VERIFY_EMAIL)", - UPDATE_PASSWORD: "Update password (UPDATE_PASSWORD)", - UPDATE_PROFILE: "Update Profile (UPDATE_PROFILE)", - CONFIGURE_TOTP: "Configure OTP (CONFIGURE_TOTP)", - terms_and_conditions: "Terms and Conditions (terms_and_conditions)", - hours: "Hours", - minutes: "Minutes", - seconds: "Seconds", - credentialResetConfirm: "Send Email", - credentialResetConfirmText: "Are you sure you want to send email to user", - credentialResetEmailSuccess: "Email sent to user.", - credentialResetEmailError: "Failed: {{error}}", - }, -};