Элемент Localization

Примечание

В Azure Active Directory B2C пользовательские политики преимущественно предназначены для выполнения сложных сценариев. В большинстве случаев рекомендуется использовать встроенные пользовательские потоки. Ознакомьтесь со статьей Начало работы с настраиваемыми политиками в Azure 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 содержит следующие атрибуты:

attribute Обязательно Описание
Активировано Нет Возможные значения: true или false.

Элемент Localization содержит следующие элементы XML:

Элемент Вхождения Описание
SupportedLanguages 1:n Список поддерживаемых языков.
LocalizedResources 0:n Список локализованных ресурсов.

SupportedLanguages

Элемент SupportedLanguages содержит следующие атрибуты.

attribute Обязательно Описание
DefaultLanguage Да Язык, который будет использоваться по умолчанию для локализованных ресурсов.
MergeBehavior Нет Перечисление значений, которые объединяются с любым элементом ClaimType с таким же идентификатором в родительской политике. Используйте этот атрибут, чтобы переопределить определенное в базовой политике утверждение. Возможные значения: Append, Prepend или ReplaceAll. Значение Append означает, что указанная коллекция данных должна добавляться в конец коллекции, указанной в родительской политике. Значение Prepend означает, что указанная коллекция данных должна добавляться в начало коллекции, указанной в родительской политике. Значение ReplaceAll означает, что определенную в родительской политике коллекцию данных нужно игнорировать и заменить данными, определенными в текущей политике.

SupportedLanguages

Элемент SupportedLanguages содержит следующие элементы:

Элемент Вхождения Описание
SupportedLanguage 1:n Отображает содержимое, которое соответствует тега языка в RFC 5646 (теги для идентификации языков).

LocalizedResources

Элемент LocalizedResources содержит следующие атрибуты:

attribute Обязательно Описание
Идентификатор Да Идентификатор, который используется для уникальной идентификации локализованных ресурсов.

Элемент LocalizedResources содержит следующие элементы:

Элемент Вхождения Описание
LocalizedCollections 0:n Определяет целые коллекции для разных языков и региональных параметров. Коллекция может содержать разное количество элементов и разных строк для разных языков и региональных параметров. Примерами коллекций можно считать перечисления, которые указываются в типах утверждений. Например, содержимое раскрывающегося списка стран или регионов, отображаемое для пользователя.
LocalizedStrings 0:n Определяет все строки, за исключением включенных в коллекции, для разных языков и региональных параметров.

LocalizedCollections

Элемент LocalizedCollections содержит следующие элементы:

Элемент Вхождения Описание
LocalizedCollection 1:n Список поддерживаемых языков.

LocalizedCollection

Элемент LocalizedCollections содержит следующие атрибуты:

attribute Обязательно Описание
ElementType Да Ссылается на элемент ClaimType или элемент пользовательского интерфейса в файле политики.
ElementId Да Строка, содержащая ссылку на тип утверждения, который уже определен в разделе ClaimsSchema и используется, если ElementType имеет значение ClaimType.
TargetCollection Да Целевая коллекция.

Элемент LocalizedCollections содержит следующие элементы:

Элемент Вхождения Описание
Item 0:n Определяет варианты, которые пользователь может выбрать для утверждения в пользовательском интерфейсе, например, значения в раскрывающемся списке.

Элемент Item содержит следующие атрибуты:

attribute Обязательно Описание
текст Да Понятная для пользователя отображаемая строка, которая размещается в пользовательском интерфейсе для этого параметра.
Значение Да Строковое значение утверждения, связанное с этим вариантом.
SelectByDefault Нет Указывает, следует ли по умолчанию выбирать этот параметр в пользовательском интерфейсе. Возможные значения: True или False.

Следующий пример демонстрирует использование элемента LocalizedCollections. Он содержит два элемента LocalizedCollection по одному для английского и испанского языков. Оба они устанавливают для утверждения Gender коллекцию Restriction со списком элементов на английском и испанском языках. Дополнительные примеры см. в демонстрационном ролике об ограничении перечисления в определении утверждения.

<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

Элемент LocalizedStrings содержит следующие элементы:

Элемент Вхождения Описание
LocalizedString 1:n Локализованная строка.

Элемент LocalizedStrings содержит следующие атрибуты:

attribute Обязательно Описание
ElementType Да Возможны следующие значения: ClaimsProvider, ClaimType, ErrorMessage, GetLocalizedStringsTransformationClaimType, FormatLocalizedStringTransformationClaimType, Predicate, PredicateValidation или UxElement.
ElementId Да Если ElementType имеет значение ClaimType, Predicate или PredicateValidation, этот элемент содержит ссылку на тип утверждения, которое уже определено в разделе ClaimsSchema.
StringId Да Если ElementType имеет значение ClaimType, этот элемент содержит ссылку на атрибут типа утверждения. Возможные значения: DisplayName, AdminHelpText или PatternHelpText. Значение DisplayName задает отображаемое имя утверждения. Значение AdminHelpText задает имя текста справки для пользователя утверждения. Значение PatternHelpText задает текста справки по шаблону утверждения. Если ElementType имеет значение UxElement, этот элемент содержит ссылку на атрибут элемента пользовательского интерфейса. Если ElementType имеет значение ErrorMessage, этот элемент задает идентификатор сообщения об ошибке. Полный список идентификаторов UxElement для строк локализации можно найти на этой странице.

ElementType

Ссылка ElementType на тип утверждения, преобразование утверждения или элемент пользовательского интерфейса в политике, подлежащей локализации.

Элемент для локализации ElementType ElementId StringId
Название поставщика удостоверений ClaimsProvider Идентификатор элемента ClaimsExchange
Атрибуты типа утверждения ClaimType Имя типа утверждения Атрибут для утверждения, подлежащего локализации. Возможные значения: AdminHelpText, DisplayName, PatternHelpText и UserHelpText.
Сообщение об ошибке ErrorMessage Идентификатор сообщения об ошибке
Копирует локализованные строки в утверждения GetLocalizedStringsTra nsformationClaimType Имя выходного утверждения
Сообщение пользователя предиката Predicate Имя предиката Атрибут для предиката, подлежащего локализации. Возможные значения: HelpText.
Сообщение пользователя группы предикатов PredicateValidation Идентификатор элемента PredicateValidation. Идентификатор элемента PredicateGroup. Группа предикатов должна быть дочерним элементом элемента проверки предиката, как определено в ElementId.
Элементы пользовательского интерфейса UxElement Идентификатор элемента пользовательского интерфейса, подлежащего локализации.
Элемент управления отображением DisplayControl Идентификатор элемент управления отображением. Идентификатор элемента пользовательского интерфейса, подлежащего локализации.

Примеры

ClaimsProvider

Значение ClaimsProvider используется для локализации одного из отображаемых имен поставщиков утверждений.

<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

Значение параметра ClaimType используется для локализации одного из атрибутов утверждения.

<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

Значение ErrorMessage используется для локализации одного из системных сообщений об ошибке.

<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="ResponseMessge_EmailExists" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>

В следующем примере показано, как локализовать формат строки преобразования утверждений FormatLocalizedStringTransformationClaimType.

<LocalizedString ElementType="FormatLocalizedStringTransformationClaimType" StringId="ResponseMessge_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>

Predicate

Значение Predicate используется для локализации одного из сообщений об ошибке Predicate.

<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 используется для локализации одного из сообщений об ошибке в группе PredicateValidation.

<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 используется для локализации одного из элементов пользовательского интерфейса. В следующем примере показано, как локализовать кнопки "Продолжить" и "Отмена".

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

DisplayControl

Значение DisplayControl используется для локализации одного из элементов пользовательского интерфейса для управления отображением. Если этот параметр включен, элемент управления отображением localizedStrings получает precedence над некоторыми из идентификаторов строк (StringID) UxElement, такими как ver_but_send, ver_but_edit, ver_but_resend и ver_but_verify. В следующем примере показано, как локализовать кнопки "Отправить" и "Проверить".

<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>
  ...

Дальнейшие действия

Примеры локализации см. в следующих статьях: