Localization 要素

重要

2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。

注

Azure Active Directory B2C で、カスタム ポリシーは、主に、複雑なシナリオに取り組む用途向けに設計されています。 ほとんどのシナリオで、組み込みユーザー フローを使用することをお勧めします。 まだ行っていない場合は、Active Directory B2C でのカスタム ポリシーの概要に関する記事で、カスタム ポリシー スターター パックの詳細を確認してください。

Localization 要素を使用すると、ユーザー体験のポリシーで複数のロケールまたは言語をサポートできます。 ポリシーでのローカリゼーション のサポートにより、次のことができます。

  • ポリシーでサポートされている言語の明示的な一覧を設定し、既定の言語を選択します。
  • 言語固有の文字列とコレクションを指定します。
<Localization Enabled="true">
  <SupportedLanguages DefaultLanguage="en" MergeBehavior="ReplaceAll">
    <SupportedLanguage>en</SupportedLanguage>
    <SupportedLanguage>es</SupportedLanguage>
  </SupportedLanguages>
  <LocalizedResources Id="api.localaccountsignup.en">
  <LocalizedResources Id="api.localaccountsignup.es">
  ...

Localization 要素には、次の属性が含まれています。

特性 必須 説明
有効化済み いいえ 指定できる値: true または false。

Localization 要素には、次の XML 要素が含まれています

要素 発生回数 説明
サポートされている言語 1:n サポートされている言語の一覧。
ローカライズされたリソース 0:n ローカライズされたリソースの一覧。

サポートされている言語

SupportedLanguages 要素には、次の属性が含まれています。

特性 必須 説明
デフォルト言語 イエス ローカライズされたリソースの既定値として使用する言語。
マージビヘイビア いいえ 同じ識別子を持つ親ポリシーに存在する ClaimType とマージされる値の列挙値。 この属性は、基本ポリシーで指定された要求を上書きするときに使用します。 指定できる値: Append、Prepend、または ReplaceAll。 Append値は、存在するデータのコレクションを親ポリシーで指定されたコレクションの末尾に追加することを指定します。 Prepend値は、親ポリシーで指定されたコレクションの前に、存在するデータのコレクションを追加する必要があることを指定します。 ReplaceAll値は、親ポリシーで定義されているデータのコレクションを無視し、代わりに現在のポリシーで定義されているデータを使用することを指定します。

サポートされている言語

SupportedLanguages 要素には、次の要素が含まれています。

要素 発生回数 説明
サポート言語 1:n RFC 5646 - 言語を識別するためのタグに従って言語タグに準拠するコンテンツを表示します。

ローカライズされたリソース

LocalizedResources 要素には、次の属性が含まれています。

特性 必須 説明
ID (アイディー) イエス ローカライズされたリソースを一意に識別するために使用される識別子。

LocalizedResources 要素には、次の要素が含まれています。

要素 発生回数 説明
ローカライズされたコレクション 0:n さまざまなカルチャのコレクション全体を定義します。 コレクションには、さまざまなカルチャに対して異なる数の項目と異なる文字列を含めることができます。 コレクションの例には、要求の種類に表示される列挙体が含まれます。 たとえば、国/地域の一覧がドロップダウン リストにユーザーに表示されます。
ローカライズされた文字列 0:n コレクションに表示される文字列を除く、さまざまなカルチャのすべての文字列を定義します。

ローカライズされたコレクション

LocalizedCollections 要素には、次の要素が含まれています。

要素 発生回数 説明
ローカライズされたコレクション 1:n サポートされている言語の一覧。

ローカライズされたコレクション

LocalizedCollection 要素には、次の属性が含まれています。

特性 必須 説明
要素タイプ イエス ポリシー ファイル内の ClaimType 要素またはユーザー インターフェイス要素を参照します。
エレメントID イエス ElementType が ClaimType に設定されている場合に使用される ClaimsSchema セクションで既に定義されている要求の種類への参照を含む文字列。
TargetCollection (ターゲットコレクション) イエス ターゲット コレクション。

LocalizedCollection 要素には、次の要素が含まれています。

要素 発生回数 説明
アイテム 0:n ドロップダウンの値など、ユーザー インターフェイスの要求に対してユーザーが選択できるオプションを定義します。

Item 要素には、次の属性が含まれています。

特性 必須 説明
テキスト イエス このオプションのユーザー インターフェイスでユーザーに表示する必要があるわかりやすい表示文字列。
価値 イエス このオプションの選択に関連付けられている文字列要求値。
SelectByDefault (デフォルト選択) いいえ このオプションが既定で UI で選択するかどうかを示します。 指定できる値True または False。

LocalizedCollections 要素の使用例を次に示します。 これには、2 つの LocalizedCollection 要素が含まれています。1 つは英語用、もう 1 つはスペイン語用です。 両方とも、要求の Gender コレクションに、英語とスペイン語の項目の一覧を設定します。 その他のサンプルについては、要求の制限リストに関するライブ デモをご覧ください。

<LocalizedResources Id="api.selfasserted.en">
  <LocalizedCollections>
    <LocalizedCollection ElementType="ClaimType" ElementId="Gender" TargetCollection="Restriction">
      <Item Text="Female" Value="F" />
      <Item Text="Male" Value="M" />
    </LocalizedCollection>
  </LocalizedCollections>
</LocalizedResources>

<LocalizedResources Id="api.selfasserted.es">
 <LocalizedCollections>
   <LocalizedCollection ElementType="ClaimType" ElementId="Gender" TargetCollection="Restriction">
      <Item Text="Femenino" Value="F" />
      <Item Text="Masculino" Value="M" />
    </LocalizedCollection>
  </LocalizedCollections>
</LocalizedResources>

ローカライズされた文字列

LocalizedStrings 要素には、次の要素が含まれています。

要素 発生回数 説明
LocalizedString 1:n ローカライズされた文字列。

LocalizedString 要素には、次の属性が含まれています。

特性 必須 説明
要素タイプ イエス 指定できる値: ClaimsProvider、 ClaimType、 ErrorMessage、 GetLocalizedStringsTransformationClaimType、 FormatLocalizedStringTransformationClaimType、 Predicate、 PredicateValidation、または UxElement。
エレメントID イエス ElementType が ClaimType、Predicate、またはPredicateValidationに設定されている場合、この要素には ClaimsSchema セクションで既に定義されている要求の種類への参照が含まれます。
ストリングID イエス ElementType が ClaimType に設定されている場合、この要素には要求の種類の属性への参照が含まれます。 指定できる値: DisplayName、AdminHelpText、または PatternHelpText。 DisplayName値は、要求の表示名を設定するために使用されます。 AdminHelpText値は、要求ユーザーのヘルプ テキスト名を設定するために使用されます。 PatternHelpText値は、要求パターンのヘルプ テキストを設定するために使用されます。 ElementType が UxElement に設定されている場合、この要素にはユーザー インターフェイス要素の属性への参照が含まれます。 ElementType が ErrorMessage に設定されている場合、この要素はエラー メッセージの識別子を指定します。 識別子の完全な一覧については、「UxElement ID」を参照してください。

要素タイプ

ローカライズするポリシー内の要求の種類、要求変換、またはユーザー インターフェイス要素への ElementType 参照。

ローカライズする要素 要素タイプ エレメントID ストリングID
ID プロバイダー名 ClaimsProvider ClaimsExchange 要素の ID
要求の種類の属性 ClaimType 要求の種類の名前 ローカライズする要求の属性。 使用可能な値: AdminHelpText、 DisplayName、 PatternHelpText、および UserHelpText。
エラーメッセージ ErrorMessage エラー メッセージの ID
ローカライズされた文字列を要求にコピーします GetLocalizedStringsTransformationClaimType 出力要求の名前
述語ユーザー メッセージ Predicate 述語の名前 ローカライズする述語の属性。 使用可能な値: HelpText。
述語グループのユーザー メッセージ PredicateValidation PredicateValidation 要素の ID。 PredicateGroup 要素の ID。 述語グループは、ElementId で定義されている述語検証要素の子である必要があります。
ユーザー インターフェイスの要素 UxElement ローカライズするユーザー インターフェイス要素の ID。
表示コントロール DisplayControl 表示コントロールの ID。 ローカライズするユーザー インターフェイス要素の ID。

例示

クレーム プロバイダー

ClaimsProvider 値は、クレーム プロバイダーの表示名の 1 つをローカライズするために使用されます。

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="FacebookExchange" TechnicalProfileReferenceId="Facebook-OAUTH" />
    <ClaimsExchange Id="GoogleExchange" TechnicalProfileReferenceId="Google-OAUTH" />
    <ClaimsExchange Id="LinkedInExchange" TechnicalProfileReferenceId="LinkedIn-OAUTH" />
  </ClaimsExchanges>
</OrchestrationStep>

次の例は、要求プロバイダーの表示名をローカライズする方法を示しています。

<LocalizedString ElementType="ClaimsProvider" StringId="FacebookExchange">Facebook</LocalizedString>
<LocalizedString ElementType="ClaimsProvider" StringId="GoogleExchange">Google</LocalizedString>
<LocalizedString ElementType="ClaimsProvider" StringId="LinkedInExchange">LinkedIn</LocalizedString>

クレームタイプ

ClaimType 値は、要求属性の 1 つをローカライズするために使用されます。

<ClaimType Id="email">
  <DisplayName>Email Address</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Email address that can be used to contact you.</UserHelpText>
  <UserInputType>TextBox</UserInputType>
</ClaimType>

次の例は、電子メール要求の種類の DisplayName、UserHelpText、および PatternHelpText 属性をローカライズする方法を示しています。

<LocalizedString ElementType="ClaimType" ElementId="email" StringId="DisplayName">Email</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="email" StringId="UserHelpText">Please enter your email</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="email" StringId="PatternHelpText">Please enter a valid email address</LocalizedString>

エラーメッセージ

ErrorMessage 値は、システム エラー メッセージの 1 つをローカライズするために使用されます。

<TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="RaiseErrorIfClaimsPrincipalAlreadyExists">true</Item>
    <Item Key="UserMessageIfClaimsPrincipalAlreadyExists">You are already registered, please press the back button and sign in instead.</Item>
  </Metadata>
  ...
</TechnicalProfile>

次の例は、UserMessageIfClaimsPrincipalAlreadyExists エラー メッセージをローカライズする方法を示しています。

<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfClaimsPrincipalAlreadyExists">The account you are trying to create already exists, please sign-in.</LocalizedString>

FormatLocalizedStringTransformationClaimType (英語)

FormatLocalizedStringTransformationClaimType 値は、要求をローカライズされた文字列に書式設定するために使用されます。 詳細については、「FormatLocalizedString 要求変換」を参照してください。

<ClaimsTransformation Id="SetResponseMessageForEmailAlreadyExists" TransformationMethod="FormatLocalizedString">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="stringFormatId" DataType="string" Value="ResponseMessage_EmailExists" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>

次の例は、FormatLocalizedStringTransformationClaimType 要求変換の文字列形式をローカライズする方法を示しています。

<LocalizedString ElementType="FormatLocalizedStringTransformationClaimType" StringId="ResponseMessage_EmailExists">The email '{0}' is already an account in this organization. Click Next to sign in with that account.</LocalizedString>

GetLocalizedStringsTransformationClaimType (英語)

GetLocalizedStringsTransformationClaimType 値は、ローカライズされた文字列をクレームにコピーするために使用されます。 詳細については、「GetLocalizedStringsTransformation 要求変換」を参照してください。

<ClaimsTransformation Id="GetLocalizedStringsForEmail" TransformationMethod="GetLocalizedStringsTransformation">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="subject" TransformationClaimType="email_subject" />
    <OutputClaim ClaimTypeReferenceId="message" TransformationClaimType="email_message" />
    <OutputClaim ClaimTypeReferenceId="codeIntro" TransformationClaimType="email_code" />
    <OutputClaim ClaimTypeReferenceId="signature" TransformationClaimType="email_signature" />
   </OutputClaims>
</ClaimsTransformation>

次の例は、GetLocalizedStringsTransformation 要求変換の出力要求をローカライズする方法を示しています。

<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_subject">Contoso account email verification code</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_message">Thanks for verifying your account!</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_code">Your code is</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_signature">Sincerely</LocalizedString>

述語

述語の値は、 述語 エラー メッセージの 1 つをローカライズするために使用されます。

<Predicates>
  <Predicate Id="LengthRange" Method="IsLengthRange"  HelpText="The password must be between 6 and 64 characters.">
    <Parameters>
      <Parameter Id="Minimum">6</Parameter>
      <Parameter Id="Maximum">64</Parameter>
    </Parameters>
  </Predicate>
  <Predicate Id="Lowercase" Method="IncludesCharacters" HelpText="a lowercase letter">
    <Parameters>
      <Parameter Id="CharacterSet">a-z</Parameter>
    </Parameters>
  </Predicate>
  <Predicate Id="Uppercase" Method="IncludesCharacters" HelpText="an uppercase letter">
    <Parameters>
      <Parameter Id="CharacterSet">A-Z</Parameter>
    </Parameters>
  </Predicate>
</Predicates>

次の例は、述語のヘルプ テキストをローカライズする方法を示しています。

<LocalizedString ElementType="Predicate" ElementId="LengthRange" StringId="HelpText">The password must be between 6 and 64 characters.</LocalizedString>
<LocalizedString ElementType="Predicate" ElementId="Lowercase" StringId="HelpText">a lowercase letter</LocalizedString>
<LocalizedString ElementType="Predicate" ElementId="Uppercase" StringId="HelpText">an uppercase letter</LocalizedString>

述語検証

PredicateValidation 値は、 PredicateValidation グループのエラー メッセージの 1 つをローカライズするために使用されます。

<PredicateValidations>
  <PredicateValidation Id="CustomPassword">
    <PredicateGroups>
      <PredicateGroup Id="LengthGroup">
        <PredicateReferences MatchAtLeast="1">
          <PredicateReference Id="LengthRange" />
        </PredicateReferences>
      </PredicateGroup>
      <PredicateGroup Id="CharacterClasses">
        <UserHelpText>The password must have at least 3 of the following:</UserHelpText>
        <PredicateReferences MatchAtLeast="3">
          <PredicateReference Id="Lowercase" />
          <PredicateReference Id="Uppercase" />
          <PredicateReference Id="Number" />
          <PredicateReference Id="Symbol" />
        </PredicateReferences>
      </PredicateGroup>
    </PredicateGroups>
  </PredicateValidation>
</PredicateValidations>

次の例は、述語検証グループのヘルプ テキストをローカライズする方法を示しています。

<LocalizedString ElementType="PredicateValidation" ElementId="CustomPassword" StringId="CharacterClasses">The password must have at least 3 of the following:</LocalizedString>

UxElement (ユークスエレメント)

UxElement 値は、ユーザー インターフェイス要素の 1 つをローカライズするために使用されます。 次の例は、[続行] ボタンと [キャンセル] ボタンをローカライズする方法を示しています。

<LocalizedString ElementType="UxElement" StringId="button_continue">Create new account</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="button_cancel">Cancel</LocalizedString>

ディスプレイコントロール

DisplayControl 値は、 表示コントロール のユーザー インターフェイス要素の 1 つをローカライズするために使用されます。 有効にすると、表示コントロールの localizedStrings が、ver_but_send、ver_but_edit、ver_but_resend、ver_but_verifyなどの一部の UxElement StringID よりも優先されます。 次の例は、送信ボタンと確認ボタンをローカライズする方法を示しています。

<LocalizedString ElementType="DisplayControl" ElementId="emailVerificationControl" StringId="but_send_code">Send verification code</LocalizedString>
<LocalizedString ElementType="DisplayControl" ElementId="emailVerificationControl" StringId="but_verify_code">Verify code</LocalizedString>

セルフアサート技術プロファイルのメタデータ セクションでは、参照先の ContentDefinition で DataUri を ページ レイアウト バージョン 2.1.0 以降に設定する必要があります。 例えば次が挙げられます。

<ContentDefinition Id="api.selfasserted">
  <DataUri>urn:com:microsoft:aad:b2c:elements:selfasserted:2.1.0</DataUri>
  ...

次のステップ

ローカライズの例については、次の記事を参照してください。