diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/InternationalizationConfiguration.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/InternationalizationConfiguration.java index dc8599865..22deef321 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/InternationalizationConfiguration.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/InternationalizationConfiguration.java @@ -12,6 +12,12 @@ public class InternationalizationConfiguration { public LocaleResolver localeResolver() { // TODO if we want to control the order, we can implement our own locale resolver instead of using the SessionLocaleResolver. SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver(); + + // NOTE: If we set a default here, Locale.getDefault's behavior will be consistent, but then Accept-Language + // is not honored (only ?lang=). If we do not set a default, the default is determined at runtime by the JVM. + // This may break unit tests if the system does not determine the default to be English. + // sessionLocaleResolver.setDefaultLocale(new Locale("en")); + return sessionLocaleResolver; } @@ -19,7 +25,9 @@ public LocaleResolver localeResolver() { public MappedResourceBundleMessageSource messageSource() { MappedResourceBundleMessageSource source = new MappedResourceBundleMessageSource(); source.setBasenames("i18n/messages"); - source.setUseCodeAsDefaultMessage(true); + source.setUseCodeAsDefaultMessage(false); //TODO Why was this true? + source.setFallbackToSystemLocale(false); // allows us to return messages.properties instead of + // messages_en.properties for unsupported languages. return source; } } diff --git a/backend/src/main/resources/i18n/messages.properties b/backend/src/main/resources/i18n/messages.properties index d9a5d0df4..3f87d2de8 100644 --- a/backend/src/main/resources/i18n/messages.properties +++ b/backend/src/main/resources/i18n/messages.properties @@ -8,3 +8,452 @@ # # Do this for each language we want to support. # Ideally, all messages should exist for each language. + +action.dashboard=Dashboard +action.logout=Logout +action.add=Add +action.add-new=Add New +action.add-new-provider=Add a new metadata provider +action.add-new-source=Add a new metadata source +action.clear=Clear +action.delete=Delete +action.remove=Remove +action.save=Save +action.toggle=Toggle +action.add-contact=Add Contact +action.add-contacts=Add Contacts +action.use-mine=Use My Changes +action.use-theirs=Use Their Changes +action.discard-changes=Discard Changes +action.add-endpoint=Add Endpoint +action.add-nameid-format=Add NameID Format +action.add-certificate=Add Certificate +action.add-entity-id=Add Entity ID +action.download-file=Download File +action.cancel=Cancel +action.search=Search +action.select-id=Select ID +action.finish-later=Finish Later +action.back=Back +action.next=Next +action.create=Create +action.copy=Copy +action.choose-file=Choose File +action.search-by=Search By +action.preview=Preview +action.select-metadata-filter-type=Select a metadata filter type +action.add-authentication-method=Add Authentication Method +action.move-up=Move Up +action.move-down=Move Down +action.edit=Edit +action.add-filter=Add Filter +action.manage-filters=Manage Filters + +value.enabled=Enabled +value.disabled=Disabled +value.none=None +value.file=File +value.memory=Memory +value.true=True +value.false=False +value.regex=Regex +value.script=Script +value.entity-id=Entity ID + +value.file-backed-http-metadata-provider=FileBackedHttpMetadataProvider +value.entity-attributes-filter=EntityAttributes Filter +value.spdescriptor=SPSSODescriptor +value.attr-auth-descriptor=AttributeAuthorityDescriptor + +brand.header.title=Source Management (default) +brand.logo-link-label=Shibboleth +brand.logo-link-description=Link to Shibboleth Website +brand.logo-alt=Shibboleth Logo - Click to be directed to www.shibboleth.net +brand.footer.text=Links to Shibboleth resources: +brand.footer.links-label-1=Home Page +brand.footer.links-desc-1=Shibboleth.net open-source community home page +brand.footer.links-label-2=Wiki +brand.footer.links-desc-2=Shibboleth.net open-source community wiki +brand.footer.links-label-3=Issue Tracker +brand.footer.links-desc-3=Shibboleth.net open-source community issue tracker +brand.footer.links-label-4=Mailing List +brand.footer.links-desc-4=Shibboleth.net open-source community mailing list +brand.footer.copyright=Copyright \u00A9 Internet2 + +heading.shibboleth=Shibboleth + +label.metadata-source=Metadata Source +label.metadata-sources=Metadata Sources +label.metadata-provider=Metadata Provider +label.metadata-providers=Metadata Providers +label.source-management=Source Management +label.search-files=Search Files +label.service-provider-entity-id=Service Provider Entity ID +label.service-provider-name-dashboard-display-only=Service Provider Name (Dashboard Display Only) +label.enable-this-service=Enable this service? +label.organization-name=Organization Name +label.organization-display-name=Organization Display Name +label.organization-url=Organization URL +label.contact-information=Contact Information: +label.name=Name +label.type=Type +label.email-address=Email Address +label.assertion-consumer-service-endpoints=Assertion Consumer Service Endpoints +label.my-changes=My Changes +label.their-changes=Their Changes +label.new-endpoint=New Endpoint +label.default=(default) +label.assertion-consumer-services-location=Assertion Consumer Service Location +label.assertion-consumer-service-location-binding=Assertion Consumer Service Location Binding +label.select-binding=Select Binding Type +label.mark-as-default=Mark as Default +label.attribute-name=Attribute Name +label.yes=Yes +label.check-all-attributes=Check All Attributes +label.clear-all-attributes=Clear All Attributes +label.protocol-support-enumeration=Protocol Support Enumeration +label.select-protocol=Select Protocol +label.nameid-format=NameID Format +label.enable-this-service-opon-saving=Enable this service upon saving? +label.name-and-entity-id=Name and Entity ID +label.organization-information=Organization Information +label.contact-information=Contact Information +label.given-name=Given Name +label.contact-type=Contact Type +label.user-interface-mdui-infromation=User Interface / MDUI Information +label.display-name=Display Name +label.information-url=Information URL +label.description=Description +label.privacy-statement=Privacy Statement URL +label.logo-url=Logo URL +label.logo-width=Logo Width +label.logo-height=Logo Height +label.sp-sso-descriptor-information=SP SSO Descriptor Information +label.logout-endpoints=Logout Endpoints +label.binding-types=Binding Type +label.security-information=Security Information +label.is-there-a-x509-certificate=Is there a X509 Certificate? +label.authentication-requests-signed=Authentication Requests Signed? +label.want-assertions-signed=Want Assertions Signed? +label.x509-certificates=X509 Certificates +label.certificate-name-display-only=Certificate Name (Display Only) +label.certificate=Certificate +label.assertion-consumer-services=Assertion Consumer Services +label.assertion-consumer-service-locations=Assertion Consumer Service Location +label.assertion-consumer-service-location-binding=Assertion Consumer Service Binding +label.relying-party-overrides=Relying Party Overrides +label.sign-the-assertion=Sign the Assertion? +label.turn-off-encryption-of-response=Turn off Encryption of Response? +label.use-sha1-signing-algorithm=Use SHA1 Signing Algorithm? +label.ignore-any-sp-requested-authentication-method=Ignore any SP-Requested Authentication Method? +label.omit-not-before-condition=Omit Not Before Condition? +label.responderid=ResponderID +label.attribute-release=Attribute Release +label.true=True +label.false=False +label.no=No +label.new-cert=New Certificate +label.url=URL +label.privacy-statement-url=Privacy Statement URL +label.contact-name=Contact Name +label.select-contact-type=Select Contact Type +label.contact-email-address=Contact Email Address +label.sign-the-assertion=Sign the Assertion +label.dont-sign-the-response=Don\u0027t Sign the Response +label.turn-off-encryption-of-response=Turn Off Encryption of Response +label.use-sha1-signing-algorithm=Use SHA1 Signing Algorithm +label.nameid-format-to-send=NameID Format to Send +label.authentication-methods-to-use=Authentication Methods to Use +label.auth-method-indexed=Authentication Method +label.ignore-any-sp-requested-authentication-method=Ignore any SP-Requested Authentication Method +label.omit-not-before-condition=Omit Not Before Condition +label.responder-id=ResponderID +label.preview-provider=Preview XML +label.search-entity-id=Search Entity Id +label.new-filter=Edit EntityAttributesFilter +label.min-4-chars=Minimum 4 characters. +label.new-filter=New Filter - EntityAttributes +label.service-provider=Metadata Source Name: +label.created-date=Created Date: +label.service-entity-id=Metadata Source Entity ID: +label.service-provider-status=Metadata Source Status: +label.current-metadata-sources=Current Metadata Sources +label.current-metadata-providers=Current Metadata Providers +label.add-a-new-metadata-provider=Add a new metadata provider +label.name-and-entityid=Name and EntityId +label.org-info=Organization Information +label.service-resolver-name-dashboard-display-only=Service Resolver Name (Dashboard Display Only) +label.service-resolver-entity-id=Service Resolver Entity ID +label.add-a-new-metadata-source=Add a new metadata source - Finish Summary +label.name-and-entityid=Name and Entity ID. +label.finish-summary-validation=Finished! +label.select-entity-id-to-copy=Select the Entity ID to copy +label.metadata-source-name-dashboard-display-only=Metadata Source Name (Dashboard Display Only) +label.service-resolver-entity-id=New Entity ID +label.sections-to-copy=Sections to Copy? +label.add-a-new-metadata-resolver=Add a new metadata source +label.how-are-you-adding-the-metadata-information=How are you adding the metadata information? +label.upload-url=Upload/URL +label.or=or +label.name-and-upload-url=Name and Upload Url +label.service-resolver-file=Select Resolver Metadata File +label.service-resolver-metadata-url=Service Resolver Metadata URL +label.search-criteria-by=Search Criteria by { displayType } +label.entity-ids-added=Entity Ids Added +label.ui-mdui-info=User Interface / MDUI Information +label.sp-sso-descriptor-info=SP SSO Descriptor Information +label.security-info=Security Information +label.assertion-consumer-services=Assertion Consumer Service +label.sp-org-info=SP/Organization Information +label.finished=Finished! +label.signing=Signing +label.encryption=Encryption +label.both=Both +label.sp-sso-descriptor-info=Organization Information +label.security-descriptor-info=Security Descriptor Information +label.entity-id=Entity ID +label.service-provider-name=Service Provider Name +label.organization=Organization +label.contacts=Contacts +label.mdui=MDUI Information +label.service-provider-sso-descriptor=Service Provider Sso Descriptor +label.service-enabled=Service Enabled +label.filter-name=Filter Name +label.filter-enabled=Filter Enabled +label.filter-target=FilterTarget +label.filter-type=Filter Type +label.value=Value +label.binding-type=Binding Type +label.sign-assertion=Sign Assertions +label.dont-sign-response=Don\u0027t Sign Response +label.turn-off-encryption=Turn off encryption +label.use-sha=Use Sha +label.ignore-authentication-method=Ignore Authentication Method +label.omit-not-before=Omit Not Before +label.responder-id=Responder ID +label.name-id-formats=Name ID Formats +label.name-id-format= Name ID Format +label.authentication-methods=Authentication Methods +label.authentication-method=Authentication Method +label.x509-certificate-available=x509 Certificate Available +label.authentication-requests-signed=Authentication Requests Signed +label.want-assertions-signed=Want Assertions Signed +label.x509-certificates=x509 Certificates +label.protocol-support-enum=Protocol Support Enumeration +label.binding=Binding +label.location-url=Location URL +label.make-default=Make Default +label.metadata-provider-name-dashboard-display-only=Metadata Provider Name (Dashboard Display Only) +label.default-authentication-methods=Default Authentication Method(s) + +label.filter-name=Filter Name (Dashboard Display Only) +label.metadata-filter-name=Metadata Filter Name (Dashboard Display Only) +label.filter-enable=Enable this Filter? +label.search-criteria=Search Criteria +label.metadata-filter=Metadata Filter +label.metadata-filter-type=Metadata Filter Type + +label.http-connection-attributes=HTTP Connection Attributes +label.http-security-attributes=HTTP Security Attributes +label.http-proxy-attributes=HTTP Proxy Attributes +label.http-caching-attributes=HTTP Caching Attributes + +label.connection-request-timeout=Connection Request Timeout +label.connection-timeout=Connection Timeout +label.socket-timeout=Socket Timeout +label.disregard-tls-cert=Disregard TLS Certificate? +label.proxy-host=Proxy Host +label.proxy-port=Proxy Port +label.proxy-user=Proxy User +label.proxy-password=Proxy Password +label.http-caching=HTTP Caching? +label.select-caching-type=Select Caching Type +label.http-caching-directory=HTTP Cache Directory +label.http-max-cache-entries=HTTP Max Cache Entries +label.max-cache-entry-size=HTTP Max Cache Entry Size +label.duration=Duration +label.real-number=Real Number (between 0.0 and 1.0) +label.min-refresh-delay=Min Refresh Delay +label.max-refresh-delay=Max Refresh Delay +label.refresh-delay-factor=Refresh Delay Factor +label.resolve-via-predicates-only=Resolve Via Predicates Only? +label.expiration-warning-threshold=Expiration Warning Threshold + +label.satisfy-any-predicates=Satisfy Any Predicates? +label.use-default-predicate-reg=Use Default Predicate Registry? +label.fail-fast-init=Fail Fast Initialization? +label.require-valid-metadata=Require Valid Metadata? +label.backup-file-init-refresh-delay=Backup File Init Next Refresh Delay +label.backing-file=Backing File +label.init-from-backup=Initialize From Backup File? +label.metadata-url=Metadata URL +label.xml-id=ID +label.enable-service=Enable this service? +label.metadata-provider-type=Metadata Provider Type +label.metadata-provider-name=Metadata Provider Name +label.select-metadata-type=Select a metadata provider type +label.metadata-provider-status=Metadata Provider Status +label.enable-provider-upon-saving=Enable Metadata Provider upon saving? + +label.enable-filter=Enable Filter? +label.required-valid-until=Required Valid Until Filter +label.max-validity-interval=Max Validity Interval +label.signature-validation-filter=Signature Validation Filter +label.require-signed-root=Require Signed Root +label.certificate-file=Certificate File +label.entity-role-whitelist=Entity Role Whitelist Filter +label.retained-roles=Retained Roles +label.remove-roleless-entity-descriptors=Remove Roleless Entity Descriptors? +label.remove-empty-entities-descriptors=Remove Empty Entities Descriptors? + +label.select-metadata-provider-type=Select Metadata Provider Type +label.filter-list=Filter List +label.common-attributes=Common Attributes +label.reloading-attributes=Reloading Attributes +label.metadata-filter-plugins=Metadata Filter Plugins +label.advanced-settings=Advanced Settings +label.edit-metadata-provider=Edit Metadata Provider + +label.metadata-ui=User Interface / MDUI Information +label.descriptor-info=SP SSO Descriptor Information +label.key-info=Security Information +label.assertion=Assertion Consumer Service +label.relying-party=Relying Party Overrides +label.org-info=Organization Information + +label.attribute-eduPersonPrincipalName=eduPersonPrincipalName (EPPN) +label.attribute-uid=uid +label.attribute-mail=mail +label.attribute-surname=surname +label.attribute-givenName=givenName +label.attribute-eduPersonAffiliation=eduPersonAffiliation +label.attribute-eduPersonScopedAffiliation=eduPersonScopedAffiliation +label.attribute-eduPersonPrimaryAffiliation=eduPersonPrimaryAffiliation +label.attribute-eduPersonEntitlement=eduPersonEntitlement +label.attribute-eduPersonAssurance=eduPersonAssurance +label.attribute-eduPersonUniqueId=eduPersonUniqueId +label.attribute-employeeNumber=employeeNumber +label.force-authn=Force AuthN + +message.must-be-unique=Must be unique. +message.name-must-be-unique=Name must be unique. +message.uri-valid-format=URI must be valid format. +message.id-unique=ID must be unique. + +message.conflict=Conflict +message.data-version-contention=Data Version Contention +message.contention-new-version=A newer version of this metadata source has been saved. Below are a list of changes. You can use your changes or their changes. +message.organization-feedback=These three fields must all be entered if any single field has a value. +message.valid-email=Must be a valid Email Address +message.valid-url=Must be a valid URL +message.must-be-valid-url=Must be a valid URL +message.must-be-integer=Must be an integer equal to or greater than 0 +message.delete-source-title=Delete Metadata Source? +message.delete-source-body=You are deleting a metadata source. This cannot be undone. Continue? +message.incomplete-form=Incomplete Form +message.delete-filter-title=Delete Metadata Filter? +message.delete-filter-body=You are deleting a metadata filter. This cannot be undone. Continue? +message.unsaved-dialog-title=Save your information? +message.unsaved-editor=You have not saved your changes. If you exit this screen, your changes will be lost. +message.editor-invalid=All forms must be valid before changes can be saved! +message.unsaved-source-1=You have not completed the wizard! Do you wish to save this information? You can finish the wizard later by clicking the \u0027Edit\u0027 +message.unsaved-source-2=icon on the dashboard. +message.service-resolver-name-required=Service Resolver Name is required +message.entity-id-required=Entity ID is required +message.entity-id-must-be-unique=Entity ID must be unique +message.file-upload-alert=Note: You can only import a file with a single entityID (EntityDescriptor element) in it. Anything more in that file will result in an error. +message.add-new-md-resolver=Add a new metadata source +message.wizard-status=Step { index } of { length } +message.entity-id-min-unique=You must add at least one entity id target and they must each be unique. +message.required-for-scripts=Required for Scripts +message.required-for-regex=Required for Regex + +tooltip.force-authn=Disallows use (or reuse) of authentication results and login flows that don\u0027t provide a real-time proof of user presence in the login process +tooltip.service-provider-name-dashboard-display-only=Service Provider Name (Dashboard Display Only) +tooltip.service-provider-entity-id=Service Provider Entity ID +tooltip.organization-name=Organization Name +tooltip.organization-display-name=Organization Display Name +tooltip.organization-url=Organization URL +tooltip.name=Name +tooltip.type=Type +tooltip.email-address=Email Address +tooltip.assertion-consumer-service-location=Assertion Consumer Service Location +tooltip.assertion-consumer-service-location-binding=Assertion Consumer Service Location Binding +tooltip.mark-as-default=Mark as Default +tooltip.protocol-support-enumeration=Protocol Support Enumeration +tooltip.nameid-format=Add NameID Format +tooltip.enable-this-service-upon-saving=Enable this service upon saving +tooltip.authentication-requests-signed=Authentication Requests Signed +tooltip.want-assertions-signed=Want Assertions Signed +tooltip.certificate-name=Certificate Name +tooltip.certificate-type=Certificate Type +tooltip.certificate=Certificate +tooltip.logout-endpoints-url=Logout Endpoints Url +tooltip.logout-endpoints-binding-type=Logout Endpoints Binding Type +tooltip.mdui-display-name=Typically, the IdP Display Name field will be presented on IdP discovery service interfaces. +tooltip.mdui-information-url=The IdP Information URL is a link to a comprehensive information page about the IdP. This page should expand on the content of the IdP Description field. +tooltip.mdui-description=The IdP Description is a brief description of the IdP service. On a well-designed discovery interface, the IdP Description will be presented to the user in addition to the IdP Display Name, and so the IdP Description helps disambiguate duplicate or similar IdP Display Names. +tooltip.mdui-privacy-statement-url=The IdP Privacy Statement URL is a link to the IdP\u0027s Privacy Statement. The content of the Privacy Statement should be targeted at end users. +tooltip.mdui-logo-url=The IdP Logo URL in metadata points to an image file on a remote server. A discovery service, for example, may rely on a visual cue (i.e., a logo) instead of or in addition to the IdP Display Name. +tooltip.mdui-logo-width=The logo should have a minimum width of 100 pixels +tooltip.mdui-logo-height=The logo should have a minimum height of 75 pixels and a maximum height of 150 pixels (or the application will scale it proportionally) +tooltip.organization-name=Organization Name +tooltip.organization-display-name=Organization Display Name +tooltip.organization-url=Organization Url +tooltip.contact-name=Contact Name +tooltip.contact-type=Contact Type +tooltip.contact-email=Contact Email +tooltip.sign-assertion=Sign Assertion +tooltip.dont-sign-response=Don\u0027t Sign Response +tooltip.turn-off-encryption=Turn Off Encryption of Response +tooltip.usa-sha-algorithm=Use SHA1 Signing Algorithm +tooltip.authentication-methods-to-use=Authentication Methods to Use +tooltip.ignore-auth-method=Ignore any SP-Requested Authentication Method +tooltip.omit-not-before-condition=Omit Not Before Condition +tooltip.responder-id=ResponderId +tooltip.instruction=Information icon - press spacebar to read additional information for this form field +tooltip.attribute-release-table=Attribute release table - select the attributes you want to release (default unchecked) +tooltip.metadata-filter-name=Metadata Filter Name +tooltip.metadata-filter-type=Metadata Filter Type +tooltip.connection-request-timeout=The maximum amount of time to wait for a connection to be returned from the HTTP client\u0027s connection pool manager. Set to PT0S to disable. This attribute is incompatible with httpClientRef. +tooltip.connection-timeout=The maximum amount of time to wait to establish a connection with the remote server. Set to PT0S to disable. This attribute is incompatible with httpClientRef. +tooltip.socket-timeout=The maximum amount of time to wait between two consecutive packets while reading from the socket connected to the remote server. Set to PT0S to disable. This attribute is incompatible with httpClientRef. +tooltip.disregard-tls-cert=If true, no TLS certificate checking will take place over an HTTPS connection. This attribute is incompatible with httpClientRef. (Be careful with this setting, it is typically only used during testing. See the HttpClientConfiguration topic for more information.) +tooltip.proxy-host=The hostname of the HTTP proxy through which connections will be made. This attribute is incompatible with httpClientRef. +tooltip.proxy-port=The port of the HTTP proxy through which connections will be made. This attribute is incompatible with httpClientRef. +tooltip.proxy-user=The username used with the HTTP proxy through which connections will be made. This attribute is incompatible with httpClientRef. +tooltip.proxy-password=The password used with the HTTP proxy through which connections will be made. This attribute is incompatible with httpClientRef. +tooltip.http-caching=The type of low-level HTTP caching to perform. There are three choices: 'none' indicates the HTTP response is not cached by the client library, 'file' indicates the HTTP response is written to disk (but will not survive a restart), 'memory' indicates the HTTP response is stored in memory. This attribute is incompatible with httpClientRef and its value may not be specified as a bean property. Some metadata providers, most notably the reloading 'batch-oriented' providers, implement HTTP caching at a higher layer and tend to work best with httpCaching='none'. +tooltip.http-caching-directory=If httpCaching='file', this attribute specifies where retrieved files are to be cached. This attribute is incompatible with httpClientRef. +tooltip.http-max-cache-entries=The maximum number of responses written to cache. This attribute is incompatible with httpClientRef. +tooltip.max-cache-entry-size=The maximum response body size that may be cached, in bytes. This attribute is incompatible with httpClientRef. + +tooltip.metadata-provider-name=Metadata Provider Name +tooltip.metadata-provider-type=Metadata Provider Type +tooltip.xml-id=Identifier for logging, identification for command line reload, etc. +tooltip.metadata-url=Identifier for logging, identification for command line reload, etc. +tooltip.init-from-backup=Flag indicating whether initialization should first attempt to load metadata from the backup file. If true, foreground initialization will be performed by loading the backing file, and then a refresh from the remote HTTP server will be scheduled to execute in a background thread, after a configured delay. This can improve IdP startup times when the remote HTTP file is large in size. +tooltip.backing-file=Specifies where the backing file is located. If the remote server is unavailable at startup, the backing file is loaded instead. +tooltip.backup-file-init-refresh-delay=Delay duration after which to schedule next HTTP refresh when initialized from the backing file. +tooltip.require-valid-metadata=Whether candidate metadata found by the resolver must be valid in order to be returned (where validity is implementation specific, but in SAML cases generally depends on a validUntil attribute.) If this flag is true, then invalid candidate metadata will not be returned. +tooltip.fail-fast-init=Whether to fail initialization of the underlying MetadataResolverService (and possibly the IdP as a whole) if the initialization of a metadata provider fails. When false, the IdP may start, and will continue to attempt to reload valid metadata if configured to do so, but operations that require valid metadata will fail until it does. +tooltip.use-default-predicate-reg=Whether to fail initialization of the underlying MetadataResolverService (and possibly the IdP as a whole) if the initialization of a metadata provider fails. When false, the IdP may start, and will continue to attempt to reload valid metadata if configured to do so, but operations that require valid metadata will fail until it does. +tooltip.satisfy-any-predicates=Flag which determines whether predicates used in filtering are connected by a logical 'OR' (true) or by logical 'AND' (false). +tooltip.enable-provider-upon-saving=Enable Metadata Provider upon saving? + +tooltip.max-validity-interval=Defines the window within which the metadata is valid. +tooltip.require-signed-root=If true, this fails to load metadata with no signature on the root XML element. +tooltip.certificate-file=A key used to verify the signature. Conflicts with trustEngineRef and both of the child elements. +tooltip.retained-roles=Retained Roles +tooltip.remove-roleless-entity-descriptors=Controls whether to keep entity descriptors that contain no roles. +tooltip.remove-empty-entities-descriptors=Controls whether to keep entities descriptors that contain no entity descriptors. + +tooltip.min-refresh-delay=Lower bound on the next refresh from the time calculated based on the metadata\u0027s expiration. +tooltip.max-refresh-delay=Upper bound on the next refresh from the time calculated based on the metadata\u0027s expiration. +tooltip.refresh-delay-factor=A factor applied to the initially determined refresh time in order to determine the next refresh time (typically to ensure refresh takes place prior to the metadata\u0027s expiration). Attempts to refresh metadata will generally begin around the product of this number and the maximum refresh delay. +tooltip.resolve-via-predicates-only=Flag indicating whether resolution may be performed solely by applying predicates to the entire metadata collection, when an entityID input criterion is not supplied. +tooltip.expiration-warning-threshold=For each attempted metadata refresh (whether or not fresh metadata is obtained), if requireValidMetadata is true, and there is a validUntil XML attribute on the document root element, and the difference between validUntil and the current time is less than expirationWarningThreshold, the system logs a warning about the impending expiration. + +tooltip.filter-name=Filter Name +tooltip.enable-filter=Enable Filter? +tooltip.enable-service=Enable Service? diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/InternationalizationMessagesControllerTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/InternationalizationMessagesControllerTests.groovy index 73acb5d14..9287ff552 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/InternationalizationMessagesControllerTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/InternationalizationMessagesControllerTests.groovy @@ -106,11 +106,21 @@ class InternationalizationMessagesControllerTests extends Specification { result.andExpect(content().json(expectedFrenchResult)) } - def "GET messages with an unsupported Accept-Language returns the default language"() { + def "GET messages with an unsupported Accept-Language returns the default (unspecified) language"() { when: def result = mockMvc.perform( get(messagesUrl) - .header("Accept-Language", "es")) + .header("Accept-Language", "ja")) + + then: + result.andExpect(content().json(expectedDefaultResult)) + } + + def "GET messages with a made-up Accept-Language returns the default (unspecified) language"() { + when: + def result = mockMvc.perform( + get(messagesUrl) + .header("Accept-Language", "foo")) then: result.andExpect(content().json(expectedDefaultResult)) diff --git a/backend/src/main/resources/i18n/messages_es.properties b/backend/src/test/resources/i18n/messages_es.properties similarity index 100% rename from backend/src/main/resources/i18n/messages_es.properties rename to backend/src/test/resources/i18n/messages_es.properties