Azure Active Directory B2C'de dil özelleştirme

Başlamadan önce, ayarladığınız ilke türünü seçmek için İlke türü seçin seçicisini kullanın. Azure Active Directory B2C, kullanıcıların uygulamalarınızla nasıl etkileşim kurduğunu tanımlamak için iki yöntem sunar: önceden tanımlanmış kullanıcı akışları veya tamamen yapılandırılabilir özel ilkeler aracılığıyla. Bu makalede gerekli adımlar her yöntem için farklıdır.

Azure Active Directory B2C'de (Azure AD B2C) dil özelleştirmesi, kullanıcı akışınızın müşteri gereksinimlerinize uygun farklı dilleri barındırmasını sağlar. Microsoft , 36 dil için çeviri sağlar, ancak herhangi bir dil için kendi çevirilerinizi de sağlayabilirsiniz. Deneyiminiz yalnızca tek bir dil için sağlansa bile, sayfalardaki tüm metinleri özelleştirebilirsiniz.

Dil özelleştirme nasıl çalışır?

Kullanıcı akışınızın hangi dillerde kullanılabilir olduğunu seçmek için dil özelleştirmesini kullanırsınız. Özellik etkinleştirildikten sonra, sorgu dizesi parametresini ui_localesuygulamanızdan sağlayabilirsiniz. Azure AD B2C'yi aradığınızda, sayfanız belirttiğiniz yerel ayara çevrilir. Bu tür bir yapılandırma, kullanıcı akışınızdaki diller üzerinde tam denetim sağlar ve müşterinin tarayıcısının dil ayarlarını yoksayar.

Müşterinizin gördüğü diller üzerinde bu düzeyde denetime ihtiyacınız olmayabilir. Parametre ui_locales sağlamazsanız müşterinin deneyimi, tarayıcı ayarları tarafından dikte edilir. Kullanıcı akışınızı desteklenen bir dil olarak ekleyerek hangi dillere çevrildiğini denetlemeye devam edebilirsiniz. Müşterinin tarayıcısı desteklemek istemediğiniz bir dili gösterecek şekilde ayarlandıysa, bunun yerine desteklenen kültürlerde varsayılan olarak seçtiğiniz dil gösterilir.

  • ui-locales belirtilen dil: Dil özelleştirmeyi etkinleştirdikten sonra, kullanıcı akışınız burada belirtilen dile çevrilir.
  • Tarayıcı tarafından istenen dil: Parametre belirtilmediyse ui_locales , dil destekleniyorsa kullanıcı akışınız tarayıcı tarafından istenen dile çevrilir.
  • İlke varsayılan dili: Tarayıcı bir dil belirtmiyorsa veya desteklenmeyen bir dil belirtiyorsa, kullanıcı akışı kullanıcı akışı varsayılan diline çevrilir.

Not

Özel kullanıcı öznitelikleri kullanıyorsanız kendi çevirilerinizi sağlamanız gerekir. Daha fazla bilgi için bkz. Dizelerinizi özelleştirme.

Azure AD B2C kullanarak dili yerelleştirmeyi veya özelleştirmeyi öğrenmek için bu videoyu izleyin.

Yerelleştirme üç adım gerektirir:

  1. Desteklenen dillerin açık listesini ayarlama
  2. Dile özgü dizeler ve koleksiyonlar sağlama
  3. Sayfanın içerik tanımını düzenleyin.

Önkoşullar

ui_locales için destek istenen diller

Dil özelleştirmesinin genel kullanılabilirliği öncesinde oluşturulan ilkelerin önce bu özelliği etkinleştirmesi gerekir. İlkeler ve oluşturulduktan sonra oluşturulan kullanıcı akışlarında dil özelleştirmesi varsayılan olarak etkindir.

Kullanıcı akışında dil özelleştirmeyi etkinleştirdiğinizde, parametresini ekleyerek ui_locales kullanıcı akışının dilini denetleyebilirsiniz.

  1. Azure AD B2C kiracınızda Kullanıcı akışları'yı seçin.
  2. Çeviriler için etkinleştirmek istediğiniz kullanıcı akışına tıklayın.
  3. Diller'i seçin.
  4. Dil özelleştirmeyi etkinleştir'i seçin.

Kullanıcı akışınızda hangi dillerin etkinleştirildiğini seçin

Kullanıcı akışınız için tarayıcı tarafından parametresiz ui_locales istendiğinde çevrilecek bir dil kümesini etkinleştirin.

  1. Kullanıcı akışınızda önceki yönergelerden dil özelleştirmenin etkinleştirildiğinden emin olun.
  2. Kullanıcı akışının Diller sayfasında, desteklemek istediğiniz dili seçin.
  3. Özellikler bölmesinde Etkin'iEvet olarak değiştirin.
  4. Özellikler bölmesinin üst kısmındaki Kaydet'i seçin.

Not

Parametre ui_locales sağlanmazsa, sayfa yalnızca etkinleştirildiğinde müşterinin tarayıcı diline çevrilir.

Dizelerinizi özelleştirme

Dil özelleştirmesi, kullanıcı akışınızdaki herhangi bir dizeyi özelleştirmenizi sağlar.

  1. Kullanıcı akışınızda önceki yönergelerde yer alan dil özelleştirmesinin etkinleştirildiğinden emin olun.
  2. Kullanıcı akışının Diller sayfasında özelleştirmek istediğiniz dili seçin.
  3. Sayfa düzeyi kaynak dosyaları'nın altında, düzenlemek istediğiniz sayfayı seçin.
  4. Varsayılanları indir'i (veya bu dili daha önce düzenlediyseniz geçersiz kılmaları indir)'i seçin.

Bu adımlar, dizelerinizi düzenlemeye başlamak için kullanabileceğiniz bir JSON dosyası sağlar.

Sayfadaki herhangi bir dizeyi değiştirme

  1. Önceki yönergelerden indirilen JSON dosyasını bir JSON düzenleyicisinde açın.
  2. Değiştirmek istediğiniz öğeyi bulun. Aradığınız dizeyi bulabilir StringId veya değiştirmek istediğiniz özniteliği arayabilirsiniz Value .
  3. Özniteliği, Value görüntülenmesini istediğiniz öğeyle güncelleştirin.
  4. Değiştirmek istediğiniz her dize için olarak değiştirin Overridetrue.
  5. Dosyayı kaydedin ve değişikliklerinizi karşıya yükleyin. (Karşıya yükleme denetimini JSON dosyasını indirdiğiniz yerde bulabilirsiniz.)

Önemli

Bir dizeyi geçersiz kılmanız gerekiyorsa, değerini trueolarak ayarladığınızdan Override emin olun. Değer değiştirilmezse, giriş yoksayılır.

Uzantı özniteliklerini değiştirme

Özel bir kullanıcı özniteliğinin dizesini değiştirmek veya JSON'a eklemek istiyorsanız, şu biçimdedir:

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

değerini özel kullanıcı özniteliğinizin adıyla değiştirin <ExtensionAttribute> .

öğesini görüntülenecek yeni dizeyle değiştirin <ExtensionAttributeValue> .

LocalizedCollections kullanarak değerlerin listesini sağlama

Yanıtlar için belirli bir değer listesi sağlamak istiyorsanız, bir LocalizedCollections öznitelik oluşturmanız gerekir. LocalizedCollectionsbir ve Value çiftleri Name dizisidir. Öğelerin sırası, görüntülendikleri sipariş olacaktır. eklemek LocalizedCollectionsiçin aşağıdaki biçimi kullanın:

{
  "LocalizedStrings": [...],
  "LocalizedCollections": [
    {
      "ElementType":"ClaimType",
      "ElementId":"<UserAttribute>",
      "TargetCollection":"Restriction",
      "Override": true,
      "Items":[
        {
          "Name":"<Response1>",
          "Value":"<Value1>"
        },
        {
          "Name":"<Response2>",
          "Value":"<Value2>"
        }
      ]
    }
  ]
}
  • ElementId , bu LocalizedCollections özniteliğin yanıt olduğu kullanıcı özniteliğidir.
  • Name kullanıcıya gösterilen değerdir.
  • Value , bu seçenek belirlendiğinde talepte döndürülen seçenektir.

Değişikliklerinizi Upload

  1. JSON dosyanızdaki değişiklikleri tamamladıktan sonra B2C kiracınıza geri dönün.
  2. Kullanıcı akışları'nı seçin ve çeviriler için etkinleştirmek istediğiniz kullanıcı akışına tıklayın.
  3. Diller'i seçin.
  4. Çevirmek istediğiniz dili seçin.
  5. Çevirileri sağlamak istediğiniz sayfayı seçin.
  6. Klasör simgesini seçin ve karşıya yüklenecek JSON dosyasını seçin.

Değişiklikler otomatik olarak kullanıcı akışınıza kaydedilir.

Dil özelleştirmesini kullanarak sayfa kullanıcı arabirimini özelleştirme

HTML içeriğinizi yerelleştirmenin iki yolu vardır. Bunun bir yolu dil özelleştirmeyi açmaktır. Bu özelliğin etkinleştirilmesi, Azure AD B2C'nin OpenID Bağlan parametresini ui-localesuç noktanıza iletmesine olanak tanır. İçerik sunucunuz, dile özgü özelleştirilmiş HTML sayfaları sağlamak için bu parametreyi kullanabilir.

Alternatif olarak, kullanılan yerel ayara göre farklı yerlerden içerik çekebilirsiniz. CORS özellikli uç noktanızda, belirli diller için içeriği barındıracak bir klasör yapısı ayarlayabilirsiniz. joker karakter değerini {Culture:RFC5646}kullanırsanız doğru olanı çağırırsınız. Örneğin, bunun özel sayfa URI'niz olduğunu varsayalım:

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

sayfasını içinde fryükleyebilirsiniz. Sayfa HTML ve CSS içeriğini çektiğinde şu kaynaktan çekiliyor:

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

Özel dil ekleme

Microsoft'un şu anda çeviri sağlamadığı dilleri de ekleyebilirsiniz. Kullanıcı akışındaki tüm dizeler için çevirileri sağlamanız gerekir. Dil ve yerel ayar kodları ISO 639-1 standardında yer alan kodlarla sınırlıdır. Yerel ayar kodu biçimi "ISO_639-1_code"-"CountryCode" olmalıdır, örneğin en-GB. Daha fazla bilgi için lütfen yerel ayar kimliği biçimlerine bakın.

  1. Azure AD B2C kiracınızda Kullanıcı akışları'yı seçin.
  2. Özel dil eklemek istediğiniz kullanıcı akışına tıklayın ve ardından Diller'e tıklayın.
  3. Sayfanın üst kısmından Özel dil ekle'yi seçin.
  4. Açılan bağlam bölmesinde, geçerli bir yerel ayar kodu girerek hangi dil için çeviri sağladığınızı belirleyin.
  5. Her sayfa için, İngilizce için bir dizi geçersiz kılma indirebilir ve çeviriler üzerinde çalışabilirsiniz.
  6. JSON dosyalarını tamamladıktan sonra bunları her sayfa için karşıya yükleyebilirsiniz.
  7. Etkinleştir'i seçtiğinizde kullanıcı akışınız artık kullanıcılarınız için bu dili gösterebilir.
  8. Dili kaydedin.

Önemli

Kaydetmeden önce özel dilleri etkinleştirmeniz veya geçersiz kılmaları karşıya yüklemeniz gerekir.

Desteklenen dillerin listesini ayarlama

İlkenizin uzantılar dosyasını açın. Örneğin, SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  1. BuildingBlocks öğesini arayın. Öğe yoksa ekleyin.
  2. Localization Desteklenen dillere sahip öğesini ekleyin: İngilizce (varsayılan) ve İspanyolca.
<Localization Enabled="true">
  <SupportedLanguages DefaultLanguage="en" MergeBehavior="ReplaceAll">
    <SupportedLanguage>en</SupportedLanguage>
    <SupportedLanguage>es</SupportedLanguage>
  </SupportedLanguages>
</Localization>

Dile özgü etiketler sağlama

öğesinin LocalizationLocalizedResources öğesi, yerelleştirilmiş dizelerin listesini içerir. Yerelleştirilmiş kaynaklar öğesi, yerelleştirilmiş kaynakları benzersiz olarak tanımlamak için kullanılan bir tanımlayıcıya sahiptir. Bu identifer daha sonra içerik tanımı öğesinde kullanılır.

İçerik tanımı ve desteklemek istediğiniz herhangi bir dil için yerelleştirilmiş kaynak öğelerini yapılandırabilirsiniz. İngilizce ve İspanyolca için birleşik kaydolma veya oturum açma sayfalarını özelleştirmek için, öğenin kapatılmasından </SupportedLanguages> sonra aşağıdaki LocalizedResources öğeleri eklersiniz.

Not

Aşağıdaki örnekte her satırın başına kare # simgesini ekledik, böylece yerelleştirilmiş etiketleri ekranda kolayca bulabilirsiniz.

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

İçerik tanımını yerelleştirmeyle düzenleme

BuildingBlocks öğesinin alt öğesi olarak kopyaladığınız ContentDefinitions öğesinin tüm içeriğini yapıştırın.

Aşağıdaki örnekte, kaydolma veya oturum açma sayfasına ve yerel hesap kayıt sayfasına İngilizce (en) ve İspanyolca (es) özel dizeleri eklenir. Her LocalizedResourcesReference için LocalizedResourcesReferenceId değeri yerel ayarlarıyla aynıdır, ancak tanımlayıcı olarak herhangi bir dizeyi kullanabilirsiniz. Her dil ve sayfa bileşimi için, daha önce oluşturduğunuz localizedResources'a işaret eder.

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

Güncelleştirilmiş özel ilkenizi Upload ve test edin

Özel ilkeyi Upload

  1. Uzantılar dosyasını kaydedin.
  2. Azure AD B2C kiracınızı içeren dizini kullandığınızdan emin olun. Portal araç çubuğunda Dizinler + abonelikler simgesini seçin.
  3. Portal ayarları | Dizinler + abonelikler sayfası, Dizin adı listesinde Azure AD B2C dizininizi bulun ve ardından Değiştir'i seçin.
  4. Azure AD B2C'yi arayın ve seçin.
  5. İlkeler'in altında Kimlik Deneyimi Çerçevesi'ne tıklayın.
  6. Özel ilke Upload'i seçin.
  7. Daha önce değiştirdiğiniz uzantılar dosyasını Upload.

Şimdi çalıştır'ı kullanarak özel ilkeyi test edin

  1. Karşıya yüklediğiniz ilkeyi seçin ve ardından Şimdi çalıştır'ı seçin.
  2. Yerelleştirilmiş kaydolma veya oturum açma sayfasını görebilmeniz gerekir.
  3. Kaydolma bağlantısına tıkladığınızda yerelleştirilmiş kaydolma sayfasını görebilmeniz gerekir.
  4. Tarayıcınızın varsayılan dilini İspanyolca olarak değiştirin. İsterseniz yetkilendirme isteğine sorgu dizesi parametresini ui_locales de ekleyebilirsiniz. Örneğin:
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

Ek bilgiler

Geçersiz kılma olarak sayfa kullanıcı arabirimi özelleştirme etiketleri

Dil özelleştirmeyi etkinleştirdiğinizde, sayfa kullanıcı arabirimi özelleştirmesini kullanan etiketler için önceki düzenlemeleriniz İngilizce (en) için bir JSON dosyasında kalıcı hale alınır. Dil özelleştirmesinde dil kaynaklarını karşıya yükleyerek etiketlerinizi ve diğer dizelerinizi değiştirmeye devam edebilirsiniz.

Güncel çeviriler

Microsoft, kullanımınız için en güncel çevirileri sağlamayı taahhüt eder. Microsoft çevirileri sürekli olarak geliştirir ve sizin için uyumlu kalmasını sağlar. Microsoft, genel terminolojideki hataları ve değişiklikleri belirleyecek ve kullanıcı akışınızda sorunsuz çalışacak güncelleştirmeler yapacaktır.

Sağdan sola dil desteği

Microsoft şu anda sağdan sola diller için destek sağlamaz. Bunu, özel yerel ayarlar kullanarak ve dizelerin görüntülenme biçimini değiştirmek için CSS kullanarak gerçekleştirebilirsiniz. Bu özelliğe ihtiyacınız varsa lütfen Azure Geri Bildirimi'ne oy verin.

Sosyal kimlik sağlayıcısı çevirileri

Microsoft, sosyal oturum açma işlemleri için OIDC parametresini sağlar ui_locales . Ancak Facebook ve Google dahil olmak üzere bazı sosyal kimlik sağlayıcıları onları onurlandırmıyor.

Tarayıcı davranışı

Hem Chrome hem de Firefox, ayarlanan dil için istekte bulunur. Desteklenen bir dilse, varsayılandan önce görüntülenir. Microsoft Edge şu anda bir dil istememektedir ve doğrudan varsayılan dile gider.

Desteklenen diller

Azure AD B2C aşağıdaki diller için destek içerir. Kullanıcı akışı dilleri Azure AD B2C tarafından sağlanır. Çok faktörlü kimlik doğrulaması (MFA) bildirim dilleri Azure AD MFA tarafından sağlanır.

Dil Dil kodu Kullanıcı akışları MFA bildirimleri
Arapça Ar X indicating no. Green check mark.
Bulgarca Bg X indicating no. Green check mark.
Bangla Bn Green check mark. X indicating no.
Katalanca Ca X indicating no. Green check mark.
Çekçe Cs Green check mark. Green check mark.
Danca Savcı Green check mark. Green check mark.
Almanca de Green check mark. Green check mark.
Yunanca El Green check mark. Green check mark.
İngilizce en Green check mark. Green check mark.
Spanish es Green check mark. Green check mark.
Estonya Dili et X indicating no. Green check mark.
Baskça Ab X indicating no. Green check mark.
Fince Fi Green check mark. Green check mark.
Fransızca Fr Green check mark. Green check mark.
Galiçya Dili Gl X indicating no. Green check mark.
Gucerat dili Gu Green check mark. X indicating no.
İbranice Hge X indicating no. Green check mark.
Hintçe merhaba Green check mark. Green check mark.
Hırvatça sa Green check mark. Green check mark.
Macarca Hu Green check mark. Green check mark.
Endonezce kimlik X indicating no. Green check mark.
İtalyanca bu Green check mark. Green check mark.
Japonca Ja Green check mark. Green check mark.
Kazakça kk X indicating no. Green check mark.
Kannada dili kn Green check mark. X indicating no.
Korece ko Green check mark. Green check mark.
Litvanca lt X indicating no. Green check mark.
Letonca Lv X indicating no. Green check mark.
Malayalam dili ml Green check mark. X indicating no.
Marathi Bay Green check mark. X indicating no.
Malayca Bayan Green check mark. Green check mark.
Norveççe Bokmal Nb Green check mark. X indicating no.
Felemenkçe Nl Green check mark. Green check mark.
Norveççe hayır X indicating no. Green check mark.
Pencap dili Pa Green check mark. X indicating no.
Lehçe Pl Green check mark. Green check mark.
Portekizce - Brezilya pt-br Green check mark. Green check mark.
Portekizce - Portekiz pt-pt Green check mark. Green check mark.
Rumence Ro Green check mark. Green check mark.
Rusça Ru Green check mark. Green check mark.
Slovakça sk Green check mark. Green check mark.
Slovence Sl X indicating no. Green check mark.
Sırpça (Kiril) sr-cryl-cs X indicating no. Green check mark.
Sırpça (Latin) sr-latn-cs X indicating no. Green check mark.
İsveççe Sv Green check mark. Green check mark.
Tamil dili ta Green check mark. X indicating no.
Telugu dili te Green check mark. X indicating no.
Tayca th Green check mark. Green check mark.
Türkçe tr Green check mark. Green check mark.
Ukraynaca Ingiltere X indicating no. Green check mark.
Vietnamca X indicating no. Green check mark.
Basitleştirilmiş Çince zh-hans Green check mark. Green check mark.
Geleneksel Çince zh-hant Green check mark. Green check mark.

Sonraki adımlar