consolidation of some of the modules, localization fixes, product advisories work, qa work
This commit is contained in:
@@ -1,411 +1,367 @@
|
||||
{
|
||||
"_meta": { "locale": "bg-BG", "namespace": "common", "version": "1.1" },
|
||||
|
||||
"common.error.generic": "Something went wrong.",
|
||||
"common.error.not_found": "The requested resource was not found.",
|
||||
"common.error.entity_not_found": "{0} '{1}' not found.",
|
||||
"common.error.unauthorized": "You do not have permission to perform this action.",
|
||||
"common.error.forbidden": "Access denied.",
|
||||
"common.error.bad_request": "The request is invalid.",
|
||||
"common.error.conflict": "A conflict occurred. The resource may have been modified.",
|
||||
"common.error.timeout": "Request timed out after {0} seconds.",
|
||||
"common.error.server_error": "An internal server error occurred. Please try again later.",
|
||||
"common.error.service_unavailable": "The service is temporarily unavailable.",
|
||||
"common.error.too_many_requests": "Too many requests. Please wait and try again.",
|
||||
"common.error.network": "Network error. Check your connection.",
|
||||
"common.error.body_required": "Request body is required.",
|
||||
"common.error.deserialization_failed": "Failed to deserialize {0}.",
|
||||
"common.error.not_supported": "{0} is not supported.",
|
||||
"common.error.already_exists": "{0} '{1}' already exists.",
|
||||
"common.error.revoked": "{0} '{1}' has been revoked and cannot be used.",
|
||||
"common.error.state_invalid": "{0} '{1}' is not in the expected state. Current state: {2}",
|
||||
|
||||
"common.validation.required": "{0} is required.",
|
||||
"common.validation.invalid": "{0} is invalid.",
|
||||
"common.validation.too_long": "{0} exceeds the maximum length of {1} characters.",
|
||||
"common.validation.too_short": "{0} must be at least {1} characters.",
|
||||
"common.validation.out_of_range": "{0} must be between {1} and {2}.",
|
||||
"common.validation.invalid_format": "{0} has an invalid format.",
|
||||
"common.validation.duplicate": "{0} already exists.",
|
||||
"common.validation.empty_not_allowed": "{0} must not be empty.",
|
||||
"common.validation.empty_after_trim": "{0} must not be empty after trimming.",
|
||||
"common.validation.greater_than_zero": "{0} must be greater than zero.",
|
||||
"common.validation.non_negative": "{0} must be non-negative.",
|
||||
"common.validation.at_least_one": "At least one {0} must be configured.",
|
||||
"common.validation.at_least_n": "{0} must have at least {1} entries.",
|
||||
"common.validation.null_or_empty": "{0} cannot be null or empty.",
|
||||
"common.validation.absolute_uri": "{0} must be an absolute URI.",
|
||||
"common.validation.invalid_regex": "{0} '{1}' is not a valid regular expression.",
|
||||
"common.validation.unknown_value": "{0} '{1}' is not recognized. Allowed values: {2}",
|
||||
"common.validation.max_exceeded": "{0} must be {1} characters or fewer.",
|
||||
|
||||
"common.actions.save": "Save",
|
||||
"common.actions.cancel": "Cancel",
|
||||
"common.actions.delete": "Delete",
|
||||
"common.actions.confirm": "Confirm",
|
||||
"common.actions.submit": "Submit",
|
||||
"common.actions.close": "Close",
|
||||
"common.actions.retry": "Retry",
|
||||
"common.actions.expand": "Expand",
|
||||
"common.actions.collapse": "Collapse",
|
||||
"common.actions.show_more": "Show more",
|
||||
"common.actions.show_less": "Show less",
|
||||
|
||||
"common.status.healthy": "Healthy",
|
||||
"common.status.degraded": "Degraded",
|
||||
"common.status.unavailable": "Unavailable",
|
||||
"common.status.unknown": "Unknown",
|
||||
"common.status.active": "Active",
|
||||
"common.status.inactive": "Inactive",
|
||||
"common.status.pending": "Pending",
|
||||
"common.status.running": "Running",
|
||||
"common.status.completed": "Completed",
|
||||
"common.status.failed": "Failed",
|
||||
"common.status.canceled": "Canceled",
|
||||
"common.status.blocked": "Blocked",
|
||||
|
||||
"common.severity.critical": "Critical",
|
||||
"common.severity.high": "High",
|
||||
"common.severity.medium": "Medium",
|
||||
"common.severity.low": "Low",
|
||||
"common.severity.info": "Info",
|
||||
"common.severity.none": "None",
|
||||
|
||||
"common.time.seconds_ago": "{0} seconds ago",
|
||||
"common.time.minutes_ago": "{0} minutes ago",
|
||||
"common.time.hours_ago": "{0} hours ago",
|
||||
"common.time.days_ago": "{0} days ago",
|
||||
"common.time.just_now": "Just now",
|
||||
|
||||
"common.ui.loading": "Loading...",
|
||||
"common.ui.saving": "Saving...",
|
||||
"common.ui.deleting": "Deleting...",
|
||||
"common.ui.submitting": "Submitting...",
|
||||
"common.ui.no_results": "No results found.",
|
||||
"common.ui.offline": "You are offline.",
|
||||
"common.ui.reconnecting": "Reconnecting...",
|
||||
"common.ui.back_online": "Back online.",
|
||||
|
||||
"auth.dpop.proof_lifetime_invalid": "DPoP proof lifetime must be greater than zero.",
|
||||
"auth.dpop.clock_skew_invalid": "DPoP allowed clock skew must be between 0 seconds and 5 minutes.",
|
||||
"auth.dpop.replay_window_invalid": "DPoP replay window must be greater than or equal to zero.",
|
||||
"auth.dpop.algorithm_required": "At least one allowed DPoP algorithm must be configured.",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "Allowed DPoP algorithms cannot be empty after normalization.",
|
||||
"auth.dpop.options_required": "DPoP options must be provided.",
|
||||
"auth.dpop.nonce_ttl_invalid": "Nonce TTL must be greater than zero.",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "Max issuance per minute must be at least 1.",
|
||||
"auth.dpop.nonce_store_required": "Dpop.Nonce.Store must be specified.",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store must be either 'memory' or 'redis'.",
|
||||
"auth.dpop.nonce_redis_required": "Dpop.Nonce.RedisConnectionString must be provided when using the 'redis' store.",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences must include at least one audience.",
|
||||
"auth.dpop.token_three_segments": "Token must contain three segments.",
|
||||
"auth.dpop.segment_out_of_range": "Segment index out of range.",
|
||||
"auth.dpop.header_decode_failed": "Unable to decode header.",
|
||||
"auth.dpop.header_missing_typ": "DPoP proof missing typ=dpop+jwt header.",
|
||||
"auth.dpop.header_missing_alg": "DPoP proof missing alg header.",
|
||||
"auth.dpop.header_unsupported_alg": "Unsupported DPoP algorithm.",
|
||||
"auth.dpop.header_missing_jwk": "DPoP proof missing jwk header.",
|
||||
"auth.dpop.header_invalid_jwk": "DPoP proof jwk header is invalid.",
|
||||
"auth.dpop.payload_decode_failed": "Unable to decode payload.",
|
||||
"auth.dpop.payload_missing_htm": "DPoP proof missing htm claim.",
|
||||
"auth.dpop.payload_htm_mismatch": "DPoP htm does not match request method.",
|
||||
"auth.dpop.payload_missing_htu": "DPoP proof missing htu claim.",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu does not match request URI.",
|
||||
"auth.dpop.payload_missing_iat": "DPoP proof missing iat claim.",
|
||||
"auth.dpop.payload_missing_jti": "DPoP proof missing jti claim.",
|
||||
"auth.dpop.payload_iat_invalid": "DPoP proof iat claim is not a valid number.",
|
||||
"auth.dpop.nonce_missing": "DPoP proof missing nonce claim.",
|
||||
"auth.dpop.nonce_mismatch": "DPoP nonce mismatch.",
|
||||
"auth.dpop.proof_future": "DPoP proof issued in the future.",
|
||||
"auth.dpop.proof_expired": "DPoP proof expired.",
|
||||
"auth.dpop.signature_failed": "DPoP proof signature validation failed.",
|
||||
"auth.dpop.replay_detected": "DPoP proof already used.",
|
||||
|
||||
"config.authority.schema_version_required": "Authority configuration requires a positive schemaVersion.",
|
||||
"config.authority.issuer_required": "Authority configuration requires an issuer URL.",
|
||||
"config.authority.issuer_absolute": "Authority issuer must be an absolute URI.",
|
||||
"config.authority.issuer_https": "Authority issuer must use HTTPS unless running on a loopback interface.",
|
||||
"config.authority.duplicate_tenant": "Authority configuration contains duplicate tenant identifier '{0}'.",
|
||||
"config.authority.property_greater_than_zero": "Authority configuration requires {0} to be greater than zero.",
|
||||
"config.authority.property_max": "Authority configuration requires {0} to be less than or equal to {1}.",
|
||||
"config.authority.remote_inference_required": "Authority configuration requires at least one advisory AI remote inference profile when remote inference is enabled.",
|
||||
|
||||
"config.tenant.id_required": "Each tenant requires an id (slug).",
|
||||
"config.tenant.id_format": "Tenant id '{0}' must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.project_format": "Tenant '{0}' defines project '{1}' which must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.role_missing_config": "Tenant '{0}' defines role '{1}' without configuration.",
|
||||
"config.tenant.role_scope_required": "Tenant '{0}' role '{1}' must specify at least one scope.",
|
||||
"config.tenant.role_unknown_scope": "Tenant '{0}' role '{1}' references unknown scope '{2}'.",
|
||||
"config.tenant.role_unsupported_attribute": "Tenant '{0}' role '{1}' defines unsupported attribute '{2}'. Allowed attributes: env, owner, business_tier.",
|
||||
"config.tenant.delegation_max_tokens": "Tenant '{0}' delegation maxActiveTokens must be greater than zero when specified.",
|
||||
"config.tenant.remote_inference_disabled": "Tenant remote inference consent cannot be granted when remote inference is disabled.",
|
||||
"config.tenant.remote_inference_consent_version_length": "Tenant remote inference consentVersion must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consented_by_length": "Tenant remote inference consentedBy must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consent_version_required": "Tenant remote inference consent requires consentVersion when consentGranted is true.",
|
||||
"config.tenant.remote_inference_consented_at_required": "Tenant remote inference consent requires consentedAt when consentGranted is true.",
|
||||
|
||||
"config.service_account.id_required": "Delegation service account seeds require an accountId.",
|
||||
"config.service_account.id_format": "Service account id '{0}' must contain lowercase letters, digits, colon, underscore, or hyphen.",
|
||||
"config.service_account.tenant_required": "Service account '{0}' requires a tenant assignment.",
|
||||
"config.service_account.tenant_unknown": "Service account '{0}' references unknown tenant '{1}'.",
|
||||
"config.service_account.scope_required": "Service account '{0}' must specify at least one allowed scope.",
|
||||
"config.service_account.unsupported_attribute": "Service account '{0}' defines unsupported attribute '{1}'. Allowed attributes: env, owner, business_tier.",
|
||||
|
||||
"config.plugin.assembly_required": "Authority plugin '{0}' must define either assemblyName or assemblyPath.",
|
||||
"config.plugin.config_file_required": "Authority plugin '{0}' must define a configFile.",
|
||||
"config.plugin.config_file_missing": "Authority plugin '{0}' specifies configFile '{1}' which does not exist.",
|
||||
"config.plugin.unknown_capability": "Authority plugin '{0}' declares unknown capability '{1}'. Allowed values: password, mfa, clientProvisioning, bootstrap.",
|
||||
"config.plugin.descriptor_null": "Authority plugin descriptor '{0}' is null.",
|
||||
|
||||
"config.delegation.duplicate_account": "Delegation configuration contains duplicate service account id '{0}'.",
|
||||
"config.delegation.quota_max_tokens": "Authority delegation configuration requires {0}.MaxActiveTokens to be greater than zero.",
|
||||
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace must be non-negative.",
|
||||
"config.mtls.audiences_required": "Mtls.EnforceForAudiences must include at least one audience when enabled.",
|
||||
"config.mtls.ca_empty": "Mtls.AllowedCertificateAuthorities entries must not be empty.",
|
||||
"config.mtls.san_types_required": "Mtls.AllowedSanTypes must include at least one entry when enabled.",
|
||||
"config.mtls.subject_patterns_empty": "Mtls.AllowedSubjectPatterns entries must not be empty.",
|
||||
"config.mtls.subject_pattern_invalid": "Mtls.AllowedSubjectPatterns entry '{0}' is not a valid regular expression.",
|
||||
|
||||
"config.signing.key_id_required": "Authority signing configuration requires signing.activeKeyId.",
|
||||
"config.signing.key_path_required": "Authority signing configuration requires signing.keyPath.",
|
||||
"config.signing.jwks_cache_range": "Authority signing configuration requires signing.jwksCacheLifetime to be between 00:00:01 and 01:00:00.",
|
||||
"config.signing.additional_key_id_required": "Additional signing keys require a keyId.",
|
||||
"config.signing.additional_key_path_required": "Signing key '{0}' requires a path.",
|
||||
|
||||
"config.bootstrap.api_key_required": "Authority bootstrap configuration requires an API key when enabled.",
|
||||
"config.bootstrap.idp_required": "Authority bootstrap configuration requires a default identity provider name when enabled.",
|
||||
|
||||
"config.rate_limit.permit_limit": "Authority rate limiting '{0}' requires permitLimit to be greater than zero.",
|
||||
"config.rate_limit.queue_limit": "Authority rate limiting '{0}' queueLimit cannot be negative.",
|
||||
"config.rate_limit.window": "Authority rate limiting '{0}' window must be greater than zero and no more than one hour.",
|
||||
|
||||
"config.storage.connection_required": "Authority storage requires a connection string.",
|
||||
"config.storage.timeout_invalid": "Authority storage command timeout must be greater than zero.",
|
||||
|
||||
"config.ack_token.payload_type_required": "notifications.ackTokens.payloadType must be specified when ack tokens are enabled.",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime must be greater than zero.",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.ack_token.key_id_required": "notifications.ackTokens.activeKeyId must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.key_path_required": "notifications.ackTokens.keyPath must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime must be between 00:00:01 and 01:00:00.",
|
||||
|
||||
"config.exceptions.null_template": "Authority exception routing template entries must not be null.",
|
||||
"config.exceptions.duplicate_template": "Authority exception routing template '{0}' is configured more than once.",
|
||||
"config.exceptions.template_id_required": "Authority exception routing templates require an id.",
|
||||
"config.exceptions.template_route_required": "Authority exception routing template '{0}' requires authorityRouteId.",
|
||||
|
||||
"config.sealed_mode.evidence_path_required": "AirGap.SealedMode.EvidencePath must be provided when enforcement is enabled.",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge must be between 00:00:01 and 7.00:00:00.",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime must be greater than zero and less than or equal to AirGap.SealedMode.MaxEvidenceAge.",
|
||||
|
||||
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts must include at least one host when enabled.",
|
||||
"config.escalation.scope_required": "notifications.escalation.scope must be specified.",
|
||||
|
||||
"config.anti_forgery.audience_required": "vulnerabilityExplorer.workflow.antiForgery.audience must be specified when anti-forgery tokens are enabled.",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime must be greater than zero.",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries must be non-negative.",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength must be greater than zero.",
|
||||
|
||||
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime must be greater than zero when attachment tokens are enabled.",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.attachment.payload_type_required": "vulnerabilityExplorer.attachments.payloadType must be specified when attachment tokens are enabled.",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries must be non-negative.",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength must be greater than zero.",
|
||||
|
||||
"config.api_lifecycle.sunset_after_deprecation": "Legacy auth sunset date must be after the deprecation date.",
|
||||
"config.api_lifecycle.docs_url_format": "Legacy auth documentation URL must be an absolute HTTP or HTTPS URL.",
|
||||
|
||||
"crypto.provider.algorithm_not_supported": "Signing algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.hash_not_supported": "Hash algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.verify_not_supported": "Verification algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.key_not_registered": "Signing key '{0}' is not registered with provider '{1}'.",
|
||||
"crypto.provider.key_algorithm_mismatch": "Signing key '{0}' is registered for algorithm '{1}', not '{2}'.",
|
||||
"crypto.provider.ec_keys_only": "Provider '{0}' only accepts EC signing keys.",
|
||||
"crypto.provider.no_password_hashing": "Provider '{0}' does not expose password hashing capabilities.",
|
||||
"crypto.provider.no_content_hashing": "Provider '{0}' does not support content hashing.",
|
||||
"crypto.provider.no_ephemeral_verification": "Provider '{0}' does not support ephemeral verification.",
|
||||
"crypto.provider.not_signing_capable": "Signing algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.es256_only": "Only ES256 signing keys are currently supported by provider '{0}'.",
|
||||
"crypto.provider.p256_required": "ES256 signing keys must use the NIST P-256 curve.",
|
||||
"crypto.provider.curve_mismatch": "Signing key curve mismatch. Expected curve '{0}' for algorithm '{1}'.",
|
||||
|
||||
"crypto.registry.empty": "At least one crypto provider must be registered.",
|
||||
"crypto.registry.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.registry.signing_not_supported": "Signing algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.hash_not_supported": "Hash algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.verify_not_supported": "Verification algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.active_profile_required": "Active profile is required.",
|
||||
"crypto.registry.profile_not_found": "Profile ID '{0}' is not found in the registry.",
|
||||
"crypto.registry.profile_id_required": "Profile ID cannot be null or empty.",
|
||||
|
||||
"crypto.key.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.key.private_scalar_required": "Private key parameters must include the scalar component.",
|
||||
"crypto.key.verification_only": "This constructor is only for verification-only keys. Set verificationOnly to true.",
|
||||
"crypto.key.public_xy_required": "Public key parameters must include X and Y coordinates.",
|
||||
"crypto.key.private_material_required": "Private key material must be provided.",
|
||||
|
||||
"crypto.hash.algorithm_unsupported": "Unsupported hash algorithm '{0}'.",
|
||||
"crypto.hash.purpose_required": "Purpose cannot be null or empty.",
|
||||
"crypto.hmac.algorithm_unknown": "Unknown HMAC algorithm '{0}'.",
|
||||
"crypto.hmac.algorithm_unsupported": "Unsupported HMAC algorithm '{0}'.",
|
||||
|
||||
"crypto.ecdsa.algorithm_unsupported": "Unsupported ECDSA signing algorithm '{0}'.",
|
||||
"crypto.ecdsa.curve_unsupported": "Unsupported ECDSA curve mapping for algorithm '{0}'.",
|
||||
|
||||
"crypto.digest.required": "Digest is required.",
|
||||
"crypto.digest.prefix_required": "{0} must start with '{1}'.",
|
||||
"crypto.digest.algorithm_unsupported": "Unsupported digest algorithm in '{0}'. Only sha256 is supported.",
|
||||
"crypto.digest.hex_length": "{0} must contain {1} hexadecimal characters.",
|
||||
|
||||
"crypto.password.memory_cost_invalid": "Password hashing memory cost must be greater than zero.",
|
||||
"crypto.password.iterations_invalid": "Password hashing iteration count must be greater than zero.",
|
||||
"crypto.password.parallelism_invalid": "Password hashing parallelism must be greater than zero.",
|
||||
"crypto.password.algorithm_mismatch": "{0} only supports the {1} algorithm.",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 requires a positive iteration count.",
|
||||
|
||||
"crypto.gost.not_der": "Signature is not DER encoded.",
|
||||
"crypto.gost.invalid_der": "Invalid DER structure for GOST signature.",
|
||||
"crypto.gost.raw_length": "Raw GOST signature must be {0} bytes.",
|
||||
"crypto.gost.neither_format": "Signature payload is neither DER nor raw GOST format.",
|
||||
"crypto.gost.coordinate_overflow": "Coordinate exceeds expected length.",
|
||||
|
||||
"crypto.profile.unknown_purpose": "Unknown hash purpose '{0}' in profile '{1}'.",
|
||||
"crypto.compliance.at_least_one_signing": "At least one signing algorithm must be supplied.",
|
||||
"crypto.compliance.at_least_one_hash": "At least one hash algorithm must be supplied.",
|
||||
|
||||
"crypto.ed25519.private_key_size": "Ed25519 private key must be 32 or 64 bytes.",
|
||||
"crypto.ed25519.public_key_size": "Ed25519 public key must be 32 bytes.",
|
||||
"crypto.ed25519.no_hashing": "BouncyCastle Ed25519 provider does not expose hashing capabilities.",
|
||||
"crypto.ed25519.raw_key_required": "Provider '{0}' requires raw Ed25519 private key material.",
|
||||
|
||||
"crypto.sm.no_password_hashing": "SM provider does not expose password hashing.",
|
||||
"crypto.sm.raw_key_required": "SM2 provider requires raw private key bytes (PKCS#8 DER).",
|
||||
"crypto.sm.unsupported_format": "Unsupported SM2 key format. Expect PEM or PKCS#8 DER.",
|
||||
"crypto.sm.disabled": "Provider '{0}' is disabled. Set {1}=1 (or disable RequireEnvironmentGate) to enable software SM2/SM3.",
|
||||
|
||||
"crypto.di.registry_empty": "Crypto provider registry cannot be empty. Configure at least one provider for RU deployments.",
|
||||
"crypto.di.ru_openssl_required": "Linux RU baseline requires provider 'ru.openssl.gost' (set STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 to override explicitly).",
|
||||
"crypto.di.ru_provider_required": "RU Linux baseline is misconfigured: both ru.openssl.gost and ru.pkcs11 are disabled via environment. Enable at least one provider.",
|
||||
"crypto.di.no_plugins_loaded": "No crypto providers were loaded. Check plugin configuration and manifest.",
|
||||
|
||||
"crypto.kms.rotation_via_policy": "{0} rotation must be orchestrated via {1} policies or schedules.",
|
||||
"crypto.kms.revocation_via_policy": "{0} revocation must be managed through {1} APIs or console.",
|
||||
"crypto.kms.public_key_missing_x": "Public key missing X coordinate.",
|
||||
"crypto.kms.public_key_missing_y": "Public key missing Y coordinate.",
|
||||
"crypto.kms.hash_failed": "Failed to hash payload with SHA-256.",
|
||||
"crypto.kms.key_not_found": "Key '{0}' does not exist.",
|
||||
"crypto.kms.key_revoked": "Key '{0}' has been revoked and cannot be rotated.",
|
||||
"crypto.kms.key_revoked_signing": "Key '{0}' is revoked and cannot be used for signing.",
|
||||
"crypto.kms.key_version_not_found": "Key version '{0}' does not exist for key '{1}'.",
|
||||
"crypto.kms.key_no_active_version": "Key '{0}' does not have an active version.",
|
||||
"crypto.kms.key_version_inactive": "Key version '{0}' is not active. Current state: {1}",
|
||||
"crypto.kms.key_no_public_material": "Key '{0}' version '{1}' does not have public key material.",
|
||||
"crypto.kms.algorithm_unsupported": "Algorithm '{0}' is not supported by the file KMS driver.",
|
||||
"crypto.kms.curve_unsupported": "Curve '{0}' is not supported.",
|
||||
"crypto.kms.metadata_failed": "Failed to create or load key metadata.",
|
||||
"crypto.kms.algorithm_mismatch": "Algorithm mismatch. Expected '{0}', received '{1}'.",
|
||||
"crypto.kms.version_exists": "Key version '{0}' already exists for key '{1}'.",
|
||||
"crypto.kms.material_not_found": "Key material for version '{0}' was not found.",
|
||||
"crypto.kms.envelope_deserialize_failed": "Key envelope could not be deserialized.",
|
||||
"crypto.kms.payload_deserialize_failed": "Key payload could not be deserialized.",
|
||||
"crypto.kms.pem_empty": "Public key PEM cannot be empty.",
|
||||
"crypto.kms.no_primary_version": "Crypto key '{0}' does not have an active primary version.",
|
||||
"crypto.kms.es256_only": "Provider '{0}' only supports ES256 signing keys.",
|
||||
"crypto.kms.version_metadata_required": "KMS signing keys must include metadata entry 'kms.version'.",
|
||||
"crypto.kms.missing_public_key": "KMS signing key is missing public key material.",
|
||||
|
||||
"crypto.fido2.curve_unsupported": "Unsupported FIDO2 curve OID '{0}'.",
|
||||
"crypto.fido2.rotation_required": "FIDO2 credential rotation requires new enrolment.",
|
||||
"crypto.fido2.revocation_relying_party": "FIDO2 credential revocation must be managed in the relying party.",
|
||||
"crypto.fido2.missing_x": "FIDO2 public key missing X coordinate.",
|
||||
"crypto.fido2.missing_y": "FIDO2 public key missing Y coordinate.",
|
||||
"crypto.fido2.authenticator_required": "IFido2Authenticator must be registered to use FIDO2 KMS.",
|
||||
|
||||
"crypto.pkcs11.rotation_hsm": "PKCS#11 rotation requires HSM administrative tooling.",
|
||||
"crypto.pkcs11.revocation_hsm": "PKCS#11 revocation must be handled by HSM policies.",
|
||||
"crypto.pkcs11.slot_not_found": "Could not resolve PKCS#11 slot.",
|
||||
"crypto.pkcs11.private_key_not_found": "PKCS#11 private key not found.",
|
||||
"crypto.pkcs11.public_key_not_found": "PKCS#11 public key not found.",
|
||||
"crypto.pkcs11.missing_ec_point": "Public key missing EC point.",
|
||||
"crypto.pkcs11.missing_ec_params": "Public key missing EC parameters.",
|
||||
"crypto.pkcs11.unsupported_point_format": "Unsupported EC point format.",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "Unsupported EC curve OID '{0}'.",
|
||||
"crypto.pkcs11.curve_unsupported": "Unsupported EC curve '{0}'.",
|
||||
|
||||
"common.provcache.sbom_hash_required": "SBOM hash cannot be null or empty.",
|
||||
"common.provcache.fetch_url_absolute": "Lazy fetch base URL must be absolute.",
|
||||
"common.provcache.fetch_url_no_userinfo": "Lazy fetch base URL must not include user info.",
|
||||
"common.provcache.fetch_url_host_required": "Lazy fetch base URL must include a host.",
|
||||
"common.provcache.fetch_url_scheme_invalid": "Lazy fetch base URL scheme '{0}' is not allowed.",
|
||||
"common.provcache.fetch_url_host_invalid": "Lazy fetch base URL host '{0}' is not allowlisted.",
|
||||
"common.provcache.no_chunks_provided": "No chunks provided.",
|
||||
"common.provcache.bundle_deserialize_failed": "Failed to deserialize bundle.",
|
||||
"common.provcache.signer_not_configured": "Signer is not configured.",
|
||||
"common.provcache.signing_requested_no_signer": "Signing requested but no signer is configured.",
|
||||
"common.provcache.cache_entry_not_found": "Cache entry not found for VeriKey: {0}",
|
||||
"common.provcache.chunk_manifest_not_found": "Chunk manifest not found for proof root: {0}",
|
||||
"common.provcache.http_timeout_invalid": "Lazy fetch HTTP timeout must be a positive, non-infinite duration.",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher requires a BaseAddress on the HTTP client.",
|
||||
"common.provcache.merkle_root_mismatch": "Merkle root mismatch. Expected: {0}, Computed: {1}",
|
||||
"common.provcache.chunk_verification_failed": "Chunk {0} verification failed. Expected hash: {1}",
|
||||
"common.provcache.artifact_reference_required": "Artifact reference is required.",
|
||||
"common.provcache.artifact_digest_required": "Artifact digest is required.",
|
||||
"common.provcache.decision_digest_required": "DecisionDigest is required.",
|
||||
"common.provcache.decision_digest_verikey_required": "DecisionDigest.VeriKey is required.",
|
||||
"common.provcache.digest_empty": "Digest cannot be empty.",
|
||||
"common.provcache.time_window_required": "Time window cannot be null or empty.",
|
||||
"common.provcache.vex_hash_required": "VEX hash set hash cannot be null or empty.",
|
||||
"common.provcache.policy_hash_required": "Policy hash cannot be null or empty.",
|
||||
"common.provcache.source_hash_required": "Source hash cannot be null or empty.",
|
||||
"common.provcache.signer_set_hash_required": "Signer set hash cannot be null or empty.",
|
||||
|
||||
"common.evidence.toolchain_required": "ToolChain must be set before building index.",
|
||||
"common.evidence.deserialization_failed": "Failed to deserialize evidence index.",
|
||||
"common.evidence.verdict_deserialization_failed": "Failed to deserialize verdict.",
|
||||
"common.evidence.inputs_json_required": "JSON cannot be null or empty.",
|
||||
"common.evidence.inputs_deserialization_failed": "Failed to deserialize pinned scoring inputs.",
|
||||
"common.evidence.bundle_alert_id_required": "AlertId is required",
|
||||
"common.evidence.bundle_artifact_id_required": "ArtifactId is required",
|
||||
"common.evidence.pdf_export_requires_config": "PDF export requires additional configuration",
|
||||
"common.evidence.invalid_uri_format": "Invalid evidence URI format: {0}. Expected stella://type/path",
|
||||
"common.evidence.invalid_uri_missing_path": "Invalid evidence URI format: {0}. Missing path.",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver cannot resolve evidence type: {0}",
|
||||
"common.evidence.schema_resource_not_found": "Schema resource not found: {0}",
|
||||
"common.evidence.schema_resource_not_available": "Schema resource not available: {0}",
|
||||
"common.evidence.provenance_deserialize_failed": "Failed to deserialize provenance for evidence {0}",
|
||||
"common.evidence.bundle_deserialize_failed": "Failed to deserialize verdict bundle",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "Failed to deserialize delta verdict",
|
||||
|
||||
"common.canonicalization.value_empty_after_trim": "Value must not be empty after trimming.",
|
||||
"common.canonicalization.deserialize_failed": "Failed to deserialize {0}",
|
||||
"common.canonicalization.datetime_value_null": "DateTimeOffset value is null.",
|
||||
"common.canonicalization.dict_key_null": "Dictionary key cannot be null.",
|
||||
|
||||
"common.audit.replay_token_value_empty": "Token value cannot be empty.",
|
||||
"common.audit.replay_token_empty": "Token cannot be empty.",
|
||||
"common.audit.replay_token_format_invalid": "Invalid replay token format: {0}",
|
||||
"common.audit.replay_token_version_invalid": "Invalid replay token version: {0}",
|
||||
"common.audit.replay_token_expiration_invalid": "Invalid expiration timestamp in replay token: {0}",
|
||||
"common.audit.replay_token_duplicate_context_key": "AdditionalContext contains duplicate key after normalization: '{0}'.",
|
||||
|
||||
"common.artifact.uri_format_invalid": "Invalid URI format: {0}",
|
||||
"common.artifact.uri_scheme_not_supported": "URI scheme not supported: {0}",
|
||||
"common.artifact.file_not_accessible": "File not accessible: {0}",
|
||||
"common.artifact.file_too_large": "File too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.uri_not_accessible": "URI not accessible: {0} returned {1}",
|
||||
"common.artifact.content_too_large": "Content too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.fetch_failed": "Failed to fetch from {0}: {1}",
|
||||
|
||||
"common.delta_verdict.artifact_ref_required": "Artifact reference is required.",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "Unsupported signing algorithm: {0}",
|
||||
"common.delta_verdict.hmac_secret_required": "HMAC signing requires a base64 secret.",
|
||||
|
||||
"common.eventing.no_entry_assembly": "No entry assembly found",
|
||||
|
||||
"auth.persistence.deserialize_inputs_failed": "Failed to deserialize inputs",
|
||||
"auth.persistence.deserialize_result_failed": "Failed to deserialize result",
|
||||
"auth.persistence.revocation_sequence_mismatch": "Revocation export sequence mismatch. Expected {0}, current {1}.",
|
||||
"auth.persistence.revocation_update_rejected": "Revocation export state update rejected. Expected sequence {0}."
|
||||
"_meta": {
|
||||
"locale": "bg-BG",
|
||||
"namespace": "common",
|
||||
"version": "1.1"
|
||||
},
|
||||
"common.error.generic": "Нещо се обърка.",
|
||||
"common.error.not_found": "Заявеният ресурс не беше намерен.",
|
||||
"common.error.entity_not_found": "{0} '{1}' не е намерен(о).",
|
||||
"common.error.unauthorized": "Нямате права да извършите това действие.",
|
||||
"common.error.forbidden": "Достъпът е отказан.",
|
||||
"common.error.bad_request": "Заявката е невалидна.",
|
||||
"common.error.conflict": "Възникна конфликт. Ресурсът може да е бил променен.",
|
||||
"common.error.timeout": "Времето за заявката изтече след {0} секунди.",
|
||||
"common.error.server_error": "Възникна вътрешна грешка в сървъра. Моля, опитайте отново по-късно.",
|
||||
"common.error.service_unavailable": "Услугата е временно недостъпна.",
|
||||
"common.error.too_many_requests": "Твърде много заявки. Моля, изчакайте и опитайте отново.",
|
||||
"common.error.network": "Мрежова грешка. Проверете връзката си.",
|
||||
"common.error.body_required": "Тялото на заявката е задължително.",
|
||||
"common.error.deserialization_failed": "Неуспешна десериализация на {0}.",
|
||||
"common.error.not_supported": "{0} не се поддържа.",
|
||||
"common.error.already_exists": "{0} '{1}' вече съществува.",
|
||||
"common.error.revoked": "{0} '{1}' е оттеглен(о) и не може да бъде използван(о).",
|
||||
"common.error.state_invalid": "{0} '{1}' не е в очакваното състояние. Текущо състояние: {2}",
|
||||
"common.validation.required": "{0} е задължително.",
|
||||
"common.validation.invalid": "{0} е невалидно.",
|
||||
"common.validation.too_long": "{0} надвишава максималната дължина от {1} символа.",
|
||||
"common.validation.too_short": "{0} трябва да е поне {1} символа.",
|
||||
"common.validation.out_of_range": "{0} трябва да е между {1} и {2}.",
|
||||
"common.validation.invalid_format": "{0} е с невалиден формат.",
|
||||
"common.validation.duplicate": "{0} вече съществува.",
|
||||
"common.validation.empty_not_allowed": "{0} не трябва да е празно.",
|
||||
"common.validation.empty_after_trim": "{0} не трябва да е празно след премахване на интервали.",
|
||||
"common.validation.greater_than_zero": "{0} трябва да е по-голямо от нула.",
|
||||
"common.validation.non_negative": "{0} трябва да е неотрицателно.",
|
||||
"common.validation.at_least_one": "Трябва да е конфигуриран поне един {0}.",
|
||||
"common.validation.at_least_n": "{0} трябва да съдържа поне {1} елемента.",
|
||||
"common.validation.null_or_empty": "{0} не може да е null или празно.",
|
||||
"common.validation.absolute_uri": "{0} трябва да е абсолютен URI.",
|
||||
"common.validation.invalid_regex": "{0} '{1}' не е валиден регулярен израз.",
|
||||
"common.validation.unknown_value": "{0} '{1}' не е разпознато. Позволени стойности: {2}",
|
||||
"common.validation.max_exceeded": "{0} трябва да е {1} символа или по-малко.",
|
||||
"common.actions.save": "Запази",
|
||||
"common.actions.cancel": "Отказ",
|
||||
"common.actions.delete": "Изтрий",
|
||||
"common.actions.confirm": "Потвърди",
|
||||
"common.actions.submit": "Изпрати",
|
||||
"common.actions.close": "Затвори",
|
||||
"common.actions.retry": "Опитай отново",
|
||||
"common.actions.expand": "Разгъни",
|
||||
"common.actions.collapse": "Свий",
|
||||
"common.actions.show_more": "Покажи още",
|
||||
"common.actions.show_less": "Покажи по-малко",
|
||||
"common.status.healthy": "Изправно",
|
||||
"common.status.degraded": "Влошено",
|
||||
"common.status.unavailable": "Недостъпно",
|
||||
"common.status.unknown": "Неизвестно",
|
||||
"common.status.active": "Активно",
|
||||
"common.status.inactive": "Неактивно",
|
||||
"common.status.pending": "Изчакващо",
|
||||
"common.status.running": "В изпълнение",
|
||||
"common.status.completed": "Завършено",
|
||||
"common.status.failed": "Неуспешно",
|
||||
"common.status.canceled": "Отказано",
|
||||
"common.status.blocked": "Блокирано",
|
||||
"common.severity.critical": "Критично",
|
||||
"common.severity.high": "Висока",
|
||||
"common.severity.medium": "Средна",
|
||||
"common.severity.low": "Ниска",
|
||||
"common.severity.info": "Инфо",
|
||||
"common.severity.none": "Няма",
|
||||
"common.time.seconds_ago": "преди {0} секунди",
|
||||
"common.time.minutes_ago": "преди {0} минути",
|
||||
"common.time.hours_ago": "преди {0} часа",
|
||||
"common.time.days_ago": "преди {0} дни",
|
||||
"common.time.just_now": "Току-що",
|
||||
"common.ui.loading": "Зареждане...",
|
||||
"common.ui.saving": "Запазване...",
|
||||
"common.ui.deleting": "Изтриване...",
|
||||
"common.ui.submitting": "Изпращане...",
|
||||
"common.ui.no_results": "Няма намерени резултати.",
|
||||
"common.ui.offline": "Офлайн сте.",
|
||||
"common.ui.reconnecting": "Повторно свързване...",
|
||||
"common.ui.back_online": "Отново онлайн.",
|
||||
"auth.dpop.proof_lifetime_invalid": "Животът на DPoP proof трябва да е по-голям от нула.",
|
||||
"auth.dpop.clock_skew_invalid": "Позволеният clock skew за DPoP трябва да е между 0 секунди и 5 минути.",
|
||||
"auth.dpop.replay_window_invalid": "Прозорецът за DPoP replay трябва да е по-голям или равен на нула.",
|
||||
"auth.dpop.algorithm_required": "Трябва да е конфигуриран поне един позволен DPoP алгоритъм.",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "Позволените DPoP алгоритми не могат да са празни след нормализация.",
|
||||
"auth.dpop.options_required": "DPoP options трябва да бъдат предоставени.",
|
||||
"auth.dpop.nonce_ttl_invalid": "TTL на nonce трябва да е по-голям от нула.",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "Максималният брой издавания за минута трябва да е поне 1.",
|
||||
"auth.dpop.nonce_store_required": "Dpop.Nonce.Store трябва да бъде посочен.",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store трябва да е 'memory' или 'redis'.",
|
||||
"auth.dpop.nonce_redis_required": "Dpop.Nonce.RedisConnectionString трябва да бъде предоставен при използване на 'redis' store.",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences трябва да включва поне една аудитория.",
|
||||
"auth.dpop.token_three_segments": "Токенът трябва да съдържа три сегмента.",
|
||||
"auth.dpop.segment_out_of_range": "Индексът на сегмента е извън обхват.",
|
||||
"auth.dpop.header_decode_failed": "Неуспешно декодиране на header.",
|
||||
"auth.dpop.header_missing_typ": "В DPoP proof липсва typ=dpop+jwt header.",
|
||||
"auth.dpop.header_missing_alg": "В DPoP proof липсва alg header.",
|
||||
"auth.dpop.header_unsupported_alg": "Неподдържан DPoP алгоритъм.",
|
||||
"auth.dpop.header_missing_jwk": "В DPoP proof липсва jwk header.",
|
||||
"auth.dpop.header_invalid_jwk": "jwk header в DPoP proof е невалиден.",
|
||||
"auth.dpop.payload_decode_failed": "Неуспешно декодиране на payload.",
|
||||
"auth.dpop.payload_missing_htm": "В DPoP proof липсва htm claim.",
|
||||
"auth.dpop.payload_htm_mismatch": "DPoP htm не съвпада с метода на заявката.",
|
||||
"auth.dpop.payload_missing_htu": "В DPoP proof липсва htu claim.",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu не съвпада с URI на заявката.",
|
||||
"auth.dpop.payload_missing_iat": "В DPoP proof липсва iat claim.",
|
||||
"auth.dpop.payload_missing_jti": "В DPoP proof липсва jti claim.",
|
||||
"auth.dpop.payload_iat_invalid": "iat claim в DPoP proof не е валидно число.",
|
||||
"auth.dpop.nonce_missing": "В DPoP proof липсва nonce claim.",
|
||||
"auth.dpop.nonce_mismatch": "Несъответствие на DPoP nonce.",
|
||||
"auth.dpop.proof_future": "DPoP proof е издаден в бъдещето.",
|
||||
"auth.dpop.proof_expired": "DPoP proof е с изтекла валидност.",
|
||||
"auth.dpop.signature_failed": "Проверката на подписа на DPoP proof е неуспешна.",
|
||||
"auth.dpop.replay_detected": "DPoP proof вече е използван.",
|
||||
"config.authority.schema_version_required": "Конфигурацията на орган изисква положителна schemaVersion.",
|
||||
"config.authority.issuer_required": "Конфигурацията на орган изисква URL адрес на издател.",
|
||||
"config.authority.issuer_absolute": "Издателят на органа трябва да бъде абсолютен URI.",
|
||||
"config.authority.issuer_https": "Издателят на органа трябва да използва HTTPS, освен ако не работи на интерфейс за обратна връзка.",
|
||||
"config.authority.duplicate_tenant": "Конфигурацията на authority съдържа дублиран идентификатор на тенант '{0}'.",
|
||||
"config.authority.property_greater_than_zero": "Конфигурацията на пълномощията изисква {0} да бъде по-голямо от нула.",
|
||||
"config.authority.property_max": "Конфигурацията на пълномощията изисква {0} да бъде по-малко или равно на {1}.",
|
||||
"config.authority.remote_inference_required": "Конфигурацията на пълномощията изисква поне един консултативен профил за дистанционен извод на AI, когато е активиран отдалечен извод.",
|
||||
"config.tenant.id_required": "Всеки тенант изисква идентификатор (slug).",
|
||||
"config.tenant.id_format": "Идентификаторът на тенанта '{0}' трябва да съдържа само малки букви, цифри и тире.",
|
||||
"config.tenant.project_format": "Тенантът '{0}' дефинира проект '{1}', който трябва да съдържа само малки букви, цифри и тире.",
|
||||
"config.tenant.role_missing_config": "Тенантът '{0}' дефинира роля '{1}' без конфигурация.",
|
||||
"config.tenant.role_scope_required": "Ролята '{1}' на тенанта '{0}' трябва да посочва поне един обхват.",
|
||||
"config.tenant.role_unknown_scope": "Ролята '{1}' на тенанта '{0}' препраща към неизвестен обхват '{2}'.",
|
||||
"config.tenant.role_unsupported_attribute": "Ролята '{1}' на тенанта '{0}' дефинира неподдържан атрибут '{2}'. Разрешени атрибути: env, owner, business_tier.",
|
||||
"config.tenant.delegation_max_tokens": "За тенанта '{0}' delegation.maxActiveTokens трябва да е по-голямо от нула, когато е зададено.",
|
||||
"config.tenant.remote_inference_disabled": "Съгласието за отдалечено извеждане на тенанта не може да бъде предоставено, когато отдалеченото извеждане е изключено.",
|
||||
"config.tenant.remote_inference_consent_version_length": "Полето consentVersion за отдалечено извеждане на тенанта трябва да е до {0} знака.",
|
||||
"config.tenant.remote_inference_consented_by_length": "Полето consentedBy за отдалечено извеждане на тенанта трябва да е до {0} знака.",
|
||||
"config.tenant.remote_inference_consent_version_required": "Съгласието за отдалечено извеждане на тенанта изисква consentVersion, когато consentGranted=true.",
|
||||
"config.tenant.remote_inference_consented_at_required": "Съгласието за отдалечено извеждане на тенанта изисква consentedAt, когато consentGranted=true.",
|
||||
"config.service_account.id_required": "Изходните стойности на акаунта в услугата за делегиране изискват accountId.",
|
||||
"config.service_account.id_format": "Идентификаторът на акаунта за услуга '{0}' трябва да съдържа малки букви, цифри, двоеточие, долна черта или тире.",
|
||||
"config.service_account.tenant_required": "Служебният акаунт '{0}' изисква присвояване към тенант.",
|
||||
"config.service_account.tenant_unknown": "Служебният акаунт '{0}' препраща към неизвестен тенант '{1}'.",
|
||||
"config.service_account.scope_required": "Сервизният акаунт '{0}' трябва да посочи поне един разрешен обхват.",
|
||||
"config.service_account.unsupported_attribute": "Сервизният акаунт '{0}' дефинира неподдържан атрибут '{1}'. Позволени атрибути: env, owner, business_tier.",
|
||||
"config.plugin.assembly_required": "Плъгинът за пълномощия '{0}' трябва да дефинира или assemblyName, или assemblyPath.",
|
||||
"config.plugin.config_file_required": "Плъгинът за пълномощия '{0}' трябва да дефинира configFile.",
|
||||
"config.plugin.config_file_missing": "Плъгинът за пълномощия '{0}' посочва configFile '{1}', който не съществува.",
|
||||
"config.plugin.unknown_capability": "Плъгинът за пълномощия '{0}' декларира неизвестна възможност '{1}'. Позволени стойности: парола, mfa, clientProvisioning, bootstrap.",
|
||||
"config.plugin.descriptor_null": "Дескрипторът на приставката за пълномощия '{0}' е нула.",
|
||||
"config.delegation.duplicate_account": "Конфигурацията за делегиране съдържа дублиран идентификатор на акаунт за услуга '{0}'.",
|
||||
"config.delegation.quota_max_tokens": "Конфигурацията за делегиране на правомощия изисква {0}.MaxActiveTokens да бъде по-голямо от нула.",
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace трябва да е неотрицателно.",
|
||||
"config.mtls.audiences_required": "Mtls.EnforceForAudiences трябва да включва поне една аудитория, когато е активиран.",
|
||||
"config.mtls.ca_empty": "Записите Mtls.AllowedCertificateAuthorities не трябва да са празни.",
|
||||
"config.mtls.san_types_required": "Mtls.AllowedSanTypes трябва да включва поне един запис, когато е активиран.",
|
||||
"config.mtls.subject_patterns_empty": "Записите Mtls.AllowedSubjectPatterns не трябва да са празни.",
|
||||
"config.mtls.subject_pattern_invalid": "Mtls.AllowedSubjectPatterns запис '{0}' не е валиден регулярен израз.",
|
||||
"config.signing.key_id_required": "Конфигурацията за подписване на орган изисква signing.activeKeyId.",
|
||||
"config.signing.key_path_required": "Конфигурацията за подписване на орган изисква signing.keyPath.",
|
||||
"config.signing.jwks_cache_range": "Конфигурацията за подписване на орган изисква signing.jwksCacheLifetime да бъде между 00:00:01 и 01:00:00.",
|
||||
"config.signing.additional_key_id_required": "Допълнителните ключове за подписване изискват keyId.",
|
||||
"config.signing.additional_key_path_required": "Ключът за подписване '{0}' изисква път.",
|
||||
"config.bootstrap.api_key_required": "Конфигурацията за първоначално зареждане на орган изисква API ключ, когато е активиран.",
|
||||
"config.bootstrap.idp_required": "Конфигурацията за стартиране на орган изисква име на доставчик на идентичност по подразбиране, когато е активирано.",
|
||||
"config.rate_limit.permit_limit": "Ограничаването на степента на правомощия '{0}' изисква permitLimit да бъде по-голямо от нула.",
|
||||
"config.rate_limit.queue_limit": "Ограничаване на степента на правомощия '{0}' queueLimit не може да бъде отрицателно.",
|
||||
"config.rate_limit.window": "Прозорецът '{0}' за ограничаване на степента на правомощия трябва да бъде по-голям от нула и не повече от един час.",
|
||||
"config.storage.connection_required": "Съхранението на пълномощията изисква низ за връзка.",
|
||||
"config.storage.timeout_invalid": "Времето за изчакване на командата за съхранение на пълномощия трябва да е по-голямо от нула.",
|
||||
"config.ack_token.payload_type_required": "notifications.ackTokens.payloadType трябва да бъде посочен, когато ack токените са активирани.",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime трябва да е по-голямо от нула.",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime трябва да е по-голямо от нула и по-голямо или равно на defaultLifetime.",
|
||||
"config.ack_token.key_id_required": "notifications.ackTokens.activeKeyId трябва да бъде предоставен, когато токените за потвърждение са активирани.",
|
||||
"config.ack_token.key_path_required": "notifications.ackTokens.keyPath трябва да бъде предоставен, когато токените за потвърждение са активирани.",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime трябва да е между 00:00:01 и 01:00:00.",
|
||||
"config.exceptions.null_template": "Записите в шаблона за маршрутизиране на изключение от органа не трябва да са нула.",
|
||||
"config.exceptions.duplicate_template": "Шаблонът за маршрутизиране на изключение от органа '{0}' е конфигуриран повече от веднъж.",
|
||||
"config.exceptions.template_id_required": "Шаблоните за маршрутизиране на изключение от орган изискват идентификатор.",
|
||||
"config.exceptions.template_route_required": "Шаблонът за маршрутизиране на изключения от правомощията '{0}' изисква AuthorityRouteId.",
|
||||
"config.sealed_mode.evidence_path_required": "AirGap.SealedMode.EvidencePath трябва да бъде предоставен, когато прилагането е разрешено.",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge трябва да е между 00:00:01 и 7.00:00:00.",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime трябва да бъде по-голямо от нула и по-малко или равно на AirGap.SealedMode.MaxEvidenceAge.",
|
||||
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts трябва да включва поне един хост, когато е активиран.",
|
||||
"config.escalation.scope_required": "Трябва да се посочи notifications.escalation.scope.",
|
||||
"config.anti_forgery.audience_required": "vulnerabilityExplorer.workflow.antiForgery.audience трябва да бъде посочен, когато токените против фалшифициране са активирани.",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime трябва да е по-голямо от нула.",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime трябва да е по-голямо от нула и по-голямо или равно на defaultLifetime.",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries трябва да е неотрицателно.",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength трябва да е по-голямо от нула.",
|
||||
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime трябва да е по-голямо от нула, когато маркерите за прикачване са активирани.",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime трябва да е по-голямо от нула и по-голямо или равно на defaultLifetime.",
|
||||
"config.attachment.payload_type_required": "vulnerabilityExplorer.attachments.payloadType трябва да се посочи, когато маркерите за прикачен файл са активирани.",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries трябва да е неотрицателно.",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength трябва да е по-голямо от нула.",
|
||||
"config.api_lifecycle.sunset_after_deprecation": "Датата на прекратяване на наследеното удостоверяване трябва да е след датата на оттегляне.",
|
||||
"config.api_lifecycle.docs_url_format": "URL адресът на наследената документация за удостоверяване трябва да бъде абсолютен HTTP или HTTPS URL адрес.",
|
||||
"crypto.provider.algorithm_not_supported": "Алгоритъмът за подписване '{0}' не се поддържа от доставчика '{1}'.",
|
||||
"crypto.provider.hash_not_supported": "Хеш алгоритъмът '{0}' не се поддържа от доставчика '{1}'.",
|
||||
"crypto.provider.verify_not_supported": "Алгоритъмът за проверка '{0}' не се поддържа от доставчика '{1}'.",
|
||||
"crypto.provider.key_not_registered": "Ключът за подписване '{0}' не е регистриран при доставчика '{1}'.",
|
||||
"crypto.provider.key_algorithm_mismatch": "Ключът за подписване '{0}' е регистриран за алгоритъма '{1}', а не за '{2}'.",
|
||||
"crypto.provider.ec_keys_only": "Доставчикът '{0}' приема само EC ключове за подписване.",
|
||||
"crypto.provider.no_password_hashing": "Доставчикът '{0}' не излага възможности за хеширане на пароли.",
|
||||
"crypto.provider.no_content_hashing": "Доставчикът '{0}' не поддържа хеширане на съдържание.",
|
||||
"crypto.provider.no_ephemeral_verification": "Доставчикът '{0}' не поддържа ефимерна проверка.",
|
||||
"crypto.provider.not_signing_capable": "Алгоритъмът за подписване '{0}' не се поддържа от доставчика '{1}'.",
|
||||
"crypto.provider.es256_only": "Понастоящем от доставчика '{0}' се поддържат само ключове за подписване ES256.",
|
||||
"crypto.provider.p256_required": "Ключовете за подписване ES256 трябва да използват кривата NIST P-256.",
|
||||
"crypto.provider.curve_mismatch": "Несъответствие на кривата на подписващия ключ. Очаквана крива '{0}' за алгоритъм '{1}'.",
|
||||
"crypto.registry.empty": "Поне един крипто доставчик трябва да бъде регистриран.",
|
||||
"crypto.registry.algorithm_required": "Изисква се идентификатор на алгоритъма.",
|
||||
"crypto.registry.signing_not_supported": "Алгоритъмът за подписване '{0}' не се поддържа от нито един регистриран доставчик.",
|
||||
"crypto.registry.hash_not_supported": "Хеш алгоритъмът '{0}' не се поддържа от нито един регистриран доставчик.",
|
||||
"crypto.registry.verify_not_supported": "Алгоритъмът за проверка '{0}' не се поддържа от нито един регистриран доставчик.",
|
||||
"crypto.registry.active_profile_required": "Изисква се активен профил.",
|
||||
"crypto.registry.profile_not_found": "ID на профил '{0}' не е намерен в регистъра.",
|
||||
"crypto.registry.profile_id_required": "Идентификационният номер на потребителския профил не може да бъде празен или празен.",
|
||||
"crypto.key.algorithm_required": "Изисква се идентификатор на алгоритъма.",
|
||||
"crypto.key.private_scalar_required": "Параметрите на частния ключ трябва да включват скаларния компонент.",
|
||||
"crypto.key.verification_only": "Този конструктор е само за ключове само за проверка. Задайте verificationOnly на true.",
|
||||
"crypto.key.public_xy_required": "Параметрите на публичния ключ трябва да включват координати X и Y.",
|
||||
"crypto.key.private_material_required": "Трябва да се предостави материал за частен ключ.",
|
||||
"crypto.hash.algorithm_unsupported": "Неподдържан хеш алгоритъм '{0}'.",
|
||||
"crypto.hash.purpose_required": "Целта не може да бъде нула или празна.",
|
||||
"crypto.hmac.algorithm_unknown": "Неизвестен HMAC алгоритъм '{0}'.",
|
||||
"crypto.hmac.algorithm_unsupported": "Неподдържан HMAC алгоритъм '{0}'.",
|
||||
"crypto.ecdsa.algorithm_unsupported": "Неподдържан алгоритъм за подписване на ECDSA '{0}'.",
|
||||
"crypto.ecdsa.curve_unsupported": "Неподдържано картографиране на ECDSA крива за алгоритъм '{0}'.",
|
||||
"crypto.digest.required": "Изисква се дайджест.",
|
||||
"crypto.digest.prefix_required": "{0} трябва да започва с '{1}'.",
|
||||
"crypto.digest.algorithm_unsupported": "Неподдържан алгоритъм за дайджест в '{0}'. Поддържа се само sha256.",
|
||||
"crypto.digest.hex_length": "{0} трябва да съдържа {1} шестнадесетични знаци.",
|
||||
"crypto.password.memory_cost_invalid": "Цената на паметта за хеширане на парола трябва да е по-голяма от нула.",
|
||||
"crypto.password.iterations_invalid": "Броят на итерациите за хеширане на паролата трябва да е по-голям от нула.",
|
||||
"crypto.password.parallelism_invalid": "Паралелизмът на хеширане на пароли трябва да е по-голям от нула.",
|
||||
"crypto.password.algorithm_mismatch": "{0} поддържа само алгоритъма {1}.",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 изисква положителен брой итерации.",
|
||||
"crypto.gost.not_der": "Подписът не е DER кодиран.",
|
||||
"crypto.gost.invalid_der": "Невалидна DER структура за GOST подпис.",
|
||||
"crypto.gost.raw_length": "Суровият GOST подпис трябва да бъде {0} байта.",
|
||||
"crypto.gost.neither_format": "Полезният товар на подписа не е нито DER, нито необработен GOST формат.",
|
||||
"crypto.gost.coordinate_overflow": "Координатата надвишава очакваната дължина.",
|
||||
"crypto.profile.unknown_purpose": "Неизвестна хеш цел '{0}' в профил '{1}'.",
|
||||
"crypto.compliance.at_least_one_signing": "Трябва да бъде предоставен поне един алгоритъм за подписване.",
|
||||
"crypto.compliance.at_least_one_hash": "Трябва да бъде предоставен поне един алгоритъм за хеширане.",
|
||||
"crypto.ed25519.private_key_size": "Частният ключ Ed25519 трябва да бъде 32 или 64 байта.",
|
||||
"crypto.ed25519.public_key_size": "Публичният ключ Ed25519 трябва да е 32 байта.",
|
||||
"crypto.ed25519.no_hashing": "Доставчикът на BouncyCastle Ed25519 не излага възможности за хеширане.",
|
||||
"crypto.ed25519.raw_key_required": "Доставчикът '{0}' изисква необработен материал за частен ключ Ed25519.",
|
||||
"crypto.sm.no_password_hashing": "Доставчикът на SM не излага хеширане на пароли.",
|
||||
"crypto.sm.raw_key_required": "Доставчикът на SM2 изисква необработени частни ключове в байтове (PKCS#8 DER).",
|
||||
"crypto.sm.unsupported_format": "Неподдържан формат на ключ SM2. Очаквайте PEM или PKCS#8 DER.",
|
||||
"crypto.sm.disabled": "Доставчикът '{0}' е деактивиран. Задайте {1}=1 (или деактивирайте RequireEnvironmentGate), за да активирате софтуера SM2/SM3.",
|
||||
"crypto.di.registry_empty": "Регистърът на доставчика на крипто не може да бъде празен. Конфигурирайте поне един доставчик за RU внедрявания.",
|
||||
"crypto.di.ru_openssl_required": "Базовата линия на Linux RU изисква доставчик 'ru.openssl.gost' (задайте STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 за изрично отмяна).",
|
||||
"crypto.di.ru_provider_required": "Базовата линия на RU Linux е неправилно конфигурирана: както ru.openssl.gost, така и ru.pkcs11 са деактивирани чрез среда. Активирайте поне един доставчик.",
|
||||
"crypto.di.no_plugins_loaded": "Не бяха заредени доставчици на крипто. Проверете конфигурацията на плъгина и манифеста.",
|
||||
"crypto.kms.rotation_via_policy": "Ротацията на {0} трябва да бъде организирана чрез правила или графици на {1}.",
|
||||
"crypto.kms.revocation_via_policy": "Отмяната на {0} трябва да се управлява чрез {1} API или конзола.",
|
||||
"crypto.kms.public_key_missing_x": "В публичния ключ липсва X координата.",
|
||||
"crypto.kms.public_key_missing_y": "В публичния ключ липсва Y координата.",
|
||||
"crypto.kms.hash_failed": "Неуспешно хеширане на полезния товар с SHA-256.",
|
||||
"crypto.kms.key_not_found": "Ключът '{0}' не съществува.",
|
||||
"crypto.kms.key_revoked": "Ключът '{0}' е отменен и не може да бъде заменен.",
|
||||
"crypto.kms.key_revoked_signing": "Ключът '{0}' е отменен и не може да се използва за подписване.",
|
||||
"crypto.kms.key_version_not_found": "Версия на ключ '{0}' не съществува за ключ '{1}'.",
|
||||
"crypto.kms.key_no_active_version": "Ключът '{0}' няма активна версия.",
|
||||
"crypto.kms.key_version_inactive": "Ключовата версия '{0}' не е активна. Текущо състояние: {1}",
|
||||
"crypto.kms.key_no_public_material": "Ключ '{0}' версия '{1}' няма материал за публичен ключ.",
|
||||
"crypto.kms.algorithm_unsupported": "Алгоритъмът '{0}' не се поддържа от файловия KMS драйвер.",
|
||||
"crypto.kms.curve_unsupported": "Кривата '{0}' не се поддържа.",
|
||||
"crypto.kms.metadata_failed": "Неуспешно създаване или зареждане на ключови метаданни.",
|
||||
"crypto.kms.algorithm_mismatch": "Несъответствие на алгоритъма. Очаква се '{0}', получава се '{1}'.",
|
||||
"crypto.kms.version_exists": "Ключова версия '{0}' вече съществува за ключ '{1}'.",
|
||||
"crypto.kms.material_not_found": "Ключов материал за версия '{0}' не беше намерен.",
|
||||
"crypto.kms.envelope_deserialize_failed": "Ключовият плик не можа да бъде десериализиран.",
|
||||
"crypto.kms.payload_deserialize_failed": "Ключовият полезен товар не можа да бъде десериализиран.",
|
||||
"crypto.kms.pem_empty": "Публичният ключ PEM не може да бъде празен.",
|
||||
"crypto.kms.no_primary_version": "Крипто ключът '{0}' няма активна основна версия.",
|
||||
"crypto.kms.es256_only": "Доставчикът '{0}' поддържа само ключове за подписване ES256.",
|
||||
"crypto.kms.version_metadata_required": "Ключовете за подписване на KMS трябва да включват запис на метаданни 'kms.version'.",
|
||||
"crypto.kms.missing_public_key": "В ключа за подписване на KMS липсва материал за публичен ключ.",
|
||||
"crypto.fido2.curve_unsupported": "Неподдържан OID на FIDO2 крива '{0}'.",
|
||||
"crypto.fido2.rotation_required": "Ротацията на идентификационните данни на FIDO2 изисква ново записване.",
|
||||
"crypto.fido2.revocation_relying_party": "Отмяната на идентификационни данни за FIDO2 трябва да се управлява от разчитащата страна.",
|
||||
"crypto.fido2.missing_x": "В публичния ключ на FIDO2 липсва X координата.",
|
||||
"crypto.fido2.missing_y": "FIDO2 публичен ключ липсва Y координата.",
|
||||
"crypto.fido2.authenticator_required": "IFido2Authenticator трябва да бъде регистриран, за да използва FIDO2 KMS.",
|
||||
"crypto.pkcs11.rotation_hsm": "Ротацията на PKCS#11 изисква административни инструменти на HSM.",
|
||||
"crypto.pkcs11.revocation_hsm": "Отмяната на PKCS#11 трябва да се обработва от правилата на HSM.",
|
||||
"crypto.pkcs11.slot_not_found": "Не можа да се разреши PKCS#11 слот.",
|
||||
"crypto.pkcs11.private_key_not_found": "Частният ключ PKCS#11 не е намерен.",
|
||||
"crypto.pkcs11.public_key_not_found": "PKCS#11 публичен ключ не е намерен.",
|
||||
"crypto.pkcs11.missing_ec_point": "В публичния ключ липсва EC точка.",
|
||||
"crypto.pkcs11.missing_ec_params": "Липсващи EC параметри на публичния ключ.",
|
||||
"crypto.pkcs11.unsupported_point_format": "Неподдържан формат на EC точка.",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "Неподдържана EC крива OID '{0}'.",
|
||||
"crypto.pkcs11.curve_unsupported": "Неподдържана EC крива '{0}'.",
|
||||
"common.provcache.sbom_hash_required": "Хешът на SBOM не може да е null или празен.",
|
||||
"common.provcache.fetch_url_absolute": "Базовият URL за lazy fetch трябва да е абсолютен.",
|
||||
"common.provcache.fetch_url_no_userinfo": "Базовият URL за lazy fetch не трябва да съдържа потребителска информация.",
|
||||
"common.provcache.fetch_url_host_required": "Базовият URL за lazy fetch трябва да съдържа хост.",
|
||||
"common.provcache.fetch_url_scheme_invalid": "Схемата '{0}' на базовия URL за lazy fetch не е позволена.",
|
||||
"common.provcache.fetch_url_host_invalid": "Хостът '{0}' на базовия URL за lazy fetch не е в allowlist.",
|
||||
"common.provcache.no_chunks_provided": "Няма предоставени chunks.",
|
||||
"common.provcache.bundle_deserialize_failed": "Неуспешна десериализация на bundle.",
|
||||
"common.provcache.signer_not_configured": "Signer не е конфигуриран.",
|
||||
"common.provcache.signing_requested_no_signer": "Поискано е подписване, но няма конфигуриран signer.",
|
||||
"common.provcache.cache_entry_not_found": "Запис в кеша не е намерен за VeriKey: {0}",
|
||||
"common.provcache.chunk_manifest_not_found": "Chunk manifest не е намерен за proof root: {0}",
|
||||
"common.provcache.http_timeout_invalid": "HTTP timeout за lazy fetch трябва да е положителна, крайна продължителност.",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher изисква BaseAddress на HTTP клиента.",
|
||||
"common.provcache.merkle_root_mismatch": "Несъответствие на Merkle root. Очакван: {0}, изчислен: {1}",
|
||||
"common.provcache.chunk_verification_failed": "Проверката на chunk {0} е неуспешна. Очакван хеш: {1}",
|
||||
"common.provcache.artifact_reference_required": "Референцията към артефакт е задължителна.",
|
||||
"common.provcache.artifact_digest_required": "Дайджестът на артефакт е задължителен.",
|
||||
"common.provcache.decision_digest_required": "DecisionDigest е задължителен.",
|
||||
"common.provcache.decision_digest_verikey_required": "DecisionDigest.VeriKey е задължителен.",
|
||||
"common.provcache.digest_empty": "Дайджестът не може да е празен.",
|
||||
"common.provcache.time_window_required": "Времевият прозорец не може да е null или празен.",
|
||||
"common.provcache.vex_hash_required": "Хешът на VEX hash set не може да е null или празен.",
|
||||
"common.provcache.policy_hash_required": "Хешът на policy не може да е null или празен.",
|
||||
"common.provcache.source_hash_required": "Хешът на source не може да е null или празен.",
|
||||
"common.provcache.signer_set_hash_required": "Хешът на signer set не може да е null или празен.",
|
||||
"common.evidence.toolchain_required": "ToolChain трябва да е зададен преди изграждане на индекса.",
|
||||
"common.evidence.deserialization_failed": "Неуспешна десериализация на evidence index.",
|
||||
"common.evidence.verdict_deserialization_failed": "Неуспешна десериализация на verdict.",
|
||||
"common.evidence.inputs_json_required": "JSON не може да е null или празен.",
|
||||
"common.evidence.inputs_deserialization_failed": "Неуспешна десериализация на pinned scoring inputs.",
|
||||
"common.evidence.bundle_alert_id_required": "AlertId е задължителен",
|
||||
"common.evidence.bundle_artifact_id_required": "ArtifactId е задължителен",
|
||||
"common.evidence.pdf_export_requires_config": "PDF експортът изисква допълнителна конфигурация",
|
||||
"common.evidence.invalid_uri_format": "Невалиден формат на evidence URI: {0}. Очаква се stella://type/path",
|
||||
"common.evidence.invalid_uri_missing_path": "Невалиден формат на evidence URI: {0}. Липсва path.",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver не може да резолвира evidence type: {0}",
|
||||
"common.evidence.schema_resource_not_found": "Schema resource не е намерен: {0}",
|
||||
"common.evidence.schema_resource_not_available": "Schema resource не е наличен: {0}",
|
||||
"common.evidence.provenance_deserialize_failed": "Неуспешна десериализация на provenance за evidence {0}",
|
||||
"common.evidence.bundle_deserialize_failed": "Неуспешна десериализация на verdict bundle",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "Неуспешна десериализация на delta verdict",
|
||||
"common.canonicalization.value_empty_after_trim": "Стойността не трябва да е празна след премахване на интервали.",
|
||||
"common.canonicalization.deserialize_failed": "Неуспешна десериализация на {0}",
|
||||
"common.canonicalization.datetime_value_null": "Стойността DateTimeOffset е null.",
|
||||
"common.canonicalization.dict_key_null": "Ключът на речника не може да е null.",
|
||||
"common.audit.replay_token_value_empty": "Стойността на токена не може да е празна.",
|
||||
"common.audit.replay_token_empty": "Токенът не може да е празен.",
|
||||
"common.audit.replay_token_format_invalid": "Невалиден формат на replay token: {0}",
|
||||
"common.audit.replay_token_version_invalid": "Невалидна версия на replay token: {0}",
|
||||
"common.audit.replay_token_expiration_invalid": "Невалиден timestamp за изтичане в replay token: {0}",
|
||||
"common.audit.replay_token_duplicate_context_key": "AdditionalContext съдържа дублиран ключ след нормализация: '{0}'.",
|
||||
"common.artifact.uri_format_invalid": "Невалиден формат на URI: {0}",
|
||||
"common.artifact.uri_scheme_not_supported": "Схемата на URI не се поддържа: {0}",
|
||||
"common.artifact.file_not_accessible": "Файлът не е достъпен: {0}",
|
||||
"common.artifact.file_too_large": "Файлът е твърде голям: {0} байта над лимита от 100MB",
|
||||
"common.artifact.uri_not_accessible": "URI не е достъпен: {0} върна {1}",
|
||||
"common.artifact.content_too_large": "Съдържанието е твърде голямо: {0} байта над лимита от 100MB",
|
||||
"common.artifact.fetch_failed": "Неуспешно извличане от {0}: {1}",
|
||||
"common.delta_verdict.artifact_ref_required": "Референцията към артефакт е задължителна.",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "Неподдържан алгоритъм за подписване: {0}",
|
||||
"common.delta_verdict.hmac_secret_required": "HMAC подписването изисква base64 secret.",
|
||||
"common.eventing.no_entry_assembly": "Не е намерен entry assembly",
|
||||
"auth.persistence.deserialize_inputs_failed": "Неуспешна десериализация на входните данни",
|
||||
"auth.persistence.deserialize_result_failed": "Неуспешна десериализация на резултата",
|
||||
"auth.persistence.revocation_sequence_mismatch": "Несъответствие в последователността на експорта за отмяна. Очаквана {0}, текуща {1}.",
|
||||
"auth.persistence.revocation_update_rejected": "Актуализацията на състоянието на експорта за отмяна е отхвърлена. Очаквана последователност {0}."
|
||||
}
|
||||
|
||||
@@ -1,367 +1,367 @@
|
||||
{
|
||||
"_meta": {
|
||||
"locale": "de-DE",
|
||||
"namespace": "common",
|
||||
"version": "1.0"
|
||||
},
|
||||
"common.error.generic": "Something went wrong.",
|
||||
"common.error.not_found": "Die angeforderte Ressource wurde nicht gefunden.",
|
||||
"common.error.entity_not_found": "{0} \u0027{1}\u0027 not found.",
|
||||
"common.error.unauthorized": "Sie sind nicht berechtigt, diese Aktion auszufuehren.",
|
||||
"common.error.forbidden": "Access denied.",
|
||||
"common.error.bad_request": "The request is invalid.",
|
||||
"common.error.conflict": "A conflict occurred. The resource may have been modified.",
|
||||
"common.error.timeout": "Request timed out after {0} seconds.",
|
||||
"common.error.server_error": "Ein interner Serverfehler ist aufgetreten. Bitte spaeter erneut versuchen.",
|
||||
"common.error.service_unavailable": "The service is temporarily unavailable.",
|
||||
"common.error.too_many_requests": "Zu viele Anfragen. Bitte warten und erneut versuchen.",
|
||||
"common.error.network": "Network error. Check your connection.",
|
||||
"common.error.body_required": "Anfrageinhalt ist erforderlich.",
|
||||
"common.error.deserialization_failed": "Failed to deserialize {0}.",
|
||||
"common.error.not_supported": "{0} is not supported.",
|
||||
"common.error.already_exists": "{0} \u0027{1}\u0027 already exists.",
|
||||
"common.error.revoked": "{0} \u0027{1}\u0027 has been revoked and cannot be used.",
|
||||
"common.error.state_invalid": "{0} \u0027{1}\u0027 is not in the expected state. Current state: {2}",
|
||||
"common.validation.required": "{0} is required.",
|
||||
"common.validation.invalid": "{0} is invalid.",
|
||||
"common.validation.too_long": "{0} exceeds the maximum length of {1} characters.",
|
||||
"common.validation.too_short": "{0} must be at least {1} characters.",
|
||||
"common.validation.out_of_range": "{0} must be between {1} and {2}.",
|
||||
"common.validation.invalid_format": "{0} has an invalid format.",
|
||||
"common.validation.duplicate": "{0} already exists.",
|
||||
"common.validation.empty_not_allowed": "{0} must not be empty.",
|
||||
"common.validation.empty_after_trim": "{0} must not be empty after trimming.",
|
||||
"common.validation.greater_than_zero": "{0} must be greater than zero.",
|
||||
"common.validation.non_negative": "{0} must be non-negative.",
|
||||
"common.validation.at_least_one": "At least one {0} must be configured.",
|
||||
"common.validation.at_least_n": "{0} must have at least {1} entries.",
|
||||
"common.validation.null_or_empty": "{0} cannot be null or empty.",
|
||||
"common.validation.absolute_uri": "{0} must be an absolute URI.",
|
||||
"common.validation.invalid_regex": "{0} \u0027{1}\u0027 is not a valid regular expression.",
|
||||
"common.validation.unknown_value": "{0} \u0027{1}\u0027 is not recognized. Allowed values: {2}",
|
||||
"common.validation.max_exceeded": "{0} must be {1} characters or fewer.",
|
||||
"common.actions.save": "Save",
|
||||
"common.actions.cancel": "Cancel",
|
||||
"common.actions.delete": "Delete",
|
||||
"common.actions.confirm": "Confirm",
|
||||
"common.actions.submit": "Submit",
|
||||
"common.actions.close": "Close",
|
||||
"common.actions.retry": "Retry",
|
||||
"common.actions.expand": "Expand",
|
||||
"common.actions.collapse": "Collapse",
|
||||
"common.actions.show_more": "Show more",
|
||||
"common.actions.show_less": "Show less",
|
||||
"common.status.healthy": "Healthy",
|
||||
"common.status.degraded": "Degraded",
|
||||
"common.status.unavailable": "Unavailable",
|
||||
"common.status.unknown": "Unknown",
|
||||
"common.status.active": "Active",
|
||||
"common.status.inactive": "Inactive",
|
||||
"common.status.pending": "Pending",
|
||||
"common.status.running": "Running",
|
||||
"common.status.completed": "Completed",
|
||||
"common.status.failed": "Failed",
|
||||
"common.status.canceled": "Canceled",
|
||||
"common.status.blocked": "Blocked",
|
||||
"common.severity.critical": "Critical",
|
||||
"common.severity.high": "High",
|
||||
"common.severity.medium": "Medium",
|
||||
"common.severity.low": "Low",
|
||||
"common.severity.info": "Info",
|
||||
"common.severity.none": "None",
|
||||
"common.time.seconds_ago": "{0} seconds ago",
|
||||
"common.time.minutes_ago": "{0} minutes ago",
|
||||
"common.time.hours_ago": "{0} hours ago",
|
||||
"common.time.days_ago": "{0} days ago",
|
||||
"common.time.just_now": "Just now",
|
||||
"common.ui.loading": "Loading...",
|
||||
"common.ui.saving": "Saving...",
|
||||
"common.ui.deleting": "Deleting...",
|
||||
"common.ui.submitting": "Submitting...",
|
||||
"common.ui.no_results": "No results found.",
|
||||
"common.ui.offline": "You are offline.",
|
||||
"common.ui.reconnecting": "Reconnecting...",
|
||||
"common.ui.back_online": "Back online.",
|
||||
"auth.dpop.proof_lifetime_invalid": "DPoP proof lifetime must be greater than zero.",
|
||||
"auth.dpop.clock_skew_invalid": "DPoP allowed clock skew must be between 0 seconds and 5 minutes.",
|
||||
"auth.dpop.replay_window_invalid": "DPoP replay window must be greater than or equal to zero.",
|
||||
"auth.dpop.algorithm_required": "At least one allowed DPoP algorithm must be configured.",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "Allowed DPoP algorithms cannot be empty after normalization.",
|
||||
"auth.dpop.options_required": "DPoP options must be provided.",
|
||||
"auth.dpop.nonce_ttl_invalid": "Nonce TTL must be greater than zero.",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "Max issuance per minute must be at least 1.",
|
||||
"auth.dpop.nonce_store_required": "Dpop.Nonce.Store must be specified.",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store must be either \u0027memory\u0027 or \u0027redis\u0027.",
|
||||
"auth.dpop.nonce_redis_required": "Dpop.Nonce.RedisConnectionString must be provided when using the \u0027redis\u0027 store.",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences must include at least one audience.",
|
||||
"auth.dpop.token_three_segments": "Token must contain three segments.",
|
||||
"auth.dpop.segment_out_of_range": "Segment index out of range.",
|
||||
"auth.dpop.header_decode_failed": "Unable to decode header.",
|
||||
"auth.dpop.header_missing_typ": "DPoP proof missing typ=dpop+jwt header.",
|
||||
"auth.dpop.header_missing_alg": "DPoP proof missing alg header.",
|
||||
"auth.dpop.header_unsupported_alg": "Unsupported DPoP algorithm.",
|
||||
"auth.dpop.header_missing_jwk": "DPoP proof missing jwk header.",
|
||||
"auth.dpop.header_invalid_jwk": "DPoP proof jwk header is invalid.",
|
||||
"auth.dpop.payload_decode_failed": "Unable to decode payload.",
|
||||
"auth.dpop.payload_missing_htm": "DPoP proof missing htm claim.",
|
||||
"auth.dpop.payload_htm_mismatch": "DPoP htm does not match request method.",
|
||||
"auth.dpop.payload_missing_htu": "DPoP proof missing htu claim.",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu does not match request URI.",
|
||||
"auth.dpop.payload_missing_iat": "DPoP proof missing iat claim.",
|
||||
"auth.dpop.payload_missing_jti": "DPoP proof missing jti claim.",
|
||||
"auth.dpop.payload_iat_invalid": "DPoP proof iat claim is not a valid number.",
|
||||
"auth.dpop.nonce_missing": "DPoP proof missing nonce claim.",
|
||||
"auth.dpop.nonce_mismatch": "DPoP nonce mismatch.",
|
||||
"auth.dpop.proof_future": "DPoP proof issued in the future.",
|
||||
"auth.dpop.proof_expired": "DPoP proof expired.",
|
||||
"auth.dpop.signature_failed": "DPoP proof signature validation failed.",
|
||||
"auth.dpop.replay_detected": "DPoP proof already used.",
|
||||
"config.authority.schema_version_required": "Authority configuration requires a positive schemaVersion.",
|
||||
"config.authority.issuer_required": "Authority configuration requires an issuer URL.",
|
||||
"config.authority.issuer_absolute": "Authority issuer must be an absolute URI.",
|
||||
"config.authority.issuer_https": "Authority issuer must use HTTPS unless running on a loopback interface.",
|
||||
"config.authority.duplicate_tenant": "Authority configuration contains duplicate tenant identifier \u0027{0}\u0027.",
|
||||
"config.authority.property_greater_than_zero": "Authority configuration requires {0} to be greater than zero.",
|
||||
"config.authority.property_max": "Authority configuration requires {0} to be less than or equal to {1}.",
|
||||
"config.authority.remote_inference_required": "Authority configuration requires at least one advisory AI remote inference profile when remote inference is enabled.",
|
||||
"config.tenant.id_required": "Each tenant requires an id (slug).",
|
||||
"config.tenant.id_format": "Tenant id \u0027{0}\u0027 must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.project_format": "Tenant \u0027{0}\u0027 defines project \u0027{1}\u0027 which must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.role_missing_config": "Tenant \u0027{0}\u0027 defines role \u0027{1}\u0027 without configuration.",
|
||||
"config.tenant.role_scope_required": "Tenant \u0027{0}\u0027 role \u0027{1}\u0027 must specify at least one scope.",
|
||||
"config.tenant.role_unknown_scope": "Tenant \u0027{0}\u0027 role \u0027{1}\u0027 references unknown scope \u0027{2}\u0027.",
|
||||
"config.tenant.role_unsupported_attribute": "Tenant \u0027{0}\u0027 role \u0027{1}\u0027 defines unsupported attribute \u0027{2}\u0027. Allowed attributes: env, owner, business_tier.",
|
||||
"config.tenant.delegation_max_tokens": "Tenant \u0027{0}\u0027 delegation maxActiveTokens must be greater than zero when specified.",
|
||||
"config.tenant.remote_inference_disabled": "Tenant remote inference consent cannot be granted when remote inference is disabled.",
|
||||
"config.tenant.remote_inference_consent_version_length": "Tenant remote inference consentVersion must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consented_by_length": "Tenant remote inference consentedBy must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consent_version_required": "Tenant remote inference consent requires consentVersion when consentGranted is true.",
|
||||
"config.tenant.remote_inference_consented_at_required": "Tenant remote inference consent requires consentedAt when consentGranted is true.",
|
||||
"config.service_account.id_required": "Delegation service account seeds require an accountId.",
|
||||
"config.service_account.id_format": "Service account id \u0027{0}\u0027 must contain lowercase letters, digits, colon, underscore, or hyphen.",
|
||||
"config.service_account.tenant_required": "Service account \u0027{0}\u0027 requires a tenant assignment.",
|
||||
"config.service_account.tenant_unknown": "Service account \u0027{0}\u0027 references unknown tenant \u0027{1}\u0027.",
|
||||
"config.service_account.scope_required": "Service account \u0027{0}\u0027 must specify at least one allowed scope.",
|
||||
"config.service_account.unsupported_attribute": "Service account \u0027{0}\u0027 defines unsupported attribute \u0027{1}\u0027. Allowed attributes: env, owner, business_tier.",
|
||||
"config.plugin.assembly_required": "Authority plugin \u0027{0}\u0027 must define either assemblyName or assemblyPath.",
|
||||
"config.plugin.config_file_required": "Authority plugin \u0027{0}\u0027 must define a configFile.",
|
||||
"config.plugin.config_file_missing": "Authority plugin \u0027{0}\u0027 specifies configFile \u0027{1}\u0027 which does not exist.",
|
||||
"config.plugin.unknown_capability": "Authority plugin \u0027{0}\u0027 declares unknown capability \u0027{1}\u0027. Allowed values: password, mfa, clientProvisioning, bootstrap.",
|
||||
"config.plugin.descriptor_null": "Authority plugin descriptor \u0027{0}\u0027 is null.",
|
||||
"config.delegation.duplicate_account": "Delegation configuration contains duplicate service account id \u0027{0}\u0027.",
|
||||
"config.delegation.quota_max_tokens": "Authority delegation configuration requires {0}.MaxActiveTokens to be greater than zero.",
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace must be non-negative.",
|
||||
"config.mtls.audiences_required": "Mtls.EnforceForAudiences must include at least one audience when enabled.",
|
||||
"config.mtls.ca_empty": "Mtls.AllowedCertificateAuthorities entries must not be empty.",
|
||||
"config.mtls.san_types_required": "Mtls.AllowedSanTypes must include at least one entry when enabled.",
|
||||
"config.mtls.subject_patterns_empty": "Mtls.AllowedSubjectPatterns entries must not be empty.",
|
||||
"config.mtls.subject_pattern_invalid": "Mtls.AllowedSubjectPatterns entry \u0027{0}\u0027 is not a valid regular expression.",
|
||||
"config.signing.key_id_required": "Authority signing configuration requires signing.activeKeyId.",
|
||||
"config.signing.key_path_required": "Authority signing configuration requires signing.keyPath.",
|
||||
"config.signing.jwks_cache_range": "Authority signing configuration requires signing.jwksCacheLifetime to be between 00:00:01 and 01:00:00.",
|
||||
"config.signing.additional_key_id_required": "Additional signing keys require a keyId.",
|
||||
"config.signing.additional_key_path_required": "Signing key \u0027{0}\u0027 requires a path.",
|
||||
"config.bootstrap.api_key_required": "Authority bootstrap configuration requires an API key when enabled.",
|
||||
"config.bootstrap.idp_required": "Authority bootstrap configuration requires a default identity provider name when enabled.",
|
||||
"config.rate_limit.permit_limit": "Authority rate limiting \u0027{0}\u0027 requires permitLimit to be greater than zero.",
|
||||
"config.rate_limit.queue_limit": "Authority rate limiting \u0027{0}\u0027 queueLimit cannot be negative.",
|
||||
"config.rate_limit.window": "Authority rate limiting \u0027{0}\u0027 window must be greater than zero and no more than one hour.",
|
||||
"config.storage.connection_required": "Authority storage requires a connection string.",
|
||||
"config.storage.timeout_invalid": "Authority storage command timeout must be greater than zero.",
|
||||
"config.ack_token.payload_type_required": "notifications.ackTokens.payloadType must be specified when ack tokens are enabled.",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime must be greater than zero.",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.ack_token.key_id_required": "notifications.ackTokens.activeKeyId must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.key_path_required": "notifications.ackTokens.keyPath must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime must be between 00:00:01 and 01:00:00.",
|
||||
"config.exceptions.null_template": "Authority exception routing template entries must not be null.",
|
||||
"config.exceptions.duplicate_template": "Authority exception routing template \u0027{0}\u0027 is configured more than once.",
|
||||
"config.exceptions.template_id_required": "Authority exception routing templates require an id.",
|
||||
"config.exceptions.template_route_required": "Authority exception routing template \u0027{0}\u0027 requires authorityRouteId.",
|
||||
"config.sealed_mode.evidence_path_required": "AirGap.SealedMode.EvidencePath must be provided when enforcement is enabled.",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge must be between 00:00:01 and 7.00:00:00.",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime must be greater than zero and less than or equal to AirGap.SealedMode.MaxEvidenceAge.",
|
||||
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts must include at least one host when enabled.",
|
||||
"config.escalation.scope_required": "notifications.escalation.scope must be specified.",
|
||||
"config.anti_forgery.audience_required": "vulnerabilityExplorer.workflow.antiForgery.audience must be specified when anti-forgery tokens are enabled.",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime must be greater than zero.",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries must be non-negative.",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength must be greater than zero.",
|
||||
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime must be greater than zero when attachment tokens are enabled.",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.attachment.payload_type_required": "vulnerabilityExplorer.attachments.payloadType must be specified when attachment tokens are enabled.",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries must be non-negative.",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength must be greater than zero.",
|
||||
"config.api_lifecycle.sunset_after_deprecation": "Legacy auth sunset date must be after the deprecation date.",
|
||||
"config.api_lifecycle.docs_url_format": "Legacy auth documentation URL must be an absolute HTTP or HTTPS URL.",
|
||||
"crypto.provider.algorithm_not_supported": "Signing algorithm \u0027{0}\u0027 is not supported by provider \u0027{1}\u0027.",
|
||||
"crypto.provider.hash_not_supported": "Hash algorithm \u0027{0}\u0027 is not supported by provider \u0027{1}\u0027.",
|
||||
"crypto.provider.verify_not_supported": "Verification algorithm \u0027{0}\u0027 is not supported by provider \u0027{1}\u0027.",
|
||||
"crypto.provider.key_not_registered": "Signing key \u0027{0}\u0027 is not registered with provider \u0027{1}\u0027.",
|
||||
"crypto.provider.key_algorithm_mismatch": "Signing key \u0027{0}\u0027 is registered for algorithm \u0027{1}\u0027, not \u0027{2}\u0027.",
|
||||
"crypto.provider.ec_keys_only": "Provider \u0027{0}\u0027 only accepts EC signing keys.",
|
||||
"crypto.provider.no_password_hashing": "Provider \u0027{0}\u0027 does not expose password hashing capabilities.",
|
||||
"crypto.provider.no_content_hashing": "Provider \u0027{0}\u0027 does not support content hashing.",
|
||||
"crypto.provider.no_ephemeral_verification": "Provider \u0027{0}\u0027 does not support ephemeral verification.",
|
||||
"crypto.provider.not_signing_capable": "Signing algorithm \u0027{0}\u0027 is not supported by provider \u0027{1}\u0027.",
|
||||
"crypto.provider.es256_only": "Only ES256 signing keys are currently supported by provider \u0027{0}\u0027.",
|
||||
"crypto.provider.p256_required": "ES256 signing keys must use the NIST P-256 curve.",
|
||||
"crypto.provider.curve_mismatch": "Signing key curve mismatch. Expected curve \u0027{0}\u0027 for algorithm \u0027{1}\u0027.",
|
||||
"crypto.registry.empty": "At least one crypto provider must be registered.",
|
||||
"crypto.registry.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.registry.signing_not_supported": "Signing algorithm \u0027{0}\u0027 is not supported by any registered provider.",
|
||||
"crypto.registry.hash_not_supported": "Hash algorithm \u0027{0}\u0027 is not supported by any registered provider.",
|
||||
"crypto.registry.verify_not_supported": "Verification algorithm \u0027{0}\u0027 is not supported by any registered provider.",
|
||||
"crypto.registry.active_profile_required": "Active profile is required.",
|
||||
"crypto.registry.profile_not_found": "Profile ID \u0027{0}\u0027 is not found in the registry.",
|
||||
"crypto.registry.profile_id_required": "Profile ID cannot be null or empty.",
|
||||
"crypto.key.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.key.private_scalar_required": "Private key parameters must include the scalar component.",
|
||||
"crypto.key.verification_only": "This constructor is only for verification-only keys. Set verificationOnly to true.",
|
||||
"crypto.key.public_xy_required": "Public key parameters must include X and Y coordinates.",
|
||||
"crypto.key.private_material_required": "Private key material must be provided.",
|
||||
"crypto.hash.algorithm_unsupported": "Unsupported hash algorithm \u0027{0}\u0027.",
|
||||
"crypto.hash.purpose_required": "Purpose cannot be null or empty.",
|
||||
"crypto.hmac.algorithm_unknown": "Unknown HMAC algorithm \u0027{0}\u0027.",
|
||||
"crypto.hmac.algorithm_unsupported": "Unsupported HMAC algorithm \u0027{0}\u0027.",
|
||||
"crypto.ecdsa.algorithm_unsupported": "Unsupported ECDSA signing algorithm \u0027{0}\u0027.",
|
||||
"crypto.ecdsa.curve_unsupported": "Unsupported ECDSA curve mapping for algorithm \u0027{0}\u0027.",
|
||||
"crypto.digest.required": "Digest is required.",
|
||||
"crypto.digest.prefix_required": "{0} must start with \u0027{1}\u0027.",
|
||||
"crypto.digest.algorithm_unsupported": "Unsupported digest algorithm in \u0027{0}\u0027. Only sha256 is supported.",
|
||||
"crypto.digest.hex_length": "{0} must contain {1} hexadecimal characters.",
|
||||
"crypto.password.memory_cost_invalid": "Password hashing memory cost must be greater than zero.",
|
||||
"crypto.password.iterations_invalid": "Password hashing iteration count must be greater than zero.",
|
||||
"crypto.password.parallelism_invalid": "Password hashing parallelism must be greater than zero.",
|
||||
"crypto.password.algorithm_mismatch": "{0} only supports the {1} algorithm.",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 requires a positive iteration count.",
|
||||
"crypto.gost.not_der": "Signature is not DER encoded.",
|
||||
"crypto.gost.invalid_der": "Invalid DER structure for GOST signature.",
|
||||
"crypto.gost.raw_length": "Raw GOST signature must be {0} bytes.",
|
||||
"crypto.gost.neither_format": "Signature payload is neither DER nor raw GOST format.",
|
||||
"crypto.gost.coordinate_overflow": "Coordinate exceeds expected length.",
|
||||
"crypto.profile.unknown_purpose": "Unknown hash purpose \u0027{0}\u0027 in profile \u0027{1}\u0027.",
|
||||
"crypto.compliance.at_least_one_signing": "At least one signing algorithm must be supplied.",
|
||||
"crypto.compliance.at_least_one_hash": "At least one hash algorithm must be supplied.",
|
||||
"crypto.ed25519.private_key_size": "Ed25519 private key must be 32 or 64 bytes.",
|
||||
"crypto.ed25519.public_key_size": "Ed25519 public key must be 32 bytes.",
|
||||
"crypto.ed25519.no_hashing": "BouncyCastle Ed25519 provider does not expose hashing capabilities.",
|
||||
"crypto.ed25519.raw_key_required": "Provider \u0027{0}\u0027 requires raw Ed25519 private key material.",
|
||||
"crypto.sm.no_password_hashing": "SM provider does not expose password hashing.",
|
||||
"crypto.sm.raw_key_required": "SM2 provider requires raw private key bytes (PKCS#8 DER).",
|
||||
"crypto.sm.unsupported_format": "Unsupported SM2 key format. Expect PEM or PKCS#8 DER.",
|
||||
"crypto.sm.disabled": "Provider \u0027{0}\u0027 is disabled. Set {1}=1 (or disable RequireEnvironmentGate) to enable software SM2/SM3.",
|
||||
"crypto.di.registry_empty": "Crypto provider registry cannot be empty. Configure at least one provider for RU deployments.",
|
||||
"crypto.di.ru_openssl_required": "Linux RU baseline requires provider \u0027ru.openssl.gost\u0027 (set STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 to override explicitly).",
|
||||
"crypto.di.ru_provider_required": "RU Linux baseline is misconfigured: both ru.openssl.gost and ru.pkcs11 are disabled via environment. Enable at least one provider.",
|
||||
"crypto.di.no_plugins_loaded": "No crypto providers were loaded. Check plugin configuration and manifest.",
|
||||
"crypto.kms.rotation_via_policy": "{0} rotation must be orchestrated via {1} policies or schedules.",
|
||||
"crypto.kms.revocation_via_policy": "{0} revocation must be managed through {1} APIs or console.",
|
||||
"crypto.kms.public_key_missing_x": "Public key missing X coordinate.",
|
||||
"crypto.kms.public_key_missing_y": "Public key missing Y coordinate.",
|
||||
"crypto.kms.hash_failed": "Failed to hash payload with SHA-256.",
|
||||
"crypto.kms.key_not_found": "Key \u0027{0}\u0027 does not exist.",
|
||||
"crypto.kms.key_revoked": "Key \u0027{0}\u0027 has been revoked and cannot be rotated.",
|
||||
"crypto.kms.key_revoked_signing": "Key \u0027{0}\u0027 is revoked and cannot be used for signing.",
|
||||
"crypto.kms.key_version_not_found": "Key version \u0027{0}\u0027 does not exist for key \u0027{1}\u0027.",
|
||||
"crypto.kms.key_no_active_version": "Key \u0027{0}\u0027 does not have an active version.",
|
||||
"crypto.kms.key_version_inactive": "Key version \u0027{0}\u0027 is not active. Current state: {1}",
|
||||
"crypto.kms.key_no_public_material": "Key \u0027{0}\u0027 version \u0027{1}\u0027 does not have public key material.",
|
||||
"crypto.kms.algorithm_unsupported": "Algorithm \u0027{0}\u0027 is not supported by the file KMS driver.",
|
||||
"crypto.kms.curve_unsupported": "Curve \u0027{0}\u0027 is not supported.",
|
||||
"crypto.kms.metadata_failed": "Failed to create or load key metadata.",
|
||||
"crypto.kms.algorithm_mismatch": "Algorithm mismatch. Expected \u0027{0}\u0027, received \u0027{1}\u0027.",
|
||||
"crypto.kms.version_exists": "Key version \u0027{0}\u0027 already exists for key \u0027{1}\u0027.",
|
||||
"crypto.kms.material_not_found": "Key material for version \u0027{0}\u0027 was not found.",
|
||||
"crypto.kms.envelope_deserialize_failed": "Key envelope could not be deserialized.",
|
||||
"crypto.kms.payload_deserialize_failed": "Key payload could not be deserialized.",
|
||||
"crypto.kms.pem_empty": "Public key PEM cannot be empty.",
|
||||
"crypto.kms.no_primary_version": "Crypto key \u0027{0}\u0027 does not have an active primary version.",
|
||||
"crypto.kms.es256_only": "Provider \u0027{0}\u0027 only supports ES256 signing keys.",
|
||||
"crypto.kms.version_metadata_required": "KMS signing keys must include metadata entry \u0027kms.version\u0027.",
|
||||
"crypto.kms.missing_public_key": "KMS signing key is missing public key material.",
|
||||
"crypto.fido2.curve_unsupported": "Unsupported FIDO2 curve OID \u0027{0}\u0027.",
|
||||
"crypto.fido2.rotation_required": "FIDO2 credential rotation requires new enrolment.",
|
||||
"crypto.fido2.revocation_relying_party": "FIDO2 credential revocation must be managed in the relying party.",
|
||||
"crypto.fido2.missing_x": "FIDO2 public key missing X coordinate.",
|
||||
"crypto.fido2.missing_y": "FIDO2 public key missing Y coordinate.",
|
||||
"crypto.fido2.authenticator_required": "IFido2Authenticator must be registered to use FIDO2 KMS.",
|
||||
"crypto.pkcs11.rotation_hsm": "PKCS#11 rotation requires HSM administrative tooling.",
|
||||
"crypto.pkcs11.revocation_hsm": "PKCS#11 revocation must be handled by HSM policies.",
|
||||
"crypto.pkcs11.slot_not_found": "Could not resolve PKCS#11 slot.",
|
||||
"crypto.pkcs11.private_key_not_found": "PKCS#11 private key not found.",
|
||||
"crypto.pkcs11.public_key_not_found": "PKCS#11 public key not found.",
|
||||
"crypto.pkcs11.missing_ec_point": "Public key missing EC point.",
|
||||
"crypto.pkcs11.missing_ec_params": "Public key missing EC parameters.",
|
||||
"crypto.pkcs11.unsupported_point_format": "Unsupported EC point format.",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "Unsupported EC curve OID \u0027{0}\u0027.",
|
||||
"crypto.pkcs11.curve_unsupported": "Unsupported EC curve \u0027{0}\u0027.",
|
||||
"common.provcache.sbom_hash_required": "SBOM hash cannot be null or empty.",
|
||||
"common.provcache.fetch_url_absolute": "Lazy fetch base URL must be absolute.",
|
||||
"common.provcache.fetch_url_no_userinfo": "Lazy fetch base URL must not include user info.",
|
||||
"common.provcache.fetch_url_host_required": "Lazy fetch base URL must include a host.",
|
||||
"common.provcache.fetch_url_scheme_invalid": "Lazy fetch base URL scheme \u0027{0}\u0027 is not allowed.",
|
||||
"common.provcache.fetch_url_host_invalid": "Lazy fetch base URL host \u0027{0}\u0027 is not allowlisted.",
|
||||
"common.provcache.no_chunks_provided": "No chunks provided.",
|
||||
"common.provcache.bundle_deserialize_failed": "Failed to deserialize bundle.",
|
||||
"common.provcache.signer_not_configured": "Signer is not configured.",
|
||||
"common.provcache.signing_requested_no_signer": "Signing requested but no signer is configured.",
|
||||
"common.provcache.cache_entry_not_found": "Cache entry not found for VeriKey: {0}",
|
||||
"common.provcache.chunk_manifest_not_found": "Chunk manifest not found for proof root: {0}",
|
||||
"common.provcache.http_timeout_invalid": "Lazy fetch HTTP timeout must be a positive, non-infinite duration.",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher requires a BaseAddress on the HTTP client.",
|
||||
"common.provcache.merkle_root_mismatch": "Merkle root mismatch. Expected: {0}, Computed: {1}",
|
||||
"common.provcache.chunk_verification_failed": "Chunk {0} verification failed. Expected hash: {1}",
|
||||
"common.provcache.artifact_reference_required": "Artifact reference is required.",
|
||||
"common.provcache.artifact_digest_required": "Artifact digest is required.",
|
||||
"common.provcache.decision_digest_required": "DecisionDigest is required.",
|
||||
"common.provcache.decision_digest_verikey_required": "DecisionDigest.VeriKey is required.",
|
||||
"common.provcache.digest_empty": "Digest cannot be empty.",
|
||||
"common.provcache.time_window_required": "Time window cannot be null or empty.",
|
||||
"common.provcache.vex_hash_required": "VEX hash set hash cannot be null or empty.",
|
||||
"common.provcache.policy_hash_required": "Policy hash cannot be null or empty.",
|
||||
"common.provcache.source_hash_required": "Source hash cannot be null or empty.",
|
||||
"common.provcache.signer_set_hash_required": "Signer set hash cannot be null or empty.",
|
||||
"common.evidence.toolchain_required": "ToolChain must be set before building index.",
|
||||
"common.evidence.deserialization_failed": "Failed to deserialize evidence index.",
|
||||
"common.evidence.verdict_deserialization_failed": "Failed to deserialize verdict.",
|
||||
"common.evidence.inputs_json_required": "JSON cannot be null or empty.",
|
||||
"common.evidence.inputs_deserialization_failed": "Failed to deserialize pinned scoring inputs.",
|
||||
"common.evidence.bundle_alert_id_required": "AlertId is required",
|
||||
"common.evidence.bundle_artifact_id_required": "ArtifactId is required",
|
||||
"common.evidence.pdf_export_requires_config": "PDF export requires additional configuration",
|
||||
"common.evidence.invalid_uri_format": "Invalid evidence URI format: {0}. Expected stella://type/path",
|
||||
"common.evidence.invalid_uri_missing_path": "Invalid evidence URI format: {0}. Missing path.",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver cannot resolve evidence type: {0}",
|
||||
"common.evidence.schema_resource_not_found": "Schema resource not found: {0}",
|
||||
"common.evidence.schema_resource_not_available": "Schema resource not available: {0}",
|
||||
"common.evidence.provenance_deserialize_failed": "Failed to deserialize provenance for evidence {0}",
|
||||
"common.evidence.bundle_deserialize_failed": "Failed to deserialize verdict bundle",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "Failed to deserialize delta verdict",
|
||||
"common.canonicalization.value_empty_after_trim": "Value must not be empty after trimming.",
|
||||
"common.canonicalization.deserialize_failed": "Failed to deserialize {0}",
|
||||
"common.canonicalization.datetime_value_null": "DateTimeOffset value is null.",
|
||||
"common.canonicalization.dict_key_null": "Dictionary key cannot be null.",
|
||||
"common.audit.replay_token_value_empty": "Token value cannot be empty.",
|
||||
"common.audit.replay_token_empty": "Token cannot be empty.",
|
||||
"common.audit.replay_token_format_invalid": "Invalid replay token format: {0}",
|
||||
"common.audit.replay_token_version_invalid": "Invalid replay token version: {0}",
|
||||
"common.audit.replay_token_expiration_invalid": "Invalid expiration timestamp in replay token: {0}",
|
||||
"common.audit.replay_token_duplicate_context_key": "AdditionalContext contains duplicate key after normalization: \u0027{0}\u0027.",
|
||||
"common.artifact.uri_format_invalid": "Invalid URI format: {0}",
|
||||
"common.artifact.uri_scheme_not_supported": "URI scheme not supported: {0}",
|
||||
"common.artifact.file_not_accessible": "File not accessible: {0}",
|
||||
"common.artifact.file_too_large": "File too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.uri_not_accessible": "URI not accessible: {0} returned {1}",
|
||||
"common.artifact.content_too_large": "Content too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.fetch_failed": "Failed to fetch from {0}: {1}",
|
||||
"common.delta_verdict.artifact_ref_required": "Artifact reference is required.",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "Unsupported signing algorithm: {0}",
|
||||
"common.delta_verdict.hmac_secret_required": "HMAC signing requires a base64 secret.",
|
||||
"common.eventing.no_entry_assembly": "No entry assembly found",
|
||||
"auth.persistence.deserialize_inputs_failed": "Failed to deserialize inputs",
|
||||
"auth.persistence.deserialize_result_failed": "Failed to deserialize result",
|
||||
"auth.persistence.revocation_sequence_mismatch": "Revocation export sequence mismatch. Expected {0}, current {1}.",
|
||||
"auth.persistence.revocation_update_rejected": "Revocation export state update rejected. Expected sequence {0}."
|
||||
}
|
||||
"_meta": {
|
||||
"locale": "de-DE",
|
||||
"namespace": "common",
|
||||
"version": "1.0"
|
||||
},
|
||||
"common.error.generic": "Etwas ist schiefgelaufen.",
|
||||
"common.error.not_found": "Die angeforderte Ressource wurde nicht gefunden.",
|
||||
"common.error.entity_not_found": "{0} '{1}' nicht gefunden.",
|
||||
"common.error.unauthorized": "Sie sind nicht berechtigt, diese Aktion auszuführen.",
|
||||
"common.error.forbidden": "Zugriff verweigert.",
|
||||
"common.error.bad_request": "Die Anfrage ist ungültig.",
|
||||
"common.error.conflict": "Es ist ein Konflikt aufgetreten. Die Ressource wurde möglicherweise geändert.",
|
||||
"common.error.timeout": "Zeitüberschreitung bei der Anfrage.",
|
||||
"common.error.server_error": "Es ist ein interner Serverfehler aufgetreten. Bitte versuchen Sie es später noch einmal.",
|
||||
"common.error.service_unavailable": "Der Dienst ist vorübergehend nicht verfügbar.",
|
||||
"common.error.too_many_requests": "Zu viele Anfragen. Bitte warten und erneut versuchen.",
|
||||
"common.error.network": "Netzwerkfehler. Überprüfen Sie Ihre Verbindung.",
|
||||
"common.error.body_required": "Anfrageinhalt ist erforderlich.",
|
||||
"common.error.deserialization_failed": "{0} konnte nicht deserialisiert werden.",
|
||||
"common.error.not_supported": "{0} wird nicht unterstützt.",
|
||||
"common.error.already_exists": "{0} '{1}' existiert bereits.",
|
||||
"common.error.revoked": "{0} '{1}' wurde widerrufen und kann nicht verwendet werden.",
|
||||
"common.error.state_invalid": "{0} '{1}' befindet sich nicht im erwarteten Zustand. Aktueller Stand: {2}",
|
||||
"common.validation.required": "{0} ist erforderlich.",
|
||||
"common.validation.invalid": "{0} ist ungültig.",
|
||||
"common.validation.too_long": "{0} überschreitet die maximale Länge von {1}-Zeichen.",
|
||||
"common.validation.too_short": "{0} muss mindestens {1} Zeichen umfassen.",
|
||||
"common.validation.out_of_range": "{0} muss zwischen {1} und {2} liegen.",
|
||||
"common.validation.invalid_format": "{0} hat ein ungültiges Format.",
|
||||
"common.validation.duplicate": "{0} existiert bereits.",
|
||||
"common.validation.empty_not_allowed": "{0} darf nicht leer sein.",
|
||||
"common.validation.empty_after_trim": "{0} darf nach dem Trimmen nicht leer sein.",
|
||||
"common.validation.greater_than_zero": "{0} muss größer als Null sein.",
|
||||
"common.validation.non_negative": "{0} darf nicht negativ sein.",
|
||||
"common.validation.at_least_one": "Es muss mindestens ein {0} konfiguriert sein.",
|
||||
"common.validation.at_least_n": "{0} muss mindestens {1}-Einträge haben.",
|
||||
"common.validation.null_or_empty": "{0} darf nicht null oder leer sein.",
|
||||
"common.validation.absolute_uri": "{0} muss ein absoluter URI sein.",
|
||||
"common.validation.invalid_regex": "{0} '{1}' ist kein gültiger regulärer Ausdruck.",
|
||||
"common.validation.unknown_value": "{0} '{1}' wird nicht erkannt. Zulässige Werte: {2}",
|
||||
"common.validation.max_exceeded": "{0} darf höchstens {1} Zeichen umfassen.",
|
||||
"common.actions.save": "Speichern",
|
||||
"common.actions.cancel": "Abbrechen",
|
||||
"common.actions.delete": "Löschen",
|
||||
"common.actions.confirm": "Bestätigen",
|
||||
"common.actions.submit": "Senden",
|
||||
"common.actions.close": "Schließen",
|
||||
"common.actions.retry": "Erneut versuchen",
|
||||
"common.actions.expand": "Erweitern",
|
||||
"common.actions.collapse": "Einklappen",
|
||||
"common.actions.show_more": "Mehr anzeigen",
|
||||
"common.actions.show_less": "Weniger anzeigen",
|
||||
"common.status.healthy": "Gesund",
|
||||
"common.status.degraded": "Degradiert",
|
||||
"common.status.unavailable": "Nicht verfügbar",
|
||||
"common.status.unknown": "Unbekannt",
|
||||
"common.status.active": "Aktiv",
|
||||
"common.status.inactive": "Inaktiv",
|
||||
"common.status.pending": "Ausstehend",
|
||||
"common.status.running": "Läuft",
|
||||
"common.status.completed": "Vollendet",
|
||||
"common.status.failed": "Fehlgeschlagen",
|
||||
"common.status.canceled": "Abgesagt",
|
||||
"common.status.blocked": "Blockiert",
|
||||
"common.severity.critical": "Kritisch",
|
||||
"common.severity.high": "Hoch",
|
||||
"common.severity.medium": "Mittel",
|
||||
"common.severity.low": "Niedrig",
|
||||
"common.severity.info": "Information",
|
||||
"common.severity.none": "Keine",
|
||||
"common.time.seconds_ago": "{0} vor Sekunden",
|
||||
"common.time.minutes_ago": "{0} vor Minuten",
|
||||
"common.time.hours_ago": "{0} vor Stunden",
|
||||
"common.time.days_ago": "{0} vor Tagen",
|
||||
"common.time.just_now": "Soeben",
|
||||
"common.ui.loading": "Laden...",
|
||||
"common.ui.saving": "Speichern...",
|
||||
"common.ui.deleting": "Löschen...",
|
||||
"common.ui.submitting": "Senden...",
|
||||
"common.ui.no_results": "Keine Ergebnisse gefunden.",
|
||||
"common.ui.offline": "Du bist offline.",
|
||||
"common.ui.reconnecting": "Verbindung wird wiederhergestellt...",
|
||||
"common.ui.back_online": "Wieder online.",
|
||||
"auth.dpop.proof_lifetime_invalid": "Die Lebensdauer des DPoP-Beweises muss größer als Null sein.",
|
||||
"auth.dpop.clock_skew_invalid": "Der für DPoP zulässige Zeitversatz muss zwischen 0 Sekunden und 5 Minuten liegen.",
|
||||
"auth.dpop.replay_window_invalid": "Das DPoP-Wiedergabefenster muss größer oder gleich Null sein.",
|
||||
"auth.dpop.algorithm_required": "Es muss mindestens ein zulässiger DPoP-Algorithmus konfiguriert sein.",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "Zulässige DPoP-Algorithmen dürfen nach der Normalisierung nicht leer sein.",
|
||||
"auth.dpop.options_required": "DPoP-Optionen müssen bereitgestellt werden.",
|
||||
"auth.dpop.nonce_ttl_invalid": "Nonce TTL muss größer als Null sein.",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "Die maximale Ausgabe pro Minute muss mindestens 1 betragen.",
|
||||
"auth.dpop.nonce_store_required": "Dpop.Nonce.Store muss angegeben werden.",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store muss entweder 'memory' oder 'redis' sein.",
|
||||
"auth.dpop.nonce_redis_required": "Bei Verwendung des 'redis'-Stores muss Dpop.Nonce.RedisConnectionString angegeben werden.",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences muss mindestens eine Zielgruppe enthalten.",
|
||||
"auth.dpop.token_three_segments": "Token muss drei Segmente enthalten.",
|
||||
"auth.dpop.segment_out_of_range": "Segmentindex außerhalb des gültigen Bereichs.",
|
||||
"auth.dpop.header_decode_failed": "Header konnte nicht dekodiert werden.",
|
||||
"auth.dpop.header_missing_typ": "Im DPoP-Proof fehlt der typ=dpop+jwt-Header.",
|
||||
"auth.dpop.header_missing_alg": "DPoP-Beweis, fehlender Alg-Header.",
|
||||
"auth.dpop.header_unsupported_alg": "Nicht unterstützter DPoP-Algorithmus.",
|
||||
"auth.dpop.header_missing_jwk": "DPoP-Beweis, fehlender JWK-Header.",
|
||||
"auth.dpop.header_invalid_jwk": "Der DPoP-Proof-JWK-Header ist ungültig.",
|
||||
"auth.dpop.payload_decode_failed": "Nutzlast kann nicht dekodiert werden.",
|
||||
"auth.dpop.payload_missing_htm": "DPoP-Beweis, fehlender HTM-Anspruch.",
|
||||
"auth.dpop.payload_htm_mismatch": "DPoP htm stimmt nicht mit der Anforderungsmethode überein.",
|
||||
"auth.dpop.payload_missing_htu": "DPoP-Beweis fehlt HTU-Anspruch.",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu stimmt nicht mit dem Anforderungs-URI überein.",
|
||||
"auth.dpop.payload_missing_iat": "DPoP-Beweis fehlt iAT-Anspruch.",
|
||||
"auth.dpop.payload_missing_jti": "DPoP-Beweis, fehlender JTI-Anspruch.",
|
||||
"auth.dpop.payload_iat_invalid": "DPoP-Beweis, dass der Anspruch keine gültige Nummer ist.",
|
||||
"auth.dpop.nonce_missing": "DPoP-Beweis, fehlender Nonce-Anspruch.",
|
||||
"auth.dpop.nonce_mismatch": "DPoP-Nonce-Nichtübereinstimmung.",
|
||||
"auth.dpop.proof_future": "Zukünftig ausgestellter DPoP-Nachweis.",
|
||||
"auth.dpop.proof_expired": "DPoP-Beweis abgelaufen.",
|
||||
"auth.dpop.signature_failed": "Die Validierung der DPoP-Proof-Signatur ist fehlgeschlagen.",
|
||||
"auth.dpop.replay_detected": "DPoP-Proof bereits verwendet.",
|
||||
"config.authority.schema_version_required": "Die Autoritätskonfiguration erfordert eine positive schemaVersion.",
|
||||
"config.authority.issuer_required": "Für die Autoritätskonfiguration ist eine Aussteller-URL erforderlich.",
|
||||
"config.authority.issuer_absolute": "Der Autoritätsaussteller muss ein absoluter URI sein.",
|
||||
"config.authority.issuer_https": "Der Autoritätsaussteller muss HTTPS verwenden, es sei denn, er läuft auf einer Loopback-Schnittstelle.",
|
||||
"config.authority.duplicate_tenant": "Die Autoritätskonfiguration enthält eine doppelte Mandanten-ID '{0}'.",
|
||||
"config.authority.property_greater_than_zero": "Für die Berechtigungskonfiguration muss {0} größer als Null sein.",
|
||||
"config.authority.property_max": "Für die Berechtigungskonfiguration muss {0} kleiner oder gleich {1} sein.",
|
||||
"config.authority.remote_inference_required": "Für die Autoritätskonfiguration ist mindestens ein beratendes AI-Remote-Inferenzprofil erforderlich, wenn Remote-Inferenz aktiviert ist.",
|
||||
"config.tenant.id_required": "Jeder Mandant benötigt eine ID (Slug).",
|
||||
"config.tenant.id_format": "Die Mandanten-ID '{0}' darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten.",
|
||||
"config.tenant.project_format": "Der Mandant '{0}' definiert das Projekt '{1}', das nur Kleinbuchstaben, Ziffern und Bindestriche enthalten darf.",
|
||||
"config.tenant.role_missing_config": "Der Mandant '{0}' definiert die Rolle '{1}' ohne Konfiguration.",
|
||||
"config.tenant.role_scope_required": "Die Mandantenrolle '{0}' '{1}' muss mindestens einen Bereich angeben.",
|
||||
"config.tenant.role_unknown_scope": "Die Rolle '{0}' des Mandanten '{1}' verweist auf den unbekannten Bereich '{2}'.",
|
||||
"config.tenant.role_unsupported_attribute": "Die Mandantenrolle '{0}' '{1}' definiert das nicht unterstützte Attribut '{2}'. Zulässige Attribute: env, owner, business_tier.",
|
||||
"config.tenant.delegation_max_tokens": "Für den Mandanten '{0}' muss delegation.maxActiveTokens bei Angabe größer als Null sein.",
|
||||
"config.tenant.remote_inference_disabled": "Die Einwilligung des Mandanten zur Remote-Inferenz kann nicht erteilt werden, wenn die Remote-Inferenz deaktiviert ist.",
|
||||
"config.tenant.remote_inference_consent_version_length": "Die consentVersion für die Remote-Inferenz des Mandanten darf höchstens {0} Zeichen lang sein.",
|
||||
"config.tenant.remote_inference_consented_by_length": "Das Feld consentedBy für die Remote-Inferenz des Mandanten darf höchstens {0} Zeichen lang sein.",
|
||||
"config.tenant.remote_inference_consent_version_required": "Die Zustimmung zur Remote-Inferenz des Mandanten erfordert consentVersion, wenn consentGranted=true ist.",
|
||||
"config.tenant.remote_inference_consented_at_required": "Die Zustimmung zur Remote-Inferenz des Mandanten erfordert consentedAt, wenn consentGranted=true ist.",
|
||||
"config.service_account.id_required": "Seeds für Delegierungsdienstkonten erfordern eine Konto-ID.",
|
||||
"config.service_account.id_format": "Die Dienstkonto-ID '{0}' muss Kleinbuchstaben, Ziffern, Doppelpunkte, Unterstriche oder Bindestriche enthalten.",
|
||||
"config.service_account.tenant_required": "Das Dienstkonto '{0}' erfordert eine Mandantenzuweisung.",
|
||||
"config.service_account.tenant_unknown": "Das Dienstkonto '{0}' verweist auf den unbekannten Mandanten '{1}'.",
|
||||
"config.service_account.scope_required": "Das Dienstkonto '{0}' muss mindestens einen zulässigen Bereich angeben.",
|
||||
"config.service_account.unsupported_attribute": "Das Dienstkonto '{0}' definiert das nicht unterstützte Attribut '{1}'. Zulässige Attribute: env, Owner, business_tier.",
|
||||
"config.plugin.assembly_required": "Das Autoritäts-Plugin '{0}' muss entweder „assemblyName“ oder „assemblyPath“ definieren.",
|
||||
"config.plugin.config_file_required": "Das Autoritäts-Plugin '{0}' muss eine Konfigurationsdatei definieren.",
|
||||
"config.plugin.config_file_missing": "Das Autoritäts-Plugin '{0}' gibt die Konfigurationsdatei '{1}' an, die nicht existiert.",
|
||||
"config.plugin.unknown_capability": "Das Autoritäts-Plugin '{0}' erklärt die unbekannte Funktion '{1}'. Zulässige Werte: Passwort, MFA, ClientProvisioning, Bootstrap.",
|
||||
"config.plugin.descriptor_null": "Der Berechtigungs-Plugin-Deskriptor '{0}' ist null.",
|
||||
"config.delegation.duplicate_account": "Die Delegierungskonfiguration enthält eine doppelte Dienstkonto-ID '{0}'.",
|
||||
"config.delegation.quota_max_tokens": "Für die Konfiguration der Autoritätsdelegierung muss {0}.MaxActiveTokens größer als Null sein.",
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace darf nicht negativ sein.",
|
||||
"config.mtls.audiences_required": "Mtls.EnforceForAudiences muss bei Aktivierung mindestens eine Zielgruppe enthalten.",
|
||||
"config.mtls.ca_empty": "Mtls.AllowedCertificateAuthorities-Einträge dürfen nicht leer sein.",
|
||||
"config.mtls.san_types_required": "Mtls.AllowedSanTypes muss bei Aktivierung mindestens einen Eintrag enthalten.",
|
||||
"config.mtls.subject_patterns_empty": "Mtls.AllowedSubjectPatterns-Einträge dürfen nicht leer sein.",
|
||||
"config.mtls.subject_pattern_invalid": "Mtls.AllowedSubjectPatterns-Eintrag '{0}' ist kein gültiger regulärer Ausdruck.",
|
||||
"config.signing.key_id_required": "Für die Konfiguration der Autoritätssignierung ist signing.activeKeyId erforderlich.",
|
||||
"config.signing.key_path_required": "Für die Konfiguration der Autoritätssignierung ist signing.keyPath erforderlich.",
|
||||
"config.signing.jwks_cache_range": "Für die Konfiguration der Autoritätssignatur muss signing.jwksCacheLifetime zwischen 00:00:01 und 01:00:00 liegen.",
|
||||
"config.signing.additional_key_id_required": "Für zusätzliche Signaturschlüssel ist eine Schlüssel-ID erforderlich.",
|
||||
"config.signing.additional_key_path_required": "Für den Signaturschlüssel '{0}' ist ein Pfad erforderlich.",
|
||||
"config.bootstrap.api_key_required": "Für die Autoritäts-Bootstrap-Konfiguration ist bei Aktivierung ein API-Schlüssel erforderlich.",
|
||||
"config.bootstrap.idp_required": "Wenn die Autoritäts-Bootstrap-Konfiguration aktiviert ist, ist ein Standard-Identitätsanbietername erforderlich.",
|
||||
"config.rate_limit.permit_limit": "Für die Berechtigungsratenbegrenzung '{0}' muss „permitLimit“ größer als Null sein.",
|
||||
"config.rate_limit.queue_limit": "Berechtigungsratenbegrenzung '{0}' queueLimit darf nicht negativ sein.",
|
||||
"config.rate_limit.window": "Das Fenster für die Berechtigungsratenbegrenzung '{0}' muss größer als Null und nicht länger als eine Stunde sein.",
|
||||
"config.storage.connection_required": "Für die Berechtigungsspeicherung ist eine Verbindungszeichenfolge erforderlich.",
|
||||
"config.storage.timeout_invalid": "Das Zeitlimit für den Autoritätsspeicherbefehl muss größer als Null sein.",
|
||||
"config.ack_token.payload_type_required": "notifications.ackTokens.payloadType muss angegeben werden, wenn Bestätigungstoken aktiviert sind.",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime muss größer als Null sein.",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime muss größer als Null und größer oder gleich defaultLifetime sein.",
|
||||
"config.ack_token.key_id_required": "notifications.ackTokens.activeKeyId muss bereitgestellt werden, wenn Bestätigungstoken aktiviert sind.",
|
||||
"config.ack_token.key_path_required": "notifications.ackTokens.keyPath muss bereitgestellt werden, wenn Bestätigungstoken aktiviert sind.",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime muss zwischen 00:00:01 und 01:00:00 liegen.",
|
||||
"config.exceptions.null_template": "Einträge in der Routing-Vorlage für Autoritätsausnahmen dürfen nicht null sein.",
|
||||
"config.exceptions.duplicate_template": "Die Autoritätsausnahme-Routing-Vorlage '{0}' ist mehr als einmal konfiguriert.",
|
||||
"config.exceptions.template_id_required": "Für Autoritätsausnahme-Routing-Vorlagen ist eine ID erforderlich.",
|
||||
"config.exceptions.template_route_required": "Die Autoritätsausnahme-Routing-Vorlage '{0}' erfordert AuthorityRouteId.",
|
||||
"config.sealed_mode.evidence_path_required": "AirGap.SealedMode.EvidencePath muss angegeben werden, wenn die Durchsetzung aktiviert ist.",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge muss zwischen 00:00:01 und 7.00:00:00 liegen.",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime muss größer als Null und kleiner oder gleich AirGap.SealedMode.MaxEvidenceAge sein.",
|
||||
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts muss bei Aktivierung mindestens einen Host enthalten.",
|
||||
"config.escalation.scope_required": "notifications.escalation.scope muss angegeben werden.",
|
||||
"config.anti_forgery.audience_required": "vulnerabilityExplorer.workflow.antiForgery.audience muss angegeben werden, wenn Anti-Fälschungs-Token aktiviert sind.",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime muss größer als Null sein.",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime muss größer als Null und größer oder gleich defaultLifetime sein.",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries darf nicht negativ sein.",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength muss größer als Null sein.",
|
||||
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime muss größer als Null sein, wenn Anhangstoken aktiviert sind.",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime muss größer als Null und größer oder gleich defaultLifetime sein.",
|
||||
"config.attachment.payload_type_required": "vulnerabilityExplorer.attachments.payloadType muss angegeben werden, wenn Anhangstoken aktiviert sind.",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries darf nicht negativ sein.",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength muss größer als Null sein.",
|
||||
"config.api_lifecycle.sunset_after_deprecation": "Das Ablaufdatum der alten Authentifizierung muss nach dem Einstellungsdatum liegen.",
|
||||
"config.api_lifecycle.docs_url_format": "Die URL der Legacy-Authentifizierungsdokumentation muss eine absolute HTTP- oder HTTPS-URL sein.",
|
||||
"crypto.provider.algorithm_not_supported": "Der Signaturalgorithmus '{0}' wird vom Anbieter '{1}' nicht unterstützt.",
|
||||
"crypto.provider.hash_not_supported": "Der Hash-Algorithmus '{0}' wird vom Anbieter '{1}' nicht unterstützt.",
|
||||
"crypto.provider.verify_not_supported": "Der Verifizierungsalgorithmus '{0}' wird vom Anbieter '{1}' nicht unterstützt.",
|
||||
"crypto.provider.key_not_registered": "Der Signaturschlüssel '{0}' ist nicht beim Anbieter '{1}' registriert.",
|
||||
"crypto.provider.key_algorithm_mismatch": "Der Signaturschlüssel '{0}' ist für den Algorithmus '{1}' registriert, nicht für '{2}'.",
|
||||
"crypto.provider.ec_keys_only": "Der Anbieter '{0}' akzeptiert nur EC-Signaturschlüssel.",
|
||||
"crypto.provider.no_password_hashing": "Der Anbieter '{0}' stellt keine Passwort-Hashing-Funktionen zur Verfügung.",
|
||||
"crypto.provider.no_content_hashing": "Der Anbieter '{0}' unterstützt kein Inhalts-Hashing.",
|
||||
"crypto.provider.no_ephemeral_verification": "Der Anbieter '{0}' unterstützt keine kurzlebige Überprüfung.",
|
||||
"crypto.provider.not_signing_capable": "Der Signaturalgorithmus '{0}' wird vom Anbieter '{1}' nicht unterstützt.",
|
||||
"crypto.provider.es256_only": "Derzeit werden vom Anbieter '{0}' nur ES256-Signaturschlüssel unterstützt.",
|
||||
"crypto.provider.p256_required": "ES256-Signaturschlüssel müssen die NIST P-256-Kurve verwenden.",
|
||||
"crypto.provider.curve_mismatch": "Nichtübereinstimmung der Signierschlüsselkurve. Erwartete Kurve '{0}' für Algorithmus '{1}'.",
|
||||
"crypto.registry.empty": "Es muss mindestens ein Kryptoanbieter registriert sein.",
|
||||
"crypto.registry.algorithm_required": "Algorithmus-ID ist erforderlich.",
|
||||
"crypto.registry.signing_not_supported": "Der Signaturalgorithmus '{0}' wird von keinem registrierten Anbieter unterstützt.",
|
||||
"crypto.registry.hash_not_supported": "Der Hash-Algorithmus '{0}' wird von keinem registrierten Anbieter unterstützt.",
|
||||
"crypto.registry.verify_not_supported": "Der Verifizierungsalgorithmus '{0}' wird von keinem registrierten Anbieter unterstützt.",
|
||||
"crypto.registry.active_profile_required": "Aktives Profil ist erforderlich.",
|
||||
"crypto.registry.profile_not_found": "Die Profil-ID '{0}' wurde in der Registrierung nicht gefunden.",
|
||||
"crypto.registry.profile_id_required": "Die Profil-ID darf nicht null oder leer sein.",
|
||||
"crypto.key.algorithm_required": "Algorithmus-ID ist erforderlich.",
|
||||
"crypto.key.private_scalar_required": "Private Schlüsselparameter müssen die Skalarkomponente enthalten.",
|
||||
"crypto.key.verification_only": "Dieser Konstruktor ist nur für Nur-Verifizierungsschlüssel vorgesehen. Setzen Sie „VerificationOnly“ auf „true“.",
|
||||
"crypto.key.public_xy_required": "Die Parameter des öffentlichen Schlüssels müssen X- und Y-Koordinaten enthalten.",
|
||||
"crypto.key.private_material_required": "Privates Schlüsselmaterial muss bereitgestellt werden.",
|
||||
"crypto.hash.algorithm_unsupported": "Nicht unterstützter Hash-Algorithmus '{0}'.",
|
||||
"crypto.hash.purpose_required": "Der Zweck darf nicht null oder leer sein.",
|
||||
"crypto.hmac.algorithm_unknown": "Unbekannter HMAC-Algorithmus '{0}'.",
|
||||
"crypto.hmac.algorithm_unsupported": "Nicht unterstützter HMAC-Algorithmus '{0}'.",
|
||||
"crypto.ecdsa.algorithm_unsupported": "Nicht unterstützter ECDSA-Signaturalgorithmus '{0}'.",
|
||||
"crypto.ecdsa.curve_unsupported": "Nicht unterstützte ECDSA-Kurvenzuordnung für den Algorithmus '{0}'.",
|
||||
"crypto.digest.required": "Digest ist erforderlich.",
|
||||
"crypto.digest.prefix_required": "{0} muss mit '{1}' beginnen.",
|
||||
"crypto.digest.algorithm_unsupported": "Nicht unterstützter Digest-Algorithmus in '{0}'. Es wird nur sha256 unterstützt.",
|
||||
"crypto.digest.hex_length": "{0} muss {1} Hexadezimalzeichen enthalten.",
|
||||
"crypto.password.memory_cost_invalid": "Die Speicherkosten für das Passwort-Hashing müssen größer als Null sein.",
|
||||
"crypto.password.iterations_invalid": "Die Anzahl der Passwort-Hashing-Iterationen muss größer als Null sein.",
|
||||
"crypto.password.parallelism_invalid": "Die Passwort-Hashing-Parallelität muss größer als Null sein.",
|
||||
"crypto.password.algorithm_mismatch": "{0} unterstützt nur den {1}-Algorithmus.",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 erfordert eine positive Iterationszahl.",
|
||||
"crypto.gost.not_der": "Die Signatur ist nicht DER-codiert.",
|
||||
"crypto.gost.invalid_der": "Ungültige DER-Struktur für GOST-Signatur.",
|
||||
"crypto.gost.raw_length": "Die rohe GOST-Signatur muss {0} Bytes umfassen.",
|
||||
"crypto.gost.neither_format": "Die Signaturnutzlast ist weder DER- noch das GOST-Rohformat.",
|
||||
"crypto.gost.coordinate_overflow": "Die Koordinate überschreitet die erwartete Länge.",
|
||||
"crypto.profile.unknown_purpose": "Unbekannter Hash-Zweck '{0}' im Profil '{1}'.",
|
||||
"crypto.compliance.at_least_one_signing": "Es muss mindestens ein Signaturalgorithmus angegeben werden.",
|
||||
"crypto.compliance.at_least_one_hash": "Es muss mindestens ein Hash-Algorithmus angegeben werden.",
|
||||
"crypto.ed25519.private_key_size": "Der private Schlüssel Ed25519 muss 32 oder 64 Byte lang sein.",
|
||||
"crypto.ed25519.public_key_size": "Der öffentliche Schlüssel Ed25519 muss 32 Byte lang sein.",
|
||||
"crypto.ed25519.no_hashing": "Der BouncyCastle Ed25519-Anbieter stellt keine Hashing-Funktionen zur Verfügung.",
|
||||
"crypto.ed25519.raw_key_required": "Der Anbieter '{0}' benötigt rohes Ed25519-Privatschlüsselmaterial.",
|
||||
"crypto.sm.no_password_hashing": "Der SM-Anbieter stellt kein Passwort-Hashing zur Verfügung.",
|
||||
"crypto.sm.raw_key_required": "Der SM2-Anbieter erfordert rohe private Schlüsselbytes (PKCS#8 DER).",
|
||||
"crypto.sm.unsupported_format": "Nicht unterstütztes SM2-Schlüsselformat. Erwarten Sie PEM oder PKCS#8 DER.",
|
||||
"crypto.sm.disabled": "Der Anbieter '{0}' ist deaktiviert. Legen Sie {1}=1 fest (oder deaktivieren Sie RequireEnvironmentGate), um die Software SM2/SM3 zu aktivieren.",
|
||||
"crypto.di.registry_empty": "Das Register des Kryptoanbieters darf nicht leer sein. Konfigurieren Sie mindestens einen Anbieter für RU-Bereitstellungen.",
|
||||
"crypto.di.ru_openssl_required": "Die Linux-RU-Baseline erfordert den Anbieter 'ru.openssl.gost' (stellen Sie STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 ein, um explizit zu überschreiben).",
|
||||
"crypto.di.ru_provider_required": "Die RU-Linux-Basislinie ist falsch konfiguriert: Sowohl ru.openssl.gost als auch ru.pkcs11 sind über die Umgebung deaktiviert. Aktivieren Sie mindestens einen Anbieter.",
|
||||
"crypto.di.no_plugins_loaded": "Es wurden keine Krypto-Anbieter geladen. Überprüfen Sie die Plugin-Konfiguration und das Manifest.",
|
||||
"crypto.kms.rotation_via_policy": "Die {0}-Rotation muss über {1}-Richtlinien oder -Zeitpläne orchestriert werden.",
|
||||
"crypto.kms.revocation_via_policy": "Der Widerruf von {0} muss über {1}-APIs oder Konsole verwaltet werden.",
|
||||
"crypto.kms.public_key_missing_x": "Dem öffentlichen Schlüssel fehlt die X-Koordinate.",
|
||||
"crypto.kms.public_key_missing_y": "Dem öffentlichen Schlüssel fehlt die Y-Koordinate.",
|
||||
"crypto.kms.hash_failed": "Hash-Nutzlast mit SHA-256 fehlgeschlagen.",
|
||||
"crypto.kms.key_not_found": "Schlüssel '{0}' existiert nicht.",
|
||||
"crypto.kms.key_revoked": "Der Schlüssel '{0}' wurde widerrufen und kann nicht rotiert werden.",
|
||||
"crypto.kms.key_revoked_signing": "Der Schlüssel '{0}' ist widerrufen und kann nicht zum Signieren verwendet werden.",
|
||||
"crypto.kms.key_version_not_found": "Die Schlüsselversion '{0}' ist für den Schlüssel '{1}' nicht vorhanden.",
|
||||
"crypto.kms.key_no_active_version": "Der Schlüssel '{0}' hat keine aktive Version.",
|
||||
"crypto.kms.key_version_inactive": "Die Schlüsselversion '{0}' ist nicht aktiv. Aktueller Stand: {1}",
|
||||
"crypto.kms.key_no_public_material": "Die Schlüsselversion '{0}' '{1}' verfügt über kein öffentliches Schlüsselmaterial.",
|
||||
"crypto.kms.algorithm_unsupported": "Der Algorithmus '{0}' wird vom Datei-KMS-Treiber nicht unterstützt.",
|
||||
"crypto.kms.curve_unsupported": "Kurve '{0}' wird nicht unterstützt.",
|
||||
"crypto.kms.metadata_failed": "Schlüsselmetadaten konnten nicht erstellt oder geladen werden.",
|
||||
"crypto.kms.algorithm_mismatch": "Nichtübereinstimmung des Algorithmus. '{0}' erwartet, '{1}' erhalten.",
|
||||
"crypto.kms.version_exists": "Für den Schlüssel '{1}' existiert bereits die Schlüsselversion '{0}'.",
|
||||
"crypto.kms.material_not_found": "Schlüsselmaterial für Version '{0}' wurde nicht gefunden.",
|
||||
"crypto.kms.envelope_deserialize_failed": "Der Schlüsselumschlag konnte nicht deserialisiert werden.",
|
||||
"crypto.kms.payload_deserialize_failed": "Schlüsselnutzlast konnte nicht deserialisiert werden.",
|
||||
"crypto.kms.pem_empty": "Der öffentliche Schlüssel PEM darf nicht leer sein.",
|
||||
"crypto.kms.no_primary_version": "Für den Kryptoschlüssel '{0}' gibt es keine aktive Primärversion.",
|
||||
"crypto.kms.es256_only": "Der Anbieter '{0}' unterstützt nur ES256-Signaturschlüssel.",
|
||||
"crypto.kms.version_metadata_required": "KMS-Signaturschlüssel müssen den Metadateneintrag 'kms.version' enthalten.",
|
||||
"crypto.kms.missing_public_key": "Dem KMS-Signaturschlüssel fehlt öffentliches Schlüsselmaterial.",
|
||||
"crypto.fido2.curve_unsupported": "Nicht unterstützte FIDO2-Kurven-OID '{0}'.",
|
||||
"crypto.fido2.rotation_required": "Für die Rotation der FIDO2-Anmeldeinformationen ist eine Neuregistrierung erforderlich.",
|
||||
"crypto.fido2.revocation_relying_party": "Der Widerruf von FIDO2-Anmeldeinformationen muss auf der vertrauenden Seite verwaltet werden.",
|
||||
"crypto.fido2.missing_x": "Dem öffentlichen FIDO2-Schlüssel fehlt die X-Koordinate.",
|
||||
"crypto.fido2.missing_y": "Dem öffentlichen FIDO2-Schlüssel fehlt die Y-Koordinate.",
|
||||
"crypto.fido2.authenticator_required": "IFido2Authenticator muss registriert sein, um FIDO2 KMS verwenden zu können.",
|
||||
"crypto.pkcs11.rotation_hsm": "Für die PKCS#11-Rotation sind HSM-Verwaltungstools erforderlich.",
|
||||
"crypto.pkcs11.revocation_hsm": "Der PKCS#11-Widerruf muss durch HSM-Richtlinien gehandhabt werden.",
|
||||
"crypto.pkcs11.slot_not_found": "Der PKCS#11-Steckplatz konnte nicht aufgelöst werden.",
|
||||
"crypto.pkcs11.private_key_not_found": "Der private PKCS#11-Schlüssel wurde nicht gefunden.",
|
||||
"crypto.pkcs11.public_key_not_found": "Öffentlicher PKCS#11-Schlüssel nicht gefunden.",
|
||||
"crypto.pkcs11.missing_ec_point": "Im öffentlichen Schlüssel fehlt der EC-Punkt.",
|
||||
"crypto.pkcs11.missing_ec_params": "Dem öffentlichen Schlüssel fehlen EC-Parameter.",
|
||||
"crypto.pkcs11.unsupported_point_format": "Nicht unterstütztes EC-Punktformat.",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "Nicht unterstützte EC-Kurve OID '{0}'.",
|
||||
"crypto.pkcs11.curve_unsupported": "Nicht unterstützte EC-Kurve '{0}'.",
|
||||
"common.provcache.sbom_hash_required": "Der SBOM-Hash darf nicht null oder leer sein.",
|
||||
"common.provcache.fetch_url_absolute": "Die Lazy-Fetch-Basis-URL muss absolut sein.",
|
||||
"common.provcache.fetch_url_no_userinfo": "Die Lazy-Fetch-Basis-URL darf keine Benutzerinformationen enthalten.",
|
||||
"common.provcache.fetch_url_host_required": "Die Lazy-Fetch-Basis-URL muss einen Host enthalten.",
|
||||
"common.provcache.fetch_url_scheme_invalid": "Das Lazy-Fetch-Basis-URL-Schema '{0}' ist nicht zulässig.",
|
||||
"common.provcache.fetch_url_host_invalid": "Der Lazy-Fetch-Basis-URL-Host '{0}' steht nicht auf der Zulassungsliste.",
|
||||
"common.provcache.no_chunks_provided": "Keine Stücke vorhanden.",
|
||||
"common.provcache.bundle_deserialize_failed": "Das Deserialisieren des Bundles ist fehlgeschlagen.",
|
||||
"common.provcache.signer_not_configured": "Der Unterzeichner ist nicht konfiguriert.",
|
||||
"common.provcache.signing_requested_no_signer": "Signierung angefordert, aber kein Signierer konfiguriert.",
|
||||
"common.provcache.cache_entry_not_found": "Cache-Eintrag für VeriKey nicht gefunden: {0}",
|
||||
"common.provcache.chunk_manifest_not_found": "Chunk-Manifest für Proof-Root nicht gefunden: {0}",
|
||||
"common.provcache.http_timeout_invalid": "Das HTTP-Zeitlimit für Lazy Fetch muss eine positive, nicht unendliche Dauer sein.",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher erfordert eine BaseAddress auf dem HTTP-Client.",
|
||||
"common.provcache.merkle_root_mismatch": "Nichtübereinstimmung der Merkle-Wurzeln. Erwartet: {0}, Berechnet: {1}",
|
||||
"common.provcache.chunk_verification_failed": "Chunk {0}-Überprüfung fehlgeschlagen. Erwarteter Hash: {1}",
|
||||
"common.provcache.artifact_reference_required": "Artefaktreferenz ist erforderlich.",
|
||||
"common.provcache.artifact_digest_required": "Artefakt-Digest ist erforderlich.",
|
||||
"common.provcache.decision_digest_required": "DecisionDigest ist erforderlich.",
|
||||
"common.provcache.decision_digest_verikey_required": "DecisionDigest.VeriKey ist erforderlich.",
|
||||
"common.provcache.digest_empty": "Digest darf nicht leer sein.",
|
||||
"common.provcache.time_window_required": "Das Zeitfenster darf nicht null oder leer sein.",
|
||||
"common.provcache.vex_hash_required": "Der VEX-Hash-Set-Hash darf nicht null oder leer sein.",
|
||||
"common.provcache.policy_hash_required": "Der Richtlinien-Hash darf nicht null oder leer sein.",
|
||||
"common.provcache.source_hash_required": "Der Quell-Hash darf nicht null oder leer sein.",
|
||||
"common.provcache.signer_set_hash_required": "Der Hash des Unterzeichnersatzes darf nicht null oder leer sein.",
|
||||
"common.evidence.toolchain_required": "ToolChain muss vor dem Erstellen des Index festgelegt werden.",
|
||||
"common.evidence.deserialization_failed": "Der Beweisindex konnte nicht deserialisiert werden.",
|
||||
"common.evidence.verdict_deserialization_failed": "Das Urteil konnte nicht deserialisiert werden.",
|
||||
"common.evidence.inputs_json_required": "JSON darf nicht null oder leer sein.",
|
||||
"common.evidence.inputs_deserialization_failed": "Die Deserialisierung der angehefteten Bewertungseingaben ist fehlgeschlagen.",
|
||||
"common.evidence.bundle_alert_id_required": "AlertId ist erforderlich",
|
||||
"common.evidence.bundle_artifact_id_required": "ArtifactId ist erforderlich",
|
||||
"common.evidence.pdf_export_requires_config": "Der PDF-Export erfordert zusätzliche Konfiguration",
|
||||
"common.evidence.invalid_uri_format": "Ungültiges Beweis-URI-Format: {0}. Erwartet wird stella://type/path",
|
||||
"common.evidence.invalid_uri_missing_path": "Ungültiges Beweis-URI-Format: {0}. Fehlender Pfad.",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver kann den Beweistyp {0} nicht auflösen",
|
||||
"common.evidence.schema_resource_not_found": "Schemaressource nicht gefunden: {0}",
|
||||
"common.evidence.schema_resource_not_available": "Schemaressource nicht verfügbar: {0}",
|
||||
"common.evidence.provenance_deserialize_failed": "Die Deserialisierung der Herkunft als Beweismittel ist fehlgeschlagen {0}",
|
||||
"common.evidence.bundle_deserialize_failed": "Das Urteilspaket konnte nicht deserialisiert werden",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "Delta-Urteil konnte nicht deserialisiert werden",
|
||||
"common.canonicalization.value_empty_after_trim": "Der Wert darf nach dem Trimmen nicht leer sein.",
|
||||
"common.canonicalization.deserialize_failed": "{0} konnte nicht deserialisiert werden",
|
||||
"common.canonicalization.datetime_value_null": "Der DateTimeOffset-Wert ist null.",
|
||||
"common.canonicalization.dict_key_null": "Der Wörterbuchschlüssel darf nicht null sein.",
|
||||
"common.audit.replay_token_value_empty": "Der Tokenwert darf nicht leer sein.",
|
||||
"common.audit.replay_token_empty": "Token darf nicht leer sein.",
|
||||
"common.audit.replay_token_format_invalid": "Ungültiges Wiedergabetokenformat: {0}",
|
||||
"common.audit.replay_token_version_invalid": "Ungültige Replay-Token-Version: {0}",
|
||||
"common.audit.replay_token_expiration_invalid": "Ungültiger Ablaufzeitstempel im Wiedergabetoken: {0}",
|
||||
"common.audit.replay_token_duplicate_context_key": "AdditionalContext enthält nach der Normalisierung einen doppelten Schlüssel: '{0}'.",
|
||||
"common.artifact.uri_format_invalid": "Ungültiges URI-Format: {0}",
|
||||
"common.artifact.uri_scheme_not_supported": "URI-Schema nicht unterstützt: {0}",
|
||||
"common.artifact.file_not_accessible": "Auf die Datei kann nicht zugegriffen werden: {0}",
|
||||
"common.artifact.file_too_large": "Datei zu groß: {0} Bytes überschreiten die Grenze von 100 MB",
|
||||
"common.artifact.uri_not_accessible": "URI nicht zugänglich: {0} hat {1} zurückgegeben",
|
||||
"common.artifact.content_too_large": "Inhalt zu groß: {0} Bytes überschreiten die 100-MB-Grenze",
|
||||
"common.artifact.fetch_failed": "Fehler beim Abrufen von {0}: {1}",
|
||||
"common.delta_verdict.artifact_ref_required": "Artefaktreferenz ist erforderlich.",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "Nicht unterstützter Signaturalgorithmus: {0}",
|
||||
"common.delta_verdict.hmac_secret_required": "Für die HMAC-Signierung ist ein Base64-Geheimnis erforderlich.",
|
||||
"common.eventing.no_entry_assembly": "Keine Eintragsassembly gefunden",
|
||||
"auth.persistence.deserialize_inputs_failed": "Eingaben konnten nicht deserialisiert werden",
|
||||
"auth.persistence.deserialize_result_failed": "Ergebnis konnte nicht deserialisiert werden",
|
||||
"auth.persistence.revocation_sequence_mismatch": "Nicht übereinstimmende Sperrexportsequenz. Erwartet {0}, aktuell {1}.",
|
||||
"auth.persistence.revocation_update_rejected": "Aktualisierung des Widerrufexportstatus abgelehnt. Erwartete Sequenz {0}."
|
||||
}
|
||||
|
||||
@@ -1,411 +1,367 @@
|
||||
{
|
||||
"_meta": { "locale": "es-ES", "namespace": "common", "version": "1.1" },
|
||||
|
||||
"common.error.generic": "Something went wrong.",
|
||||
"common.error.not_found": "The requested resource was not found.",
|
||||
"common.error.entity_not_found": "{0} '{1}' not found.",
|
||||
"common.error.unauthorized": "You do not have permission to perform this action.",
|
||||
"common.error.forbidden": "Access denied.",
|
||||
"common.error.bad_request": "The request is invalid.",
|
||||
"common.error.conflict": "A conflict occurred. The resource may have been modified.",
|
||||
"common.error.timeout": "Request timed out after {0} seconds.",
|
||||
"common.error.server_error": "An internal server error occurred. Please try again later.",
|
||||
"common.error.service_unavailable": "The service is temporarily unavailable.",
|
||||
"common.error.too_many_requests": "Too many requests. Please wait and try again.",
|
||||
"common.error.network": "Network error. Check your connection.",
|
||||
"common.error.body_required": "Request body is required.",
|
||||
"common.error.deserialization_failed": "Failed to deserialize {0}.",
|
||||
"common.error.not_supported": "{0} is not supported.",
|
||||
"common.error.already_exists": "{0} '{1}' already exists.",
|
||||
"common.error.revoked": "{0} '{1}' has been revoked and cannot be used.",
|
||||
"common.error.state_invalid": "{0} '{1}' is not in the expected state. Current state: {2}",
|
||||
|
||||
"common.validation.required": "{0} is required.",
|
||||
"common.validation.invalid": "{0} is invalid.",
|
||||
"common.validation.too_long": "{0} exceeds the maximum length of {1} characters.",
|
||||
"common.validation.too_short": "{0} must be at least {1} characters.",
|
||||
"common.validation.out_of_range": "{0} must be between {1} and {2}.",
|
||||
"common.validation.invalid_format": "{0} has an invalid format.",
|
||||
"common.validation.duplicate": "{0} already exists.",
|
||||
"common.validation.empty_not_allowed": "{0} must not be empty.",
|
||||
"common.validation.empty_after_trim": "{0} must not be empty after trimming.",
|
||||
"common.validation.greater_than_zero": "{0} must be greater than zero.",
|
||||
"common.validation.non_negative": "{0} must be non-negative.",
|
||||
"common.validation.at_least_one": "At least one {0} must be configured.",
|
||||
"common.validation.at_least_n": "{0} must have at least {1} entries.",
|
||||
"common.validation.null_or_empty": "{0} cannot be null or empty.",
|
||||
"common.validation.absolute_uri": "{0} must be an absolute URI.",
|
||||
"common.validation.invalid_regex": "{0} '{1}' is not a valid regular expression.",
|
||||
"common.validation.unknown_value": "{0} '{1}' is not recognized. Allowed values: {2}",
|
||||
"common.validation.max_exceeded": "{0} must be {1} characters or fewer.",
|
||||
|
||||
"common.actions.save": "Save",
|
||||
"common.actions.cancel": "Cancel",
|
||||
"common.actions.delete": "Delete",
|
||||
"common.actions.confirm": "Confirm",
|
||||
"common.actions.submit": "Submit",
|
||||
"common.actions.close": "Close",
|
||||
"common.actions.retry": "Retry",
|
||||
"common.actions.expand": "Expand",
|
||||
"common.actions.collapse": "Collapse",
|
||||
"common.actions.show_more": "Show more",
|
||||
"common.actions.show_less": "Show less",
|
||||
|
||||
"common.status.healthy": "Healthy",
|
||||
"common.status.degraded": "Degraded",
|
||||
"common.status.unavailable": "Unavailable",
|
||||
"common.status.unknown": "Unknown",
|
||||
"common.status.active": "Active",
|
||||
"common.status.inactive": "Inactive",
|
||||
"common.status.pending": "Pending",
|
||||
"common.status.running": "Running",
|
||||
"common.status.completed": "Completed",
|
||||
"common.status.failed": "Failed",
|
||||
"common.status.canceled": "Canceled",
|
||||
"common.status.blocked": "Blocked",
|
||||
|
||||
"common.severity.critical": "Critical",
|
||||
"common.severity.high": "High",
|
||||
"common.severity.medium": "Medium",
|
||||
"common.severity.low": "Low",
|
||||
"common.severity.info": "Info",
|
||||
"common.severity.none": "None",
|
||||
|
||||
"common.time.seconds_ago": "{0} seconds ago",
|
||||
"common.time.minutes_ago": "{0} minutes ago",
|
||||
"common.time.hours_ago": "{0} hours ago",
|
||||
"common.time.days_ago": "{0} days ago",
|
||||
"common.time.just_now": "Just now",
|
||||
|
||||
"common.ui.loading": "Loading...",
|
||||
"common.ui.saving": "Saving...",
|
||||
"common.ui.deleting": "Deleting...",
|
||||
"common.ui.submitting": "Submitting...",
|
||||
"common.ui.no_results": "No results found.",
|
||||
"common.ui.offline": "You are offline.",
|
||||
"common.ui.reconnecting": "Reconnecting...",
|
||||
"common.ui.back_online": "Back online.",
|
||||
|
||||
"auth.dpop.proof_lifetime_invalid": "DPoP proof lifetime must be greater than zero.",
|
||||
"auth.dpop.clock_skew_invalid": "DPoP allowed clock skew must be between 0 seconds and 5 minutes.",
|
||||
"auth.dpop.replay_window_invalid": "DPoP replay window must be greater than or equal to zero.",
|
||||
"auth.dpop.algorithm_required": "At least one allowed DPoP algorithm must be configured.",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "Allowed DPoP algorithms cannot be empty after normalization.",
|
||||
"auth.dpop.options_required": "DPoP options must be provided.",
|
||||
"auth.dpop.nonce_ttl_invalid": "Nonce TTL must be greater than zero.",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "Max issuance per minute must be at least 1.",
|
||||
"auth.dpop.nonce_store_required": "Dpop.Nonce.Store must be specified.",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store must be either 'memory' or 'redis'.",
|
||||
"auth.dpop.nonce_redis_required": "Dpop.Nonce.RedisConnectionString must be provided when using the 'redis' store.",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences must include at least one audience.",
|
||||
"auth.dpop.token_three_segments": "Token must contain three segments.",
|
||||
"auth.dpop.segment_out_of_range": "Segment index out of range.",
|
||||
"auth.dpop.header_decode_failed": "Unable to decode header.",
|
||||
"auth.dpop.header_missing_typ": "DPoP proof missing typ=dpop+jwt header.",
|
||||
"auth.dpop.header_missing_alg": "DPoP proof missing alg header.",
|
||||
"auth.dpop.header_unsupported_alg": "Unsupported DPoP algorithm.",
|
||||
"auth.dpop.header_missing_jwk": "DPoP proof missing jwk header.",
|
||||
"auth.dpop.header_invalid_jwk": "DPoP proof jwk header is invalid.",
|
||||
"auth.dpop.payload_decode_failed": "Unable to decode payload.",
|
||||
"auth.dpop.payload_missing_htm": "DPoP proof missing htm claim.",
|
||||
"auth.dpop.payload_htm_mismatch": "DPoP htm does not match request method.",
|
||||
"auth.dpop.payload_missing_htu": "DPoP proof missing htu claim.",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu does not match request URI.",
|
||||
"auth.dpop.payload_missing_iat": "DPoP proof missing iat claim.",
|
||||
"auth.dpop.payload_missing_jti": "DPoP proof missing jti claim.",
|
||||
"auth.dpop.payload_iat_invalid": "DPoP proof iat claim is not a valid number.",
|
||||
"auth.dpop.nonce_missing": "DPoP proof missing nonce claim.",
|
||||
"auth.dpop.nonce_mismatch": "DPoP nonce mismatch.",
|
||||
"auth.dpop.proof_future": "DPoP proof issued in the future.",
|
||||
"auth.dpop.proof_expired": "DPoP proof expired.",
|
||||
"auth.dpop.signature_failed": "DPoP proof signature validation failed.",
|
||||
"auth.dpop.replay_detected": "DPoP proof already used.",
|
||||
|
||||
"config.authority.schema_version_required": "Authority configuration requires a positive schemaVersion.",
|
||||
"config.authority.issuer_required": "Authority configuration requires an issuer URL.",
|
||||
"config.authority.issuer_absolute": "Authority issuer must be an absolute URI.",
|
||||
"config.authority.issuer_https": "Authority issuer must use HTTPS unless running on a loopback interface.",
|
||||
"config.authority.duplicate_tenant": "Authority configuration contains duplicate tenant identifier '{0}'.",
|
||||
"config.authority.property_greater_than_zero": "Authority configuration requires {0} to be greater than zero.",
|
||||
"config.authority.property_max": "Authority configuration requires {0} to be less than or equal to {1}.",
|
||||
"config.authority.remote_inference_required": "Authority configuration requires at least one advisory AI remote inference profile when remote inference is enabled.",
|
||||
|
||||
"config.tenant.id_required": "Each tenant requires an id (slug).",
|
||||
"config.tenant.id_format": "Tenant id '{0}' must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.project_format": "Tenant '{0}' defines project '{1}' which must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.role_missing_config": "Tenant '{0}' defines role '{1}' without configuration.",
|
||||
"config.tenant.role_scope_required": "Tenant '{0}' role '{1}' must specify at least one scope.",
|
||||
"config.tenant.role_unknown_scope": "Tenant '{0}' role '{1}' references unknown scope '{2}'.",
|
||||
"config.tenant.role_unsupported_attribute": "Tenant '{0}' role '{1}' defines unsupported attribute '{2}'. Allowed attributes: env, owner, business_tier.",
|
||||
"config.tenant.delegation_max_tokens": "Tenant '{0}' delegation maxActiveTokens must be greater than zero when specified.",
|
||||
"config.tenant.remote_inference_disabled": "Tenant remote inference consent cannot be granted when remote inference is disabled.",
|
||||
"config.tenant.remote_inference_consent_version_length": "Tenant remote inference consentVersion must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consented_by_length": "Tenant remote inference consentedBy must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consent_version_required": "Tenant remote inference consent requires consentVersion when consentGranted is true.",
|
||||
"config.tenant.remote_inference_consented_at_required": "Tenant remote inference consent requires consentedAt when consentGranted is true.",
|
||||
|
||||
"config.service_account.id_required": "Delegation service account seeds require an accountId.",
|
||||
"config.service_account.id_format": "Service account id '{0}' must contain lowercase letters, digits, colon, underscore, or hyphen.",
|
||||
"config.service_account.tenant_required": "Service account '{0}' requires a tenant assignment.",
|
||||
"config.service_account.tenant_unknown": "Service account '{0}' references unknown tenant '{1}'.",
|
||||
"config.service_account.scope_required": "Service account '{0}' must specify at least one allowed scope.",
|
||||
"config.service_account.unsupported_attribute": "Service account '{0}' defines unsupported attribute '{1}'. Allowed attributes: env, owner, business_tier.",
|
||||
|
||||
"config.plugin.assembly_required": "Authority plugin '{0}' must define either assemblyName or assemblyPath.",
|
||||
"config.plugin.config_file_required": "Authority plugin '{0}' must define a configFile.",
|
||||
"config.plugin.config_file_missing": "Authority plugin '{0}' specifies configFile '{1}' which does not exist.",
|
||||
"config.plugin.unknown_capability": "Authority plugin '{0}' declares unknown capability '{1}'. Allowed values: password, mfa, clientProvisioning, bootstrap.",
|
||||
"config.plugin.descriptor_null": "Authority plugin descriptor '{0}' is null.",
|
||||
|
||||
"config.delegation.duplicate_account": "Delegation configuration contains duplicate service account id '{0}'.",
|
||||
"config.delegation.quota_max_tokens": "Authority delegation configuration requires {0}.MaxActiveTokens to be greater than zero.",
|
||||
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace must be non-negative.",
|
||||
"config.mtls.audiences_required": "Mtls.EnforceForAudiences must include at least one audience when enabled.",
|
||||
"config.mtls.ca_empty": "Mtls.AllowedCertificateAuthorities entries must not be empty.",
|
||||
"config.mtls.san_types_required": "Mtls.AllowedSanTypes must include at least one entry when enabled.",
|
||||
"config.mtls.subject_patterns_empty": "Mtls.AllowedSubjectPatterns entries must not be empty.",
|
||||
"config.mtls.subject_pattern_invalid": "Mtls.AllowedSubjectPatterns entry '{0}' is not a valid regular expression.",
|
||||
|
||||
"config.signing.key_id_required": "Authority signing configuration requires signing.activeKeyId.",
|
||||
"config.signing.key_path_required": "Authority signing configuration requires signing.keyPath.",
|
||||
"config.signing.jwks_cache_range": "Authority signing configuration requires signing.jwksCacheLifetime to be between 00:00:01 and 01:00:00.",
|
||||
"config.signing.additional_key_id_required": "Additional signing keys require a keyId.",
|
||||
"config.signing.additional_key_path_required": "Signing key '{0}' requires a path.",
|
||||
|
||||
"config.bootstrap.api_key_required": "Authority bootstrap configuration requires an API key when enabled.",
|
||||
"config.bootstrap.idp_required": "Authority bootstrap configuration requires a default identity provider name when enabled.",
|
||||
|
||||
"config.rate_limit.permit_limit": "Authority rate limiting '{0}' requires permitLimit to be greater than zero.",
|
||||
"config.rate_limit.queue_limit": "Authority rate limiting '{0}' queueLimit cannot be negative.",
|
||||
"config.rate_limit.window": "Authority rate limiting '{0}' window must be greater than zero and no more than one hour.",
|
||||
|
||||
"config.storage.connection_required": "Authority storage requires a connection string.",
|
||||
"config.storage.timeout_invalid": "Authority storage command timeout must be greater than zero.",
|
||||
|
||||
"config.ack_token.payload_type_required": "notifications.ackTokens.payloadType must be specified when ack tokens are enabled.",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime must be greater than zero.",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.ack_token.key_id_required": "notifications.ackTokens.activeKeyId must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.key_path_required": "notifications.ackTokens.keyPath must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime must be between 00:00:01 and 01:00:00.",
|
||||
|
||||
"config.exceptions.null_template": "Authority exception routing template entries must not be null.",
|
||||
"config.exceptions.duplicate_template": "Authority exception routing template '{0}' is configured more than once.",
|
||||
"config.exceptions.template_id_required": "Authority exception routing templates require an id.",
|
||||
"config.exceptions.template_route_required": "Authority exception routing template '{0}' requires authorityRouteId.",
|
||||
|
||||
"config.sealed_mode.evidence_path_required": "AirGap.SealedMode.EvidencePath must be provided when enforcement is enabled.",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge must be between 00:00:01 and 7.00:00:00.",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime must be greater than zero and less than or equal to AirGap.SealedMode.MaxEvidenceAge.",
|
||||
|
||||
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts must include at least one host when enabled.",
|
||||
"config.escalation.scope_required": "notifications.escalation.scope must be specified.",
|
||||
|
||||
"config.anti_forgery.audience_required": "vulnerabilityExplorer.workflow.antiForgery.audience must be specified when anti-forgery tokens are enabled.",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime must be greater than zero.",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries must be non-negative.",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength must be greater than zero.",
|
||||
|
||||
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime must be greater than zero when attachment tokens are enabled.",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.attachment.payload_type_required": "vulnerabilityExplorer.attachments.payloadType must be specified when attachment tokens are enabled.",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries must be non-negative.",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength must be greater than zero.",
|
||||
|
||||
"config.api_lifecycle.sunset_after_deprecation": "Legacy auth sunset date must be after the deprecation date.",
|
||||
"config.api_lifecycle.docs_url_format": "Legacy auth documentation URL must be an absolute HTTP or HTTPS URL.",
|
||||
|
||||
"crypto.provider.algorithm_not_supported": "Signing algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.hash_not_supported": "Hash algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.verify_not_supported": "Verification algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.key_not_registered": "Signing key '{0}' is not registered with provider '{1}'.",
|
||||
"crypto.provider.key_algorithm_mismatch": "Signing key '{0}' is registered for algorithm '{1}', not '{2}'.",
|
||||
"crypto.provider.ec_keys_only": "Provider '{0}' only accepts EC signing keys.",
|
||||
"crypto.provider.no_password_hashing": "Provider '{0}' does not expose password hashing capabilities.",
|
||||
"crypto.provider.no_content_hashing": "Provider '{0}' does not support content hashing.",
|
||||
"crypto.provider.no_ephemeral_verification": "Provider '{0}' does not support ephemeral verification.",
|
||||
"crypto.provider.not_signing_capable": "Signing algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.es256_only": "Only ES256 signing keys are currently supported by provider '{0}'.",
|
||||
"crypto.provider.p256_required": "ES256 signing keys must use the NIST P-256 curve.",
|
||||
"crypto.provider.curve_mismatch": "Signing key curve mismatch. Expected curve '{0}' for algorithm '{1}'.",
|
||||
|
||||
"crypto.registry.empty": "At least one crypto provider must be registered.",
|
||||
"crypto.registry.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.registry.signing_not_supported": "Signing algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.hash_not_supported": "Hash algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.verify_not_supported": "Verification algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.active_profile_required": "Active profile is required.",
|
||||
"crypto.registry.profile_not_found": "Profile ID '{0}' is not found in the registry.",
|
||||
"crypto.registry.profile_id_required": "Profile ID cannot be null or empty.",
|
||||
|
||||
"crypto.key.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.key.private_scalar_required": "Private key parameters must include the scalar component.",
|
||||
"crypto.key.verification_only": "This constructor is only for verification-only keys. Set verificationOnly to true.",
|
||||
"crypto.key.public_xy_required": "Public key parameters must include X and Y coordinates.",
|
||||
"crypto.key.private_material_required": "Private key material must be provided.",
|
||||
|
||||
"crypto.hash.algorithm_unsupported": "Unsupported hash algorithm '{0}'.",
|
||||
"crypto.hash.purpose_required": "Purpose cannot be null or empty.",
|
||||
"crypto.hmac.algorithm_unknown": "Unknown HMAC algorithm '{0}'.",
|
||||
"crypto.hmac.algorithm_unsupported": "Unsupported HMAC algorithm '{0}'.",
|
||||
|
||||
"crypto.ecdsa.algorithm_unsupported": "Unsupported ECDSA signing algorithm '{0}'.",
|
||||
"crypto.ecdsa.curve_unsupported": "Unsupported ECDSA curve mapping for algorithm '{0}'.",
|
||||
|
||||
"crypto.digest.required": "Digest is required.",
|
||||
"crypto.digest.prefix_required": "{0} must start with '{1}'.",
|
||||
"crypto.digest.algorithm_unsupported": "Unsupported digest algorithm in '{0}'. Only sha256 is supported.",
|
||||
"crypto.digest.hex_length": "{0} must contain {1} hexadecimal characters.",
|
||||
|
||||
"crypto.password.memory_cost_invalid": "Password hashing memory cost must be greater than zero.",
|
||||
"crypto.password.iterations_invalid": "Password hashing iteration count must be greater than zero.",
|
||||
"crypto.password.parallelism_invalid": "Password hashing parallelism must be greater than zero.",
|
||||
"crypto.password.algorithm_mismatch": "{0} only supports the {1} algorithm.",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 requires a positive iteration count.",
|
||||
|
||||
"crypto.gost.not_der": "Signature is not DER encoded.",
|
||||
"crypto.gost.invalid_der": "Invalid DER structure for GOST signature.",
|
||||
"crypto.gost.raw_length": "Raw GOST signature must be {0} bytes.",
|
||||
"crypto.gost.neither_format": "Signature payload is neither DER nor raw GOST format.",
|
||||
"crypto.gost.coordinate_overflow": "Coordinate exceeds expected length.",
|
||||
|
||||
"crypto.profile.unknown_purpose": "Unknown hash purpose '{0}' in profile '{1}'.",
|
||||
"crypto.compliance.at_least_one_signing": "At least one signing algorithm must be supplied.",
|
||||
"crypto.compliance.at_least_one_hash": "At least one hash algorithm must be supplied.",
|
||||
|
||||
"crypto.ed25519.private_key_size": "Ed25519 private key must be 32 or 64 bytes.",
|
||||
"crypto.ed25519.public_key_size": "Ed25519 public key must be 32 bytes.",
|
||||
"crypto.ed25519.no_hashing": "BouncyCastle Ed25519 provider does not expose hashing capabilities.",
|
||||
"crypto.ed25519.raw_key_required": "Provider '{0}' requires raw Ed25519 private key material.",
|
||||
|
||||
"crypto.sm.no_password_hashing": "SM provider does not expose password hashing.",
|
||||
"crypto.sm.raw_key_required": "SM2 provider requires raw private key bytes (PKCS#8 DER).",
|
||||
"crypto.sm.unsupported_format": "Unsupported SM2 key format. Expect PEM or PKCS#8 DER.",
|
||||
"crypto.sm.disabled": "Provider '{0}' is disabled. Set {1}=1 (or disable RequireEnvironmentGate) to enable software SM2/SM3.",
|
||||
|
||||
"crypto.di.registry_empty": "Crypto provider registry cannot be empty. Configure at least one provider for RU deployments.",
|
||||
"crypto.di.ru_openssl_required": "Linux RU baseline requires provider 'ru.openssl.gost' (set STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 to override explicitly).",
|
||||
"crypto.di.ru_provider_required": "RU Linux baseline is misconfigured: both ru.openssl.gost and ru.pkcs11 are disabled via environment. Enable at least one provider.",
|
||||
"crypto.di.no_plugins_loaded": "No crypto providers were loaded. Check plugin configuration and manifest.",
|
||||
|
||||
"crypto.kms.rotation_via_policy": "{0} rotation must be orchestrated via {1} policies or schedules.",
|
||||
"crypto.kms.revocation_via_policy": "{0} revocation must be managed through {1} APIs or console.",
|
||||
"crypto.kms.public_key_missing_x": "Public key missing X coordinate.",
|
||||
"crypto.kms.public_key_missing_y": "Public key missing Y coordinate.",
|
||||
"crypto.kms.hash_failed": "Failed to hash payload with SHA-256.",
|
||||
"crypto.kms.key_not_found": "Key '{0}' does not exist.",
|
||||
"crypto.kms.key_revoked": "Key '{0}' has been revoked and cannot be rotated.",
|
||||
"crypto.kms.key_revoked_signing": "Key '{0}' is revoked and cannot be used for signing.",
|
||||
"crypto.kms.key_version_not_found": "Key version '{0}' does not exist for key '{1}'.",
|
||||
"crypto.kms.key_no_active_version": "Key '{0}' does not have an active version.",
|
||||
"crypto.kms.key_version_inactive": "Key version '{0}' is not active. Current state: {1}",
|
||||
"crypto.kms.key_no_public_material": "Key '{0}' version '{1}' does not have public key material.",
|
||||
"crypto.kms.algorithm_unsupported": "Algorithm '{0}' is not supported by the file KMS driver.",
|
||||
"crypto.kms.curve_unsupported": "Curve '{0}' is not supported.",
|
||||
"crypto.kms.metadata_failed": "Failed to create or load key metadata.",
|
||||
"crypto.kms.algorithm_mismatch": "Algorithm mismatch. Expected '{0}', received '{1}'.",
|
||||
"crypto.kms.version_exists": "Key version '{0}' already exists for key '{1}'.",
|
||||
"crypto.kms.material_not_found": "Key material for version '{0}' was not found.",
|
||||
"crypto.kms.envelope_deserialize_failed": "Key envelope could not be deserialized.",
|
||||
"crypto.kms.payload_deserialize_failed": "Key payload could not be deserialized.",
|
||||
"crypto.kms.pem_empty": "Public key PEM cannot be empty.",
|
||||
"crypto.kms.no_primary_version": "Crypto key '{0}' does not have an active primary version.",
|
||||
"crypto.kms.es256_only": "Provider '{0}' only supports ES256 signing keys.",
|
||||
"crypto.kms.version_metadata_required": "KMS signing keys must include metadata entry 'kms.version'.",
|
||||
"crypto.kms.missing_public_key": "KMS signing key is missing public key material.",
|
||||
|
||||
"crypto.fido2.curve_unsupported": "Unsupported FIDO2 curve OID '{0}'.",
|
||||
"crypto.fido2.rotation_required": "FIDO2 credential rotation requires new enrolment.",
|
||||
"crypto.fido2.revocation_relying_party": "FIDO2 credential revocation must be managed in the relying party.",
|
||||
"crypto.fido2.missing_x": "FIDO2 public key missing X coordinate.",
|
||||
"crypto.fido2.missing_y": "FIDO2 public key missing Y coordinate.",
|
||||
"crypto.fido2.authenticator_required": "IFido2Authenticator must be registered to use FIDO2 KMS.",
|
||||
|
||||
"crypto.pkcs11.rotation_hsm": "PKCS#11 rotation requires HSM administrative tooling.",
|
||||
"crypto.pkcs11.revocation_hsm": "PKCS#11 revocation must be handled by HSM policies.",
|
||||
"crypto.pkcs11.slot_not_found": "Could not resolve PKCS#11 slot.",
|
||||
"crypto.pkcs11.private_key_not_found": "PKCS#11 private key not found.",
|
||||
"crypto.pkcs11.public_key_not_found": "PKCS#11 public key not found.",
|
||||
"crypto.pkcs11.missing_ec_point": "Public key missing EC point.",
|
||||
"crypto.pkcs11.missing_ec_params": "Public key missing EC parameters.",
|
||||
"crypto.pkcs11.unsupported_point_format": "Unsupported EC point format.",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "Unsupported EC curve OID '{0}'.",
|
||||
"crypto.pkcs11.curve_unsupported": "Unsupported EC curve '{0}'.",
|
||||
|
||||
"common.provcache.sbom_hash_required": "SBOM hash cannot be null or empty.",
|
||||
"common.provcache.fetch_url_absolute": "Lazy fetch base URL must be absolute.",
|
||||
"common.provcache.fetch_url_no_userinfo": "Lazy fetch base URL must not include user info.",
|
||||
"common.provcache.fetch_url_host_required": "Lazy fetch base URL must include a host.",
|
||||
"common.provcache.fetch_url_scheme_invalid": "Lazy fetch base URL scheme '{0}' is not allowed.",
|
||||
"common.provcache.fetch_url_host_invalid": "Lazy fetch base URL host '{0}' is not allowlisted.",
|
||||
"common.provcache.no_chunks_provided": "No chunks provided.",
|
||||
"common.provcache.bundle_deserialize_failed": "Failed to deserialize bundle.",
|
||||
"common.provcache.signer_not_configured": "Signer is not configured.",
|
||||
"common.provcache.signing_requested_no_signer": "Signing requested but no signer is configured.",
|
||||
"common.provcache.cache_entry_not_found": "Cache entry not found for VeriKey: {0}",
|
||||
"common.provcache.chunk_manifest_not_found": "Chunk manifest not found for proof root: {0}",
|
||||
"common.provcache.http_timeout_invalid": "Lazy fetch HTTP timeout must be a positive, non-infinite duration.",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher requires a BaseAddress on the HTTP client.",
|
||||
"common.provcache.merkle_root_mismatch": "Merkle root mismatch. Expected: {0}, Computed: {1}",
|
||||
"common.provcache.chunk_verification_failed": "Chunk {0} verification failed. Expected hash: {1}",
|
||||
"common.provcache.artifact_reference_required": "Artifact reference is required.",
|
||||
"common.provcache.artifact_digest_required": "Artifact digest is required.",
|
||||
"common.provcache.decision_digest_required": "DecisionDigest is required.",
|
||||
"common.provcache.decision_digest_verikey_required": "DecisionDigest.VeriKey is required.",
|
||||
"common.provcache.digest_empty": "Digest cannot be empty.",
|
||||
"common.provcache.time_window_required": "Time window cannot be null or empty.",
|
||||
"common.provcache.vex_hash_required": "VEX hash set hash cannot be null or empty.",
|
||||
"common.provcache.policy_hash_required": "Policy hash cannot be null or empty.",
|
||||
"common.provcache.source_hash_required": "Source hash cannot be null or empty.",
|
||||
"common.provcache.signer_set_hash_required": "Signer set hash cannot be null or empty.",
|
||||
|
||||
"common.evidence.toolchain_required": "ToolChain must be set before building index.",
|
||||
"common.evidence.deserialization_failed": "Failed to deserialize evidence index.",
|
||||
"common.evidence.verdict_deserialization_failed": "Failed to deserialize verdict.",
|
||||
"common.evidence.inputs_json_required": "JSON cannot be null or empty.",
|
||||
"common.evidence.inputs_deserialization_failed": "Failed to deserialize pinned scoring inputs.",
|
||||
"common.evidence.bundle_alert_id_required": "AlertId is required",
|
||||
"common.evidence.bundle_artifact_id_required": "ArtifactId is required",
|
||||
"common.evidence.pdf_export_requires_config": "PDF export requires additional configuration",
|
||||
"common.evidence.invalid_uri_format": "Invalid evidence URI format: {0}. Expected stella://type/path",
|
||||
"common.evidence.invalid_uri_missing_path": "Invalid evidence URI format: {0}. Missing path.",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver cannot resolve evidence type: {0}",
|
||||
"common.evidence.schema_resource_not_found": "Schema resource not found: {0}",
|
||||
"common.evidence.schema_resource_not_available": "Schema resource not available: {0}",
|
||||
"common.evidence.provenance_deserialize_failed": "Failed to deserialize provenance for evidence {0}",
|
||||
"common.evidence.bundle_deserialize_failed": "Failed to deserialize verdict bundle",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "Failed to deserialize delta verdict",
|
||||
|
||||
"common.canonicalization.value_empty_after_trim": "Value must not be empty after trimming.",
|
||||
"common.canonicalization.deserialize_failed": "Failed to deserialize {0}",
|
||||
"common.canonicalization.datetime_value_null": "DateTimeOffset value is null.",
|
||||
"common.canonicalization.dict_key_null": "Dictionary key cannot be null.",
|
||||
|
||||
"common.audit.replay_token_value_empty": "Token value cannot be empty.",
|
||||
"common.audit.replay_token_empty": "Token cannot be empty.",
|
||||
"common.audit.replay_token_format_invalid": "Invalid replay token format: {0}",
|
||||
"common.audit.replay_token_version_invalid": "Invalid replay token version: {0}",
|
||||
"common.audit.replay_token_expiration_invalid": "Invalid expiration timestamp in replay token: {0}",
|
||||
"common.audit.replay_token_duplicate_context_key": "AdditionalContext contains duplicate key after normalization: '{0}'.",
|
||||
|
||||
"common.artifact.uri_format_invalid": "Invalid URI format: {0}",
|
||||
"common.artifact.uri_scheme_not_supported": "URI scheme not supported: {0}",
|
||||
"common.artifact.file_not_accessible": "File not accessible: {0}",
|
||||
"common.artifact.file_too_large": "File too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.uri_not_accessible": "URI not accessible: {0} returned {1}",
|
||||
"common.artifact.content_too_large": "Content too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.fetch_failed": "Failed to fetch from {0}: {1}",
|
||||
|
||||
"common.delta_verdict.artifact_ref_required": "Artifact reference is required.",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "Unsupported signing algorithm: {0}",
|
||||
"common.delta_verdict.hmac_secret_required": "HMAC signing requires a base64 secret.",
|
||||
|
||||
"common.eventing.no_entry_assembly": "No entry assembly found",
|
||||
|
||||
"auth.persistence.deserialize_inputs_failed": "Failed to deserialize inputs",
|
||||
"auth.persistence.deserialize_result_failed": "Failed to deserialize result",
|
||||
"auth.persistence.revocation_sequence_mismatch": "Revocation export sequence mismatch. Expected {0}, current {1}.",
|
||||
"auth.persistence.revocation_update_rejected": "Revocation export state update rejected. Expected sequence {0}."
|
||||
"_meta": {
|
||||
"locale": "es-ES",
|
||||
"namespace": "common",
|
||||
"version": "1.1"
|
||||
},
|
||||
"common.error.generic": "Algo salió mal.",
|
||||
"common.error.not_found": "No se encontró el recurso solicitado.",
|
||||
"common.error.entity_not_found": "{0} '{1}' no encontrado.",
|
||||
"common.error.unauthorized": "No tienes permiso para realizar esta acción.",
|
||||
"common.error.forbidden": "Acceso denegado.",
|
||||
"common.error.bad_request": "La solicitud no es válida.",
|
||||
"common.error.conflict": "Se produjo un conflicto. Es posible que el recurso haya sido modificado.",
|
||||
"common.error.timeout": "Se agotó el tiempo de espera de la solicitud después de {0} segundos.",
|
||||
"common.error.server_error": "Se produjo un error interno del servidor. Inténtelo de nuevo más tarde.",
|
||||
"common.error.service_unavailable": "El servicio no está disponible temporalmente.",
|
||||
"common.error.too_many_requests": "Demasiadas solicitudes. Espere e inténtelo de nuevo.",
|
||||
"common.error.network": "Error de red. Comprueba tu conexión.",
|
||||
"common.error.body_required": "Se requiere el cuerpo de la solicitud.",
|
||||
"common.error.deserialization_failed": "No se pudo deserializar {0}.",
|
||||
"common.error.not_supported": "{0} no es compatible.",
|
||||
"common.error.already_exists": "{0} '{1}' ya existe.",
|
||||
"common.error.revoked": "{0} '{1}' ha sido revocado y no se puede utilizar.",
|
||||
"common.error.state_invalid": "{0} '{1}' no se encuentra en el estado esperado. Estado actual: {2}",
|
||||
"common.validation.required": "Se requiere {0}.",
|
||||
"common.validation.invalid": "{0} no es válido.",
|
||||
"common.validation.too_long": "{0} excede la longitud máxima de caracteres {1}.",
|
||||
"common.validation.too_short": "{0} debe tener al menos caracteres {1}.",
|
||||
"common.validation.out_of_range": "{0} debe estar entre {1} y {2}.",
|
||||
"common.validation.invalid_format": "{0} tiene un formato no válido.",
|
||||
"common.validation.duplicate": "{0} ya existe.",
|
||||
"common.validation.empty_not_allowed": "{0} no debe estar vacío.",
|
||||
"common.validation.empty_after_trim": "{0} no debe quedar vacío después del recorte.",
|
||||
"common.validation.greater_than_zero": "{0} debe ser mayor que cero.",
|
||||
"common.validation.non_negative": "{0} no debe ser negativo.",
|
||||
"common.validation.at_least_one": "Se debe configurar al menos un {0}.",
|
||||
"common.validation.at_least_n": "{0} debe tener al menos entradas {1}.",
|
||||
"common.validation.null_or_empty": "{0} no puede ser nulo ni estar vacío.",
|
||||
"common.validation.absolute_uri": "{0} debe ser un URI absoluto.",
|
||||
"common.validation.invalid_regex": "{0} '{1}' no es una expresión regular válida.",
|
||||
"common.validation.unknown_value": "{0} '{1}' no se reconoce. Valores permitidos: {2}",
|
||||
"common.validation.max_exceeded": "{0} debe tener caracteres {1} o menos.",
|
||||
"common.actions.save": "Guardar",
|
||||
"common.actions.cancel": "Cancelar",
|
||||
"common.actions.delete": "Eliminar",
|
||||
"common.actions.confirm": "Confirmar",
|
||||
"common.actions.submit": "Enviar",
|
||||
"common.actions.close": "Cerrar",
|
||||
"common.actions.retry": "Reintentar",
|
||||
"common.actions.expand": "Expandir",
|
||||
"common.actions.collapse": "Contraer",
|
||||
"common.actions.show_more": "Mostrar más",
|
||||
"common.actions.show_less": "Mostrar menos",
|
||||
"common.status.healthy": "Saludable",
|
||||
"common.status.degraded": "Degradado",
|
||||
"common.status.unavailable": "Indisponible",
|
||||
"common.status.unknown": "Desconocido",
|
||||
"common.status.active": "Activo",
|
||||
"common.status.inactive": "Inactivo",
|
||||
"common.status.pending": "Pendiente",
|
||||
"common.status.running": "En ejecución",
|
||||
"common.status.completed": "Terminado",
|
||||
"common.status.failed": "Fallido",
|
||||
"common.status.canceled": "Cancelado",
|
||||
"common.status.blocked": "Bloqueado",
|
||||
"common.severity.critical": "Crítico",
|
||||
"common.severity.high": "Alto",
|
||||
"common.severity.medium": "Medio",
|
||||
"common.severity.low": "Bajo",
|
||||
"common.severity.info": "Información",
|
||||
"common.severity.none": "Ninguna",
|
||||
"common.time.seconds_ago": "{0} hace segundos",
|
||||
"common.time.minutes_ago": "{0} hace minutos",
|
||||
"common.time.hours_ago": "{0} hace horas",
|
||||
"common.time.days_ago": "{0} hace días",
|
||||
"common.time.just_now": "En este momento",
|
||||
"common.ui.loading": "Cargando...",
|
||||
"common.ui.saving": "Guardando...",
|
||||
"common.ui.deleting": "Eliminando...",
|
||||
"common.ui.submitting": "Enviando...",
|
||||
"common.ui.no_results": "No se encontraron resultados.",
|
||||
"common.ui.offline": "Estás desconectado.",
|
||||
"common.ui.reconnecting": "Reconectando...",
|
||||
"common.ui.back_online": "Conexión restablecida.",
|
||||
"auth.dpop.proof_lifetime_invalid": "La vida útil de la prueba DPoP debe ser mayor que cero.",
|
||||
"auth.dpop.clock_skew_invalid": "La desviación del reloj permitida por DPoP debe estar entre 0 segundos y 5 minutos.",
|
||||
"auth.dpop.replay_window_invalid": "La ventana de reproducción de DPoP debe ser mayor o igual a cero.",
|
||||
"auth.dpop.algorithm_required": "Se debe configurar al menos un algoritmo DPoP permitido.",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "Los algoritmos DPoP permitidos no pueden estar vacíos después de la normalización.",
|
||||
"auth.dpop.options_required": "Se deben proporcionar opciones DPoP.",
|
||||
"auth.dpop.nonce_ttl_invalid": "Nonce TTL debe ser mayor que cero.",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "La emisión máxima por minuto debe ser al menos 1.",
|
||||
"auth.dpop.nonce_store_required": "Se debe especificar Dpop.Nonce.Store.",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store debe ser 'memory' o 'redis'.",
|
||||
"auth.dpop.nonce_redis_required": "Se debe proporcionar Dpop.Nonce.RedisConnectionString cuando se utiliza la tienda 'redis'.",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences debe incluir al menos una audiencia.",
|
||||
"auth.dpop.token_three_segments": "El token debe contener tres segmentos.",
|
||||
"auth.dpop.segment_out_of_range": "Índice de segmento fuera de rango.",
|
||||
"auth.dpop.header_decode_failed": "No se puede decodificar el encabezado.",
|
||||
"auth.dpop.header_missing_typ": "Falta prueba DPoP typ=dpop+encabezado jwt.",
|
||||
"auth.dpop.header_missing_alg": "A la prueba DPoP le falta el encabezado alg.",
|
||||
"auth.dpop.header_unsupported_alg": "Algoritmo DPoP no compatible.",
|
||||
"auth.dpop.header_missing_jwk": "A la prueba DPoP le falta el encabezado jwk.",
|
||||
"auth.dpop.header_invalid_jwk": "El encabezado jwk de prueba DPoP no es válido.",
|
||||
"auth.dpop.payload_decode_failed": "No se puede decodificar la carga útil.",
|
||||
"auth.dpop.payload_missing_htm": "Falta la prueba DPoP en el reclamo htm.",
|
||||
"auth.dpop.payload_htm_mismatch": "DPoP htm no coincide con el método de solicitud.",
|
||||
"auth.dpop.payload_missing_htu": "Falta prueba de DPoP en el reclamo htu.",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu no coincide con el URI de solicitud.",
|
||||
"auth.dpop.payload_missing_iat": "Falta prueba de DPoP en el reclamo.",
|
||||
"auth.dpop.payload_missing_jti": "Falta prueba DPoP del reclamo jti.",
|
||||
"auth.dpop.payload_iat_invalid": "La prueba DPoP iat reclamación no es un número válido.",
|
||||
"auth.dpop.nonce_missing": "A la prueba DPoP le falta el reclamo nonce.",
|
||||
"auth.dpop.nonce_mismatch": "No coincide el nonce DPoP.",
|
||||
"auth.dpop.proof_future": "Prueba DPoP emitida en el futuro.",
|
||||
"auth.dpop.proof_expired": "La prueba DPoP expiró.",
|
||||
"auth.dpop.signature_failed": "La validación de la firma de prueba DPoP falló.",
|
||||
"auth.dpop.replay_detected": "Prueba DPoP ya utilizada.",
|
||||
"config.authority.schema_version_required": "La configuración de autoridad requiere una versión de esquema positiva.",
|
||||
"config.authority.issuer_required": "La configuración de la autoridad requiere una URL del emisor.",
|
||||
"config.authority.issuer_absolute": "El emisor de la autoridad debe ser un URI absoluto.",
|
||||
"config.authority.issuer_https": "El emisor de la autoridad debe utilizar HTTPS a menos que se ejecute en una interfaz de bucle invertido.",
|
||||
"config.authority.duplicate_tenant": "La configuración de autoridad contiene un identificador de inquilino duplicado '{0}'.",
|
||||
"config.authority.property_greater_than_zero": "La configuración de autoridad requiere que {0} sea mayor que cero.",
|
||||
"config.authority.property_max": "La configuración de autoridad requiere que {0} sea menor o igual que {1}.",
|
||||
"config.authority.remote_inference_required": "La configuración de autoridad requiere al menos un perfil de inferencia remota de IA de asesoramiento cuando la inferencia remota está habilitada.",
|
||||
"config.tenant.id_required": "Cada inquilino requiere una identificación (slug).",
|
||||
"config.tenant.id_format": "El ID de inquilino '{0}' debe contener solo letras minúsculas, dígitos y guiones.",
|
||||
"config.tenant.project_format": "El inquilino '{0}' define el proyecto '{1}', que debe contener solo letras minúsculas, dígitos y guiones.",
|
||||
"config.tenant.role_missing_config": "El inquilino '{0}' define el rol '{1}' sin configuración.",
|
||||
"config.tenant.role_scope_required": "El rol del inquilino '{0}' '{1}' debe especificar al menos un alcance.",
|
||||
"config.tenant.role_unknown_scope": "El rol del inquilino '{0}' '{1}' hace referencia al alcance desconocido '{2}'.",
|
||||
"config.tenant.role_unsupported_attribute": "El rol del inquilino '{0}' '{1}' define el atributo no admitido '{2}'. Atributos permitidos: env, owner, business_tier.",
|
||||
"config.tenant.delegation_max_tokens": "Para el inquilino '{0}', delegation.maxActiveTokens debe ser mayor que cero cuando se especifique.",
|
||||
"config.tenant.remote_inference_disabled": "No se puede otorgar el consentimiento de inferencia remota del inquilino cuando la inferencia remota está deshabilitada.",
|
||||
"config.tenant.remote_inference_consent_version_length": "La consentVersion de inferencia remota del inquilino debe tener {0} caracteres o menos.",
|
||||
"config.tenant.remote_inference_consented_by_length": "El campo consentedBy de inferencia remota del inquilino debe tener {0} caracteres o menos.",
|
||||
"config.tenant.remote_inference_consent_version_required": "El consentimiento de inferencia remota del inquilino requiere consentVersion cuando consentGranted es true.",
|
||||
"config.tenant.remote_inference_consented_at_required": "El consentimiento de inferencia remota del inquilino requiere consentedAt cuando consentGranted es true.",
|
||||
"config.service_account.id_required": "Las semillas de cuentas de servicio de delegación requieren un ID de cuenta.",
|
||||
"config.service_account.id_format": "El ID de cuenta de servicio '{0}' debe contener letras minúsculas, dígitos, dos puntos, guiones bajos o guiones.",
|
||||
"config.service_account.tenant_required": "La cuenta de servicio '{0}' requiere una asignación de inquilino.",
|
||||
"config.service_account.tenant_unknown": "La cuenta de servicio '{0}' hace referencia al inquilino desconocido '{1}'.",
|
||||
"config.service_account.scope_required": "La cuenta de servicio '{0}' debe especificar al menos un ámbito permitido.",
|
||||
"config.service_account.unsupported_attribute": "La cuenta de servicio '{0}' define el atributo no admitido '{1}'. Atributos permitidos: env, propietario, business_tier.",
|
||||
"config.plugin.assembly_required": "El complemento de autoridad '{0}' debe definir el nombre del ensamblaje o la ruta del ensamblaje.",
|
||||
"config.plugin.config_file_required": "El complemento de autoridad '{0}' debe definir un archivo de configuración.",
|
||||
"config.plugin.config_file_missing": "El complemento de autoridad '{0}' especifica el archivo de configuración '{1}' que no existe.",
|
||||
"config.plugin.unknown_capability": "El complemento de autoridad '{0}' declara capacidad desconocida '{1}'. Valores permitidos: contraseña, mfa, clientProvisioning, bootstrap.",
|
||||
"config.plugin.descriptor_null": "El descriptor del complemento de autoridad '{0}' es nulo.",
|
||||
"config.delegation.duplicate_account": "La configuración de delegación contiene un ID de cuenta de servicio duplicado, '{0}'.",
|
||||
"config.delegation.quota_max_tokens": "La configuración de delegación de autoridad requiere que {0}.MaxActiveTokens sea mayor que cero.",
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace no debe ser negativo.",
|
||||
"config.mtls.audiences_required": "Mtls.EnforceForAudiences debe incluir al menos una audiencia cuando esté habilitado.",
|
||||
"config.mtls.ca_empty": "Las entradas Mtls.AllowedCertificateAuthorities no deben estar vacías.",
|
||||
"config.mtls.san_types_required": "Mtls.AllowedSanTypes debe incluir al menos una entrada cuando esté habilitado.",
|
||||
"config.mtls.subject_patterns_empty": "Las entradas Mtls.AllowedSubjectPatterns no deben estar vacías.",
|
||||
"config.mtls.subject_pattern_invalid": "La entrada Mtls.AllowedSubjectPatterns '{0}' no es una expresión regular válida.",
|
||||
"config.signing.key_id_required": "La configuración de firma de autoridad requiere signing.activeKeyId.",
|
||||
"config.signing.key_path_required": "La configuración de firma de autoridad requiere signing.keyPath.",
|
||||
"config.signing.jwks_cache_range": "La configuración de firma de autoridad requiere que signing.jwksCacheLifetime esté entre 00:00:01 y 01:00:00.",
|
||||
"config.signing.additional_key_id_required": "Las claves de firma adicionales requieren un keyId.",
|
||||
"config.signing.additional_key_path_required": "La clave de firma '{0}' requiere una ruta.",
|
||||
"config.bootstrap.api_key_required": "La configuración de arranque de autoridad requiere una clave API cuando está habilitada.",
|
||||
"config.bootstrap.idp_required": "La configuración de arranque de autoridad requiere un nombre de proveedor de identidad predeterminado cuando está habilitada.",
|
||||
"config.rate_limit.permit_limit": "La limitación de la tasa de autoridad '{0}' requiere que permitLimit sea mayor que cero.",
|
||||
"config.rate_limit.queue_limit": "El límite de tasa de autoridad '{0}' queueLimit no puede ser negativo.",
|
||||
"config.rate_limit.window": "La ventana '{0}' que limita la tasa de autoridad debe ser mayor que cero y no más de una hora.",
|
||||
"config.storage.connection_required": "El almacenamiento de autoridad requiere una cadena de conexión.",
|
||||
"config.storage.timeout_invalid": "El tiempo de espera del comando de almacenamiento de autoridad debe ser mayor que cero.",
|
||||
"config.ack_token.payload_type_required": "Se debe especificar notifications.ackTokens.payloadType cuando los tokens de confirmación están habilitados.",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime debe ser mayor que cero.",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime debe ser mayor que cero y mayor o igual que defaultLifetime.",
|
||||
"config.ack_token.key_id_required": "Se debe proporcionar notifications.ackTokens.activeKeyId cuando los tokens de confirmación están habilitados.",
|
||||
"config.ack_token.key_path_required": "Se debe proporcionar notifications.ackTokens.keyPath cuando los tokens de confirmación están habilitados.",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime debe estar entre las 00:00:01 y las 01:00:00.",
|
||||
"config.exceptions.null_template": "Las entradas de la plantilla de enrutamiento de excepción de autoridad no deben ser nulas.",
|
||||
"config.exceptions.duplicate_template": "La plantilla de enrutamiento de excepción de autoridad '{0}' se configura más de una vez.",
|
||||
"config.exceptions.template_id_required": "Las plantillas de enrutamiento de excepción de autoridad requieren una identificación.",
|
||||
"config.exceptions.template_route_required": "La plantilla de enrutamiento de excepción de autoridad '{0}' requiere AuthorityRouteId.",
|
||||
"config.sealed_mode.evidence_path_required": "Se debe proporcionar AirGap.SealedMode.EvidencePath cuando la aplicación está habilitada.",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge debe estar entre las 00:00:01 y las 7.00:00:00.",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime debe ser mayor que cero y menor o igual a AirGap.SealedMode.MaxEvidenceAge.",
|
||||
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts debe incluir al menos un host cuando esté habilitado.",
|
||||
"config.escalation.scope_required": "Se debe especificar notifications.escalation.scope.",
|
||||
"config.anti_forgery.audience_required": "Se debe especificar vulnerabilityExplorer.workflow.antiForgery.audience cuando los tokens antifalsificación están habilitados.",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime debe ser mayor que cero.",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime debe ser mayor que cero y mayor o igual que defaultLifetime.",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries no debe ser negativo.",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength debe ser mayor que cero.",
|
||||
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime debe ser mayor que cero cuando los tokens adjuntos están habilitados.",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime debe ser mayor que cero y mayor o igual que defaultLifetime.",
|
||||
"config.attachment.payload_type_required": "Se debe especificar vulnerabilityExplorer.attachments.payloadType cuando los tokens adjuntos están habilitados.",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries no debe ser negativo.",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength debe ser mayor que cero.",
|
||||
"config.api_lifecycle.sunset_after_deprecation": "La fecha de caducidad de la autenticación heredada debe ser posterior a la fecha de desuso.",
|
||||
"config.api_lifecycle.docs_url_format": "La URL de documentación de autenticación heredada debe ser una URL HTTP o HTTPS absoluta.",
|
||||
"crypto.provider.algorithm_not_supported": "El proveedor '{1}' no admite el algoritmo de firma '{0}'.",
|
||||
"crypto.provider.hash_not_supported": "El proveedor '{1}' no admite el algoritmo hash '{0}'.",
|
||||
"crypto.provider.verify_not_supported": "El proveedor '{1}' no admite el algoritmo de verificación '{0}'.",
|
||||
"crypto.provider.key_not_registered": "La clave de firma '{0}' no está registrada con el proveedor '{1}'.",
|
||||
"crypto.provider.key_algorithm_mismatch": "La clave de firma '{0}' está registrada para el algoritmo '{1}', no para '{2}'.",
|
||||
"crypto.provider.ec_keys_only": "El proveedor '{0}' solo acepta claves de firma EC.",
|
||||
"crypto.provider.no_password_hashing": "El proveedor '{0}' no expone capacidades de hash de contraseñas.",
|
||||
"crypto.provider.no_content_hashing": "El proveedor '{0}' no admite el hash de contenido.",
|
||||
"crypto.provider.no_ephemeral_verification": "El proveedor '{0}' no admite la verificación efímera.",
|
||||
"crypto.provider.not_signing_capable": "El proveedor '{1}' no admite el algoritmo de firma '{0}'.",
|
||||
"crypto.provider.es256_only": "Actualmente, el proveedor '{0}' solo admite claves de firma ES256.",
|
||||
"crypto.provider.p256_required": "Las claves de firma ES256 deben utilizar la curva NIST P-256.",
|
||||
"crypto.provider.curve_mismatch": "La curva de la clave de firma no coincide. Curva esperada '{0}' para el algoritmo '{1}'.",
|
||||
"crypto.registry.empty": "Se debe registrar al menos un proveedor de cifrado.",
|
||||
"crypto.registry.algorithm_required": "Se requiere el identificador del algoritmo.",
|
||||
"crypto.registry.signing_not_supported": "Ningún proveedor registrado admite el algoritmo de firma '{0}'.",
|
||||
"crypto.registry.hash_not_supported": "El algoritmo hash '{0}' no es compatible con ningún proveedor registrado.",
|
||||
"crypto.registry.verify_not_supported": "El algoritmo de verificación '{0}' no es compatible con ningún proveedor registrado.",
|
||||
"crypto.registry.active_profile_required": "Se requiere perfil activo.",
|
||||
"crypto.registry.profile_not_found": "El ID de perfil '{0}' no se encuentra en el registro.",
|
||||
"crypto.registry.profile_id_required": "El ID del perfil no puede ser nulo ni estar vacío.",
|
||||
"crypto.key.algorithm_required": "Se requiere el identificador del algoritmo.",
|
||||
"crypto.key.private_scalar_required": "Los parámetros de clave privada deben incluir el componente escalar.",
|
||||
"crypto.key.verification_only": "Este constructor es sólo para claves de verificación únicamente. Establezca la verificaciónSolo en verdadero.",
|
||||
"crypto.key.public_xy_required": "Los parámetros de clave pública deben incluir las coordenadas X e Y.",
|
||||
"crypto.key.private_material_required": "Se debe proporcionar material de clave privada.",
|
||||
"crypto.hash.algorithm_unsupported": "Algoritmo hash no compatible '{0}'.",
|
||||
"crypto.hash.purpose_required": "El propósito no puede ser nulo o vacío.",
|
||||
"crypto.hmac.algorithm_unknown": "Algoritmo HMAC desconocido '{0}'.",
|
||||
"crypto.hmac.algorithm_unsupported": "Algoritmo HMAC no compatible '{0}'.",
|
||||
"crypto.ecdsa.algorithm_unsupported": "Algoritmo de firma ECDSA no compatible '{0}'.",
|
||||
"crypto.ecdsa.curve_unsupported": "Mapeo de curvas ECDSA no compatible para el algoritmo '{0}'.",
|
||||
"crypto.digest.required": "Se requiere digestión.",
|
||||
"crypto.digest.prefix_required": "{0} debe comenzar con '{1}'.",
|
||||
"crypto.digest.algorithm_unsupported": "Algoritmo de resumen no compatible en '{0}'. Sólo se admite sha256.",
|
||||
"crypto.digest.hex_length": "{0} debe contener caracteres hexadecimales {1}.",
|
||||
"crypto.password.memory_cost_invalid": "El costo de la memoria hash de contraseñas debe ser mayor que cero.",
|
||||
"crypto.password.iterations_invalid": "El recuento de iteraciones de hash de contraseña debe ser mayor que cero.",
|
||||
"crypto.password.parallelism_invalid": "El paralelismo de hash de contraseñas debe ser mayor que cero.",
|
||||
"crypto.password.algorithm_mismatch": "{0} solo admite el algoritmo {1}.",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 requiere un recuento de iteraciones positivo.",
|
||||
"crypto.gost.not_der": "La firma no está codificada en DER.",
|
||||
"crypto.gost.invalid_der": "Estructura DER no válida para la firma GOST.",
|
||||
"crypto.gost.raw_length": "La firma GOST sin formato debe ser de bytes {0}.",
|
||||
"crypto.gost.neither_format": "La carga útil de la firma no tiene formato DER ni GOST sin formato.",
|
||||
"crypto.gost.coordinate_overflow": "La coordenada excede la longitud esperada.",
|
||||
"crypto.profile.unknown_purpose": "Propósito de hash desconocido '{0}' en el perfil '{1}'.",
|
||||
"crypto.compliance.at_least_one_signing": "Se debe proporcionar al menos un algoritmo de firma.",
|
||||
"crypto.compliance.at_least_one_hash": "Se debe proporcionar al menos un algoritmo hash.",
|
||||
"crypto.ed25519.private_key_size": "La clave privada Ed25519 debe tener 32 o 64 bytes.",
|
||||
"crypto.ed25519.public_key_size": "La clave pública Ed25519 debe tener 32 bytes.",
|
||||
"crypto.ed25519.no_hashing": "El proveedor BouncyCastle Ed25519 no expone capacidades de hash.",
|
||||
"crypto.ed25519.raw_key_required": "El proveedor '{0}' requiere material de clave privada Ed25519 sin procesar.",
|
||||
"crypto.sm.no_password_hashing": "El proveedor SM no expone el hash de contraseñas.",
|
||||
"crypto.sm.raw_key_required": "El proveedor SM2 requiere bytes de clave privada sin procesar (PKCS#8 DER).",
|
||||
"crypto.sm.unsupported_format": "Formato de clave SM2 no compatible. Espere PEM o PKCS#8 DER.",
|
||||
"crypto.sm.disabled": "El proveedor '{0}' está deshabilitado. Configure {1}=1 (o deshabilite RequireEnvironmentGate) para habilitar el software SM2/SM3.",
|
||||
"crypto.di.registry_empty": "El registro de proveedores de cifrado no puede estar vacío. Configure al menos un proveedor para implementaciones de RU.",
|
||||
"crypto.di.ru_openssl_required": "La línea base de Linux RU requiere el proveedor 'ru.openssl.gost' (establezca STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 para anularlo explícitamente).",
|
||||
"crypto.di.ru_provider_required": "La línea base de RU Linux está mal configurada: tanto ru.openssl.gost como ru.pkcs11 están deshabilitados a través del entorno. Habilite al menos un proveedor.",
|
||||
"crypto.di.no_plugins_loaded": "No se cargaron proveedores de cifrado. Verifique la configuración y el manifiesto del complemento.",
|
||||
"crypto.kms.rotation_via_policy": "La rotación de {0} debe orquestarse mediante políticas o programaciones de {1}.",
|
||||
"crypto.kms.revocation_via_policy": "La revocación de {0} se debe gestionar a través de las API o la consola de {1}.",
|
||||
"crypto.kms.public_key_missing_x": "A la clave pública le falta la coordenada X.",
|
||||
"crypto.kms.public_key_missing_y": "Falta la coordenada Y de la clave pública.",
|
||||
"crypto.kms.hash_failed": "No se pudo realizar el hash de la carga útil con SHA-256.",
|
||||
"crypto.kms.key_not_found": "La clave '{0}' no existe.",
|
||||
"crypto.kms.key_revoked": "La clave '{0}' ha sido revocada y no se puede rotar.",
|
||||
"crypto.kms.key_revoked_signing": "La clave '{0}' está revocada y no se puede utilizar para firmar.",
|
||||
"crypto.kms.key_version_not_found": "La versión de clave '{0}' no existe para la clave '{1}'.",
|
||||
"crypto.kms.key_no_active_version": "La clave '{0}' no tiene una versión activa.",
|
||||
"crypto.kms.key_version_inactive": "La versión de clave '{0}' no está activa. Estado actual: {1}",
|
||||
"crypto.kms.key_no_public_material": "La clave '{0}' versión '{1}' no tiene material de clave pública.",
|
||||
"crypto.kms.algorithm_unsupported": "El algoritmo '{0}' no es compatible con el controlador de archivos KMS.",
|
||||
"crypto.kms.curve_unsupported": "La curva '{0}' no es compatible.",
|
||||
"crypto.kms.metadata_failed": "No se pudieron crear o cargar metadatos clave.",
|
||||
"crypto.kms.algorithm_mismatch": "Discrepancia de algoritmo. Se esperaba '{0}', se recibió '{1}'.",
|
||||
"crypto.kms.version_exists": "La versión de clave '{0}' ya existe para la clave '{1}'.",
|
||||
"crypto.kms.material_not_found": "No se encontró material clave para la versión '{0}'.",
|
||||
"crypto.kms.envelope_deserialize_failed": "No se pudo deserializar el sobre de clave.",
|
||||
"crypto.kms.payload_deserialize_failed": "No se pudo deserializar la carga útil de la clave.",
|
||||
"crypto.kms.pem_empty": "La clave pública PEM no puede estar vacía.",
|
||||
"crypto.kms.no_primary_version": "La clave criptográfica '{0}' no tiene una versión primaria activa.",
|
||||
"crypto.kms.es256_only": "El proveedor '{0}' solo admite claves de firma ES256.",
|
||||
"crypto.kms.version_metadata_required": "Las claves de firma de KMS deben incluir la entrada de metadatos 'kms.version'.",
|
||||
"crypto.kms.missing_public_key": "A la clave de firma de KMS le falta material de clave pública.",
|
||||
"crypto.fido2.curve_unsupported": "Curva FIDO2 no compatible OID '{0}'.",
|
||||
"crypto.fido2.rotation_required": "La rotación de credenciales FIDO2 requiere una nueva inscripción.",
|
||||
"crypto.fido2.revocation_relying_party": "La revocación de la credencial FIDO2 debe gestionarse en la parte que confía.",
|
||||
"crypto.fido2.missing_x": "A la clave pública FIDO2 le falta la coordenada X.",
|
||||
"crypto.fido2.missing_y": "Falta la coordenada Y de la clave pública FIDO2.",
|
||||
"crypto.fido2.authenticator_required": "IFido2Authenticator debe estar registrado para utilizar FIDO2 KMS.",
|
||||
"crypto.pkcs11.rotation_hsm": "La rotación de PKCS#11 requiere herramientas administrativas de HSM.",
|
||||
"crypto.pkcs11.revocation_hsm": "La revocación de PKCS#11 debe ser manejada por las políticas de HSM.",
|
||||
"crypto.pkcs11.slot_not_found": "No se pudo resolver la ranura PKCS#11.",
|
||||
"crypto.pkcs11.private_key_not_found": "No se encontró la clave privada PKCS#11.",
|
||||
"crypto.pkcs11.public_key_not_found": "No se encontró la clave pública PKCS#11.",
|
||||
"crypto.pkcs11.missing_ec_point": "Falta el punto EC de la clave pública.",
|
||||
"crypto.pkcs11.missing_ec_params": "Faltan parámetros EC de clave pública.",
|
||||
"crypto.pkcs11.unsupported_point_format": "Formato de puntos EC no admitido.",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "Curva EC no admitida OID '{0}'.",
|
||||
"crypto.pkcs11.curve_unsupported": "Curva EC no admitida '{0}'.",
|
||||
"common.provcache.sbom_hash_required": "El hash SBOM no puede ser nulo ni estar vacío.",
|
||||
"common.provcache.fetch_url_absolute": "La URL base de recuperación diferida debe ser absoluta.",
|
||||
"common.provcache.fetch_url_no_userinfo": "La URL base de recuperación diferida no debe incluir información del usuario.",
|
||||
"common.provcache.fetch_url_host_required": "La URL base de recuperación diferida debe incluir un host.",
|
||||
"common.provcache.fetch_url_scheme_invalid": "No se permite el esquema de URL base de recuperación diferida '{0}'.",
|
||||
"common.provcache.fetch_url_host_invalid": "El host de URL base de recuperación diferida '{0}' no está incluido en la lista de permitidos.",
|
||||
"common.provcache.no_chunks_provided": "No se proporcionan trozos.",
|
||||
"common.provcache.bundle_deserialize_failed": "No se pudo deserializar el paquete.",
|
||||
"common.provcache.signer_not_configured": "El firmante no está configurado.",
|
||||
"common.provcache.signing_requested_no_signer": "Se solicitó la firma pero no hay ningún firmante configurado.",
|
||||
"common.provcache.cache_entry_not_found": "Entrada de caché no encontrada para VeriKey: {0}",
|
||||
"common.provcache.chunk_manifest_not_found": "No se encontró el manifiesto del fragmento para la raíz de prueba: {0}",
|
||||
"common.provcache.http_timeout_invalid": "El tiempo de espera de HTTP de recuperación diferida debe tener una duración positiva y no infinita.",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher requiere una dirección base en el cliente HTTP.",
|
||||
"common.provcache.merkle_root_mismatch": "La raíz de Merkle no coincide. Esperado: {0}, Calculado: {1}",
|
||||
"common.provcache.chunk_verification_failed": "Error en la verificación del fragmento {0}. Hash esperado: {1}",
|
||||
"common.provcache.artifact_reference_required": "Se requiere referencia de artefacto.",
|
||||
"common.provcache.artifact_digest_required": "Se requiere un resumen de artefactos.",
|
||||
"common.provcache.decision_digest_required": "Se requiere DecisionDigest.",
|
||||
"common.provcache.decision_digest_verikey_required": "Se requiere DecisionDigest.VeriKey.",
|
||||
"common.provcache.digest_empty": "El resumen no puede estar vacío.",
|
||||
"common.provcache.time_window_required": "La ventana de tiempo no puede ser nula ni estar vacía.",
|
||||
"common.provcache.vex_hash_required": "El hash del conjunto de hash VEX no puede ser nulo ni estar vacío.",
|
||||
"common.provcache.policy_hash_required": "El hash de política no puede ser nulo ni estar vacío.",
|
||||
"common.provcache.source_hash_required": "El hash de origen no puede ser nulo ni estar vacío.",
|
||||
"common.provcache.signer_set_hash_required": "El hash del conjunto de firmantes no puede ser nulo ni estar vacío.",
|
||||
"common.evidence.toolchain_required": "ToolChain debe configurarse antes de crear el índice.",
|
||||
"common.evidence.deserialization_failed": "No se pudo deserializar el índice de evidencia.",
|
||||
"common.evidence.verdict_deserialization_failed": "No se pudo deserializar el veredicto.",
|
||||
"common.evidence.inputs_json_required": "JSON no puede ser nulo o vacío.",
|
||||
"common.evidence.inputs_deserialization_failed": "No se pudieron deserializar las entradas de puntuación fijadas.",
|
||||
"common.evidence.bundle_alert_id_required": "Se requiere ID de alerta",
|
||||
"common.evidence.bundle_artifact_id_required": "Se requiere ID de artefacto",
|
||||
"common.evidence.pdf_export_requires_config": "La exportación de PDF requiere configuración adicional",
|
||||
"common.evidence.invalid_uri_format": "Formato de URI de evidencia no válido: {0}. Stella esperada: //tipo/ruta",
|
||||
"common.evidence.invalid_uri_missing_path": "Formato de URI de evidencia no válido: {0}. Camino perdido.",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver no puede resolver el tipo de evidencia: {0}",
|
||||
"common.evidence.schema_resource_not_found": "Recurso de esquema no encontrado: {0}",
|
||||
"common.evidence.schema_resource_not_available": "Recurso de esquema no disponible: {0}",
|
||||
"common.evidence.provenance_deserialize_failed": "No se pudo deserializar la procedencia de la evidencia {0}",
|
||||
"common.evidence.bundle_deserialize_failed": "No se pudo deserializar el paquete de veredictos",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "No se pudo deserializar el veredicto delta",
|
||||
"common.canonicalization.value_empty_after_trim": "El valor no debe estar vacío después del recorte.",
|
||||
"common.canonicalization.deserialize_failed": "No se pudo deserializar {0}",
|
||||
"common.canonicalization.datetime_value_null": "El valor de DateTimeOffset es nulo.",
|
||||
"common.canonicalization.dict_key_null": "La clave del diccionario no puede ser nula.",
|
||||
"common.audit.replay_token_value_empty": "El valor del token no puede estar vacío.",
|
||||
"common.audit.replay_token_empty": "El token no puede estar vacío.",
|
||||
"common.audit.replay_token_format_invalid": "Formato de token de reproducción no válido: {0}",
|
||||
"common.audit.replay_token_version_invalid": "Versión del token de reproducción no válida: {0}",
|
||||
"common.audit.replay_token_expiration_invalid": "Marca de tiempo de vencimiento no válida en el token de reproducción: {0}",
|
||||
"common.audit.replay_token_duplicate_context_key": "AdditionalContext contiene una clave duplicada después de la normalización: '{0}'.",
|
||||
"common.artifact.uri_format_invalid": "Formato de URI no válido: {0}",
|
||||
"common.artifact.uri_scheme_not_supported": "Esquema URI no compatible: {0}",
|
||||
"common.artifact.file_not_accessible": "Archivo no accesible: {0}",
|
||||
"common.artifact.file_too_large": "Archivo demasiado grande: los bytes {0} superan el límite de 100 MB",
|
||||
"common.artifact.uri_not_accessible": "URI no accesible: {0} devolvió {1}",
|
||||
"common.artifact.content_too_large": "Contenido demasiado grande: los bytes {0} superan el límite de 100 MB",
|
||||
"common.artifact.fetch_failed": "No se pudo recuperar de {0}: {1}",
|
||||
"common.delta_verdict.artifact_ref_required": "Se requiere referencia de artefacto.",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "Algoritmo de firma no compatible: {0}",
|
||||
"common.delta_verdict.hmac_secret_required": "La firma HMAC requiere un secreto base64.",
|
||||
"common.eventing.no_entry_assembly": "No se encontró ningún ensamblaje de entrada",
|
||||
"auth.persistence.deserialize_inputs_failed": "No se pudieron deserializar las entradas",
|
||||
"auth.persistence.deserialize_result_failed": "No se pudo deserializar el resultado",
|
||||
"auth.persistence.revocation_sequence_mismatch": "La secuencia de exportación de revocación no coincide. {0} esperado, {1} actual.",
|
||||
"auth.persistence.revocation_update_rejected": "Se rechazó la actualización del estado de exportación de revocación. Secuencia esperada {0}."
|
||||
}
|
||||
|
||||
@@ -1,411 +1,367 @@
|
||||
{
|
||||
"_meta": { "locale": "fr-FR", "namespace": "common", "version": "1.1" },
|
||||
|
||||
"common.error.generic": "Something went wrong.",
|
||||
"common.error.not_found": "The requested resource was not found.",
|
||||
"common.error.entity_not_found": "{0} '{1}' not found.",
|
||||
"common.error.unauthorized": "You do not have permission to perform this action.",
|
||||
"common.error.forbidden": "Access denied.",
|
||||
"common.error.bad_request": "The request is invalid.",
|
||||
"common.error.conflict": "A conflict occurred. The resource may have been modified.",
|
||||
"common.error.timeout": "Request timed out after {0} seconds.",
|
||||
"common.error.server_error": "An internal server error occurred. Please try again later.",
|
||||
"common.error.service_unavailable": "The service is temporarily unavailable.",
|
||||
"common.error.too_many_requests": "Too many requests. Please wait and try again.",
|
||||
"common.error.network": "Network error. Check your connection.",
|
||||
"common.error.body_required": "Request body is required.",
|
||||
"common.error.deserialization_failed": "Failed to deserialize {0}.",
|
||||
"common.error.not_supported": "{0} is not supported.",
|
||||
"common.error.already_exists": "{0} '{1}' already exists.",
|
||||
"common.error.revoked": "{0} '{1}' has been revoked and cannot be used.",
|
||||
"common.error.state_invalid": "{0} '{1}' is not in the expected state. Current state: {2}",
|
||||
|
||||
"common.validation.required": "{0} is required.",
|
||||
"common.validation.invalid": "{0} is invalid.",
|
||||
"common.validation.too_long": "{0} exceeds the maximum length of {1} characters.",
|
||||
"common.validation.too_short": "{0} must be at least {1} characters.",
|
||||
"common.validation.out_of_range": "{0} must be between {1} and {2}.",
|
||||
"common.validation.invalid_format": "{0} has an invalid format.",
|
||||
"common.validation.duplicate": "{0} already exists.",
|
||||
"common.validation.empty_not_allowed": "{0} must not be empty.",
|
||||
"common.validation.empty_after_trim": "{0} must not be empty after trimming.",
|
||||
"common.validation.greater_than_zero": "{0} must be greater than zero.",
|
||||
"common.validation.non_negative": "{0} must be non-negative.",
|
||||
"common.validation.at_least_one": "At least one {0} must be configured.",
|
||||
"common.validation.at_least_n": "{0} must have at least {1} entries.",
|
||||
"common.validation.null_or_empty": "{0} cannot be null or empty.",
|
||||
"common.validation.absolute_uri": "{0} must be an absolute URI.",
|
||||
"common.validation.invalid_regex": "{0} '{1}' is not a valid regular expression.",
|
||||
"common.validation.unknown_value": "{0} '{1}' is not recognized. Allowed values: {2}",
|
||||
"common.validation.max_exceeded": "{0} must be {1} characters or fewer.",
|
||||
|
||||
"common.actions.save": "Save",
|
||||
"common.actions.cancel": "Cancel",
|
||||
"common.actions.delete": "Delete",
|
||||
"common.actions.confirm": "Confirm",
|
||||
"common.actions.submit": "Submit",
|
||||
"common.actions.close": "Close",
|
||||
"common.actions.retry": "Retry",
|
||||
"common.actions.expand": "Expand",
|
||||
"common.actions.collapse": "Collapse",
|
||||
"common.actions.show_more": "Show more",
|
||||
"common.actions.show_less": "Show less",
|
||||
|
||||
"common.status.healthy": "Healthy",
|
||||
"common.status.degraded": "Degraded",
|
||||
"common.status.unavailable": "Unavailable",
|
||||
"common.status.unknown": "Unknown",
|
||||
"common.status.active": "Active",
|
||||
"common.status.inactive": "Inactive",
|
||||
"common.status.pending": "Pending",
|
||||
"common.status.running": "Running",
|
||||
"common.status.completed": "Completed",
|
||||
"common.status.failed": "Failed",
|
||||
"common.status.canceled": "Canceled",
|
||||
"common.status.blocked": "Blocked",
|
||||
|
||||
"common.severity.critical": "Critical",
|
||||
"common.severity.high": "High",
|
||||
"common.severity.medium": "Medium",
|
||||
"common.severity.low": "Low",
|
||||
"common.severity.info": "Info",
|
||||
"common.severity.none": "None",
|
||||
|
||||
"common.time.seconds_ago": "{0} seconds ago",
|
||||
"common.time.minutes_ago": "{0} minutes ago",
|
||||
"common.time.hours_ago": "{0} hours ago",
|
||||
"common.time.days_ago": "{0} days ago",
|
||||
"common.time.just_now": "Just now",
|
||||
|
||||
"common.ui.loading": "Loading...",
|
||||
"common.ui.saving": "Saving...",
|
||||
"common.ui.deleting": "Deleting...",
|
||||
"common.ui.submitting": "Submitting...",
|
||||
"common.ui.no_results": "No results found.",
|
||||
"common.ui.offline": "You are offline.",
|
||||
"common.ui.reconnecting": "Reconnecting...",
|
||||
"common.ui.back_online": "Back online.",
|
||||
|
||||
"auth.dpop.proof_lifetime_invalid": "DPoP proof lifetime must be greater than zero.",
|
||||
"auth.dpop.clock_skew_invalid": "DPoP allowed clock skew must be between 0 seconds and 5 minutes.",
|
||||
"auth.dpop.replay_window_invalid": "DPoP replay window must be greater than or equal to zero.",
|
||||
"auth.dpop.algorithm_required": "At least one allowed DPoP algorithm must be configured.",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "Allowed DPoP algorithms cannot be empty after normalization.",
|
||||
"auth.dpop.options_required": "DPoP options must be provided.",
|
||||
"auth.dpop.nonce_ttl_invalid": "Nonce TTL must be greater than zero.",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "Max issuance per minute must be at least 1.",
|
||||
"auth.dpop.nonce_store_required": "Dpop.Nonce.Store must be specified.",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store must be either 'memory' or 'redis'.",
|
||||
"auth.dpop.nonce_redis_required": "Dpop.Nonce.RedisConnectionString must be provided when using the 'redis' store.",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences must include at least one audience.",
|
||||
"auth.dpop.token_three_segments": "Token must contain three segments.",
|
||||
"auth.dpop.segment_out_of_range": "Segment index out of range.",
|
||||
"auth.dpop.header_decode_failed": "Unable to decode header.",
|
||||
"auth.dpop.header_missing_typ": "DPoP proof missing typ=dpop+jwt header.",
|
||||
"auth.dpop.header_missing_alg": "DPoP proof missing alg header.",
|
||||
"auth.dpop.header_unsupported_alg": "Unsupported DPoP algorithm.",
|
||||
"auth.dpop.header_missing_jwk": "DPoP proof missing jwk header.",
|
||||
"auth.dpop.header_invalid_jwk": "DPoP proof jwk header is invalid.",
|
||||
"auth.dpop.payload_decode_failed": "Unable to decode payload.",
|
||||
"auth.dpop.payload_missing_htm": "DPoP proof missing htm claim.",
|
||||
"auth.dpop.payload_htm_mismatch": "DPoP htm does not match request method.",
|
||||
"auth.dpop.payload_missing_htu": "DPoP proof missing htu claim.",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu does not match request URI.",
|
||||
"auth.dpop.payload_missing_iat": "DPoP proof missing iat claim.",
|
||||
"auth.dpop.payload_missing_jti": "DPoP proof missing jti claim.",
|
||||
"auth.dpop.payload_iat_invalid": "DPoP proof iat claim is not a valid number.",
|
||||
"auth.dpop.nonce_missing": "DPoP proof missing nonce claim.",
|
||||
"auth.dpop.nonce_mismatch": "DPoP nonce mismatch.",
|
||||
"auth.dpop.proof_future": "DPoP proof issued in the future.",
|
||||
"auth.dpop.proof_expired": "DPoP proof expired.",
|
||||
"auth.dpop.signature_failed": "DPoP proof signature validation failed.",
|
||||
"auth.dpop.replay_detected": "DPoP proof already used.",
|
||||
|
||||
"config.authority.schema_version_required": "Authority configuration requires a positive schemaVersion.",
|
||||
"config.authority.issuer_required": "Authority configuration requires an issuer URL.",
|
||||
"config.authority.issuer_absolute": "Authority issuer must be an absolute URI.",
|
||||
"config.authority.issuer_https": "Authority issuer must use HTTPS unless running on a loopback interface.",
|
||||
"config.authority.duplicate_tenant": "Authority configuration contains duplicate tenant identifier '{0}'.",
|
||||
"config.authority.property_greater_than_zero": "Authority configuration requires {0} to be greater than zero.",
|
||||
"config.authority.property_max": "Authority configuration requires {0} to be less than or equal to {1}.",
|
||||
"config.authority.remote_inference_required": "Authority configuration requires at least one advisory AI remote inference profile when remote inference is enabled.",
|
||||
|
||||
"config.tenant.id_required": "Each tenant requires an id (slug).",
|
||||
"config.tenant.id_format": "Tenant id '{0}' must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.project_format": "Tenant '{0}' defines project '{1}' which must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.role_missing_config": "Tenant '{0}' defines role '{1}' without configuration.",
|
||||
"config.tenant.role_scope_required": "Tenant '{0}' role '{1}' must specify at least one scope.",
|
||||
"config.tenant.role_unknown_scope": "Tenant '{0}' role '{1}' references unknown scope '{2}'.",
|
||||
"config.tenant.role_unsupported_attribute": "Tenant '{0}' role '{1}' defines unsupported attribute '{2}'. Allowed attributes: env, owner, business_tier.",
|
||||
"config.tenant.delegation_max_tokens": "Tenant '{0}' delegation maxActiveTokens must be greater than zero when specified.",
|
||||
"config.tenant.remote_inference_disabled": "Tenant remote inference consent cannot be granted when remote inference is disabled.",
|
||||
"config.tenant.remote_inference_consent_version_length": "Tenant remote inference consentVersion must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consented_by_length": "Tenant remote inference consentedBy must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consent_version_required": "Tenant remote inference consent requires consentVersion when consentGranted is true.",
|
||||
"config.tenant.remote_inference_consented_at_required": "Tenant remote inference consent requires consentedAt when consentGranted is true.",
|
||||
|
||||
"config.service_account.id_required": "Delegation service account seeds require an accountId.",
|
||||
"config.service_account.id_format": "Service account id '{0}' must contain lowercase letters, digits, colon, underscore, or hyphen.",
|
||||
"config.service_account.tenant_required": "Service account '{0}' requires a tenant assignment.",
|
||||
"config.service_account.tenant_unknown": "Service account '{0}' references unknown tenant '{1}'.",
|
||||
"config.service_account.scope_required": "Service account '{0}' must specify at least one allowed scope.",
|
||||
"config.service_account.unsupported_attribute": "Service account '{0}' defines unsupported attribute '{1}'. Allowed attributes: env, owner, business_tier.",
|
||||
|
||||
"config.plugin.assembly_required": "Authority plugin '{0}' must define either assemblyName or assemblyPath.",
|
||||
"config.plugin.config_file_required": "Authority plugin '{0}' must define a configFile.",
|
||||
"config.plugin.config_file_missing": "Authority plugin '{0}' specifies configFile '{1}' which does not exist.",
|
||||
"config.plugin.unknown_capability": "Authority plugin '{0}' declares unknown capability '{1}'. Allowed values: password, mfa, clientProvisioning, bootstrap.",
|
||||
"config.plugin.descriptor_null": "Authority plugin descriptor '{0}' is null.",
|
||||
|
||||
"config.delegation.duplicate_account": "Delegation configuration contains duplicate service account id '{0}'.",
|
||||
"config.delegation.quota_max_tokens": "Authority delegation configuration requires {0}.MaxActiveTokens to be greater than zero.",
|
||||
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace must be non-negative.",
|
||||
"config.mtls.audiences_required": "Mtls.EnforceForAudiences must include at least one audience when enabled.",
|
||||
"config.mtls.ca_empty": "Mtls.AllowedCertificateAuthorities entries must not be empty.",
|
||||
"config.mtls.san_types_required": "Mtls.AllowedSanTypes must include at least one entry when enabled.",
|
||||
"config.mtls.subject_patterns_empty": "Mtls.AllowedSubjectPatterns entries must not be empty.",
|
||||
"config.mtls.subject_pattern_invalid": "Mtls.AllowedSubjectPatterns entry '{0}' is not a valid regular expression.",
|
||||
|
||||
"config.signing.key_id_required": "Authority signing configuration requires signing.activeKeyId.",
|
||||
"config.signing.key_path_required": "Authority signing configuration requires signing.keyPath.",
|
||||
"config.signing.jwks_cache_range": "Authority signing configuration requires signing.jwksCacheLifetime to be between 00:00:01 and 01:00:00.",
|
||||
"config.signing.additional_key_id_required": "Additional signing keys require a keyId.",
|
||||
"config.signing.additional_key_path_required": "Signing key '{0}' requires a path.",
|
||||
|
||||
"config.bootstrap.api_key_required": "Authority bootstrap configuration requires an API key when enabled.",
|
||||
"config.bootstrap.idp_required": "Authority bootstrap configuration requires a default identity provider name when enabled.",
|
||||
|
||||
"config.rate_limit.permit_limit": "Authority rate limiting '{0}' requires permitLimit to be greater than zero.",
|
||||
"config.rate_limit.queue_limit": "Authority rate limiting '{0}' queueLimit cannot be negative.",
|
||||
"config.rate_limit.window": "Authority rate limiting '{0}' window must be greater than zero and no more than one hour.",
|
||||
|
||||
"config.storage.connection_required": "Authority storage requires a connection string.",
|
||||
"config.storage.timeout_invalid": "Authority storage command timeout must be greater than zero.",
|
||||
|
||||
"config.ack_token.payload_type_required": "notifications.ackTokens.payloadType must be specified when ack tokens are enabled.",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime must be greater than zero.",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.ack_token.key_id_required": "notifications.ackTokens.activeKeyId must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.key_path_required": "notifications.ackTokens.keyPath must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime must be between 00:00:01 and 01:00:00.",
|
||||
|
||||
"config.exceptions.null_template": "Authority exception routing template entries must not be null.",
|
||||
"config.exceptions.duplicate_template": "Authority exception routing template '{0}' is configured more than once.",
|
||||
"config.exceptions.template_id_required": "Authority exception routing templates require an id.",
|
||||
"config.exceptions.template_route_required": "Authority exception routing template '{0}' requires authorityRouteId.",
|
||||
|
||||
"config.sealed_mode.evidence_path_required": "AirGap.SealedMode.EvidencePath must be provided when enforcement is enabled.",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge must be between 00:00:01 and 7.00:00:00.",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime must be greater than zero and less than or equal to AirGap.SealedMode.MaxEvidenceAge.",
|
||||
|
||||
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts must include at least one host when enabled.",
|
||||
"config.escalation.scope_required": "notifications.escalation.scope must be specified.",
|
||||
|
||||
"config.anti_forgery.audience_required": "vulnerabilityExplorer.workflow.antiForgery.audience must be specified when anti-forgery tokens are enabled.",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime must be greater than zero.",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries must be non-negative.",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength must be greater than zero.",
|
||||
|
||||
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime must be greater than zero when attachment tokens are enabled.",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.attachment.payload_type_required": "vulnerabilityExplorer.attachments.payloadType must be specified when attachment tokens are enabled.",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries must be non-negative.",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength must be greater than zero.",
|
||||
|
||||
"config.api_lifecycle.sunset_after_deprecation": "Legacy auth sunset date must be after the deprecation date.",
|
||||
"config.api_lifecycle.docs_url_format": "Legacy auth documentation URL must be an absolute HTTP or HTTPS URL.",
|
||||
|
||||
"crypto.provider.algorithm_not_supported": "Signing algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.hash_not_supported": "Hash algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.verify_not_supported": "Verification algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.key_not_registered": "Signing key '{0}' is not registered with provider '{1}'.",
|
||||
"crypto.provider.key_algorithm_mismatch": "Signing key '{0}' is registered for algorithm '{1}', not '{2}'.",
|
||||
"crypto.provider.ec_keys_only": "Provider '{0}' only accepts EC signing keys.",
|
||||
"crypto.provider.no_password_hashing": "Provider '{0}' does not expose password hashing capabilities.",
|
||||
"crypto.provider.no_content_hashing": "Provider '{0}' does not support content hashing.",
|
||||
"crypto.provider.no_ephemeral_verification": "Provider '{0}' does not support ephemeral verification.",
|
||||
"crypto.provider.not_signing_capable": "Signing algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.es256_only": "Only ES256 signing keys are currently supported by provider '{0}'.",
|
||||
"crypto.provider.p256_required": "ES256 signing keys must use the NIST P-256 curve.",
|
||||
"crypto.provider.curve_mismatch": "Signing key curve mismatch. Expected curve '{0}' for algorithm '{1}'.",
|
||||
|
||||
"crypto.registry.empty": "At least one crypto provider must be registered.",
|
||||
"crypto.registry.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.registry.signing_not_supported": "Signing algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.hash_not_supported": "Hash algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.verify_not_supported": "Verification algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.active_profile_required": "Active profile is required.",
|
||||
"crypto.registry.profile_not_found": "Profile ID '{0}' is not found in the registry.",
|
||||
"crypto.registry.profile_id_required": "Profile ID cannot be null or empty.",
|
||||
|
||||
"crypto.key.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.key.private_scalar_required": "Private key parameters must include the scalar component.",
|
||||
"crypto.key.verification_only": "This constructor is only for verification-only keys. Set verificationOnly to true.",
|
||||
"crypto.key.public_xy_required": "Public key parameters must include X and Y coordinates.",
|
||||
"crypto.key.private_material_required": "Private key material must be provided.",
|
||||
|
||||
"crypto.hash.algorithm_unsupported": "Unsupported hash algorithm '{0}'.",
|
||||
"crypto.hash.purpose_required": "Purpose cannot be null or empty.",
|
||||
"crypto.hmac.algorithm_unknown": "Unknown HMAC algorithm '{0}'.",
|
||||
"crypto.hmac.algorithm_unsupported": "Unsupported HMAC algorithm '{0}'.",
|
||||
|
||||
"crypto.ecdsa.algorithm_unsupported": "Unsupported ECDSA signing algorithm '{0}'.",
|
||||
"crypto.ecdsa.curve_unsupported": "Unsupported ECDSA curve mapping for algorithm '{0}'.",
|
||||
|
||||
"crypto.digest.required": "Digest is required.",
|
||||
"crypto.digest.prefix_required": "{0} must start with '{1}'.",
|
||||
"crypto.digest.algorithm_unsupported": "Unsupported digest algorithm in '{0}'. Only sha256 is supported.",
|
||||
"crypto.digest.hex_length": "{0} must contain {1} hexadecimal characters.",
|
||||
|
||||
"crypto.password.memory_cost_invalid": "Password hashing memory cost must be greater than zero.",
|
||||
"crypto.password.iterations_invalid": "Password hashing iteration count must be greater than zero.",
|
||||
"crypto.password.parallelism_invalid": "Password hashing parallelism must be greater than zero.",
|
||||
"crypto.password.algorithm_mismatch": "{0} only supports the {1} algorithm.",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 requires a positive iteration count.",
|
||||
|
||||
"crypto.gost.not_der": "Signature is not DER encoded.",
|
||||
"crypto.gost.invalid_der": "Invalid DER structure for GOST signature.",
|
||||
"crypto.gost.raw_length": "Raw GOST signature must be {0} bytes.",
|
||||
"crypto.gost.neither_format": "Signature payload is neither DER nor raw GOST format.",
|
||||
"crypto.gost.coordinate_overflow": "Coordinate exceeds expected length.",
|
||||
|
||||
"crypto.profile.unknown_purpose": "Unknown hash purpose '{0}' in profile '{1}'.",
|
||||
"crypto.compliance.at_least_one_signing": "At least one signing algorithm must be supplied.",
|
||||
"crypto.compliance.at_least_one_hash": "At least one hash algorithm must be supplied.",
|
||||
|
||||
"crypto.ed25519.private_key_size": "Ed25519 private key must be 32 or 64 bytes.",
|
||||
"crypto.ed25519.public_key_size": "Ed25519 public key must be 32 bytes.",
|
||||
"crypto.ed25519.no_hashing": "BouncyCastle Ed25519 provider does not expose hashing capabilities.",
|
||||
"crypto.ed25519.raw_key_required": "Provider '{0}' requires raw Ed25519 private key material.",
|
||||
|
||||
"crypto.sm.no_password_hashing": "SM provider does not expose password hashing.",
|
||||
"crypto.sm.raw_key_required": "SM2 provider requires raw private key bytes (PKCS#8 DER).",
|
||||
"crypto.sm.unsupported_format": "Unsupported SM2 key format. Expect PEM or PKCS#8 DER.",
|
||||
"crypto.sm.disabled": "Provider '{0}' is disabled. Set {1}=1 (or disable RequireEnvironmentGate) to enable software SM2/SM3.",
|
||||
|
||||
"crypto.di.registry_empty": "Crypto provider registry cannot be empty. Configure at least one provider for RU deployments.",
|
||||
"crypto.di.ru_openssl_required": "Linux RU baseline requires provider 'ru.openssl.gost' (set STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 to override explicitly).",
|
||||
"crypto.di.ru_provider_required": "RU Linux baseline is misconfigured: both ru.openssl.gost and ru.pkcs11 are disabled via environment. Enable at least one provider.",
|
||||
"crypto.di.no_plugins_loaded": "No crypto providers were loaded. Check plugin configuration and manifest.",
|
||||
|
||||
"crypto.kms.rotation_via_policy": "{0} rotation must be orchestrated via {1} policies or schedules.",
|
||||
"crypto.kms.revocation_via_policy": "{0} revocation must be managed through {1} APIs or console.",
|
||||
"crypto.kms.public_key_missing_x": "Public key missing X coordinate.",
|
||||
"crypto.kms.public_key_missing_y": "Public key missing Y coordinate.",
|
||||
"crypto.kms.hash_failed": "Failed to hash payload with SHA-256.",
|
||||
"crypto.kms.key_not_found": "Key '{0}' does not exist.",
|
||||
"crypto.kms.key_revoked": "Key '{0}' has been revoked and cannot be rotated.",
|
||||
"crypto.kms.key_revoked_signing": "Key '{0}' is revoked and cannot be used for signing.",
|
||||
"crypto.kms.key_version_not_found": "Key version '{0}' does not exist for key '{1}'.",
|
||||
"crypto.kms.key_no_active_version": "Key '{0}' does not have an active version.",
|
||||
"crypto.kms.key_version_inactive": "Key version '{0}' is not active. Current state: {1}",
|
||||
"crypto.kms.key_no_public_material": "Key '{0}' version '{1}' does not have public key material.",
|
||||
"crypto.kms.algorithm_unsupported": "Algorithm '{0}' is not supported by the file KMS driver.",
|
||||
"crypto.kms.curve_unsupported": "Curve '{0}' is not supported.",
|
||||
"crypto.kms.metadata_failed": "Failed to create or load key metadata.",
|
||||
"crypto.kms.algorithm_mismatch": "Algorithm mismatch. Expected '{0}', received '{1}'.",
|
||||
"crypto.kms.version_exists": "Key version '{0}' already exists for key '{1}'.",
|
||||
"crypto.kms.material_not_found": "Key material for version '{0}' was not found.",
|
||||
"crypto.kms.envelope_deserialize_failed": "Key envelope could not be deserialized.",
|
||||
"crypto.kms.payload_deserialize_failed": "Key payload could not be deserialized.",
|
||||
"crypto.kms.pem_empty": "Public key PEM cannot be empty.",
|
||||
"crypto.kms.no_primary_version": "Crypto key '{0}' does not have an active primary version.",
|
||||
"crypto.kms.es256_only": "Provider '{0}' only supports ES256 signing keys.",
|
||||
"crypto.kms.version_metadata_required": "KMS signing keys must include metadata entry 'kms.version'.",
|
||||
"crypto.kms.missing_public_key": "KMS signing key is missing public key material.",
|
||||
|
||||
"crypto.fido2.curve_unsupported": "Unsupported FIDO2 curve OID '{0}'.",
|
||||
"crypto.fido2.rotation_required": "FIDO2 credential rotation requires new enrolment.",
|
||||
"crypto.fido2.revocation_relying_party": "FIDO2 credential revocation must be managed in the relying party.",
|
||||
"crypto.fido2.missing_x": "FIDO2 public key missing X coordinate.",
|
||||
"crypto.fido2.missing_y": "FIDO2 public key missing Y coordinate.",
|
||||
"crypto.fido2.authenticator_required": "IFido2Authenticator must be registered to use FIDO2 KMS.",
|
||||
|
||||
"crypto.pkcs11.rotation_hsm": "PKCS#11 rotation requires HSM administrative tooling.",
|
||||
"crypto.pkcs11.revocation_hsm": "PKCS#11 revocation must be handled by HSM policies.",
|
||||
"crypto.pkcs11.slot_not_found": "Could not resolve PKCS#11 slot.",
|
||||
"crypto.pkcs11.private_key_not_found": "PKCS#11 private key not found.",
|
||||
"crypto.pkcs11.public_key_not_found": "PKCS#11 public key not found.",
|
||||
"crypto.pkcs11.missing_ec_point": "Public key missing EC point.",
|
||||
"crypto.pkcs11.missing_ec_params": "Public key missing EC parameters.",
|
||||
"crypto.pkcs11.unsupported_point_format": "Unsupported EC point format.",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "Unsupported EC curve OID '{0}'.",
|
||||
"crypto.pkcs11.curve_unsupported": "Unsupported EC curve '{0}'.",
|
||||
|
||||
"common.provcache.sbom_hash_required": "SBOM hash cannot be null or empty.",
|
||||
"common.provcache.fetch_url_absolute": "Lazy fetch base URL must be absolute.",
|
||||
"common.provcache.fetch_url_no_userinfo": "Lazy fetch base URL must not include user info.",
|
||||
"common.provcache.fetch_url_host_required": "Lazy fetch base URL must include a host.",
|
||||
"common.provcache.fetch_url_scheme_invalid": "Lazy fetch base URL scheme '{0}' is not allowed.",
|
||||
"common.provcache.fetch_url_host_invalid": "Lazy fetch base URL host '{0}' is not allowlisted.",
|
||||
"common.provcache.no_chunks_provided": "No chunks provided.",
|
||||
"common.provcache.bundle_deserialize_failed": "Failed to deserialize bundle.",
|
||||
"common.provcache.signer_not_configured": "Signer is not configured.",
|
||||
"common.provcache.signing_requested_no_signer": "Signing requested but no signer is configured.",
|
||||
"common.provcache.cache_entry_not_found": "Cache entry not found for VeriKey: {0}",
|
||||
"common.provcache.chunk_manifest_not_found": "Chunk manifest not found for proof root: {0}",
|
||||
"common.provcache.http_timeout_invalid": "Lazy fetch HTTP timeout must be a positive, non-infinite duration.",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher requires a BaseAddress on the HTTP client.",
|
||||
"common.provcache.merkle_root_mismatch": "Merkle root mismatch. Expected: {0}, Computed: {1}",
|
||||
"common.provcache.chunk_verification_failed": "Chunk {0} verification failed. Expected hash: {1}",
|
||||
"common.provcache.artifact_reference_required": "Artifact reference is required.",
|
||||
"common.provcache.artifact_digest_required": "Artifact digest is required.",
|
||||
"common.provcache.decision_digest_required": "DecisionDigest is required.",
|
||||
"common.provcache.decision_digest_verikey_required": "DecisionDigest.VeriKey is required.",
|
||||
"common.provcache.digest_empty": "Digest cannot be empty.",
|
||||
"common.provcache.time_window_required": "Time window cannot be null or empty.",
|
||||
"common.provcache.vex_hash_required": "VEX hash set hash cannot be null or empty.",
|
||||
"common.provcache.policy_hash_required": "Policy hash cannot be null or empty.",
|
||||
"common.provcache.source_hash_required": "Source hash cannot be null or empty.",
|
||||
"common.provcache.signer_set_hash_required": "Signer set hash cannot be null or empty.",
|
||||
|
||||
"common.evidence.toolchain_required": "ToolChain must be set before building index.",
|
||||
"common.evidence.deserialization_failed": "Failed to deserialize evidence index.",
|
||||
"common.evidence.verdict_deserialization_failed": "Failed to deserialize verdict.",
|
||||
"common.evidence.inputs_json_required": "JSON cannot be null or empty.",
|
||||
"common.evidence.inputs_deserialization_failed": "Failed to deserialize pinned scoring inputs.",
|
||||
"common.evidence.bundle_alert_id_required": "AlertId is required",
|
||||
"common.evidence.bundle_artifact_id_required": "ArtifactId is required",
|
||||
"common.evidence.pdf_export_requires_config": "PDF export requires additional configuration",
|
||||
"common.evidence.invalid_uri_format": "Invalid evidence URI format: {0}. Expected stella://type/path",
|
||||
"common.evidence.invalid_uri_missing_path": "Invalid evidence URI format: {0}. Missing path.",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver cannot resolve evidence type: {0}",
|
||||
"common.evidence.schema_resource_not_found": "Schema resource not found: {0}",
|
||||
"common.evidence.schema_resource_not_available": "Schema resource not available: {0}",
|
||||
"common.evidence.provenance_deserialize_failed": "Failed to deserialize provenance for evidence {0}",
|
||||
"common.evidence.bundle_deserialize_failed": "Failed to deserialize verdict bundle",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "Failed to deserialize delta verdict",
|
||||
|
||||
"common.canonicalization.value_empty_after_trim": "Value must not be empty after trimming.",
|
||||
"common.canonicalization.deserialize_failed": "Failed to deserialize {0}",
|
||||
"common.canonicalization.datetime_value_null": "DateTimeOffset value is null.",
|
||||
"common.canonicalization.dict_key_null": "Dictionary key cannot be null.",
|
||||
|
||||
"common.audit.replay_token_value_empty": "Token value cannot be empty.",
|
||||
"common.audit.replay_token_empty": "Token cannot be empty.",
|
||||
"common.audit.replay_token_format_invalid": "Invalid replay token format: {0}",
|
||||
"common.audit.replay_token_version_invalid": "Invalid replay token version: {0}",
|
||||
"common.audit.replay_token_expiration_invalid": "Invalid expiration timestamp in replay token: {0}",
|
||||
"common.audit.replay_token_duplicate_context_key": "AdditionalContext contains duplicate key after normalization: '{0}'.",
|
||||
|
||||
"common.artifact.uri_format_invalid": "Invalid URI format: {0}",
|
||||
"common.artifact.uri_scheme_not_supported": "URI scheme not supported: {0}",
|
||||
"common.artifact.file_not_accessible": "File not accessible: {0}",
|
||||
"common.artifact.file_too_large": "File too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.uri_not_accessible": "URI not accessible: {0} returned {1}",
|
||||
"common.artifact.content_too_large": "Content too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.fetch_failed": "Failed to fetch from {0}: {1}",
|
||||
|
||||
"common.delta_verdict.artifact_ref_required": "Artifact reference is required.",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "Unsupported signing algorithm: {0}",
|
||||
"common.delta_verdict.hmac_secret_required": "HMAC signing requires a base64 secret.",
|
||||
|
||||
"common.eventing.no_entry_assembly": "No entry assembly found",
|
||||
|
||||
"auth.persistence.deserialize_inputs_failed": "Failed to deserialize inputs",
|
||||
"auth.persistence.deserialize_result_failed": "Failed to deserialize result",
|
||||
"auth.persistence.revocation_sequence_mismatch": "Revocation export sequence mismatch. Expected {0}, current {1}.",
|
||||
"auth.persistence.revocation_update_rejected": "Revocation export state update rejected. Expected sequence {0}."
|
||||
"_meta": {
|
||||
"locale": "fr-FR",
|
||||
"namespace": "common",
|
||||
"version": "1.1"
|
||||
},
|
||||
"common.error.generic": "Quelque chose s'est mal passé.",
|
||||
"common.error.not_found": "La ressource demandée n'a pas été trouvée.",
|
||||
"common.error.entity_not_found": "{0} '{1}' introuvable.",
|
||||
"common.error.unauthorized": "Vous n'êtes pas autorisé à effectuer cette action.",
|
||||
"common.error.forbidden": "Accès refusé.",
|
||||
"common.error.bad_request": "La demande n'est pas valide.",
|
||||
"common.error.conflict": "Un conflit est survenu. La ressource a peut-être été modifiée.",
|
||||
"common.error.timeout": "La requête a expiré après {0} secondes.",
|
||||
"common.error.server_error": "Une erreur de serveur interne s'est produite. Veuillez réessayer plus tard.",
|
||||
"common.error.service_unavailable": "Le service est temporairement indisponible.",
|
||||
"common.error.too_many_requests": "Trop de demandes. Veuillez patienter et réessayer.",
|
||||
"common.error.network": "Erreur réseau. Vérifiez votre connexion.",
|
||||
"common.error.body_required": "Le corps de la demande est requis.",
|
||||
"common.error.deserialization_failed": "Échec de la désérialisation de {0}.",
|
||||
"common.error.not_supported": "{0} n’est pas pris en charge.",
|
||||
"common.error.already_exists": "{0} '{1}' existe déjà.",
|
||||
"common.error.revoked": "{0} '{1}' a été révoqué et ne peut pas être utilisé.",
|
||||
"common.error.state_invalid": "{0} '{1}' n’est pas dans l’état attendu. État actuel : {2}",
|
||||
"common.validation.required": "{0} est requis.",
|
||||
"common.validation.invalid": "{0} n’est pas valide.",
|
||||
"common.validation.too_long": "{0} dépasse la longueur maximale des caractères {1}.",
|
||||
"common.validation.too_short": "{0} doit contenir au moins des caractères {1}.",
|
||||
"common.validation.out_of_range": "{0} doit être compris entre {1} et {2}.",
|
||||
"common.validation.invalid_format": "{0} a un format non valide.",
|
||||
"common.validation.duplicate": "{0} existe déjà.",
|
||||
"common.validation.empty_not_allowed": "{0} ne doit pas être vide.",
|
||||
"common.validation.empty_after_trim": "{0} ne doit pas être vide après le rognage.",
|
||||
"common.validation.greater_than_zero": "{0} doit être supérieur à zéro.",
|
||||
"common.validation.non_negative": "{0} doit être non négatif.",
|
||||
"common.validation.at_least_one": "Au moins un {0} doit être configuré.",
|
||||
"common.validation.at_least_n": "{0} doit avoir au moins des entrées {1}.",
|
||||
"common.validation.null_or_empty": "{0} ne peut pas être nul ou vide.",
|
||||
"common.validation.absolute_uri": "{0} doit être un URI absolu.",
|
||||
"common.validation.invalid_regex": "{0} '{1}' n'est pas une expression régulière valide.",
|
||||
"common.validation.unknown_value": "{0} '{1}' n’est pas reconnu. Valeurs autorisées : {2}",
|
||||
"common.validation.max_exceeded": "{0} doit contenir au maximum des caractères {1}.",
|
||||
"common.actions.save": "Enregistrer",
|
||||
"common.actions.cancel": "Annuler",
|
||||
"common.actions.delete": "Supprimer",
|
||||
"common.actions.confirm": "Confirmer",
|
||||
"common.actions.submit": "Soumettre",
|
||||
"common.actions.close": "Fermer",
|
||||
"common.actions.retry": "Réessayer",
|
||||
"common.actions.expand": "Développer",
|
||||
"common.actions.collapse": "Réduire",
|
||||
"common.actions.show_more": "Afficher plus",
|
||||
"common.actions.show_less": "Afficher moins",
|
||||
"common.status.healthy": "En bonne santé",
|
||||
"common.status.degraded": "Dégradé",
|
||||
"common.status.unavailable": "Indisponible",
|
||||
"common.status.unknown": "Inconnu",
|
||||
"common.status.active": "Actif",
|
||||
"common.status.inactive": "Inactif",
|
||||
"common.status.pending": "En attente",
|
||||
"common.status.running": "En cours",
|
||||
"common.status.completed": "Complété",
|
||||
"common.status.failed": "Échoué",
|
||||
"common.status.canceled": "Annulé",
|
||||
"common.status.blocked": "Bloqué",
|
||||
"common.severity.critical": "Critique",
|
||||
"common.severity.high": "Haut",
|
||||
"common.severity.medium": "Moyen",
|
||||
"common.severity.low": "Faible",
|
||||
"common.severity.info": "Informations",
|
||||
"common.severity.none": "Aucune",
|
||||
"common.time.seconds_ago": "{0} il y a quelques secondes",
|
||||
"common.time.minutes_ago": "{0} il y a quelques minutes",
|
||||
"common.time.hours_ago": "{0} il y a heures",
|
||||
"common.time.days_ago": "{0} il y a jours",
|
||||
"common.time.just_now": "Tout à l' heure",
|
||||
"common.ui.loading": "Chargement...",
|
||||
"common.ui.saving": "Enregistrement...",
|
||||
"common.ui.deleting": "Suppression...",
|
||||
"common.ui.submitting": "Envoi...",
|
||||
"common.ui.no_results": "Aucun résultat trouvé.",
|
||||
"common.ui.offline": "Vous êtes hors ligne.",
|
||||
"common.ui.reconnecting": "Reconnexion...",
|
||||
"common.ui.back_online": "De retour en ligne.",
|
||||
"auth.dpop.proof_lifetime_invalid": "La durée de vie de la preuve DPoP doit être supérieure à zéro.",
|
||||
"auth.dpop.clock_skew_invalid": "Le décalage d’horloge autorisé par DPoP doit être compris entre 0 seconde et 5 minutes.",
|
||||
"auth.dpop.replay_window_invalid": "La fenêtre de relecture DPoP doit être supérieure ou égale à zéro.",
|
||||
"auth.dpop.algorithm_required": "Au moins un algorithme DPoP autorisé doit être configuré.",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "Les algorithmes DPoP autorisés ne peuvent pas être vides après la normalisation.",
|
||||
"auth.dpop.options_required": "Les options DPoP doivent être fournies.",
|
||||
"auth.dpop.nonce_ttl_invalid": "Nonce TTL doit être supérieur à zéro.",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "L'émission maximale par minute doit être d'au moins 1.",
|
||||
"auth.dpop.nonce_store_required": "Dpop.Nonce.Store doit être spécifié.",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store doit être soit 'memory', soit 'redis'.",
|
||||
"auth.dpop.nonce_redis_required": "Dpop.Nonce.RedisConnectionString doit être fourni lors de l’utilisation du magasin 'redis'.",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences doit inclure au moins une audience.",
|
||||
"auth.dpop.token_three_segments": "Le jeton doit contenir trois segments.",
|
||||
"auth.dpop.segment_out_of_range": "Indice de segment hors plage.",
|
||||
"auth.dpop.header_decode_failed": "Impossible de décoder l'en-tête.",
|
||||
"auth.dpop.header_missing_typ": "Preuve DPoP manquant en-tête typ=dpop+jwt.",
|
||||
"auth.dpop.header_missing_alg": "Preuve DPoP manquant l'en-tête alg.",
|
||||
"auth.dpop.header_unsupported_alg": "Algorithme DPoP non pris en charge.",
|
||||
"auth.dpop.header_missing_jwk": "Preuve DPoP en-tête jwk manquant.",
|
||||
"auth.dpop.header_invalid_jwk": "L'en-tête jwk de preuve DPoP n'est pas valide.",
|
||||
"auth.dpop.payload_decode_failed": "Impossible de décoder la charge utile.",
|
||||
"auth.dpop.payload_missing_htm": "Preuve DPoP manquant la réclamation htm.",
|
||||
"auth.dpop.payload_htm_mismatch": "Le htm DPoP ne correspond pas à la méthode de demande.",
|
||||
"auth.dpop.payload_missing_htu": "Preuve DPoP manquant la réclamation htu.",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu ne correspond pas à l'URI de la demande.",
|
||||
"auth.dpop.payload_missing_iat": "Preuve DPoP manquante dans cette réclamation.",
|
||||
"auth.dpop.payload_missing_jti": "Preuve DPoP manquant la réclamation jti.",
|
||||
"auth.dpop.payload_iat_invalid": "Preuve DPoP que la réclamation n'est pas un numéro valide.",
|
||||
"auth.dpop.nonce_missing": "Preuve DPoP manquante, réclamation occasionnelle.",
|
||||
"auth.dpop.nonce_mismatch": "DPoP ne correspond jamais.",
|
||||
"auth.dpop.proof_future": "Preuve DPoP délivrée dans le futur.",
|
||||
"auth.dpop.proof_expired": "La preuve DPoP a expiré.",
|
||||
"auth.dpop.signature_failed": "La validation de la signature de preuve DPoP a échoué.",
|
||||
"auth.dpop.replay_detected": "Preuve DPoP déjà utilisée.",
|
||||
"config.authority.schema_version_required": "La configuration des autorités nécessite une version de schéma positive.",
|
||||
"config.authority.issuer_required": "La configuration de l'autorité nécessite une URL d'émetteur.",
|
||||
"config.authority.issuer_absolute": "L’émetteur d’autorité doit être un URI absolu.",
|
||||
"config.authority.issuer_https": "L'émetteur d'autorité doit utiliser HTTPS, sauf s'il s'exécute sur une interface de bouclage.",
|
||||
"config.authority.duplicate_tenant": "La configuration des autorités contient un identifiant de locataire en double '{0}'.",
|
||||
"config.authority.property_greater_than_zero": "La configuration des autorités nécessite que {0} soit supérieur à zéro.",
|
||||
"config.authority.property_max": "La configuration des autorités nécessite que {0} soit inférieur ou égal à {1}.",
|
||||
"config.authority.remote_inference_required": "La configuration des autorités nécessite au moins un profil d’inférence à distance AI consultatif lorsque l’inférence à distance est activée.",
|
||||
"config.tenant.id_required": "Chaque locataire nécessite un identifiant (slug).",
|
||||
"config.tenant.id_format": "L’ID de locataire '{0}' doit contenir uniquement des lettres minuscules, des chiffres et des traits d’union.",
|
||||
"config.tenant.project_format": "Le locataire '{0}' définit le projet '{1}' qui doit contenir uniquement des lettres minuscules, des chiffres et des traits d'union.",
|
||||
"config.tenant.role_missing_config": "Le locataire '{0}' définit le rôle '{1}' sans configuration.",
|
||||
"config.tenant.role_scope_required": "Le rôle de locataire '{0}' '{1}' doit spécifier au moins une portée.",
|
||||
"config.tenant.role_unknown_scope": "Le rôle '{0}' du locataire '{1}' fait référence à une portée inconnue '{2}'.",
|
||||
"config.tenant.role_unsupported_attribute": "Le rôle de locataire '{0}' '{1}' définit l'attribut '{2}' non pris en charge. Attributs autorisés : env, owner, business_tier.",
|
||||
"config.tenant.delegation_max_tokens": "Pour le locataire '{0}', delegation.maxActiveTokens doit être supérieur à zéro lorsqu'il est spécifié.",
|
||||
"config.tenant.remote_inference_disabled": "Le consentement du locataire à l’inférence à distance ne peut pas être accordé lorsque l’inférence à distance est désactivée.",
|
||||
"config.tenant.remote_inference_consent_version_length": "La consentVersion d’inférence distante du locataire doit contenir au plus {0} caractères.",
|
||||
"config.tenant.remote_inference_consented_by_length": "Le champ consentedBy d’inférence distante du locataire doit contenir au plus {0} caractères.",
|
||||
"config.tenant.remote_inference_consent_version_required": "Le consentement d’inférence distante du locataire exige consentVersion lorsque consentGranted=true.",
|
||||
"config.tenant.remote_inference_consented_at_required": "Le consentement d’inférence distante du locataire exige consentedAt lorsque consentGranted=true.",
|
||||
"config.service_account.id_required": "Les graines de compte de service de délégation nécessitent un identifiant de compte.",
|
||||
"config.service_account.id_format": "L'ID du compte de service '{0}' doit contenir des lettres minuscules, des chiffres, des deux-points, un trait de soulignement ou un trait d'union.",
|
||||
"config.service_account.tenant_required": "Le compte de service '{0}' nécessite une attribution de locataire.",
|
||||
"config.service_account.tenant_unknown": "Le compte de service '{0}' fait référence au locataire inconnu '{1}'.",
|
||||
"config.service_account.scope_required": "Le compte de service '{0}' doit spécifier au moins une étendue autorisée.",
|
||||
"config.service_account.unsupported_attribute": "Le compte de service '{0}' définit l'attribut '{1}' non pris en charge. Attributs autorisés : env, propriétaire, business_tier.",
|
||||
"config.plugin.assembly_required": "Le plugin d'autorité '{0}' doit définir soit assemblyName, soit assemblyPath.",
|
||||
"config.plugin.config_file_required": "Le plugin d'autorité '{0}' doit définir un fichier de configuration.",
|
||||
"config.plugin.config_file_missing": "Le plugin d'autorité '{0}' spécifie le fichier de configuration '{1}' qui n'existe pas.",
|
||||
"config.plugin.unknown_capability": "Le plugin d'autorité '{0}' déclare une capacité inconnue '{1}'. Valeurs autorisées : mot de passe, mfa, clientProvisioning, bootstrap.",
|
||||
"config.plugin.descriptor_null": "Le descripteur de plugin d'autorité '{0}' est nul.",
|
||||
"config.delegation.duplicate_account": "La configuration de délégation contient un ID de compte de service en double '{0}'.",
|
||||
"config.delegation.quota_max_tokens": "La configuration de la délégation d’autorité nécessite que {0}.MaxActiveTokens soit supérieur à zéro.",
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace doit être non négatif.",
|
||||
"config.mtls.audiences_required": "Mtls.EnforceForAudiences doit inclure au moins une audience lorsqu’il est activé.",
|
||||
"config.mtls.ca_empty": "Les entrées Mtls.AllowedCertificateAuthorities ne doivent pas être vides.",
|
||||
"config.mtls.san_types_required": "Mtls.AllowedSanTypes doit inclure au moins une entrée lorsqu'il est activé.",
|
||||
"config.mtls.subject_patterns_empty": "Les entrées Mtls.AllowedSubjectPatterns ne doivent pas être vides.",
|
||||
"config.mtls.subject_pattern_invalid": "L'entrée Mtls.AllowedSubjectPatterns '{0}' n'est pas une expression régulière valide.",
|
||||
"config.signing.key_id_required": "La configuration de la signature d'autorité nécessite signing.activeKeyId.",
|
||||
"config.signing.key_path_required": "La configuration de la signature d'autorité nécessite signing.keyPath.",
|
||||
"config.signing.jwks_cache_range": "La configuration de la signature d'autorité nécessite que signing.jwksCacheLifetime se situe entre 00:00:01 et 01:00:00.",
|
||||
"config.signing.additional_key_id_required": "Les clés de signature supplémentaires nécessitent un keyId.",
|
||||
"config.signing.additional_key_path_required": "La clé de signature '{0}' nécessite un chemin.",
|
||||
"config.bootstrap.api_key_required": "La configuration du bootstrap d'autorité nécessite une clé API lorsqu'elle est activée.",
|
||||
"config.bootstrap.idp_required": "La configuration du bootstrap d'autorité nécessite un nom de fournisseur d'identité par défaut lorsqu'elle est activée.",
|
||||
"config.rate_limit.permit_limit": "La limitation du taux d’autorité '{0}' nécessite que permitLimit soit supérieur à zéro.",
|
||||
"config.rate_limit.queue_limit": "Limitation du débit d'autorité '{0}' queueLimit ne peut pas être négatif.",
|
||||
"config.rate_limit.window": "La fenêtre '{0}' de limitation du débit d’autorité doit être supérieure à zéro et ne doit pas dépasser une heure.",
|
||||
"config.storage.connection_required": "Le stockage d’autorité nécessite une chaîne de connexion.",
|
||||
"config.storage.timeout_invalid": "Le délai d’expiration de la commande de stockage d’autorité doit être supérieur à zéro.",
|
||||
"config.ack_token.payload_type_required": "notifications.ackTokens.payloadType doit être spécifié lorsque les jetons de réception sont activés.",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime doit être supérieur à zéro.",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime doit être supérieur à zéro et supérieur ou égal à defaultLifetime.",
|
||||
"config.ack_token.key_id_required": "notifications.ackTokens.activeKeyId doit être fourni lorsque les jetons de réception sont activés.",
|
||||
"config.ack_token.key_path_required": "notifications.ackTokens.keyPath doit être fourni lorsque les jetons de réception sont activés.",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime doit être compris entre 00:00:01 et 01:00:00.",
|
||||
"config.exceptions.null_template": "Les entrées du modèle de routage d’exception d’autorité ne doivent pas être nulles.",
|
||||
"config.exceptions.duplicate_template": "Le modèle de routage des exceptions d’autorité '{0}' est configuré plusieurs fois.",
|
||||
"config.exceptions.template_id_required": "Les modèles de routage d’exception d’autorité nécessitent un identifiant.",
|
||||
"config.exceptions.template_route_required": "Le modèle de routage d’exception d’autorité '{0}' nécessite AuthorityRouteId.",
|
||||
"config.sealed_mode.evidence_path_required": "AirGap.SealedMode.EvidencePath doit être fourni lorsque l’application est activée.",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge doit être compris entre 00:00:01 et 7.00:00:00.",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime doit être supérieur à zéro et inférieur ou égal à AirGap.SealedMode.MaxEvidenceAge.",
|
||||
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts doit inclure au moins un hôte lorsqu'il est activé.",
|
||||
"config.escalation.scope_required": "notifications.escalation.scope doit être spécifié.",
|
||||
"config.anti_forgery.audience_required": "vulnerabilityExplorer.workflow.antiForgery.audience doit être spécifié lorsque les jetons anti-contrefaçon sont activés.",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime doit être supérieur à zéro.",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime doit être supérieur à zéro et supérieur ou égal à defaultLifetime.",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries doit être non négatif.",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength doit être supérieur à zéro.",
|
||||
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime doit être supérieur à zéro lorsque les jetons de pièce jointe sont activés.",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime doit être supérieur à zéro et supérieur ou égal à defaultLifetime.",
|
||||
"config.attachment.payload_type_required": "vulnerabilityExplorer.attachments.payloadType doit être spécifié lorsque les jetons de pièce jointe sont activés.",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries doit être non négatif.",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength doit être supérieur à zéro.",
|
||||
"config.api_lifecycle.sunset_after_deprecation": "La date d’expiration de l’authentification héritée doit être postérieure à la date de dépréciation.",
|
||||
"config.api_lifecycle.docs_url_format": "L'URL de la documentation d'authentification héritée doit être une URL HTTP ou HTTPS absolue.",
|
||||
"crypto.provider.algorithm_not_supported": "L'algorithme de signature '{0}' n'est pas pris en charge par le fournisseur '{1}'.",
|
||||
"crypto.provider.hash_not_supported": "L'algorithme de hachage '{0}' n'est pas pris en charge par le fournisseur '{1}'.",
|
||||
"crypto.provider.verify_not_supported": "L'algorithme de vérification '{0}' n'est pas pris en charge par le fournisseur '{1}'.",
|
||||
"crypto.provider.key_not_registered": "La clé de signature '{0}' n’est pas enregistrée auprès du fournisseur '{1}'.",
|
||||
"crypto.provider.key_algorithm_mismatch": "La clé de signature '{0}' est enregistrée pour l'algorithme '{1}', et non pour '{2}'.",
|
||||
"crypto.provider.ec_keys_only": "Le fournisseur '{0}' accepte uniquement les clés de signature EC.",
|
||||
"crypto.provider.no_password_hashing": "Le fournisseur '{0}' n'expose pas les capacités de hachage de mot de passe.",
|
||||
"crypto.provider.no_content_hashing": "Le fournisseur '{0}' ne prend pas en charge le hachage de contenu.",
|
||||
"crypto.provider.no_ephemeral_verification": "Le fournisseur '{0}' ne prend pas en charge la vérification éphémère.",
|
||||
"crypto.provider.not_signing_capable": "L'algorithme de signature '{0}' n'est pas pris en charge par le fournisseur '{1}'.",
|
||||
"crypto.provider.es256_only": "Seules les clés de signature ES256 sont actuellement prises en charge par le fournisseur '{0}'.",
|
||||
"crypto.provider.p256_required": "Les clés de signature ES256 doivent utiliser la courbe NIST P-256.",
|
||||
"crypto.provider.curve_mismatch": "Inadéquation de la courbe de clé de signature. Courbe attendue '{0}' pour l'algorithme '{1}'.",
|
||||
"crypto.registry.empty": "Au moins un fournisseur de crypto doit être enregistré.",
|
||||
"crypto.registry.algorithm_required": "L’identifiant de l’algorithme est requis.",
|
||||
"crypto.registry.signing_not_supported": "L'algorithme de signature '{0}' n'est pris en charge par aucun fournisseur enregistré.",
|
||||
"crypto.registry.hash_not_supported": "L'algorithme de hachage '{0}' n'est pris en charge par aucun fournisseur enregistré.",
|
||||
"crypto.registry.verify_not_supported": "L'algorithme de vérification '{0}' n'est pris en charge par aucun fournisseur enregistré.",
|
||||
"crypto.registry.active_profile_required": "Un profil actif est requis.",
|
||||
"crypto.registry.profile_not_found": "L’ID de profil '{0}' est introuvable dans le registre.",
|
||||
"crypto.registry.profile_id_required": "L'ID de profil ne peut pas être nul ou vide.",
|
||||
"crypto.key.algorithm_required": "L’identifiant de l’algorithme est requis.",
|
||||
"crypto.key.private_scalar_required": "Les paramètres de clé privée doivent inclure le composant scalaire.",
|
||||
"crypto.key.verification_only": "Ce constructeur est uniquement destiné aux clés de vérification uniquement. Définissez vérificationOnly sur true.",
|
||||
"crypto.key.public_xy_required": "Les paramètres de clé publique doivent inclure les coordonnées X et Y.",
|
||||
"crypto.key.private_material_required": "Le matériel de clé privée doit être fourni.",
|
||||
"crypto.hash.algorithm_unsupported": "Algorithme de hachage '{0}' non pris en charge.",
|
||||
"crypto.hash.purpose_required": "Le but ne peut pas être nul ou vide.",
|
||||
"crypto.hmac.algorithm_unknown": "Algorithme HMAC inconnu '{0}'.",
|
||||
"crypto.hmac.algorithm_unsupported": "Algorithme HMAC '{0}' non pris en charge.",
|
||||
"crypto.ecdsa.algorithm_unsupported": "Algorithme de signature ECDSA non pris en charge '{0}'.",
|
||||
"crypto.ecdsa.curve_unsupported": "Mappage de courbe ECDSA non pris en charge pour l'algorithme '{0}'.",
|
||||
"crypto.digest.required": "Un résumé est requis.",
|
||||
"crypto.digest.prefix_required": "{0} doit commencer par '{1}'.",
|
||||
"crypto.digest.algorithm_unsupported": "Algorithme de résumé non pris en charge dans '{0}'. Seul sha256 est pris en charge.",
|
||||
"crypto.digest.hex_length": "{0} doit contenir des caractères hexadécimaux {1}.",
|
||||
"crypto.password.memory_cost_invalid": "Le coût de la mémoire de hachage du mot de passe doit être supérieur à zéro.",
|
||||
"crypto.password.iterations_invalid": "Le nombre d’itérations de hachage de mot de passe doit être supérieur à zéro.",
|
||||
"crypto.password.parallelism_invalid": "Le parallélisme du hachage des mots de passe doit être supérieur à zéro.",
|
||||
"crypto.password.algorithm_mismatch": "{0} prend uniquement en charge l'algorithme {1}.",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 nécessite un nombre d'itérations positif.",
|
||||
"crypto.gost.not_der": "La signature n’est pas codée en DER.",
|
||||
"crypto.gost.invalid_der": "Structure DER invalide pour la signature GOST.",
|
||||
"crypto.gost.raw_length": "La signature GOST brute doit être composée d'octets {0}.",
|
||||
"crypto.gost.neither_format": "La charge utile de signature n’est ni au format DER ni au format GOST brut.",
|
||||
"crypto.gost.coordinate_overflow": "La coordonnée dépasse la longueur prévue.",
|
||||
"crypto.profile.unknown_purpose": "Objectif de hachage inconnu '{0}' dans le profil '{1}'.",
|
||||
"crypto.compliance.at_least_one_signing": "Au moins un algorithme de signature doit être fourni.",
|
||||
"crypto.compliance.at_least_one_hash": "Au moins un algorithme de hachage doit être fourni.",
|
||||
"crypto.ed25519.private_key_size": "La clé privée Ed25519 doit faire 32 ou 64 octets.",
|
||||
"crypto.ed25519.public_key_size": "La clé publique Ed25519 doit faire 32 octets.",
|
||||
"crypto.ed25519.no_hashing": "Le fournisseur BouncyCastle Ed25519 n’expose pas les capacités de hachage.",
|
||||
"crypto.ed25519.raw_key_required": "Le fournisseur '{0}' nécessite le matériel de clé privée Ed25519 brut.",
|
||||
"crypto.sm.no_password_hashing": "Le fournisseur SM n'expose pas le hachage de mot de passe.",
|
||||
"crypto.sm.raw_key_required": "Le fournisseur SM2 nécessite des octets de clé privée brute (PKCS#8 DER).",
|
||||
"crypto.sm.unsupported_format": "Format de clé SM2 non pris en charge. Attendez-vous à PEM ou PKCS#8 DER.",
|
||||
"crypto.sm.disabled": "Le fournisseur '{0}' est désactivé. Définissez {1}=1 (ou désactivez RequireEnvironmentGate) pour activer le logiciel SM2/SM3.",
|
||||
"crypto.di.registry_empty": "Le registre des fournisseurs de crypto ne peut pas être vide. Configurez au moins un fournisseur pour les déploiements RU.",
|
||||
"crypto.di.ru_openssl_required": "La ligne de base Linux RU nécessite le fournisseur 'ru.openssl.gost' (définissez STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 pour remplacer explicitement).",
|
||||
"crypto.di.ru_provider_required": "La ligne de base RU Linux est mal configurée : ru.openssl.gost et ru.pkcs11 sont désactivés via l'environnement. Activez au moins un fournisseur.",
|
||||
"crypto.di.no_plugins_loaded": "Aucun fournisseur de chiffrement n'a été chargé. Vérifiez la configuration et le manifeste du plugin.",
|
||||
"crypto.kms.rotation_via_policy": "La rotation {0} doit être orchestrée via des politiques ou des calendriers {1}.",
|
||||
"crypto.kms.revocation_via_policy": "La révocation de {0} doit être gérée via les API ou la console {1}.",
|
||||
"crypto.kms.public_key_missing_x": "Clé publique manquant la coordonnée X.",
|
||||
"crypto.kms.public_key_missing_y": "Clé publique manquant la coordonnée Y.",
|
||||
"crypto.kms.hash_failed": "Échec du hachage de la charge utile avec SHA-256.",
|
||||
"crypto.kms.key_not_found": "La clé '{0}' n’existe pas.",
|
||||
"crypto.kms.key_revoked": "La clé '{0}' a été révoquée et ne peut pas être pivotée.",
|
||||
"crypto.kms.key_revoked_signing": "La clé '{0}' est révoquée et ne peut pas être utilisée pour la signature.",
|
||||
"crypto.kms.key_version_not_found": "La version de clé '{0}' n'existe pas pour la clé '{1}'.",
|
||||
"crypto.kms.key_no_active_version": "La clé '{0}' n’a pas de version active.",
|
||||
"crypto.kms.key_version_inactive": "La version de clé '{0}' n'est pas active. État actuel : {1}",
|
||||
"crypto.kms.key_no_public_material": "Clé '{0}' version '{1}' ne dispose pas de clé publique.",
|
||||
"crypto.kms.algorithm_unsupported": "L'algorithme '{0}' n'est pas pris en charge par le pilote de fichier KMS.",
|
||||
"crypto.kms.curve_unsupported": "La courbe '{0}' n'est pas prise en charge.",
|
||||
"crypto.kms.metadata_failed": "Échec de la création ou du chargement des métadonnées clés.",
|
||||
"crypto.kms.algorithm_mismatch": "Inadéquation des algorithmes. '{0}' attendu, reçu '{1}'.",
|
||||
"crypto.kms.version_exists": "La version de clé '{0}' existe déjà pour la clé '{1}'.",
|
||||
"crypto.kms.material_not_found": "Les éléments clés pour la version '{0}' sont introuvables.",
|
||||
"crypto.kms.envelope_deserialize_failed": "L'enveloppe de clé n'a pas pu être désérialisée.",
|
||||
"crypto.kms.payload_deserialize_failed": "La charge utile clé n’a pas pu être désérialisée.",
|
||||
"crypto.kms.pem_empty": "La clé publique PEM ne peut pas être vide.",
|
||||
"crypto.kms.no_primary_version": "La clé cryptographique '{0}' n’a pas de version principale active.",
|
||||
"crypto.kms.es256_only": "Le fournisseur '{0}' prend uniquement en charge les clés de signature ES256.",
|
||||
"crypto.kms.version_metadata_required": "Les clés de signature KMS doivent inclure l'entrée de métadonnées 'kms.version'.",
|
||||
"crypto.kms.missing_public_key": "La clé de signature KMS ne contient pas de clé publique.",
|
||||
"crypto.fido2.curve_unsupported": "Courbe FIDO2 OID '{0}' non prise en charge.",
|
||||
"crypto.fido2.rotation_required": "La rotation des diplômes FIDO2 nécessite une nouvelle inscription.",
|
||||
"crypto.fido2.revocation_relying_party": "La révocation des informations d’identification FIDO2 doit être gérée dans la partie utilisatrice.",
|
||||
"crypto.fido2.missing_x": "Clé publique FIDO2 manquant la coordonnée X.",
|
||||
"crypto.fido2.missing_y": "Clé publique FIDO2 manquant la coordonnée Y.",
|
||||
"crypto.fido2.authenticator_required": "IFido2Authenticator doit être enregistré pour utiliser FIDO2 KMS.",
|
||||
"crypto.pkcs11.rotation_hsm": "La rotation PKCS#11 nécessite des outils d'administration HSM.",
|
||||
"crypto.pkcs11.revocation_hsm": "La révocation PKCS#11 doit être gérée par les stratégies HSM.",
|
||||
"crypto.pkcs11.slot_not_found": "Impossible de résoudre l'emplacement PKCS#11.",
|
||||
"crypto.pkcs11.private_key_not_found": "Clé privée PKCS#11 introuvable.",
|
||||
"crypto.pkcs11.public_key_not_found": "Clé publique PKCS#11 introuvable.",
|
||||
"crypto.pkcs11.missing_ec_point": "Clé publique manquant le point EC.",
|
||||
"crypto.pkcs11.missing_ec_params": "Clé publique manquant les paramètres EC.",
|
||||
"crypto.pkcs11.unsupported_point_format": "Format de point EC non pris en charge.",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "Courbe EC non prise en charge OID '{0}'.",
|
||||
"crypto.pkcs11.curve_unsupported": "Courbe EC non prise en charge '{0}'.",
|
||||
"common.provcache.sbom_hash_required": "Le hachage SBOM ne peut pas être nul ou vide.",
|
||||
"common.provcache.fetch_url_absolute": "L'URL de base de récupération différée doit être absolue.",
|
||||
"common.provcache.fetch_url_no_userinfo": "L'URL de base de récupération différée ne doit pas inclure d'informations utilisateur.",
|
||||
"common.provcache.fetch_url_host_required": "L'URL de base de récupération différée doit inclure un hôte.",
|
||||
"common.provcache.fetch_url_scheme_invalid": "Le schéma d'URL de base de récupération différée '{0}' n'est pas autorisé.",
|
||||
"common.provcache.fetch_url_host_invalid": "L'hôte d'URL de base de récupération différée '{0}' n'est pas sur la liste autorisée.",
|
||||
"common.provcache.no_chunks_provided": "Aucun morceau fourni.",
|
||||
"common.provcache.bundle_deserialize_failed": "Échec de la désérialisation du bundle.",
|
||||
"common.provcache.signer_not_configured": "Le signataire n'est pas configuré.",
|
||||
"common.provcache.signing_requested_no_signer": "Signature demandée mais aucun signataire n'est configuré.",
|
||||
"common.provcache.cache_entry_not_found": "Entrée de cache introuvable pour VeriKey : {0}",
|
||||
"common.provcache.chunk_manifest_not_found": "Manifeste de fragments introuvable pour la racine de preuve : {0}",
|
||||
"common.provcache.http_timeout_invalid": "Le délai d'expiration HTTP de récupération différée doit être une durée positive et non infinie.",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher nécessite une BaseAddress sur le client HTTP.",
|
||||
"common.provcache.merkle_root_mismatch": "Inadéquation des racines de Merkle. Attendu : {0}, calculé : {1}",
|
||||
"common.provcache.chunk_verification_failed": "La vérification du bloc {0} a échoué. Hachage attendu : {1}",
|
||||
"common.provcache.artifact_reference_required": "Une référence à l’artefact est requise.",
|
||||
"common.provcache.artifact_digest_required": "Un résumé des artefacts est requis.",
|
||||
"common.provcache.decision_digest_required": "DecisionDigest est requis.",
|
||||
"common.provcache.decision_digest_verikey_required": "DecisionDigest.VeriKey est requis.",
|
||||
"common.provcache.digest_empty": "Le résumé ne peut pas être vide.",
|
||||
"common.provcache.time_window_required": "La fenêtre horaire ne peut pas être nulle ou vide.",
|
||||
"common.provcache.vex_hash_required": "Le hachage du jeu de hachage VEX ne peut pas être nul ou vide.",
|
||||
"common.provcache.policy_hash_required": "Le hachage de la stratégie ne peut pas être nul ou vide.",
|
||||
"common.provcache.source_hash_required": "Le hachage source ne peut pas être nul ou vide.",
|
||||
"common.provcache.signer_set_hash_required": "Le hachage de l'ensemble de signataires ne peut pas être nul ou vide.",
|
||||
"common.evidence.toolchain_required": "ToolChain doit être défini avant de créer l'index.",
|
||||
"common.evidence.deserialization_failed": "Échec de la désérialisation de l'index des preuves.",
|
||||
"common.evidence.verdict_deserialization_failed": "Échec de la désérialisation du verdict.",
|
||||
"common.evidence.inputs_json_required": "JSON ne peut pas être nul ou vide.",
|
||||
"common.evidence.inputs_deserialization_failed": "Échec de la désérialisation des entrées de notation épinglées.",
|
||||
"common.evidence.bundle_alert_id_required": "L'ID d'alerte est requis",
|
||||
"common.evidence.bundle_artifact_id_required": "L'ID de l'artefact est requis",
|
||||
"common.evidence.pdf_export_requires_config": "L'exportation PDF nécessite une configuration supplémentaire",
|
||||
"common.evidence.invalid_uri_format": "Format URI de preuve non valide : {0}. Stella://type/chemin attendu",
|
||||
"common.evidence.invalid_uri_missing_path": "Format URI de preuve non valide : {0}. Chemin manquant.",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver ne peut pas résoudre le type de preuve : {0}",
|
||||
"common.evidence.schema_resource_not_found": "Ressource de schéma introuvable : {0}",
|
||||
"common.evidence.schema_resource_not_available": "Ressource de schéma non disponible : {0}",
|
||||
"common.evidence.provenance_deserialize_failed": "Échec de la désérialisation de la provenance pour preuve {0}",
|
||||
"common.evidence.bundle_deserialize_failed": "Échec de la désérialisation du paquet de verdicts",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "Échec de la désérialisation du verdict delta",
|
||||
"common.canonicalization.value_empty_after_trim": "La valeur ne doit pas être vide après le découpage.",
|
||||
"common.canonicalization.deserialize_failed": "Échec de la désérialisation de {0}",
|
||||
"common.canonicalization.datetime_value_null": "La valeur DateTimeOffset est nulle.",
|
||||
"common.canonicalization.dict_key_null": "La clé du dictionnaire ne peut pas être nulle.",
|
||||
"common.audit.replay_token_value_empty": "La valeur du jeton ne peut pas être vide.",
|
||||
"common.audit.replay_token_empty": "Le jeton ne peut pas être vide.",
|
||||
"common.audit.replay_token_format_invalid": "Format de jeton de relecture non valide : {0}",
|
||||
"common.audit.replay_token_version_invalid": "Version du jeton de relecture non valide : {0}",
|
||||
"common.audit.replay_token_expiration_invalid": "Horodatage d'expiration non valide dans le jeton de relecture : {0}",
|
||||
"common.audit.replay_token_duplicate_context_key": "AdditionalContext contient une clé en double après normalisation : '{0}'.",
|
||||
"common.artifact.uri_format_invalid": "Format d'URI non valide : {0}",
|
||||
"common.artifact.uri_scheme_not_supported": "Schéma d'URI non pris en charge : {0}",
|
||||
"common.artifact.file_not_accessible": "Fichier non accessible : {0}",
|
||||
"common.artifact.file_too_large": "Fichier trop volumineux : les octets {0} dépassent la limite de 100 Mo.",
|
||||
"common.artifact.uri_not_accessible": "URI non accessible : {0} a renvoyé {1}",
|
||||
"common.artifact.content_too_large": "Contenu trop volumineux : les octets {0} dépassent la limite de 100 Mo.",
|
||||
"common.artifact.fetch_failed": "Échec de la récupération à partir de {0} : {1}",
|
||||
"common.delta_verdict.artifact_ref_required": "Une référence à l’artefact est requise.",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "Algorithme de signature non pris en charge : {0}",
|
||||
"common.delta_verdict.hmac_secret_required": "La signature HMAC nécessite un secret base64.",
|
||||
"common.eventing.no_entry_assembly": "Aucun assemblage d'entrée trouvé",
|
||||
"auth.persistence.deserialize_inputs_failed": "Échec de la désérialisation des entrées",
|
||||
"auth.persistence.deserialize_result_failed": "Échec de la désérialisation du résultat",
|
||||
"auth.persistence.revocation_sequence_mismatch": "Incohérence de la séquence d'exportation de révocation. {0} attendu, {1} actuel.",
|
||||
"auth.persistence.revocation_update_rejected": "La mise à jour de l'état d'exportation de révocation a été rejetée. Séquence attendue {0}."
|
||||
}
|
||||
|
||||
@@ -1,411 +1,367 @@
|
||||
{
|
||||
"_meta": { "locale": "ru-RU", "namespace": "common", "version": "1.1" },
|
||||
|
||||
"common.error.generic": "Something went wrong.",
|
||||
"common.error.not_found": "The requested resource was not found.",
|
||||
"common.error.entity_not_found": "{0} '{1}' not found.",
|
||||
"common.error.unauthorized": "You do not have permission to perform this action.",
|
||||
"common.error.forbidden": "Access denied.",
|
||||
"common.error.bad_request": "The request is invalid.",
|
||||
"common.error.conflict": "A conflict occurred. The resource may have been modified.",
|
||||
"common.error.timeout": "Request timed out after {0} seconds.",
|
||||
"common.error.server_error": "An internal server error occurred. Please try again later.",
|
||||
"common.error.service_unavailable": "The service is temporarily unavailable.",
|
||||
"common.error.too_many_requests": "Too many requests. Please wait and try again.",
|
||||
"common.error.network": "Network error. Check your connection.",
|
||||
"common.error.body_required": "Request body is required.",
|
||||
"common.error.deserialization_failed": "Failed to deserialize {0}.",
|
||||
"common.error.not_supported": "{0} is not supported.",
|
||||
"common.error.already_exists": "{0} '{1}' already exists.",
|
||||
"common.error.revoked": "{0} '{1}' has been revoked and cannot be used.",
|
||||
"common.error.state_invalid": "{0} '{1}' is not in the expected state. Current state: {2}",
|
||||
|
||||
"common.validation.required": "{0} is required.",
|
||||
"common.validation.invalid": "{0} is invalid.",
|
||||
"common.validation.too_long": "{0} exceeds the maximum length of {1} characters.",
|
||||
"common.validation.too_short": "{0} must be at least {1} characters.",
|
||||
"common.validation.out_of_range": "{0} must be between {1} and {2}.",
|
||||
"common.validation.invalid_format": "{0} has an invalid format.",
|
||||
"common.validation.duplicate": "{0} already exists.",
|
||||
"common.validation.empty_not_allowed": "{0} must not be empty.",
|
||||
"common.validation.empty_after_trim": "{0} must not be empty after trimming.",
|
||||
"common.validation.greater_than_zero": "{0} must be greater than zero.",
|
||||
"common.validation.non_negative": "{0} must be non-negative.",
|
||||
"common.validation.at_least_one": "At least one {0} must be configured.",
|
||||
"common.validation.at_least_n": "{0} must have at least {1} entries.",
|
||||
"common.validation.null_or_empty": "{0} cannot be null or empty.",
|
||||
"common.validation.absolute_uri": "{0} must be an absolute URI.",
|
||||
"common.validation.invalid_regex": "{0} '{1}' is not a valid regular expression.",
|
||||
"common.validation.unknown_value": "{0} '{1}' is not recognized. Allowed values: {2}",
|
||||
"common.validation.max_exceeded": "{0} must be {1} characters or fewer.",
|
||||
|
||||
"common.actions.save": "Save",
|
||||
"common.actions.cancel": "Cancel",
|
||||
"common.actions.delete": "Delete",
|
||||
"common.actions.confirm": "Confirm",
|
||||
"common.actions.submit": "Submit",
|
||||
"common.actions.close": "Close",
|
||||
"common.actions.retry": "Retry",
|
||||
"common.actions.expand": "Expand",
|
||||
"common.actions.collapse": "Collapse",
|
||||
"common.actions.show_more": "Show more",
|
||||
"common.actions.show_less": "Show less",
|
||||
|
||||
"common.status.healthy": "Healthy",
|
||||
"common.status.degraded": "Degraded",
|
||||
"common.status.unavailable": "Unavailable",
|
||||
"common.status.unknown": "Unknown",
|
||||
"common.status.active": "Active",
|
||||
"common.status.inactive": "Inactive",
|
||||
"common.status.pending": "Pending",
|
||||
"common.status.running": "Running",
|
||||
"common.status.completed": "Completed",
|
||||
"common.status.failed": "Failed",
|
||||
"common.status.canceled": "Canceled",
|
||||
"common.status.blocked": "Blocked",
|
||||
|
||||
"common.severity.critical": "Critical",
|
||||
"common.severity.high": "High",
|
||||
"common.severity.medium": "Medium",
|
||||
"common.severity.low": "Low",
|
||||
"common.severity.info": "Info",
|
||||
"common.severity.none": "None",
|
||||
|
||||
"common.time.seconds_ago": "{0} seconds ago",
|
||||
"common.time.minutes_ago": "{0} minutes ago",
|
||||
"common.time.hours_ago": "{0} hours ago",
|
||||
"common.time.days_ago": "{0} days ago",
|
||||
"common.time.just_now": "Just now",
|
||||
|
||||
"common.ui.loading": "Loading...",
|
||||
"common.ui.saving": "Saving...",
|
||||
"common.ui.deleting": "Deleting...",
|
||||
"common.ui.submitting": "Submitting...",
|
||||
"common.ui.no_results": "No results found.",
|
||||
"common.ui.offline": "You are offline.",
|
||||
"common.ui.reconnecting": "Reconnecting...",
|
||||
"common.ui.back_online": "Back online.",
|
||||
|
||||
"auth.dpop.proof_lifetime_invalid": "DPoP proof lifetime must be greater than zero.",
|
||||
"auth.dpop.clock_skew_invalid": "DPoP allowed clock skew must be between 0 seconds and 5 minutes.",
|
||||
"auth.dpop.replay_window_invalid": "DPoP replay window must be greater than or equal to zero.",
|
||||
"auth.dpop.algorithm_required": "At least one allowed DPoP algorithm must be configured.",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "Allowed DPoP algorithms cannot be empty after normalization.",
|
||||
"auth.dpop.options_required": "DPoP options must be provided.",
|
||||
"auth.dpop.nonce_ttl_invalid": "Nonce TTL must be greater than zero.",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "Max issuance per minute must be at least 1.",
|
||||
"auth.dpop.nonce_store_required": "Dpop.Nonce.Store must be specified.",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store must be either 'memory' or 'redis'.",
|
||||
"auth.dpop.nonce_redis_required": "Dpop.Nonce.RedisConnectionString must be provided when using the 'redis' store.",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences must include at least one audience.",
|
||||
"auth.dpop.token_three_segments": "Token must contain three segments.",
|
||||
"auth.dpop.segment_out_of_range": "Segment index out of range.",
|
||||
"auth.dpop.header_decode_failed": "Unable to decode header.",
|
||||
"auth.dpop.header_missing_typ": "DPoP proof missing typ=dpop+jwt header.",
|
||||
"auth.dpop.header_missing_alg": "DPoP proof missing alg header.",
|
||||
"auth.dpop.header_unsupported_alg": "Unsupported DPoP algorithm.",
|
||||
"auth.dpop.header_missing_jwk": "DPoP proof missing jwk header.",
|
||||
"auth.dpop.header_invalid_jwk": "DPoP proof jwk header is invalid.",
|
||||
"auth.dpop.payload_decode_failed": "Unable to decode payload.",
|
||||
"auth.dpop.payload_missing_htm": "DPoP proof missing htm claim.",
|
||||
"auth.dpop.payload_htm_mismatch": "DPoP htm does not match request method.",
|
||||
"auth.dpop.payload_missing_htu": "DPoP proof missing htu claim.",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu does not match request URI.",
|
||||
"auth.dpop.payload_missing_iat": "DPoP proof missing iat claim.",
|
||||
"auth.dpop.payload_missing_jti": "DPoP proof missing jti claim.",
|
||||
"auth.dpop.payload_iat_invalid": "DPoP proof iat claim is not a valid number.",
|
||||
"auth.dpop.nonce_missing": "DPoP proof missing nonce claim.",
|
||||
"auth.dpop.nonce_mismatch": "DPoP nonce mismatch.",
|
||||
"auth.dpop.proof_future": "DPoP proof issued in the future.",
|
||||
"auth.dpop.proof_expired": "DPoP proof expired.",
|
||||
"auth.dpop.signature_failed": "DPoP proof signature validation failed.",
|
||||
"auth.dpop.replay_detected": "DPoP proof already used.",
|
||||
|
||||
"config.authority.schema_version_required": "Authority configuration requires a positive schemaVersion.",
|
||||
"config.authority.issuer_required": "Authority configuration requires an issuer URL.",
|
||||
"config.authority.issuer_absolute": "Authority issuer must be an absolute URI.",
|
||||
"config.authority.issuer_https": "Authority issuer must use HTTPS unless running on a loopback interface.",
|
||||
"config.authority.duplicate_tenant": "Authority configuration contains duplicate tenant identifier '{0}'.",
|
||||
"config.authority.property_greater_than_zero": "Authority configuration requires {0} to be greater than zero.",
|
||||
"config.authority.property_max": "Authority configuration requires {0} to be less than or equal to {1}.",
|
||||
"config.authority.remote_inference_required": "Authority configuration requires at least one advisory AI remote inference profile when remote inference is enabled.",
|
||||
|
||||
"config.tenant.id_required": "Each tenant requires an id (slug).",
|
||||
"config.tenant.id_format": "Tenant id '{0}' must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.project_format": "Tenant '{0}' defines project '{1}' which must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.role_missing_config": "Tenant '{0}' defines role '{1}' without configuration.",
|
||||
"config.tenant.role_scope_required": "Tenant '{0}' role '{1}' must specify at least one scope.",
|
||||
"config.tenant.role_unknown_scope": "Tenant '{0}' role '{1}' references unknown scope '{2}'.",
|
||||
"config.tenant.role_unsupported_attribute": "Tenant '{0}' role '{1}' defines unsupported attribute '{2}'. Allowed attributes: env, owner, business_tier.",
|
||||
"config.tenant.delegation_max_tokens": "Tenant '{0}' delegation maxActiveTokens must be greater than zero when specified.",
|
||||
"config.tenant.remote_inference_disabled": "Tenant remote inference consent cannot be granted when remote inference is disabled.",
|
||||
"config.tenant.remote_inference_consent_version_length": "Tenant remote inference consentVersion must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consented_by_length": "Tenant remote inference consentedBy must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consent_version_required": "Tenant remote inference consent requires consentVersion when consentGranted is true.",
|
||||
"config.tenant.remote_inference_consented_at_required": "Tenant remote inference consent requires consentedAt when consentGranted is true.",
|
||||
|
||||
"config.service_account.id_required": "Delegation service account seeds require an accountId.",
|
||||
"config.service_account.id_format": "Service account id '{0}' must contain lowercase letters, digits, colon, underscore, or hyphen.",
|
||||
"config.service_account.tenant_required": "Service account '{0}' requires a tenant assignment.",
|
||||
"config.service_account.tenant_unknown": "Service account '{0}' references unknown tenant '{1}'.",
|
||||
"config.service_account.scope_required": "Service account '{0}' must specify at least one allowed scope.",
|
||||
"config.service_account.unsupported_attribute": "Service account '{0}' defines unsupported attribute '{1}'. Allowed attributes: env, owner, business_tier.",
|
||||
|
||||
"config.plugin.assembly_required": "Authority plugin '{0}' must define either assemblyName or assemblyPath.",
|
||||
"config.plugin.config_file_required": "Authority plugin '{0}' must define a configFile.",
|
||||
"config.plugin.config_file_missing": "Authority plugin '{0}' specifies configFile '{1}' which does not exist.",
|
||||
"config.plugin.unknown_capability": "Authority plugin '{0}' declares unknown capability '{1}'. Allowed values: password, mfa, clientProvisioning, bootstrap.",
|
||||
"config.plugin.descriptor_null": "Authority plugin descriptor '{0}' is null.",
|
||||
|
||||
"config.delegation.duplicate_account": "Delegation configuration contains duplicate service account id '{0}'.",
|
||||
"config.delegation.quota_max_tokens": "Authority delegation configuration requires {0}.MaxActiveTokens to be greater than zero.",
|
||||
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace must be non-negative.",
|
||||
"config.mtls.audiences_required": "Mtls.EnforceForAudiences must include at least one audience when enabled.",
|
||||
"config.mtls.ca_empty": "Mtls.AllowedCertificateAuthorities entries must not be empty.",
|
||||
"config.mtls.san_types_required": "Mtls.AllowedSanTypes must include at least one entry when enabled.",
|
||||
"config.mtls.subject_patterns_empty": "Mtls.AllowedSubjectPatterns entries must not be empty.",
|
||||
"config.mtls.subject_pattern_invalid": "Mtls.AllowedSubjectPatterns entry '{0}' is not a valid regular expression.",
|
||||
|
||||
"config.signing.key_id_required": "Authority signing configuration requires signing.activeKeyId.",
|
||||
"config.signing.key_path_required": "Authority signing configuration requires signing.keyPath.",
|
||||
"config.signing.jwks_cache_range": "Authority signing configuration requires signing.jwksCacheLifetime to be between 00:00:01 and 01:00:00.",
|
||||
"config.signing.additional_key_id_required": "Additional signing keys require a keyId.",
|
||||
"config.signing.additional_key_path_required": "Signing key '{0}' requires a path.",
|
||||
|
||||
"config.bootstrap.api_key_required": "Authority bootstrap configuration requires an API key when enabled.",
|
||||
"config.bootstrap.idp_required": "Authority bootstrap configuration requires a default identity provider name when enabled.",
|
||||
|
||||
"config.rate_limit.permit_limit": "Authority rate limiting '{0}' requires permitLimit to be greater than zero.",
|
||||
"config.rate_limit.queue_limit": "Authority rate limiting '{0}' queueLimit cannot be negative.",
|
||||
"config.rate_limit.window": "Authority rate limiting '{0}' window must be greater than zero and no more than one hour.",
|
||||
|
||||
"config.storage.connection_required": "Authority storage requires a connection string.",
|
||||
"config.storage.timeout_invalid": "Authority storage command timeout must be greater than zero.",
|
||||
|
||||
"config.ack_token.payload_type_required": "notifications.ackTokens.payloadType must be specified when ack tokens are enabled.",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime must be greater than zero.",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.ack_token.key_id_required": "notifications.ackTokens.activeKeyId must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.key_path_required": "notifications.ackTokens.keyPath must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime must be between 00:00:01 and 01:00:00.",
|
||||
|
||||
"config.exceptions.null_template": "Authority exception routing template entries must not be null.",
|
||||
"config.exceptions.duplicate_template": "Authority exception routing template '{0}' is configured more than once.",
|
||||
"config.exceptions.template_id_required": "Authority exception routing templates require an id.",
|
||||
"config.exceptions.template_route_required": "Authority exception routing template '{0}' requires authorityRouteId.",
|
||||
|
||||
"config.sealed_mode.evidence_path_required": "AirGap.SealedMode.EvidencePath must be provided when enforcement is enabled.",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge must be between 00:00:01 and 7.00:00:00.",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime must be greater than zero and less than or equal to AirGap.SealedMode.MaxEvidenceAge.",
|
||||
|
||||
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts must include at least one host when enabled.",
|
||||
"config.escalation.scope_required": "notifications.escalation.scope must be specified.",
|
||||
|
||||
"config.anti_forgery.audience_required": "vulnerabilityExplorer.workflow.antiForgery.audience must be specified when anti-forgery tokens are enabled.",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime must be greater than zero.",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries must be non-negative.",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength must be greater than zero.",
|
||||
|
||||
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime must be greater than zero when attachment tokens are enabled.",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.attachment.payload_type_required": "vulnerabilityExplorer.attachments.payloadType must be specified when attachment tokens are enabled.",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries must be non-negative.",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength must be greater than zero.",
|
||||
|
||||
"config.api_lifecycle.sunset_after_deprecation": "Legacy auth sunset date must be after the deprecation date.",
|
||||
"config.api_lifecycle.docs_url_format": "Legacy auth documentation URL must be an absolute HTTP or HTTPS URL.",
|
||||
|
||||
"crypto.provider.algorithm_not_supported": "Signing algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.hash_not_supported": "Hash algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.verify_not_supported": "Verification algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.key_not_registered": "Signing key '{0}' is not registered with provider '{1}'.",
|
||||
"crypto.provider.key_algorithm_mismatch": "Signing key '{0}' is registered for algorithm '{1}', not '{2}'.",
|
||||
"crypto.provider.ec_keys_only": "Provider '{0}' only accepts EC signing keys.",
|
||||
"crypto.provider.no_password_hashing": "Provider '{0}' does not expose password hashing capabilities.",
|
||||
"crypto.provider.no_content_hashing": "Provider '{0}' does not support content hashing.",
|
||||
"crypto.provider.no_ephemeral_verification": "Provider '{0}' does not support ephemeral verification.",
|
||||
"crypto.provider.not_signing_capable": "Signing algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.es256_only": "Only ES256 signing keys are currently supported by provider '{0}'.",
|
||||
"crypto.provider.p256_required": "ES256 signing keys must use the NIST P-256 curve.",
|
||||
"crypto.provider.curve_mismatch": "Signing key curve mismatch. Expected curve '{0}' for algorithm '{1}'.",
|
||||
|
||||
"crypto.registry.empty": "At least one crypto provider must be registered.",
|
||||
"crypto.registry.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.registry.signing_not_supported": "Signing algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.hash_not_supported": "Hash algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.verify_not_supported": "Verification algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.active_profile_required": "Active profile is required.",
|
||||
"crypto.registry.profile_not_found": "Profile ID '{0}' is not found in the registry.",
|
||||
"crypto.registry.profile_id_required": "Profile ID cannot be null or empty.",
|
||||
|
||||
"crypto.key.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.key.private_scalar_required": "Private key parameters must include the scalar component.",
|
||||
"crypto.key.verification_only": "This constructor is only for verification-only keys. Set verificationOnly to true.",
|
||||
"crypto.key.public_xy_required": "Public key parameters must include X and Y coordinates.",
|
||||
"crypto.key.private_material_required": "Private key material must be provided.",
|
||||
|
||||
"crypto.hash.algorithm_unsupported": "Unsupported hash algorithm '{0}'.",
|
||||
"crypto.hash.purpose_required": "Purpose cannot be null or empty.",
|
||||
"crypto.hmac.algorithm_unknown": "Unknown HMAC algorithm '{0}'.",
|
||||
"crypto.hmac.algorithm_unsupported": "Unsupported HMAC algorithm '{0}'.",
|
||||
|
||||
"crypto.ecdsa.algorithm_unsupported": "Unsupported ECDSA signing algorithm '{0}'.",
|
||||
"crypto.ecdsa.curve_unsupported": "Unsupported ECDSA curve mapping for algorithm '{0}'.",
|
||||
|
||||
"crypto.digest.required": "Digest is required.",
|
||||
"crypto.digest.prefix_required": "{0} must start with '{1}'.",
|
||||
"crypto.digest.algorithm_unsupported": "Unsupported digest algorithm in '{0}'. Only sha256 is supported.",
|
||||
"crypto.digest.hex_length": "{0} must contain {1} hexadecimal characters.",
|
||||
|
||||
"crypto.password.memory_cost_invalid": "Password hashing memory cost must be greater than zero.",
|
||||
"crypto.password.iterations_invalid": "Password hashing iteration count must be greater than zero.",
|
||||
"crypto.password.parallelism_invalid": "Password hashing parallelism must be greater than zero.",
|
||||
"crypto.password.algorithm_mismatch": "{0} only supports the {1} algorithm.",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 requires a positive iteration count.",
|
||||
|
||||
"crypto.gost.not_der": "Signature is not DER encoded.",
|
||||
"crypto.gost.invalid_der": "Invalid DER structure for GOST signature.",
|
||||
"crypto.gost.raw_length": "Raw GOST signature must be {0} bytes.",
|
||||
"crypto.gost.neither_format": "Signature payload is neither DER nor raw GOST format.",
|
||||
"crypto.gost.coordinate_overflow": "Coordinate exceeds expected length.",
|
||||
|
||||
"crypto.profile.unknown_purpose": "Unknown hash purpose '{0}' in profile '{1}'.",
|
||||
"crypto.compliance.at_least_one_signing": "At least one signing algorithm must be supplied.",
|
||||
"crypto.compliance.at_least_one_hash": "At least one hash algorithm must be supplied.",
|
||||
|
||||
"crypto.ed25519.private_key_size": "Ed25519 private key must be 32 or 64 bytes.",
|
||||
"crypto.ed25519.public_key_size": "Ed25519 public key must be 32 bytes.",
|
||||
"crypto.ed25519.no_hashing": "BouncyCastle Ed25519 provider does not expose hashing capabilities.",
|
||||
"crypto.ed25519.raw_key_required": "Provider '{0}' requires raw Ed25519 private key material.",
|
||||
|
||||
"crypto.sm.no_password_hashing": "SM provider does not expose password hashing.",
|
||||
"crypto.sm.raw_key_required": "SM2 provider requires raw private key bytes (PKCS#8 DER).",
|
||||
"crypto.sm.unsupported_format": "Unsupported SM2 key format. Expect PEM or PKCS#8 DER.",
|
||||
"crypto.sm.disabled": "Provider '{0}' is disabled. Set {1}=1 (or disable RequireEnvironmentGate) to enable software SM2/SM3.",
|
||||
|
||||
"crypto.di.registry_empty": "Crypto provider registry cannot be empty. Configure at least one provider for RU deployments.",
|
||||
"crypto.di.ru_openssl_required": "Linux RU baseline requires provider 'ru.openssl.gost' (set STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 to override explicitly).",
|
||||
"crypto.di.ru_provider_required": "RU Linux baseline is misconfigured: both ru.openssl.gost and ru.pkcs11 are disabled via environment. Enable at least one provider.",
|
||||
"crypto.di.no_plugins_loaded": "No crypto providers were loaded. Check plugin configuration and manifest.",
|
||||
|
||||
"crypto.kms.rotation_via_policy": "{0} rotation must be orchestrated via {1} policies or schedules.",
|
||||
"crypto.kms.revocation_via_policy": "{0} revocation must be managed through {1} APIs or console.",
|
||||
"crypto.kms.public_key_missing_x": "Public key missing X coordinate.",
|
||||
"crypto.kms.public_key_missing_y": "Public key missing Y coordinate.",
|
||||
"crypto.kms.hash_failed": "Failed to hash payload with SHA-256.",
|
||||
"crypto.kms.key_not_found": "Key '{0}' does not exist.",
|
||||
"crypto.kms.key_revoked": "Key '{0}' has been revoked and cannot be rotated.",
|
||||
"crypto.kms.key_revoked_signing": "Key '{0}' is revoked and cannot be used for signing.",
|
||||
"crypto.kms.key_version_not_found": "Key version '{0}' does not exist for key '{1}'.",
|
||||
"crypto.kms.key_no_active_version": "Key '{0}' does not have an active version.",
|
||||
"crypto.kms.key_version_inactive": "Key version '{0}' is not active. Current state: {1}",
|
||||
"crypto.kms.key_no_public_material": "Key '{0}' version '{1}' does not have public key material.",
|
||||
"crypto.kms.algorithm_unsupported": "Algorithm '{0}' is not supported by the file KMS driver.",
|
||||
"crypto.kms.curve_unsupported": "Curve '{0}' is not supported.",
|
||||
"crypto.kms.metadata_failed": "Failed to create or load key metadata.",
|
||||
"crypto.kms.algorithm_mismatch": "Algorithm mismatch. Expected '{0}', received '{1}'.",
|
||||
"crypto.kms.version_exists": "Key version '{0}' already exists for key '{1}'.",
|
||||
"crypto.kms.material_not_found": "Key material for version '{0}' was not found.",
|
||||
"crypto.kms.envelope_deserialize_failed": "Key envelope could not be deserialized.",
|
||||
"crypto.kms.payload_deserialize_failed": "Key payload could not be deserialized.",
|
||||
"crypto.kms.pem_empty": "Public key PEM cannot be empty.",
|
||||
"crypto.kms.no_primary_version": "Crypto key '{0}' does not have an active primary version.",
|
||||
"crypto.kms.es256_only": "Provider '{0}' only supports ES256 signing keys.",
|
||||
"crypto.kms.version_metadata_required": "KMS signing keys must include metadata entry 'kms.version'.",
|
||||
"crypto.kms.missing_public_key": "KMS signing key is missing public key material.",
|
||||
|
||||
"crypto.fido2.curve_unsupported": "Unsupported FIDO2 curve OID '{0}'.",
|
||||
"crypto.fido2.rotation_required": "FIDO2 credential rotation requires new enrolment.",
|
||||
"crypto.fido2.revocation_relying_party": "FIDO2 credential revocation must be managed in the relying party.",
|
||||
"crypto.fido2.missing_x": "FIDO2 public key missing X coordinate.",
|
||||
"crypto.fido2.missing_y": "FIDO2 public key missing Y coordinate.",
|
||||
"crypto.fido2.authenticator_required": "IFido2Authenticator must be registered to use FIDO2 KMS.",
|
||||
|
||||
"crypto.pkcs11.rotation_hsm": "PKCS#11 rotation requires HSM administrative tooling.",
|
||||
"crypto.pkcs11.revocation_hsm": "PKCS#11 revocation must be handled by HSM policies.",
|
||||
"crypto.pkcs11.slot_not_found": "Could not resolve PKCS#11 slot.",
|
||||
"crypto.pkcs11.private_key_not_found": "PKCS#11 private key not found.",
|
||||
"crypto.pkcs11.public_key_not_found": "PKCS#11 public key not found.",
|
||||
"crypto.pkcs11.missing_ec_point": "Public key missing EC point.",
|
||||
"crypto.pkcs11.missing_ec_params": "Public key missing EC parameters.",
|
||||
"crypto.pkcs11.unsupported_point_format": "Unsupported EC point format.",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "Unsupported EC curve OID '{0}'.",
|
||||
"crypto.pkcs11.curve_unsupported": "Unsupported EC curve '{0}'.",
|
||||
|
||||
"common.provcache.sbom_hash_required": "SBOM hash cannot be null or empty.",
|
||||
"common.provcache.fetch_url_absolute": "Lazy fetch base URL must be absolute.",
|
||||
"common.provcache.fetch_url_no_userinfo": "Lazy fetch base URL must not include user info.",
|
||||
"common.provcache.fetch_url_host_required": "Lazy fetch base URL must include a host.",
|
||||
"common.provcache.fetch_url_scheme_invalid": "Lazy fetch base URL scheme '{0}' is not allowed.",
|
||||
"common.provcache.fetch_url_host_invalid": "Lazy fetch base URL host '{0}' is not allowlisted.",
|
||||
"common.provcache.no_chunks_provided": "No chunks provided.",
|
||||
"common.provcache.bundle_deserialize_failed": "Failed to deserialize bundle.",
|
||||
"common.provcache.signer_not_configured": "Signer is not configured.",
|
||||
"common.provcache.signing_requested_no_signer": "Signing requested but no signer is configured.",
|
||||
"common.provcache.cache_entry_not_found": "Cache entry not found for VeriKey: {0}",
|
||||
"common.provcache.chunk_manifest_not_found": "Chunk manifest not found for proof root: {0}",
|
||||
"common.provcache.http_timeout_invalid": "Lazy fetch HTTP timeout must be a positive, non-infinite duration.",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher requires a BaseAddress on the HTTP client.",
|
||||
"common.provcache.merkle_root_mismatch": "Merkle root mismatch. Expected: {0}, Computed: {1}",
|
||||
"common.provcache.chunk_verification_failed": "Chunk {0} verification failed. Expected hash: {1}",
|
||||
"common.provcache.artifact_reference_required": "Artifact reference is required.",
|
||||
"common.provcache.artifact_digest_required": "Artifact digest is required.",
|
||||
"common.provcache.decision_digest_required": "DecisionDigest is required.",
|
||||
"common.provcache.decision_digest_verikey_required": "DecisionDigest.VeriKey is required.",
|
||||
"common.provcache.digest_empty": "Digest cannot be empty.",
|
||||
"common.provcache.time_window_required": "Time window cannot be null or empty.",
|
||||
"common.provcache.vex_hash_required": "VEX hash set hash cannot be null or empty.",
|
||||
"common.provcache.policy_hash_required": "Policy hash cannot be null or empty.",
|
||||
"common.provcache.source_hash_required": "Source hash cannot be null or empty.",
|
||||
"common.provcache.signer_set_hash_required": "Signer set hash cannot be null or empty.",
|
||||
|
||||
"common.evidence.toolchain_required": "ToolChain must be set before building index.",
|
||||
"common.evidence.deserialization_failed": "Failed to deserialize evidence index.",
|
||||
"common.evidence.verdict_deserialization_failed": "Failed to deserialize verdict.",
|
||||
"common.evidence.inputs_json_required": "JSON cannot be null or empty.",
|
||||
"common.evidence.inputs_deserialization_failed": "Failed to deserialize pinned scoring inputs.",
|
||||
"common.evidence.bundle_alert_id_required": "AlertId is required",
|
||||
"common.evidence.bundle_artifact_id_required": "ArtifactId is required",
|
||||
"common.evidence.pdf_export_requires_config": "PDF export requires additional configuration",
|
||||
"common.evidence.invalid_uri_format": "Invalid evidence URI format: {0}. Expected stella://type/path",
|
||||
"common.evidence.invalid_uri_missing_path": "Invalid evidence URI format: {0}. Missing path.",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver cannot resolve evidence type: {0}",
|
||||
"common.evidence.schema_resource_not_found": "Schema resource not found: {0}",
|
||||
"common.evidence.schema_resource_not_available": "Schema resource not available: {0}",
|
||||
"common.evidence.provenance_deserialize_failed": "Failed to deserialize provenance for evidence {0}",
|
||||
"common.evidence.bundle_deserialize_failed": "Failed to deserialize verdict bundle",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "Failed to deserialize delta verdict",
|
||||
|
||||
"common.canonicalization.value_empty_after_trim": "Value must not be empty after trimming.",
|
||||
"common.canonicalization.deserialize_failed": "Failed to deserialize {0}",
|
||||
"common.canonicalization.datetime_value_null": "DateTimeOffset value is null.",
|
||||
"common.canonicalization.dict_key_null": "Dictionary key cannot be null.",
|
||||
|
||||
"common.audit.replay_token_value_empty": "Token value cannot be empty.",
|
||||
"common.audit.replay_token_empty": "Token cannot be empty.",
|
||||
"common.audit.replay_token_format_invalid": "Invalid replay token format: {0}",
|
||||
"common.audit.replay_token_version_invalid": "Invalid replay token version: {0}",
|
||||
"common.audit.replay_token_expiration_invalid": "Invalid expiration timestamp in replay token: {0}",
|
||||
"common.audit.replay_token_duplicate_context_key": "AdditionalContext contains duplicate key after normalization: '{0}'.",
|
||||
|
||||
"common.artifact.uri_format_invalid": "Invalid URI format: {0}",
|
||||
"common.artifact.uri_scheme_not_supported": "URI scheme not supported: {0}",
|
||||
"common.artifact.file_not_accessible": "File not accessible: {0}",
|
||||
"common.artifact.file_too_large": "File too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.uri_not_accessible": "URI not accessible: {0} returned {1}",
|
||||
"common.artifact.content_too_large": "Content too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.fetch_failed": "Failed to fetch from {0}: {1}",
|
||||
|
||||
"common.delta_verdict.artifact_ref_required": "Artifact reference is required.",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "Unsupported signing algorithm: {0}",
|
||||
"common.delta_verdict.hmac_secret_required": "HMAC signing requires a base64 secret.",
|
||||
|
||||
"common.eventing.no_entry_assembly": "No entry assembly found",
|
||||
|
||||
"auth.persistence.deserialize_inputs_failed": "Failed to deserialize inputs",
|
||||
"auth.persistence.deserialize_result_failed": "Failed to deserialize result",
|
||||
"auth.persistence.revocation_sequence_mismatch": "Revocation export sequence mismatch. Expected {0}, current {1}.",
|
||||
"auth.persistence.revocation_update_rejected": "Revocation export state update rejected. Expected sequence {0}."
|
||||
"_meta": {
|
||||
"locale": "ru-RU",
|
||||
"namespace": "common",
|
||||
"version": "1.1"
|
||||
},
|
||||
"common.error.generic": "Что-то пошло не так.",
|
||||
"common.error.not_found": "Запрошенный ресурс не найден.",
|
||||
"common.error.entity_not_found": "{0} '{1}' не найден.",
|
||||
"common.error.unauthorized": "У вас нет разрешения на выполнение этого действия.",
|
||||
"common.error.forbidden": "Доступ запрещен.",
|
||||
"common.error.bad_request": "Запрос недействителен.",
|
||||
"common.error.conflict": "Произошел конфликт. Возможно, ресурс был изменен.",
|
||||
"common.error.timeout": "Тайм-аут запроса истек через {0} секунд.",
|
||||
"common.error.server_error": "Произошла внутренняя ошибка сервера. Пожалуйста, повторите попытку позже.",
|
||||
"common.error.service_unavailable": "Услуга временно недоступна.",
|
||||
"common.error.too_many_requests": "Слишком много запросов. Пожалуйста, подождите и повторите попытку.",
|
||||
"common.error.network": "Ошибка сети. Проверьте свое соединение.",
|
||||
"common.error.body_required": "Требуется тело запроса.",
|
||||
"common.error.deserialization_failed": "Не удалось десериализовать {0}.",
|
||||
"common.error.not_supported": "{0} не поддерживается.",
|
||||
"common.error.already_exists": "{0} '{1}' уже существует.",
|
||||
"common.error.revoked": "{0} '{1}' отозван и не может быть использован.",
|
||||
"common.error.state_invalid": "{0} '{1}' не находится в ожидаемом состоянии. Текущее состояние: {2}",
|
||||
"common.validation.required": "Требуется {0}.",
|
||||
"common.validation.invalid": "{0} недействителен.",
|
||||
"common.validation.too_long": "{0} превышает максимальную длину символов {1}.",
|
||||
"common.validation.too_short": "{0} должен содержать не менее {1} символов.",
|
||||
"common.validation.out_of_range": "{0} должен находиться между {1} и {2}.",
|
||||
"common.validation.invalid_format": "{0} имеет неверный формат.",
|
||||
"common.validation.duplicate": "{0} уже существует.",
|
||||
"common.validation.empty_not_allowed": "{0} не должен быть пустым.",
|
||||
"common.validation.empty_after_trim": "{0} не должен быть пустым после обрезки.",
|
||||
"common.validation.greater_than_zero": "{0} должно быть больше нуля.",
|
||||
"common.validation.non_negative": "{0} не должен быть отрицательным.",
|
||||
"common.validation.at_least_one": "Должен быть настроен хотя бы один {0}.",
|
||||
"common.validation.at_least_n": "{0} должен содержать как минимум записи {1}.",
|
||||
"common.validation.null_or_empty": "{0} не может быть нулевым или пустым.",
|
||||
"common.validation.absolute_uri": "{0} должен быть абсолютным URI.",
|
||||
"common.validation.invalid_regex": "{0} '{1}' не является допустимым регулярным выражением.",
|
||||
"common.validation.unknown_value": "{0} '{1}' не распознан. Допустимые значения: {2}.",
|
||||
"common.validation.max_exceeded": "{0} должен содержать не более символов {1}.",
|
||||
"common.actions.save": "Сохранить",
|
||||
"common.actions.cancel": "Отмена",
|
||||
"common.actions.delete": "Удалить",
|
||||
"common.actions.confirm": "Подтвердить",
|
||||
"common.actions.submit": "Отправить",
|
||||
"common.actions.close": "Закрыть",
|
||||
"common.actions.retry": "Повторить",
|
||||
"common.actions.expand": "Развернуть",
|
||||
"common.actions.collapse": "Свернуть",
|
||||
"common.actions.show_more": "Показать больше",
|
||||
"common.actions.show_less": "Показать меньше",
|
||||
"common.status.healthy": "Исправно",
|
||||
"common.status.degraded": "Ухудшено",
|
||||
"common.status.unavailable": "Недоступно",
|
||||
"common.status.unknown": "Неизвестно",
|
||||
"common.status.active": "Активно",
|
||||
"common.status.inactive": "Неактивно",
|
||||
"common.status.pending": "В ожидании",
|
||||
"common.status.running": "Выполняется",
|
||||
"common.status.completed": "Завершено",
|
||||
"common.status.failed": "Сбой",
|
||||
"common.status.canceled": "Отменено",
|
||||
"common.status.blocked": "Заблокировано",
|
||||
"common.severity.critical": "Критический",
|
||||
"common.severity.high": "Высокий",
|
||||
"common.severity.medium": "Средний",
|
||||
"common.severity.low": "Низкий",
|
||||
"common.severity.info": "Информация",
|
||||
"common.severity.none": "Нет",
|
||||
"common.time.seconds_ago": "{0} секунды назад",
|
||||
"common.time.minutes_ago": "{0} минут назад",
|
||||
"common.time.hours_ago": "{0} часов назад",
|
||||
"common.time.days_ago": "{0} дней назад",
|
||||
"common.time.just_now": "Прямо сейчас",
|
||||
"common.ui.loading": "Загрузка...",
|
||||
"common.ui.saving": "Сохранение...",
|
||||
"common.ui.deleting": "Удаление...",
|
||||
"common.ui.submitting": "Отправка...",
|
||||
"common.ui.no_results": "Результаты не найдены.",
|
||||
"common.ui.offline": "Вы не в сети.",
|
||||
"common.ui.reconnecting": "Повторное подключение...",
|
||||
"common.ui.back_online": "Снова в сети.",
|
||||
"auth.dpop.proof_lifetime_invalid": "Срок действия доказательства DPoP должен быть больше нуля.",
|
||||
"auth.dpop.clock_skew_invalid": "Допустимый сдвиг часов DPoP должен составлять от 0 секунд до 5 минут.",
|
||||
"auth.dpop.replay_window_invalid": "Окно воспроизведения DPoP должно быть больше или равно нулю.",
|
||||
"auth.dpop.algorithm_required": "Должен быть настроен хотя бы один разрешенный алгоритм DPoP.",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "Разрешенные алгоритмы DPoP не могут быть пустыми после нормализации.",
|
||||
"auth.dpop.options_required": "Должны быть предоставлены параметры DPoP.",
|
||||
"auth.dpop.nonce_ttl_invalid": "Nonce TTL должен быть больше нуля.",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "Максимальная выдача в минуту должна быть не менее 1.",
|
||||
"auth.dpop.nonce_store_required": "Необходимо указать Dpop.Nonce.Store.",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store должен быть либо 'memory', либо 'redis'.",
|
||||
"auth.dpop.nonce_redis_required": "Dpop.Nonce.RedisConnectionString необходимо указать при использовании хранилища 'redis'.",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences должен включать хотя бы одну аудиторию.",
|
||||
"auth.dpop.token_three_segments": "Токен должен содержать три сегмента.",
|
||||
"auth.dpop.segment_out_of_range": "Индекс сегмента вне диапазона.",
|
||||
"auth.dpop.header_decode_failed": "Невозможно декодировать заголовок.",
|
||||
"auth.dpop.header_missing_typ": "В доказательстве DPoP отсутствует заголовок typ=dpop+jwt.",
|
||||
"auth.dpop.header_missing_alg": "В доказательстве DPoP отсутствует заголовок alg.",
|
||||
"auth.dpop.header_unsupported_alg": "Неподдерживаемый алгоритм DPoP.",
|
||||
"auth.dpop.header_missing_jwk": "В доказательстве DPoP отсутствует заголовок jwk.",
|
||||
"auth.dpop.header_invalid_jwk": "Недопустимый заголовок jwk для проверки DPoP.",
|
||||
"auth.dpop.payload_decode_failed": "Невозможно декодировать полезную нагрузку.",
|
||||
"auth.dpop.payload_missing_htm": "Доказательство DPoP отсутствует в претензии HTM.",
|
||||
"auth.dpop.payload_htm_mismatch": "DPoP htm не соответствует методу запроса.",
|
||||
"auth.dpop.payload_missing_htu": "Доказательство DPoP об отсутствии претензии HTU.",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu не соответствует URI запроса.",
|
||||
"auth.dpop.payload_missing_iat": "Доказательство DPoP отсутствует в претензии.",
|
||||
"auth.dpop.payload_missing_jti": "DPoP доказывает отсутствие претензии jti.",
|
||||
"auth.dpop.payload_iat_invalid": "Подтверждение DPoP. Заявка не является действительным номером.",
|
||||
"auth.dpop.nonce_missing": "DPoP-доказательство отсутствия заявления nonce.",
|
||||
"auth.dpop.nonce_mismatch": "Несоответствие nonce DPoP.",
|
||||
"auth.dpop.proof_future": "Доказательство DPoP будет выдано в будущем.",
|
||||
"auth.dpop.proof_expired": "Срок действия доказательства DPoP истек.",
|
||||
"auth.dpop.signature_failed": "Проверка подписи DPoP не удалась.",
|
||||
"auth.dpop.replay_detected": "Доказательство DPoP уже использовано.",
|
||||
"config.authority.schema_version_required": "Для конфигурации центра требуется положительная версия схемы.",
|
||||
"config.authority.issuer_required": "Для настройки центра требуется URL-адрес эмитента.",
|
||||
"config.authority.issuer_absolute": "Эмитент полномочий должен быть абсолютным URI.",
|
||||
"config.authority.issuer_https": "Эмитент полномочий должен использовать HTTPS, если только он не работает на интерфейсе обратной связи.",
|
||||
"config.authority.duplicate_tenant": "Конфигурация authority содержит повторяющийся идентификатор тенанта '{0}'.",
|
||||
"config.authority.property_greater_than_zero": "Для конфигурации полномочий требуется, чтобы значение {0} было больше нуля.",
|
||||
"config.authority.property_max": "Для конфигурации полномочий требуется, чтобы {0} был меньше или равен {1}.",
|
||||
"config.authority.remote_inference_required": "Для конфигурации органа управления требуется как минимум один консультативный профиль удаленного вывода AI, если удаленный вывод включен.",
|
||||
"config.tenant.id_required": "Каждому тенанту требуется идентификатор (slug).",
|
||||
"config.tenant.id_format": "Идентификатор тенанта '{0}' должен содержать только строчные буквы, цифры и дефис.",
|
||||
"config.tenant.project_format": "Тенант '{0}' определяет проект '{1}', который должен содержать только строчные буквы, цифры и дефис.",
|
||||
"config.tenant.role_missing_config": "Тенант '{0}' определяет роль '{1}' без конфигурации.",
|
||||
"config.tenant.role_scope_required": "Роль '{1}' тенанта '{0}' должна указывать как минимум одну область.",
|
||||
"config.tenant.role_unknown_scope": "Роль '{1}' тенанта '{0}' ссылается на неизвестную область '{2}'.",
|
||||
"config.tenant.role_unsupported_attribute": "Роль '{1}' тенанта '{0}' определяет неподдерживаемый атрибут '{2}'. Допустимые атрибуты: env, owner, business_tier.",
|
||||
"config.tenant.delegation_max_tokens": "Для тенанта '{0}' значение delegation.maxActiveTokens должно быть больше нуля, если оно задано.",
|
||||
"config.tenant.remote_inference_disabled": "Согласие на удаленный вывод для тенанта не может быть предоставлено, если удаленный вывод отключен.",
|
||||
"config.tenant.remote_inference_consent_version_length": "Поле consentVersion удаленного вывода для тенанта должно содержать не более {0} символов.",
|
||||
"config.tenant.remote_inference_consented_by_length": "Поле consentedBy удаленного вывода для тенанта должно содержать не более {0} символов.",
|
||||
"config.tenant.remote_inference_consent_version_required": "Согласие на удаленный вывод для тенанта требует consentVersion, если consentGranted=true.",
|
||||
"config.tenant.remote_inference_consented_at_required": "Согласие на удаленный вывод для тенанта требует consentedAt, если consentGranted=true.",
|
||||
"config.service_account.id_required": "Для начальных значений учетной записи службы делегирования требуется идентификатор accountId.",
|
||||
"config.service_account.id_format": "Идентификатор сервисного аккаунта '{0}' должен содержать строчные буквы, цифры, двоеточие, подчеркивание или дефис.",
|
||||
"config.service_account.tenant_required": "Служебная учетная запись '{0}' требует назначения тенанта.",
|
||||
"config.service_account.tenant_unknown": "Служебная учетная запись '{0}' ссылается на неизвестного тенанта '{1}'.",
|
||||
"config.service_account.scope_required": "Учетная запись службы '{0}' должна указать хотя бы одну разрешенную область.",
|
||||
"config.service_account.unsupported_attribute": "Учетная запись службы '{0}' определяет неподдерживаемый атрибут '{1}'. Разрешенные атрибуты: env, Owner, business_tier.",
|
||||
"config.plugin.assembly_required": "Плагин центра сертификации '{0}' должен определить либо имя сборки, либо путь сборки.",
|
||||
"config.plugin.config_file_required": "Плагин полномочий '{0}' должен определить файл конфигурации.",
|
||||
"config.plugin.config_file_missing": "Плагин полномочий '{0}' указывает файл конфигурации '{1}', который не существует.",
|
||||
"config.plugin.unknown_capability": "Плагин полномочий '{0}' объявляет неизвестную возможность '{1}'. Допустимые значения: пароль, mfa, clientProvisioning, bootstrap.",
|
||||
"config.plugin.descriptor_null": "Дескриптор плагина полномочий '{0}' имеет значение null.",
|
||||
"config.delegation.duplicate_account": "Конфигурация делегирования содержит повторяющийся идентификатор сервисного аккаунта '{0}'.",
|
||||
"config.delegation.quota_max_tokens": "Для конфигурации делегирования полномочий требуется, чтобы значение {0}.MaxActiveTokens было больше нуля.",
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace не должен быть отрицательным.",
|
||||
"config.mtls.audiences_required": "Если включен Mtls.EnforceForAudiences, он должен включать хотя бы одну аудиторию.",
|
||||
"config.mtls.ca_empty": "Записи Mtls.AllowedCertificateAuthorities не должны быть пустыми.",
|
||||
"config.mtls.san_types_required": "Mtls.AllowedSanTypes должен включать хотя бы одну запись, если он включен.",
|
||||
"config.mtls.subject_patterns_empty": "Записи Mtls.AllowedSubjectPatterns не должны быть пустыми.",
|
||||
"config.mtls.subject_pattern_invalid": "Запись Mtls.AllowedSubjectPatterns '{0}' не является допустимым регулярным выражением.",
|
||||
"config.signing.key_id_required": "Для конфигурации подписи центра требуется signing.activeKeyId.",
|
||||
"config.signing.key_path_required": "Для конфигурации подписи центра требуется signing.keyPath.",
|
||||
"config.signing.jwks_cache_range": "Конфигурация подписи центра требует, чтобы signing.jwksCacheLifetime находился в диапазоне от 00:00:01 до 01:00:00.",
|
||||
"config.signing.additional_key_id_required": "Для дополнительных ключей подписи требуется keyId.",
|
||||
"config.signing.additional_key_path_required": "Для подписания ключа '{0}' требуется путь.",
|
||||
"config.bootstrap.api_key_required": "Для конфигурации начальной загрузки центра требуется ключ API, если он включен.",
|
||||
"config.bootstrap.idp_required": "Для конфигурации начальной загрузки центра требуется имя поставщика удостоверений по умолчанию, если оно включено.",
|
||||
"config.rate_limit.permit_limit": "Ограничение скорости полномочий '{0}' требует, чтобы значение PermitLimit было больше нуля.",
|
||||
"config.rate_limit.queue_limit": "Ограничение скорости полномочий '{0}'queueLimit не может быть отрицательным.",
|
||||
"config.rate_limit.window": "Окно ограничения скорости полномочий '{0}' должно быть больше нуля и не превышать одного часа.",
|
||||
"config.storage.connection_required": "Для хранения полномочий требуется строка подключения.",
|
||||
"config.storage.timeout_invalid": "Тайм-аут команды хранения полномочий должен быть больше нуля.",
|
||||
"config.ack_token.payload_type_required": "notifications.ackTokens.payloadType должен быть указан, если включены токены подтверждения.",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime должно быть больше нуля.",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime должен быть больше нуля и больше или равен значению defaultLifetime.",
|
||||
"config.ack_token.key_id_required": "notifications.ackTokens.activeKeyId должен быть указан, если включены токены подтверждения.",
|
||||
"config.ack_token.key_path_required": "notifications.ackTokens.keyPath должен быть указан, если включены токены подтверждения.",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime должно находиться в диапазоне от 00:00:01 до 01:00:00.",
|
||||
"config.exceptions.null_template": "Записи шаблона маршрутизации исключений центра не должны иметь значение NULL.",
|
||||
"config.exceptions.duplicate_template": "Шаблон маршрутизации исключений центра '{0}' настроен более одного раза.",
|
||||
"config.exceptions.template_id_required": "Для шаблонов маршрутизации исключений центра требуется идентификатор.",
|
||||
"config.exceptions.template_route_required": "Для шаблона маршрутизации исключений центра '{0}' требуется AuthorityRouteId.",
|
||||
"config.sealed_mode.evidence_path_required": "AirGap.SealedMode.EvidencePath должен быть указан, если принудительное применение включено.",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge должно находиться в диапазоне от 00:00:01 до 7.00:00:00.",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime должен быть больше нуля и меньше или равен AirGap.SealedMode.MaxEvidenceAge.",
|
||||
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts должен включать хотя бы один хост, когда он включен.",
|
||||
"config.escalation.scope_required": "Необходимо указать notifications.escalation.scope.",
|
||||
"config.anti_forgery.audience_required": "vulnerabilityExplorer.workflow.antiForgery.audience должен быть указан, если включены токены защиты от подделки.",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime должно быть больше нуля.",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime должен быть больше нуля и больше или равен значению defaultLifetime.",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries не должен быть отрицательным.",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength должно быть больше нуля.",
|
||||
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime должно быть больше нуля, если включены токены вложений.",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime должен быть больше нуля и больше или равен значению defaultLifetime.",
|
||||
"config.attachment.payload_type_required": "vulnerabilityExplorer.attachments.payloadType должен быть указан, если включены токены вложений.",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries не должен быть отрицательным.",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength должно быть больше нуля.",
|
||||
"config.api_lifecycle.sunset_after_deprecation": "Дата прекращения устаревшей аутентификации должна наступать после даты прекращения поддержки.",
|
||||
"config.api_lifecycle.docs_url_format": "URL-адрес устаревшей документации по аутентификации должен быть абсолютным URL-адресом HTTP или HTTPS.",
|
||||
"crypto.provider.algorithm_not_supported": "Алгоритм подписи '{0}' не поддерживается провайдером '{1}'.",
|
||||
"crypto.provider.hash_not_supported": "Алгоритм хеширования '{0}' не поддерживается провайдером '{1}'.",
|
||||
"crypto.provider.verify_not_supported": "Алгоритм проверки '{0}' не поддерживается провайдером '{1}'.",
|
||||
"crypto.provider.key_not_registered": "Ключ подписи '{0}' не зарегистрирован у провайдера '{1}'.",
|
||||
"crypto.provider.key_algorithm_mismatch": "Ключ подписи '{0}' зарегистрирован для алгоритма '{1}', а не '{2}'.",
|
||||
"crypto.provider.ec_keys_only": "Поставщик '{0}' принимает только ключи подписи EC.",
|
||||
"crypto.provider.no_password_hashing": "Поставщик '{0}' не предоставляет возможности хеширования паролей.",
|
||||
"crypto.provider.no_content_hashing": "Провайдер '{0}' не поддерживает хеширование контента.",
|
||||
"crypto.provider.no_ephemeral_verification": "Провайдер '{0}' не поддерживает эфемерную проверку.",
|
||||
"crypto.provider.not_signing_capable": "Алгоритм подписи '{0}' не поддерживается провайдером '{1}'.",
|
||||
"crypto.provider.es256_only": "Поставщик '{0}' в настоящее время поддерживает только ключи подписи ES256.",
|
||||
"crypto.provider.p256_required": "Ключи подписи ES256 должны использовать кривую NIST P-256.",
|
||||
"crypto.provider.curve_mismatch": "Несоответствие кривой ключа подписи. Ожидаемая кривая '{0}' для алгоритма '{1}'.",
|
||||
"crypto.registry.empty": "Должен быть зарегистрирован хотя бы один криптопровайдер.",
|
||||
"crypto.registry.algorithm_required": "Требуется идентификатор алгоритма.",
|
||||
"crypto.registry.signing_not_supported": "Алгоритм подписи '{0}' не поддерживается ни одним зарегистрированным поставщиком.",
|
||||
"crypto.registry.hash_not_supported": "Алгоритм хеширования '{0}' не поддерживается ни одним зарегистрированным поставщиком.",
|
||||
"crypto.registry.verify_not_supported": "Алгоритм проверки '{0}' не поддерживается ни одним зарегистрированным провайдером.",
|
||||
"crypto.registry.active_profile_required": "Активный профиль обязателен.",
|
||||
"crypto.registry.profile_not_found": "Идентификатор профиля '{0}' не найден в реестре.",
|
||||
"crypto.registry.profile_id_required": "Идентификатор профиля не может быть нулевым или пустым.",
|
||||
"crypto.key.algorithm_required": "Требуется идентификатор алгоритма.",
|
||||
"crypto.key.private_scalar_required": "Параметры закрытого ключа должны включать скалярный компонент.",
|
||||
"crypto.key.verification_only": "Этот конструктор предназначен только для ключей, предназначенных только для проверки. Установите для параметра VerificationOnly значение true.",
|
||||
"crypto.key.public_xy_required": "Параметры открытого ключа должны включать координаты X и Y.",
|
||||
"crypto.key.private_material_required": "Должен быть предоставлен материал закрытого ключа.",
|
||||
"crypto.hash.algorithm_unsupported": "Неподдерживаемый алгоритм хеширования '{0}'.",
|
||||
"crypto.hash.purpose_required": "Цель не может быть нулевой или пустой.",
|
||||
"crypto.hmac.algorithm_unknown": "Неизвестный алгоритм HMAC '{0}'.",
|
||||
"crypto.hmac.algorithm_unsupported": "Неподдерживаемый алгоритм HMAC '{0}'.",
|
||||
"crypto.ecdsa.algorithm_unsupported": "Неподдерживаемый алгоритм подписи ECDSA '{0}'.",
|
||||
"crypto.ecdsa.curve_unsupported": "Неподдерживаемое отображение кривой ECDSA для алгоритма '{0}'.",
|
||||
"crypto.digest.required": "Дайджест обязателен.",
|
||||
"crypto.digest.prefix_required": "{0} должен начинаться с '{1}'.",
|
||||
"crypto.digest.algorithm_unsupported": "Неподдерживаемый алгоритм дайджеста в '{0}'. Поддерживается только sha256.",
|
||||
"crypto.digest.hex_length": "{0} должен содержать шестнадцатеричные символы {1}.",
|
||||
"crypto.password.memory_cost_invalid": "Стоимость памяти для хеширования паролей должна быть больше нуля.",
|
||||
"crypto.password.iterations_invalid": "Число итераций хеширования пароля должно быть больше нуля.",
|
||||
"crypto.password.parallelism_invalid": "Параллелизм хеширования паролей должен быть больше нуля.",
|
||||
"crypto.password.algorithm_mismatch": "{0} поддерживает только алгоритм {1}.",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 требует положительного количества итераций.",
|
||||
"crypto.gost.not_der": "Подпись не закодирована в формате DER.",
|
||||
"crypto.gost.invalid_der": "Неверная структура DER для подписи ГОСТ.",
|
||||
"crypto.gost.raw_length": "Необработанная подпись ГОСТ должна иметь размер {0} байт.",
|
||||
"crypto.gost.neither_format": "Полезная нагрузка подписи не является ни форматом DER, ни необработанным форматом ГОСТ.",
|
||||
"crypto.gost.coordinate_overflow": "Координата превышает ожидаемую длину.",
|
||||
"crypto.profile.unknown_purpose": "Неизвестное назначение хэша '{0}' в профиле '{1}'.",
|
||||
"crypto.compliance.at_least_one_signing": "Должен быть указан хотя бы один алгоритм подписи.",
|
||||
"crypto.compliance.at_least_one_hash": "Должен быть указан хотя бы один алгоритм хеширования.",
|
||||
"crypto.ed25519.private_key_size": "Закрытый ключ Ed25519 должен иметь длину 32 или 64 байта.",
|
||||
"crypto.ed25519.public_key_size": "Открытый ключ Ed25519 должен иметь длину 32 байта.",
|
||||
"crypto.ed25519.no_hashing": "Поставщик BouncyCastle Ed25519 не предоставляет возможности хеширования.",
|
||||
"crypto.ed25519.raw_key_required": "Поставщику '{0}' требуется необработанный материал закрытого ключа Ed25519.",
|
||||
"crypto.sm.no_password_hashing": "Поставщик SM не предоставляет хеширование паролей.",
|
||||
"crypto.sm.raw_key_required": "Поставщик SM2 требует необработанных байтов закрытого ключа (PKCS#8 DER).",
|
||||
"crypto.sm.unsupported_format": "Неподдерживаемый формат ключа SM2. Ожидайте PEM или PKCS#8 DER.",
|
||||
"crypto.sm.disabled": "Провайдер '{0}' отключен. Установите {1}=1 (или отключите RequireEnvironmentGate), чтобы включить программное обеспечение SM2/SM3.",
|
||||
"crypto.di.registry_empty": "Реестр криптопровайдеров не может быть пустым. Настройте хотя бы одного поставщика для развертываний RU.",
|
||||
"crypto.di.ru_openssl_required": "Для базовой версии Linux RU требуется поставщик 'ru.openssl.gost' (задайте STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 для явного переопределения).",
|
||||
"crypto.di.ru_provider_required": "Базовая версия RU Linux настроена неправильно: ru.openssl.gost и ru.pkcs11 отключены через среду. Включите хотя бы одного провайдера.",
|
||||
"crypto.di.no_plugins_loaded": "Ни один поставщик криптовалюты не был загружен. Проверьте конфигурацию и манифест плагина.",
|
||||
"crypto.kms.rotation_via_policy": "Ротация {0} должна управляться с помощью политик или расписаний {1}.",
|
||||
"crypto.kms.revocation_via_policy": "Отзывом {0} необходимо управлять через API-интерфейсы {1} или консоль.",
|
||||
"crypto.kms.public_key_missing_x": "В открытом ключе отсутствует координата X.",
|
||||
"crypto.kms.public_key_missing_y": "В открытом ключе отсутствует координата Y.",
|
||||
"crypto.kms.hash_failed": "Не удалось хешировать полезные данные с помощью SHA-256.",
|
||||
"crypto.kms.key_not_found": "Ключ '{0}' не существует.",
|
||||
"crypto.kms.key_revoked": "Ключ '{0}' отозван и не подлежит ротации.",
|
||||
"crypto.kms.key_revoked_signing": "Ключ '{0}' отозван и не может использоваться для подписи.",
|
||||
"crypto.kms.key_version_not_found": "Версия ключа '{0}' не существует для ключа '{1}'.",
|
||||
"crypto.kms.key_no_active_version": "Ключ '{0}' не имеет активной версии.",
|
||||
"crypto.kms.key_version_inactive": "Ключевая версия '{0}' не активна. Текущее состояние: {1}",
|
||||
"crypto.kms.key_no_public_material": "Ключ '{0}' версии '{1}' не содержит материала открытого ключа.",
|
||||
"crypto.kms.algorithm_unsupported": "Алгоритм '{0}' не поддерживается файловым драйвером KMS.",
|
||||
"crypto.kms.curve_unsupported": "Кривая '{0}' не поддерживается.",
|
||||
"crypto.kms.metadata_failed": "Не удалось создать или загрузить ключевые метаданные.",
|
||||
"crypto.kms.algorithm_mismatch": "Несоответствие алгоритма. Ожидал '{0}', получил '{1}'.",
|
||||
"crypto.kms.version_exists": "Версия ключа '{0}' уже существует для ключа '{1}'.",
|
||||
"crypto.kms.material_not_found": "Ключевой материал для версии '{0}' не найден.",
|
||||
"crypto.kms.envelope_deserialize_failed": "Конверт ключа не удалось десериализовать.",
|
||||
"crypto.kms.payload_deserialize_failed": "Полезную нагрузку ключа не удалось десериализовать.",
|
||||
"crypto.kms.pem_empty": "Открытый ключ PEM не может быть пустым.",
|
||||
"crypto.kms.no_primary_version": "Криптоключ '{0}' не имеет активной основной версии.",
|
||||
"crypto.kms.es256_only": "Поставщик '{0}' поддерживает только ключи подписи ES256.",
|
||||
"crypto.kms.version_metadata_required": "Ключи подписи KMS должны включать запись метаданных 'kms.version'.",
|
||||
"crypto.kms.missing_public_key": "В ключе подписи KMS отсутствует материал открытого ключа.",
|
||||
"crypto.fido2.curve_unsupported": "Неподдерживаемый OID кривой FIDO2 '{0}'.",
|
||||
"crypto.fido2.rotation_required": "Для ротации учетных данных FIDO2 требуется новая регистрация.",
|
||||
"crypto.fido2.revocation_relying_party": "Отзыв учетных данных FIDO2 должен управляться на проверяющей стороне.",
|
||||
"crypto.fido2.missing_x": "В открытом ключе FIDO2 отсутствует координата X.",
|
||||
"crypto.fido2.missing_y": "В открытом ключе FIDO2 отсутствует координата Y.",
|
||||
"crypto.fido2.authenticator_required": "Для использования FIDO2 KMS необходимо зарегистрировать IFido2Authenticator.",
|
||||
"crypto.pkcs11.rotation_hsm": "Для ротации PKCS#11 требуются административные инструменты HSM.",
|
||||
"crypto.pkcs11.revocation_hsm": "Отзыв PKCS#11 должен обрабатываться политиками HSM.",
|
||||
"crypto.pkcs11.slot_not_found": "Не удалось разрешить слот PKCS#11.",
|
||||
"crypto.pkcs11.private_key_not_found": "Закрытый ключ PKCS#11 не найден.",
|
||||
"crypto.pkcs11.public_key_not_found": "Открытый ключ PKCS#11 не найден.",
|
||||
"crypto.pkcs11.missing_ec_point": "В открытом ключе отсутствует точка EC.",
|
||||
"crypto.pkcs11.missing_ec_params": "В открытом ключе отсутствуют параметры EC.",
|
||||
"crypto.pkcs11.unsupported_point_format": "Неподдерживаемый формат точек EC.",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "Неподдерживаемый идентификатор OID кривой EC '{0}'.",
|
||||
"crypto.pkcs11.curve_unsupported": "Неподдерживаемая кривая EC '{0}'.",
|
||||
"common.provcache.sbom_hash_required": "Хэш SBOM не может быть нулевым или пустым.",
|
||||
"common.provcache.fetch_url_absolute": "Базовый URL-адрес отложенной выборки должен быть абсолютным.",
|
||||
"common.provcache.fetch_url_no_userinfo": "Базовый URL-адрес отложенной выборки не должен содержать информацию о пользователе.",
|
||||
"common.provcache.fetch_url_host_required": "Базовый URL-адрес отложенной выборки должен включать хост.",
|
||||
"common.provcache.fetch_url_scheme_invalid": "Схема базового URL-адреса отложенной выборки '{0}' не допускается.",
|
||||
"common.provcache.fetch_url_host_invalid": "Хост '{0}' базового URL-адреса отложенного получения не внесен в белый список.",
|
||||
"common.provcache.no_chunks_provided": "Никаких кусков не предусмотрено.",
|
||||
"common.provcache.bundle_deserialize_failed": "Не удалось десериализовать пакет.",
|
||||
"common.provcache.signer_not_configured": "Подписывающая сторона не настроена.",
|
||||
"common.provcache.signing_requested_no_signer": "Запрошена подпись, но подписывающая сторона не настроена.",
|
||||
"common.provcache.cache_entry_not_found": "Запись в кеше для VeriKey не найдена: {0}",
|
||||
"common.provcache.chunk_manifest_not_found": "Манифест чанка не найден для корневого доказательства: {0}",
|
||||
"common.provcache.http_timeout_invalid": "Тайм-аут отложенной выборки HTTP должен иметь положительную, не бесконечную продолжительность.",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher требует BaseAddress в HTTP-клиенте.",
|
||||
"common.provcache.merkle_root_mismatch": "Несовпадение корней Меркла. Ожидается: {0}, вычисляется: {1}",
|
||||
"common.provcache.chunk_verification_failed": "Проверка чанка {0} не удалась. Ожидаемый хеш: {1}.",
|
||||
"common.provcache.artifact_reference_required": "Требуется ссылка на артефакт.",
|
||||
"common.provcache.artifact_digest_required": "Требуется дайджест артефактов.",
|
||||
"common.provcache.decision_digest_required": "Требуется DecisionDigest.",
|
||||
"common.provcache.decision_digest_verikey_required": "Требуется DecisionDigest.VeriKey.",
|
||||
"common.provcache.digest_empty": "Дайджест не может быть пустым.",
|
||||
"common.provcache.time_window_required": "Временное окно не может быть нулевым или пустым.",
|
||||
"common.provcache.vex_hash_required": "Хэш набора хэшей VEX не может быть нулевым или пустым.",
|
||||
"common.provcache.policy_hash_required": "Хэш политики не может быть нулевым или пустым.",
|
||||
"common.provcache.source_hash_required": "Хэш источника не может быть нулевым или пустым.",
|
||||
"common.provcache.signer_set_hash_required": "Хэш набора подписывающей стороны не может быть нулевым или пустым.",
|
||||
"common.evidence.toolchain_required": "ToolChain должен быть установлен перед построением индекса.",
|
||||
"common.evidence.deserialization_failed": "Не удалось десериализовать индекс доказательств.",
|
||||
"common.evidence.verdict_deserialization_failed": "Не удалось десериализовать вердикт.",
|
||||
"common.evidence.inputs_json_required": "JSON не может быть нулевым или пустым.",
|
||||
"common.evidence.inputs_deserialization_failed": "Не удалось десериализовать закрепленные входные данные оценки.",
|
||||
"common.evidence.bundle_alert_id_required": "Требуется AlertId.",
|
||||
"common.evidence.bundle_artifact_id_required": "Требуется идентификатор артефакта.",
|
||||
"common.evidence.pdf_export_requires_config": "Экспорт PDF требует дополнительной настройки",
|
||||
"common.evidence.invalid_uri_format": "Неверный формат URI доказательства: {0}. Ожидаемая стелла://тип/путь",
|
||||
"common.evidence.invalid_uri_missing_path": "Неверный формат URI доказательства: {0}. Отсутствующий путь.",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver не может разрешить тип доказательства: {0}",
|
||||
"common.evidence.schema_resource_not_found": "Ресурс схемы не найден: {0}",
|
||||
"common.evidence.schema_resource_not_available": "Ресурс схемы недоступен: {0}.",
|
||||
"common.evidence.provenance_deserialize_failed": "Не удалось десериализовать происхождение для доказательства {0}.",
|
||||
"common.evidence.bundle_deserialize_failed": "Не удалось десериализовать пакет вердиктов.",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "Не удалось десериализовать дельта-вердикт.",
|
||||
"common.canonicalization.value_empty_after_trim": "Значение не должно быть пустым после обрезки.",
|
||||
"common.canonicalization.deserialize_failed": "Не удалось десериализовать {0}.",
|
||||
"common.canonicalization.datetime_value_null": "Значение DateTimeOffset имеет значение null.",
|
||||
"common.canonicalization.dict_key_null": "Ключ словаря не может быть нулевым.",
|
||||
"common.audit.replay_token_value_empty": "Значение токена не может быть пустым.",
|
||||
"common.audit.replay_token_empty": "Токен не может быть пустым.",
|
||||
"common.audit.replay_token_format_invalid": "Неверный формат токена повтора: {0}.",
|
||||
"common.audit.replay_token_version_invalid": "Неверная версия токена повтора: {0}.",
|
||||
"common.audit.replay_token_expiration_invalid": "Неверная метка времени истечения срока действия токена воспроизведения: {0}.",
|
||||
"common.audit.replay_token_duplicate_context_key": "Дополнительныйконтекст содержит повторяющийся ключ после нормализации: '{0}'.",
|
||||
"common.artifact.uri_format_invalid": "Неверный формат URI: {0}.",
|
||||
"common.artifact.uri_scheme_not_supported": "Схема URI не поддерживается: {0}.",
|
||||
"common.artifact.file_not_accessible": "Файл недоступен: {0}",
|
||||
"common.artifact.file_too_large": "Файл слишком большой: размер {0} в байтах превышает ограничение в 100 МБ.",
|
||||
"common.artifact.uri_not_accessible": "URI недоступен: {0} вернул {1}",
|
||||
"common.artifact.content_too_large": "Содержимое слишком велико: размер {0} в байтах превышает ограничение в 100 МБ.",
|
||||
"common.artifact.fetch_failed": "Не удалось получить данные из {0}: {1}.",
|
||||
"common.delta_verdict.artifact_ref_required": "Требуется ссылка на артефакт.",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "Неподдерживаемый алгоритм подписи: {0}.",
|
||||
"common.delta_verdict.hmac_secret_required": "Для подписания HMAC требуется секрет Base64.",
|
||||
"common.eventing.no_entry_assembly": "Входная сборка не найдена",
|
||||
"auth.persistence.deserialize_inputs_failed": "Не удалось десериализовать входные данные.",
|
||||
"auth.persistence.deserialize_result_failed": "Не удалось десериализовать результат",
|
||||
"auth.persistence.revocation_sequence_mismatch": "Несоответствие последовательности экспорта отзыва. Ожидаемый {0}, текущий {1}.",
|
||||
"auth.persistence.revocation_update_rejected": "Обновление состояния экспорта отзыва отклонено. Ожидаемая последовательность {0}."
|
||||
}
|
||||
|
||||
@@ -1,411 +1,367 @@
|
||||
{
|
||||
"_meta": { "locale": "uk-UA", "namespace": "common", "version": "1.1" },
|
||||
|
||||
"common.error.generic": "Something went wrong.",
|
||||
"common.error.not_found": "The requested resource was not found.",
|
||||
"common.error.entity_not_found": "{0} '{1}' not found.",
|
||||
"common.error.unauthorized": "You do not have permission to perform this action.",
|
||||
"common.error.forbidden": "Access denied.",
|
||||
"common.error.bad_request": "The request is invalid.",
|
||||
"common.error.conflict": "A conflict occurred. The resource may have been modified.",
|
||||
"common.error.timeout": "Request timed out after {0} seconds.",
|
||||
"common.error.server_error": "An internal server error occurred. Please try again later.",
|
||||
"common.error.service_unavailable": "The service is temporarily unavailable.",
|
||||
"common.error.too_many_requests": "Too many requests. Please wait and try again.",
|
||||
"common.error.network": "Network error. Check your connection.",
|
||||
"common.error.body_required": "Request body is required.",
|
||||
"common.error.deserialization_failed": "Failed to deserialize {0}.",
|
||||
"common.error.not_supported": "{0} is not supported.",
|
||||
"common.error.already_exists": "{0} '{1}' already exists.",
|
||||
"common.error.revoked": "{0} '{1}' has been revoked and cannot be used.",
|
||||
"common.error.state_invalid": "{0} '{1}' is not in the expected state. Current state: {2}",
|
||||
|
||||
"common.validation.required": "{0} is required.",
|
||||
"common.validation.invalid": "{0} is invalid.",
|
||||
"common.validation.too_long": "{0} exceeds the maximum length of {1} characters.",
|
||||
"common.validation.too_short": "{0} must be at least {1} characters.",
|
||||
"common.validation.out_of_range": "{0} must be between {1} and {2}.",
|
||||
"common.validation.invalid_format": "{0} has an invalid format.",
|
||||
"common.validation.duplicate": "{0} already exists.",
|
||||
"common.validation.empty_not_allowed": "{0} must not be empty.",
|
||||
"common.validation.empty_after_trim": "{0} must not be empty after trimming.",
|
||||
"common.validation.greater_than_zero": "{0} must be greater than zero.",
|
||||
"common.validation.non_negative": "{0} must be non-negative.",
|
||||
"common.validation.at_least_one": "At least one {0} must be configured.",
|
||||
"common.validation.at_least_n": "{0} must have at least {1} entries.",
|
||||
"common.validation.null_or_empty": "{0} cannot be null or empty.",
|
||||
"common.validation.absolute_uri": "{0} must be an absolute URI.",
|
||||
"common.validation.invalid_regex": "{0} '{1}' is not a valid regular expression.",
|
||||
"common.validation.unknown_value": "{0} '{1}' is not recognized. Allowed values: {2}",
|
||||
"common.validation.max_exceeded": "{0} must be {1} characters or fewer.",
|
||||
|
||||
"common.actions.save": "Save",
|
||||
"common.actions.cancel": "Cancel",
|
||||
"common.actions.delete": "Delete",
|
||||
"common.actions.confirm": "Confirm",
|
||||
"common.actions.submit": "Submit",
|
||||
"common.actions.close": "Close",
|
||||
"common.actions.retry": "Retry",
|
||||
"common.actions.expand": "Expand",
|
||||
"common.actions.collapse": "Collapse",
|
||||
"common.actions.show_more": "Show more",
|
||||
"common.actions.show_less": "Show less",
|
||||
|
||||
"common.status.healthy": "Healthy",
|
||||
"common.status.degraded": "Degraded",
|
||||
"common.status.unavailable": "Unavailable",
|
||||
"common.status.unknown": "Unknown",
|
||||
"common.status.active": "Active",
|
||||
"common.status.inactive": "Inactive",
|
||||
"common.status.pending": "Pending",
|
||||
"common.status.running": "Running",
|
||||
"common.status.completed": "Completed",
|
||||
"common.status.failed": "Failed",
|
||||
"common.status.canceled": "Canceled",
|
||||
"common.status.blocked": "Blocked",
|
||||
|
||||
"common.severity.critical": "Critical",
|
||||
"common.severity.high": "High",
|
||||
"common.severity.medium": "Medium",
|
||||
"common.severity.low": "Low",
|
||||
"common.severity.info": "Info",
|
||||
"common.severity.none": "None",
|
||||
|
||||
"common.time.seconds_ago": "{0} seconds ago",
|
||||
"common.time.minutes_ago": "{0} minutes ago",
|
||||
"common.time.hours_ago": "{0} hours ago",
|
||||
"common.time.days_ago": "{0} days ago",
|
||||
"common.time.just_now": "Just now",
|
||||
|
||||
"common.ui.loading": "Loading...",
|
||||
"common.ui.saving": "Saving...",
|
||||
"common.ui.deleting": "Deleting...",
|
||||
"common.ui.submitting": "Submitting...",
|
||||
"common.ui.no_results": "No results found.",
|
||||
"common.ui.offline": "You are offline.",
|
||||
"common.ui.reconnecting": "Reconnecting...",
|
||||
"common.ui.back_online": "Back online.",
|
||||
|
||||
"auth.dpop.proof_lifetime_invalid": "DPoP proof lifetime must be greater than zero.",
|
||||
"auth.dpop.clock_skew_invalid": "DPoP allowed clock skew must be between 0 seconds and 5 minutes.",
|
||||
"auth.dpop.replay_window_invalid": "DPoP replay window must be greater than or equal to zero.",
|
||||
"auth.dpop.algorithm_required": "At least one allowed DPoP algorithm must be configured.",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "Allowed DPoP algorithms cannot be empty after normalization.",
|
||||
"auth.dpop.options_required": "DPoP options must be provided.",
|
||||
"auth.dpop.nonce_ttl_invalid": "Nonce TTL must be greater than zero.",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "Max issuance per minute must be at least 1.",
|
||||
"auth.dpop.nonce_store_required": "Dpop.Nonce.Store must be specified.",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store must be either 'memory' or 'redis'.",
|
||||
"auth.dpop.nonce_redis_required": "Dpop.Nonce.RedisConnectionString must be provided when using the 'redis' store.",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences must include at least one audience.",
|
||||
"auth.dpop.token_three_segments": "Token must contain three segments.",
|
||||
"auth.dpop.segment_out_of_range": "Segment index out of range.",
|
||||
"auth.dpop.header_decode_failed": "Unable to decode header.",
|
||||
"auth.dpop.header_missing_typ": "DPoP proof missing typ=dpop+jwt header.",
|
||||
"auth.dpop.header_missing_alg": "DPoP proof missing alg header.",
|
||||
"auth.dpop.header_unsupported_alg": "Unsupported DPoP algorithm.",
|
||||
"auth.dpop.header_missing_jwk": "DPoP proof missing jwk header.",
|
||||
"auth.dpop.header_invalid_jwk": "DPoP proof jwk header is invalid.",
|
||||
"auth.dpop.payload_decode_failed": "Unable to decode payload.",
|
||||
"auth.dpop.payload_missing_htm": "DPoP proof missing htm claim.",
|
||||
"auth.dpop.payload_htm_mismatch": "DPoP htm does not match request method.",
|
||||
"auth.dpop.payload_missing_htu": "DPoP proof missing htu claim.",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu does not match request URI.",
|
||||
"auth.dpop.payload_missing_iat": "DPoP proof missing iat claim.",
|
||||
"auth.dpop.payload_missing_jti": "DPoP proof missing jti claim.",
|
||||
"auth.dpop.payload_iat_invalid": "DPoP proof iat claim is not a valid number.",
|
||||
"auth.dpop.nonce_missing": "DPoP proof missing nonce claim.",
|
||||
"auth.dpop.nonce_mismatch": "DPoP nonce mismatch.",
|
||||
"auth.dpop.proof_future": "DPoP proof issued in the future.",
|
||||
"auth.dpop.proof_expired": "DPoP proof expired.",
|
||||
"auth.dpop.signature_failed": "DPoP proof signature validation failed.",
|
||||
"auth.dpop.replay_detected": "DPoP proof already used.",
|
||||
|
||||
"config.authority.schema_version_required": "Authority configuration requires a positive schemaVersion.",
|
||||
"config.authority.issuer_required": "Authority configuration requires an issuer URL.",
|
||||
"config.authority.issuer_absolute": "Authority issuer must be an absolute URI.",
|
||||
"config.authority.issuer_https": "Authority issuer must use HTTPS unless running on a loopback interface.",
|
||||
"config.authority.duplicate_tenant": "Authority configuration contains duplicate tenant identifier '{0}'.",
|
||||
"config.authority.property_greater_than_zero": "Authority configuration requires {0} to be greater than zero.",
|
||||
"config.authority.property_max": "Authority configuration requires {0} to be less than or equal to {1}.",
|
||||
"config.authority.remote_inference_required": "Authority configuration requires at least one advisory AI remote inference profile when remote inference is enabled.",
|
||||
|
||||
"config.tenant.id_required": "Each tenant requires an id (slug).",
|
||||
"config.tenant.id_format": "Tenant id '{0}' must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.project_format": "Tenant '{0}' defines project '{1}' which must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.role_missing_config": "Tenant '{0}' defines role '{1}' without configuration.",
|
||||
"config.tenant.role_scope_required": "Tenant '{0}' role '{1}' must specify at least one scope.",
|
||||
"config.tenant.role_unknown_scope": "Tenant '{0}' role '{1}' references unknown scope '{2}'.",
|
||||
"config.tenant.role_unsupported_attribute": "Tenant '{0}' role '{1}' defines unsupported attribute '{2}'. Allowed attributes: env, owner, business_tier.",
|
||||
"config.tenant.delegation_max_tokens": "Tenant '{0}' delegation maxActiveTokens must be greater than zero when specified.",
|
||||
"config.tenant.remote_inference_disabled": "Tenant remote inference consent cannot be granted when remote inference is disabled.",
|
||||
"config.tenant.remote_inference_consent_version_length": "Tenant remote inference consentVersion must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consented_by_length": "Tenant remote inference consentedBy must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consent_version_required": "Tenant remote inference consent requires consentVersion when consentGranted is true.",
|
||||
"config.tenant.remote_inference_consented_at_required": "Tenant remote inference consent requires consentedAt when consentGranted is true.",
|
||||
|
||||
"config.service_account.id_required": "Delegation service account seeds require an accountId.",
|
||||
"config.service_account.id_format": "Service account id '{0}' must contain lowercase letters, digits, colon, underscore, or hyphen.",
|
||||
"config.service_account.tenant_required": "Service account '{0}' requires a tenant assignment.",
|
||||
"config.service_account.tenant_unknown": "Service account '{0}' references unknown tenant '{1}'.",
|
||||
"config.service_account.scope_required": "Service account '{0}' must specify at least one allowed scope.",
|
||||
"config.service_account.unsupported_attribute": "Service account '{0}' defines unsupported attribute '{1}'. Allowed attributes: env, owner, business_tier.",
|
||||
|
||||
"config.plugin.assembly_required": "Authority plugin '{0}' must define either assemblyName or assemblyPath.",
|
||||
"config.plugin.config_file_required": "Authority plugin '{0}' must define a configFile.",
|
||||
"config.plugin.config_file_missing": "Authority plugin '{0}' specifies configFile '{1}' which does not exist.",
|
||||
"config.plugin.unknown_capability": "Authority plugin '{0}' declares unknown capability '{1}'. Allowed values: password, mfa, clientProvisioning, bootstrap.",
|
||||
"config.plugin.descriptor_null": "Authority plugin descriptor '{0}' is null.",
|
||||
|
||||
"config.delegation.duplicate_account": "Delegation configuration contains duplicate service account id '{0}'.",
|
||||
"config.delegation.quota_max_tokens": "Authority delegation configuration requires {0}.MaxActiveTokens to be greater than zero.",
|
||||
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace must be non-negative.",
|
||||
"config.mtls.audiences_required": "Mtls.EnforceForAudiences must include at least one audience when enabled.",
|
||||
"config.mtls.ca_empty": "Mtls.AllowedCertificateAuthorities entries must not be empty.",
|
||||
"config.mtls.san_types_required": "Mtls.AllowedSanTypes must include at least one entry when enabled.",
|
||||
"config.mtls.subject_patterns_empty": "Mtls.AllowedSubjectPatterns entries must not be empty.",
|
||||
"config.mtls.subject_pattern_invalid": "Mtls.AllowedSubjectPatterns entry '{0}' is not a valid regular expression.",
|
||||
|
||||
"config.signing.key_id_required": "Authority signing configuration requires signing.activeKeyId.",
|
||||
"config.signing.key_path_required": "Authority signing configuration requires signing.keyPath.",
|
||||
"config.signing.jwks_cache_range": "Authority signing configuration requires signing.jwksCacheLifetime to be between 00:00:01 and 01:00:00.",
|
||||
"config.signing.additional_key_id_required": "Additional signing keys require a keyId.",
|
||||
"config.signing.additional_key_path_required": "Signing key '{0}' requires a path.",
|
||||
|
||||
"config.bootstrap.api_key_required": "Authority bootstrap configuration requires an API key when enabled.",
|
||||
"config.bootstrap.idp_required": "Authority bootstrap configuration requires a default identity provider name when enabled.",
|
||||
|
||||
"config.rate_limit.permit_limit": "Authority rate limiting '{0}' requires permitLimit to be greater than zero.",
|
||||
"config.rate_limit.queue_limit": "Authority rate limiting '{0}' queueLimit cannot be negative.",
|
||||
"config.rate_limit.window": "Authority rate limiting '{0}' window must be greater than zero and no more than one hour.",
|
||||
|
||||
"config.storage.connection_required": "Authority storage requires a connection string.",
|
||||
"config.storage.timeout_invalid": "Authority storage command timeout must be greater than zero.",
|
||||
|
||||
"config.ack_token.payload_type_required": "notifications.ackTokens.payloadType must be specified when ack tokens are enabled.",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime must be greater than zero.",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.ack_token.key_id_required": "notifications.ackTokens.activeKeyId must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.key_path_required": "notifications.ackTokens.keyPath must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime must be between 00:00:01 and 01:00:00.",
|
||||
|
||||
"config.exceptions.null_template": "Authority exception routing template entries must not be null.",
|
||||
"config.exceptions.duplicate_template": "Authority exception routing template '{0}' is configured more than once.",
|
||||
"config.exceptions.template_id_required": "Authority exception routing templates require an id.",
|
||||
"config.exceptions.template_route_required": "Authority exception routing template '{0}' requires authorityRouteId.",
|
||||
|
||||
"config.sealed_mode.evidence_path_required": "AirGap.SealedMode.EvidencePath must be provided when enforcement is enabled.",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge must be between 00:00:01 and 7.00:00:00.",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime must be greater than zero and less than or equal to AirGap.SealedMode.MaxEvidenceAge.",
|
||||
|
||||
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts must include at least one host when enabled.",
|
||||
"config.escalation.scope_required": "notifications.escalation.scope must be specified.",
|
||||
|
||||
"config.anti_forgery.audience_required": "vulnerabilityExplorer.workflow.antiForgery.audience must be specified when anti-forgery tokens are enabled.",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime must be greater than zero.",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries must be non-negative.",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength must be greater than zero.",
|
||||
|
||||
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime must be greater than zero when attachment tokens are enabled.",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.attachment.payload_type_required": "vulnerabilityExplorer.attachments.payloadType must be specified when attachment tokens are enabled.",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries must be non-negative.",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength must be greater than zero.",
|
||||
|
||||
"config.api_lifecycle.sunset_after_deprecation": "Legacy auth sunset date must be after the deprecation date.",
|
||||
"config.api_lifecycle.docs_url_format": "Legacy auth documentation URL must be an absolute HTTP or HTTPS URL.",
|
||||
|
||||
"crypto.provider.algorithm_not_supported": "Signing algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.hash_not_supported": "Hash algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.verify_not_supported": "Verification algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.key_not_registered": "Signing key '{0}' is not registered with provider '{1}'.",
|
||||
"crypto.provider.key_algorithm_mismatch": "Signing key '{0}' is registered for algorithm '{1}', not '{2}'.",
|
||||
"crypto.provider.ec_keys_only": "Provider '{0}' only accepts EC signing keys.",
|
||||
"crypto.provider.no_password_hashing": "Provider '{0}' does not expose password hashing capabilities.",
|
||||
"crypto.provider.no_content_hashing": "Provider '{0}' does not support content hashing.",
|
||||
"crypto.provider.no_ephemeral_verification": "Provider '{0}' does not support ephemeral verification.",
|
||||
"crypto.provider.not_signing_capable": "Signing algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.es256_only": "Only ES256 signing keys are currently supported by provider '{0}'.",
|
||||
"crypto.provider.p256_required": "ES256 signing keys must use the NIST P-256 curve.",
|
||||
"crypto.provider.curve_mismatch": "Signing key curve mismatch. Expected curve '{0}' for algorithm '{1}'.",
|
||||
|
||||
"crypto.registry.empty": "At least one crypto provider must be registered.",
|
||||
"crypto.registry.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.registry.signing_not_supported": "Signing algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.hash_not_supported": "Hash algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.verify_not_supported": "Verification algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.active_profile_required": "Active profile is required.",
|
||||
"crypto.registry.profile_not_found": "Profile ID '{0}' is not found in the registry.",
|
||||
"crypto.registry.profile_id_required": "Profile ID cannot be null or empty.",
|
||||
|
||||
"crypto.key.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.key.private_scalar_required": "Private key parameters must include the scalar component.",
|
||||
"crypto.key.verification_only": "This constructor is only for verification-only keys. Set verificationOnly to true.",
|
||||
"crypto.key.public_xy_required": "Public key parameters must include X and Y coordinates.",
|
||||
"crypto.key.private_material_required": "Private key material must be provided.",
|
||||
|
||||
"crypto.hash.algorithm_unsupported": "Unsupported hash algorithm '{0}'.",
|
||||
"crypto.hash.purpose_required": "Purpose cannot be null or empty.",
|
||||
"crypto.hmac.algorithm_unknown": "Unknown HMAC algorithm '{0}'.",
|
||||
"crypto.hmac.algorithm_unsupported": "Unsupported HMAC algorithm '{0}'.",
|
||||
|
||||
"crypto.ecdsa.algorithm_unsupported": "Unsupported ECDSA signing algorithm '{0}'.",
|
||||
"crypto.ecdsa.curve_unsupported": "Unsupported ECDSA curve mapping for algorithm '{0}'.",
|
||||
|
||||
"crypto.digest.required": "Digest is required.",
|
||||
"crypto.digest.prefix_required": "{0} must start with '{1}'.",
|
||||
"crypto.digest.algorithm_unsupported": "Unsupported digest algorithm in '{0}'. Only sha256 is supported.",
|
||||
"crypto.digest.hex_length": "{0} must contain {1} hexadecimal characters.",
|
||||
|
||||
"crypto.password.memory_cost_invalid": "Password hashing memory cost must be greater than zero.",
|
||||
"crypto.password.iterations_invalid": "Password hashing iteration count must be greater than zero.",
|
||||
"crypto.password.parallelism_invalid": "Password hashing parallelism must be greater than zero.",
|
||||
"crypto.password.algorithm_mismatch": "{0} only supports the {1} algorithm.",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 requires a positive iteration count.",
|
||||
|
||||
"crypto.gost.not_der": "Signature is not DER encoded.",
|
||||
"crypto.gost.invalid_der": "Invalid DER structure for GOST signature.",
|
||||
"crypto.gost.raw_length": "Raw GOST signature must be {0} bytes.",
|
||||
"crypto.gost.neither_format": "Signature payload is neither DER nor raw GOST format.",
|
||||
"crypto.gost.coordinate_overflow": "Coordinate exceeds expected length.",
|
||||
|
||||
"crypto.profile.unknown_purpose": "Unknown hash purpose '{0}' in profile '{1}'.",
|
||||
"crypto.compliance.at_least_one_signing": "At least one signing algorithm must be supplied.",
|
||||
"crypto.compliance.at_least_one_hash": "At least one hash algorithm must be supplied.",
|
||||
|
||||
"crypto.ed25519.private_key_size": "Ed25519 private key must be 32 or 64 bytes.",
|
||||
"crypto.ed25519.public_key_size": "Ed25519 public key must be 32 bytes.",
|
||||
"crypto.ed25519.no_hashing": "BouncyCastle Ed25519 provider does not expose hashing capabilities.",
|
||||
"crypto.ed25519.raw_key_required": "Provider '{0}' requires raw Ed25519 private key material.",
|
||||
|
||||
"crypto.sm.no_password_hashing": "SM provider does not expose password hashing.",
|
||||
"crypto.sm.raw_key_required": "SM2 provider requires raw private key bytes (PKCS#8 DER).",
|
||||
"crypto.sm.unsupported_format": "Unsupported SM2 key format. Expect PEM or PKCS#8 DER.",
|
||||
"crypto.sm.disabled": "Provider '{0}' is disabled. Set {1}=1 (or disable RequireEnvironmentGate) to enable software SM2/SM3.",
|
||||
|
||||
"crypto.di.registry_empty": "Crypto provider registry cannot be empty. Configure at least one provider for RU deployments.",
|
||||
"crypto.di.ru_openssl_required": "Linux RU baseline requires provider 'ru.openssl.gost' (set STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 to override explicitly).",
|
||||
"crypto.di.ru_provider_required": "RU Linux baseline is misconfigured: both ru.openssl.gost and ru.pkcs11 are disabled via environment. Enable at least one provider.",
|
||||
"crypto.di.no_plugins_loaded": "No crypto providers were loaded. Check plugin configuration and manifest.",
|
||||
|
||||
"crypto.kms.rotation_via_policy": "{0} rotation must be orchestrated via {1} policies or schedules.",
|
||||
"crypto.kms.revocation_via_policy": "{0} revocation must be managed through {1} APIs or console.",
|
||||
"crypto.kms.public_key_missing_x": "Public key missing X coordinate.",
|
||||
"crypto.kms.public_key_missing_y": "Public key missing Y coordinate.",
|
||||
"crypto.kms.hash_failed": "Failed to hash payload with SHA-256.",
|
||||
"crypto.kms.key_not_found": "Key '{0}' does not exist.",
|
||||
"crypto.kms.key_revoked": "Key '{0}' has been revoked and cannot be rotated.",
|
||||
"crypto.kms.key_revoked_signing": "Key '{0}' is revoked and cannot be used for signing.",
|
||||
"crypto.kms.key_version_not_found": "Key version '{0}' does not exist for key '{1}'.",
|
||||
"crypto.kms.key_no_active_version": "Key '{0}' does not have an active version.",
|
||||
"crypto.kms.key_version_inactive": "Key version '{0}' is not active. Current state: {1}",
|
||||
"crypto.kms.key_no_public_material": "Key '{0}' version '{1}' does not have public key material.",
|
||||
"crypto.kms.algorithm_unsupported": "Algorithm '{0}' is not supported by the file KMS driver.",
|
||||
"crypto.kms.curve_unsupported": "Curve '{0}' is not supported.",
|
||||
"crypto.kms.metadata_failed": "Failed to create or load key metadata.",
|
||||
"crypto.kms.algorithm_mismatch": "Algorithm mismatch. Expected '{0}', received '{1}'.",
|
||||
"crypto.kms.version_exists": "Key version '{0}' already exists for key '{1}'.",
|
||||
"crypto.kms.material_not_found": "Key material for version '{0}' was not found.",
|
||||
"crypto.kms.envelope_deserialize_failed": "Key envelope could not be deserialized.",
|
||||
"crypto.kms.payload_deserialize_failed": "Key payload could not be deserialized.",
|
||||
"crypto.kms.pem_empty": "Public key PEM cannot be empty.",
|
||||
"crypto.kms.no_primary_version": "Crypto key '{0}' does not have an active primary version.",
|
||||
"crypto.kms.es256_only": "Provider '{0}' only supports ES256 signing keys.",
|
||||
"crypto.kms.version_metadata_required": "KMS signing keys must include metadata entry 'kms.version'.",
|
||||
"crypto.kms.missing_public_key": "KMS signing key is missing public key material.",
|
||||
|
||||
"crypto.fido2.curve_unsupported": "Unsupported FIDO2 curve OID '{0}'.",
|
||||
"crypto.fido2.rotation_required": "FIDO2 credential rotation requires new enrolment.",
|
||||
"crypto.fido2.revocation_relying_party": "FIDO2 credential revocation must be managed in the relying party.",
|
||||
"crypto.fido2.missing_x": "FIDO2 public key missing X coordinate.",
|
||||
"crypto.fido2.missing_y": "FIDO2 public key missing Y coordinate.",
|
||||
"crypto.fido2.authenticator_required": "IFido2Authenticator must be registered to use FIDO2 KMS.",
|
||||
|
||||
"crypto.pkcs11.rotation_hsm": "PKCS#11 rotation requires HSM administrative tooling.",
|
||||
"crypto.pkcs11.revocation_hsm": "PKCS#11 revocation must be handled by HSM policies.",
|
||||
"crypto.pkcs11.slot_not_found": "Could not resolve PKCS#11 slot.",
|
||||
"crypto.pkcs11.private_key_not_found": "PKCS#11 private key not found.",
|
||||
"crypto.pkcs11.public_key_not_found": "PKCS#11 public key not found.",
|
||||
"crypto.pkcs11.missing_ec_point": "Public key missing EC point.",
|
||||
"crypto.pkcs11.missing_ec_params": "Public key missing EC parameters.",
|
||||
"crypto.pkcs11.unsupported_point_format": "Unsupported EC point format.",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "Unsupported EC curve OID '{0}'.",
|
||||
"crypto.pkcs11.curve_unsupported": "Unsupported EC curve '{0}'.",
|
||||
|
||||
"common.provcache.sbom_hash_required": "SBOM hash cannot be null or empty.",
|
||||
"common.provcache.fetch_url_absolute": "Lazy fetch base URL must be absolute.",
|
||||
"common.provcache.fetch_url_no_userinfo": "Lazy fetch base URL must not include user info.",
|
||||
"common.provcache.fetch_url_host_required": "Lazy fetch base URL must include a host.",
|
||||
"common.provcache.fetch_url_scheme_invalid": "Lazy fetch base URL scheme '{0}' is not allowed.",
|
||||
"common.provcache.fetch_url_host_invalid": "Lazy fetch base URL host '{0}' is not allowlisted.",
|
||||
"common.provcache.no_chunks_provided": "No chunks provided.",
|
||||
"common.provcache.bundle_deserialize_failed": "Failed to deserialize bundle.",
|
||||
"common.provcache.signer_not_configured": "Signer is not configured.",
|
||||
"common.provcache.signing_requested_no_signer": "Signing requested but no signer is configured.",
|
||||
"common.provcache.cache_entry_not_found": "Cache entry not found for VeriKey: {0}",
|
||||
"common.provcache.chunk_manifest_not_found": "Chunk manifest not found for proof root: {0}",
|
||||
"common.provcache.http_timeout_invalid": "Lazy fetch HTTP timeout must be a positive, non-infinite duration.",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher requires a BaseAddress on the HTTP client.",
|
||||
"common.provcache.merkle_root_mismatch": "Merkle root mismatch. Expected: {0}, Computed: {1}",
|
||||
"common.provcache.chunk_verification_failed": "Chunk {0} verification failed. Expected hash: {1}",
|
||||
"common.provcache.artifact_reference_required": "Artifact reference is required.",
|
||||
"common.provcache.artifact_digest_required": "Artifact digest is required.",
|
||||
"common.provcache.decision_digest_required": "DecisionDigest is required.",
|
||||
"common.provcache.decision_digest_verikey_required": "DecisionDigest.VeriKey is required.",
|
||||
"common.provcache.digest_empty": "Digest cannot be empty.",
|
||||
"common.provcache.time_window_required": "Time window cannot be null or empty.",
|
||||
"common.provcache.vex_hash_required": "VEX hash set hash cannot be null or empty.",
|
||||
"common.provcache.policy_hash_required": "Policy hash cannot be null or empty.",
|
||||
"common.provcache.source_hash_required": "Source hash cannot be null or empty.",
|
||||
"common.provcache.signer_set_hash_required": "Signer set hash cannot be null or empty.",
|
||||
|
||||
"common.evidence.toolchain_required": "ToolChain must be set before building index.",
|
||||
"common.evidence.deserialization_failed": "Failed to deserialize evidence index.",
|
||||
"common.evidence.verdict_deserialization_failed": "Failed to deserialize verdict.",
|
||||
"common.evidence.inputs_json_required": "JSON cannot be null or empty.",
|
||||
"common.evidence.inputs_deserialization_failed": "Failed to deserialize pinned scoring inputs.",
|
||||
"common.evidence.bundle_alert_id_required": "AlertId is required",
|
||||
"common.evidence.bundle_artifact_id_required": "ArtifactId is required",
|
||||
"common.evidence.pdf_export_requires_config": "PDF export requires additional configuration",
|
||||
"common.evidence.invalid_uri_format": "Invalid evidence URI format: {0}. Expected stella://type/path",
|
||||
"common.evidence.invalid_uri_missing_path": "Invalid evidence URI format: {0}. Missing path.",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver cannot resolve evidence type: {0}",
|
||||
"common.evidence.schema_resource_not_found": "Schema resource not found: {0}",
|
||||
"common.evidence.schema_resource_not_available": "Schema resource not available: {0}",
|
||||
"common.evidence.provenance_deserialize_failed": "Failed to deserialize provenance for evidence {0}",
|
||||
"common.evidence.bundle_deserialize_failed": "Failed to deserialize verdict bundle",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "Failed to deserialize delta verdict",
|
||||
|
||||
"common.canonicalization.value_empty_after_trim": "Value must not be empty after trimming.",
|
||||
"common.canonicalization.deserialize_failed": "Failed to deserialize {0}",
|
||||
"common.canonicalization.datetime_value_null": "DateTimeOffset value is null.",
|
||||
"common.canonicalization.dict_key_null": "Dictionary key cannot be null.",
|
||||
|
||||
"common.audit.replay_token_value_empty": "Token value cannot be empty.",
|
||||
"common.audit.replay_token_empty": "Token cannot be empty.",
|
||||
"common.audit.replay_token_format_invalid": "Invalid replay token format: {0}",
|
||||
"common.audit.replay_token_version_invalid": "Invalid replay token version: {0}",
|
||||
"common.audit.replay_token_expiration_invalid": "Invalid expiration timestamp in replay token: {0}",
|
||||
"common.audit.replay_token_duplicate_context_key": "AdditionalContext contains duplicate key after normalization: '{0}'.",
|
||||
|
||||
"common.artifact.uri_format_invalid": "Invalid URI format: {0}",
|
||||
"common.artifact.uri_scheme_not_supported": "URI scheme not supported: {0}",
|
||||
"common.artifact.file_not_accessible": "File not accessible: {0}",
|
||||
"common.artifact.file_too_large": "File too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.uri_not_accessible": "URI not accessible: {0} returned {1}",
|
||||
"common.artifact.content_too_large": "Content too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.fetch_failed": "Failed to fetch from {0}: {1}",
|
||||
|
||||
"common.delta_verdict.artifact_ref_required": "Artifact reference is required.",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "Unsupported signing algorithm: {0}",
|
||||
"common.delta_verdict.hmac_secret_required": "HMAC signing requires a base64 secret.",
|
||||
|
||||
"common.eventing.no_entry_assembly": "No entry assembly found",
|
||||
|
||||
"auth.persistence.deserialize_inputs_failed": "Failed to deserialize inputs",
|
||||
"auth.persistence.deserialize_result_failed": "Failed to deserialize result",
|
||||
"auth.persistence.revocation_sequence_mismatch": "Revocation export sequence mismatch. Expected {0}, current {1}.",
|
||||
"auth.persistence.revocation_update_rejected": "Revocation export state update rejected. Expected sequence {0}."
|
||||
"_meta": {
|
||||
"locale": "uk-UA",
|
||||
"namespace": "common",
|
||||
"version": "1.1"
|
||||
},
|
||||
"common.error.generic": "Щось пішло не так.",
|
||||
"common.error.not_found": "Потрібний ресурс не знайдено.",
|
||||
"common.error.entity_not_found": "{0} '{1}' не знайдено.",
|
||||
"common.error.unauthorized": "Ви не маєте дозволу на виконання цієї дії.",
|
||||
"common.error.forbidden": "Доступ заборонено.",
|
||||
"common.error.bad_request": "Запит недійсний.",
|
||||
"common.error.conflict": "Стався конфлікт. Можливо, ресурс був змінений.",
|
||||
"common.error.timeout": "Час очікування запиту минув через {0} секунд.",
|
||||
"common.error.server_error": "Сталася внутрішня помилка сервера. Спробуйте пізніше.",
|
||||
"common.error.service_unavailable": "Послуга тимчасово недоступна.",
|
||||
"common.error.too_many_requests": "Забагато запитів. Будь ласка, зачекайте та повторіть спробу.",
|
||||
"common.error.network": "Помилка мережі. Перевірте підключення.",
|
||||
"common.error.body_required": "Потрібне тіло запиту.",
|
||||
"common.error.deserialization_failed": "Не вдалося десеріалізувати {0}.",
|
||||
"common.error.not_supported": "{0} не підтримується.",
|
||||
"common.error.already_exists": "{0} '{1}' вже існує.",
|
||||
"common.error.revoked": "{0} '{1}' було відкликано та не може використовуватися.",
|
||||
"common.error.state_invalid": "{0} '{1}' не в очікуваному стані. Поточний стан: {2}",
|
||||
"common.validation.required": "Потрібен {0}.",
|
||||
"common.validation.invalid": "{0} недійсний.",
|
||||
"common.validation.too_long": "{0} перевищує максимальну довжину в {1} символів.",
|
||||
"common.validation.too_short": "{0} має містити принаймні {1} символів.",
|
||||
"common.validation.out_of_range": "{0} має бути між {1} і {2}.",
|
||||
"common.validation.invalid_format": "{0} має недійсний формат.",
|
||||
"common.validation.duplicate": "{0} вже існує.",
|
||||
"common.validation.empty_not_allowed": "{0} не має бути порожнім.",
|
||||
"common.validation.empty_after_trim": "{0} не має бути порожнім після обрізання.",
|
||||
"common.validation.greater_than_zero": "{0} має бути більше нуля.",
|
||||
"common.validation.non_negative": "{0} має бути невід’ємним.",
|
||||
"common.validation.at_least_one": "Принаймні один {0} має бути налаштований.",
|
||||
"common.validation.at_least_n": "{0} має мати принаймні {1} записів.",
|
||||
"common.validation.null_or_empty": "{0} не може бути нульовим або порожнім.",
|
||||
"common.validation.absolute_uri": "{0} має бути абсолютним URI.",
|
||||
"common.validation.invalid_regex": "{0} '{1}' не є дійсним регулярним виразом.",
|
||||
"common.validation.unknown_value": "{0} '{1}' не розпізнається. Дозволені значення: {2}",
|
||||
"common.validation.max_exceeded": "{0} має містити {1} або менше символів.",
|
||||
"common.actions.save": "Зберегти",
|
||||
"common.actions.cancel": "Скасувати",
|
||||
"common.actions.delete": "Видалити",
|
||||
"common.actions.confirm": "Підтвердити",
|
||||
"common.actions.submit": "Надіслати",
|
||||
"common.actions.close": "Закрити",
|
||||
"common.actions.retry": "Повторити",
|
||||
"common.actions.expand": "Розгорнути",
|
||||
"common.actions.collapse": "Згорнути",
|
||||
"common.actions.show_more": "Показати більше",
|
||||
"common.actions.show_less": "Показати менше",
|
||||
"common.status.healthy": "Здоровий",
|
||||
"common.status.degraded": "Погіршено",
|
||||
"common.status.unavailable": "Недоступно",
|
||||
"common.status.unknown": "Невідомо",
|
||||
"common.status.active": "Активно",
|
||||
"common.status.inactive": "Неактивно",
|
||||
"common.status.pending": "В очікуванні",
|
||||
"common.status.running": "Виконується",
|
||||
"common.status.completed": "Завершено",
|
||||
"common.status.failed": "Помилка",
|
||||
"common.status.canceled": "Скасовано",
|
||||
"common.status.blocked": "Заблоковано",
|
||||
"common.severity.critical": "Критичний",
|
||||
"common.severity.high": "Високий",
|
||||
"common.severity.medium": "Середній",
|
||||
"common.severity.low": "Низький",
|
||||
"common.severity.info": "Інформація",
|
||||
"common.severity.none": "Немає",
|
||||
"common.time.seconds_ago": "{0} секунд тому",
|
||||
"common.time.minutes_ago": "{0} хвилин тому",
|
||||
"common.time.hours_ago": "{0} годин тому",
|
||||
"common.time.days_ago": "{0} днів тому",
|
||||
"common.time.just_now": "Просто зараз",
|
||||
"common.ui.loading": "Завантаження...",
|
||||
"common.ui.saving": "Збереження...",
|
||||
"common.ui.deleting": "Видалення...",
|
||||
"common.ui.submitting": "Подання...",
|
||||
"common.ui.no_results": "Результатів не знайдено.",
|
||||
"common.ui.offline": "Ви офлайн.",
|
||||
"common.ui.reconnecting": "Повторне підключення...",
|
||||
"common.ui.back_online": "Знову онлайн.",
|
||||
"auth.dpop.proof_lifetime_invalid": "Термін служби підтвердження DPoP має бути більшим за нуль.",
|
||||
"auth.dpop.clock_skew_invalid": "Дозволений перекіс годинника DPoP має бути від 0 секунд до 5 хвилин.",
|
||||
"auth.dpop.replay_window_invalid": "Вікно відтворення DPoP має бути більше або дорівнювати нулю.",
|
||||
"auth.dpop.algorithm_required": "Необхідно налаштувати принаймні один дозволений алгоритм DPoP.",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "Дозволені алгоритми DPoP не можуть бути порожніми після нормалізації.",
|
||||
"auth.dpop.options_required": "Необхідно надати параметри DPoP.",
|
||||
"auth.dpop.nonce_ttl_invalid": "Nonce TTL має бути більше нуля.",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "Максимальна кількість видань за хвилину має бути не менше 1.",
|
||||
"auth.dpop.nonce_store_required": "Потрібно вказати Dpop.Nonce.Store.",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store має бути або 'memory', або 'redis'.",
|
||||
"auth.dpop.nonce_redis_required": "Dpop.Nonce.RedisConnectionString необхідно надати під час використання магазину 'redis'.",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences має містити принаймні одну аудиторію.",
|
||||
"auth.dpop.token_three_segments": "Токен повинен містити три сегменти.",
|
||||
"auth.dpop.segment_out_of_range": "Індекс сегмента поза діапазоном.",
|
||||
"auth.dpop.header_decode_failed": "Не вдалося декодувати заголовок.",
|
||||
"auth.dpop.header_missing_typ": "Підтвердження DPoP відсутній заголовок typ=dpop+jwt.",
|
||||
"auth.dpop.header_missing_alg": "DPoP-доказ відсутній заголовок alg.",
|
||||
"auth.dpop.header_unsupported_alg": "Алгоритм DPoP не підтримується.",
|
||||
"auth.dpop.header_missing_jwk": "Підтвердження DPoP відсутній заголовок jwk.",
|
||||
"auth.dpop.header_invalid_jwk": "Заголовок jwk підтвердження DPoP недійсний.",
|
||||
"auth.dpop.payload_decode_failed": "Не вдається розшифрувати корисне навантаження.",
|
||||
"auth.dpop.payload_missing_htm": "DPoP-доказ відсутній у заяві htm.",
|
||||
"auth.dpop.payload_htm_mismatch": "DPoP htm не відповідає методу запиту.",
|
||||
"auth.dpop.payload_missing_htu": "Доказ DPoP відсутній у заяві HTU.",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu не відповідає URI запиту.",
|
||||
"auth.dpop.payload_missing_iat": "У претензії відсутній доказ DPoP.",
|
||||
"auth.dpop.payload_missing_jti": "Відсутнє доказ DPoP jti претензії.",
|
||||
"auth.dpop.payload_iat_invalid": "Підтвердження DPoP у заяві не є дійсним числом.",
|
||||
"auth.dpop.nonce_missing": "Відсутність підтвердження DPoP.",
|
||||
"auth.dpop.nonce_mismatch": "Невідповідність DPoP nonce.",
|
||||
"auth.dpop.proof_future": "Підтвердження DPoP видано в майбутньому.",
|
||||
"auth.dpop.proof_expired": "Термін дії підтвердження DPoP минув.",
|
||||
"auth.dpop.signature_failed": "Помилка підтвердження підпису DPoP.",
|
||||
"auth.dpop.replay_detected": "Підтвердження DPoP уже використано.",
|
||||
"config.authority.schema_version_required": "Конфігурація повноважень вимагає позитивної версії schemaVersion.",
|
||||
"config.authority.issuer_required": "Конфігурація центру вимагає URL-адресу видавця.",
|
||||
"config.authority.issuer_absolute": "Емітент повноважень має бути абсолютним URI.",
|
||||
"config.authority.issuer_https": "Емітент повноважень повинен використовувати HTTPS, якщо не працює на інтерфейсі петлі.",
|
||||
"config.authority.duplicate_tenant": "Конфігурація authority містить дубльований ідентифікатор тенанта '{0}'.",
|
||||
"config.authority.property_greater_than_zero": "Конфігурація повноважень вимагає, щоб {0} було більше нуля.",
|
||||
"config.authority.property_max": "Конфігурація повноважень вимагає, щоб {0} був меншим або дорівнював {1}.",
|
||||
"config.authority.remote_inference_required": "Конфігурація повноважень вимагає принаймні одного консультативного профілю дистанційного висновку ШІ, якщо ввімкнено дистанційний висновок.",
|
||||
"config.tenant.id_required": "Кожному тенанту потрібен ідентифікатор (slug).",
|
||||
"config.tenant.id_format": "Ідентифікатор тенанта '{0}' має містити лише малі літери, цифри та дефіс.",
|
||||
"config.tenant.project_format": "Тенант '{0}' визначає проєкт '{1}', який має містити лише малі літери, цифри та дефіс.",
|
||||
"config.tenant.role_missing_config": "Тенант '{0}' визначає роль '{1}' без конфігурації.",
|
||||
"config.tenant.role_scope_required": "Роль '{1}' тенанта '{0}' має визначати щонайменше одну область.",
|
||||
"config.tenant.role_unknown_scope": "Роль '{1}' тенанта '{0}' посилається на невідому область '{2}'.",
|
||||
"config.tenant.role_unsupported_attribute": "Роль '{1}' тенанта '{0}' визначає непідтримуваний атрибут '{2}'. Дозволені атрибути: env, owner, business_tier.",
|
||||
"config.tenant.delegation_max_tokens": "Для тенанта '{0}' значення delegation.maxActiveTokens має бути більшим за нуль, якщо воно задане.",
|
||||
"config.tenant.remote_inference_disabled": "Згоду на віддалений висновок для тенанта не можна надати, якщо віддалений висновок вимкнено.",
|
||||
"config.tenant.remote_inference_consent_version_length": "Поле consentVersion віддаленого висновку для тенанта має містити не більше {0} символів.",
|
||||
"config.tenant.remote_inference_consented_by_length": "Поле consentedBy віддаленого висновку для тенанта має містити не більше {0} символів.",
|
||||
"config.tenant.remote_inference_consent_version_required": "Згода на віддалений висновок для тенанта вимагає consentVersion, якщо consentGranted=true.",
|
||||
"config.tenant.remote_inference_consented_at_required": "Згода на віддалений висновок для тенанта вимагає consentedAt, якщо consentGranted=true.",
|
||||
"config.service_account.id_required": "Початковий обліковий запис служби делегування потребує accountId.",
|
||||
"config.service_account.id_format": "Ідентифікатор облікового запису служби '{0}' має містити малі літери, цифри, двокрапку, підкреслення або дефіс.",
|
||||
"config.service_account.tenant_required": "Службовий обліковий запис '{0}' потребує призначення тенанта.",
|
||||
"config.service_account.tenant_unknown": "Службовий обліковий запис '{0}' посилається на невідомого тенанта '{1}'.",
|
||||
"config.service_account.scope_required": "Службовий обліковий запис '{0}' має вказати принаймні одну дозволену область.",
|
||||
"config.service_account.unsupported_attribute": "Службовий обліковий запис '{0}' визначає непідтримуваний атрибут '{1}'. Дозволені атрибути: env, owner, business_tier.",
|
||||
"config.plugin.assembly_required": "Плагін повноважень '{0}' повинен визначати або assemblyName, або assemblyPath.",
|
||||
"config.plugin.config_file_required": "Плагін повноважень '{0}' повинен визначати configFile.",
|
||||
"config.plugin.config_file_missing": "Плагін повноважень '{0}' визначає configFile '{1}', якого не існує.",
|
||||
"config.plugin.unknown_capability": "Плагін авторитету '{0}' заявляє про невідому можливість '{1}'. Дозволені значення: пароль, mfa, clientProvisioning, bootstrap.",
|
||||
"config.plugin.descriptor_null": "Дескриптор додатка авторитету '{0}' має значення null.",
|
||||
"config.delegation.duplicate_account": "Конфігурація делегування містить повторюваний ідентифікатор облікового запису служби '{0}'.",
|
||||
"config.delegation.quota_max_tokens": "Конфігурація делегування повноважень вимагає, щоб {0}.MaxActiveTokens було більше нуля.",
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace має бути невід’ємним.",
|
||||
"config.mtls.audiences_required": "Mtls.EnforceForAudiences має містити принаймні одну аудиторію, якщо ввімкнено.",
|
||||
"config.mtls.ca_empty": "Записи Mtls.AllowedCertificateAuthorities не повинні бути порожніми.",
|
||||
"config.mtls.san_types_required": "Mtls.AllowedSanTypes має містити принаймні один запис, якщо ввімкнено.",
|
||||
"config.mtls.subject_patterns_empty": "Записи Mtls.AllowedSubjectPatterns не повинні бути порожніми.",
|
||||
"config.mtls.subject_pattern_invalid": "Запис Mtls.AllowedSubjectPatterns '{0}' не є дійсним регулярним виразом.",
|
||||
"config.signing.key_id_required": "Конфігурація підпису авторизації вимагає signing.activeKeyId.",
|
||||
"config.signing.key_path_required": "Конфігурація підпису авторизації вимагає signing.keyPath.",
|
||||
"config.signing.jwks_cache_range": "Конфігурація підпису авторизації вимагає, щоб signing.jwksCacheLifetime був між 00:00:01 і 01:00:00.",
|
||||
"config.signing.additional_key_id_required": "Для додаткових ключів підпису потрібен ідентифікатор ключа.",
|
||||
"config.signing.additional_key_path_required": "Для ключа підпису '{0}' потрібен шлях.",
|
||||
"config.bootstrap.api_key_required": "Конфігурація завантажувальної програми Authority потребує ключа API, якщо її ввімкнено.",
|
||||
"config.bootstrap.idp_required": "Якщо ввімкнено, для конфігурації початкового завантаження авторизації потрібне ім’я постачальника ідентифікаційної інформації за замовчуванням.",
|
||||
"config.rate_limit.permit_limit": "Обмеження рівня повноважень '{0}' вимагає, щоб permitLimit було більше нуля.",
|
||||
"config.rate_limit.queue_limit": "Обмеження рівня повноважень '{0}' queueLimit не може бути від’ємним.",
|
||||
"config.rate_limit.window": "Вікно обмеження повноважень '{0}' має бути більше нуля та не більше однієї години.",
|
||||
"config.storage.connection_required": "Для зберігання повноважень потрібен рядок підключення.",
|
||||
"config.storage.timeout_invalid": "Час очікування команди зберігання повноважень має бути більшим за нуль.",
|
||||
"config.ack_token.payload_type_required": "notifications.ackTokens.payloadType потрібно вказати, коли маркери підтвердження ввімкнено.",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime має бути більше нуля.",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime має бути більше нуля та більше або дорівнювати defaultLifetime.",
|
||||
"config.ack_token.key_id_required": "notifications.ackTokens.activeKeyId потрібно вказати, коли ввімкнено маркери підтвердження.",
|
||||
"config.ack_token.key_path_required": "notifications.ackTokens.keyPath потрібно вказати, коли ввімкнено маркери підтвердження.",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime має бути між 00:00:01 і 01:00:00.",
|
||||
"config.exceptions.null_template": "Записи шаблону маршрутизації винятків повноважень не мають бути нульовими.",
|
||||
"config.exceptions.duplicate_template": "Шаблон маршрутизації винятків повноважень '{0}' налаштовано кілька разів.",
|
||||
"config.exceptions.template_id_required": "Шаблони маршрутизації винятків із повноважень вимагають ідентифікатора.",
|
||||
"config.exceptions.template_route_required": "Шаблон маршрутизації винятків повноважень '{0}' потребує authorRouteId.",
|
||||
"config.sealed_mode.evidence_path_required": "AirGap.SealedMode.EvidencePath потрібно надати, коли ввімкнено примусове виконання.",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge має бути між 00:00:01 і 7.00:00:00.",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime має бути більше нуля та менше або дорівнювати AirGap.SealedMode.MaxEvidenceAge.",
|
||||
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts має містити принаймні один хост, якщо ввімкнено.",
|
||||
"config.escalation.scope_required": "Потрібно вказати notifications.escalation.scope.",
|
||||
"config.anti_forgery.audience_required": "vulnerabilityExplorer.workflow.antiForgery.audience необхідно вказати, якщо активовано маркери захисту від підробки.",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime має бути більше нуля.",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime має бути більше нуля та більше або дорівнювати defaultLifetime.",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries має бути невід’ємним.",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength має бути більше нуля.",
|
||||
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime має бути більше нуля, якщо ввімкнено маркери вкладення.",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime має бути більше нуля та більше або дорівнювати defaultLifetime.",
|
||||
"config.attachment.payload_type_required": "vulnerabilityExplorer.attachments.payloadType потрібно вказати, коли ввімкнено маркери вкладення.",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries має бути невід’ємним.",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength має бути більше нуля.",
|
||||
"config.api_lifecycle.sunset_after_deprecation": "Дата завершення автентифікації застарілої версії має бути після дати припинення підтримки.",
|
||||
"config.api_lifecycle.docs_url_format": "URL-адреса застарілої автентифікаційної документації має бути абсолютною URL-адресою HTTP або HTTPS.",
|
||||
"crypto.provider.algorithm_not_supported": "Алгоритм підпису '{0}' не підтримується постачальником '{1}'.",
|
||||
"crypto.provider.hash_not_supported": "Алгоритм хешування '{0}' не підтримується провайдером '{1}'.",
|
||||
"crypto.provider.verify_not_supported": "Алгоритм перевірки '{0}' не підтримується провайдером '{1}'.",
|
||||
"crypto.provider.key_not_registered": "Ключ підпису '{0}' не зареєстрований у постачальника '{1}'.",
|
||||
"crypto.provider.key_algorithm_mismatch": "Ключ підпису '{0}' зареєстровано для алгоритму '{1}', а не для '{2}'.",
|
||||
"crypto.provider.ec_keys_only": "Постачальник '{0}' приймає лише ключі підпису EC.",
|
||||
"crypto.provider.no_password_hashing": "Постачальник '{0}' не надає можливості хешування паролів.",
|
||||
"crypto.provider.no_content_hashing": "Постачальник '{0}' не підтримує хешування вмісту.",
|
||||
"crypto.provider.no_ephemeral_verification": "Постачальник '{0}' не підтримує ефемерну перевірку.",
|
||||
"crypto.provider.not_signing_capable": "Алгоритм підпису '{0}' не підтримується постачальником '{1}'.",
|
||||
"crypto.provider.es256_only": "Лише ключі підпису ES256 наразі підтримуються постачальником '{0}'.",
|
||||
"crypto.provider.p256_required": "Ключі підпису ES256 повинні використовувати криву NIST P-256.",
|
||||
"crypto.provider.curve_mismatch": "Невідповідність кривої ключа підпису. Очікувана крива '{0}' для алгоритму '{1}'.",
|
||||
"crypto.registry.empty": "Повинен бути зареєстрований принаймні один постачальник криптовалют.",
|
||||
"crypto.registry.algorithm_required": "Необхідний ідентифікатор алгоритму.",
|
||||
"crypto.registry.signing_not_supported": "Алгоритм підпису '{0}' не підтримується жодним зареєстрованим постачальником.",
|
||||
"crypto.registry.hash_not_supported": "Хеш-алгоритм '{0}' не підтримується жодним зареєстрованим постачальником.",
|
||||
"crypto.registry.verify_not_supported": "Алгоритм перевірки '{0}' не підтримується жодним зареєстрованим провайдером.",
|
||||
"crypto.registry.active_profile_required": "Потрібен активний профіль.",
|
||||
"crypto.registry.profile_not_found": "ID профілю '{0}' не знайдено в реєстрі.",
|
||||
"crypto.registry.profile_id_required": "Ідентифікатор профілю не може бути пустим або порожнім.",
|
||||
"crypto.key.algorithm_required": "Необхідний ідентифікатор алгоритму.",
|
||||
"crypto.key.private_scalar_required": "Параметри закритого ключа повинні містити скалярний компонент.",
|
||||
"crypto.key.verification_only": "Цей конструктор призначений лише для ключів лише для перевірки. Установіть значення true для verificationOnly.",
|
||||
"crypto.key.public_xy_required": "Параметри відкритого ключа повинні містити координати X і Y.",
|
||||
"crypto.key.private_material_required": "Необхідно надати матеріал із закритим ключем.",
|
||||
"crypto.hash.algorithm_unsupported": "Непідтримуваний алгоритм хешування '{0}'.",
|
||||
"crypto.hash.purpose_required": "Мета не може бути нульовою або порожньою.",
|
||||
"crypto.hmac.algorithm_unknown": "Невідомий алгоритм HMAC '{0}'.",
|
||||
"crypto.hmac.algorithm_unsupported": "Непідтримуваний алгоритм HMAC '{0}'.",
|
||||
"crypto.ecdsa.algorithm_unsupported": "Непідтримуваний алгоритм підписання ECDSA '{0}'.",
|
||||
"crypto.ecdsa.curve_unsupported": "Непідтримуване відображення кривої ECDSA для алгоритму '{0}'.",
|
||||
"crypto.digest.required": "Потрібен дайджест.",
|
||||
"crypto.digest.prefix_required": "{0} має починатися з '{1}'.",
|
||||
"crypto.digest.algorithm_unsupported": "Непідтримуваний алгоритм дайджесту в '{0}'. Підтримується лише sha256.",
|
||||
"crypto.digest.hex_length": "{0} має містити {1} шістнадцяткових символів.",
|
||||
"crypto.password.memory_cost_invalid": "Вартість пам’яті для хешування пароля має бути більше нуля.",
|
||||
"crypto.password.iterations_invalid": "Кількість ітерацій хешування пароля має бути більше нуля.",
|
||||
"crypto.password.parallelism_invalid": "Паралельність хешування пароля має бути більше нуля.",
|
||||
"crypto.password.algorithm_mismatch": "{0} підтримує лише алгоритм {1}.",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 вимагає додатної кількості ітерацій.",
|
||||
"crypto.gost.not_der": "Підпис не закодований DER.",
|
||||
"crypto.gost.invalid_der": "Неправильна структура DER для підпису ГОСТ.",
|
||||
"crypto.gost.raw_length": "Необроблений підпис ГОСТу має бути {0} байтів.",
|
||||
"crypto.gost.neither_format": "Корисне навантаження підпису не є ані форматом DER, ані ГОСТом.",
|
||||
"crypto.gost.coordinate_overflow": "Координата перевищує очікувану довжину.",
|
||||
"crypto.profile.unknown_purpose": "Невідоме призначення хешу '{0}' у профілі '{1}'.",
|
||||
"crypto.compliance.at_least_one_signing": "Необхідно надати принаймні один алгоритм підпису.",
|
||||
"crypto.compliance.at_least_one_hash": "Необхідно надати принаймні один алгоритм хешування.",
|
||||
"crypto.ed25519.private_key_size": "Закритий ключ Ed25519 має бути 32 або 64 байти.",
|
||||
"crypto.ed25519.public_key_size": "Відкритий ключ Ed25519 має бути 32 байти.",
|
||||
"crypto.ed25519.no_hashing": "Постачальник BouncyCastle Ed25519 не надає можливості хешування.",
|
||||
"crypto.ed25519.raw_key_required": "Постачальнику '{0}' потрібен необроблений матеріал закритого ключа Ed25519.",
|
||||
"crypto.sm.no_password_hashing": "Постачальник SM не розкриває хешування паролів.",
|
||||
"crypto.sm.raw_key_required": "Постачальнику SM2 потрібні необроблені байти закритого ключа (PKCS#8 DER).",
|
||||
"crypto.sm.unsupported_format": "Непідтримуваний формат ключа SM2. Очікуйте PEM або PKCS#8 DER.",
|
||||
"crypto.sm.disabled": "Постачальник '{0}' вимкнено. Встановіть {1}=1 (або вимкніть RequireEnvironmentGate), щоб увімкнути програмне забезпечення SM2/SM3.",
|
||||
"crypto.di.registry_empty": "Реєстр криптопровайдерів не може бути порожнім. Налаштуйте принаймні одного постачальника для розгортання RU.",
|
||||
"crypto.di.ru_openssl_required": "Базовий рівень Linux RU вимагає постачальника 'ru.openssl.gost' (встановіть STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 для явного перевизначення).",
|
||||
"crypto.di.ru_provider_required": "Базовий рівень RU Linux налаштовано неправильно: ru.openssl.gost і ru.pkcs11 вимкнено через середовище. Увімкніть хоча б одного постачальника.",
|
||||
"crypto.di.no_plugins_loaded": "Не було завантажено жодного постачальника криптовалют. Перевірте конфігурацію плагіна та маніфест.",
|
||||
"crypto.kms.rotation_via_policy": "Ротація {0} повинна бути організована за допомогою політик або розкладів {1}.",
|
||||
"crypto.kms.revocation_via_policy": "Відкликанням {0} потрібно керувати через {1} API або консоль.",
|
||||
"crypto.kms.public_key_missing_x": "У відкритому ключі відсутня координата X.",
|
||||
"crypto.kms.public_key_missing_y": "У відкритому ключі відсутня координата Y.",
|
||||
"crypto.kms.hash_failed": "Не вдалося хешувати корисне навантаження за допомогою SHA-256.",
|
||||
"crypto.kms.key_not_found": "Ключ '{0}' не існує.",
|
||||
"crypto.kms.key_revoked": "Ключ '{0}' анульовано та не може бути замінений.",
|
||||
"crypto.kms.key_revoked_signing": "Ключ '{0}' анульований і не може використовуватися для підпису.",
|
||||
"crypto.kms.key_version_not_found": "Версія ключа '{0}' не існує для ключа '{1}'.",
|
||||
"crypto.kms.key_no_active_version": "Ключ '{0}' не має активної версії.",
|
||||
"crypto.kms.key_version_inactive": "Версія ключа '{0}' неактивна. Поточний стан: {1}",
|
||||
"crypto.kms.key_no_public_material": "Версія ключа '{0}' '{1}' не має відкритого ключа.",
|
||||
"crypto.kms.algorithm_unsupported": "Алгоритм '{0}' не підтримується файловим драйвером KMS.",
|
||||
"crypto.kms.curve_unsupported": "Крива '{0}' не підтримується.",
|
||||
"crypto.kms.metadata_failed": "Не вдалося створити або завантажити ключові метадані.",
|
||||
"crypto.kms.algorithm_mismatch": "Невідповідність алгоритму. Очікується '{0}', отримано '{1}'.",
|
||||
"crypto.kms.version_exists": "Версія ключа '{0}' вже існує для ключа '{1}'.",
|
||||
"crypto.kms.material_not_found": "Ключовий матеріал для версії '{0}' не знайдено.",
|
||||
"crypto.kms.envelope_deserialize_failed": "Не вдалося десеріалізувати конверт ключа.",
|
||||
"crypto.kms.payload_deserialize_failed": "Ключове корисне навантаження не вдалося десеріалізувати.",
|
||||
"crypto.kms.pem_empty": "Відкритий ключ PEM не може бути порожнім.",
|
||||
"crypto.kms.no_primary_version": "Криптоключ '{0}' не має активної первинної версії.",
|
||||
"crypto.kms.es256_only": "Постачальник '{0}' підтримує лише ключі підпису ES256.",
|
||||
"crypto.kms.version_metadata_required": "Ключі підпису KMS мають містити запис метаданих 'kms.version'.",
|
||||
"crypto.kms.missing_public_key": "У ключі підпису KMS відсутній матеріал відкритого ключа.",
|
||||
"crypto.fido2.curve_unsupported": "Непідтримуваний OID кривої FIDO2 '{0}'.",
|
||||
"crypto.fido2.rotation_required": "Для ротації облікових даних FIDO2 потрібна нова реєстрація.",
|
||||
"crypto.fido2.revocation_relying_party": "Відкликанням облікових даних FIDO2 потрібно керувати в перевіряючій стороні.",
|
||||
"crypto.fido2.missing_x": "У відкритому ключі FIDO2 відсутня координата X.",
|
||||
"crypto.fido2.missing_y": "У відкритому ключі FIDO2 відсутня координата Y.",
|
||||
"crypto.fido2.authenticator_required": "Для використання FIDO2 KMS необхідно зареєструвати IFido2Authenticator.",
|
||||
"crypto.pkcs11.rotation_hsm": "Для ротації PKCS#11 потрібен адміністративний інструментарій HSM.",
|
||||
"crypto.pkcs11.revocation_hsm": "Відкликання PKCS#11 має оброблятися політиками HSM.",
|
||||
"crypto.pkcs11.slot_not_found": "Не вдалося вирішити слот PKCS#11.",
|
||||
"crypto.pkcs11.private_key_not_found": "Закритий ключ PKCS#11 не знайдено.",
|
||||
"crypto.pkcs11.public_key_not_found": "Відкритий ключ PKCS#11 не знайдено.",
|
||||
"crypto.pkcs11.missing_ec_point": "У відкритому ключі відсутня точка EC.",
|
||||
"crypto.pkcs11.missing_ec_params": "У відкритому ключі відсутні параметри EC.",
|
||||
"crypto.pkcs11.unsupported_point_format": "Непідтримуваний формат точки EC.",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "Непідтримувана крива EC OID '{0}'.",
|
||||
"crypto.pkcs11.curve_unsupported": "Непідтримувана крива EC '{0}'.",
|
||||
"common.provcache.sbom_hash_required": "Хеш SBOM не може бути нульовим або порожнім.",
|
||||
"common.provcache.fetch_url_absolute": "Основна URL-адреса відкладеного отримання має бути абсолютною.",
|
||||
"common.provcache.fetch_url_no_userinfo": "Основна URL-адреса відкладеного отримання не повинна містити інформацію про користувача.",
|
||||
"common.provcache.fetch_url_host_required": "Основна URL-адреса відкладеного отримання має містити хост.",
|
||||
"common.provcache.fetch_url_scheme_invalid": "Схема базової URL-адреси відкладеного отримання '{0}' заборонена.",
|
||||
"common.provcache.fetch_url_host_invalid": "Хост '{0}' базової URL-адреси відкладеного отримання не внесено до білого списку.",
|
||||
"common.provcache.no_chunks_provided": "Немає шматків.",
|
||||
"common.provcache.bundle_deserialize_failed": "Не вдалося десеріалізувати пакет.",
|
||||
"common.provcache.signer_not_configured": "Підписувач не налаштований.",
|
||||
"common.provcache.signing_requested_no_signer": "Запит на підписання, але підписувач не налаштований.",
|
||||
"common.provcache.cache_entry_not_found": "Запис кешу не знайдено для VeriKey: {0}",
|
||||
"common.provcache.chunk_manifest_not_found": "Маніфест фрагмента не знайдено для кореня підтвердження: {0}",
|
||||
"common.provcache.http_timeout_invalid": "Час очікування відкладеного отримання HTTP має бути додатним і не нескінченним.",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher вимагає BaseAddress на клієнті HTTP.",
|
||||
"common.provcache.merkle_root_mismatch": "Невідповідність кореня Меркла. Очікується: {0}, обчислюється: {1}",
|
||||
"common.provcache.chunk_verification_failed": "Не вдалося перевірити фрагмент {0}. Очікуваний хеш: {1}",
|
||||
"common.provcache.artifact_reference_required": "Потрібне посилання на артефакт.",
|
||||
"common.provcache.artifact_digest_required": "Потрібен дайджест артефакту.",
|
||||
"common.provcache.decision_digest_required": "Потрібен DecisionDigest.",
|
||||
"common.provcache.decision_digest_verikey_required": "Потрібен DecisionDigest.VeriKey.",
|
||||
"common.provcache.digest_empty": "Дайджест не може бути порожнім.",
|
||||
"common.provcache.time_window_required": "Часове вікно не може бути нульовим або порожнім.",
|
||||
"common.provcache.vex_hash_required": "Хеш набору хешів VEX не може бути нульовим або порожнім.",
|
||||
"common.provcache.policy_hash_required": "Хеш політики не може бути нульовим або порожнім.",
|
||||
"common.provcache.source_hash_required": "Вихідний хеш не може бути нульовим або порожнім.",
|
||||
"common.provcache.signer_set_hash_required": "Хеш набору підписувачів не може бути нульовим або порожнім.",
|
||||
"common.evidence.toolchain_required": "ToolChain потрібно встановити перед створенням індексу.",
|
||||
"common.evidence.deserialization_failed": "Не вдалося десеріалізувати індекс доказів.",
|
||||
"common.evidence.verdict_deserialization_failed": "Не вдалося десеріалізувати вердикт.",
|
||||
"common.evidence.inputs_json_required": "JSON не може бути нульовим або порожнім.",
|
||||
"common.evidence.inputs_deserialization_failed": "Не вдалося десеріалізувати закріплені вхідні дані оцінки.",
|
||||
"common.evidence.bundle_alert_id_required": "Необхідний ідентифікатор сповіщення",
|
||||
"common.evidence.bundle_artifact_id_required": "Необхідний ідентифікатор артефакту",
|
||||
"common.evidence.pdf_export_requires_config": "Експорт PDF вимагає додаткового налаштування",
|
||||
"common.evidence.invalid_uri_format": "Недійсний формат URI доказів: {0}. Очікується stella://type/path",
|
||||
"common.evidence.invalid_uri_missing_path": "Недійсний формат URI доказів: {0}. Відсутній шлях.",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver не може вирішити тип доказу: {0}",
|
||||
"common.evidence.schema_resource_not_found": "Ресурс схеми не знайдено: {0}",
|
||||
"common.evidence.schema_resource_not_available": "Ресурс схеми недоступний: {0}",
|
||||
"common.evidence.provenance_deserialize_failed": "Не вдалося десеріалізувати походження доказу {0}",
|
||||
"common.evidence.bundle_deserialize_failed": "Не вдалося десеріалізувати групу вироків",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "Не вдалося десеріалізувати дельта-вердикт",
|
||||
"common.canonicalization.value_empty_after_trim": "Значення не має бути порожнім після обрізання.",
|
||||
"common.canonicalization.deserialize_failed": "Не вдалося десеріалізувати {0}",
|
||||
"common.canonicalization.datetime_value_null": "Значення DateTimeOffset має нульове значення.",
|
||||
"common.canonicalization.dict_key_null": "Ключ словника не може бути нульовим.",
|
||||
"common.audit.replay_token_value_empty": "Значення маркера не може бути порожнім.",
|
||||
"common.audit.replay_token_empty": "Маркер не може бути порожнім.",
|
||||
"common.audit.replay_token_format_invalid": "Недійсний формат маркера повтору: {0}",
|
||||
"common.audit.replay_token_version_invalid": "Недійсна версія маркера повтору: {0}",
|
||||
"common.audit.replay_token_expiration_invalid": "Недійсна позначка часу закінчення терміну дії в маркері повтору: {0}",
|
||||
"common.audit.replay_token_duplicate_context_key": "AdditionalContext містить повторюваний ключ після нормалізації: '{0}'.",
|
||||
"common.artifact.uri_format_invalid": "Недійсний формат URI: {0}",
|
||||
"common.artifact.uri_scheme_not_supported": "Схема URI не підтримується: {0}",
|
||||
"common.artifact.file_not_accessible": "Файл недоступний: {0}",
|
||||
"common.artifact.file_too_large": "Файл завеликий: розмір {0} байтів перевищує 100 МБ",
|
||||
"common.artifact.uri_not_accessible": "URI недоступний: {0} повернув {1}",
|
||||
"common.artifact.content_too_large": "Вміст завеликий: {0} байтів перевищує ліміт у 100 МБ",
|
||||
"common.artifact.fetch_failed": "Не вдалося отримати з {0}: {1}",
|
||||
"common.delta_verdict.artifact_ref_required": "Потрібне посилання на артефакт.",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "Непідтримуваний алгоритм підпису: {0}",
|
||||
"common.delta_verdict.hmac_secret_required": "Підписання HMAC потребує секрету base64.",
|
||||
"common.eventing.no_entry_assembly": "Вступна збірка не знайдена",
|
||||
"auth.persistence.deserialize_inputs_failed": "Не вдалося десеріалізувати вхідні дані",
|
||||
"auth.persistence.deserialize_result_failed": "Не вдалося десеріалізувати результат",
|
||||
"auth.persistence.revocation_sequence_mismatch": "Невідповідність послідовності експорту скасування. Очікуваний {0}, поточний {1}.",
|
||||
"auth.persistence.revocation_update_rejected": "Оновлення стану експорту скасування відхилено. Очікувана послідовність {0}."
|
||||
}
|
||||
|
||||
@@ -1,411 +1,367 @@
|
||||
{
|
||||
"_meta": { "locale": "zh-CN", "namespace": "common", "version": "1.1" },
|
||||
|
||||
"common.error.generic": "Something went wrong.",
|
||||
"common.error.not_found": "The requested resource was not found.",
|
||||
"common.error.entity_not_found": "{0} '{1}' not found.",
|
||||
"common.error.unauthorized": "You do not have permission to perform this action.",
|
||||
"common.error.forbidden": "Access denied.",
|
||||
"common.error.bad_request": "The request is invalid.",
|
||||
"common.error.conflict": "A conflict occurred. The resource may have been modified.",
|
||||
"common.error.timeout": "Request timed out after {0} seconds.",
|
||||
"common.error.server_error": "An internal server error occurred. Please try again later.",
|
||||
"common.error.service_unavailable": "The service is temporarily unavailable.",
|
||||
"common.error.too_many_requests": "Too many requests. Please wait and try again.",
|
||||
"common.error.network": "Network error. Check your connection.",
|
||||
"common.error.body_required": "Request body is required.",
|
||||
"common.error.deserialization_failed": "Failed to deserialize {0}.",
|
||||
"common.error.not_supported": "{0} is not supported.",
|
||||
"common.error.already_exists": "{0} '{1}' already exists.",
|
||||
"common.error.revoked": "{0} '{1}' has been revoked and cannot be used.",
|
||||
"common.error.state_invalid": "{0} '{1}' is not in the expected state. Current state: {2}",
|
||||
|
||||
"common.validation.required": "{0} is required.",
|
||||
"common.validation.invalid": "{0} is invalid.",
|
||||
"common.validation.too_long": "{0} exceeds the maximum length of {1} characters.",
|
||||
"common.validation.too_short": "{0} must be at least {1} characters.",
|
||||
"common.validation.out_of_range": "{0} must be between {1} and {2}.",
|
||||
"common.validation.invalid_format": "{0} has an invalid format.",
|
||||
"common.validation.duplicate": "{0} already exists.",
|
||||
"common.validation.empty_not_allowed": "{0} must not be empty.",
|
||||
"common.validation.empty_after_trim": "{0} must not be empty after trimming.",
|
||||
"common.validation.greater_than_zero": "{0} must be greater than zero.",
|
||||
"common.validation.non_negative": "{0} must be non-negative.",
|
||||
"common.validation.at_least_one": "At least one {0} must be configured.",
|
||||
"common.validation.at_least_n": "{0} must have at least {1} entries.",
|
||||
"common.validation.null_or_empty": "{0} cannot be null or empty.",
|
||||
"common.validation.absolute_uri": "{0} must be an absolute URI.",
|
||||
"common.validation.invalid_regex": "{0} '{1}' is not a valid regular expression.",
|
||||
"common.validation.unknown_value": "{0} '{1}' is not recognized. Allowed values: {2}",
|
||||
"common.validation.max_exceeded": "{0} must be {1} characters or fewer.",
|
||||
|
||||
"common.actions.save": "Save",
|
||||
"common.actions.cancel": "Cancel",
|
||||
"common.actions.delete": "Delete",
|
||||
"common.actions.confirm": "Confirm",
|
||||
"common.actions.submit": "Submit",
|
||||
"common.actions.close": "Close",
|
||||
"common.actions.retry": "Retry",
|
||||
"common.actions.expand": "Expand",
|
||||
"common.actions.collapse": "Collapse",
|
||||
"common.actions.show_more": "Show more",
|
||||
"common.actions.show_less": "Show less",
|
||||
|
||||
"common.status.healthy": "Healthy",
|
||||
"common.status.degraded": "Degraded",
|
||||
"common.status.unavailable": "Unavailable",
|
||||
"common.status.unknown": "Unknown",
|
||||
"common.status.active": "Active",
|
||||
"common.status.inactive": "Inactive",
|
||||
"common.status.pending": "Pending",
|
||||
"common.status.running": "Running",
|
||||
"common.status.completed": "Completed",
|
||||
"common.status.failed": "Failed",
|
||||
"common.status.canceled": "Canceled",
|
||||
"common.status.blocked": "Blocked",
|
||||
|
||||
"common.severity.critical": "Critical",
|
||||
"common.severity.high": "High",
|
||||
"common.severity.medium": "Medium",
|
||||
"common.severity.low": "Low",
|
||||
"common.severity.info": "Info",
|
||||
"common.severity.none": "None",
|
||||
|
||||
"common.time.seconds_ago": "{0} seconds ago",
|
||||
"common.time.minutes_ago": "{0} minutes ago",
|
||||
"common.time.hours_ago": "{0} hours ago",
|
||||
"common.time.days_ago": "{0} days ago",
|
||||
"common.time.just_now": "Just now",
|
||||
|
||||
"common.ui.loading": "Loading...",
|
||||
"common.ui.saving": "Saving...",
|
||||
"common.ui.deleting": "Deleting...",
|
||||
"common.ui.submitting": "Submitting...",
|
||||
"common.ui.no_results": "No results found.",
|
||||
"common.ui.offline": "You are offline.",
|
||||
"common.ui.reconnecting": "Reconnecting...",
|
||||
"common.ui.back_online": "Back online.",
|
||||
|
||||
"auth.dpop.proof_lifetime_invalid": "DPoP proof lifetime must be greater than zero.",
|
||||
"auth.dpop.clock_skew_invalid": "DPoP allowed clock skew must be between 0 seconds and 5 minutes.",
|
||||
"auth.dpop.replay_window_invalid": "DPoP replay window must be greater than or equal to zero.",
|
||||
"auth.dpop.algorithm_required": "At least one allowed DPoP algorithm must be configured.",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "Allowed DPoP algorithms cannot be empty after normalization.",
|
||||
"auth.dpop.options_required": "DPoP options must be provided.",
|
||||
"auth.dpop.nonce_ttl_invalid": "Nonce TTL must be greater than zero.",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "Max issuance per minute must be at least 1.",
|
||||
"auth.dpop.nonce_store_required": "Dpop.Nonce.Store must be specified.",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store must be either 'memory' or 'redis'.",
|
||||
"auth.dpop.nonce_redis_required": "Dpop.Nonce.RedisConnectionString must be provided when using the 'redis' store.",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences must include at least one audience.",
|
||||
"auth.dpop.token_three_segments": "Token must contain three segments.",
|
||||
"auth.dpop.segment_out_of_range": "Segment index out of range.",
|
||||
"auth.dpop.header_decode_failed": "Unable to decode header.",
|
||||
"auth.dpop.header_missing_typ": "DPoP proof missing typ=dpop+jwt header.",
|
||||
"auth.dpop.header_missing_alg": "DPoP proof missing alg header.",
|
||||
"auth.dpop.header_unsupported_alg": "Unsupported DPoP algorithm.",
|
||||
"auth.dpop.header_missing_jwk": "DPoP proof missing jwk header.",
|
||||
"auth.dpop.header_invalid_jwk": "DPoP proof jwk header is invalid.",
|
||||
"auth.dpop.payload_decode_failed": "Unable to decode payload.",
|
||||
"auth.dpop.payload_missing_htm": "DPoP proof missing htm claim.",
|
||||
"auth.dpop.payload_htm_mismatch": "DPoP htm does not match request method.",
|
||||
"auth.dpop.payload_missing_htu": "DPoP proof missing htu claim.",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu does not match request URI.",
|
||||
"auth.dpop.payload_missing_iat": "DPoP proof missing iat claim.",
|
||||
"auth.dpop.payload_missing_jti": "DPoP proof missing jti claim.",
|
||||
"auth.dpop.payload_iat_invalid": "DPoP proof iat claim is not a valid number.",
|
||||
"auth.dpop.nonce_missing": "DPoP proof missing nonce claim.",
|
||||
"auth.dpop.nonce_mismatch": "DPoP nonce mismatch.",
|
||||
"auth.dpop.proof_future": "DPoP proof issued in the future.",
|
||||
"auth.dpop.proof_expired": "DPoP proof expired.",
|
||||
"auth.dpop.signature_failed": "DPoP proof signature validation failed.",
|
||||
"auth.dpop.replay_detected": "DPoP proof already used.",
|
||||
|
||||
"config.authority.schema_version_required": "Authority configuration requires a positive schemaVersion.",
|
||||
"config.authority.issuer_required": "Authority configuration requires an issuer URL.",
|
||||
"config.authority.issuer_absolute": "Authority issuer must be an absolute URI.",
|
||||
"config.authority.issuer_https": "Authority issuer must use HTTPS unless running on a loopback interface.",
|
||||
"config.authority.duplicate_tenant": "Authority configuration contains duplicate tenant identifier '{0}'.",
|
||||
"config.authority.property_greater_than_zero": "Authority configuration requires {0} to be greater than zero.",
|
||||
"config.authority.property_max": "Authority configuration requires {0} to be less than or equal to {1}.",
|
||||
"config.authority.remote_inference_required": "Authority configuration requires at least one advisory AI remote inference profile when remote inference is enabled.",
|
||||
|
||||
"config.tenant.id_required": "Each tenant requires an id (slug).",
|
||||
"config.tenant.id_format": "Tenant id '{0}' must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.project_format": "Tenant '{0}' defines project '{1}' which must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.role_missing_config": "Tenant '{0}' defines role '{1}' without configuration.",
|
||||
"config.tenant.role_scope_required": "Tenant '{0}' role '{1}' must specify at least one scope.",
|
||||
"config.tenant.role_unknown_scope": "Tenant '{0}' role '{1}' references unknown scope '{2}'.",
|
||||
"config.tenant.role_unsupported_attribute": "Tenant '{0}' role '{1}' defines unsupported attribute '{2}'. Allowed attributes: env, owner, business_tier.",
|
||||
"config.tenant.delegation_max_tokens": "Tenant '{0}' delegation maxActiveTokens must be greater than zero when specified.",
|
||||
"config.tenant.remote_inference_disabled": "Tenant remote inference consent cannot be granted when remote inference is disabled.",
|
||||
"config.tenant.remote_inference_consent_version_length": "Tenant remote inference consentVersion must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consented_by_length": "Tenant remote inference consentedBy must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consent_version_required": "Tenant remote inference consent requires consentVersion when consentGranted is true.",
|
||||
"config.tenant.remote_inference_consented_at_required": "Tenant remote inference consent requires consentedAt when consentGranted is true.",
|
||||
|
||||
"config.service_account.id_required": "Delegation service account seeds require an accountId.",
|
||||
"config.service_account.id_format": "Service account id '{0}' must contain lowercase letters, digits, colon, underscore, or hyphen.",
|
||||
"config.service_account.tenant_required": "Service account '{0}' requires a tenant assignment.",
|
||||
"config.service_account.tenant_unknown": "Service account '{0}' references unknown tenant '{1}'.",
|
||||
"config.service_account.scope_required": "Service account '{0}' must specify at least one allowed scope.",
|
||||
"config.service_account.unsupported_attribute": "Service account '{0}' defines unsupported attribute '{1}'. Allowed attributes: env, owner, business_tier.",
|
||||
|
||||
"config.plugin.assembly_required": "Authority plugin '{0}' must define either assemblyName or assemblyPath.",
|
||||
"config.plugin.config_file_required": "Authority plugin '{0}' must define a configFile.",
|
||||
"config.plugin.config_file_missing": "Authority plugin '{0}' specifies configFile '{1}' which does not exist.",
|
||||
"config.plugin.unknown_capability": "Authority plugin '{0}' declares unknown capability '{1}'. Allowed values: password, mfa, clientProvisioning, bootstrap.",
|
||||
"config.plugin.descriptor_null": "Authority plugin descriptor '{0}' is null.",
|
||||
|
||||
"config.delegation.duplicate_account": "Delegation configuration contains duplicate service account id '{0}'.",
|
||||
"config.delegation.quota_max_tokens": "Authority delegation configuration requires {0}.MaxActiveTokens to be greater than zero.",
|
||||
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace must be non-negative.",
|
||||
"config.mtls.audiences_required": "Mtls.EnforceForAudiences must include at least one audience when enabled.",
|
||||
"config.mtls.ca_empty": "Mtls.AllowedCertificateAuthorities entries must not be empty.",
|
||||
"config.mtls.san_types_required": "Mtls.AllowedSanTypes must include at least one entry when enabled.",
|
||||
"config.mtls.subject_patterns_empty": "Mtls.AllowedSubjectPatterns entries must not be empty.",
|
||||
"config.mtls.subject_pattern_invalid": "Mtls.AllowedSubjectPatterns entry '{0}' is not a valid regular expression.",
|
||||
|
||||
"config.signing.key_id_required": "Authority signing configuration requires signing.activeKeyId.",
|
||||
"config.signing.key_path_required": "Authority signing configuration requires signing.keyPath.",
|
||||
"config.signing.jwks_cache_range": "Authority signing configuration requires signing.jwksCacheLifetime to be between 00:00:01 and 01:00:00.",
|
||||
"config.signing.additional_key_id_required": "Additional signing keys require a keyId.",
|
||||
"config.signing.additional_key_path_required": "Signing key '{0}' requires a path.",
|
||||
|
||||
"config.bootstrap.api_key_required": "Authority bootstrap configuration requires an API key when enabled.",
|
||||
"config.bootstrap.idp_required": "Authority bootstrap configuration requires a default identity provider name when enabled.",
|
||||
|
||||
"config.rate_limit.permit_limit": "Authority rate limiting '{0}' requires permitLimit to be greater than zero.",
|
||||
"config.rate_limit.queue_limit": "Authority rate limiting '{0}' queueLimit cannot be negative.",
|
||||
"config.rate_limit.window": "Authority rate limiting '{0}' window must be greater than zero and no more than one hour.",
|
||||
|
||||
"config.storage.connection_required": "Authority storage requires a connection string.",
|
||||
"config.storage.timeout_invalid": "Authority storage command timeout must be greater than zero.",
|
||||
|
||||
"config.ack_token.payload_type_required": "notifications.ackTokens.payloadType must be specified when ack tokens are enabled.",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime must be greater than zero.",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.ack_token.key_id_required": "notifications.ackTokens.activeKeyId must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.key_path_required": "notifications.ackTokens.keyPath must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime must be between 00:00:01 and 01:00:00.",
|
||||
|
||||
"config.exceptions.null_template": "Authority exception routing template entries must not be null.",
|
||||
"config.exceptions.duplicate_template": "Authority exception routing template '{0}' is configured more than once.",
|
||||
"config.exceptions.template_id_required": "Authority exception routing templates require an id.",
|
||||
"config.exceptions.template_route_required": "Authority exception routing template '{0}' requires authorityRouteId.",
|
||||
|
||||
"config.sealed_mode.evidence_path_required": "AirGap.SealedMode.EvidencePath must be provided when enforcement is enabled.",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge must be between 00:00:01 and 7.00:00:00.",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime must be greater than zero and less than or equal to AirGap.SealedMode.MaxEvidenceAge.",
|
||||
|
||||
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts must include at least one host when enabled.",
|
||||
"config.escalation.scope_required": "notifications.escalation.scope must be specified.",
|
||||
|
||||
"config.anti_forgery.audience_required": "vulnerabilityExplorer.workflow.antiForgery.audience must be specified when anti-forgery tokens are enabled.",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime must be greater than zero.",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries must be non-negative.",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength must be greater than zero.",
|
||||
|
||||
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime must be greater than zero when attachment tokens are enabled.",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.attachment.payload_type_required": "vulnerabilityExplorer.attachments.payloadType must be specified when attachment tokens are enabled.",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries must be non-negative.",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength must be greater than zero.",
|
||||
|
||||
"config.api_lifecycle.sunset_after_deprecation": "Legacy auth sunset date must be after the deprecation date.",
|
||||
"config.api_lifecycle.docs_url_format": "Legacy auth documentation URL must be an absolute HTTP or HTTPS URL.",
|
||||
|
||||
"crypto.provider.algorithm_not_supported": "Signing algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.hash_not_supported": "Hash algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.verify_not_supported": "Verification algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.key_not_registered": "Signing key '{0}' is not registered with provider '{1}'.",
|
||||
"crypto.provider.key_algorithm_mismatch": "Signing key '{0}' is registered for algorithm '{1}', not '{2}'.",
|
||||
"crypto.provider.ec_keys_only": "Provider '{0}' only accepts EC signing keys.",
|
||||
"crypto.provider.no_password_hashing": "Provider '{0}' does not expose password hashing capabilities.",
|
||||
"crypto.provider.no_content_hashing": "Provider '{0}' does not support content hashing.",
|
||||
"crypto.provider.no_ephemeral_verification": "Provider '{0}' does not support ephemeral verification.",
|
||||
"crypto.provider.not_signing_capable": "Signing algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.es256_only": "Only ES256 signing keys are currently supported by provider '{0}'.",
|
||||
"crypto.provider.p256_required": "ES256 signing keys must use the NIST P-256 curve.",
|
||||
"crypto.provider.curve_mismatch": "Signing key curve mismatch. Expected curve '{0}' for algorithm '{1}'.",
|
||||
|
||||
"crypto.registry.empty": "At least one crypto provider must be registered.",
|
||||
"crypto.registry.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.registry.signing_not_supported": "Signing algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.hash_not_supported": "Hash algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.verify_not_supported": "Verification algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.active_profile_required": "Active profile is required.",
|
||||
"crypto.registry.profile_not_found": "Profile ID '{0}' is not found in the registry.",
|
||||
"crypto.registry.profile_id_required": "Profile ID cannot be null or empty.",
|
||||
|
||||
"crypto.key.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.key.private_scalar_required": "Private key parameters must include the scalar component.",
|
||||
"crypto.key.verification_only": "This constructor is only for verification-only keys. Set verificationOnly to true.",
|
||||
"crypto.key.public_xy_required": "Public key parameters must include X and Y coordinates.",
|
||||
"crypto.key.private_material_required": "Private key material must be provided.",
|
||||
|
||||
"crypto.hash.algorithm_unsupported": "Unsupported hash algorithm '{0}'.",
|
||||
"crypto.hash.purpose_required": "Purpose cannot be null or empty.",
|
||||
"crypto.hmac.algorithm_unknown": "Unknown HMAC algorithm '{0}'.",
|
||||
"crypto.hmac.algorithm_unsupported": "Unsupported HMAC algorithm '{0}'.",
|
||||
|
||||
"crypto.ecdsa.algorithm_unsupported": "Unsupported ECDSA signing algorithm '{0}'.",
|
||||
"crypto.ecdsa.curve_unsupported": "Unsupported ECDSA curve mapping for algorithm '{0}'.",
|
||||
|
||||
"crypto.digest.required": "Digest is required.",
|
||||
"crypto.digest.prefix_required": "{0} must start with '{1}'.",
|
||||
"crypto.digest.algorithm_unsupported": "Unsupported digest algorithm in '{0}'. Only sha256 is supported.",
|
||||
"crypto.digest.hex_length": "{0} must contain {1} hexadecimal characters.",
|
||||
|
||||
"crypto.password.memory_cost_invalid": "Password hashing memory cost must be greater than zero.",
|
||||
"crypto.password.iterations_invalid": "Password hashing iteration count must be greater than zero.",
|
||||
"crypto.password.parallelism_invalid": "Password hashing parallelism must be greater than zero.",
|
||||
"crypto.password.algorithm_mismatch": "{0} only supports the {1} algorithm.",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 requires a positive iteration count.",
|
||||
|
||||
"crypto.gost.not_der": "Signature is not DER encoded.",
|
||||
"crypto.gost.invalid_der": "Invalid DER structure for GOST signature.",
|
||||
"crypto.gost.raw_length": "Raw GOST signature must be {0} bytes.",
|
||||
"crypto.gost.neither_format": "Signature payload is neither DER nor raw GOST format.",
|
||||
"crypto.gost.coordinate_overflow": "Coordinate exceeds expected length.",
|
||||
|
||||
"crypto.profile.unknown_purpose": "Unknown hash purpose '{0}' in profile '{1}'.",
|
||||
"crypto.compliance.at_least_one_signing": "At least one signing algorithm must be supplied.",
|
||||
"crypto.compliance.at_least_one_hash": "At least one hash algorithm must be supplied.",
|
||||
|
||||
"crypto.ed25519.private_key_size": "Ed25519 private key must be 32 or 64 bytes.",
|
||||
"crypto.ed25519.public_key_size": "Ed25519 public key must be 32 bytes.",
|
||||
"crypto.ed25519.no_hashing": "BouncyCastle Ed25519 provider does not expose hashing capabilities.",
|
||||
"crypto.ed25519.raw_key_required": "Provider '{0}' requires raw Ed25519 private key material.",
|
||||
|
||||
"crypto.sm.no_password_hashing": "SM provider does not expose password hashing.",
|
||||
"crypto.sm.raw_key_required": "SM2 provider requires raw private key bytes (PKCS#8 DER).",
|
||||
"crypto.sm.unsupported_format": "Unsupported SM2 key format. Expect PEM or PKCS#8 DER.",
|
||||
"crypto.sm.disabled": "Provider '{0}' is disabled. Set {1}=1 (or disable RequireEnvironmentGate) to enable software SM2/SM3.",
|
||||
|
||||
"crypto.di.registry_empty": "Crypto provider registry cannot be empty. Configure at least one provider for RU deployments.",
|
||||
"crypto.di.ru_openssl_required": "Linux RU baseline requires provider 'ru.openssl.gost' (set STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 to override explicitly).",
|
||||
"crypto.di.ru_provider_required": "RU Linux baseline is misconfigured: both ru.openssl.gost and ru.pkcs11 are disabled via environment. Enable at least one provider.",
|
||||
"crypto.di.no_plugins_loaded": "No crypto providers were loaded. Check plugin configuration and manifest.",
|
||||
|
||||
"crypto.kms.rotation_via_policy": "{0} rotation must be orchestrated via {1} policies or schedules.",
|
||||
"crypto.kms.revocation_via_policy": "{0} revocation must be managed through {1} APIs or console.",
|
||||
"crypto.kms.public_key_missing_x": "Public key missing X coordinate.",
|
||||
"crypto.kms.public_key_missing_y": "Public key missing Y coordinate.",
|
||||
"crypto.kms.hash_failed": "Failed to hash payload with SHA-256.",
|
||||
"crypto.kms.key_not_found": "Key '{0}' does not exist.",
|
||||
"crypto.kms.key_revoked": "Key '{0}' has been revoked and cannot be rotated.",
|
||||
"crypto.kms.key_revoked_signing": "Key '{0}' is revoked and cannot be used for signing.",
|
||||
"crypto.kms.key_version_not_found": "Key version '{0}' does not exist for key '{1}'.",
|
||||
"crypto.kms.key_no_active_version": "Key '{0}' does not have an active version.",
|
||||
"crypto.kms.key_version_inactive": "Key version '{0}' is not active. Current state: {1}",
|
||||
"crypto.kms.key_no_public_material": "Key '{0}' version '{1}' does not have public key material.",
|
||||
"crypto.kms.algorithm_unsupported": "Algorithm '{0}' is not supported by the file KMS driver.",
|
||||
"crypto.kms.curve_unsupported": "Curve '{0}' is not supported.",
|
||||
"crypto.kms.metadata_failed": "Failed to create or load key metadata.",
|
||||
"crypto.kms.algorithm_mismatch": "Algorithm mismatch. Expected '{0}', received '{1}'.",
|
||||
"crypto.kms.version_exists": "Key version '{0}' already exists for key '{1}'.",
|
||||
"crypto.kms.material_not_found": "Key material for version '{0}' was not found.",
|
||||
"crypto.kms.envelope_deserialize_failed": "Key envelope could not be deserialized.",
|
||||
"crypto.kms.payload_deserialize_failed": "Key payload could not be deserialized.",
|
||||
"crypto.kms.pem_empty": "Public key PEM cannot be empty.",
|
||||
"crypto.kms.no_primary_version": "Crypto key '{0}' does not have an active primary version.",
|
||||
"crypto.kms.es256_only": "Provider '{0}' only supports ES256 signing keys.",
|
||||
"crypto.kms.version_metadata_required": "KMS signing keys must include metadata entry 'kms.version'.",
|
||||
"crypto.kms.missing_public_key": "KMS signing key is missing public key material.",
|
||||
|
||||
"crypto.fido2.curve_unsupported": "Unsupported FIDO2 curve OID '{0}'.",
|
||||
"crypto.fido2.rotation_required": "FIDO2 credential rotation requires new enrolment.",
|
||||
"crypto.fido2.revocation_relying_party": "FIDO2 credential revocation must be managed in the relying party.",
|
||||
"crypto.fido2.missing_x": "FIDO2 public key missing X coordinate.",
|
||||
"crypto.fido2.missing_y": "FIDO2 public key missing Y coordinate.",
|
||||
"crypto.fido2.authenticator_required": "IFido2Authenticator must be registered to use FIDO2 KMS.",
|
||||
|
||||
"crypto.pkcs11.rotation_hsm": "PKCS#11 rotation requires HSM administrative tooling.",
|
||||
"crypto.pkcs11.revocation_hsm": "PKCS#11 revocation must be handled by HSM policies.",
|
||||
"crypto.pkcs11.slot_not_found": "Could not resolve PKCS#11 slot.",
|
||||
"crypto.pkcs11.private_key_not_found": "PKCS#11 private key not found.",
|
||||
"crypto.pkcs11.public_key_not_found": "PKCS#11 public key not found.",
|
||||
"crypto.pkcs11.missing_ec_point": "Public key missing EC point.",
|
||||
"crypto.pkcs11.missing_ec_params": "Public key missing EC parameters.",
|
||||
"crypto.pkcs11.unsupported_point_format": "Unsupported EC point format.",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "Unsupported EC curve OID '{0}'.",
|
||||
"crypto.pkcs11.curve_unsupported": "Unsupported EC curve '{0}'.",
|
||||
|
||||
"common.provcache.sbom_hash_required": "SBOM hash cannot be null or empty.",
|
||||
"common.provcache.fetch_url_absolute": "Lazy fetch base URL must be absolute.",
|
||||
"common.provcache.fetch_url_no_userinfo": "Lazy fetch base URL must not include user info.",
|
||||
"common.provcache.fetch_url_host_required": "Lazy fetch base URL must include a host.",
|
||||
"common.provcache.fetch_url_scheme_invalid": "Lazy fetch base URL scheme '{0}' is not allowed.",
|
||||
"common.provcache.fetch_url_host_invalid": "Lazy fetch base URL host '{0}' is not allowlisted.",
|
||||
"common.provcache.no_chunks_provided": "No chunks provided.",
|
||||
"common.provcache.bundle_deserialize_failed": "Failed to deserialize bundle.",
|
||||
"common.provcache.signer_not_configured": "Signer is not configured.",
|
||||
"common.provcache.signing_requested_no_signer": "Signing requested but no signer is configured.",
|
||||
"common.provcache.cache_entry_not_found": "Cache entry not found for VeriKey: {0}",
|
||||
"common.provcache.chunk_manifest_not_found": "Chunk manifest not found for proof root: {0}",
|
||||
"common.provcache.http_timeout_invalid": "Lazy fetch HTTP timeout must be a positive, non-infinite duration.",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher requires a BaseAddress on the HTTP client.",
|
||||
"common.provcache.merkle_root_mismatch": "Merkle root mismatch. Expected: {0}, Computed: {1}",
|
||||
"common.provcache.chunk_verification_failed": "Chunk {0} verification failed. Expected hash: {1}",
|
||||
"common.provcache.artifact_reference_required": "Artifact reference is required.",
|
||||
"common.provcache.artifact_digest_required": "Artifact digest is required.",
|
||||
"common.provcache.decision_digest_required": "DecisionDigest is required.",
|
||||
"common.provcache.decision_digest_verikey_required": "DecisionDigest.VeriKey is required.",
|
||||
"common.provcache.digest_empty": "Digest cannot be empty.",
|
||||
"common.provcache.time_window_required": "Time window cannot be null or empty.",
|
||||
"common.provcache.vex_hash_required": "VEX hash set hash cannot be null or empty.",
|
||||
"common.provcache.policy_hash_required": "Policy hash cannot be null or empty.",
|
||||
"common.provcache.source_hash_required": "Source hash cannot be null or empty.",
|
||||
"common.provcache.signer_set_hash_required": "Signer set hash cannot be null or empty.",
|
||||
|
||||
"common.evidence.toolchain_required": "ToolChain must be set before building index.",
|
||||
"common.evidence.deserialization_failed": "Failed to deserialize evidence index.",
|
||||
"common.evidence.verdict_deserialization_failed": "Failed to deserialize verdict.",
|
||||
"common.evidence.inputs_json_required": "JSON cannot be null or empty.",
|
||||
"common.evidence.inputs_deserialization_failed": "Failed to deserialize pinned scoring inputs.",
|
||||
"common.evidence.bundle_alert_id_required": "AlertId is required",
|
||||
"common.evidence.bundle_artifact_id_required": "ArtifactId is required",
|
||||
"common.evidence.pdf_export_requires_config": "PDF export requires additional configuration",
|
||||
"common.evidence.invalid_uri_format": "Invalid evidence URI format: {0}. Expected stella://type/path",
|
||||
"common.evidence.invalid_uri_missing_path": "Invalid evidence URI format: {0}. Missing path.",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver cannot resolve evidence type: {0}",
|
||||
"common.evidence.schema_resource_not_found": "Schema resource not found: {0}",
|
||||
"common.evidence.schema_resource_not_available": "Schema resource not available: {0}",
|
||||
"common.evidence.provenance_deserialize_failed": "Failed to deserialize provenance for evidence {0}",
|
||||
"common.evidence.bundle_deserialize_failed": "Failed to deserialize verdict bundle",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "Failed to deserialize delta verdict",
|
||||
|
||||
"common.canonicalization.value_empty_after_trim": "Value must not be empty after trimming.",
|
||||
"common.canonicalization.deserialize_failed": "Failed to deserialize {0}",
|
||||
"common.canonicalization.datetime_value_null": "DateTimeOffset value is null.",
|
||||
"common.canonicalization.dict_key_null": "Dictionary key cannot be null.",
|
||||
|
||||
"common.audit.replay_token_value_empty": "Token value cannot be empty.",
|
||||
"common.audit.replay_token_empty": "Token cannot be empty.",
|
||||
"common.audit.replay_token_format_invalid": "Invalid replay token format: {0}",
|
||||
"common.audit.replay_token_version_invalid": "Invalid replay token version: {0}",
|
||||
"common.audit.replay_token_expiration_invalid": "Invalid expiration timestamp in replay token: {0}",
|
||||
"common.audit.replay_token_duplicate_context_key": "AdditionalContext contains duplicate key after normalization: '{0}'.",
|
||||
|
||||
"common.artifact.uri_format_invalid": "Invalid URI format: {0}",
|
||||
"common.artifact.uri_scheme_not_supported": "URI scheme not supported: {0}",
|
||||
"common.artifact.file_not_accessible": "File not accessible: {0}",
|
||||
"common.artifact.file_too_large": "File too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.uri_not_accessible": "URI not accessible: {0} returned {1}",
|
||||
"common.artifact.content_too_large": "Content too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.fetch_failed": "Failed to fetch from {0}: {1}",
|
||||
|
||||
"common.delta_verdict.artifact_ref_required": "Artifact reference is required.",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "Unsupported signing algorithm: {0}",
|
||||
"common.delta_verdict.hmac_secret_required": "HMAC signing requires a base64 secret.",
|
||||
|
||||
"common.eventing.no_entry_assembly": "No entry assembly found",
|
||||
|
||||
"auth.persistence.deserialize_inputs_failed": "Failed to deserialize inputs",
|
||||
"auth.persistence.deserialize_result_failed": "Failed to deserialize result",
|
||||
"auth.persistence.revocation_sequence_mismatch": "Revocation export sequence mismatch. Expected {0}, current {1}.",
|
||||
"auth.persistence.revocation_update_rejected": "Revocation export state update rejected. Expected sequence {0}."
|
||||
"_meta": {
|
||||
"locale": "zh-CN",
|
||||
"namespace": "common",
|
||||
"version": "1.1"
|
||||
},
|
||||
"common.error.generic": "出了点问题。",
|
||||
"common.error.not_found": "未找到请求的资源。",
|
||||
"common.error.entity_not_found": "{0} '{1}' 未找到。",
|
||||
"common.error.unauthorized": "您没有执行此操作的权限。",
|
||||
"common.error.forbidden": "拒绝访问。",
|
||||
"common.error.bad_request": "请求无效。",
|
||||
"common.error.conflict": "发生了冲突。资源可能已被修改。",
|
||||
"common.error.timeout": "{0} 秒后请求超时。",
|
||||
"common.error.server_error": "发生内部服务器错误。请稍后重试。",
|
||||
"common.error.service_unavailable": "该服务暂时不可用。",
|
||||
"common.error.too_many_requests": "请求太多。请等待并重试。",
|
||||
"common.error.network": "网络错误。检查您的连接。",
|
||||
"common.error.body_required": "请求正文是必需的。",
|
||||
"common.error.deserialization_failed": "无法反序列化 {0}。",
|
||||
"common.error.not_supported": "不支持 {0}。",
|
||||
"common.error.already_exists": "{0} '{1}' 已存在。",
|
||||
"common.error.revoked": "{0} '{1}' 已被撤销,无法使用。",
|
||||
"common.error.state_invalid": "{0} '{1}' 未处于预期状态。当前状态:{2}",
|
||||
"common.validation.required": "{0} 为必填项。",
|
||||
"common.validation.invalid": "{0} 无效。",
|
||||
"common.validation.too_long": "{0} 超出了 {1} 字符的最大长度。",
|
||||
"common.validation.too_short": "{0} 必须至少为 {1} 个字符。",
|
||||
"common.validation.out_of_range": "{0} 必须介于 {1} 和 {2} 之间。",
|
||||
"common.validation.invalid_format": "{0} 的格式无效。",
|
||||
"common.validation.duplicate": "{0} 已存在。",
|
||||
"common.validation.empty_not_allowed": "{0} 不得为空。",
|
||||
"common.validation.empty_after_trim": "修剪后{0}不能为空。",
|
||||
"common.validation.greater_than_zero": "{0} 必须大于零。",
|
||||
"common.validation.non_negative": "{0} 必须为非负数。",
|
||||
"common.validation.at_least_one": "至少必须配置一个{0}。",
|
||||
"common.validation.at_least_n": "{0} 必须至少有 {1} 条目。",
|
||||
"common.validation.null_or_empty": "{0} 不能为 null 或为空。",
|
||||
"common.validation.absolute_uri": "{0} 必须是绝对 URI。",
|
||||
"common.validation.invalid_regex": "{0} '{1}' 不是有效的正则表达式。",
|
||||
"common.validation.unknown_value": "{0} '{1}' 无法识别。允许值:{2}",
|
||||
"common.validation.max_exceeded": "{0} 必须为 {1} 个字符或更少。",
|
||||
"common.actions.save": "保存",
|
||||
"common.actions.cancel": "取消",
|
||||
"common.actions.delete": "删除",
|
||||
"common.actions.confirm": "确认",
|
||||
"common.actions.submit": "提交",
|
||||
"common.actions.close": "关闭",
|
||||
"common.actions.retry": "重试",
|
||||
"common.actions.expand": "展开",
|
||||
"common.actions.collapse": "收起",
|
||||
"common.actions.show_more": "显示更多",
|
||||
"common.actions.show_less": "显示更少",
|
||||
"common.status.healthy": "健康",
|
||||
"common.status.degraded": "降级",
|
||||
"common.status.unavailable": "不可用",
|
||||
"common.status.unknown": "未知",
|
||||
"common.status.active": "启用",
|
||||
"common.status.inactive": "停用",
|
||||
"common.status.pending": "待处理",
|
||||
"common.status.running": "运行中",
|
||||
"common.status.completed": "已完成",
|
||||
"common.status.failed": "失败",
|
||||
"common.status.canceled": "已取消",
|
||||
"common.status.blocked": "已阻止",
|
||||
"common.severity.critical": "严重",
|
||||
"common.severity.high": "高",
|
||||
"common.severity.medium": "中",
|
||||
"common.severity.low": "低",
|
||||
"common.severity.info": "信息",
|
||||
"common.severity.none": "无",
|
||||
"common.time.seconds_ago": "{0} 秒前",
|
||||
"common.time.minutes_ago": "{0} 分钟前",
|
||||
"common.time.hours_ago": "{0} 小时前",
|
||||
"common.time.days_ago": "{0} 天前",
|
||||
"common.time.just_now": "现在",
|
||||
"common.ui.loading": "加载中...",
|
||||
"common.ui.saving": "正在保存...",
|
||||
"common.ui.deleting": "正在删除...",
|
||||
"common.ui.submitting": "正在提交...",
|
||||
"common.ui.no_results": "没有找到结果。",
|
||||
"common.ui.offline": "您已离线。",
|
||||
"common.ui.reconnecting": "正在重新连接...",
|
||||
"common.ui.back_online": "已恢复在线。",
|
||||
"auth.dpop.proof_lifetime_invalid": "DPoP 证明寿命必须大于零。",
|
||||
"auth.dpop.clock_skew_invalid": "DPoP 允许的时钟偏差必须在 0 秒到 5 分钟之间。",
|
||||
"auth.dpop.replay_window_invalid": "DPoP 重播窗口必须大于或等于零。",
|
||||
"auth.dpop.algorithm_required": "必须至少配置一种允许的 DPoP 算法。",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "允许的 DPoP 算法在归一化后不能为空。",
|
||||
"auth.dpop.options_required": "必须提供 DPoP 选项。",
|
||||
"auth.dpop.nonce_ttl_invalid": "Nonce TTL 必须大于零。",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "每分钟最大发行量必须至少为 1。",
|
||||
"auth.dpop.nonce_store_required": "必须指定 Dpop.Nonce.Store。",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store 必须是 'memory' 或 'redis'。",
|
||||
"auth.dpop.nonce_redis_required": "使用 'redis' 存储时必须提供 Dpop.Nonce.RedisConnectionString。",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences 必须包含至少一名观众。",
|
||||
"auth.dpop.token_three_segments": "令牌必须包含三个段。",
|
||||
"auth.dpop.segment_out_of_range": "段索引超出范围。",
|
||||
"auth.dpop.header_decode_failed": "无法解码标头。",
|
||||
"auth.dpop.header_missing_typ": "DPoP 证明缺少typ=dpop+jwt 标头。",
|
||||
"auth.dpop.header_missing_alg": "DPoP 证明缺少 alg 标头。",
|
||||
"auth.dpop.header_unsupported_alg": "不支持的 DPoP 算法。",
|
||||
"auth.dpop.header_missing_jwk": "DPoP 证明缺少 jwk 标头。",
|
||||
"auth.dpop.header_invalid_jwk": "DPoP 证明 jwk 标头无效。",
|
||||
"auth.dpop.payload_decode_failed": "无法解码有效负载。",
|
||||
"auth.dpop.payload_missing_htm": "DPoP 证明缺少 htm 声明。",
|
||||
"auth.dpop.payload_htm_mismatch": "DPoP htm 与请求方法不匹配。",
|
||||
"auth.dpop.payload_missing_htu": "DPoP 证明缺少 htu 声明。",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu 与请求 URI 不匹配。",
|
||||
"auth.dpop.payload_missing_iat": "DPoP 证明缺少 IAT 声明。",
|
||||
"auth.dpop.payload_missing_jti": "DPoP 证据缺少 jti 声明。",
|
||||
"auth.dpop.payload_iat_invalid": "DPoP 证明 iat 声明不是有效数字。",
|
||||
"auth.dpop.nonce_missing": "DPoP 证明缺少随机数声明。",
|
||||
"auth.dpop.nonce_mismatch": "DPoP 随机数不匹配。",
|
||||
"auth.dpop.proof_future": "未来发布的 DPoP 证明。",
|
||||
"auth.dpop.proof_expired": "DPoP 证明已过期。",
|
||||
"auth.dpop.signature_failed": "DPoP 证明签名验证失败。",
|
||||
"auth.dpop.replay_detected": "DPoP 证明已使用。",
|
||||
"config.authority.schema_version_required": "权限配置需要正的 schemaVersion。",
|
||||
"config.authority.issuer_required": "权限配置需要颁发者 URL。",
|
||||
"config.authority.issuer_absolute": "权限颁发者必须是绝对 URI。",
|
||||
"config.authority.issuer_https": "除非在环回接口上运行,否则授权颁发者必须使用 HTTPS。",
|
||||
"config.authority.duplicate_tenant": "权限配置包含重复的租户标识符“{0}”。",
|
||||
"config.authority.property_greater_than_zero": "权限配置要求 {0} 大于零。",
|
||||
"config.authority.property_max": "权限配置要求{0}小于等于{1}。",
|
||||
"config.authority.remote_inference_required": "启用远程推理时,权限配置需要至少一个咨询性 AI 远程推理配置文件。",
|
||||
"config.tenant.id_required": "每个租户都需要一个 ID(slug)。",
|
||||
"config.tenant.id_format": "租户 ID“{0}”只能包含小写字母、数字和连字符。",
|
||||
"config.tenant.project_format": "租户“{0}”定义的项目“{1}”只能包含小写字母、数字和连字符。",
|
||||
"config.tenant.role_missing_config": "租户“{0}”定义了角色“{1}”,但缺少配置。",
|
||||
"config.tenant.role_scope_required": "租户“{0}”的角色“{1}”必须至少指定一个范围。",
|
||||
"config.tenant.role_unknown_scope": "租户“{0}”的角色“{1}”引用了未知范围“{2}”。",
|
||||
"config.tenant.role_unsupported_attribute": "租户“{0}”的角色“{1}”定义了不受支持的属性“{2}”。允许的属性:env、owner、business_tier。",
|
||||
"config.tenant.delegation_max_tokens": "租户“{0}”的 delegation.maxActiveTokens 在指定时必须大于 0。",
|
||||
"config.tenant.remote_inference_disabled": "在禁用远程推理时,无法授予租户远程推理同意。",
|
||||
"config.tenant.remote_inference_consent_version_length": "租户远程推理的 consentVersion 不能超过 {0} 个字符。",
|
||||
"config.tenant.remote_inference_consented_by_length": "租户远程推理的 consentedBy 不能超过 {0} 个字符。",
|
||||
"config.tenant.remote_inference_consent_version_required": "当 consentGranted=true 时,租户远程推理同意需要 consentVersion。",
|
||||
"config.tenant.remote_inference_consented_at_required": "当 consentGranted=true 时,租户远程推理同意需要 consentedAt。",
|
||||
"config.service_account.id_required": "委派服务帐户种子需要 accountId。",
|
||||
"config.service_account.id_format": "服务帐户 ID '{0}' 必须包含小写字母、数字、冒号、下划线或连字符。",
|
||||
"config.service_account.tenant_required": "服务帐户“{0}”需要分配租户。",
|
||||
"config.service_account.tenant_unknown": "服务帐户“{0}”引用了未知租户“{1}”。",
|
||||
"config.service_account.scope_required": "服务帐户 '{0}' 必须至少指定一个允许的范围。",
|
||||
"config.service_account.unsupported_attribute": "服务帐户 '{0}' 定义了不受支持的属性 '{1}'。允许的属性:env、owner、business_tier。",
|
||||
"config.plugin.assembly_required": "权限插件 '{0}' 必须定义 assemblyName 或 assemblyPath。",
|
||||
"config.plugin.config_file_required": "权限插件'{0}'必须定义一个configFile。",
|
||||
"config.plugin.config_file_missing": "权限插件 '{0}' 指定的 configFile '{1}' 不存在。",
|
||||
"config.plugin.unknown_capability": "权限插件 '{0}' 声明未知能力 '{1}'。允许的值:密码、mfa、clientProvisioning、bootstrap。",
|
||||
"config.plugin.descriptor_null": "权限插件描述符 '{0}' 为空。",
|
||||
"config.delegation.duplicate_account": "委派配置包含重复的服务帐户 ID '{0}'。",
|
||||
"config.delegation.quota_max_tokens": "权限委托配置要求 {0}.MaxActiveTokens 大于零。",
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace 必须为非负数。",
|
||||
"config.mtls.audiences_required": "启用时,Mtls.EnforceForAudiences 必须至少包含一名受众。",
|
||||
"config.mtls.ca_empty": "Mtls.AllowedCertificateAuthorities 条目不得为空。",
|
||||
"config.mtls.san_types_required": "启用时,Mtls.AllowedSanTypes 必须至少包含一项。",
|
||||
"config.mtls.subject_patterns_empty": "Mtls.AllowedSubjectPatterns 条目不得为空。",
|
||||
"config.mtls.subject_pattern_invalid": "Mtls.AllowedSubjectPatterns 条目 '{0}' 不是有效的正则表达式。",
|
||||
"config.signing.key_id_required": "权限签名配置需要 signing.activeKeyId。",
|
||||
"config.signing.key_path_required": "权限签名配置需要 signing.keyPath。",
|
||||
"config.signing.jwks_cache_range": "权限签名配置要求 signing.jwksCacheLifetime 介于 00:00:01 和 01:00:00 之间。",
|
||||
"config.signing.additional_key_id_required": "附加签名密钥需要 keyId。",
|
||||
"config.signing.additional_key_path_required": "签名密钥 '{0}' 需要路径。",
|
||||
"config.bootstrap.api_key_required": "启用时,权限引导配置需要 API 密钥。",
|
||||
"config.bootstrap.idp_required": "启用时,权限引导配置需要默认身份提供程序名称。",
|
||||
"config.rate_limit.permit_limit": "权限速率限制'{0}'要求permitLimit大于零。",
|
||||
"config.rate_limit.queue_limit": "权限速率限制 '{0}' queueLimit 不能为负数。",
|
||||
"config.rate_limit.window": "权限速率限制'{0}'窗口必须大于零且不超过1小时。",
|
||||
"config.storage.connection_required": "权限存储需要连接字符串。",
|
||||
"config.storage.timeout_invalid": "权限存储命令超时必须大于零。",
|
||||
"config.ack_token.payload_type_required": "启用 ack 令牌时必须指定 notifications.ackTokens.payloadType。",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime 必须大于零。",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime 必须大于零且大于或等于defaultLifetime。",
|
||||
"config.ack_token.key_id_required": "当启用 ack 令牌时,必须提供 notifications.ackTokens.activeKeyId。",
|
||||
"config.ack_token.key_path_required": "当启用 ack 令牌时,必须提供 notifications.ackTokens.keyPath。",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime 必须介于 00:00:01 和 01:00:00 之间。",
|
||||
"config.exceptions.null_template": "权限异常路由模板条目不能为空。",
|
||||
"config.exceptions.duplicate_template": "权限异常路由模板'{0}'被配置多次。",
|
||||
"config.exceptions.template_id_required": "权限异常路由模板需要一个 ID。",
|
||||
"config.exceptions.template_route_required": "权限异常路由模板'{0}'需要authorityRouteId。",
|
||||
"config.sealed_mode.evidence_path_required": "启用强制时必须提供 AirGap.SealedMode.EvidencePath。",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge 必须介于 00:00:01 和 7.00:00:00 之间。",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime 必须大于零且小于或等于 AirGap.SealedMode.MaxEvidenceAge。",
|
||||
"config.webhook.hosts_required": "启用时,notifications.webhooks.allowedHosts 必须至少包含一台主机。",
|
||||
"config.escalation.scope_required": "必须指定 notifications.escalation.scope。",
|
||||
"config.anti_forgery.audience_required": "启用防伪令牌时必须指定 vulnerabilityExplorer.workflow.antiForgery.audience。",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime 必须大于零。",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime 必须大于零且大于或等于defaultLifetime。",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries 必须为非负数。",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength 必须大于零。",
|
||||
"config.attachment.default_lifetime_invalid": "启用附件令牌时,vulnerabilityExplorer.attachments.defaultLifetime 必须大于零。",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime 必须大于零且大于或等于defaultLifetime。",
|
||||
"config.attachment.payload_type_required": "启用附件令牌时必须指定 vulnerabilityExplorer.attachments.payloadType。",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries 必须为非负数。",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength 必须大于零。",
|
||||
"config.api_lifecycle.sunset_after_deprecation": "旧版身份验证日落日期必须晚于弃用日期。",
|
||||
"config.api_lifecycle.docs_url_format": "旧版身份验证文档 URL 必须是绝对 HTTP 或 HTTPS URL。",
|
||||
"crypto.provider.algorithm_not_supported": "提供商 '{1}' 不支持签名算法 '{0}'。",
|
||||
"crypto.provider.hash_not_supported": "提供商 '{1}' 不支持哈希算法 '{0}'。",
|
||||
"crypto.provider.verify_not_supported": "提供商 '{1}' 不支持验证算法 '{0}'。",
|
||||
"crypto.provider.key_not_registered": "签名密钥 '{0}' 未向提供商 '{1}' 注册。",
|
||||
"crypto.provider.key_algorithm_mismatch": "签名密钥 '{0}' 是为算法 '{1}' 而不是 '{2}' 注册的。",
|
||||
"crypto.provider.ec_keys_only": "提供商 '{0}' 仅接受 EC 签名密钥。",
|
||||
"crypto.provider.no_password_hashing": "提供程序 '{0}' 不公开密码哈希功能。",
|
||||
"crypto.provider.no_content_hashing": "提供商 '{0}' 不支持内容哈希。",
|
||||
"crypto.provider.no_ephemeral_verification": "提供商 '{0}' 不支持临时验证。",
|
||||
"crypto.provider.not_signing_capable": "提供商 '{1}' 不支持签名算法 '{0}'。",
|
||||
"crypto.provider.es256_only": "提供商 '{0}' 当前仅支持 ES256 签名密钥。",
|
||||
"crypto.provider.p256_required": "ES256 签名密钥必须使用 NIST P-256 曲线。",
|
||||
"crypto.provider.curve_mismatch": "签名密钥曲线不匹配。算法 '{1}' 的预期曲线 '{0}'。",
|
||||
"crypto.registry.empty": "必须注册至少一个加密货币提供商。",
|
||||
"crypto.registry.algorithm_required": "需要算法标识符。",
|
||||
"crypto.registry.signing_not_supported": "任何注册提供商均不支持签名算法 '{0}'。",
|
||||
"crypto.registry.hash_not_supported": "任何注册提供商均不支持哈希算法 '{0}'。",
|
||||
"crypto.registry.verify_not_supported": "任何注册提供商均不支持验证算法 '{0}'。",
|
||||
"crypto.registry.active_profile_required": "需要有效的配置文件。",
|
||||
"crypto.registry.profile_not_found": "在注册表中找不到配置文件 ID '{0}'。",
|
||||
"crypto.registry.profile_id_required": "配置文件 ID 不能为 null 或为空。",
|
||||
"crypto.key.algorithm_required": "需要算法标识符。",
|
||||
"crypto.key.private_scalar_required": "私钥参数必须包含标量部分。",
|
||||
"crypto.key.verification_only": "此构造函数仅用于仅验证密钥。将 verifyOnly 设置为 true。",
|
||||
"crypto.key.public_xy_required": "公钥参数必须包含 X 和 Y 坐标。",
|
||||
"crypto.key.private_material_required": "必须提供私钥材料。",
|
||||
"crypto.hash.algorithm_unsupported": "不支持的哈希算法 '{0}'。",
|
||||
"crypto.hash.purpose_required": "目的不能为空。",
|
||||
"crypto.hmac.algorithm_unknown": "未知 HMAC 算法 '{0}'。",
|
||||
"crypto.hmac.algorithm_unsupported": "不支持的 HMAC 算法 '{0}'。",
|
||||
"crypto.ecdsa.algorithm_unsupported": "不支持的 ECDSA 签名算法 '{0}'。",
|
||||
"crypto.ecdsa.curve_unsupported": "算法 '{0}' 不支持 ECDSA 曲线映射。",
|
||||
"crypto.digest.required": "需要摘要。",
|
||||
"crypto.digest.prefix_required": "{0} 必须以 '{1}' 开头。",
|
||||
"crypto.digest.algorithm_unsupported": "'{0}' 中不支持摘要算法。仅支持 sha256。",
|
||||
"crypto.digest.hex_length": "{0} 必须包含 {1} 十六进制字符。",
|
||||
"crypto.password.memory_cost_invalid": "密码散列内存成本必须大于零。",
|
||||
"crypto.password.iterations_invalid": "密码哈希迭代计数必须大于零。",
|
||||
"crypto.password.parallelism_invalid": "密码哈希并行度必须大于零。",
|
||||
"crypto.password.algorithm_mismatch": "{0}仅支持{1}算法。",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 需要正迭代计数。",
|
||||
"crypto.gost.not_der": "签名不是 DER 编码的。",
|
||||
"crypto.gost.invalid_der": "GOST 签名的 DER 结构无效。",
|
||||
"crypto.gost.raw_length": "原始 GOST 签名必须是 {0} 字节。",
|
||||
"crypto.gost.neither_format": "签名有效负载既不是 DER 也不是原始 GOST 格式。",
|
||||
"crypto.gost.coordinate_overflow": "坐标超出预期长度。",
|
||||
"crypto.profile.unknown_purpose": "配置文件 '{1}' 中的未知哈希用途 '{0}'。",
|
||||
"crypto.compliance.at_least_one_signing": "必须至少提供一种签名算法。",
|
||||
"crypto.compliance.at_least_one_hash": "必须至少提供一种哈希算法。",
|
||||
"crypto.ed25519.private_key_size": "Ed25519 私钥必须是 32 或 64 字节。",
|
||||
"crypto.ed25519.public_key_size": "Ed25519 公钥必须是 32 字节。",
|
||||
"crypto.ed25519.no_hashing": "BouncyCastle Ed25519 提供程序不公开哈希功能。",
|
||||
"crypto.ed25519.raw_key_required": "提供商 '{0}' 需要原始 Ed25519 私钥材料。",
|
||||
"crypto.sm.no_password_hashing": "SM 提供商不会公开密码散列。",
|
||||
"crypto.sm.raw_key_required": "SM2 提供程序需要原始私钥字节 (PKCS#8 DER)。",
|
||||
"crypto.sm.unsupported_format": "不支持的 SM2 密钥格式。期待 PEM 或 PKCS#8 DER。",
|
||||
"crypto.sm.disabled": "提供程序 '{0}' 已禁用。设置 {1}=1(或禁用 RequireEnvironmentGate)以启用软件 SM2/SM3。",
|
||||
"crypto.di.registry_empty": "加密提供商注册表不能为空。为 RU 部署配置至少一个提供程序。",
|
||||
"crypto.di.ru_openssl_required": "Linux RU 基线需要提供程序 'ru.openssl.gost'(设置 STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 以显式覆盖)。",
|
||||
"crypto.di.ru_provider_required": "RU Linux 基线配置错误:ru.openssl.gost 和 ru.pkcs11 均通过环境禁用。启用至少一个提供商。",
|
||||
"crypto.di.no_plugins_loaded": "没有加载加密货币提供程序。检查插件配置和清单。",
|
||||
"crypto.kms.rotation_via_policy": "{0} 轮换必须通过 {1} 策略或计划进行编排。",
|
||||
"crypto.kms.revocation_via_policy": "{0} 撤销必须通过 {1} API 或控制台进行管理。",
|
||||
"crypto.kms.public_key_missing_x": "公钥缺少 X 坐标。",
|
||||
"crypto.kms.public_key_missing_y": "公钥缺少 Y 坐标。",
|
||||
"crypto.kms.hash_failed": "无法使用 SHA-256 对有效负载进行哈希处理。",
|
||||
"crypto.kms.key_not_found": "密钥 '{0}' 不存在。",
|
||||
"crypto.kms.key_revoked": "密钥 '{0}' 已被撤销且无法轮换。",
|
||||
"crypto.kms.key_revoked_signing": "密钥'{0}'已被撤销,不能用于签名。",
|
||||
"crypto.kms.key_version_not_found": "密钥 '{1}' 的密钥版本 '{0}' 不存在。",
|
||||
"crypto.kms.key_no_active_version": "密钥 '{0}' 没有有效版本。",
|
||||
"crypto.kms.key_version_inactive": "密钥版本 '{0}' 未激活。当前状态:{1}",
|
||||
"crypto.kms.key_no_public_material": "密钥 '{0}' 版本 '{1}' 没有公钥材料。",
|
||||
"crypto.kms.algorithm_unsupported": "文件 KMS 驱动程序不支持算法 '{0}'。",
|
||||
"crypto.kms.curve_unsupported": "不支持曲线 '{0}'。",
|
||||
"crypto.kms.metadata_failed": "无法创建或加载关键元数据。",
|
||||
"crypto.kms.algorithm_mismatch": "算法不匹配。预期为 '{0}',收到为 '{1}'。",
|
||||
"crypto.kms.version_exists": "密钥 '{1}' 的密钥版本 '{0}' 已存在。",
|
||||
"crypto.kms.material_not_found": "未找到 '{0}' 版本的密钥材料。",
|
||||
"crypto.kms.envelope_deserialize_failed": "密钥信封无法反序列化。",
|
||||
"crypto.kms.payload_deserialize_failed": "无法反序列化密钥有效负载。",
|
||||
"crypto.kms.pem_empty": "公钥 PEM 不能为空。",
|
||||
"crypto.kms.no_primary_version": "加密密钥 '{0}' 没有有效的主要版本。",
|
||||
"crypto.kms.es256_only": "提供商 '{0}' 仅支持 ES256 签名密钥。",
|
||||
"crypto.kms.version_metadata_required": "KMS 签名密钥必须包含元数据条目 'kms.version'。",
|
||||
"crypto.kms.missing_public_key": "KMS 签名密钥缺少公钥材料。",
|
||||
"crypto.fido2.curve_unsupported": "不支持的 FIDO2 曲线 OID '{0}'。",
|
||||
"crypto.fido2.rotation_required": "FIDO2 凭证轮换需要重新注册。",
|
||||
"crypto.fido2.revocation_relying_party": "FIDO2 凭证吊销必须在依赖方进行管理。",
|
||||
"crypto.fido2.missing_x": "FIDO2 公钥缺少 X 坐标。",
|
||||
"crypto.fido2.missing_y": "FIDO2 公钥缺少 Y 坐标。",
|
||||
"crypto.fido2.authenticator_required": "必须注册 IFido2Authenticator 才能使用 FIDO2 KMS。",
|
||||
"crypto.pkcs11.rotation_hsm": "PKCS#11 轮换需要 HSM 管理工具。",
|
||||
"crypto.pkcs11.revocation_hsm": "PKCS#11 撤销必须由 HSM 策略处理。",
|
||||
"crypto.pkcs11.slot_not_found": "无法解析 PKCS#11 插槽。",
|
||||
"crypto.pkcs11.private_key_not_found": "未找到 PKCS#11 私钥。",
|
||||
"crypto.pkcs11.public_key_not_found": "未找到 PKCS#11 公钥。",
|
||||
"crypto.pkcs11.missing_ec_point": "公钥缺少 EC 点。",
|
||||
"crypto.pkcs11.missing_ec_params": "公钥缺少 EC 参数。",
|
||||
"crypto.pkcs11.unsupported_point_format": "不受支持的 EC 点格式。",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "不支持的 EC 曲线 OID '{0}'。",
|
||||
"crypto.pkcs11.curve_unsupported": "不支持的 EC 曲线 '{0}'。",
|
||||
"common.provcache.sbom_hash_required": "SBOM 哈希值不能为 null 或为空。",
|
||||
"common.provcache.fetch_url_absolute": "延迟获取基本 URL 必须是绝对的。",
|
||||
"common.provcache.fetch_url_no_userinfo": "延迟获取基本 URL 不得包含用户信息。",
|
||||
"common.provcache.fetch_url_host_required": "延迟获取基本 URL 必须包含主机。",
|
||||
"common.provcache.fetch_url_scheme_invalid": "不允许延迟获取基本 URL 方案 '{0}'。",
|
||||
"common.provcache.fetch_url_host_invalid": "延迟获取基本 URL 主机 '{0}' 未列入允许名单。",
|
||||
"common.provcache.no_chunks_provided": "没有提供块。",
|
||||
"common.provcache.bundle_deserialize_failed": "无法反序列化捆绑包。",
|
||||
"common.provcache.signer_not_configured": "未配置签名者。",
|
||||
"common.provcache.signing_requested_no_signer": "已请求签名但未配置签名者。",
|
||||
"common.provcache.cache_entry_not_found": "未找到 VeriKey 的缓存条目:{0}",
|
||||
"common.provcache.chunk_manifest_not_found": "未找到证明根的块清单:{0}",
|
||||
"common.provcache.http_timeout_invalid": "延迟获取 HTTP 超时必须是正数、非无限持续时间。",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher 需要 HTTP 客户端上的 BaseAddress。",
|
||||
"common.provcache.merkle_root_mismatch": "默克尔根不匹配。预期:{0},计算值:{1}",
|
||||
"common.provcache.chunk_verification_failed": "块 {0} 验证失败。预期哈希值:{1}",
|
||||
"common.provcache.artifact_reference_required": "需要工件参考。",
|
||||
"common.provcache.artifact_digest_required": "需要工件摘要。",
|
||||
"common.provcache.decision_digest_required": "需要决策摘要。",
|
||||
"common.provcache.decision_digest_verikey_required": "DecisionDigest.VeriKey 为必填项。",
|
||||
"common.provcache.digest_empty": "摘要不能为空。",
|
||||
"common.provcache.time_window_required": "时间窗口不能为 null 或为空。",
|
||||
"common.provcache.vex_hash_required": "VEX 哈希集哈希不能为 null 或为空。",
|
||||
"common.provcache.policy_hash_required": "策略哈希不能为 null 或为空。",
|
||||
"common.provcache.source_hash_required": "源哈希不能为 null 或为空。",
|
||||
"common.provcache.signer_set_hash_required": "签名者集哈希值不能为 null 或为空。",
|
||||
"common.evidence.toolchain_required": "ToolChain 必须在构建索引之前设置。",
|
||||
"common.evidence.deserialization_failed": "无法反序列化证据索引。",
|
||||
"common.evidence.verdict_deserialization_failed": "无法反序列化判决。",
|
||||
"common.evidence.inputs_json_required": "JSON 不能为 null 或为空。",
|
||||
"common.evidence.inputs_deserialization_failed": "无法反序列化固定的评分输入。",
|
||||
"common.evidence.bundle_alert_id_required": "警报 ID 为必填项",
|
||||
"common.evidence.bundle_artifact_id_required": "ArtifactId 为必填项",
|
||||
"common.evidence.pdf_export_requires_config": "PDF 导出需要额外配置",
|
||||
"common.evidence.invalid_uri_format": "无效证据 URI 格式:{0}。预期 stella://type/path",
|
||||
"common.evidence.invalid_uri_missing_path": "无效证据 URI 格式:{0}。缺少路径。",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver 无法解析证据类型:{0}",
|
||||
"common.evidence.schema_resource_not_found": "未找到架构资源:{0}",
|
||||
"common.evidence.schema_resource_not_available": "架构资源不可用:{0}",
|
||||
"common.evidence.provenance_deserialize_failed": "无法反序列化证据来源 {0}",
|
||||
"common.evidence.bundle_deserialize_failed": "无法反序列化判决包",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "无法反序列化 delta 判决",
|
||||
"common.canonicalization.value_empty_after_trim": "修剪后值不能为空。",
|
||||
"common.canonicalization.deserialize_failed": "反序列化{0}失败",
|
||||
"common.canonicalization.datetime_value_null": "DateTimeOffset 值为空。",
|
||||
"common.canonicalization.dict_key_null": "字典键不能为空。",
|
||||
"common.audit.replay_token_value_empty": "令牌值不能为空。",
|
||||
"common.audit.replay_token_empty": "令牌不能为空。",
|
||||
"common.audit.replay_token_format_invalid": "无效的重播令牌格式:{0}",
|
||||
"common.audit.replay_token_version_invalid": "无效重播令牌版本:{0}",
|
||||
"common.audit.replay_token_expiration_invalid": "重播令牌中的过期时间戳无效:{0}",
|
||||
"common.audit.replay_token_duplicate_context_key": "标准化后,AdditionalContext 包含重复键:'{0}'。",
|
||||
"common.artifact.uri_format_invalid": "无效的 URI 格式:{0}",
|
||||
"common.artifact.uri_scheme_not_supported": "不支持 URI 方案:{0}",
|
||||
"common.artifact.file_not_accessible": "文件无法访问:{0}",
|
||||
"common.artifact.file_too_large": "文件太大:{0} 字节超过 100MB 限制",
|
||||
"common.artifact.uri_not_accessible": "URI 无法访问:{0} 返回 {1}",
|
||||
"common.artifact.content_too_large": "内容太大:{0} 字节超过 100MB 限制",
|
||||
"common.artifact.fetch_failed": "无法从 {0} 获取:{1}",
|
||||
"common.delta_verdict.artifact_ref_required": "需要工件参考。",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "不支持的签名算法:{0}",
|
||||
"common.delta_verdict.hmac_secret_required": "HMAC 签名需要 Base64 密钥。",
|
||||
"common.eventing.no_entry_assembly": "未找到入口组件",
|
||||
"auth.persistence.deserialize_inputs_failed": "无法反序列化输入",
|
||||
"auth.persistence.deserialize_result_failed": "无法反序列化结果",
|
||||
"auth.persistence.revocation_sequence_mismatch": "撤销导出序列不匹配。预期为 {0},当前为 {1}。",
|
||||
"auth.persistence.revocation_update_rejected": "撤销导出状态更新被拒绝。预期序列 {0}。"
|
||||
}
|
||||
|
||||
@@ -1,411 +1,367 @@
|
||||
{
|
||||
"_meta": { "locale": "zh-TW", "namespace": "common", "version": "1.1" },
|
||||
|
||||
"common.error.generic": "Something went wrong.",
|
||||
"common.error.not_found": "The requested resource was not found.",
|
||||
"common.error.entity_not_found": "{0} '{1}' not found.",
|
||||
"common.error.unauthorized": "You do not have permission to perform this action.",
|
||||
"common.error.forbidden": "Access denied.",
|
||||
"common.error.bad_request": "The request is invalid.",
|
||||
"common.error.conflict": "A conflict occurred. The resource may have been modified.",
|
||||
"common.error.timeout": "Request timed out after {0} seconds.",
|
||||
"common.error.server_error": "An internal server error occurred. Please try again later.",
|
||||
"common.error.service_unavailable": "The service is temporarily unavailable.",
|
||||
"common.error.too_many_requests": "Too many requests. Please wait and try again.",
|
||||
"common.error.network": "Network error. Check your connection.",
|
||||
"common.error.body_required": "Request body is required.",
|
||||
"common.error.deserialization_failed": "Failed to deserialize {0}.",
|
||||
"common.error.not_supported": "{0} is not supported.",
|
||||
"common.error.already_exists": "{0} '{1}' already exists.",
|
||||
"common.error.revoked": "{0} '{1}' has been revoked and cannot be used.",
|
||||
"common.error.state_invalid": "{0} '{1}' is not in the expected state. Current state: {2}",
|
||||
|
||||
"common.validation.required": "{0} is required.",
|
||||
"common.validation.invalid": "{0} is invalid.",
|
||||
"common.validation.too_long": "{0} exceeds the maximum length of {1} characters.",
|
||||
"common.validation.too_short": "{0} must be at least {1} characters.",
|
||||
"common.validation.out_of_range": "{0} must be between {1} and {2}.",
|
||||
"common.validation.invalid_format": "{0} has an invalid format.",
|
||||
"common.validation.duplicate": "{0} already exists.",
|
||||
"common.validation.empty_not_allowed": "{0} must not be empty.",
|
||||
"common.validation.empty_after_trim": "{0} must not be empty after trimming.",
|
||||
"common.validation.greater_than_zero": "{0} must be greater than zero.",
|
||||
"common.validation.non_negative": "{0} must be non-negative.",
|
||||
"common.validation.at_least_one": "At least one {0} must be configured.",
|
||||
"common.validation.at_least_n": "{0} must have at least {1} entries.",
|
||||
"common.validation.null_or_empty": "{0} cannot be null or empty.",
|
||||
"common.validation.absolute_uri": "{0} must be an absolute URI.",
|
||||
"common.validation.invalid_regex": "{0} '{1}' is not a valid regular expression.",
|
||||
"common.validation.unknown_value": "{0} '{1}' is not recognized. Allowed values: {2}",
|
||||
"common.validation.max_exceeded": "{0} must be {1} characters or fewer.",
|
||||
|
||||
"common.actions.save": "Save",
|
||||
"common.actions.cancel": "Cancel",
|
||||
"common.actions.delete": "Delete",
|
||||
"common.actions.confirm": "Confirm",
|
||||
"common.actions.submit": "Submit",
|
||||
"common.actions.close": "Close",
|
||||
"common.actions.retry": "Retry",
|
||||
"common.actions.expand": "Expand",
|
||||
"common.actions.collapse": "Collapse",
|
||||
"common.actions.show_more": "Show more",
|
||||
"common.actions.show_less": "Show less",
|
||||
|
||||
"common.status.healthy": "Healthy",
|
||||
"common.status.degraded": "Degraded",
|
||||
"common.status.unavailable": "Unavailable",
|
||||
"common.status.unknown": "Unknown",
|
||||
"common.status.active": "Active",
|
||||
"common.status.inactive": "Inactive",
|
||||
"common.status.pending": "Pending",
|
||||
"common.status.running": "Running",
|
||||
"common.status.completed": "Completed",
|
||||
"common.status.failed": "Failed",
|
||||
"common.status.canceled": "Canceled",
|
||||
"common.status.blocked": "Blocked",
|
||||
|
||||
"common.severity.critical": "Critical",
|
||||
"common.severity.high": "High",
|
||||
"common.severity.medium": "Medium",
|
||||
"common.severity.low": "Low",
|
||||
"common.severity.info": "Info",
|
||||
"common.severity.none": "None",
|
||||
|
||||
"common.time.seconds_ago": "{0} seconds ago",
|
||||
"common.time.minutes_ago": "{0} minutes ago",
|
||||
"common.time.hours_ago": "{0} hours ago",
|
||||
"common.time.days_ago": "{0} days ago",
|
||||
"common.time.just_now": "Just now",
|
||||
|
||||
"common.ui.loading": "Loading...",
|
||||
"common.ui.saving": "Saving...",
|
||||
"common.ui.deleting": "Deleting...",
|
||||
"common.ui.submitting": "Submitting...",
|
||||
"common.ui.no_results": "No results found.",
|
||||
"common.ui.offline": "You are offline.",
|
||||
"common.ui.reconnecting": "Reconnecting...",
|
||||
"common.ui.back_online": "Back online.",
|
||||
|
||||
"auth.dpop.proof_lifetime_invalid": "DPoP proof lifetime must be greater than zero.",
|
||||
"auth.dpop.clock_skew_invalid": "DPoP allowed clock skew must be between 0 seconds and 5 minutes.",
|
||||
"auth.dpop.replay_window_invalid": "DPoP replay window must be greater than or equal to zero.",
|
||||
"auth.dpop.algorithm_required": "At least one allowed DPoP algorithm must be configured.",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "Allowed DPoP algorithms cannot be empty after normalization.",
|
||||
"auth.dpop.options_required": "DPoP options must be provided.",
|
||||
"auth.dpop.nonce_ttl_invalid": "Nonce TTL must be greater than zero.",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "Max issuance per minute must be at least 1.",
|
||||
"auth.dpop.nonce_store_required": "Dpop.Nonce.Store must be specified.",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store must be either 'memory' or 'redis'.",
|
||||
"auth.dpop.nonce_redis_required": "Dpop.Nonce.RedisConnectionString must be provided when using the 'redis' store.",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences must include at least one audience.",
|
||||
"auth.dpop.token_three_segments": "Token must contain three segments.",
|
||||
"auth.dpop.segment_out_of_range": "Segment index out of range.",
|
||||
"auth.dpop.header_decode_failed": "Unable to decode header.",
|
||||
"auth.dpop.header_missing_typ": "DPoP proof missing typ=dpop+jwt header.",
|
||||
"auth.dpop.header_missing_alg": "DPoP proof missing alg header.",
|
||||
"auth.dpop.header_unsupported_alg": "Unsupported DPoP algorithm.",
|
||||
"auth.dpop.header_missing_jwk": "DPoP proof missing jwk header.",
|
||||
"auth.dpop.header_invalid_jwk": "DPoP proof jwk header is invalid.",
|
||||
"auth.dpop.payload_decode_failed": "Unable to decode payload.",
|
||||
"auth.dpop.payload_missing_htm": "DPoP proof missing htm claim.",
|
||||
"auth.dpop.payload_htm_mismatch": "DPoP htm does not match request method.",
|
||||
"auth.dpop.payload_missing_htu": "DPoP proof missing htu claim.",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu does not match request URI.",
|
||||
"auth.dpop.payload_missing_iat": "DPoP proof missing iat claim.",
|
||||
"auth.dpop.payload_missing_jti": "DPoP proof missing jti claim.",
|
||||
"auth.dpop.payload_iat_invalid": "DPoP proof iat claim is not a valid number.",
|
||||
"auth.dpop.nonce_missing": "DPoP proof missing nonce claim.",
|
||||
"auth.dpop.nonce_mismatch": "DPoP nonce mismatch.",
|
||||
"auth.dpop.proof_future": "DPoP proof issued in the future.",
|
||||
"auth.dpop.proof_expired": "DPoP proof expired.",
|
||||
"auth.dpop.signature_failed": "DPoP proof signature validation failed.",
|
||||
"auth.dpop.replay_detected": "DPoP proof already used.",
|
||||
|
||||
"config.authority.schema_version_required": "Authority configuration requires a positive schemaVersion.",
|
||||
"config.authority.issuer_required": "Authority configuration requires an issuer URL.",
|
||||
"config.authority.issuer_absolute": "Authority issuer must be an absolute URI.",
|
||||
"config.authority.issuer_https": "Authority issuer must use HTTPS unless running on a loopback interface.",
|
||||
"config.authority.duplicate_tenant": "Authority configuration contains duplicate tenant identifier '{0}'.",
|
||||
"config.authority.property_greater_than_zero": "Authority configuration requires {0} to be greater than zero.",
|
||||
"config.authority.property_max": "Authority configuration requires {0} to be less than or equal to {1}.",
|
||||
"config.authority.remote_inference_required": "Authority configuration requires at least one advisory AI remote inference profile when remote inference is enabled.",
|
||||
|
||||
"config.tenant.id_required": "Each tenant requires an id (slug).",
|
||||
"config.tenant.id_format": "Tenant id '{0}' must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.project_format": "Tenant '{0}' defines project '{1}' which must contain only lowercase letters, digits, and hyphen.",
|
||||
"config.tenant.role_missing_config": "Tenant '{0}' defines role '{1}' without configuration.",
|
||||
"config.tenant.role_scope_required": "Tenant '{0}' role '{1}' must specify at least one scope.",
|
||||
"config.tenant.role_unknown_scope": "Tenant '{0}' role '{1}' references unknown scope '{2}'.",
|
||||
"config.tenant.role_unsupported_attribute": "Tenant '{0}' role '{1}' defines unsupported attribute '{2}'. Allowed attributes: env, owner, business_tier.",
|
||||
"config.tenant.delegation_max_tokens": "Tenant '{0}' delegation maxActiveTokens must be greater than zero when specified.",
|
||||
"config.tenant.remote_inference_disabled": "Tenant remote inference consent cannot be granted when remote inference is disabled.",
|
||||
"config.tenant.remote_inference_consent_version_length": "Tenant remote inference consentVersion must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consented_by_length": "Tenant remote inference consentedBy must be {0} characters or fewer.",
|
||||
"config.tenant.remote_inference_consent_version_required": "Tenant remote inference consent requires consentVersion when consentGranted is true.",
|
||||
"config.tenant.remote_inference_consented_at_required": "Tenant remote inference consent requires consentedAt when consentGranted is true.",
|
||||
|
||||
"config.service_account.id_required": "Delegation service account seeds require an accountId.",
|
||||
"config.service_account.id_format": "Service account id '{0}' must contain lowercase letters, digits, colon, underscore, or hyphen.",
|
||||
"config.service_account.tenant_required": "Service account '{0}' requires a tenant assignment.",
|
||||
"config.service_account.tenant_unknown": "Service account '{0}' references unknown tenant '{1}'.",
|
||||
"config.service_account.scope_required": "Service account '{0}' must specify at least one allowed scope.",
|
||||
"config.service_account.unsupported_attribute": "Service account '{0}' defines unsupported attribute '{1}'. Allowed attributes: env, owner, business_tier.",
|
||||
|
||||
"config.plugin.assembly_required": "Authority plugin '{0}' must define either assemblyName or assemblyPath.",
|
||||
"config.plugin.config_file_required": "Authority plugin '{0}' must define a configFile.",
|
||||
"config.plugin.config_file_missing": "Authority plugin '{0}' specifies configFile '{1}' which does not exist.",
|
||||
"config.plugin.unknown_capability": "Authority plugin '{0}' declares unknown capability '{1}'. Allowed values: password, mfa, clientProvisioning, bootstrap.",
|
||||
"config.plugin.descriptor_null": "Authority plugin descriptor '{0}' is null.",
|
||||
|
||||
"config.delegation.duplicate_account": "Delegation configuration contains duplicate service account id '{0}'.",
|
||||
"config.delegation.quota_max_tokens": "Authority delegation configuration requires {0}.MaxActiveTokens to be greater than zero.",
|
||||
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace must be non-negative.",
|
||||
"config.mtls.audiences_required": "Mtls.EnforceForAudiences must include at least one audience when enabled.",
|
||||
"config.mtls.ca_empty": "Mtls.AllowedCertificateAuthorities entries must not be empty.",
|
||||
"config.mtls.san_types_required": "Mtls.AllowedSanTypes must include at least one entry when enabled.",
|
||||
"config.mtls.subject_patterns_empty": "Mtls.AllowedSubjectPatterns entries must not be empty.",
|
||||
"config.mtls.subject_pattern_invalid": "Mtls.AllowedSubjectPatterns entry '{0}' is not a valid regular expression.",
|
||||
|
||||
"config.signing.key_id_required": "Authority signing configuration requires signing.activeKeyId.",
|
||||
"config.signing.key_path_required": "Authority signing configuration requires signing.keyPath.",
|
||||
"config.signing.jwks_cache_range": "Authority signing configuration requires signing.jwksCacheLifetime to be between 00:00:01 and 01:00:00.",
|
||||
"config.signing.additional_key_id_required": "Additional signing keys require a keyId.",
|
||||
"config.signing.additional_key_path_required": "Signing key '{0}' requires a path.",
|
||||
|
||||
"config.bootstrap.api_key_required": "Authority bootstrap configuration requires an API key when enabled.",
|
||||
"config.bootstrap.idp_required": "Authority bootstrap configuration requires a default identity provider name when enabled.",
|
||||
|
||||
"config.rate_limit.permit_limit": "Authority rate limiting '{0}' requires permitLimit to be greater than zero.",
|
||||
"config.rate_limit.queue_limit": "Authority rate limiting '{0}' queueLimit cannot be negative.",
|
||||
"config.rate_limit.window": "Authority rate limiting '{0}' window must be greater than zero and no more than one hour.",
|
||||
|
||||
"config.storage.connection_required": "Authority storage requires a connection string.",
|
||||
"config.storage.timeout_invalid": "Authority storage command timeout must be greater than zero.",
|
||||
|
||||
"config.ack_token.payload_type_required": "notifications.ackTokens.payloadType must be specified when ack tokens are enabled.",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime must be greater than zero.",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.ack_token.key_id_required": "notifications.ackTokens.activeKeyId must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.key_path_required": "notifications.ackTokens.keyPath must be provided when ack tokens are enabled.",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime must be between 00:00:01 and 01:00:00.",
|
||||
|
||||
"config.exceptions.null_template": "Authority exception routing template entries must not be null.",
|
||||
"config.exceptions.duplicate_template": "Authority exception routing template '{0}' is configured more than once.",
|
||||
"config.exceptions.template_id_required": "Authority exception routing templates require an id.",
|
||||
"config.exceptions.template_route_required": "Authority exception routing template '{0}' requires authorityRouteId.",
|
||||
|
||||
"config.sealed_mode.evidence_path_required": "AirGap.SealedMode.EvidencePath must be provided when enforcement is enabled.",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge must be between 00:00:01 and 7.00:00:00.",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime must be greater than zero and less than or equal to AirGap.SealedMode.MaxEvidenceAge.",
|
||||
|
||||
"config.webhook.hosts_required": "notifications.webhooks.allowedHosts must include at least one host when enabled.",
|
||||
"config.escalation.scope_required": "notifications.escalation.scope must be specified.",
|
||||
|
||||
"config.anti_forgery.audience_required": "vulnerabilityExplorer.workflow.antiForgery.audience must be specified when anti-forgery tokens are enabled.",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime must be greater than zero.",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries must be non-negative.",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength must be greater than zero.",
|
||||
|
||||
"config.attachment.default_lifetime_invalid": "vulnerabilityExplorer.attachments.defaultLifetime must be greater than zero when attachment tokens are enabled.",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime must be greater than zero and greater than or equal to defaultLifetime.",
|
||||
"config.attachment.payload_type_required": "vulnerabilityExplorer.attachments.payloadType must be specified when attachment tokens are enabled.",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries must be non-negative.",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength must be greater than zero.",
|
||||
|
||||
"config.api_lifecycle.sunset_after_deprecation": "Legacy auth sunset date must be after the deprecation date.",
|
||||
"config.api_lifecycle.docs_url_format": "Legacy auth documentation URL must be an absolute HTTP or HTTPS URL.",
|
||||
|
||||
"crypto.provider.algorithm_not_supported": "Signing algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.hash_not_supported": "Hash algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.verify_not_supported": "Verification algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.key_not_registered": "Signing key '{0}' is not registered with provider '{1}'.",
|
||||
"crypto.provider.key_algorithm_mismatch": "Signing key '{0}' is registered for algorithm '{1}', not '{2}'.",
|
||||
"crypto.provider.ec_keys_only": "Provider '{0}' only accepts EC signing keys.",
|
||||
"crypto.provider.no_password_hashing": "Provider '{0}' does not expose password hashing capabilities.",
|
||||
"crypto.provider.no_content_hashing": "Provider '{0}' does not support content hashing.",
|
||||
"crypto.provider.no_ephemeral_verification": "Provider '{0}' does not support ephemeral verification.",
|
||||
"crypto.provider.not_signing_capable": "Signing algorithm '{0}' is not supported by provider '{1}'.",
|
||||
"crypto.provider.es256_only": "Only ES256 signing keys are currently supported by provider '{0}'.",
|
||||
"crypto.provider.p256_required": "ES256 signing keys must use the NIST P-256 curve.",
|
||||
"crypto.provider.curve_mismatch": "Signing key curve mismatch. Expected curve '{0}' for algorithm '{1}'.",
|
||||
|
||||
"crypto.registry.empty": "At least one crypto provider must be registered.",
|
||||
"crypto.registry.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.registry.signing_not_supported": "Signing algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.hash_not_supported": "Hash algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.verify_not_supported": "Verification algorithm '{0}' is not supported by any registered provider.",
|
||||
"crypto.registry.active_profile_required": "Active profile is required.",
|
||||
"crypto.registry.profile_not_found": "Profile ID '{0}' is not found in the registry.",
|
||||
"crypto.registry.profile_id_required": "Profile ID cannot be null or empty.",
|
||||
|
||||
"crypto.key.algorithm_required": "Algorithm identifier is required.",
|
||||
"crypto.key.private_scalar_required": "Private key parameters must include the scalar component.",
|
||||
"crypto.key.verification_only": "This constructor is only for verification-only keys. Set verificationOnly to true.",
|
||||
"crypto.key.public_xy_required": "Public key parameters must include X and Y coordinates.",
|
||||
"crypto.key.private_material_required": "Private key material must be provided.",
|
||||
|
||||
"crypto.hash.algorithm_unsupported": "Unsupported hash algorithm '{0}'.",
|
||||
"crypto.hash.purpose_required": "Purpose cannot be null or empty.",
|
||||
"crypto.hmac.algorithm_unknown": "Unknown HMAC algorithm '{0}'.",
|
||||
"crypto.hmac.algorithm_unsupported": "Unsupported HMAC algorithm '{0}'.",
|
||||
|
||||
"crypto.ecdsa.algorithm_unsupported": "Unsupported ECDSA signing algorithm '{0}'.",
|
||||
"crypto.ecdsa.curve_unsupported": "Unsupported ECDSA curve mapping for algorithm '{0}'.",
|
||||
|
||||
"crypto.digest.required": "Digest is required.",
|
||||
"crypto.digest.prefix_required": "{0} must start with '{1}'.",
|
||||
"crypto.digest.algorithm_unsupported": "Unsupported digest algorithm in '{0}'. Only sha256 is supported.",
|
||||
"crypto.digest.hex_length": "{0} must contain {1} hexadecimal characters.",
|
||||
|
||||
"crypto.password.memory_cost_invalid": "Password hashing memory cost must be greater than zero.",
|
||||
"crypto.password.iterations_invalid": "Password hashing iteration count must be greater than zero.",
|
||||
"crypto.password.parallelism_invalid": "Password hashing parallelism must be greater than zero.",
|
||||
"crypto.password.algorithm_mismatch": "{0} only supports the {1} algorithm.",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 requires a positive iteration count.",
|
||||
|
||||
"crypto.gost.not_der": "Signature is not DER encoded.",
|
||||
"crypto.gost.invalid_der": "Invalid DER structure for GOST signature.",
|
||||
"crypto.gost.raw_length": "Raw GOST signature must be {0} bytes.",
|
||||
"crypto.gost.neither_format": "Signature payload is neither DER nor raw GOST format.",
|
||||
"crypto.gost.coordinate_overflow": "Coordinate exceeds expected length.",
|
||||
|
||||
"crypto.profile.unknown_purpose": "Unknown hash purpose '{0}' in profile '{1}'.",
|
||||
"crypto.compliance.at_least_one_signing": "At least one signing algorithm must be supplied.",
|
||||
"crypto.compliance.at_least_one_hash": "At least one hash algorithm must be supplied.",
|
||||
|
||||
"crypto.ed25519.private_key_size": "Ed25519 private key must be 32 or 64 bytes.",
|
||||
"crypto.ed25519.public_key_size": "Ed25519 public key must be 32 bytes.",
|
||||
"crypto.ed25519.no_hashing": "BouncyCastle Ed25519 provider does not expose hashing capabilities.",
|
||||
"crypto.ed25519.raw_key_required": "Provider '{0}' requires raw Ed25519 private key material.",
|
||||
|
||||
"crypto.sm.no_password_hashing": "SM provider does not expose password hashing.",
|
||||
"crypto.sm.raw_key_required": "SM2 provider requires raw private key bytes (PKCS#8 DER).",
|
||||
"crypto.sm.unsupported_format": "Unsupported SM2 key format. Expect PEM or PKCS#8 DER.",
|
||||
"crypto.sm.disabled": "Provider '{0}' is disabled. Set {1}=1 (or disable RequireEnvironmentGate) to enable software SM2/SM3.",
|
||||
|
||||
"crypto.di.registry_empty": "Crypto provider registry cannot be empty. Configure at least one provider for RU deployments.",
|
||||
"crypto.di.ru_openssl_required": "Linux RU baseline requires provider 'ru.openssl.gost' (set STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 to override explicitly).",
|
||||
"crypto.di.ru_provider_required": "RU Linux baseline is misconfigured: both ru.openssl.gost and ru.pkcs11 are disabled via environment. Enable at least one provider.",
|
||||
"crypto.di.no_plugins_loaded": "No crypto providers were loaded. Check plugin configuration and manifest.",
|
||||
|
||||
"crypto.kms.rotation_via_policy": "{0} rotation must be orchestrated via {1} policies or schedules.",
|
||||
"crypto.kms.revocation_via_policy": "{0} revocation must be managed through {1} APIs or console.",
|
||||
"crypto.kms.public_key_missing_x": "Public key missing X coordinate.",
|
||||
"crypto.kms.public_key_missing_y": "Public key missing Y coordinate.",
|
||||
"crypto.kms.hash_failed": "Failed to hash payload with SHA-256.",
|
||||
"crypto.kms.key_not_found": "Key '{0}' does not exist.",
|
||||
"crypto.kms.key_revoked": "Key '{0}' has been revoked and cannot be rotated.",
|
||||
"crypto.kms.key_revoked_signing": "Key '{0}' is revoked and cannot be used for signing.",
|
||||
"crypto.kms.key_version_not_found": "Key version '{0}' does not exist for key '{1}'.",
|
||||
"crypto.kms.key_no_active_version": "Key '{0}' does not have an active version.",
|
||||
"crypto.kms.key_version_inactive": "Key version '{0}' is not active. Current state: {1}",
|
||||
"crypto.kms.key_no_public_material": "Key '{0}' version '{1}' does not have public key material.",
|
||||
"crypto.kms.algorithm_unsupported": "Algorithm '{0}' is not supported by the file KMS driver.",
|
||||
"crypto.kms.curve_unsupported": "Curve '{0}' is not supported.",
|
||||
"crypto.kms.metadata_failed": "Failed to create or load key metadata.",
|
||||
"crypto.kms.algorithm_mismatch": "Algorithm mismatch. Expected '{0}', received '{1}'.",
|
||||
"crypto.kms.version_exists": "Key version '{0}' already exists for key '{1}'.",
|
||||
"crypto.kms.material_not_found": "Key material for version '{0}' was not found.",
|
||||
"crypto.kms.envelope_deserialize_failed": "Key envelope could not be deserialized.",
|
||||
"crypto.kms.payload_deserialize_failed": "Key payload could not be deserialized.",
|
||||
"crypto.kms.pem_empty": "Public key PEM cannot be empty.",
|
||||
"crypto.kms.no_primary_version": "Crypto key '{0}' does not have an active primary version.",
|
||||
"crypto.kms.es256_only": "Provider '{0}' only supports ES256 signing keys.",
|
||||
"crypto.kms.version_metadata_required": "KMS signing keys must include metadata entry 'kms.version'.",
|
||||
"crypto.kms.missing_public_key": "KMS signing key is missing public key material.",
|
||||
|
||||
"crypto.fido2.curve_unsupported": "Unsupported FIDO2 curve OID '{0}'.",
|
||||
"crypto.fido2.rotation_required": "FIDO2 credential rotation requires new enrolment.",
|
||||
"crypto.fido2.revocation_relying_party": "FIDO2 credential revocation must be managed in the relying party.",
|
||||
"crypto.fido2.missing_x": "FIDO2 public key missing X coordinate.",
|
||||
"crypto.fido2.missing_y": "FIDO2 public key missing Y coordinate.",
|
||||
"crypto.fido2.authenticator_required": "IFido2Authenticator must be registered to use FIDO2 KMS.",
|
||||
|
||||
"crypto.pkcs11.rotation_hsm": "PKCS#11 rotation requires HSM administrative tooling.",
|
||||
"crypto.pkcs11.revocation_hsm": "PKCS#11 revocation must be handled by HSM policies.",
|
||||
"crypto.pkcs11.slot_not_found": "Could not resolve PKCS#11 slot.",
|
||||
"crypto.pkcs11.private_key_not_found": "PKCS#11 private key not found.",
|
||||
"crypto.pkcs11.public_key_not_found": "PKCS#11 public key not found.",
|
||||
"crypto.pkcs11.missing_ec_point": "Public key missing EC point.",
|
||||
"crypto.pkcs11.missing_ec_params": "Public key missing EC parameters.",
|
||||
"crypto.pkcs11.unsupported_point_format": "Unsupported EC point format.",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "Unsupported EC curve OID '{0}'.",
|
||||
"crypto.pkcs11.curve_unsupported": "Unsupported EC curve '{0}'.",
|
||||
|
||||
"common.provcache.sbom_hash_required": "SBOM hash cannot be null or empty.",
|
||||
"common.provcache.fetch_url_absolute": "Lazy fetch base URL must be absolute.",
|
||||
"common.provcache.fetch_url_no_userinfo": "Lazy fetch base URL must not include user info.",
|
||||
"common.provcache.fetch_url_host_required": "Lazy fetch base URL must include a host.",
|
||||
"common.provcache.fetch_url_scheme_invalid": "Lazy fetch base URL scheme '{0}' is not allowed.",
|
||||
"common.provcache.fetch_url_host_invalid": "Lazy fetch base URL host '{0}' is not allowlisted.",
|
||||
"common.provcache.no_chunks_provided": "No chunks provided.",
|
||||
"common.provcache.bundle_deserialize_failed": "Failed to deserialize bundle.",
|
||||
"common.provcache.signer_not_configured": "Signer is not configured.",
|
||||
"common.provcache.signing_requested_no_signer": "Signing requested but no signer is configured.",
|
||||
"common.provcache.cache_entry_not_found": "Cache entry not found for VeriKey: {0}",
|
||||
"common.provcache.chunk_manifest_not_found": "Chunk manifest not found for proof root: {0}",
|
||||
"common.provcache.http_timeout_invalid": "Lazy fetch HTTP timeout must be a positive, non-infinite duration.",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher requires a BaseAddress on the HTTP client.",
|
||||
"common.provcache.merkle_root_mismatch": "Merkle root mismatch. Expected: {0}, Computed: {1}",
|
||||
"common.provcache.chunk_verification_failed": "Chunk {0} verification failed. Expected hash: {1}",
|
||||
"common.provcache.artifact_reference_required": "Artifact reference is required.",
|
||||
"common.provcache.artifact_digest_required": "Artifact digest is required.",
|
||||
"common.provcache.decision_digest_required": "DecisionDigest is required.",
|
||||
"common.provcache.decision_digest_verikey_required": "DecisionDigest.VeriKey is required.",
|
||||
"common.provcache.digest_empty": "Digest cannot be empty.",
|
||||
"common.provcache.time_window_required": "Time window cannot be null or empty.",
|
||||
"common.provcache.vex_hash_required": "VEX hash set hash cannot be null or empty.",
|
||||
"common.provcache.policy_hash_required": "Policy hash cannot be null or empty.",
|
||||
"common.provcache.source_hash_required": "Source hash cannot be null or empty.",
|
||||
"common.provcache.signer_set_hash_required": "Signer set hash cannot be null or empty.",
|
||||
|
||||
"common.evidence.toolchain_required": "ToolChain must be set before building index.",
|
||||
"common.evidence.deserialization_failed": "Failed to deserialize evidence index.",
|
||||
"common.evidence.verdict_deserialization_failed": "Failed to deserialize verdict.",
|
||||
"common.evidence.inputs_json_required": "JSON cannot be null or empty.",
|
||||
"common.evidence.inputs_deserialization_failed": "Failed to deserialize pinned scoring inputs.",
|
||||
"common.evidence.bundle_alert_id_required": "AlertId is required",
|
||||
"common.evidence.bundle_artifact_id_required": "ArtifactId is required",
|
||||
"common.evidence.pdf_export_requires_config": "PDF export requires additional configuration",
|
||||
"common.evidence.invalid_uri_format": "Invalid evidence URI format: {0}. Expected stella://type/path",
|
||||
"common.evidence.invalid_uri_missing_path": "Invalid evidence URI format: {0}. Missing path.",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver cannot resolve evidence type: {0}",
|
||||
"common.evidence.schema_resource_not_found": "Schema resource not found: {0}",
|
||||
"common.evidence.schema_resource_not_available": "Schema resource not available: {0}",
|
||||
"common.evidence.provenance_deserialize_failed": "Failed to deserialize provenance for evidence {0}",
|
||||
"common.evidence.bundle_deserialize_failed": "Failed to deserialize verdict bundle",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "Failed to deserialize delta verdict",
|
||||
|
||||
"common.canonicalization.value_empty_after_trim": "Value must not be empty after trimming.",
|
||||
"common.canonicalization.deserialize_failed": "Failed to deserialize {0}",
|
||||
"common.canonicalization.datetime_value_null": "DateTimeOffset value is null.",
|
||||
"common.canonicalization.dict_key_null": "Dictionary key cannot be null.",
|
||||
|
||||
"common.audit.replay_token_value_empty": "Token value cannot be empty.",
|
||||
"common.audit.replay_token_empty": "Token cannot be empty.",
|
||||
"common.audit.replay_token_format_invalid": "Invalid replay token format: {0}",
|
||||
"common.audit.replay_token_version_invalid": "Invalid replay token version: {0}",
|
||||
"common.audit.replay_token_expiration_invalid": "Invalid expiration timestamp in replay token: {0}",
|
||||
"common.audit.replay_token_duplicate_context_key": "AdditionalContext contains duplicate key after normalization: '{0}'.",
|
||||
|
||||
"common.artifact.uri_format_invalid": "Invalid URI format: {0}",
|
||||
"common.artifact.uri_scheme_not_supported": "URI scheme not supported: {0}",
|
||||
"common.artifact.file_not_accessible": "File not accessible: {0}",
|
||||
"common.artifact.file_too_large": "File too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.uri_not_accessible": "URI not accessible: {0} returned {1}",
|
||||
"common.artifact.content_too_large": "Content too large: {0} bytes exceeds 100MB limit",
|
||||
"common.artifact.fetch_failed": "Failed to fetch from {0}: {1}",
|
||||
|
||||
"common.delta_verdict.artifact_ref_required": "Artifact reference is required.",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "Unsupported signing algorithm: {0}",
|
||||
"common.delta_verdict.hmac_secret_required": "HMAC signing requires a base64 secret.",
|
||||
|
||||
"common.eventing.no_entry_assembly": "No entry assembly found",
|
||||
|
||||
"auth.persistence.deserialize_inputs_failed": "Failed to deserialize inputs",
|
||||
"auth.persistence.deserialize_result_failed": "Failed to deserialize result",
|
||||
"auth.persistence.revocation_sequence_mismatch": "Revocation export sequence mismatch. Expected {0}, current {1}.",
|
||||
"auth.persistence.revocation_update_rejected": "Revocation export state update rejected. Expected sequence {0}."
|
||||
"_meta": {
|
||||
"locale": "zh-TW",
|
||||
"namespace": "common",
|
||||
"version": "1.1"
|
||||
},
|
||||
"common.error.generic": "出了點問題。",
|
||||
"common.error.not_found": "未找到請求的資源。",
|
||||
"common.error.entity_not_found": "{0} '{1}' 找不到。",
|
||||
"common.error.unauthorized": "您沒有執行此操作的權限。",
|
||||
"common.error.forbidden": "拒絕訪問。",
|
||||
"common.error.bad_request": "請求無效。",
|
||||
"common.error.conflict": "發生了衝突。資源可能已被修改。",
|
||||
"common.error.timeout": "{0} 秒後請求逾時。",
|
||||
"common.error.server_error": "發生內部伺服器錯誤。請稍後重試。",
|
||||
"common.error.service_unavailable": "該服務暫時無法使用。",
|
||||
"common.error.too_many_requests": "請求太多。請等待並重試。",
|
||||
"common.error.network": "網路錯誤。檢查您的連線。",
|
||||
"common.error.body_required": "請求正文是必需的。",
|
||||
"common.error.deserialization_failed": "無法反序列化 {0}。",
|
||||
"common.error.not_supported": "不支援 {0}。",
|
||||
"common.error.already_exists": "{0} '{1}' 已存在。",
|
||||
"common.error.revoked": "{0} '{1}' 已撤銷,無法使用。",
|
||||
"common.error.state_invalid": "{0} '{1}' 未處於預期狀態。目前狀態:{2}",
|
||||
"common.validation.required": "{0} 為必填項。",
|
||||
"common.validation.invalid": "{0} 無效。",
|
||||
"common.validation.too_long": "{0} 超出了 {1} 字元的最大長度。",
|
||||
"common.validation.too_short": "{0} 必須至少為 {1} 個字元。",
|
||||
"common.validation.out_of_range": "{0} 必須介於 {1} 和 {2} 之間。",
|
||||
"common.validation.invalid_format": "{0} 的格式無效。",
|
||||
"common.validation.duplicate": "{0} 已存在。",
|
||||
"common.validation.empty_not_allowed": "{0} 不得為空。",
|
||||
"common.validation.empty_after_trim": "修剪後{0}不能為空。",
|
||||
"common.validation.greater_than_zero": "{0} 必須大於零。",
|
||||
"common.validation.non_negative": "{0} 必須為非負數。",
|
||||
"common.validation.at_least_one": "至少必須配置一個{0}。",
|
||||
"common.validation.at_least_n": "{0} 必須至少有 {1} 條目。",
|
||||
"common.validation.null_or_empty": "{0} 不能為 null 或為空。",
|
||||
"common.validation.absolute_uri": "{0} 必須是絕對 URI。",
|
||||
"common.validation.invalid_regex": "{0} '{1}' 不是有效的正規表示式。",
|
||||
"common.validation.unknown_value": "{0} '{1}' 無法辨識。允許值:{2}",
|
||||
"common.validation.max_exceeded": "{0} 必須為 {1} 個字元或更少。",
|
||||
"common.actions.save": "儲存",
|
||||
"common.actions.cancel": "取消",
|
||||
"common.actions.delete": "刪除",
|
||||
"common.actions.confirm": "確認",
|
||||
"common.actions.submit": "提交",
|
||||
"common.actions.close": "關閉",
|
||||
"common.actions.retry": "重試",
|
||||
"common.actions.expand": "展開",
|
||||
"common.actions.collapse": "收合",
|
||||
"common.actions.show_more": "顯示更多",
|
||||
"common.actions.show_less": "顯示較少",
|
||||
"common.status.healthy": "健康",
|
||||
"common.status.degraded": "降級",
|
||||
"common.status.unavailable": "不可用",
|
||||
"common.status.unknown": "未知",
|
||||
"common.status.active": "啟用",
|
||||
"common.status.inactive": "停用",
|
||||
"common.status.pending": "待處理",
|
||||
"common.status.running": "執行中",
|
||||
"common.status.completed": "已完成",
|
||||
"common.status.failed": "失敗",
|
||||
"common.status.canceled": "已取消",
|
||||
"common.status.blocked": "已封鎖",
|
||||
"common.severity.critical": "嚴重",
|
||||
"common.severity.high": "高",
|
||||
"common.severity.medium": "中",
|
||||
"common.severity.low": "低",
|
||||
"common.severity.info": "資訊",
|
||||
"common.severity.none": "無",
|
||||
"common.time.seconds_ago": "{0} 秒前",
|
||||
"common.time.minutes_ago": "{0} 分鐘前",
|
||||
"common.time.hours_ago": "{0} 小時前",
|
||||
"common.time.days_ago": "{0} 天前",
|
||||
"common.time.just_now": "現在",
|
||||
"common.ui.loading": "載入中...",
|
||||
"common.ui.saving": "儲存中...",
|
||||
"common.ui.deleting": "正在刪除...",
|
||||
"common.ui.submitting": "正在提交...",
|
||||
"common.ui.no_results": "沒有找到結果。",
|
||||
"common.ui.offline": "您已離線。",
|
||||
"common.ui.reconnecting": "正在重新連線...",
|
||||
"common.ui.back_online": "已重新連線。",
|
||||
"auth.dpop.proof_lifetime_invalid": "DPoP 證明壽命必須大於零。",
|
||||
"auth.dpop.clock_skew_invalid": "DPoP 允許的時鐘偏差必須在 0 秒到 5 分鐘之間。",
|
||||
"auth.dpop.replay_window_invalid": "DPoP 重播視窗必須大於或等於零。",
|
||||
"auth.dpop.algorithm_required": "必須至少配置一種允許的 DPoP 演算法。",
|
||||
"auth.dpop.algorithm_empty_after_normalization": "允許的 DPoP 演算法在歸一化後不能為空。",
|
||||
"auth.dpop.options_required": "必須提供 DPoP 選項。",
|
||||
"auth.dpop.nonce_ttl_invalid": "Nonce TTL 必須大於零。",
|
||||
"auth.dpop.nonce_max_issuance_invalid": "每分鐘最大發行量必須至少為 1。",
|
||||
"auth.dpop.nonce_store_required": "必須指定 Dpop.Nonce.Store。",
|
||||
"auth.dpop.nonce_store_invalid": "Dpop.Nonce.Store 必須是 'memory' 或 'redis'。",
|
||||
"auth.dpop.nonce_redis_required": "使用 'redis' 儲存時必須提供 Dpop.Nonce.RedisConnectionString。",
|
||||
"auth.dpop.nonce_audiences_required": "Dpop.Nonce.RequiredAudiences 必須包含至少一名觀眾。",
|
||||
"auth.dpop.token_three_segments": "令牌必須包含三個段。",
|
||||
"auth.dpop.segment_out_of_range": "段索引超出範圍。",
|
||||
"auth.dpop.header_decode_failed": "無法解碼標頭。",
|
||||
"auth.dpop.header_missing_typ": "DPoP 證明缺少typ=dpop+jwt 標頭。",
|
||||
"auth.dpop.header_missing_alg": "DPoP 證明缺少 alg 標頭。",
|
||||
"auth.dpop.header_unsupported_alg": "不支援的 DPoP 演算法。",
|
||||
"auth.dpop.header_missing_jwk": "DPoP 證明缺少 jwk 標頭。",
|
||||
"auth.dpop.header_invalid_jwk": "DPoP 證明 jwk 標頭無效。",
|
||||
"auth.dpop.payload_decode_failed": "無法解碼有效負載。",
|
||||
"auth.dpop.payload_missing_htm": "DPoP 證明缺少 htm 聲明。",
|
||||
"auth.dpop.payload_htm_mismatch": "DPoP htm 與請求方法不符。",
|
||||
"auth.dpop.payload_missing_htu": "DPoP 證明缺少 htu 聲明。",
|
||||
"auth.dpop.payload_htu_mismatch": "DPoP htu 與請求 URI 不符。",
|
||||
"auth.dpop.payload_missing_iat": "DPoP 證明缺少 IAT 聲明。",
|
||||
"auth.dpop.payload_missing_jti": "DPoP 證據缺少 jti 聲明。",
|
||||
"auth.dpop.payload_iat_invalid": "DPoP 證明 iat 聲明不是有效數字。",
|
||||
"auth.dpop.nonce_missing": "DPoP 證明缺少隨機數字聲明。",
|
||||
"auth.dpop.nonce_mismatch": "DPoP 隨機數不符。",
|
||||
"auth.dpop.proof_future": "未來發布的 DPoP 證明。",
|
||||
"auth.dpop.proof_expired": "DPoP 證明已過期。",
|
||||
"auth.dpop.signature_failed": "DPoP 證明簽章驗證失敗。",
|
||||
"auth.dpop.replay_detected": "DPoP 證明已使用。",
|
||||
"config.authority.schema_version_required": "權限配置需要正的 schemaVersion。",
|
||||
"config.authority.issuer_required": "權限配置需要頒發者 URL。",
|
||||
"config.authority.issuer_absolute": "權限頒發者必須是絕對 URI。",
|
||||
"config.authority.issuer_https": "除非在環回介面上執行,否則授權頒發者必須使用 HTTPS。",
|
||||
"config.authority.duplicate_tenant": "權限設定包含重複的租戶識別碼「{0}」。",
|
||||
"config.authority.property_greater_than_zero": "權限配置要求 {0} 大於零。",
|
||||
"config.authority.property_max": "權限配置要求{0}小於等於{1}。",
|
||||
"config.authority.remote_inference_required": "啟用遠端推理時,權限配置需要至少一個諮詢性 AI 遠端推理設定檔。",
|
||||
"config.tenant.id_required": "每個租戶都需要一個 ID(slug)。",
|
||||
"config.tenant.id_format": "租戶 ID「{0}」只能包含小寫字母、數字與連字號。",
|
||||
"config.tenant.project_format": "租戶「{0}」定義的專案「{1}」只能包含小寫字母、數字與連字號。",
|
||||
"config.tenant.role_missing_config": "租戶「{0}」定義了角色「{1}」,但缺少設定。",
|
||||
"config.tenant.role_scope_required": "租戶「{0}」的角色「{1}」至少必須指定一個範圍。",
|
||||
"config.tenant.role_unknown_scope": "租戶「{0}」的角色「{1}」引用未知範圍「{2}」。",
|
||||
"config.tenant.role_unsupported_attribute": "租戶「{0}」的角色「{1}」定義了不支援的屬性「{2}」。允許的屬性:env、owner、business_tier。",
|
||||
"config.tenant.delegation_max_tokens": "租戶「{0}」的 delegation.maxActiveTokens 在指定時必須大於 0。",
|
||||
"config.tenant.remote_inference_disabled": "當遠端推理停用時,無法授予租戶遠端推理同意。",
|
||||
"config.tenant.remote_inference_consent_version_length": "租戶遠端推理的 consentVersion 不得超過 {0} 個字元。",
|
||||
"config.tenant.remote_inference_consented_by_length": "租戶遠端推理的 consentedBy 不得超過 {0} 個字元。",
|
||||
"config.tenant.remote_inference_consent_version_required": "當 consentGranted=true 時,租戶遠端推理同意需要 consentVersion。",
|
||||
"config.tenant.remote_inference_consented_at_required": "當 consentGranted=true 時,租戶遠端推理同意需要 consentedAt。",
|
||||
"config.service_account.id_required": "委派服務帳戶種子需要 accountId。",
|
||||
"config.service_account.id_format": "服務帳號 ID '{0}' 必須包含小寫字母、數字、冒號、底線或連字號。",
|
||||
"config.service_account.tenant_required": "服務帳戶「{0}」需要指派租戶。",
|
||||
"config.service_account.tenant_unknown": "服務帳戶「{0}」引用了未知租戶「{1}」。",
|
||||
"config.service_account.scope_required": "服務帳戶 '{0}' 必須至少指定一個允許的範圍。",
|
||||
"config.service_account.unsupported_attribute": "服務帳戶 '{0}' 定義了不支援的屬性 '{1}'。允許的屬性:env、owner、business_tier。",
|
||||
"config.plugin.assembly_required": "權限插件 '{0}' 必須定義 assemblyName 或 assemblyPath。",
|
||||
"config.plugin.config_file_required": "權限插件'{0}'必須定義一個configFile。",
|
||||
"config.plugin.config_file_missing": "權限插件 '{0}' 指定的 configFile '{1}' 不存在。",
|
||||
"config.plugin.unknown_capability": "權限插件 '{0}' 宣告未知能力 '{1}'。允許的值:密碼、mfa、clientProvisioning、bootstrap。",
|
||||
"config.plugin.descriptor_null": "權限插件描述符 '{0}' 為空。",
|
||||
"config.delegation.duplicate_account": "委派配置包含重複的服務帳號 ID '{0}'。",
|
||||
"config.delegation.quota_max_tokens": "權限委託配置要求 {0}.MaxActiveTokens 大於零。",
|
||||
"config.mtls.rotation_grace_negative": "Mtls.RotationGrace 必須為非負數。",
|
||||
"config.mtls.audiences_required": "啟用時,Mtls.EnforceForAudiences 必須至少包含一名受眾。",
|
||||
"config.mtls.ca_empty": "Mtls.AllowedCertificateAuthorities 條目不得為空。",
|
||||
"config.mtls.san_types_required": "啟用時,Mtls.AllowedSanTypes 必須至少包含一項。",
|
||||
"config.mtls.subject_patterns_empty": "Mtls.AllowedSubjectPatterns 條目不得為空。",
|
||||
"config.mtls.subject_pattern_invalid": "Mtls.AllowedSubjectPatterns 條目 '{0}' 不是有效的正規表示式。",
|
||||
"config.signing.key_id_required": "權限簽章配置需要 signing.activeKeyId。",
|
||||
"config.signing.key_path_required": "權限簽章配置需要 signing.keyPath。",
|
||||
"config.signing.jwks_cache_range": "權限簽章設定要求 signing.jwksCacheLifetime 介於 00:00:01 和 01:00:00 之間。",
|
||||
"config.signing.additional_key_id_required": "附加簽章金鑰需要 keyId。",
|
||||
"config.signing.additional_key_path_required": "簽名金鑰 '{0}' 需要路徑。",
|
||||
"config.bootstrap.api_key_required": "啟用時,權限引導配置需要 API 金鑰。",
|
||||
"config.bootstrap.idp_required": "啟用時,權限引導配置需要預設身份提供者名稱。",
|
||||
"config.rate_limit.permit_limit": "權限速率限制'{0}'要求permitLimit大於零。",
|
||||
"config.rate_limit.queue_limit": "權限速率限制 '{0}' queueLimit 不能為負數。",
|
||||
"config.rate_limit.window": "權限速率限制'{0}'視窗必須大於零且不超過1小時。",
|
||||
"config.storage.connection_required": "權限儲存需要連接字串。",
|
||||
"config.storage.timeout_invalid": "權限存儲命令超時必須大於零。",
|
||||
"config.ack_token.payload_type_required": "啟用 ack 令牌時必須指定 notifications.ackTokens.payloadType。",
|
||||
"config.ack_token.default_lifetime_invalid": "notifications.ackTokens.defaultLifetime 必須大於零。",
|
||||
"config.ack_token.max_lifetime_invalid": "notifications.ackTokens.maxLifetime 必須大於零且大於或等於defaultLifetime。",
|
||||
"config.ack_token.key_id_required": "啟用 ack 令牌時,必須提供 notifications.ackTokens.activeKeyId。",
|
||||
"config.ack_token.key_path_required": "啟用 ack 令牌時,必須提供 notifications.ackTokens.keyPath。",
|
||||
"config.ack_token.jwks_cache_range": "notifications.ackTokens.jwksCacheLifetime 必須介於 00:00:01 和 01:00:00 之間。",
|
||||
"config.exceptions.null_template": "權限異常路由範本條目不能為空。",
|
||||
"config.exceptions.duplicate_template": "權限異常路由模板'{0}'被配置多次。",
|
||||
"config.exceptions.template_id_required": "權限異常路由範本需要一個 ID。",
|
||||
"config.exceptions.template_route_required": "權限異常路由模板'{0}'需要authorityRouteId。",
|
||||
"config.sealed_mode.evidence_path_required": "啟用強制時必須提供 AirGap.SealedMode.EvidencePath。",
|
||||
"config.sealed_mode.max_age_range": "AirGap.SealedMode.MaxEvidenceAge 必須介於 00:00:01 和 7.00:00:00 之間。",
|
||||
"config.sealed_mode.cache_lifetime_range": "AirGap.SealedMode.CacheLifetime 必須大於零且小於或等於 AirGap.SealedMode.MaxEvidenceAge。",
|
||||
"config.webhook.hosts_required": "啟用時,notifications.webhooks.allowedHosts 必須至少包含一台主機。",
|
||||
"config.escalation.scope_required": "必須指定 notifications.escalation.scope。",
|
||||
"config.anti_forgery.audience_required": "啟用防偽令牌時必須指定 vulnerabilityExplorer.workflow.antiForgery.audience。",
|
||||
"config.anti_forgery.default_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.defaultLifetime 必須大於零。",
|
||||
"config.anti_forgery.max_lifetime_invalid": "vulnerabilityExplorer.workflow.antiForgery.maxLifetime 必須大於零且大於或等於defaultLifetime。",
|
||||
"config.anti_forgery.max_context_entries": "vulnerabilityExplorer.workflow.antiForgery.maxContextEntries 必須為非負數。",
|
||||
"config.anti_forgery.max_context_value_length": "vulnerabilityExplorer.workflow.antiForgery.maxContextValueLength 必須大於零。",
|
||||
"config.attachment.default_lifetime_invalid": "啟用附件令牌時,vulnerabilityExplorer.attachments.defaultLifetime 必須大於零。",
|
||||
"config.attachment.max_lifetime_invalid": "vulnerabilityExplorer.attachments.maxLifetime 必須大於零且大於或等於defaultLifetime。",
|
||||
"config.attachment.payload_type_required": "啟用附件令牌時必須指定 vulnerabilityExplorer.attachments.payloadType。",
|
||||
"config.attachment.max_metadata_entries": "vulnerabilityExplorer.attachments.maxMetadataEntries 必須為非負數。",
|
||||
"config.attachment.max_metadata_value_length": "vulnerabilityExplorer.attachments.maxMetadataValueLength 必須大於零。",
|
||||
"config.api_lifecycle.sunset_after_deprecation": "舊版身份驗證日落日期必須晚於棄用日期。",
|
||||
"config.api_lifecycle.docs_url_format": "舊版驗證文件 URL 必須是絕對 HTTP 或 HTTPS URL。",
|
||||
"crypto.provider.algorithm_not_supported": "提供者 '{1}' 不支援簽名演算法 '{0}'。",
|
||||
"crypto.provider.hash_not_supported": "提供者 '{1}' 不支援哈希演算法 '{0}'。",
|
||||
"crypto.provider.verify_not_supported": "供應商 '{1}' 不支援驗證演算法 '{0}'。",
|
||||
"crypto.provider.key_not_registered": "簽名金鑰 '{0}' 未向提供者 '{1}' 註冊。",
|
||||
"crypto.provider.key_algorithm_mismatch": "簽名金鑰 '{0}' 是為演算法 '{1}' 而不是 '{2}' 註冊的。",
|
||||
"crypto.provider.ec_keys_only": "提供者 '{0}' 僅接受 EC 簽署金鑰。",
|
||||
"crypto.provider.no_password_hashing": "提供程式 '{0}' 不公開密碼雜湊功能。",
|
||||
"crypto.provider.no_content_hashing": "提供者 '{0}' 不支援內容哈希。",
|
||||
"crypto.provider.no_ephemeral_verification": "提供者 '{0}' 不支援臨時驗證。",
|
||||
"crypto.provider.not_signing_capable": "提供者 '{1}' 不支援簽名演算法 '{0}'。",
|
||||
"crypto.provider.es256_only": "提供者 '{0}' 目前僅支援 ES256 簽署金鑰。",
|
||||
"crypto.provider.p256_required": "ES256 簽章金鑰必須使用 NIST P-256 曲線。",
|
||||
"crypto.provider.curve_mismatch": "簽名金鑰曲線不符。演算法 '{1}' 的預期曲線 '{0}'。",
|
||||
"crypto.registry.empty": "必須註冊至少一個加密貨幣提供者。",
|
||||
"crypto.registry.algorithm_required": "需要演算法標識符。",
|
||||
"crypto.registry.signing_not_supported": "任何註冊提供者均不支援簽名演算法 '{0}'。",
|
||||
"crypto.registry.hash_not_supported": "任何註冊提供者均不支援哈希演算法 '{0}'。",
|
||||
"crypto.registry.verify_not_supported": "任何註冊提供者均不支援驗證演算法 '{0}'。",
|
||||
"crypto.registry.active_profile_required": "需要有效的設定檔。",
|
||||
"crypto.registry.profile_not_found": "在註冊表中找不到設定檔 ID '{0}'。",
|
||||
"crypto.registry.profile_id_required": "設定檔 ID 不能為 null 或為空。",
|
||||
"crypto.key.algorithm_required": "需要演算法標識符。",
|
||||
"crypto.key.private_scalar_required": "私鑰參數必須包含標量部分。",
|
||||
"crypto.key.verification_only": "此建構函式僅用於僅驗證金鑰。將 verifyOnly 設為 true。",
|
||||
"crypto.key.public_xy_required": "公鑰參數必須包含 X 和 Y 座標。",
|
||||
"crypto.key.private_material_required": "必須提供私鑰資料。",
|
||||
"crypto.hash.algorithm_unsupported": "不支援的哈希演算法 '{0}'。",
|
||||
"crypto.hash.purpose_required": "目的不能為空。",
|
||||
"crypto.hmac.algorithm_unknown": "未知 HMAC 演算法 '{0}'。",
|
||||
"crypto.hmac.algorithm_unsupported": "不支援的 HMAC 演算法 '{0}'。",
|
||||
"crypto.ecdsa.algorithm_unsupported": "不支援的 ECDSA 簽名演算法 '{0}'。",
|
||||
"crypto.ecdsa.curve_unsupported": "演算法 '{0}' 不支援 ECDSA 曲線映射。",
|
||||
"crypto.digest.required": "需要摘要。",
|
||||
"crypto.digest.prefix_required": "{0} 必須以 '{1}' 開頭。",
|
||||
"crypto.digest.algorithm_unsupported": "'{0}' 中不支援摘要演算法。僅支援 sha256。",
|
||||
"crypto.digest.hex_length": "{0} 必須包含 {1} 十六進位字元。",
|
||||
"crypto.password.memory_cost_invalid": "密碼雜湊記憶體成本必須大於零。",
|
||||
"crypto.password.iterations_invalid": "密碼哈希迭代計數必須大於零。",
|
||||
"crypto.password.parallelism_invalid": "密碼哈希並行度必須大於零。",
|
||||
"crypto.password.algorithm_mismatch": "{0}僅支援{1}演算法。",
|
||||
"crypto.password.pbkdf2_iterations": "PBKDF2 需要正迭代計數。",
|
||||
"crypto.gost.not_der": "簽名不是 DER 編碼的。",
|
||||
"crypto.gost.invalid_der": "GOST 簽章的 DER 結構無效。",
|
||||
"crypto.gost.raw_length": "原始 GOST 簽章必須是 {0} 位元組。",
|
||||
"crypto.gost.neither_format": "簽章有效負載既不是 DER 也不是原始 GOST 格式。",
|
||||
"crypto.gost.coordinate_overflow": "座標超出預期長度。",
|
||||
"crypto.profile.unknown_purpose": "設定檔 '{1}' 中的未知哈希用途 '{0}'。",
|
||||
"crypto.compliance.at_least_one_signing": "必須至少提供一種簽名演算法。",
|
||||
"crypto.compliance.at_least_one_hash": "必須至少提供一種哈希演算法。",
|
||||
"crypto.ed25519.private_key_size": "Ed25519 私鑰必須是 32 或 64 位元組。",
|
||||
"crypto.ed25519.public_key_size": "Ed25519 公鑰必須是 32 位元組。",
|
||||
"crypto.ed25519.no_hashing": "BouncyCastle Ed25519 提供者不公開雜湊功能。",
|
||||
"crypto.ed25519.raw_key_required": "提供者 '{0}' 需要原始 Ed25519 私鑰資料。",
|
||||
"crypto.sm.no_password_hashing": "SM 提供者不會公開密碼雜湊。",
|
||||
"crypto.sm.raw_key_required": "SM2 提供者需要原始私鑰位元組 (PKCS#8 DER)。",
|
||||
"crypto.sm.unsupported_format": "不支援的 SM2 金鑰格式。期待 PEM 或 PKCS#8 DER。",
|
||||
"crypto.sm.disabled": "提供者 '{0}' 已停用。設定 {1}=1(或停用 RequireEnvironmentGate)以啟用軟體 SM2/SM3。",
|
||||
"crypto.di.registry_empty": "加密提供商註冊表不能為空。為 RU 部署配置至少一個提供者。",
|
||||
"crypto.di.ru_openssl_required": "Linux RU 基線需要提供程式 'ru.openssl.gost'(設定 STELLAOPS_CRYPTO_ENABLE_RU_OPENSSL=0 以明確覆蓋)。",
|
||||
"crypto.di.ru_provider_required": "RU Linux 基線設定錯誤:ru.openssl.gost 和 ru.pkcs11 皆透過環境停用。啟用至少一個提供者。",
|
||||
"crypto.di.no_plugins_loaded": "沒有載入加密貨幣提供者。檢查插件配置和清單。",
|
||||
"crypto.kms.rotation_via_policy": "{0} 輪換必須透過 {1} 策略或計畫進行編排。",
|
||||
"crypto.kms.revocation_via_policy": "{0} 撤銷必須透過 {1} API 或控制台進行管理。",
|
||||
"crypto.kms.public_key_missing_x": "公鑰缺少 X 座標。",
|
||||
"crypto.kms.public_key_missing_y": "公鑰缺少 Y 座標。",
|
||||
"crypto.kms.hash_failed": "無法使用 SHA-256 對有效負載進行雜湊處理。",
|
||||
"crypto.kms.key_not_found": "金鑰 '{0}' 不存在。",
|
||||
"crypto.kms.key_revoked": "金鑰 '{0}' 已被撤銷且無法輪換。",
|
||||
"crypto.kms.key_revoked_signing": "金鑰'{0}'已被撤銷,不能用於簽章。",
|
||||
"crypto.kms.key_version_not_found": "金鑰 '{1}' 的金鑰版本 '{0}' 不存在。",
|
||||
"crypto.kms.key_no_active_version": "金鑰 '{0}' 沒有有效版本。",
|
||||
"crypto.kms.key_version_inactive": "金鑰版本 '{0}' 未啟動。目前狀態:{1}",
|
||||
"crypto.kms.key_no_public_material": "金鑰 '{0}' 版本 '{1}' 沒有公鑰材料。",
|
||||
"crypto.kms.algorithm_unsupported": "檔案 KMS 驅動程式不支援演算法 '{0}'。",
|
||||
"crypto.kms.curve_unsupported": "不支援曲線 '{0}'。",
|
||||
"crypto.kms.metadata_failed": "無法建立或載入關鍵元資料。",
|
||||
"crypto.kms.algorithm_mismatch": "演算法不匹配。預期為 '{0}',收到為 '{1}'。",
|
||||
"crypto.kms.version_exists": "金鑰 '{1}' 的金鑰版本 '{0}' 已存在。",
|
||||
"crypto.kms.material_not_found": "未找到 '{0}' 版本的金鑰材料。",
|
||||
"crypto.kms.envelope_deserialize_failed": "密鑰信封無法反序列化。",
|
||||
"crypto.kms.payload_deserialize_failed": "無法反序列化密鑰有效負載。",
|
||||
"crypto.kms.pem_empty": "公鑰 PEM 不能為空。",
|
||||
"crypto.kms.no_primary_version": "加密金鑰 '{0}' 沒有有效的主要版本。",
|
||||
"crypto.kms.es256_only": "提供者 '{0}' 僅支援 ES256 簽署金鑰。",
|
||||
"crypto.kms.version_metadata_required": "KMS 簽章金鑰必須包含元資料條目 'kms.version'。",
|
||||
"crypto.kms.missing_public_key": "KMS 簽署金鑰缺少公鑰材料。",
|
||||
"crypto.fido2.curve_unsupported": "不支援的 FIDO2 曲線 OID '{0}'。",
|
||||
"crypto.fido2.rotation_required": "FIDO2 憑證輪替需要重新註冊。",
|
||||
"crypto.fido2.revocation_relying_party": "FIDO2 憑證吊銷必須在依賴方進行管理。",
|
||||
"crypto.fido2.missing_x": "FIDO2 公鑰缺少 X 座標。",
|
||||
"crypto.fido2.missing_y": "FIDO2 公鑰缺少 Y 座標。",
|
||||
"crypto.fido2.authenticator_required": "必須註冊 IFido2Authenticator 才能使用 FIDO2 KMS。",
|
||||
"crypto.pkcs11.rotation_hsm": "PKCS#11 輪調需要 HSM 管理工具。",
|
||||
"crypto.pkcs11.revocation_hsm": "PKCS#11 撤銷必須由 HSM 策略處理。",
|
||||
"crypto.pkcs11.slot_not_found": "無法解析 PKCS#11 插槽。",
|
||||
"crypto.pkcs11.private_key_not_found": "未找到 PKCS#11 私鑰。",
|
||||
"crypto.pkcs11.public_key_not_found": "未找到 PKCS#11 公鑰。",
|
||||
"crypto.pkcs11.missing_ec_point": "公鑰缺少 EC 點。",
|
||||
"crypto.pkcs11.missing_ec_params": "公鑰缺少 EC 參數。",
|
||||
"crypto.pkcs11.unsupported_point_format": "不受支援的 EC 點格式。",
|
||||
"crypto.pkcs11.curve_oid_unsupported": "不支援的 EC 曲線 OID '{0}'。",
|
||||
"crypto.pkcs11.curve_unsupported": "不支援的 EC 曲線 '{0}'。",
|
||||
"common.provcache.sbom_hash_required": "SBOM 雜湊值不能為 null 或為空。",
|
||||
"common.provcache.fetch_url_absolute": "延遲取得基本 URL 必須是絕對的。",
|
||||
"common.provcache.fetch_url_no_userinfo": "延遲取得基本 URL 不得包含使用者資訊。",
|
||||
"common.provcache.fetch_url_host_required": "延遲取得基本 URL 必須包含主機。",
|
||||
"common.provcache.fetch_url_scheme_invalid": "不允許延遲取得基本 URL 方案 '{0}'。",
|
||||
"common.provcache.fetch_url_host_invalid": "延遲取得基本 URL 主機 '{0}' 未列入允許名單。",
|
||||
"common.provcache.no_chunks_provided": "沒有提供塊。",
|
||||
"common.provcache.bundle_deserialize_failed": "無法反序列化捆綁包。",
|
||||
"common.provcache.signer_not_configured": "未配置簽署者。",
|
||||
"common.provcache.signing_requested_no_signer": "已請求簽名但未配置簽署者。",
|
||||
"common.provcache.cache_entry_not_found": "未找到 VeriKey 的快取條目:{0}",
|
||||
"common.provcache.chunk_manifest_not_found": "未找到證明根的區塊清單:{0}",
|
||||
"common.provcache.http_timeout_invalid": "延遲取得 HTTP 超時必須是正數、非無限持續時間。",
|
||||
"common.provcache.http_base_address_required": "HttpChunkFetcher 需要 HTTP 用戶端上的 BaseAddress。",
|
||||
"common.provcache.merkle_root_mismatch": "梅克爾根不匹配。預期:{0},計算值:{1}",
|
||||
"common.provcache.chunk_verification_failed": "區塊 {0} 驗證失敗。預期哈希值:{1}",
|
||||
"common.provcache.artifact_reference_required": "需要工件參考。",
|
||||
"common.provcache.artifact_digest_required": "需要工件摘要。",
|
||||
"common.provcache.decision_digest_required": "需要決策摘要。",
|
||||
"common.provcache.decision_digest_verikey_required": "DecisionDigest.VeriKey 為必填項。",
|
||||
"common.provcache.digest_empty": "摘要不能為空。",
|
||||
"common.provcache.time_window_required": "時間視窗不能為 null 或為空。",
|
||||
"common.provcache.vex_hash_required": "VEX 雜湊集雜湊不能為 null 或為空。",
|
||||
"common.provcache.policy_hash_required": "策略哈希不能為 null 或為空。",
|
||||
"common.provcache.source_hash_required": "來源哈希不能為 null 或為空。",
|
||||
"common.provcache.signer_set_hash_required": "簽署者集雜湊值不能為 null 或為空。",
|
||||
"common.evidence.toolchain_required": "ToolChain 必須在建立索引之前設定。",
|
||||
"common.evidence.deserialization_failed": "無法反序列化證據索引。",
|
||||
"common.evidence.verdict_deserialization_failed": "無法反序列化判決。",
|
||||
"common.evidence.inputs_json_required": "JSON 不能為 null 或為空。",
|
||||
"common.evidence.inputs_deserialization_failed": "無法反序列化固定的評分輸入。",
|
||||
"common.evidence.bundle_alert_id_required": "警報 ID 為必填項",
|
||||
"common.evidence.bundle_artifact_id_required": "ArtifactId 為必填項",
|
||||
"common.evidence.pdf_export_requires_config": "PDF 匯出需要額外配置",
|
||||
"common.evidence.invalid_uri_format": "無效證據 URI 格式:{0}。預期 stella://type/path",
|
||||
"common.evidence.invalid_uri_missing_path": "無效證據 URI 格式:{0}。缺少路徑。",
|
||||
"common.evidence.null_resolver_cannot_resolve": "NullTypeResolver 無法解析證據類型:{0}",
|
||||
"common.evidence.schema_resource_not_found": "未找到架構資源:{0}",
|
||||
"common.evidence.schema_resource_not_available": "架構資源不可用:{0}",
|
||||
"common.evidence.provenance_deserialize_failed": "無法反序列化證據來源 {0}",
|
||||
"common.evidence.bundle_deserialize_failed": "無法反序列化判決包",
|
||||
"common.evidence.delta_verdict_deserialize_failed": "無法反序列化 delta 判決",
|
||||
"common.canonicalization.value_empty_after_trim": "修剪後值不能為空。",
|
||||
"common.canonicalization.deserialize_failed": "反序列化{0}失敗",
|
||||
"common.canonicalization.datetime_value_null": "DateTimeOffset 值為空。",
|
||||
"common.canonicalization.dict_key_null": "字典鍵不能為空。",
|
||||
"common.audit.replay_token_value_empty": "令牌值不能為空。",
|
||||
"common.audit.replay_token_empty": "令牌不能為空。",
|
||||
"common.audit.replay_token_format_invalid": "無效的重播令牌格式:{0}",
|
||||
"common.audit.replay_token_version_invalid": "無效重放令牌版本:{0}",
|
||||
"common.audit.replay_token_expiration_invalid": "重播令牌中的過期時間戳無效:{0}",
|
||||
"common.audit.replay_token_duplicate_context_key": "標準化後,AdditionalContext 包含重複鍵:'{0}'。",
|
||||
"common.artifact.uri_format_invalid": "無效的 URI 格式:{0}",
|
||||
"common.artifact.uri_scheme_not_supported": "不支援 URI 方案:{0}",
|
||||
"common.artifact.file_not_accessible": "檔案無法存取:{0}",
|
||||
"common.artifact.file_too_large": "檔案太大:{0} 位元組超過 100MB 限制",
|
||||
"common.artifact.uri_not_accessible": "URI 無法存取:{0} 返回 {1}",
|
||||
"common.artifact.content_too_large": "內容太大:{0} 位元組超過 100MB 限制",
|
||||
"common.artifact.fetch_failed": "無法從 {0} 取得:{1}",
|
||||
"common.delta_verdict.artifact_ref_required": "需要工件參考。",
|
||||
"common.delta_verdict.unsupported_signing_algorithm": "不支援的簽章演算法:{0}",
|
||||
"common.delta_verdict.hmac_secret_required": "HMAC 簽章需要 Base64 金鑰。",
|
||||
"common.eventing.no_entry_assembly": "未找到入口組件",
|
||||
"auth.persistence.deserialize_inputs_failed": "無法反序列化輸入",
|
||||
"auth.persistence.deserialize_result_failed": "無法反序列化結果",
|
||||
"auth.persistence.revocation_sequence_mismatch": "撤銷導出序列不符。預期為 {0},目前為 {1}。",
|
||||
"auth.persistence.revocation_update_rejected": "撤銷導出狀態更新被拒絕。預期序列 {0}。"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user