Språkanpassning i Azure Active Directory B2C

Innan du börjar använder du väljaren Välj en principtyp för att välja den typ av princip som du konfigurerar. Azure Active Directory B2C erbjuder två metoder för att definiera hur användare interagerar med dina program: via fördefinierade användarflöden eller genom fullständigt konfigurerbara anpassade principer. De steg som krävs i den här artikeln skiljer sig åt för varje metod.

Med språkanpassning i Azure Active Directory B2C (Azure AD B2C) kan ditt användarflöde anpassa olika språk efter kundens behov. Microsoft tillhandahåller översättningar för 36 språk, men du kan också tillhandahålla dina egna översättningar för valfritt språk. Även om din upplevelse endast tillhandahålls för ett enda språk kan du anpassa valfri text på sidorna.

Så här fungerar språkanpassning

Du använder språkanpassning för att välja vilka språk som ditt användarflöde är tillgängligt i. När funktionen har aktiverats kan du ange frågesträngsparametern , ui_localesfrån ditt program. När du anropar Till Azure AD B2C översätts sidan till det språk du har angett. Den här typen av konfiguration ger dig fullständig kontroll över språken i ditt användarflöde och ignorerar språkinställningarna i kundens webbläsare.

Du kanske inte behöver den nivån av kontroll över vilka språk kunden ser. Om du inte anger någon ui_locales parameter styrs kundens upplevelse av webbläsarens inställningar. Du kan fortfarande styra vilka språk som ditt användarflöde översätts till genom att lägga till det som ett språk som stöds. Om en kunds webbläsare är inställd på att visa ett språk som du inte vill stödja visas det språk som du valde som standard i kulturer som stöds i stället.

  • Angivet språk för användargränssnitt: När du har aktiverat språkanpassning översätts användarflödet till det språk som anges här.
  • Språk som begärs av webbläsaren: Om ingen ui_locales parameter har angetts översätts användarflödet till det språk som begärs av webbläsaren, om språket stöds.
  • Standardspråk för princip: Om webbläsaren inte anger något språk, eller om det anger ett språk som inte stöds, översätts användarflödet till standardspråket för användarflödet.

Kommentar

Om du använder anpassade användarattribut måste du ange egna översättningar. Mer information finns i Anpassa dina strängar.

Titta på den här videon om du vill lära dig hur du lokaliserar eller anpassar språk med Hjälp av Azure AD B2C.

Lokalisering kräver tre steg:

  1. Konfigurera den explicita listan över språk som stöds
  2. Ange språkspecifika strängar och samlingar
  3. Redigera innehållsdefinitionen för sidan.

Förutsättningar

Stöd för begärda språk för ui_locales

Principer som skapades före den allmänna tillgängligheten för språkanpassning måste aktivera den här funktionen först. Principer och användarflöden som skapades efter har språkanpassning aktiverat som standard.

När du aktiverar språkanpassning i ett användarflöde kan du styra språket i användarflödet genom att lägga till parametern ui_locales .

  1. I din Azure AD B2C-klient väljer du Användarflöden.
  2. Klicka på det användarflöde som du vill aktivera för översättningar.
  3. Välj Språk.
  4. Välj Aktivera språkanpassning.

Välj vilka språk i användarflödet som är aktiverade

Aktivera en uppsättning språk för ditt användarflöde som ska översättas till när webbläsaren begär det utan parametern ui_locales .

  1. Kontrollera att ditt användarflöde har språkanpassning aktiverat från tidigare instruktioner.
  2. På sidan Språk för användarflödet väljer du ett språk som du vill stödja.
  3. I egenskapsfönstret ändrar du Aktiverad till Ja.
  4. Välj Spara överst i egenskapsfönstret.

Kommentar

Om en ui_locales parameter inte anges översätts sidan endast till kundens webbläsarspråk om den är aktiverad.

Anpassa dina strängar

Med språkanpassning kan du anpassa valfri sträng i användarflödet.

  1. Kontrollera att användarflödet har aktiverat språkanpassning från föregående instruktioner.
  2. På sidan Språk för användarflödet väljer du det språk som du vill anpassa.
  3. Under Filer på sidnivå-resurser väljer du den sida som du vill redigera.
  4. Välj Hämta standardvärden (eller Ladda ned åsidosättningar om du tidigare har redigerat det här språket).

De här stegen ger dig en JSON-fil som du kan använda för att börja redigera strängarna.

Ändra valfri sträng på sidan

  1. Öppna JSON-filen som laddats ned från tidigare instruktioner i en JSON-redigerare.
  2. Leta reda på det element som du vill ändra. Du kan hitta StringId för strängen du letar efter eller leta efter det Value attribut som du vill ändra.
  3. Value Uppdatera attributet med det du vill visa.
  4. För varje sträng som du vill ändra ändrar Override du till true.
  5. Spara filen och ladda upp ändringarna. (Du hittar uppladdningskontrollen på samma plats som där du laddade ned JSON-filen.)

Viktigt!

Om du behöver åsidosätta en sträng måste du ange Override värdet till true. Om värdet inte ändras ignoreras posten.

Ändra tilläggsattribut

Om du vill ändra strängen för ett anpassat användarattribut, eller om du vill lägga till en i JSON, är den i följande format:

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

Ersätt <ExtensionAttribute> med namnet på ditt anpassade användarattribut.

Ersätt <ExtensionAttributeValue> med den nya strängen som ska visas.

Ange en lista med värden med hjälp av LocalizedCollections

Om du vill ange en uppsättning värden för svar måste du skapa ett LocalizedCollections attribut. LocalizedCollections är en matris med Name och Value par. Ordningen för objekten är den ordning som de visas. Om du vill lägga till LocalizedCollectionsanvänder du följande format:

{
  "LocalizedStrings": [...],
  "LocalizedCollections": [
    {
      "ElementType":"ClaimType",
      "ElementId":"<UserAttribute>",
      "TargetCollection":"Restriction",
      "Override": true,
      "Items":[
        {
          "Name":"<Response1>",
          "Value":"<Value1>"
        },
        {
          "Name":"<Response2>",
          "Value":"<Value2>"
        }
      ]
    }
  ]
}
  • ElementId är det användarattribut som det här LocalizedCollections attributet är ett svar på.
  • Name är det värde som visas för användaren.
  • Value är vad som returneras i anspråket när det här alternativet väljs.

Ladda upp dina ändringar

  1. När du har slutfört ändringarna i JSON-filen går du tillbaka till din B2C-klientorganisation.
  2. Välj Användarflöden och klicka på det användarflöde som du vill aktivera för översättningar.
  3. Välj Språk.
  4. Välj det språk som du vill översätta till.
  5. Välj den sida där du vill tillhandahålla översättningar.
  6. Välj mappikonen och välj den JSON-fil som ska laddas upp.

Ändringarna sparas automatiskt i användarflödet.

Anpassa sidgränssnittet med hjälp av språkanpassning

Det finns två sätt att lokalisera HTML-innehållet. Ett sätt är att aktivera språkanpassning. Om du aktiverar den här funktionen kan Azure AD B2C vidarebefordra Parametern OpenID Anslut, ui-locales, till slutpunkten. Innehållsservern kan använda den här parametern för att tillhandahålla anpassade HTML-sidor som är språkspecifika.

Du kan också hämta innehåll från olika platser baserat på de nationella inställningar som används. I din CORS-aktiverade slutpunkt kan du konfigurera en mappstruktur som värd för innehåll för specifika språk. Du anropar den rätta om du använder jokertecknet {Culture:RFC5646}. Anta till exempel att det här är din anpassade sid-URI:

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

Du kan läsa in sidan i fr. När sidan hämtar HTML- och CSS-innehåll hämtas den från:

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

Lägga till anpassade språk

Du kan också lägga till språk som Microsoft för närvarande inte tillhandahåller översättningar för. Du måste ange översättningarna för alla strängar i användarflödet. Språk- och språkkoder är begränsade till dem i STANDARDEN ISO 639-1. Språkkodformatet ska vara "ISO_639-1_code"-"CountryCode", till exempel en-GB. Mer information finns i språkvariant-ID-format.

  1. I din Azure AD B2C-klient väljer du Användarflöden.
  2. Klicka på användarflödet där du vill lägga till anpassade språk och klicka sedan på Språk.
  3. Välj Lägg till anpassat språk överst på sidan.
  4. I kontextfönstret som öppnas identifierar du vilket språk du tillhandahåller översättningar för genom att ange en giltig språkkod.
  5. För varje sida kan du ladda ned en uppsättning åsidosättningar för engelska och arbeta med översättningarna.
  6. När du är klar med JSON-filerna kan du ladda upp dem för varje sida.
  7. Välj Aktivera och ditt användarflöde kan nu visa det här språket för dina användare.
  8. Spara språket.

Viktigt!

Du måste antingen aktivera de anpassade språken eller ladda upp åsidosättningar för det innan du kan spara.

Konfigurera listan över språk som stöds

Öppna tilläggsfilen för principen. Exempel: SocialAndLocalAccounts/TrustFrameworkExtensions.xml

  1. Sök efter elementet BuildingBlocks . Om elementet inte finns lägger du till det.
  2. Lägg till elementet Localization med de språk som stöds: engelska (standard) och spanska.
<Localization Enabled="true">
  <SupportedLanguages DefaultLanguage="en" MergeBehavior="ReplaceAll">
    <SupportedLanguage>en</SupportedLanguage>
    <SupportedLanguage>es</SupportedLanguage>
  </SupportedLanguages>
</Localization>

Ange språkspecifika etiketter

LocalizedResources för elementet Localization innehåller listan med lokaliserade strängar. Elementet lokaliserade resurser har en identifierare som används för att unikt identifiera lokaliserade resurser. Den här identifieraren används senare i innehållsdefinitionselementet.

Du konfigurerar lokaliserade resurselement för innehållsdefinitionen och alla språk som du vill stödja. Om du vill anpassa de enhetliga registrerings- eller inloggningssidorna för engelska och spanska lägger du till följande LocalizedResources element efter slutet av elementet </SupportedLanguages> .

Kommentar

I följande exempel lade vi till pundsymbolen # i början av varje rad, så att du enkelt kan hitta de lokaliserade etiketterna på skärmen.

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

Redigera innehållsdefinitionen med lokaliseringen

Klistra in hela innehållet i elementet ContentDefinitions som du kopierade som underordnat elementet BuildingBlocks.

I följande exempel läggs anpassade strängar på engelska (en) och spanska (es) till på registrerings- eller inloggningssidan och på registreringssidan för det lokala kontot. LocalizedResourcesReferenceId för varje LocalizedResourcesReference är samma som deras nationella inställningar, men du kan använda valfri sträng som identifierare. För varje språk- och sidkombination pekar du på motsvarande LocalizedResources som du skapade tidigare.

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

Ladda upp och testa din uppdaterade anpassade princip

Ladda upp den anpassade principen

  1. Spara filnamnstillägget.
  2. Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klient från menyn Kataloger + prenumerationer.
  3. Sök efter och markera Azure AD B2C.
  4. Under Principer väljer du Identity Experience Framework.
  5. Välj Överför anpassad princip.
  6. Ladda upp filnamnstillägget som du ändrade tidigare.

Testa den anpassade principen med kör nu

  1. Välj den princip som du laddade upp och välj sedan Kör nu.
  2. Du bör kunna se den lokaliserade registrerings- eller inloggningssidan.
  3. Klicka på registreringslänken så kan du se den lokaliserade registreringssidan.
  4. Växla webbläsarens standardspråk till spanska. Eller så kan du lägga till frågesträngsparametern ui_locales i auktoriseringsbegäran. Till exempel:
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

Ytterligare information

Sidgränssnittsanpassningsetiketter som åsidosättningar

När du aktiverar språkanpassning sparas dina tidigare redigeringar för etiketter med sidgränssnittsanpassning i en JSON-fil för engelska (en). Du kan fortsätta att ändra etiketter och andra strängar genom att ladda upp språkresurser i språkanpassning.

Uppdaterade översättningar

Microsoft har åtagit sig att tillhandahålla de senaste översättningarna för din användning. Microsoft förbättrar kontinuerligt översättningarna och håller dem i överensstämmelse för dig. Microsoft identifierar buggar och ändringar i den globala terminologin och gör uppdateringar som fungerar sömlöst i ditt användarflöde.

Stöd för höger-till-vänster-språk

Microsoft tillhandahåller för närvarande inte stöd för höger-till-vänster-språk. Du kan göra detta genom att använda anpassade nationella inställningar och använda CSS för att ändra hur strängarna visas. Om du behöver den här funktionen kan du rösta på den i Azure Feedback.

Översättning av social identitetsprovider

Microsoft tillhandahåller OIDC-parametern ui_locales för sociala inloggningar. Men vissa sociala identitetsleverantörer, inklusive Facebook och Google, hedrar dem inte.

Webbläsarbeteende

Chrome och Firefox begär båda sitt angivna språk. Om det är ett språk som stöds visas det före standardvärdet. Microsoft Edge begär för närvarande inte något språk och går direkt till standardspråket.

Språk som stöds

Azure AD B2C innehåller stöd för följande språk med hjälp av ISO 639-1-koder. Användarflödesspråk tillhandahålls av Azure AD B2C. Meddelandespråken för multifaktorautentisering tillhandahålls av Microsoft Entra multifaktorautentisering.

Språk Språkkod Användarflöden MFA-meddelanden
Arabiska ar X indicating no. Green check mark.
Bulgariska bg X indicating no. Green check mark.
Bangla Bn Green check mark. X indicating no.
Katalanska ca X indicating no. Green check mark.
Tjeckiska cs Green check mark. Green check mark.
Danska da Green check mark. Green check mark.
Tyska de Green check mark. Green check mark.
Grekiska el Green check mark. Green check mark.
English en Green check mark. Green check mark.
Spanska es Green check mark. Green check mark.
Estniska et X indicating no. Green check mark.
Baskiska eu X indicating no. Green check mark.
Finska fi Green check mark. Green check mark.
Franska fr Green check mark. Green check mark.
Galiciska gl X indicating no. Green check mark.
Gujarati Gu Green check mark. X indicating no.
Hebreiska he X indicating no. Green check mark.
Hindi hi Green check mark. Green check mark.
Kroatiska tim Green check mark. Green check mark.
Ungerska hu Green check mark. Green check mark.
Indonesiska ID X indicating no. Green check mark.
Italienska it Green check mark. Green check mark.
Japanska ja Green check mark. Green check mark.
Kazakiska kk X indicating no. Green check mark.
Kannada Kn Green check mark. X indicating no.
Koreanska ko Green check mark. Green check mark.
Litauiska lt X indicating no. Green check mark.
Lettiska lv X indicating no. Green check mark.
Malayalam Ml Green check mark. X indicating no.
Marathi Mr Green check mark. X indicating no.
Malajiska ms Green check mark. Green check mark.
Norska Bokmal nb Green check mark. X indicating no.
Nederländska nl Green check mark. Green check mark.
Norska no X indicating no. Green check mark.
Punjabi Pa Green check mark. X indicating no.
Polska pl Green check mark. Green check mark.
Portugisiska – Brasilien pt-br Green check mark. Green check mark.
Portugisiska – Portugal pt-pt Green check mark. Green check mark.
Rumänska ro Green check mark. Green check mark.
Ryska ru Green check mark. Green check mark.
Slovakiska sk Green check mark. Green check mark.
Slovenska sl X indicating no. Green check mark.
Serbiska - kyrillisk sr-cryl-cs X indicating no. Green check mark.
Serbiska - latinsk sr-latn-cs X indicating no. Green check mark.
Svenska sv Green check mark. Green check mark.
Tamilska ta Green check mark. X indicating no.
Telugu te Green check mark. X indicating no.
Thailändska th Green check mark. Green check mark.
Turkiska tr Green check mark. Green check mark.
Ukrainska uk X indicating no. Green check mark.
Vietnamesiska vi X indicating no. Green check mark.
Walesiska Cy X indicating no. X indicating no.
Kinesiska – förenklad zh-hans Green check mark. Green check mark.
Kinesiska – traditionell zh-hant Green check mark. Green check mark.

Nästa steg

Mer information om hur du kan anpassa användargränssnittet för dina program finns i Anpassa användargränssnittet för ditt program i Azure Active Directory B2C.

  • Läs mer om lokaliseringselementet i IEF-referensen.
  • Se listan över lokaliseringssträngs-ID : n som är tillgängliga i Azure AD B2C.