Elemen pelokalan

Catatan

Di Azure Active Directory B2C, kebijakan kustom didesain khusus untuk menangani skenario kompleks. Untuk skenario umum, sebaiknya gunakan alur pengguna bawaan. Jika Anda belum melakukannya, pelajari tentang paket starter kebijakan kustom di Mulai dengan kebijakan kustom di Azure Active Directory B2C.

Elemen Pelokalan memungkinkan Anda untuk mendukung beberapa lokal atau bahasa dalam kebijakan untuk perjalanan pengguna. Dukungan lokalisasi dalam kebijakan memungkinkan Anda untuk:

  • Siapkan daftar eksplisit bahasa yang didukung dalam kebijakan dan pilih bahasa default.
  • Menyediakan string dan koleksi spesifik bahasa
<Localization Enabled="true">
  <SupportedLanguages DefaultLanguage="en" MergeBehavior="ReplaceAll">
    <SupportedLanguage>en</SupportedLanguage>
    <SupportedLanguage>es</SupportedLanguage>
  </SupportedLanguages>
  <LocalizedResources Id="api.localaccountsignup.en">
  <LocalizedResources Id="api.localaccountsignup.es">
  ...

Elemen Pelokalan berisi atribut berikut:

Atribut Diperlukan Deskripsi
Aktif Tidak Kemungkinan nilai: true atau false.

Elemen Pelokalan berisi elemen XML berikut

Elemen Kemunculan Deskripsi
SupportedLanguages 1:n Daftar eksplisit bahasa yang didukung.
LokalisasiResources 0:n Daftar sumber daya yang didayakan.

SupportedLanguages

Elemen SupportedLanguages berisi atribut berikut:

Atribut Diperlukan Deskripsi
DefaultLanguage Ya Bahasa yang akan digunakan sebagai default untuk sumber daya yang didayakan.
MergeBehavior Tidak Nilai enumerasi nilai yang digabungkan bersama dengan ClaimType apa pun yang ada dalam kebijakan induk dengan pengidentifikasi yang sama. Gunakan atribut ini saat Anda menimpa klaim yang ditentukan dalam kebijakan dasar. Kemungkinan nilai: Append, Prepend, atau ReplaceAll. Nilai Append tersebut adalah kumpulan data yang harus ditambahkan ke akhir koleksi yang ditentukan dalam kebijakan induk. Nilai Prepend tersebut adalah kumpulan data yang harus ditambahkan ke akhir koleksi yang ditentukan dalam kebijakan induk. Nilai ReplaceAll menentukan bahwa pengumpulan data yang ditentukan dalam kebijakan induk harus diabaikan, menggunakan data yang ditentukan dalam kebijakan saat ini.

SupportedLanguages

Elemen SupportedLanguages berisi atribut berikut:

Elemen Kemunculan Deskripsi
SupportedLanguage 1:n Menampilkan konten yang sesuai dengan tag bahasa per RFC 5646 - Tag untuk Mengidentifikasi Bahasa.

LokalisasiResources

Elemen LocalizedResources berisi atribut berikut:

Atribut Diperlukan Deskripsi
Id Ya Pengidentifikasi yang digunakan untuk mengidentifikasi sumber daya lokal secara unik.

Elemen LocalizedResources berisi elemen-elemen berikut:

Elemen Kemunculan Deskripsi
LocalizedCollections 0:n Mendefinisikan seluruh koleksi dalam berbagai budaya. Koleksi dapat memiliki jumlah item yang berbeda dan string yang berbeda untuk berbagai budaya. Contoh koleksi mencakup enumerasi yang muncul dalam jenis klaim. Misalnya, daftar negara/kawasan diperlihatkan kepada pengguna dalam daftar turun bawah.
LocalizedStrings 0:n Mendefinisikan semua string, kecuali string yang muncul dalam koleksi, dalam berbagai budaya.

LocalizedCollections

Elemen LocalizedCollections berisi elemen-elemen berikut:

Elemen Kemunculan Deskripsi
LocalizedCollection 1:n Daftar eksplisit bahasa yang didukung.

LocalizedCollection

Elemen LocalizedCollection berisi atribut berikut:

Atribut Diperlukan Deskripsi
Tipe Elemen Ya Mereferensikan elemen ClaimType atau elemen antarmuka pengguna dalam file kebijakan.
ElemenId Ya Untai (karakter) yang berisi referensi ke tipe klaim yang sudah ditentukan di bagian ClaimsSchema yang digunakan jika ElementType diatur ke ClaimType.
TargetCollection Ya Kumpulan target

Elemen LocalizedCollections berisi elemen-elemen berikut:

Elemen Kemunculan Deskripsi
Item 0:n Menentukan opsi yang tersedia di antarmuka pengguna untuk pengguna memilih klaim, seperti nilai dalam menu drop-down.

Elemen Item berisi atribut-atribut berikut ini:

Atribut Diperlukan Deskripsi
Teks Ya Untai tampilan ramah pengguna yang harus ditampilkan kepada pengguna di antarmuka pengguna untuk opsi ini.
Nilai Ya Untai (karakter) klaim yang terkait dengan pemilihan opsi ini.
SelectByDefault Tidak Menunjukkan apakah opsi ini harus dipilih secara default atau tidak di UI. Kemungkinan nilai: Benar atau Salah.

Contoh berikut menunjukkan penggunaan elemen LocalizedCollections. Ini berisi dua elemen LocalizedCollection, satu untuk bahasa Inggris dan satu lagi untuk Spanyol. Keduanya set pengumpulan Pembatasan klaim Gender dengan daftar item untuk bahasa Inggris dan Spanyol. Untuk sampel lainnya, lihat Demo langsung enumerasi pembatasan klaim.

<LocalizedResources Id="api.selfasserted.en">
  <LocalizedCollections>
    <LocalizedCollection ElementType="ClaimType" ElementId="Gender" TargetCollection="Restriction">
      <Item Text="Female" Value="F" />
      <Item Text="Male" Value="M" />
    </LocalizedCollection>
  </LocalizedCollections>
</LocalizedResources>

<LocalizedResources Id="api.selfasserted.es">
 <LocalizedCollections>
   <LocalizedCollection ElementType="ClaimType" ElementId="Gender" TargetCollection="Restriction">
      <Item Text="Femenino" Value="F" />
      <Item Text="Masculino" Value="M" />
    </LocalizedCollection>
  </LocalizedCollections>
</LocalizedResources>

LocalizedStrings

Elemen LocalizedResources berisi elemen-elemen berikut:

Elemen Kemunculan Deskripsi
LocalizedString 1:n untai (karakter) dilokalkan.

Elemen LocalizedString berisi atribut berikut:

Atribut Diperlukan Deskripsi
Tipe Elemen Ya Nilai yang mungkin: ClaimsProvider, ClaimType, ErrorMessage, GetLocalizedStringsTransformationClaimType, FormatLocalizedStringTransformationClaimType, Predicate, InputValidation, atau UxElement.
ElemenId Ya Jika ElementType diset ke ClaimType, Predicate, atau PredicateValidation, elemen ini berisi referensi ke tipe klaim yang sudah ditentukan di bagian ClaimsSchema.
StringId Ya Jika ElementType diset ke ClaimType, elemen ini berisi referensi ke atribut tipe klaim. Kemungkinan nilai: DisplayName, AdminHelpText, atau PatternHelpText. Nilai DisplayName digunakan untuk mengatur nama tampilan klaim. Nilai AdminHelpText digunakan untuk set nama teks bantuan pengguna klaim. Nilai PatternHelpText digunakan untuk mengatur teks bantuan pola klaim. Jika ElementType diatur ke UxElement, elemen ini berisi referensi ke atribut elemen antarmuka pengguna. Jika ElementType diset ke ErrorMessage, elemen ini menentukan pengidentifikasi pesan kesalahan. Lihat pelokalan ID untai (karakter) untuk daftar lengkap UxElement pengidentifikasi.

Tipe Elemen

Referensi ElementType ke jenis klaim, transformasi klaim, atau elemen antarmuka pengguna dalam kebijakan yang akan dilokalkan.

Elemen untuk melokalisasi Tipe Elemen ElemenId StringId
Nama IdP ClaimsProvider ID dari elemen ClaimsExchange
Atribut tipe klaim ClaimType Nama tipe klaim Atribut klaim untuk dilokalkan. Kemungkinan nilai: AdminHelpText, DisplayName, PatternHelpText, dan UserHelpText.
Pesan kesalahan ErrorMessage ID pesan kesalahan
Menyalin untai (karakter) yang dilokalkan ke dalam klaim GetLocalizedStringsTra nsformationClaimType Nama klaim output
Predikat pesan pengguna Predicate Nama predikat Atribut predikat yang akan dilokalkan. Kemungkinan nilai: HelpText.
Predikat pesan pengguna grup PredicateValidation ID dari elemen PredikatValidasi. ID dari elemen PredikatKelompok. Kelompok predikat harus merupakan anak dari elemen validasi predikat seperti yang didefinisikan dalam ElementId.
Elemen antarmuka pengguna UxElement ID elemen antarmuka pengguna yang akan dilokal.
Kontrol Tampilan DisplayControl ID kontrol tampilan. ID elemen antarmuka pengguna yang akan dilokal.

Contoh

ClaimsProvider

Nilai ClaimsProvider digunakan untuk melokalisasi salah satu nama tampilan penyedia klaim.

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="FacebookExchange" TechnicalProfileReferenceId="Facebook-OAUTH" />
    <ClaimsExchange Id="GoogleExchange" TechnicalProfileReferenceId="Google-OAUTH" />
    <ClaimsExchange Id="LinkedInExchange" TechnicalProfileReferenceId="LinkedIn-OAUTH" />
  </ClaimsExchanges>
</OrchestrationStep>

Contoh berikut menunjukkan cara melokalisasi nama tampilan penyedia klaim.

<LocalizedString ElementType="ClaimsProvider" StringId="FacebookExchange">Facebook</LocalizedString>
<LocalizedString ElementType="ClaimsProvider" StringId="GoogleExchange">Google</LocalizedString>
<LocalizedString ElementType="ClaimsProvider" StringId="LinkedInExchange">LinkedIn</LocalizedString>

ClaimType

Nilai ClaimType digunakan untuk melokalisasi salah satu atribut klaim.

<ClaimType Id="email">
  <DisplayName>Email Address</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Email address that can be used to contact you.</UserHelpText>
  <UserInputType>TextBox</UserInputType>
</ClaimType>

Contoh berikut menunjukkan cara meokalisir atribut DisplayName, UserHelpText, dan PatternHelpText dari jenis klaim email.

<LocalizedString ElementType="ClaimType" ElementId="email" StringId="DisplayName">Email</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="email" StringId="UserHelpText">Please enter your email</LocalizedString>
<LocalizedString ElementType="ClaimType" ElementId="email" StringId="PatternHelpText">Please enter a valid email address</LocalizedString>

ErrorMessage

Nilai ErrorMessage digunakan untuk melokalisasi salah satu pesan kesalahan sistem.

<TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="RaiseErrorIfClaimsPrincipalAlreadyExists">true</Item>
    <Item Key="UserMessageIfClaimsPrincipalAlreadyExists">You are already registered, please press the back button and sign in instead.</Item>
  </Metadata>
  ...
</TechnicalProfile>

Contoh berikut menunjukkan cara melokalisasi pesan kesalahan UserMessageIfClaimsPrincipalAlreadyExists.

<LocalizedString ElementType="ErrorMessage" StringId="UserMessageIfClaimsPrincipalAlreadyExists">The account you are trying to create already exists, please sign-in.</LocalizedString>

FormatLocalizedStringTransformationClaimType

Nilai FormatLocalizedStringTransformationClaimType digunakan untuk memformat klaim ke dalam untai (karakter) yang dilokalkan. Untuk informasi selengkapnya, lihat Transformasi klaim FormatLocalizedString

<ClaimsTransformation Id="SetResponseMessageForEmailAlreadyExists" TransformationMethod="FormatLocalizedString">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="stringFormatId" DataType="string" Value="ResponseMessge_EmailExists" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>

Contoh berikut menunjukkan cara melokalisasi format string dari transformasi klaim FormatLocalizedStringTransformationClaimType.

<LocalizedString ElementType="FormatLocalizedStringTransformationClaimType" StringId="ResponseMessge_EmailExists">The email '{0}' is already an account in this organization. Click Next to sign in with that account.</LocalizedString>

GetLocalizedStringsTransformationClaimType

Nilai GetLocalizedStringsTransformationClaimType digunakan untuk menyalin untai (karakter) yang dilokalkan ke dalam klaim. Untuk informasi selengkapnya, lihat GetLocalizedStringsTransformasi klaim transformasi

<ClaimsTransformation Id="GetLocalizedStringsForEmail" TransformationMethod="GetLocalizedStringsTransformation">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="subject" TransformationClaimType="email_subject" />
    <OutputClaim ClaimTypeReferenceId="message" TransformationClaimType="email_message" />
    <OutputClaim ClaimTypeReferenceId="codeIntro" TransformationClaimType="email_code" />
    <OutputClaim ClaimTypeReferenceId="signature" TransformationClaimType="email_signature" />
   </OutputClaims>
</ClaimsTransformation>

Contoh berikut menunjukkan cara melokalisasi klaim output dari transformasi klaim GetLocalizedStringsTransformation.

<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_subject">Contoso account email verification code</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_message">Thanks for verifying your account!</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_code">Your code is</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_signature">Sincerely</LocalizedString>

Predikat

Nilai Predikat digunakan untuk melokalisasi salah satu pesan kesalahan Predikat.

<Predicates>
  <Predicate Id="LengthRange" Method="IsLengthRange"  HelpText="The password must be between 6 and 64 characters.">
    <Parameters>
      <Parameter Id="Minimum">6</Parameter>
      <Parameter Id="Maximum">64</Parameter>
    </Parameters>
  </Predicate>
  <Predicate Id="Lowercase" Method="IncludesCharacters" HelpText="a lowercase letter">
    <Parameters>
      <Parameter Id="CharacterSet">a-z</Parameter>
    </Parameters>
  </Predicate>
  <Predicate Id="Uppercase" Method="IncludesCharacters" HelpText="an uppercase letter">
    <Parameters>
      <Parameter Id="CharacterSet">A-Z</Parameter>
    </Parameters>
  </Predicate>
</Predicates>

Contoh berikut menunjukkan cara melokalisasi teks bantuan predikat.

<LocalizedString ElementType="Predicate" ElementId="LengthRange" StringId="HelpText">The password must be between 6 and 64 characters.</LocalizedString>
<LocalizedString ElementType="Predicate" ElementId="Lowercase" StringId="HelpText">a lowercase letter</LocalizedString>
<LocalizedString ElementType="Predicate" ElementId="Uppercase" StringId="HelpText">an uppercase letter</LocalizedString>

PredikatValidasi

Nilai PredicateValidation digunakan untuk melokalisasi salah satu pesan kesalahan grup PredicateValidation.

<PredicateValidations>
  <PredicateValidation Id="CustomPassword">
    <PredicateGroups>
      <PredicateGroup Id="LengthGroup">
        <PredicateReferences MatchAtLeast="1">
          <PredicateReference Id="LengthRange" />
        </PredicateReferences>
      </PredicateGroup>
      <PredicateGroup Id="CharacterClasses">
        <UserHelpText>The password must have at least 3 of the following:</UserHelpText>
        <PredicateReferences MatchAtLeast="3">
          <PredicateReference Id="Lowercase" />
          <PredicateReference Id="Uppercase" />
          <PredicateReference Id="Number" />
          <PredicateReference Id="Symbol" />
        </PredicateReferences>
      </PredicateGroup>
    </PredicateGroups>
  </PredicateValidation>
</PredicateValidations>

Contoh berikut memperlihatkan cara melokalisasi teks bantuan grup validasi predikat.

<LocalizedString ElementType="PredicateValidation" ElementId="CustomPassword" StringId="CharacterClasses">The password must have at least 3 of the following:</LocalizedString>

UxElement

Nilai UxElement digunakan untuk melokalisasi salah satu elemen antarmuka pengguna. Contoh berikut menunjukkan cara melokalisasi tombol lanjutkan dan batalkan.

<LocalizedString ElementType="UxElement" StringId="button_continue">Create new account</LocalizedString>
<LocalizedString ElementType="UxElement" StringId="button_cancel">Cancel</LocalizedString>

DisplayControl

Nilai DisplayControl digunakan untuk melokalisasi salah satu elemen antarmuka pengguna Kontrol tampilan. Saat diaktifkan, kontrol tampilan localizedStrings mengambil prioritas di atas beberapa UxElement StringID seperti ver_but_send, ver_but_edit , ver_but_resend dan ver_but_verify. Contoh berikut menunjukkan cara melokalisasi tombol kirim dan verifikasi.

<LocalizedString ElementType="DisplayControl" ElementId="emailVerificationControl" StringId="but_send_code">Send verification code</LocalizedString>
<LocalizedString ElementType="DisplayControl" ElementId="emailVerificationControl" StringId="but_verify_code">Verify code</LocalizedString>

Di bagian Metadata dari profil teknis yang ditegaskan sendiri, ContentDefinition yang direferensikan perlu mengatur DataUri ke tata letak halaman versi 2.1.0 atau yang lebih tinggi. Contohnya:

<ContentDefinition Id="api.selfasserted">
  <DataUri>urn:com:microsoft:aad:b2c:elements:selfasserted:2.1.0</DataUri>
  ...

Langkah berikutnya

Lihat artikel berikut ini untuk contoh pelokalan: