Bagikan melalui


Gambaran Umum Globalisasi dan Pelokalan WPF

Ketika Anda membatasi ketersediaan produk Anda hanya untuk satu bahasa, Anda membatasi basis pelanggan potensial Anda hingga sebagian kecil dari 7,5 miliar populasi dunia kami. Jika Anda ingin aplikasi Anda menjangkau audiens global, pelokalan produk Anda yang hemat biaya adalah salah satu cara terbaik dan paling ekonomis untuk menjangkau lebih banyak pelanggan.

Gambaran umum ini memperkenalkan globalisasi dan pelokalan di Windows Presentation Foundation (WPF). Globalisasi adalah desain dan pengembangan aplikasi yang berkinerja di beberapa lokasi. Misalnya, globalisasi mendukung antarmuka pengguna yang dilokalkan dan data regional untuk pengguna dalam budaya yang berbeda. WPF menyediakan fitur desain global, termasuk tata letak otomatis, rakitan satelit, dan atribut dan komentar yang dilokalkan.

Pelokalan adalah terjemahan sumber daya aplikasi ke dalam versi yang dilokalkan untuk budaya tertentu yang didukung aplikasi. Saat Anda melokalisasi di WPF, Anda menggunakan API di System.Windows.Markup.Localizer namespace layanan. API ini mendukung alat baris perintah Sampel Alat LocBaml. Untuk informasi tentang cara membuat dan menggunakan LocBaml, lihat Melokalkan Aplikasi.

Peringatan

Alat LocBaml hanya berfungsi dengan WPF untuk proyek .NET Framework, alat ini tidak berfungsi dengan WPF untuk .NET.

Praktik Terbaik untuk Globalisasi dan Pelokalan di WPF

Anda dapat memanfaatkan fungsionalitas globalisasi dan pelokalan yang dibangun ke dalam WPF dengan mengikuti desain UI dan tips terkait pelokalan yang disediakan bagian ini.

Praktik Terbaik untuk Desain UI WPF

Saat Anda merancang UI berbasis WPF, pertimbangkan untuk menerapkan praktik terbaik ini:

  • Tulis UI Anda di XAML; hindari membuat UI dalam kode. Saat membuat UI dengan menggunakan XAML, Anda mengeksposnya melalui API pelokalan bawaan.

  • Hindari menggunakan posisi absolut dan ukuran tetap untuk menata konten; sebagai gantinya, gunakan ukuran relatif atau otomatis.

    • Gunakan SizeToContent dan pertahankan lebar dan tinggi diatur ke Auto.

    • Hindari menggunakan Canvas untuk menata UI.

    • Gunakan Grid dan fitur berbagi ukurannya.

  • Berikan ruang ekstra dalam margin karena teks yang dilokalkan sering membutuhkan lebih banyak ruang. Ruang ekstra memungkinkan kemungkinan karakter overhanging.

  • TextBlock Aktifkan TextWrapping untuk menghindari kliping.

  • Atur xml:lang atribut . Atribut ini menjelaskan budaya elemen tertentu dan elemen anaknya. Nilai properti ini mengubah perilaku beberapa fitur di WPF. Misalnya, ini mengubah perilaku pemenaan, pemeriksaan ejaan, penggantian angka, pembentukan skrip kompleks, dan fallback font. Lihat Globalisasi untuk WPF untuk informasi selengkapnya tentang mengatur xml:lang Handling di XAML.

  • Buat font komposit yang dikustomisasi untuk mendapatkan kontrol font yang lebih baik yang digunakan untuk bahasa yang berbeda. Secara default, WPF menggunakan font GlobalUserInterface.composite di direktori Windows\Fonts Anda.

  • Saat Anda membuat aplikasi navigasi yang dapat dilokalkan dalam budaya yang menyajikan teks dalam format kanan-ke-kiri, secara eksplisit mengatur FlowDirection setiap halaman untuk memastikan halaman tidak mewarisi FlowDirection dari NavigationWindow.

  • Saat Anda membuat aplikasi navigasi mandiri yang dihosting di luar browser, atur StartupUri untuk aplikasi awal Anda ke NavigationWindow alih-alih ke halaman (misalnya, <Application StartupUri="NavigationWindow.xaml">). Desain ini memungkinkan Anda mengubah FlowDirection Jendela dan bilah navigasi. Untuk informasi selengkapnya dan contohnya, lihat Sampel Beranda Globalisasi.

Praktik Terbaik untuk Pelokalan WPF

Saat Anda melokalisasi aplikasi berbasis WPF, pertimbangkan untuk menerapkan praktik terbaik ini:

  • Gunakan komentar pelokalan untuk memberikan konteks tambahan bagi pelokalan.

  • Gunakan atribut pelokalan untuk mengontrol pelokalan alih-alih menghilangkan Uid properti secara selektif pada elemen. Lihat Atribut dan Komentar Pelokalan untuk informasi selengkapnya.

  • Gunakan msbuild -t:updateuid dan -t:checkuid untuk menambahkan dan memeriksa Uid properti di XAML Anda. Gunakan Uid properti untuk melacak perubahan antara pengembangan dan pelokalan. Uid properti membantu Anda melokalisasi perubahan pengembangan baru. Jika Anda menambahkan Uid properti secara manual ke UI, tugas biasanya melelahkan dan kurang akurat.

    • Jangan mengedit atau mengubah Uid properti setelah Anda memulai pelokalan.

    • Jangan gunakan properti duplikat Uid (ingat tip ini saat Anda menggunakan perintah salin dan tempel).

    • Atur UltimateResourceFallback lokasi di AssemblyInfo.* untuk menentukan bahasa yang sesuai untuk fallback (misalnya, [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]).

      Jika Anda memutuskan untuk menyertakan bahasa sumber Anda dalam perakitan utama dengan menghilangkan <UICulture> tag dalam file proyek Anda, atur UltimateResourceFallback lokasi sebagai assembly utama alih-alih satelit (misalnya, [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]).

Melokalisasi Aplikasi WPF

Saat Anda melokalisasi aplikasi WPF, Anda memiliki beberapa opsi. Misalnya, Anda dapat mengikat sumber daya yang dapat dilokalkan dalam aplikasi Anda ke file XML, menyimpan teks yang dapat dilokalkan dalam tabel resx, atau meminta localizer Anda menggunakan file XAML. Bagian ini menjelaskan alur kerja pelokalan yang menggunakan bentuk BAML XAML, yang memberikan beberapa manfaat:

  • Anda dapat melokalisasi setelah membuat.

  • Anda dapat memperbarui ke versi XAML BAML yang lebih baru dengan pelokalan dari versi XAML baml yang lebih lama sehingga Anda dapat melokalisasi pada saat yang sama dengan yang Anda kembangkan.

  • Anda dapat memvalidasi elemen dan semantik sumber asli pada waktu kompilasi karena bentuk BAML XAML adalah bentuk XAML yang dikompilasi.

Proses Build Pelokalan

Saat Anda mengembangkan aplikasi WPF, proses build untuk pelokalan adalah sebagai berikut:

  • Pengembang membuat dan meng-globalisasi aplikasi WPF. Dalam file proyek, set <UICulture>en-US</UICulture> pengembang sehingga ketika aplikasi dikompilasi, rakitan utama netral bahasa dihasilkan. Rakitan ini memiliki file satelit .resources.dll yang berisi semua sumber daya yang dapat dilokalkan. Secara opsional, Anda dapat menyimpan bahasa sumber di perakitan utama karena API pelokalan kami mendukung ekstraksi dari rakitan utama.

  • Ketika file dikompilasi ke dalam build, XAML dikonversi ke bentuk BAML XAML. File netral MyDialog.exe secara budaya dan tergantung secara budaya (Bahasa Inggris) MyDialog.resources.dll dirilis kepada pelanggan berbahasa Inggris.

Alur Kerja Pelokalan

Proses pelokalan dimulai setelah file yang tidak dilokalkan MyDialog.resources.dll dibuat. Elemen dan properti UI dalam XAML asli Anda diekstrak dari bentuk BAML XAML ke dalam pasangan kunci-nilai dengan menggunakan API di bawah System.Windows.Markup.Localizer. Localizer menggunakan pasangan kunci-nilai untuk melokalisasi aplikasi. Anda dapat membuat .resource.dll baru dari nilai baru setelah pelokalan selesai.

Kunci pasangan kunci-nilai adalah x:Uid nilai yang ditempatkan oleh pengembang di XAML asli. Nilai-nilai ini x:Uid memungkinkan API untuk melacak dan menggabungkan perubahan yang terjadi antara pengembang dan localizer selama pelokalan. Misalnya, jika pengembang mengubah UI setelah localizer mulai melokalisasi, Anda dapat menggabungkan perubahan pengembangan dengan pekerjaan pelokalan yang sudah selesai sehingga pekerjaan terjemahan minimal hilang.

Grafik berikut menunjukkan alur kerja pelokalan umum yang didasarkan pada bentuk BAML XAML. Diagram ini mengasumsikan pengembang menulis aplikasi dalam bahasa Inggris. Pengembang membuat dan meng-globalisasi aplikasi WPF. Dalam file proyek, set <UICulture>en-US</UICulture> pengembang sehingga pada build, rakitan utama netral bahasa dihasilkan dengan satelit .resources.dll yang berisi semua sumber daya yang dapat dilokalkan. Secara bergantian, seseorang dapat menyimpan bahasa sumber di perakitan utama karena API pelokalan WPF mendukung ekstraksi dari perakitan utama. Setelah proses build, XAML dikompilasi ke dalam BAML. MyDialog.exe.resources.dll netral secara budaya dikirim ke pelanggan berbahasa Inggris.

Diagram showing the Localization workflow.

Diagram showing the Unlocalized workflow.

Contoh Pelokalan WPF

Bagian ini berisi contoh aplikasi yang dilokalkan untuk membantu Anda memahami cara membangun dan melokalisasi aplikasi WPF.

Jalankan Contoh Kotak Dialog

Grafik berikut ini memperlihatkan output sampel kotak dialog Jalankan .

Inggris:

Screenshot showing an English Run dialog box.

Jerman:

Screenshot showing a German Run dialog box.

Merancang Kotak Dialog Eksekusi Global

Contoh ini menghasilkan kotak dialog Jalankan dengan menggunakan WPF dan XAML. Kotak dialog ini setara dengan kotak dialog Jalankan yang tersedia dari menu Mulai Microsoft Windows.

Beberapa sorotan untuk membuat kotak dialog global adalah:

Tata Letak Otomatis

Di Window1.xaml:

<Window SizeToContent="WidthAndHeight">

Properti Jendela sebelumnya secara otomatis mengubah ukuran jendela sesuai dengan ukuran konten. Properti ini mencegah jendela memotong konten yang meningkat ukurannya setelah pelokalan; ini juga menghapus ruang yang tidak diperlukan ketika konten berkurang ukurannya setelah pelokalan.

<Grid x:Uid="Grid_1">

Uid properti diperlukan agar API pelokalan WPF berfungsi dengan benar.

Mereka digunakan oleh API pelokalan WPF untuk melacak perubahan antara pengembangan dan pelokalan antarmuka pengguna (UI). Uid properti memungkinkan Anda menggabungkan versi UI yang lebih baru dengan pelokalan UI yang lebih lama. Anda menambahkan Uid properti dengan menjalankan msbuild -t:updateuid RunDialog.csproj dalam shell perintah. Ini adalah metode yang direkomendasikan untuk menambahkan Uid properti karena menambahkannya secara manual biasanya memakan waktu dan kurang akurat. Anda dapat memeriksa apakah Uid properti diatur dengan benar dengan menjalankan msbuild -t:checkuid RunDialog.csproj.

UI disusun dengan menggunakan Grid kontrol, yang merupakan kontrol yang berguna untuk memanfaatkan tata letak otomatis di WPF. Perhatikan bahwa kotak dialog dibagi menjadi tiga baris dan lima kolom. Tidak satu pun definisi baris dan kolom memiliki ukuran tetap; oleh karena itu, elemen UI yang diposisikan di setiap sel dapat beradaptasi dengan peningkatan dan penurunan ukuran selama pelokalan.

<Grid.ColumnDefinitions>
  <ColumnDefinition x:Uid="ColumnDefinition_1" />
  <ColumnDefinition x:Uid="ColumnDefinition_2" />

Dua kolom pertama tempat label Buka: dan ComboBox ditempatkan menggunakan 10 persen dari lebar total UI.

  <ColumnDefinition x:Uid="ColumnDefinition_3" SharedSizeGroup="Buttons" />
  <ColumnDefinition x:Uid="ColumnDefinition_4" SharedSizeGroup="Buttons" />
  <ColumnDefinition x:Uid="ColumnDefinition_5" SharedSizeGroup="Buttons" />
</Grid.ColumnDefinitions>

Perhatikan bahwa dari contoh menggunakan fitur ukuran bersama dari Grid. Tiga kolom terakhir memanfaatkan ini dengan menempatkan diri mereka di .SharedSizeGroup Seperti yang diharapkan dari nama properti, ini memungkinkan kolom untuk berbagi ukuran yang sama. Jadi ketika "Telusuri..." dilokalkan ke string yang lebih panjang "Durchsuchen...", semua tombol tumbuh lebar alih-alih memiliki tombol "OK" kecil dan "Durchsuchen" yang sangat besar... Tombol.

xml:lang

xml:lang="en-US"

Perhatikan xml:lang Handling di XAML yang ditempatkan di elemen akar UI. Properti ini menggambarkan budaya elemen tertentu dan anak-anaknya. Nilai ini digunakan oleh beberapa fitur dalam WPF dan harus diubah dengan tepat selama pelokalan. Nilai ini mengubah kamus bahasa apa yang digunakan untuk membuat tanda hubung dan kata-kata pemeriksaan ejaan. Ini juga mempengaruhi tampilan digit dan bagaimana sistem fallback font memilih font mana yang akan digunakan. Akhirnya, properti memengaruhi cara angka ditampilkan dan cara teks yang ditulis dalam skrip kompleks dibentuk. Nilai defaultnya adalah "en-US".

Membangun Rakitan Sumber Daya Satelit

Dalam .csproj:

.csproj Edit file dan tambahkan tag berikut ke tanpa syarat <PropertyGroup>:

<UICulture>en-US</UICulture>

Perhatikan penambahan UICulture nilai. Ketika ini diatur ke nilai yang valid CultureInfo seperti en-US, membangun proyek akan menghasilkan rakitan satelit dengan semua sumber daya yang dapat dilokalkan di dalamnya.

<Resource Include="RunIcon.JPG">

<Localizable>False</Localizable>

</Resource>

RunIcon.JPG Tidak perlu dilokalkan karena harus muncul sama untuk semua budaya. Localizable diatur ke false sehingga tetap dalam bahasa assembly utama netral alih-alih rakitan satelit. Nilai default semua sumber daya Localizable yang tidak dapat dikompresi diatur ke true.

Melokalisasi Dialog Jalankan

Pilah

Setelah membangun aplikasi, langkah pertama dalam melokalisasinya adalah mengurai sumber daya yang dapat dilokalkan dari perakitan satelit. Untuk tujuan topik ini, gunakan sampel alat LocBaml yang dapat ditemukan di LocBaml Tool Sample. Perhatikan bahwa LocBaml hanyalah alat sampel yang dimaksudkan untuk membantu Anda mulai membangun alat pelokalan yang sesuai dengan proses pelokalan Anda. Menggunakan LocBaml, jalankan yang berikut ini untuk mengurai: LocBaml /parse RunDialog.resources.dll /out: untuk menghasilkan file "RunDialog.resources.dll.CSV".

Peringatan

Alat LocBaml hanya berfungsi dengan WPF untuk proyek .NET Framework, alat ini tidak berfungsi dengan WPF untuk .NET.

Pelokalan

Gunakan editor CSV favorit Anda yang mendukung Unicode untuk mengedit file ini. Filter semua entri dengan kategori pelokalan "Tidak Ada". Anda akan melihat entri berikut:

Kunci Sumber Daya Kategori Pelokalan Nilai
Button_1:System.Windows.Controls.Button.$Content Button OK
Button_2:System.Windows.Controls.Button.$Content Button Batalkan
Button_3:System.Windows.Controls.Button.$Content Button Telusuri...
ComboBox_1:System.Windows.Controls.ComboBox.$Content ComboBox
TextBlock_1:System.Windows.Controls.TextBlock.$Content Teks Ketik nama program, folder, dokumen, atau sumber daya Internet, dan Windows akan membukanya untuk Anda.
TextBlock_2:System.Windows.Controls.TextBlock.$Content Teks Terbuka:
Window_1:System.Windows.Window.Title Judul jalankan

Melokalisasi aplikasi ke Bahasa Jerman akan memerlukan terjemahan berikut:

Kunci Sumber Daya Kategori Pelokalan Nilai
Button_1:System.Windows.Controls.Button.$Content Button OK
Button_2:System.Windows.Controls.Button.$Content Button Singkatan
Button_3:System.Windows.Controls.Button.$Content Button Durchsuchen...
ComboBox_1:System.Windows.Controls.ComboBox.$Content ComboBox
TextBlock_1:System.Windows.Controls.TextBlock.$Content Teks Geben Sie den Namen eines Programms, Ordners, Dokuments oder einer Internetresource an.
TextBlock_2:System.Windows.Controls.TextBlock.$Content Teks Öffnen:
Window_1:System.Windows.Window.Title Judul jalankan

Menghasilkan

Langkah terakhir pelokalan melibatkan pembuatan perakitan satelit yang baru dilokalkan. Ini dapat dicapai dengan perintah LocBaml berikut:

LocBaml.exe /generate RunDialog.resources.dll /trans:RunDialog.resources.dll.CSV /out: . /cul:de-DE

Pada Windows Jerman, jika resources.dll ini ditempatkan di folder de-DE di samping assembly utama, sumber daya ini akan secara otomatis dimuat alih-alih yang ada di folder en-US. Jika Anda tidak memiliki versi Windows Jerman untuk menguji ini, atur budaya ke budaya Windows apa pun yang Anda gunakan (misalnya, en-US), dan ganti sumber daya asli DLL.

Pemuatan Sumber Daya Satelit

MyDialog.exe en-US\MyDialog.resources.dll de-DE\MyDialog.resources.dll
Kode BAML Bahasa Inggris Asli BAML yang Dilokalkan
Sumber daya netral secara budaya Sumber daya lain dalam bahasa Inggris Sumber daya lain yang dilokalkan ke Bahasa Jerman

.NET secara otomatis memilih perakitan sumber daya satelit mana yang akan dimuat berdasarkan aplikasi Thread.CurrentUICulture. Ini default ke budaya OS Windows Anda. Jika Anda menggunakan Windows Jerman, file de-DE\MyDialog.resources.dll dimuat. Jika Anda menggunakan Windows Bahasa Inggris, file en-US\MyDialog.resources.dll dimuat. Anda dapat mengatur sumber daya fallback utama untuk aplikasi Anda dengan menentukan NeutralResourcesLanguage atribut dalam file AssemblyInfo proyek Anda. Misalnya, jika Anda menentukan:

[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]

kemudian file en-US\MyDialog.resources.dll digunakan dengan Windows Jerman jika tidak ada file berikut yang tersedia: de-DE\MyDialog.resources.dll atau de\MyDialog.resources.dll.

Beranda Microsoft Saudi Arabia

Grafik berikut menunjukkan Beranda Bahasa Inggris dan Arab. Untuk sampel lengkap yang menghasilkan grafik ini, lihat Sampel Beranda Globalisasi.

Inggris:

Screenshot showing an English home page.

Arab:

Screenshot showing an Arabic home page.

Merancang halaman beranda Microsoft Global

Tiruan situs web Microsoft Arab Saudi ini menggambarkan fitur globalisasi yang disediakan untuk bahasa RightToLeft. Bahasa seperti Ibrani dan Arab memiliki urutan baca kanan-ke-kiri sehingga tata letak UI harus sering ditata dengan sangat berbeda dari yang akan berada dalam bahasa kiri-ke-kanan seperti bahasa Inggris. Melokalisasi dari bahasa kiri-ke-kanan ke bahasa kanan-ke-kiri atau sebaliknya bisa sangat menantang. WPF telah dirancang untuk membuat pelokalan tersebut jauh lebih mudah.

FlowDirection

Homepage.xaml:

<Page x:Uid="Page_1" x:Class="MicrosoftSaudiArabiaHomepage.Homepage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
    FlowDirection="LeftToRight" 
    Localization.Comments="FlowDirection(This FlowDirection controls the actual content of the homepage)"
    xml:lang="en-US">

FlowDirection Perhatikan properti di Page. Mengubah properti ini menjadi RightToLeft akan mengubah FlowDirection elemen dan turunannya Page sehingga tata letak UI ini dibalik menjadi kanan-ke-kiri seperti yang diharapkan pengguna Arab. Seseorang dapat mengambil alih perilaku warisan dengan menentukan eksplisit FlowDirection pada elemen apa pun. Properti FlowDirection tersedia pada elemen terkait dokumen atau apa pun FrameworkElement dan memiliki nilai implisit .LeftToRight

Amati bahwa bahkan kuas gradien latar belakang dibalik dengan benar ketika akar FlowDirection diubah:

FlowDirection="LeftToright"

Screenshot showing the gradient flow from left to right.

FlowDirection="RightToLeft"

Screenshot showing the gradient flow from right to left.

Hindari Menggunakan Dimensi Tetap untuk Panel dan Kontrol

Lihat homepage.xaml, perhatikan bahwa selain dari lebar tetap dan tinggi yang ditentukan untuk seluruh UI di bagian atas DockPanel, tidak ada dimensi tetap lainnya. Hindari menggunakan dimensi tetap untuk mencegah kliping teks yang dilokalkan yang mungkin lebih panjang dari teks sumber. Panel dan kontrol WPF akan secara otomatis mengubah ukuran berdasarkan konten yang dikandungnya. Sebagian besar kontrol juga memiliki dimensi minimum dan maksimum yang dapat Anda atur untuk kontrol lebih lanjut (misalnya, MinWidth="20"). Dengan Grid, Anda juga dapat mengatur lebar dan tinggi relatif dengan menggunakan '*' (misalnya, Width="0.25*") atau menggunakan fitur berbagi ukuran selnya.

Komentar Pelokalan

Ada banyak kasus di mana konten mungkin ambigu dan sulit diterjemahkan. Pengembang atau desainer memiliki kemampuan untuk memberikan konteks dan komentar tambahan kepada pelokalan melalui komentar pelokalan. Misalnya Localization.Comments di bawah ini mengklarifikasi penggunaan karakter '|'.

<TextBlock 
  x:Uid="TextBlock_2" 
  DockPanel.Dock="Right" 
  Foreground="White" 
  Margin="5,0,5,0"
  Localization.Comments="$Content(This character is used as a decorative rule.)">
  |
</TextBlock>

Komentar ini menjadi terkait dengan konten TextBlock_1 dan dalam kasus Alat LocBaml, (lihat Melokalkan Aplikasi), itu dapat dilihat di kolom ke-6 baris TextBlock_1 dalam file .csv output:

Kunci Sumber Daya Kategori Dapat dibaca Dimodifikasi Komentar Nilai
TextBlock_1:System.Windows.Controls.TextBlock.$Content Teks BENAR BENAR Karakter ini digunakan sebagai aturan dekoratif. |

Komentar dapat ditempatkan pada konten atau properti elemen apa pun menggunakan sintaks berikut:

<TextBlock 
  x:Uid="TextBlock_1" 
  DockPanel.Dock="Right" 
  Foreground="White" 
  Margin="5,0,5,0"
  Localization.Comments="$Content(This is a comment on the TextBlock's content.)
     Margin(This is a comment on the TextBlock's Margin property.)">
  |
 </TextBlock>

Atribut Pelokalan

Seringkali pengembang atau manajer pelokalan membutuhkan kontrol atas apa yang dapat dibaca dan dimodifikasi oleh pelokalan. Misalnya, Anda mungkin tidak ingin localizer menerjemahkan nama perusahaan atau kata-kata hukum Anda. WPF menyediakan atribut yang memungkinkan Anda mengatur keterbacaan, modifikasi, dan kategori konten atau properti elemen yang dapat digunakan alat pelokalan Anda untuk mengunci, menyembunyikan, atau mengurutkan elemen. Untuk informasi selengkapnya, lihat Attributes . Untuk tujuan sampel ini, Alat LocBaml hanya menghasilkan nilai atribut ini. Kontrol WPF semuanya memiliki nilai default untuk atribut ini, tetapi Anda dapat mengambil alihnya. Misalnya, contoh berikut mengambil alih atribut pelokalan default untuk TextBlock_1 dan mengatur konten agar dapat dibaca tetapi tidak dapat dimodifikasi untuk pelokalan.

<TextBlock
x:Uid="TextBlock_1"
Localization.Attributes=
"$Content(Readable Unmodifiable)">
  Microsoft Corporation
</TextBlock>

Selain atribut keterbacaan dan modifikasi, WPF menyediakan enumerasi kategori UI umum (LocalizationCategory) yang dapat digunakan untuk memberi pelokalan lebih banyak konteks. Kategori default WPF untuk kontrol platform juga dapat ditimpa di XAML:

<TextBlock x:Uid="TextBlock_2">
<TextBlock.ToolTip>
<TextBlock
x:Uid="TextBlock_3"
Localization.Attributes=
"$Content(ToolTip Readable Unmodifiable)">
Microsoft Corporation
</TextBlock>
</TextBlock.ToolTip>
Windows Vista
</TextBlock>

Atribut pelokalan default yang disediakan WPF juga dapat ditimpa melalui kode, sehingga Anda dapat mengatur nilai default yang tepat dengan benar untuk kontrol kustom. Contohnya:

[Localizability(Readability = Readability.Readable, Modifiability=Modifiability.Unmodifiable, LocalizationCategory.None)]
public class CorporateLogo : TextBlock
{
    // ...
}

Atribut per instans yang ditetapkan di XAML akan lebih diutamakan daripada nilai yang ditetapkan dalam kode pada kontrol kustom. Untuk informasi selengkapnya tentang atribut dan komentar, lihat Atribut dan Komentar Pelokalan.

Font Fallback dan Font Komposit

Jika Anda menentukan font yang tidak mendukung rentang titik kode tertentu, WPF akan secara otomatis mundur ke salah satu yang melakukannya dengan menggunakan Global User Interface.compositefont yang terletak di direktori Windows\Fonts Anda. Font komposit berfungsi sama seperti font lainnya dan dapat digunakan secara eksplisit dengan mengatur elemen FontFamily (misalnya, FontFamily="Global User Interface"). Anda dapat menentukan preferensi fallback font Anda sendiri dengan membuat font komposit Anda sendiri dan menentukan font apa yang akan digunakan untuk rentang dan bahasa titik kode tertentu.

Untuk informasi selengkapnya tentang font komposit, lihat FontFamily.

Melokalisasi Beranda Microsoft

Anda dapat mengikuti langkah yang sama dengan contoh Jalankan Dialog untuk melokalisasi aplikasi ini. File .csv yang dilokalkan untuk bahasa Arab tersedia untuk Anda dalam Sampel Beranda Globalisasi.