Elemento de localização

Observação

No Azure Active Directory B2C, as políticas personalizadas são projetadas principalmente para tratar de cenários complexos. Para a maioria dos cenários, recomendamos que você use fluxos de usuários predefinidos. Se você ainda não fez isso, saiba mais sobre o pacote de início de política personalizado em Introdução às políticas personalizadas no Active Directory B2C.

O elemento Localization permite que você dê suporte a várias localidades ou idiomas na política para os percursos do usuário. O suporte de localização em políticas permite que você:

  • Configure a lista explícita de idiomas com suporte em uma política e escolha um idioma padrão.
  • Forneça coleções e cadeias de caracteres específicas a um idioma.
<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">
  ...

O elemento Localization contém os seguintes atributos:

Atributo Obrigatório Descrição
habilitado No Valores possíveis: true ou false.

O elemento Localization contém os seguintes elementos XML

Elemento Ocorrências Descrição
SupportedLanguages 1:n Lista de idiomas com suporte.
LocalizedResources 0:n Lista de recursos localizados.

SupportedLanguages

O elemento SupportedLanguages contém os seguintes atributos:

Atributo Obrigatório Descrição
DefaultLanguage Yes O idioma a ser usado como o padrão para recursos localizados.
MergeBehavior No Valores de enumeração de valores mesclados junto com qualquer ClaimType presente em uma política pai com o mesmo identificador. Use esse atributo quando substituir uma declaração especificada na política de base. Valores possíveis: Append, Prepend ou ReplaceAll. O valor Append especifica que a coleta de dados presente deve ser acrescentada ao final da coleção especificada na política pai. O valor Prepend especifica que a coleta de dados presente deve ser adicionada antes da coleção especificada na política pai. O valor ReplaceAll especifica que a coleta de dados definida na política pai deve ser ignorada, em vez disso, usando, em vez disso, os dados definidos na política atual.

SupportedLanguages

O elemento SupportedLanguages contém os seguintes elementos:

Elemento Ocorrências Descrição
SupportedLanguage 1:n Exibe o conteúdo que está em conformidade com uma marca de idioma conforme RFC 5646 – Marcas para Identificar Idiomas.

LocalizedResources

O elemento LocalizedResources contém os seguintes atributos:

Atributo Obrigatório Descrição
ID Yes Um identificador usado para identificar exclusivamente os recursos localizados.

O elemento LocalizedResources contém os seguintes elementos:

Elemento Ocorrências Descrição
LocalizedCollections 0:n Define coleções inteiras em várias culturas. Uma coleção pode ter um número diferente de itens e diferentes cadeias de caracteres para várias culturas. Exemplos de coleções incluem enumerações que aparecem em tipos de declaração. Por exemplo, é mostrada uma lista de país/região para o usuário em uma lista suspensa.
LocalizedStrings 0:n Define todas as cadeias de caracteres, exceto pelas cadeias de caracteres exibidas em coleções, em várias culturas.

LocalizedCollections

O elemento LocalizedCollections contém os seguintes elementos:

Elemento Ocorrências Descrição
LocalizedCollection 1:n Lista de idiomas com suporte.

LocalizedCollection

O elemento LocalizedCollection contém os seguintes atributos:

Atributo Obrigatório Descrição
ElementType Yes Faz referência a um elemento ClaimType ou um elemento de interface do usuário no arquivo de política.
ElementId Yes Uma cadeia de caracteres que contém uma referência a um tipo de declaração já definido na seção ClaimsSchema usada se ElementType está definido como um ClaimType.
TargetCollection Yes A coleção de destino.

O elemento LocalizedCollection contém os seguintes elementos:

Elemento Ocorrências Descrição
Item 0:n Define uma opção disponível para o usuário selecionar para uma declaração de interface do usuário, como um valor em uma lista suspensa.

O elemento Item contém os seguintes atributos:

Atributo Obrigatório Descrição
Texto Yes A cadeia de caracteres de exibição amigável deve ser mostrada ao usuário na interface do usuário para essa opção.
Valor Yes O valor da declaração da cadeia de caracteres associada com essa opção.
SelectByDefault Não Indica se esta opção deve ser selecionada ou não por padrão na interface do usuário. Os valores possíveis: True ou False.

O exemplo a seguir mostra o uso do elemento LocalizedCollections. Ele contém dois elementos LocalizedCollection, um para inglês e outro para espanhol. Ambos definem a coleção de Restrição da declaração Gender com uma lista de itens para inglês e espanhol. Para obter mais amostras, confira a demonstração ao vivo de enumeração de restrição de declaração.

<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

O elemento LocalizedStrings contém os seguintes elementos:

Elemento Ocorrências Descrição
LocalizedString 1:n Uma cadeia de caracteres localizada.

O elemento LocalizedString contém os seguintes atributos:

Atributo Obrigatório Descrição
ElementType Yes Valores possíveis: ClaimsProvider, ClaimType, ErrorMessage, GetLocalizedStringsTransformationClaimType, FormatLocalizedStringTransformationClaimType, Predicate, PredicateValidation ou UxElement.
ElementId Yes Se ElementType for definido como ClaimType, Predicate ou PredicateValidation, esse elemento conterá uma referência a um tipo de declaração já definido na seção ClaimsSchema.
StringId Yes Se ElementType for definido como ClaimType, esse elemento conterá uma referência a um atributo de um tipo de declaração. Valores possíveis: DisplayName, AdminHelpText ou PatternHelpText. O valor DisplayName é usado para definir o nome de exibição de declaração. O valor AdminHelpText é usado para definir o nome de texto de ajuda do usuário de declaração. O valor PatternHelpText é usado para definir o texto de ajuda do padrão de declaração. Se ElementType for definido como UxElement, esse elemento conterá uma referência a um atributo de um elemento de interface do usuário. Se ElementType for definido como ErrorMessage, esse elemento especificará o identificador de uma mensagem de erro. Veja IDs de cadeia de localização para obter uma lista completa de identificadores UxElement.

ElementType

A referência ElementType a um tipo de declaração, uma transformação de declaração ou um elemento de interface do usuário na política a ser localizada.

Elemento a ser localizado ElementType ElementId StringId
Nome do provedor de identidade ClaimsProvider A ID do elemento ClaimsExchange
Atributos de tipo de declaração ClaimType Nome do tipo de declaração O atributo da declaração a ser localizada. Valores possíveis: AdminHelpText, DisplayName, PatternHelpText e UserHelpText.
Mensagem de erro ErrorMessage A ID da mensagem de erro
Copia cadeias de caracteres localizadas em declarações GetLocalizedStringsTra nsformationClaimType O nome da declaração de saída
Mensagem de usuário de predicado Predicate O nome do predicado O atributo do predicado a ser localizado. Valores possíveis: HelpText.
Mensagem do usuário do grupo de predicados PredicateValidation A ID do elemento PredicateValidation. A ID do elemento PredicateGroup. O grupo de predicados deve ser um filho do elemento de validação de predicado, conforme definido em ElementId.
Elementos da interface do usuário UxElement A ID do elemento de interface do usuário a ser localizado.
Controle de Exibição DisplayControl A ID do controle de exibição. A ID do elemento de interface do usuário a ser localizado.

Exemplos

ClaimsProvider

O valor ClaimsProvider é usado para localizador um dos nomes de exibição de provedores de declaração.

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

O exemplo a seguir mostra como localizar o nome de exibição dos provedores de declaração.

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

ClaimType

O valor ClaimType é usado para localizador um dos atributos de declaração.

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

O exemplo a seguir mostra como localizar os atributos DisplayName, UserHelpText e PatternHelpText do tipo de declaração de email.

<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

O valor ErrorMessage é usado para localizar uma das mensagens de erro do sistema.

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

O exemplo a seguir mostra como localizar a mensagem de erro UserMessageIfClaimsPrincipalAlreadyExists.

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

FormatLocalizedStringTransformationClaimType

O valor de FormatLocalizedStringTransformationClaimType é usado para formatar declarações em uma cadeia de caracteres localizada. Para obter mais informações, consulte transformação de declarações 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>

O exemplo a seguir mostra como localizar o formato de cadeia de caracteres da transformação declarações 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

O valor de GetLocalizedStringsTransformationClaimType é usado para copiar cadeias de caracteres localizadas em declarações. Para obter mais informações, consulte transformação de declarações 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>

O exemplo a seguir mostra como localizar as declarações de saída da transformação declarações 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>

Predicado

O valor Predicate é usado para localizar uma das mensagens de erro 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>

O exemplo a seguir mostra como localizar o texto de ajuda de predicados.

<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

O valor PredicateValidation é usado para localizar uma das mensagens de erro do grupo 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>

O exemplo a seguir mostra como localizar um texto de ajuda do grupo de validação de predicado.

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

UxElement

O valor UxElement é usado para localizar um dos elementos da interface do usuário. O exemplo a seguir mostra como localizar os botões continuar e cancelar.

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

DisplayControl

O valor DisplayControl é usado para localizar um dos elementos de interface do usuário controle de exibição. Quando habilitado, o controle de exibição localizedStrings usa a precedence sobre alguns dos StringIDs UxElement como ver_but_send, ver_but_edit, ver_but_resend e ver_but_verify. O exemplo a seguir mostra como localizar os botões enviar e verificar.

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

Na seção de Metadados de um perfil técnico autodeclarado, o ContentDefinition referenciado precisa ter o DataUri definido como a versão do layout da página 2.1.0 ou superior. Por exemplo:

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

Próximas etapas

Consulte os seguintes artigos para obter exemplos de código completo: