# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
name=Name
any.edit=${name} \u3092\u7de8\u96c6
any.new=New Client App
any.finish=${name} \u3092\u5b9f\u884c
any.cancel=${name} \u3092\u30ad\u30e3\u30f3\u30bb\u30eb
clientId=Client Id
entityId=Entity Id
serviceId=Service Id
clientAppId=Id
redirectUris=Redirect URIs
logout=Logout
signAssertions=Sign Assertions
signResponses=Sign Responses
encryptionOptional=Encryption Optional
encryptAssertions=Encrypt Assertions
requiredNameIdFormat=NameId Format
clientSecret=Client Secret
signIdToken=Sign IdToken
jwtAccessToken=JWT Access Token
subjectType=Subject Type
supportedGrantTypes=Supported Grant Types
supportedResponseTypes=Supported Response Types
logoutUri=Logout URI
metadataLocation=Metadata Location
metadataSignatureLocation=Metadata Signature Location
requiredAuthenticationContextClass=Authentication Context Class
skewAllowance=Skew Allowance
nameIdQualifier=NameId Qualifier
assertionAudiences=Assertion Audiences
serviceProviderNameIdQualifier=Service Provider NameId Qualifier
signingSignatureAlgorithms=Signing Signature Algorithms
signingSignatureReferenceDigestMethods=Signing Signature Reference Digest Methods
encryptionDataAlgorithms=Encryption Data Algorithms
encryptionKeyAlgorithms=Encryption Key Algorithms
signingSignatureBlackListedAlgorithms=Signing Signature BlackListed Algorithms
encryptionBlackListedAlgorithms=Encryption BlackListed Algorithms
description=Description
theme=Theme
authPolicy=Authentication Policy
accessPolicy=Access Policy
attrReleasePolicy=Attribute Release Policy
properties.title=Properties for ${name}
type_extensions.title=properties
