Compartilhar via


Personalização de idioma no Azure Active Directory B2C

Importante

A partir de 1º de maio de 2025, o Azure AD B2C não estará mais disponível para compra para novos clientes. Saiba mais em nossas perguntas frequentes.

Antes de começar, use o seletor Escolher um tipo de política na parte superior desta página para escolher o tipo de política que você está configurando. O Azure Active Directory B2C oferece dois métodos para definir como os usuários interagem com seus aplicativos: por meio de fluxos dos usuários predefinidos ou de políticas personalizadas totalmente configuráveis. As etapas necessárias neste artigo são diferentes para cada método.

A personalização de linguagem no Azure Active Directory B2C (Azure AD B2C) permite que seu fluxo de usuário acomode idiomas diferentes para atender às suas necessidades do cliente. A Microsoft fornece as traduções para 36 idiomas, mas você também pode fornecer suas próprias traduções para qualquer idioma. Mesmo que sua experiência seja fornecida para apenas um único idioma, você pode personalizar qualquer texto nas páginas.

Como funciona a personalização de idioma

Você usa a personalização de idioma para selecionar em quais idiomas o fluxo de usuário está disponível. Depois que o recurso estiver habilitado, você poderá fornecer o parâmetro da cadeia de caracteres de consulta ui_locales, a partir do seu aplicativo. Quando você chama o Azure AD B2C, sua página é traduzida para a localidade que você indicou. Esse tipo de configuração fornece controle total sobre os idiomas em seu fluxo de usuário e ignora as configurações de idioma do navegador do cliente.

Talvez você não precise desse nível de controle sobre quais idiomas seu cliente vê. Se você não fornecer um ui_locales parâmetro, a experiência do cliente será determinada pelas configurações do navegador. Você ainda pode controlar quais idiomas o fluxo de usuário é traduzido adicionando-o como um idioma com suporte. Se o navegador de um cliente estiver definido para mostrar um idioma que você não deseja dar suporte, o idioma selecionado como padrão em culturas com suporte será mostrado.

  • Idioma especificado nas localizações de IU: depois de habilitar a personalização do idioma, o fluxo de usuário será traduzido para o idioma especificado aqui.
  • Idioma solicitado pelo navegador: se nenhum ui_locales parâmetro tiver sido especificado, o fluxo do usuário será traduzido para o idioma solicitado pelo navegador, se houver suporte para o idioma.
  • Idioma padrão da política: se o navegador não especificar um idioma ou especificar um que não tem suporte, o fluxo do usuário será traduzido para o idioma padrão do fluxo do usuário.

Observação

Se você estiver usando atributos de usuário personalizados, precisará fornecer suas próprias traduções. Para obter mais informações, consulte Personalizar suas cadeias de caracteres.

Assista a este vídeo para saber como localizar ou personalizar o idioma usando o Azure AD B2C.

A localização requer três etapas:

  1. Configurar a lista explícita de idiomas com suporte
  2. Fornecer coleções e cadeias de caracteres específicas a um idioma
  3. Edite a definição de conteúdo da página.

Pré-requisitos

Suporte a idiomas solicitados para ui_locales

As políticas que foram criadas antes da disponibilidade geral da personalização de idioma precisam habilitar esse recurso primeiro. As políticas e os fluxos de usuário que foram criados depois têm a personalização do idioma habilitada por padrão.

Ao habilitar a personalização de idioma em um fluxo de usuário, você pode controlar o idioma do fluxo do usuário adicionando o ui_locales parâmetro.

  1. No locatário do Azure AD B2C, selecione Fluxos dos usuários.
  2. Clique no fluxo de usuário que você deseja habilitar para traduções.
  3. Selecione Idiomas.
  4. Selecione Habilitar personalização de idioma.

Selecione quais idiomas no fluxo de usuário estão habilitados

Habilite um conjunto de idiomas para o fluxo do usuário a ser traduzido quando solicitado pelo navegador sem o ui_locales parâmetro.

  1. Certifique-se de que o fluxo de usuário tenha a personalização de idioma habilitada a partir das instruções anteriores.
  2. Na página Idiomas do fluxo do usuário, selecione um idioma que você deseja dar suporte.
  3. No painel propriedades, altere Habilitado para Sim.
  4. Selecione Salvar na parte superior do painel de propriedades.

Observação

Se um ui_locales parâmetro não for fornecido, a página será traduzida para o idioma do navegador do cliente somente se estiver habilitada.

Como personalizar suas cadeias de caracteres

A personalização de idioma permite personalizar qualquer cadeia de caracteres no fluxo de usuário.

  1. Certifique-se de que o fluxo de usuário tenha a personalização de idioma habilitada a partir das instruções anteriores.
  2. Na página Idiomas do fluxo do usuário, selecione o idioma que você deseja personalizar.
  3. Em Arquivos de recursos em nível de página, selecione a página que você deseja editar.
  4. Selecione Baixar padrões (ou Baixar substituições se você já editou esse idioma).

Essas etapas fornecem um arquivo JSON que você pode usar para começar a editar suas cadeias de caracteres.

Alterar qualquer cadeia de caractere na página

  1. Abra o arquivo JSON baixado das instruções anteriores em um editor de JSON.
  2. Localize o elemento que você deseja alterar. Você pode localizar StringId para a cadeia de caracteres que está procurando ou procurar o atributo Value que deseja alterar.
  3. Atualize o atributo Value com o que você deseja exibir.
  4. Para cada cadeia de caracteres que você deseja alterar, altere Override para true.
  5. Salve o arquivo e carregue suas alterações. (Você pode encontrar o controle de upload no mesmo local em que baixou o arquivo JSON.)

Importante

Se você precisar substituir uma cadeia de caracteres, defina o valor Override para true. Se o valor não for alterado, a entrada será ignorada.

Alterar atributos de extensão

Se você quiser alterar a cadeia de caracteres de um atributo de usuário personalizado ou se deseja adicionar um ao JSON, ele estará no seguinte formato:

{
  "LocalizedStrings": [
    {
      "ElementType": "ClaimType",
      "ElementId": "extension_<ExtensionAttribute>",
      "StringId": "DisplayName",
      "Override": true,
      "Value": "<ExtensionAttributeValue>"
    }
    [...]
  ]
}

Substitua <ExtensionAttribute> pelo nome do seu atributo de usuário personalizado.

Substitua <ExtensionAttributeValue> por uma cadeia de caracteres nova a ser exibida.

Fornecer uma lista de valores usando LocalizedCollections

Se você quiser fornecer uma lista configurada de valores para respostas, será necessário criar um atributo LocalizedCollections. LocalizedCollections é uma matriz de pares Name e Value. A ordem dos itens será a ordem em que eles são exibidas. Para adicionar LocalizedCollections, use o formato a seguir:

{
  "LocalizedStrings": [...],
  "LocalizedCollections": [
    {
      "ElementType":"ClaimType",
      "ElementId":"<UserAttribute>",
      "TargetCollection":"Restriction",
      "Override": true,
      "Items":[
        {
          "Name":"<Response1>",
          "Value":"<Value1>"
        },
        {
          "Name":"<Response2>",
          "Value":"<Value2>"
        }
      ]
    }
  ]
}
  • ElementId é o atributo do usuário ao qual esse atributo LocalizedCollections é uma resposta.
  • Name é o valor mostrado para o usuário.
  • Value é o que é retornado na declaração quando essa opção é selecionada.

Carregamento das suas alterações

  1. Após concluir as alterações no arquivo JSON, retorne para o locatário B2C.
  2. Selecione fluxos de usuário e clique no fluxo de usuário que você deseja habilitar para traduções.
  3. Selecione Idiomas.
  4. Selecione o idioma para o qual você deseja traduzir.
  5. Selecione a página em que você deseja fornecer traduções.
  6. Selecione o ícone da pasta e selecione o arquivo JSON para upload.

As alterações são salvas no fluxo de usuário automaticamente.

Personalizar a interface do usuário da página usando a personalização de idioma

Há duas maneiras de localizar seu conteúdo HTML. Uma maneira é ativar a personalização do idioma. Habilitar esse recurso permite que o Azure AD B2C encaminhe o parâmetro ui-locales, OpenID Connect para seu endpoint. Seu servidor de conteúdo pode usar esse parâmetro para fornecer páginas HTML personalizadas específicas do idioma.

Como alternativa, você pode extrair conteúdo de locais diferentes com base na localidade usada. No endpoint habilitado para CORS, você pode configurar uma estrutura de pastas para hospedar conteúdo para idiomas específicos. Você chamará adequadamente se usar o valor curinga {Culture:RFC5646}. Por exemplo, suponha que este seja o URI da página personalizada:

https://wingtiptoysb2c.blob.core.windows.net/{Culture:RFC5646}/wingtip/unified.html

Você pode carregar a página em fr. Quando a página obtém conteúdo HTML e CSS, o conteúdo é obtido de:

https://wingtiptoysb2c.blob.core.windows.net/fr/wingtip/unified.html

Adicionar idiomas personalizados

Você também pode adicionar idiomas para os quais a Microsoft atualmente não fornece traduções. Você precisará fornecer as traduções para todas as cadeias de caracteres no fluxo do usuário. Os códigos de idioma e localidade são limitados aos do padrão ISO 639-1. O formato de código de localidade deve ser "ISO_639-1_code"-"CountryCode", por exemplo en-GB. Para obter mais informações, consulte os formatos de ID de localidade.

  1. No locatário do Azure AD B2C, selecione Fluxos dos usuários.
  2. Clique no fluxo do usuário onde você deseja adicionar idiomas personalizados e clique em Idiomas.
  3. Selecione Adicionar idioma personalizado na parte superior da página.
  4. No painel de contexto que é aberto, identifique para qual idioma você está fornecendo traduções inserindo um código de localidade válido.
  5. Para cada página, você poderá baixar um conjunto de substituições para o idioma inglês e trabalhar nas traduções.
  6. Depois de terminar com os arquivos JSON, você poderá carregá-los para cada página.
  7. Selecione Habilitar e seu fluxo de usuário agora pode mostrar esse idioma para seus usuários.
  8. Salve o idioma.

Importante

Você precisa habilitar os idiomas personalizados ou carregar substituições para ele antes de salvar.

Configurar a lista de idiomas com suporte

Abra o arquivo de extensões da política. Por exemplo, SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  1. Pesquise o elemento BuildingBlocks . Se o elemento não existir, adicione-o.
  2. Adicione o Localization elemento com os idiomas compatíveis: inglês (padrão) e espanhol.
<Localization Enabled="true">
  <SupportedLanguages DefaultLanguage="en" MergeBehavior="ReplaceAll">
    <SupportedLanguage>en</SupportedLanguage>
    <SupportedLanguage>es</SupportedLanguage>
  </SupportedLanguages>
</Localization>

Fornecer etiquetas específicas do idioma

O LocalizedResources do Localization elemento contém a lista de cadeias de caracteres localizadas. O elemento de recursos localizados tem um identificador usado para identificar exclusivamente os recursos localizados. Esse identificador é usado posteriormente no elemento de definição de conteúdo .

Você configura elementos de recursos localizados para a definição de conteúdo e qualquer idioma que você deseja dar suporte. Para personalizar as páginas de inscrição ou entrada unificadas para inglês e espanhol, adicione os seguintes LocalizedResources elementos após o fechamento do </SupportedLanguages> elemento.

Observação

No exemplo a seguir, adicionamos o símbolo de tralha # no início de cada linha, para que você possa localizar facilmente os rótulos localizados na tela.

<!--Local account sign-up or sign-in page English-->
<Localization Enabled="true">
  ...
 <LocalizedResources Id="api.signuporsignin.en">
        <LocalizedStrings>
          <LocalizedString ElementType="ClaimType" ElementId="signInName" StringId="DisplayName">Email Address</LocalizedString>
          <LocalizedString ElementType="UxElement" StringId="heading">Sign in</LocalizedString>
          <LocalizedString ElementType="UxElement" StringId="social_intro">Sign in with your social account</LocalizedString>
          <LocalizedString ElementType="UxElement" StringId="local_intro_generic">Sign in with your {0}</LocalizedString>
          <LocalizedString ElementType="ClaimType" ElementId="password" StringId="DisplayName">Password</LocalizedString>
          <LocalizedString ElementType="UxElement" StringId="requiredField_password">Please enter your password</LocalizedString>
          <LocalizedString ElementType="UxElement" StringId="requiredField_generic">Please enter your {0}</LocalizedString>
          <LocalizedString ElementType="UxElement" StringId="invalid_generic">Please enter a valid {0}</LocalizedString>
          <LocalizedString ElementType="UxElement" StringId="createaccount_one_link">Sign up now</LocalizedString>
          <LocalizedString ElementType="UxElement" StringId="createaccount_two_links">Sign up with {0} or {1}</LocalizedString>
          <LocalizedString ElementType="UxElement" StringId="createaccount_three_links">Sign up with {0}, {1}, or {2}</LocalizedString>
          <LocalizedString ElementType="UxElement" StringId="forgotpassword_link">Forgot your password?</LocalizedString>
          <LocalizedString ElementType="UxElement" StringId="button_signin">Sign in</LocalizedString>
          <LocalizedString ElementType="UxElement" StringId="divider_title">OR</LocalizedString>
          <LocalizedString ElementType="UxElement" StringId="createaccount_intro">Don't have an account?</LocalizedString>
          <LocalizedString ElementType="UxElement" StringId="unknown_error">We are having trouble signing you in. Please try again later.</LocalizedString>
          <!-- Uncomment the remember_me only if the keep me signed in is activated. 
          <LocalizedString ElementType="UxElement" StringId="remember_me">Keep me signed in</LocalizedString> -->
          <LocalizedString ElementType="ClaimsProvider" StringId="FacebookExchange">Facebook</LocalizedString>
          <LocalizedString ElementType="ErrorMessage" StringId="ResourceOwnerFlowInvalidCredentials">Your password is incorrect.</LocalizedString>
          <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfInvalidPassword">Your password is incorrect.</LocalizedString>
          <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfPasswordExpired">Your password has expired.</LocalizedString>
          <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfClaimsPrincipalDoesNotExist">We can't seem to find your account.</LocalizedString>
          <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfOldPasswordUsed">Looks like you used an old password.</LocalizedString>
          <LocalizedString ElementType="ErrorMessage" StringId="DefaultMessage">Invalid username or password.</LocalizedString>
          <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfUserAccountDisabled">Your account has been locked. Contact your support person to unlock it, then try again.</LocalizedString>
          <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfUserAccountLocked">Your account is temporarily locked to prevent unauthorized use. Try again later.</LocalizedString>
          <LocalizedString ElementType="ErrorMessage" StringId="AADRequestsThrottled">There are too many requests at this moment. Please wait for some time and try again.</LocalizedString>
        </LocalizedStrings>
      </LocalizedResources>
  <!--Local account sign-up or sign-in page Spanish-->
  <LocalizedResources Id="api.signuporsignin.es">
    <LocalizedStrings>
      <LocalizedString ElementType="UxElement" StringId="logonIdentifier_email">#Correo electrónico</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="requiredField_email">#Este campo es obligatorio</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="logonIdentifier_username">#Nombre de usuario</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="password">#Contraseña</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="createaccount_link">#Registrarse ahora</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="requiredField_username">#Escriba su nombre de usuario</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="createaccount_intro">#¿No tiene una cuenta?</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="forgotpassword_link">#¿Olvidó su contraseña?</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="divider_title">#O</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="cancel_message">#El usuario ha olvidado su contraseña</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="button_signin">#Iniciar sesión</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="social_intro">#Iniciar sesión con su cuenta de redes sociales</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="requiredField_password">#Escriba su contraseña</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="invalid_password">#La contraseña que ha escrito no está en el formato esperado.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="local_intro_username">#Iniciar sesión con su nombre de usuario</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="local_intro_email">#Iniciar sesión con su cuenta existente</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="invalid_email">#Escriba una dirección de correo electrónico válida</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="unknown_error">#Tenemos problemas para iniciar su sesión. Vuelva a intentarlo más tarde.  </LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="email_pattern">^[a-zA-Z0-9.!#$%&amp;'^_`\{\}~\-]+@[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*$</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfInvalidPassword">#Su contraseña es incorrecta.</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfClaimsPrincipalDoesNotExist">#Parece que no podemos encontrar su cuenta.</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfOldPasswordUsed">#Parece que ha usado una contraseña antigua.</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="DefaultMessage">#El nombre de usuario o la contraseña no son válidos.</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfUserAccountDisabled">#Se bloqueó su cuenta. Póngase en contacto con la persona responsable de soporte técnico para desbloquearla y vuelva a intentarlo.</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfUserAccountLocked">#Su cuenta se bloqueó temporalmente para impedir un uso no autorizado. Vuelva a intentarlo más tarde.</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="AADRequestsThrottled">#Hay demasiadas solicitudes en este momento. Espere un momento y vuelva a intentarlo.</LocalizedString>
    </LocalizedStrings>
  </LocalizedResources>
  <!--Local account sign-up page English-->
  <LocalizedResources Id="api.localaccountsignup.en">
    <LocalizedStrings>
      <LocalizedString ElementType="ClaimType" ElementId="email" StringId="DisplayName">#Email Address</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="email" StringId="UserHelpText">#Email address that can be used to contact you.</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="email" StringId="PatternHelpText">#Please enter a valid email address.</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="newPassword" StringId="DisplayName">#New Password</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="newPassword" StringId="UserHelpText">#Enter new password</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="newPassword" StringId="PatternHelpText">#8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ &amp; * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; .</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="reenterPassword" StringId="DisplayName">#Confirm New Password</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="reenterPassword" StringId="UserHelpText">#Confirm new password</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="reenterPassword" StringId="PatternHelpText">#8-16 characters, containing 3 out of 4 of the following: Lowercase characters, uppercase characters, digits (0-9), and one or more of the following symbols: @ # $ % ^ &amp; * - _ + = [ ] { } | \ : ' , ? / ` ~ " ( ) ; .</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="displayName" StringId="DisplayName">#Display Name</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="displayName" StringId="UserHelpText">#Your display name.</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="surname" StringId="DisplayName">#Surname</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="surname" StringId="UserHelpText">#Your surname (also known as family name or last name).  </LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="givenName" StringId="DisplayName">#Given Name</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="givenName" StringId="UserHelpText">#Your given name (also known as first name).</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="button_continue">#Create</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="error_fieldIncorrect">#One or more fields are filled out incorrectly. Please check your entries and try again.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="error_passwordEntryMismatch">#The password entry fields do not match. Please enter the same password in both fields and try again.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="error_requiredFieldMissing">#A required field is missing. Please fill out all required fields and try again.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="helplink_text">#What is this?</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="initial_intro">#Please provide the following details.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="preloader_alt">#Please wait</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="required_field">#This information is required.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_but_edit">#Change e-mail</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_but_resend">#Send new code</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_but_send">#Send verification code</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_but_verify">#Verify code</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_fail_code_expired">#That code is expired. Please request a new code.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_fail_no_retry">#You've made too many incorrect attempts. Please try again later.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_fail_retry">#That code is incorrect. Please try again.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_fail_server">#We are having trouble verifying your email address. Please enter a valid email address and try again.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_fail_throttled">#There have been too many requests to verify this email address. Please wait a while, then try again.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_info_msg">#Verification code has been sent to your inbox. Please copy it to the input box below.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_input">#Verification code</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_intro_msg">#Verification is necessary. Please click Send button.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_success_msg">#E-mail address verified. You can now continue.</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="ServiceThrottled">#There are too many requests at this moment. Please wait for some time and try again.</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfClaimNotVerified">#Claim not verified: {0}</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfClaimsPrincipalAlreadyExists">#A user with the specified ID already exists. Please choose a different one.</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfIncorrectPattern">#Incorrect pattern for: {0}</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfInvalidInput">#{0} has invalid input.</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfMissingRequiredElement">#Missing required element: {0}</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfValidationError">#Error in validation by: {0}</LocalizedString>
    </LocalizedStrings>
  </LocalizedResources>
  <!--Local account sign-up page Spanish-->
  <LocalizedResources Id="api.localaccountsignup.es">
    <LocalizedStrings>
      <LocalizedString ElementType="ClaimType" ElementId="email" StringId="DisplayName">#Dirección de correo electrónico</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="email" StringId="UserHelpText">#Dirección de correo electrónico que puede usarse para ponerse en contacto con usted.</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="email" StringId="PatternHelpText">#Introduzca una dirección de correo electrónico válida.  </LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="newPassword" StringId="DisplayName">#Nueva contraseña</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="newPassword" StringId="UserHelpText">#Escriba la contraseña nueva</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="newPassword" StringId="PatternHelpText">#De 8 a 16 caracteres, que contengan 3 de los 4 tipos siguientes: caracteres en minúsculas, caracteres en mayúsculas, dígitos (0-9) y uno o más de los siguientes símbolos: @ # $ % ^ &amp; * - _ + = [ ] { } | \\ : ' , ? / ` ~ \" ( ) ; .</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="reenterPassword" StringId="DisplayName">#Confirmar nueva contraseña</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="reenterPassword" StringId="UserHelpText">#Confirmar nueva contraseña</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="reenterPassword" StringId="PatternHelpText">#8 a 16 caracteres, que contengan 3 de los 4 tipos siguientes: caracteres en minúsculas, caracteres en mayúsculas, dígitos (0-9) y uno o más de los siguientes símbolos: @ # $ % ^ &amp; * - _ + = [ ] { } | \\ : ' , ? / ` ~ \" ( ) ; .</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="displayName" StringId="DisplayName">#Nombre para mostrar</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="displayName" StringId="UserHelpText">#Su nombre para mostrar.</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="surname" StringId="DisplayName">#Apellido</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="surname" StringId="UserHelpText">#Su apellido.</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="givenName" StringId="DisplayName">#Nombre</LocalizedString>
      <LocalizedString ElementType="ClaimType" ElementId="givenName" StringId="UserHelpText">#Su nombre (también conocido como nombre de pila).</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="button_continue">#Crear</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="error_fieldIncorrect">#Hay uno o varios campos rellenados de forma incorrecta. Compruebe las entradas y vuelva a intentarlo.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="error_passwordEntryMismatch">#Los campos de entrada de contraseña no coinciden. Escriba la misma contraseña en ambos campos y vuelva a intentarlo.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="error_requiredFieldMissing">#Falta un campo obligatorio. Rellene todos los campos necesarios y vuelva a intentarlo.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="helplink_text">#¿Qué es esto?</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="initial_intro">#Proporcione los siguientes detalles.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="preloader_alt">#Espere</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="required_field">#Esta información es obligatoria.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_but_edit">#Cambiar correo electrónico</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_but_resend">#Enviar nuevo código</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_but_send">#Enviar código de comprobación</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_but_verify">#Comprobar código</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_fail_code_expired">#El código ha expirado. Solicite otro nuevo.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_fail_no_retry">#Ha realizado demasiados intentos incorrectos. Vuelva a intentarlo más tarde.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_fail_retry">#Ese código es incorrecto. Inténtelo de nuevo.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_fail_server">#Tenemos problemas para comprobar la dirección de correo electrónico. Escriba una dirección de correo electrónico válida y vuelva a intentarlo.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_fail_throttled">#Ha habido demasiadas solicitudes para comprobar esta dirección de correo electrónico. Espere un poco y vuelva a intentarlo.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_info_msg">#Se ha enviado el código de verificación a su Bandeja de entrada. Cópielo en el siguiente cuadro de entrada.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_input">#Código de verificación</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_intro_msg">#La comprobación es obligatoria. Haga clic en el botón Enviar.</LocalizedString>
      <LocalizedString ElementType="UxElement" StringId="ver_success_msg">#Dirección de correo electrónico comprobada. Puede continuar.</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="ServiceThrottled">#Hay demasiadas solicitudes en este momento. Espere un momento y vuelva a intentarlo.</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfClaimNotVerified">#Reclamación no comprobada: {0}</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfClaimsPrincipalAlreadyExists">#Ya existe un usuario con el id. especificado. Elija otro diferente.</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfIncorrectPattern">#Patrón incorrecto para: {0}</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfInvalidInput">#{0} tiene una entrada no válida.</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfMissingRequiredElement">#Falta un elemento obligatorio: {0}</LocalizedString>
      <LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfValidationError">#Error en la validación de: {0}</LocalizedString>
    </LocalizedStrings>
  </LocalizedResources>
</Localization>

Editar a definição de conteúdo com a localização

Cole todo o conteúdo do elemento ContentDefinitions que você copiou como filho do elemento BuildingBlocks.

No exemplo a seguir, cadeias de caracteres personalizadas em inglês (en) e espanhol (es) são adicionadas à página de inscrição ou entrada e à página de inscrição da conta local. A LocalizedResourcesReferenceId para cada LocalizedResourcesReference é igual à localidade, mas você pode usar qualquer cadeia de caracteres como o identificador. Para cada combinação de idioma e página, aponte para os LocalizedResources correspondentes criados anteriormente.

<ContentDefinitions>
  <ContentDefinition Id="api.signuporsignin">
    <LocalizedResourcesReferences MergeBehavior="Prepend">
        <LocalizedResourcesReference Language="en" LocalizedResourcesReferenceId="api.signuporsignin.en" />
        <LocalizedResourcesReference Language="es" LocalizedResourcesReferenceId="api.signuporsignin.es" />
    </LocalizedResourcesReferences>
  </ContentDefinition>

  <ContentDefinition Id="api.localaccountsignup">
    <LocalizedResourcesReferences MergeBehavior="Prepend">
        <LocalizedResourcesReference Language="en" LocalizedResourcesReferenceId="api.localaccountsignup.en" />
        <LocalizedResourcesReference Language="es" LocalizedResourcesReferenceId="api.localaccountsignup.es" />
    </LocalizedResourcesReferences>
  </ContentDefinition>
</ContentDefinitions>

Carregar e testar sua política personalizada atualizada

Carregar a política personalizada

  1. Salve o arquivo de extensões.
  2. Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para seu locatário do Azure AD B2C no menu Diretórios + assinaturas.
  3. Procure e selecione o Azure AD B2C.
  4. Em Políticas, selecione Identity Experience Framework.
  5. Selecione Carregar política personalizada.
  6. Carregue o arquivo de extensões que você alterou anteriormente.

Testar a política personalizada usando Executar agora

  1. Selecione a política que você carregou e selecione Executar agora.
  2. Você deve ser capaz de ver a página de inscrição ou de entrada localizada.
  3. Clique no link de inscrição e você poderá ver a página de inscrição localizada.
  4. Alterne o idioma padrão do navegador para espanhol. Ou você pode adicionar o parâmetro ui_locales de cadeia de caracteres de consulta à solicitação de autorização. Por exemplo:
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1A_signup_signin/oauth2/v2.0/authorize&client_id=00001111-aaaa-2222-bbbb-3333cccc4444&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fjwt.ms&scope=openid&response_type=id_token&prompt=login&ui_locales=es

Informações adicionais

Rótulos de personalização da interface do usuário da página como substituições

Ao habilitar a personalização de idioma, as edições anteriores para rótulos usando a personalização da interface do usuário da página são persistidas em um arquivo JSON para inglês (en). Você pode continuar a alterar os rótulos e outras cadeias de caracteres, carregando recursos de idiomas na personalização de idioma.

Atualizar traduções

A Microsoft está comprometida em fornecer as traduções mais atualizadas para seu uso. A Microsoft aprimora continuamente as traduções e as mantém em conformidade para você. A Microsoft identificará bugs e alterações na terminologia global e fará atualizações que funcionarão diretamente no fluxo de usuário.

Suporte para idiomas da direita para a esquerda

A Microsoft atualmente não fornece suporte para idiomas escritos da direita para a esquerda. Você pode fazer isso usando localidades personalizadas e CSS para alterar a maneira como as cadeias de caracteres são exibidas. Se você precisar desse recurso, vote para ele nos Comentários do Azure.

Traduções de provedor de identidade social

A Microsoft fornece o parâmetro OIDC ui_locales para logons sociais. Mas alguns provedores de identidade social, incluindo o Facebook e o Google, não os consideram.

Comportamento do navegador

O Microsoft Edge, o Chrome e o Firefox solicitam o idioma definido. Se for um idioma com suporte, será exibido antes do padrão.

Idiomas com suporte

O Azure AD B2C inclui suporte para os seguintes idiomas usando códigos ISO 639-1. Os idiomas de fluxo do usuário são fornecidos pelo Azure AD B2C. Os idiomas de notificação de autenticação multifator são fornecidos pela autenticação multifator do Microsoft Entra.

Idioma Código do idioma Fluxos de usuários Notificações da MFA
Árabe ar X indicando não. Marca de seleção verde.
Búlgaro Bg X indicando não. Marca de seleção verde.
Bengali Bn Marca de seleção verde. X indicando não.
Catalão Ca X indicando não. Marca de seleção verde.
Tcheco Cs Marca de seleção verde. Marca de seleção verde.
Dinamarquês da Marca de seleção verde. Marca de seleção verde.
Alemão de Marca de seleção verde. Marca de seleção verde.
Grego El Marca de seleção verde. Marca de seleção verde.
Inglês en Marca de seleção verde. Marca de seleção verde.
Espanhol Es Marca de seleção verde. Marca de seleção verde.
Estônio Et X indicando não. Marca de seleção verde.
Basco UE X indicando não. Marca de seleção verde.
Finlandês Fi Marca de seleção verde. Marca de seleção verde.
Francês França Marca de seleção verde. Marca de seleção verde.
Galego Gl X indicando não. Marca de seleção verde.
Guzerate Gu Marca de seleção verde. X indicando não.
Hebraico ele X indicando não. Marca de seleção verde.
Híndi Oi Marca de seleção verde. Marca de seleção verde.
Croata RH Marca de seleção verde. Marca de seleção verde.
Húngaro Hu Marca de seleção verde. Marca de seleção verde.
Indonésio id X indicando não. Marca de seleção verde.
Italiano ela Marca de seleção verde. Marca de seleção verde.
Japonês ja Marca de seleção verde. Marca de seleção verde.
Cazaque kk X indicando não. Marca de seleção verde.
Kannada Kn Marca de seleção verde. X indicando não.
Coreano Ko Marca de seleção verde. Marca de seleção verde.
Lituano Tenente X indicando não. Marca de seleção verde.
Letão Lv X indicando não. Marca de seleção verde.
Malaiala ml (mililitro) Marca de seleção verde. X indicando não.
Maráthi Sr Marca de seleção verde. X indicando não.
Malaio Ms Marca de seleção verde. Marca de seleção verde.
Norueguês Bokmal Nb Marca de seleção verde. X indicando não.
Holandês Nl Marca de seleção verde. Marca de seleção verde.
Norueguês Não X indicando não. Marca de seleção verde.
Punjabi papai Marca de seleção verde. X indicando não.
Polonês Pl Marca de seleção verde. Marca de seleção verde.
Português – Brasil pt-br Marca de seleção verde. Marca de seleção verde.
Português - Portugal pt-pt Marca de seleção verde. Marca de seleção verde.
Romeno Ro Marca de seleção verde. Marca de seleção verde.
Russo Ru Marca de seleção verde. Marca de seleção verde.
Eslovaco Sk Marca de seleção verde. Marca de seleção verde.
Esloveno Sl X indicando não. Marca de seleção verde.
Sérvio - Cirílico sr-cryl-cs X indicando não. Marca de seleção verde.
Sérvio - latino sr-latn-cs X indicando não. Marca de seleção verde.
Sueco Sv Marca de seleção verde. Marca de seleção verde.
Tâmil obrigada Marca de seleção verde. X indicando não.
Télugo te Marca de seleção verde. X indicando não.
Tailandês ésimo Marca de seleção verde. Marca de seleção verde.
Turco Tr Marca de seleção verde. Marca de seleção verde.
Ucraniano Reino Unido X indicando não. Marca de seleção verde.
Vietnamita vi X indicando não. Marca de seleção verde.
Galês Cy X indicando não. X indicando não.
Chinês - Simplificado zh-hans Marca de seleção verde. Marca de seleção verde.
Chinês – Tradicional zh-hant Marca de seleção verde. Marca de seleção verde.

Próximas etapas

Encontre mais informações sobre como você pode personalizar a interface do usuário de seus aplicativos em Personalizar a interface do usuário do seu aplicativo no Azure Active Directory B2C.