Kustomisasi bahasa di Azure Active Directory B2C

Sebelum memulai, gunakan pemilih Pilih jenis kebijakan untuk memilih jenis kebijakan yang Anda siapkan. Azure Active Directory B2C menawarkan dua metode untuk menentukan cara pengguna berinteraksi dengan aplikasi Anda: melalui alur pengguna yang telah ditentukan sebelumnya atau melalui kebijakan kustom yang sepenuhnya dapat dikonfigurasi. Langkah yang diperlukan dalam artikel ini berbeda untuk setiap metode.

Kustomisasi bahasa di Azure Active Directory B2C (Azure AD B2C) memungkinkan alur pengguna Anda untuk mengakomodasi berbagai bahasa yang sesuai dengan kebutuhan pelanggan Anda. Microsoft menyediakan terjemahan untuk 36 bahasa,tetapi Anda juga dapat menyediakan terjemahan Anda sendiri untuk bahasa apa pun. Bahkan jika pengalaman Anda disediakan hanya untuk satu bahasa komputer, Anda dapat menyesuaikan teks apa pun di halaman.

Cara kerja kustomisasi bahasa

Anda menggunakan kustomisasi bahasa untuk memilih bahasa tempat alur pengguna Anda tersedia. Setelah fitur diaktifkan, Anda dapat memberikan parameter string kueri, ui_locales dari aplikasi Anda. Saat Anda menelepon ke Azure AD B2C, halaman Anda diterjemahkan ke wilayah yang telah Anda indikasikan. Jenis konfigurasi ini memberi Anda kontrol penuh atas bahasa dalam alur pengguna Anda dan mengabaikan pengaturan bahasa browser pelanggan.

Anda mungkin tidak memerlukan tingkat kontrol atas bahasa apa yang dilihat pelanggan Anda. Jika Anda tidak memberikan ui_locales parameter, pengalaman pelanggan ditentukan oleh pengaturan browser mereka. Anda masih dapat mengontrol bahasa mana yang diterjemahkan oleh arus pengguna dengan menambahkannya sebagai bahasa yang didukung. Jika browser pelanggan diatur untuk menampilkan bahasa yang tidak ingin Anda dukung, maka bahasa yang Anda pilih sebagai default dalam budaya yang didukung akan ditampilkan sebagai gantinya.

  • bahasa yang ditentukan ui-locales: Setelah Anda mengaktifkan kustomisasi bahasa, alur pengguna Anda diterjemahkan ke bahasa yang ditentukan di sini.
  • Bahasa yang diminta browser: Jika ui_locales tidak ada parameter yang ditentukan, alur pengguna Anda diterjemahkan ke bahasa yang diminta browser, jika bahasa didukung.
  • Bahasa defaultkebijakan : Jika browser tidak menentukan bahasa, atau menentukan bahasa yang tidak didukung, alur pengguna diterjemahkan ke bahasa default arus pengguna.

Catatan

Jika Anda menggunakan atribut pengguna khusus, Anda harus memberikan terjemahan Anda sendiri. Untuk informasi selengkapnya, lihat Mengkustomisasi string Anda.

Tonton video ini untuk mempelajari cara melokalisasi atau menyesuaikan bahasa menggunakan Azure AD B2C.

Lokalisasi memerlukan tiga langkah:

  1. Menyiapkan daftar eksplisit bahasa yang didukung
  2. Menyediakan string dan koleksi spesifik bahasa
  3. Edit definisi konten untuk halaman.

Prasyarat

Mendukung bahasa yang diminta untuk ui_locales

Kebijakan yang dibuat sebelum ketersediaan umum penyesuaian bahasa perlu mengaktifkan fitur ini terlebih dahulu. Kebijakan dan alur pengguna yang dibuat setelah mengaktifkan kustomisasi bahasa secara default.

Saat Anda mengaktifkan kustomisasi bahasa pada alur pengguna, Anda dapat mengontrol bahasa alur pengguna dengan menambahkan ui_locales parameter.

  1. Di penyewa AAD B2C Anda, pilih Alur pengguna.
  2. Klik alur pengguna yang ingin Anda aktifkan untuk terjemahan.
  3. Pilih Bahasa.
  4. Pilih Aktifkan kustomisasi bahasa.

Pilih bahasa mana dalam alur pengguna Anda yang diaktifkan

Aktifkan sekumpulan bahasa untuk alur pengguna Anda untuk diterjemahkan ketika diminta oleh browser tanpa ui_locales parameter.

  1. Pastikan arus pengguna Anda mengaktifkan kustomisasi bahasa dari instruksi sebelumnya.
  2. Pada halaman Bahasa untuk alur pengguna, pilih bahasa yang ingin Anda dukung.
  3. Di panel properti, ubah Diaktifkan ke Ya.
  4. Pilih Simpan di bagian atas panel properti.

Catatan

Jika ui_locales parameter tidak disediakan, halaman diterjemahkan ke bahasa browser pelanggan hanya jika diaktifkan.

Kustomisasi string Anda

Kustomisasi bahasa memungkinkan Anda untuk menyesuaikan string apa pun dalam alur pengguna Anda.

  1. Pastikan arus pengguna Anda mengaktifkan kustomisasi bahasa dari instruksi sebelumnya.
  2. Pada halaman Bahasa untuk alur pengguna, pilih bahasa yang ingin Anda kustomisasi.
  3. Di bawah File sumber-daya-tingkat-halaman, pilih halaman yang ingin Anda edit.
  4. Pilih Unduh default(atau Unduh overrides jika Anda sebelumnya telah mengedit bahasa ini).

Langkah ini memberi Anda file JSON yang dapat Anda gunakan untuk mulai mengedit string Anda.

Mengubah string apa pun di halaman

  1. Buka file JSON yang diunduh dari petunjuk sebelumnya di editor JSON.
  2. Temukan elemen yang ingin Anda ubah. Anda dapat menemukan StringId untuk string yang Anda cari, atau mencari atribut Value yang ingin Anda ubah.
  3. Perbarui atribut Value dengan apa yang ingin Anda tampilkan.
  4. Untuk setiap string yang ingin Anda ubah, ubah Override ke true.
  5. Simpan file dan unggah perubahan Anda. (Anda dapat menemukan kontrol unggahan di tempat yang sama dengan tempat Anda mengunduh file JSON.)

Penting

Jika Anda perlu mengganti string, pastikan untuk mengatur nilai Override ke true. Jika nilai tidak diubah, entri akan diabaikan.

Mengubah atribut ekstensi

Jika Anda ingin mengubah string untuk atribut pengguna kustom, atau Anda ingin menambahkannya ke JSON, string tersebut dalam format berikut:

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

Ganti <ExtensionAttribute> dengan nama atribut pengguna kustom Anda.

Ganti <ExtensionAttributeValue> dengan string baru yang akan ditampilkan.

Sediakan daftar nilai dengan menggunakan LocalizedCollections

Jika Anda ingin menyediakan daftar nilai yang ditetapkan untuk respons, Anda perlu membuat atribut LocalizedCollections. LocalizedCollections adalah array dari pasangan Name dan Value. Urutan untuk item akan menjadi urutan yang ditampilkan. Untuk menambahkan LocalizedCollections, gunakan format berikut:

{
  "LocalizedStrings": [...],
  "LocalizedCollections": [
    {
      "ElementType":"ClaimType",
      "ElementId":"<UserAttribute>",
      "TargetCollection":"Restriction",
      "Override": true,
      "Items":[
        {
          "Name":"<Response1>",
          "Value":"<Value1>"
        },
        {
          "Name":"<Response2>",
          "Value":"<Value2>"
        }
      ]
    }
  ]
}
  • ElementId adalah atribut pengguna yang direspons oleh atribut LocalizedCollections ini.
  • Name adalah nilai yang ditunjukkan kepada pengguna.
  • Value adalah apa yang dikembalikan dalam klaim saat opsi ini dipilih.

Mengunggah perubahan Anda

  1. Setelah Anda menyelesaikan perubahan pada file JSON Anda, kembali ke penyewa B2C Anda.
  2. Pilih Alur pengguna dan klik alur pengguna yang ingin Anda aktifkan untuk terjemahan.
  3. Pilih Bahasa.
  4. Pilih bahasa yang ingin Anda terjemahkan.
  5. Pilih halaman tempat Anda ingin memberikan terjemahan.
  6. Pilih ikon folder, lalu pilih file JSON yang akan diunggah.

Perubahan disimpan ke alur pengguna Anda secara otomatis.

Kustomisasi UI halaman dengan menggunakan kustomisasi bahasa

Ada dua cara untuk melokalisasi konten HTML Anda. Salah satu caranya adalah dengan mengaktifkan kustomisasi bahasa. Dengan mengaktifkan fitur ini, Azure AD B2C dapat meneruskan parameter OpenID Connect ui-locales ke titik akhir Anda. Server konten Anda dapat menggunakan parameter ini untuk menyediakan halaman HTML spesifik bahasa.

Atau, Anda dapat menarik konten dari berbagai tempat berdasarkan wilayah yang digunakan. Di titik akhir yang mendukung CORS, Anda menyiapkan struktur folder guna menghosting konten untuk bahasa tertentu. Anda akan menghubungi nomor yang tepat jika Anda menggunakan nilai wildcard {Culture:RFC5646}. Misalnya, asumsikan bahwa ini adalah URI halaman kustom Anda:

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

Anda dapat memuat halaman di fr. Saat halaman menarik konten HTML dan CSS, halaman menarik dari:

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

Menambahkan bahasa kustom

Anda juga bisa menambahkan bahasa yang saat ini tidak menyediakan terjemahan untuk Microsoft. Anda harus memberikan terjemahan untuk semua string dalam arus pengguna. Kode bahasa dan wilayah terbatas pada kode ISO 639-1. Format kode wilayah harus "ISO_639-1_code"-"CountryCode", misalnya en-GB. Untuk informasi selengkapnya, silakan lihat format ID wilayah.

  1. Di penyewa AAD B2C Anda, pilih Alur pengguna.
  2. Klik alur pengguna tempat Anda ingin menambahkan bahasa kustom, lalu klik Bahasa.
  3. Pilih Tambahkan bahasa kustom dari bagian atas halaman.
  4. Di panel konteks yang terbuka, identifikasi bahasa mana yang Anda berikan terjemahannya dengan memasukkan kode wilayah yang valid.
  5. Untuk setiap halaman, Anda dapat mengunduh serangkaian override untuk bahasa Inggris dan mengerjakan terjemahannya.
  6. Setelah selesai dengan file JSON, Anda dapat mengunggahnya untuk setiap halaman.
  7. Pilih Aktifkan,dan alur pengguna Anda sekarang bisa memperlihatkan bahasa ini untuk pengguna Anda.
  8. Simpan bahasa.

Penting

Anda perlu mengaktifkan bahasa kustom atau mengupload pengesampingan untuk itu sebelum Anda dapat menyimpan.

Siapkan daftar eksplisit bahasa yang didukung

Buka file ekstensi kebijakan Anda. Contohnya, SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  1. Cari elemen BuildingBlocks. Jika elemen tersebut tidak ada, tambahkan.
  2. Tambahkan elemen Localization dengan bahasa yang didukung: Bahasa Inggris (default) dan Spanyol.
<Localization Enabled="true">
  <SupportedLanguages DefaultLanguage="en" MergeBehavior="ReplaceAll">
    <SupportedLanguage>en</SupportedLanguage>
    <SupportedLanguage>es</SupportedLanguage>
  </SupportedLanguages>
</Localization>

Menyediakan label spesifik bahasa

LocalizedResources dari Localization elemen berisi daftar string yang dilokalisasi. Elemen sumber daya yang didayakan memiliki pengidentifikasi yang digunakan untuk mengidentifikasi sumber daya lokal secara unik. Pengidentifikasi ini digunakan nanti dalam elemen definisi konten.

Anda mengonfigurasi elemen sumber daya yang dilokalisasi untuk definisi konten dan bahasa apa pun yang ingin Anda dukung. Untuk mengkustomisasi halaman sign-up atau sign-in terpadu untuk bahasa Inggris dan Spanyol, Tambahkan LocalizedResources elemen berikut setelah penutupan </SupportedLanguages> elemen.

Catatan

Dalam sampel berikut kami menambahkan simbol pound # di awal setiap baris, sehingga Anda dapat dengan mudah menemukan label yang dilokalisasi di layar.

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

Edit definisi konten dengan lokalisasi

Tempelkan seluruh konten elemen ContentDefinisi yang Anda salin sebagai anak dari elemen BuildingBlocks.

Dalam contoh berikut, string kustom Bahasa Inggris (en) dan Spanyol (es) ditambahkan ke halaman sign-up atau sign-in, dan ke halaman sign-up akun lokal. LocalizedResourcesReferenceId untuk setiap LocalizedResourcesReference sama dengan wilayah mereka, tetapi Anda dapat menggunakan string apa pun sebagai pengidentifikasi. Untuk setiap kombinasi bahasa dan halaman, Arahkan ke LocalizedResources yang sesuai yang sebelumnya Anda buat.

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

Unggah dan uji kebijakan kustom termutakhir Anda

Mengunggah kebijakan kustom

  1. Simpan file ekstensi.
  2. Jika Anda memiliki akses ke beberapa penyewa, pilih ikon Pengaturan di menu atas untuk beralih ke penyewa Azure AD B2C Anda dari menu Direktori + langganan.
  3. Cari dan pilih Azure AD B2C.
  4. Di bagian Kebijakan, pilih IEF.
  5. Pilih Unggah kebijakan kustom.
  6. Unggah file ekstensi yang sebelumnya Anda ubah.

5.2 Uji kebijakan kustom dengan menggunakan Jalankan sekarang

  1. Pilih kebijakan yang Anda unggah, lalu pilih Jalankan sekarang.
  2. Anda akan dapat melihat halaman sign-up atau sign-in yang dilokalisasi.
  3. Klik tautan sign-up, dan Anda harus dapat melihat halaman sign-up yang dilokalisasi.
  4. Alihkan bahasa default browser Anda ke bahasa Spanyol. Atau Anda dapat menambahkan parameter string kueri, ui_locales ke permintaan otorisasi. Contohnya:
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

Informasi Tambahan

Label penyesuaian UI Halaman sebagai ambil alih

Saat Anda mengaktifkan penyesuaian bahasa, pengeditan Anda sebelumnya untuk label menggunakan penyesuaian UI halaman tetap ada dalam file JSON untuk bahasa Inggris (en). Anda dapat terus mengubah label dan string lainnya dengan mengunggah sumber daya bahasa dalam penyesuaian bahasa.

Terjemahan terbaru

Microsoft berkomitmen untuk menyediakan terjemahan terbaru untuk penggunaan Anda. Microsoft terus meningkatkan terjemahan dan membuatnya tetap patuh untuk Anda. Microsoft akan mengidentifikasi bug dan perubahan terminologi global dan membuat pembaruan yang akan bekerja dengan mulus dalam alur pengguna Anda.

Dukungan untuk bahasa kanan-ke-kiri

Microsoft saat ini tidak menyediakan dukungan untuk bahasa kanan-ke-kiri. Anda dapat melakukan ini dengan menggunakan lokal kustom dan menggunakan CSS untuk mengubah cara string ditampilkan. Jika Anda memerlukan fitur ini, harap pilih fitur tersebut di Umpan Balik Azure.

Terjemahan penyedia identitas sosial

Microsoft menyediakan parameter OIDC ui_locales untuk rincian masuk sosial. Tetapi beberapa penyedia identitas sosial, termasuk Facebook dan Google, tidak menerapkannya.

Perilaku browser

Chrome dan Firefox sama-sama meminta bahasa yang ditetapkan. Jika bahasa tersebut didukung, bahasa tersebut akan ditampilkan sebelum default. Microsoft Edge saat ini tidak meminta bahasa dan langsung masuk ke bahasa default.

Bahasa yang didukung

Azure AD B2C menyertakan dukungan untuk bahasa berikut dengan menggunakan kode ISO 639-1. Bahasa arus pengguna disediakan oleh Azure AD B2C. Bahasa pemberitahuan autentikasi multifaktor disediakan oleh autentikasi multifaktor Microsoft Entra.

Bahasa Kode bahasa Alur pengguna Pemberitahuan MFA
Arab ar X indicating no. Green check mark.
Bulgaria bg X indicating no. Green check mark.
Bengali bn Green check mark. X indicating no.
Katalan ca X indicating no. Green check mark.
Cheska cs Green check mark. Green check mark.
Dansk da Green check mark. Green check mark.
Jerman de Green check mark. Green check mark.
Yunani el Green check mark. Green check mark.
Inggris en Green check mark. Green check mark.
Spanyol es Green check mark. Green check mark.
Esti et X indicating no. Green check mark.
Basque eu X indicating no. Green check mark.
Suomi fi Green check mark. Green check mark.
Prancis fr Green check mark. Green check mark.
Galisia gl X indicating no. Green check mark.
Gujarat gu Green check mark. X indicating no.
Ibrani he X indicating no. Green check mark.
Hindi hi Green check mark. Green check mark.
Kroasia jam Green check mark. Green check mark.
Hungaria hu Green check mark. Green check mark.
Indonesia id X indicating no. Green check mark.
Italia it Green check mark. Green check mark.
Jepang ja Green check mark. Green check mark.
Kazakh kk X indicating no. Green check mark.
Kannada kn Green check mark. X indicating no.
Korea ko Green check mark. Green check mark.
Lituavi lt X indicating no. Green check mark.
Latvi lv X indicating no. Green check mark.
Malayalam ml Green check mark. X indicating no.
Marathi mr Green check mark. X indicating no.
Melayu ms Green check mark. Green check mark.
Bokmal Norwegia nb Green check mark. X indicating no.
Belanda nl Green check mark. Green check mark.
Norwegia no X indicating no. Green check mark.
Punjabi pa Green check mark. X indicating no.
Polski pl Green check mark. Green check mark.
Portugis - Brasil pt-br Green check mark. Green check mark.
Portugis - Portugal pt-pt Green check mark. Green check mark.
Rumania ro Green check mark. Green check mark.
Rusia ru Green check mark. Green check mark.
Slovak sk Green check mark. Green check mark.
Sloven sl X indicating no. Green check mark.
Bahasa Serbia - Sirilik sr-cryl-cs X indicating no. Green check mark.
Bahasa Serbia - Latin sr-latn-cs X indicating no. Green check mark.
Swedia sv Green check mark. Green check mark.
Tamil ta Green check mark. X indicating no.
Telugu te Green check mark. X indicating no.
Thailand th Green check mark. Green check mark.
Turki tr Green check mark. Green check mark.
Ukraina uk X indicating no. Green check mark.
Vietnam vi X indicating no. Green check mark.
Wales cy X indicating no. X indicating no.
Bahasa Tionghoa - Disederhanakan zh-hans Green check mark. Green check mark.
Bahasa Tionghoa - Tradisional zh-hant Green check mark. Green check mark.

Langkah berikutnya

Temukan informasi selengkapnya tentang cara mengkustomisasi antarmuka pengguna aplikasi Anda di Mengkustomisasi antarmuka pengguna aplikasi Anda di Azure Active Directory B2C.