Taalaanpassing in Azure Active Directory B2C

Voordat u begint, gebruikt u de selector Een beleidstype kiezen om het type beleid te kiezen dat u instelt. U kunt in Azure Active Directory B2C op twee manieren definiëren hoe gebruikers met uw toepassingen communiceren: via vooraf gedefinieerde gebruikersstromen of via volledig configureerbaar aangepast beleid. De stappen die in dit artikel zijn vereist, verschillen voor elke methode.

Met taalaanpassing in Azure Active Directory B2C (Azure AD B2C) kan uw gebruikersstroom geschikt zijn voor verschillende talen die aansluiten bij de behoeften van uw klant. Microsoft biedt de vertalingen voor 36 talen, maar u kunt ook uw eigen vertalingen voor elke taal opgeven. Zelfs als uw ervaring is bedoeld voor slechts één taal, kunt u tekst op de pagina's aanpassen.

Hoe taalaanpassing werkt

U gebruikt taalaanpassing om te selecteren in welke talen uw gebruikersstroom beschikbaar is. Nadat de functie is ingeschakeld, kunt u de querytekenreeksparameter opgeven, ui_localesvanuit uw toepassing. Wanneer u Azure AD B2C aanroept, wordt uw pagina vertaald naar de landinstelling die u hebt aangegeven. Dit type configuratie geeft u volledige controle over de talen in uw gebruikersstroom en negeert de taalinstellingen van de browser van de klant.

Mogelijk hebt u dat controleniveau niet nodig over de talen die uw klant ziet. Als u geen parameter opgeeft ui_locales , wordt de ervaring van de klant bepaald door de instellingen van de browser. U kunt nog steeds bepalen in welke talen uw gebruikersstroom wordt vertaald door deze toe te voegen als een ondersteunde taal. Als de browser van een klant is ingesteld om een taal weer te geven die u niet wilt ondersteunen, wordt in plaats daarvan de taal die u hebt geselecteerd als standaardtaal in ondersteunde culturen weergegeven.

  • opgegeven taal voor gebruikersinterfaces: Nadat u taalaanpassing hebt ingeschakeld, wordt uw gebruikersstroom vertaald naar de taal die hier is opgegeven.
  • Door de browser aangevraagde taal: als er geen ui_locales parameter is opgegeven, wordt uw gebruikersstroom vertaald naar de door de browser aangevraagde taal, als de taal wordt ondersteund.
  • Standaardtaal voor beleid: als de browser geen taal opgeeft of een taal opgeeft die niet wordt ondersteund, wordt de gebruikersstroom vertaald naar de standaardtaal van de gebruikersstroom.

Notitie

Als u aangepaste gebruikerskenmerken gebruikt, moet u uw eigen vertalingen aanleveren. Zie Uw tekenreeksen aanpassen voor meer informatie.

Bekijk deze video voor meer informatie over het lokaliseren of aanpassen van taal met behulp van Azure AD B2C.

Lokalisatie vereist drie stappen:

  1. De expliciete lijst met ondersteunde talen instellen
  2. Taalspecifieke tekenreeksen en verzamelingen opgeven
  3. Bewerk de inhoudsdefinitie voor de pagina.

Vereisten

Aangevraagde talen voor ui_locales

Beleidsregels die zijn gemaakt vóór de algemene beschikbaarheid van taalaanpassing moeten deze functie eerst inschakelen. Beleidsregels en gebruikersstromen die zijn gemaakt nadat taalaanpassing standaard is ingeschakeld.

Wanneer u taalaanpassing inschakelt voor een gebruikersstroom, kunt u de taal van de gebruikersstroom beheren door de ui_locales parameter toe te voegen.

  1. Selecteer Gebruikersstromen in uw Azure AD B2C-tenant.
  2. Klik op de gebruikersstroom die u wilt inschakelen voor vertalingen.
  3. Selecteer Talen.
  4. Selecteer Taalaanpassing inschakelen.

Selecteren welke talen in uw gebruikersstroom zijn ingeschakeld

Schakel een set talen in waarmee uw gebruikersstroom kan worden vertaald wanneer dit door de browser wordt aangevraagd zonder de ui_locales parameter.

  1. Zorg ervoor dat de gebruikersstroom taalaanpassing heeft ingeschakeld op basis van eerdere instructies.
  2. Selecteer op de pagina Talen voor de gebruikersstroom een taal die u wilt ondersteunen.
  3. Wijzig in het deelvenster Eigenschappen ingeschakeld in Ja.
  4. Selecteer Opslaan bovenaan het deelvenster Eigenschappen.

Notitie

Als er ui_locales geen parameter is opgegeven, wordt de pagina alleen vertaald naar de browsertaal van de klant als deze is ingeschakeld.

Uw tekenreeksen aanpassen

Met taalaanpassing kunt u elke tekenreeks in uw gebruikersstroom aanpassen.

  1. Zorg ervoor dat de gebruikersstroom taalaanpassing heeft ingeschakeld op basis van de vorige instructies.
  2. Selecteer op de pagina Talen voor de gebruikersstroom de taal die u wilt aanpassen.
  3. Selecteer onder Bestanden met resources op paginaniveau de pagina die u wilt bewerken.
  4. Selecteer Standaardversies downloaden (of Overschreven versies downloaden als u deze taal eerder hebt bewerkt).

Met deze stappen krijgt u een JSON-bestand dat u kunt gebruiken om uw tekenreeksen te bewerken.

Een tekenreeks op de pagina wijzigen

  1. Open het JSON-bestand dat u in eerdere instructies hebt gedownload in een JSON-editor.
  2. Zoek het element dat u wilt wijzigen. U kunt StringId vinden voor de tekenreeks die u zoekt of zoeken naar het Value-kenmerk dat u wilt wijzigen.
  3. Werk het Value-kenmerk bij met wat u wilt weergeven.
  4. Voor elke tekenreeks die u wilt wijzigen, wijzigt u Override in true.
  5. Sla het bestand op en upload uw wijzigingen. (U vindt het uploadbeheer op dezelfde plaats als waar u het JSON-bestand hebt gedownload.)

Belangrijk

Als u een tekenreeks wilt overschrijven, moet u de Override-waarde instellen op true. Als de waarde niet wordt gewijzigd, wordt de vermelding genegeerd.

Extensiekenmerken wijzigen

Als u de tekenreeks voor een aangepast gebruikerskenmerk wilt wijzigen of als u er een wilt toevoegen aan de JSON, heeft deze de volgende indeling:

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

Vervang <ExtensionAttribute> door de naam van uw aangepaste gebruikerskenmerk.

Vervang <ExtensionAttributeValue> door de nieuwe tekenreeks die moet worden weergegeven.

Een lijst met waarden opgeven met behulp van gelokaliseerde verzamelingen

Als u een set waarden voor antwoorden wilt opgeven, moet u een LocalizedCollections-kenmerk maken. LocalizedCollections is een matrix van Name- en Value-paren. De volgorde voor de items is de volgorde waarin ze worden weergegeven. Gebruik de volgende indeling om LocalizedCollections toe te voegen:

{
  "LocalizedStrings": [...],
  "LocalizedCollections": [
    {
      "ElementType":"ClaimType",
      "ElementId":"<UserAttribute>",
      "TargetCollection":"Restriction",
      "Override": true,
      "Items":[
        {
          "Name":"<Response1>",
          "Value":"<Value1>"
        },
        {
          "Name":"<Response2>",
          "Value":"<Value2>"
        }
      ]
    }
  ]
}
  • ElementId is het gebruikerskenmerk waarop dit LocalizedCollections-kenmerk een antwoord is.
  • Name is de waarde die wordt weergegeven voor de gebruiker.
  • Value is wat wordt geretourneerd in de claim wanneer deze optie is geselecteerd.

Uw wijzigingen uploaden

  1. Nadat u de wijzigingen in uw JSON-bestand hebt aangebracht, gaat u terug naar uw B2C-tenant.
  2. Selecteer Gebruikersstromen en klik op de gebruikersstroom die u wilt inschakelen voor vertalingen.
  3. Selecteer Talen.
  4. Selecteer de taal waarin u wilt vertalen.
  5. Selecteer de pagina waar u vertalingen wilt opgeven.
  6. Selecteer het mappictogram en vervolgens het JSON-bestand dat u wilt uploaden.

De wijzigingen worden automatisch opgeslagen in uw gebruikersstroom.

De gebruikersinterface van de pagina aanpassen met behulp van taalaanpassing

Er zijn twee manieren om uw HTML-inhoud te lokaliseren. Een manier is om taalaanpassing in te schakelen. Als u deze functie inschakelt, ui-localeskan Azure AD B2C de parameter OpenID Verbinding maken doorsturen naar uw eindpunt. Uw inhoudsserver kan deze parameter gebruiken om aangepaste HTML-pagina's te bieden die taalspecifiek zijn.

U kunt ook inhoud van verschillende plaatsen ophalen op basis van de landinstelling die wordt gebruikt. In uw CORS-eindpunt kunt u een mapstructuur instellen om inhoud voor specifieke talen te hosten. U roept de juiste aan als u de jokertekenwaarde {Culture:RFC5646}gebruikt. Stel dat dit uw aangepaste pagina-URI is:

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

U kunt de pagina laden in fr. Wanneer de pagina HTML- en CSS-inhoud ophaalt, wordt deze opgehaald uit:

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

Aangepaste talen toevoegen

U kunt ook talen toevoegen waarvoor Microsoft momenteel geen vertalingen biedt. U moet de vertalingen opgeven voor alle tekenreeksen in de gebruikersstroom. Taal- en landinstellingencodes zijn beperkt tot die in de ISO 639-1-standaard. De landinstellingscode moet bijvoorbeeld 'ISO_639-1_code'-'CountryCode' en-GBzijn. Raadpleeg de indelingen van landinstellingen-id's voor meer informatie.

  1. Selecteer Gebruikersstromen in uw Azure AD B2C-tenant.
  2. Klik op de gebruikersstroom waaraan u aangepaste talen wilt toevoegen en klik vervolgens op Talen.
  3. Selecteer Aangepaste taal toevoegen boven aan de pagina.
  4. Bepaal in het contextvenster dat wordt geopend voor welke taal u vertalingen opgeeft door een geldige landinstellingscode in te voeren.
  5. Voor elke pagina kunt u een set onderdrukkingen voor Engels downloaden en aan de vertalingen werken.
  6. Nadat u klaar bent met de JSON-bestanden, kunt u deze uploaden voor elke pagina.
  7. Selecteer Inschakelen en uw gebruikersstroom kan nu deze taal voor uw gebruikers weergeven.
  8. Sla de taal op.

Belangrijk

U moet de aangepaste talen inschakelen of onderdrukkingen hiervoor uploaden voordat u het kunt opslaan.

De lijst met ondersteunde talen instellen

Open het uitbreidingsbestand van uw beleid. Bijvoorbeeld SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  1. Zoek element BuildingBlocks. Als het element niet aanwezig is, voegt u het toe.
  2. Voeg het Localization element toe met de ondersteunde talen: Engels (standaard) en Spaans.
<Localization Enabled="true">
  <SupportedLanguages DefaultLanguage="en" MergeBehavior="ReplaceAll">
    <SupportedLanguage>en</SupportedLanguage>
    <SupportedLanguage>es</SupportedLanguage>
  </SupportedLanguages>
</Localization>

Taalspecifieke labels opgeven

De LocalizedResources van het Localization element bevat de lijst met gelokaliseerde tekenreeksen. Het gelokaliseerde resource-element heeft een id die wordt gebruikt om gelokaliseerde resources uniek te identificeren. Deze id wordt later gebruikt in het inhoudsdefinitieelement .

U configureert gelokaliseerde resourceselementen voor de inhoudsdefinitie en elke taal die u wilt ondersteunen. Als u de geïntegreerde registratie- of aanmeldingspagina's voor Engels en Spaans wilt aanpassen, voegt u de volgende LocalizedResources elementen toe na het sluiten van het </SupportedLanguages> element.

Notitie

In het volgende voorbeeld hebben we het hekje # aan het begin van elke regel toegevoegd, zodat u de gelokaliseerde labels op het scherm gemakkelijk kunt vinden.

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

De inhoudsdefinitie bewerken met de lokalisatie

Plak de volledige inhoud van het element ContentDefinitions dat u hebt gekopieerd als een onderliggend element van het element BuildingBlocks.

In het volgende voorbeeld worden aangepaste tekenreeksen voor Engels (en) en Spaans (es) toegevoegd aan de registratie- of aanmeldingspagina en aan de registratiepagina van het lokale account. De LocalizedResourcesReferenceId voor elke LocalizedResourcesReference is hetzelfde als de landinstelling, maar u kunt elke tekenreeks gebruiken als de id. Voor elke combinatie van talen en pagina's verwijst u naar de bijbehorende LocalizedResources die u eerder hebt gemaakt.

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

Uw bijgewerkte aangepaste beleid uploaden en testen

Het aangepaste beleid uploaden

  1. Sla het extensiebestand op.
  2. Als u toegang hebt tot meerdere tenants, selecteert u het pictogram Instellingen in het bovenste menu om over te schakelen naar uw Azure AD B2C-tenant in het menu Mappen en abonnementen.
  3. Zoek Azure AD B2C en selecteer deze.
  4. Selecteer onder Beleid de optie Identity Experience Framework.
  5. Selecteer Aangepast beleid uploaden.
  6. Upload het extensiesbestand dat u eerder hebt gewijzigd.

Het aangepaste beleid testen met Nu uitvoeren

  1. Selecteer het beleid dat u hebt geüpload en selecteer nu Uitvoeren.
  2. U moet de gelokaliseerde registratie- of aanmeldingspagina kunnen zien.
  3. Klik op de registratiekoppeling en u zou de gelokaliseerde registratiepagina moeten kunnen zien.
  4. Schakel de standaardtaal van uw browser over naar Spaans. U kunt ook de querytekenreeksparameter ui_locales toevoegen aan de autorisatieaanvraag. Bijvoorbeeld:
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1A_signup_signin/oauth2/v2.0/authorize&client_id=0239a9cc-309c-4d41-12f1-31299feb2e82&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fjwt.ms&scope=openid&response_type=id_token&prompt=login&ui_locales=es

Aanvullende informatie

Aanpassingslabels voor de gebruikersinterface van de pagina als overschrijvingen

Wanneer u taalaanpassing inschakelt, worden uw vorige bewerkingen voor labels met behulp van aanpassing van de gebruikersinterface van de pagina behouden in een JSON-bestand voor Engels (en). U kunt uw labels en andere tekenreeksen blijven wijzigen door taalbronnen te uploaden in taalaanpassing.

Up-to-date vertalingen

Microsoft streeft ernaar om de meest up-to-date vertalingen te bieden voor uw gebruik. Microsoft verbetert vertalingen voortdurend en houdt ze relevant voor u. Microsoft identificeert fouten en wijzigingen in algemene terminologie en implementeert updates die naadloos werken in uw gebruikersstroom.

Ondersteuning voor talen die van rechts naar links worden geschreven

Microsoft biedt momenteel geen ondersteuning voor talen die van rechts naar links worden geschreven. U kunt dit bereiken door aangepaste landinstellingen te gebruiken en CSS te gebruiken om de manier te wijzigen waarop de tekenreeksen worden weergegeven. Als u deze functie nodig hebt, kunt u erop stemmen bij Azure Feedback.

Vertalingen van id-providers voor sociale netwerken

Microsoft biedt de ui_locales OIDC-parameter voor aanmelding bij sociale netwerken. Maar sommige id-providers voor sociale netwerken, waaronder Facebook en Google, respecteren ze niet.

Browsergedrag

Chrome en Firefox vragen beide om de ingestelde taal. Als het een ondersteunde taal is, wordt deze weergegeven vóór de standaardtaal. Microsoft Edge vraagt momenteel niet om een taal en gaat rechtstreeks naar de standaardtaal.

Ondersteunde talen

Azure AD B2C bevat ondersteuning voor de volgende talen met behulp van ISO 639-1-codes. Talen voor gebruikersstromen worden geleverd door Azure AD B2C. De meldingstalen voor meervoudige verificatie worden geleverd door Meervoudige Verificatie van Microsoft Entra.

Taal Taalcode Gebruikersstromen MFA-meldingen
Arabisch ar X indicating no. Green check mark.
Bulgaars bg X indicating no. Green check mark.
Bengaals bn Green check mark. X indicating no.
Catalaans ca X indicating no. Green check mark.
Tsjechisch cs Green check mark. Green check mark.
Deens da Green check mark. Green check mark.
Duits de Green check mark. Green check mark.
Grieks el Green check mark. Green check mark.
English en Green check mark. Green check mark.
Spaans es Green check mark. Green check mark.
Estisch et X indicating no. Green check mark.
Baskisch eu X indicating no. Green check mark.
Fins fi Green check mark. Green check mark.
Frans fr Green check mark. Green check mark.
Galicisch gl X indicating no. Green check mark.
Gujarati gu Green check mark. X indicating no.
Hebreeuws he X indicating no. Green check mark.
Hindi hi Green check mark. Green check mark.
Kroatisch uren Green check mark. Green check mark.
Hongaars hu Green check mark. Green check mark.
Indonesisch id X indicating no. Green check mark.
Italiaans it Green check mark. Green check mark.
Japans ja Green check mark. Green check mark.
Kazachstaans kk X indicating no. Green check mark.
Kannada kn Green check mark. X indicating no.
Koreaans ko Green check mark. Green check mark.
Litouws lt X indicating no. Green check mark.
Lets lv X indicating no. Green check mark.
Malayalam ml Green check mark. X indicating no.
Mahrati mr Green check mark. X indicating no.
Maleis ms Green check mark. Green check mark.
Noors (Bokmål) nb Green check mark. X indicating no.
Nederlands nl Green check mark. Green check mark.
Noors nee X indicating no. Green check mark.
Punjabi pa Green check mark. X indicating no.
Pools pl Green check mark. Green check mark.
Portugees - Brazilië pt-br Green check mark. Green check mark.
Portugees - Portugal pt-pt Green check mark. Green check mark.
Roemeens ro Green check mark. Green check mark.
Russisch ru Green check mark. Green check mark.
Slowaaks sk Green check mark. Green check mark.
Sloveens sl X indicating no. Green check mark.
Servisch - Cyrillisch sr-cryl-cs X indicating no. Green check mark.
Servisch - Latijns sr-latn-cs X indicating no. Green check mark.
Zweeds sv Green check mark. Green check mark.
Tamil ta Green check mark. X indicating no.
Telugu te Green check mark. X indicating no.
Thai th Green check mark. Green check mark.
Turks tr Green check mark. Green check mark.
Oekraïens uk X indicating no. Green check mark.
Vietnamees vi X indicating no. Green check mark.
Welsh cy X indicating no. X indicating no.
Chinees - Vereenvoudigd zh-hans Green check mark. Green check mark.
Chinees - Traditioneel zh-hant Green check mark. Green check mark.

Volgende stappen

U vindt meer informatie over het aanpassen van de gebruikersinterface van uw toepassingen in De gebruikersinterface van uw toepassing aanpassen in Azure Active Directory B2C.