diff --git a/Directory.Build.props b/Directory.Build.props
index ca16c2b4..23a9f197 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -9,7 +9,7 @@
true$(MSBuildThisFileDirectory)eng\CodeAnalysis.rulesettrue
- fr
+ fr;es
diff --git a/src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.es.xlf b/src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.es.xlf
new file mode 100644
index 00000000..191b0e2e
--- /dev/null
+++ b/src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.es.xlf
@@ -0,0 +1,602 @@
+
+
+
+
+
+ The security token is missing.
+ Falta el token de seguridad.
+
+
+
+ The specified authorization code is invalid.
+ El código de autorización provisto no es válido.
+
+
+
+ The specified device code is invalid.
+ El código de dispositivo provisto no es válido.
+
+
+
+ The specified refresh token is invalid.
+ El token de actualización provisto no es válido.
+
+
+
+ The specified token is invalid.
+ El token provisto no es válido.
+
+
+
+ The specified token is not an authorization code.
+ El token provisto no es un código de autorización.
+
+
+
+ The specified token is not an device code.
+ El token provisto no es un código de dispositivo.
+
+
+
+ The specified token is not a refresh token.
+ El token provisto no es un token de actualización.
+
+
+
+ The specified token is not an access token.
+ El token provisto no es un token de acceso.
+
+
+
+ The specified identity token is invalid.
+ El token provisto de identidad provisto no es válido.
+
+
+
+ The specified authorization code has already been redeemed.
+ El código de autorización provisto ya ha sido canjeado.
+
+
+
+ The specified device code has already been redeemed.
+ El código de dispositivo provisto ya ha sido canjeado.
+
+
+
+ The specified refresh token has already been redeemed.
+ El token de actualización provisto ya ha sido canjeado.
+
+
+
+ The specified token has already been redeemed.
+ El token provisto ya ha sido canjeado.
+
+
+
+ The authorization has not been granted yet by the end user.
+ El usuario final aún no ha concedido la autorización.
+
+
+
+ The authorization was denied by the end user.
+ La autorización fue denegada por el usuario final.
+
+
+
+ The specified authorization code is no longer valid.
+ El codigo de autorización provisto ya no es válido.
+
+
+
+ The specified device code is no longer valid.
+ El código de dispositivo provisto ya no es válido.
+
+
+
+ The specified refresh token is no longer valid.
+ El token de actualización provisto ya no es válido.
+
+
+
+ The specified token is no longer valid.
+ El token provisto ya no es válido.
+
+
+
+ The authorization associated with the authorization code is no longer valid.
+ La autorización asociada con el codigo de autorización ya no es válida.
+
+
+
+ The authorization associated with the device code is no longer valid.
+ La autorización asociada con el código de dispositivo ya no es válida.
+
+
+
+ The authorization associated with the refresh token is no longer valid.
+ La autorización asociada con el token de actualización ya no es válida.
+
+
+
+ The authorization associated with the token is no longer valid.
+ La autorización asociada con el token ya no es válida.
+
+
+
+ The token request was rejected by the authentication server.
+ La petición del token ha sido rechazada por el servidor de autenticación.
+
+
+
+ The user information access demand was rejected by the authentication server.
+ La demanda de acceso a la información del usuario ha sido rechazada por el servidor de autenticación.
+
+
+
+ The specified user code is no longer valid.
+ El código de usuario provisto ya no es válido.
+
+
+
+ The '{0}' parameter is not supported.
+ El parámetro '{0}' no esta soportado.
+
+
+
+ The mandatory '{0}' parameter is missing.
+ Falta el parámetro obligatorio '{0}'.
+
+
+
+ The '{0}' parameter must be a valid absolute URL.
+ El parámetro '{0}' debe ser una URL absoluta válida.
+
+
+
+ The '{0}' parameter must not include a fragment.
+ El parámetro '{0}' no debe incluir un fragmento.
+
+
+
+ The specified '{0}' is not supported.
+ El '{0}' provisto no esta soportado.
+
+
+
+ The specified '{0}'/'{1}' combination is invalid.
+ La combinación '{0}'/'{1}' no es válida.
+
+
+
+ The mandatory '{0}' scope is missing.
+ Falta el scope obligatorio '{0}'.
+
+
+
+ The '{0}' scope is not allowed.
+ El scope '{0}' no esta permitido.
+
+
+
+ The client identifier cannot be null or empty.
+ El identificador de cliente no puede ser nulo ni vacío.
+
+
+
+ The '{0}' parameter cannot be used without '{1}'.
+ El parámetro '{0}' debe ser utilizado en conjunto con '{1}'.
+
+
+
+ The status cannot be null or empty.
+ El estado no puede ser nulo ni vacío.
+
+
+
+ Scopes cannot be null or empty.
+ Los scopes no pueden ser nulos ni vacíos.
+
+
+
+ The '{0}' and '{1}' parameters can only be used with a response type containing '{2}'.
+ Los parámetros '{0}' y '{1}' pueden ser usados únicamente con un tipo de respuesta que contenga '{2}'.
+
+
+
+ The specified '{0}' is not allowed when using PKCE.
+ El '{0}' provisto no esta permitido cuando se utiliza PKCE.
+
+
+
+ Scopes cannot contain spaces.
+ Los scopes no pueden tener espacios.
+
+
+
+ The specified '{0}' is not valid for this client application.
+ El '{0}' provisto no es válido para esta aplicación de cliente.
+
+
+
+ The scope name cannot be null or empty.
+ El nombre del scope no puede ser nulo ni vacío.
+
+
+
+ The scope name cannot contain spaces.
+ Le nom de la portée ne peut pas contenir d'espace.
+
+
+
+ This client application is not allowed to use the authorization endpoint.
+ La aplicación de cliente no esta permitida a utilizar el destino de autorización.
+
+
+
+ The client application is not allowed to use the authorization code flow.
+ La aplicación de cliente no esta permitida a utilizar el flujo de código de autorización.
+
+
+
+ The client application is not allowed to use the implicit flow.
+ La aplicación de cliente no esta permitida a utilizar el flujo implícito.
+
+
+
+ The client application is not allowed to use the hybrid flow.
+ La aplicación de cliente no esta permitida a utilizar el flujo híbrido.
+
+
+
+ This client application is not allowed to use the specified scope.
+ La aplicación de cliente no esta permitida a utilizar el scope provisto.
+
+
+
+ The specified '{0}' is invalid.
+ El '{0}' provisto no es válida.
+
+
+
+ The '{0}' parameter is not valid for this client application.
+ El parámetro '{0}' no es válido para esta aplicación de cliente.
+
+
+
+ The '{0}' parameter required for this client application is missing.
+ Flata el parámetro obligatorio '{0}' para esta aplicación de cliente.
+
+
+
+ The specified client credentials are invalid.
+ Las credenciales del cliente provista no son válidas.
+
+
+
+ This client application is not allowed to use the device endpoint.
+ La aplicación de cliente no esta permitida a utilizar el destino de dispositivo.
+
+
+
+ The '{0}' and '{1}' parameters are required when using the client credentials grant.
+ Los parámetros '{0}' y '{1}' son obligatorios cuando la concesión de credenciales de cliente es utilizada.
+
+
+
+ The '{0}' parameter is required when using the device code grant.
+ El parámetro '{0}' es obligatorios cuando la concesion de código de dispositivo es utlizada.
+
+
+
+ The mandatory '{0}' and/or '{1}' parameters are missing.
+ Faltan los paramétros obligatorios '{0}' y/o '{1}'.
+
+
+
+ A scope with the same name already exists.
+ Un scope con el mismo nombre ya existe.
+
+
+
+ This client application is not allowed to use the token endpoint.
+ La aplicación de cliente no esta permitida a utilizar el destino de token.
+
+
+
+ This client application is not allowed to use the specified grant type.
+ La aplicación de cliente no esta permitida a utilizar el tipo de concesion especificada.
+
+
+
+ The client application is not allowed to use the '{0}' scope.
+ La aplicación de cliente no esta permitida a utilizar la concesion '{0}'.
+
+
+
+ The specified authorization code cannot be used without sending a client identifier.
+ El código de autorización provisto no puede ser utilizado sin enviar un identificador de cliente.
+
+
+
+ The specified device code cannot be used without sending a client identifier.
+ El código de dispositivo provisto no puede ser utilizado sin enviar un identificador de cliente.
+
+
+
+ The specified refresh token cannot be used without sending a client identifier.
+ El token de actualización provisto no puede ser utilizado sin enviar un identificador de cliente.
+
+
+
+ The specified authorization code cannot be used by this client application.
+ El código de autorización provisto no puede ser utilizado por ésta aplicación de cliente.
+
+
+
+ The specified device code cannot be used by this client application.
+ El código de dispositivo provisto no puede ser utilizado por ésta aplicación de cliente.
+
+
+
+ The specified refresh token cannot be used by this client application.
+ El código de actualización provisto no puede ser utilizado por ésta aplicación de cliente.
+
+
+
+ The specified '{0}' parameter doesn't match the client redirection address the authorization code was initially sent to.
+ El parámetro '{0}' no concuerda con la dirección de redireccionamiento de cliente inicialmente provista en el código de autorización.
+
+
+
+ The '{0}' parameter cannot be used when no '{1}' was specified in the authorization request.
+ El parámetro '{0}' no puede ser utilizado cuando '{1}' fue especificado en la petición de autorizacion..
+
+
+
+ The '{0}' parameter is not valid in this context.
+ El parámetro '{0}' no es válido en este contexto.
+
+
+
+ This client application is not allowed to use the introspection endpoint.
+ La aplicación de cliente no esta permitida a utilizar el destino de introspección
+
+
+
+ The specified token cannot be introspected.
+ El token provisto no se puede introspectar.
+
+
+
+ The client application is not allowed to introspect the specified token.
+ La aplicación de cliente no está permitida a introspectar el token provisto.
+
+
+
+ This client application is not allowed to use the revocation endpoint.
+ La aplicación de cliente no está permitida a utilizar el destino de revocación.
+
+
+
+ This token cannot be revoked.
+ Este token no puede ser revocado.
+
+
+
+ The client application is not allowed to revoke the specified token.
+ La aplicación de cliente no esta permitida a revocar el token provisto.
+
+
+
+ The mandatory '{0}' header is missing.
+ Falta el encabezamiento obligatorio '{0}'.
+
+
+
+ The specified '{0}' header is invalid.
+ El encabezamiento '{0}' no es válido.
+
+
+
+ This server only accepts HTTPS requests.
+ Este servidor solo soporta peticiones HTTPS.
+
+
+
+ The specified HTTP method is not valid.
+ El método HTTP provisto no es válido.
+
+
+
+ A token with the same reference identifier already exists.
+ Un token con la misma referencia identificatoria ya existe.
+
+
+
+ The token type cannot be null or empty.
+ El tipo de token no puede ser ni null ni vacío.
+
+
+
+ Multiple client credentials cannot be specified.
+ No se pueden especificar multiples credenciales de cliente.
+
+
+
+ The issuer associated to the specified token is not valid.
+ El emisor asociado al token especificado no es válido.
+
+
+
+ The specified token is not of the expected type.
+ El token especificado no es del tipo esperado.
+
+
+
+ The signing key associated to the specified token was not found.
+ No se encontró la clave de firma asociada al token especificado.
+
+
+
+ The signature associated to the specified token is not valid.
+ La firma asociada al token especificado no es válida.
+
+
+
+ This resource server is currently unavailable.
+ Este servidor de recursos no está disponible actualmente.
+
+
+
+ The specified token doesn't contain any audience.
+ El token especificado no contiene ninguna audiencia.
+
+
+
+ The specified token cannot be used with this resource server.
+ El token especificado no se puede utilizar con este servidor de recursos.
+
+
+
+ The user represented by the token is not allowed to perform the requested action.
+ El usuario representado por el token no puede realizar la acción solicitada.
+
+
+
+ No issuer could be found in the server configuration.
+ No se pudo encontrar ningún emisor en la configuración del servidor.
+
+
+
+ A server configuration containing an invalid issuer was returned.
+ La respuesta de la configuración de servidor contiene un emisor inválido.
+
+
+
+ The issuer returned in the server configuration is not valid.
+ El emisor devuelto en la configuración del servidor no es válido.
+
+
+
+ No JWKS endpoint could be found in the server configuration.
+ No se pudo encontrar ningún destino JWKS en la configuración del servidor.
+
+
+
+ A server configuration containing an invalid JWKS endpoint URL was returned.
+ La respuesta de la configuración de servidor contiene una URL de destino JWKS inválida.
+
+
+
+ A server configuration containing an invalid introspection endpoint URL was returned.
+ La respuesta de la configuración de servidor contiene una URL de destino de introspección inválida.
+
+
+
+ The JWKS document didn't contain a valid '{0}' node with at least one key.
+ El documento JWKS no contenía un nodo '{0}' válido con al menos una clave.
+
+
+
+ A JWKS response containing an unsupported key was returned.
+ La clave contenida en la respuesta JWKS no está soportada.
+
+
+
+ A JWKS response containing an invalid key was returned.
+ La clave contenida en la respuesta JWKS es inválida.
+
+
+
+ The mandatory '{0}' parameter couldn't be found in the introspection response.
+ No se pudo encontrar el parámetro obligatorio '{0}' en la respuesta de introspección.
+
+
+
+ The token was rejected by the remote authentication server.
+ El token fue rechazado por el servidor de autenticación remoto.
+
+
+
+ The '{0}' claim is malformed or isn't of the expected type.
+ La afirmación "{0}" tiene un formato incorrecto o no es del tipo esperado.
+
+
+
+ An introspection response containing a malformed issuer was returned.
+ La respuesta de introspección contiene un emisor con un formato incorrecto.
+
+
+
+ The issuer returned in the introspection response is not valid.
+ El emisor devuelto en la respuesta de introspección no es válido.
+
+
+
+ The type of the introspected token doesn't match the expected type.
+ El tipo de token introspectado no coincide con el tipo esperado.
+
+
+
+ An application with the same client identifier already exists.
+ Ya existe una aplicación con el mismo identificador de cliente.
+
+
+
+ Only confidential, hybrid or public applications are supported by the default application manager.
+ El administrador de aplicaciones predeterminado solo admite aplicaciones confidenciales, híbridas o públicas.
+
+
+
+ The client secret cannot be null or empty for a confidential application.
+ El secreto del cliente no puede ser nulo ni vacío para una aplicación confidencial.
+
+
+
+ A client secret cannot be associated with a public application.
+ Un secreto de cliente no se puede asociar a una aplicación pública.
+
+
+
+ Callback URLs cannot contain a fragment.
+ Las URL de retorno no pueden contener un fragmento.
+
+
+
+ The authorization type cannot be null or empty.
+ El tipo de autorización no puede ser nulo ni vacío.
+
+
+
+ The specified authorization type is not supported by the default token manager.
+ El tipo de autorización provisto no es compatible con el administrador de tokens predeterminado.
+
+
+
+ The client type cannot be null or empty.
+ El tipo de cliente no puede ser nulo ni vacío.
+
+
+
+ Callback URLs cannot be null or empty.
+ Las URL de retorno no pueden ser nulas ni vacías.
+
+
+
+ Callback URLs must be valid absolute URLs.
+ Las URL de retorno deben ser URL absolutas válidas.
+
+
+
+ Removes orphaned tokens and authorizations from the database.
+ Elimina tokens y autorizaciones huérfanos de la base de datos.
+
+
+
+ Starts the scheduled task at regular intervals.
+ Inicia la tarea programada en intervalos regulares.
+
+
+
+
+