Cara: Melokalkan aplikasi
Tutorial ini menjelaskan cara membuat aplikasi yang dilokalkan dengan menggunakan alat LocBaml.
Catatan
Alat LocBaml bukan aplikasi siap produksi. Ini disajikan sebagai sampel yang menggunakan beberapa API pelokalan dan menggambarkan bagaimana Anda dapat menulis alat pelokalan.
Gambaran Umum
Artikel ini memberi Anda pendekatan langkah demi langkah untuk melokalisasi aplikasi. Pertama, Anda menyiapkan aplikasi sehingga teks yang akan diterjemahkan dapat diekstraksi. Setelah teks diterjemahkan, Anda menggabungkan teks yang diterjemahkan ke dalam salinan baru aplikasi asli.
Membuat aplikasi sampel
Dalam langkah ini, Anda menyiapkan aplikasi untuk pelokalan. Dalam sampel Windows Presentation Foundation (WPF), sampel HelloApp disediakan yang akan digunakan untuk contoh kode dalam diskusi ini. Jika Anda ingin menggunakan sampel ini, unduh file Extensible Application Markup Language (XAML) dari Sampel Alat LocBaml.
Kembangkan aplikasi Anda ke titik di mana Anda ingin memulai pelokalan.
Tentukan bahasa pengembangan dalam file proyek sehingga MSBuild menghasilkan rakitan utama dan rakitan satelit (file dengan ekstensi .resources.dll) untuk berisi sumber daya bahasa netral. File proyek dalam sampel HelloApp adalah HelloApp.csproj. Dalam file tersebut, Anda akan menemukan bahasa pengembangan yang diidentifikasi sebagai berikut:
<UICulture>en-US</UICulture>
Tambahkan Uid ke file XAML Anda. Uid digunakan untuk melacak perubahan pada file dan mengidentifikasi item yang harus diterjemahkan. Untuk menambahkan UID ke file Anda, jalankan
updateuid
pada file proyek Anda:msbuild -t:updateuid helloapp.csproj
Untuk memverifikasi bahwa Anda tidak memiliki Uid yang hilang atau duplikat, jalankan
checkuid
:msbuild -t:checkuid helloapp.csproj
Setelah menjalankan
updateuid
, file Anda harus berisi Uid. Misalnya, dalam file Pane1.xaml HelloApp, Anda harus menemukan yang berikut ini:<StackPanel x:Uid="StackPanel_1"> <TextBlock x:Uid="TextBlock_1">Hello World</TextBlock> <TextBlock x:Uid="TextBlock_2">Goodbye World</TextBlock> </StackPanel>
Membuat rakitan satelit sumber daya bahasa netral
Setelah aplikasi dikonfigurasi untuk menghasilkan perakitan satelit sumber daya bahasa netral, Anda membangun aplikasi. Ini menghasilkan rakitan aplikasi utama serta rakitan satelit sumber daya bahasa netral yang diperlukan oleh LocBaml untuk pelokalan.
Untuk membangun aplikasi:
Kompilasi HelloApp untuk membuat pustaka tautan dinamis (DLL):
msbuild helloapp.csproj
Rakitan aplikasi utama yang baru dibuat, HelloApp.exe, dibuat di folder berikut: C:\HelloApp\Bin\Debug
Rakitan satelit sumber daya bahasa netral yang baru dibuat, HelloApp.resources.dll, dibuat di folder berikut: C:\HelloApp\Bin\Debug\en-US
Membangun alat LocBaml
Semua file yang diperlukan untuk membangun LocBaml terletak di sampel WPF. Unduh file C# dari Sampel Alat LocBaml.
Dari baris perintah, jalankan file proyek (locbaml.csproj) untuk membangun alat:
msbuild locbaml.csproj
Buka direktori Bin\Release untuk menemukan file yang dapat dieksekusi yang baru dibuat (locbaml.exe). Contoh: C:\LocBaml\Bin\Release\locbaml.exe
Opsi yang dapat Anda tentukan saat menjalankan LocBaml adalah sebagai berikut.
Opsi Deskripsi parse
atau-p
Mengurai file Baml, sumber daya, atau DLL untuk menghasilkan file .csv atau .txt. generate
atau-g
Menghasilkan file biner yang dilokalkan dengan menggunakan file yang diterjemahkan. out
atau-o
{filedirectory]Nama file output. culture
atau-cul
{culture]Lokal rakitan output. translation
atau-trans
{translation.csv]File yang diterjemahkan atau dilokalkan. asmpath
atau-asmpath
{filedirectory]Jika kode XAML Anda berisi kontrol kustom, Anda harus menyediakan asmpath
ke rakitan kontrol kustom.nologo
Tidak menampilkan logo atau informasi hak cipta. verbose
Menampilkan informasi mode verbose. Catatan
Jika Anda memerlukan daftar opsi saat menjalankan alat, masukkan
LocBaml.exe
lalu tekan Enter.
Menggunakan LocBaml untuk mengurai file
Sekarang setelah Anda membuat alat LocBaml, Anda siap menggunakannya untuk mengurai HelloApp.resources.dll untuk mengekstrak konten teks yang akan dilokalkan.
Salin LocBaml.exe ke folder bin\debug aplikasi Anda, tempat perakitan aplikasi utama dibuat.
Untuk mengurai file rakitan satelit dan menyimpan output sebagai file .csv, gunakan perintah berikut:
LocBaml.exe /parse HelloApp.resources.dll /out:Hello.csv
Catatan
Jika file input, HelloApp.resources.dll, tidak berada di direktori yang sama dengan LocBaml.exe memindahkan salah satu file sehingga kedua file berada di direktori yang sama.
Saat Anda menjalankan LocBaml untuk mengurai file, output terdiri dari tujuh bidang yang dibatasi oleh koma (file.csv) atau tab (file.txt). Berikut ini menunjukkan file .csv yang diurai untuk HelloApp.resources.dll:
File .csv yang diurai HelloApp.g.en-US.resources:window1.baml,Stack1:System.Windows.Controls.StackPanel.$Content,Ignore,FALSE, FALSE,,#Text1;#Text2; HelloApp.g.en-US.resources:window1.baml,Text1:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Halo Dunia HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Goodbye World Tujuh bidang tersebut adalah:
Nama BAML. Nama sumber daya BAML sehubungan dengan perakitan satelit bahasa sumber.
Kunci Sumber Daya. Pengidentifikasi sumber daya yang dilokalkan.
Kategori. Jenis nilai. Lihat Atribut dan Komentar Pelokalan.
Keterbacaan. Apakah nilai dapat dibaca oleh localizer. Lihat Atribut dan Komentar Pelokalan.
Modifikasi. Apakah nilai dapat dimodifikasi oleh localizer. Lihat Atribut dan Komentar Pelokalan.
Komentar. Deskripsi tambahan nilai untuk membantu menentukan bagaimana nilai dilokalkan. Lihat Atribut dan Komentar Pelokalan.
Nilai. Nilai teks untuk diterjemahkan ke budaya yang diinginkan.
Tabel berikut ini memperlihatkan bagaimana bidang ini dipetakan ke nilai yang dibatasi dari file .csv:
Nama BAML Kunci sumber daya Anda Kategori Mudah dibaca Modifikasi Komentar Nilai HelloApp.g.en-US.resources:window1.baml Stack1:System.Windows.Controls.StackPanel.$Content Abaikan SALAH SALAH #Text1;#Text2 HelloApp.g.en-US.resources:window1.baml Text1:System.Windows.Controls.TextBlock.$Content Tidak ada BENAR BENAR Halo Dunia HelloApp.g.en-US.resources:window1.baml Text2:System.Windows.Controls.TextBlock.$Content Tidak ada BENAR BENAR Selamat Tinggal Dunia Perhatikan bahwa semua nilai untuk bidang Komentar tidak berisi nilai; jika bidang tidak memiliki nilai, nilai tersebut kosong. Perhatikan juga bahwa item di baris pertama tidak dapat dibaca atau dimodifikasi, dan memiliki "Abaikan" sebagai nilai Kategorinya, yang semuanya menunjukkan bahwa nilai tidak dapat dilokalkan.
Untuk memfasilitasi penemuan item yang dapat dilokalkan dalam file yang diurai, terutama dalam file besar, Anda dapat mengurutkan atau memfilter item menurut Kategori, Keterbacaan, dan Modifikasi. Misalnya, Anda dapat memfilter nilai yang tidak dapat dibaca dan tidak dapat dimodifikasi.
Menerjemahkan konten yang dapat dilokalkan
Gunakan alat apa pun yang tersedia untuk menerjemahkan konten yang diekstrak. Cara yang baik untuk melakukan ini adalah dengan menulis sumber daya ke file .csv dan melihatnya di Microsoft Excel, membuat perubahan terjemahan ke kolom terakhir (nilai).
Gunakan LocBaml untuk menghasilkan file .resources.dll baru
Konten yang diidentifikasi dengan mengurai HelloApp.resources.dll dengan LocBaml telah diterjemahkan dan harus digabungkan kembali ke aplikasi asli. generate
Gunakan opsi atau -g
untuk menghasilkan file .resources.dll baru.
Gunakan sintaks berikut untuk menghasilkan file HelloApp.resources.dll baru. Tandai budaya sebagai en-US (/cul:en-US).
LocBaml.exe /generate HelloApp.resources.dll /trans:Hello.csv /out:c:\ /cul:en-US
Catatan
Jika file input, Hello.csv, tidak berada dalam direktori yang sama dengan yang dapat dieksekusi, LocBaml.exe, pindahkan salah satu file sehingga kedua file berada di direktori yang sama.
Ganti file HelloApp.resources.dll lama di direktori C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll dengan file HelloApp.resources.dll yang baru dibuat.
"Halo Dunia" dan "Goodbye World" sekarang harus diterjemahkan dalam aplikasi Anda.
Untuk menerjemahkan ke budaya yang berbeda, gunakan budaya bahasa yang Anda terjemahkan. Contoh berikut menunjukkan cara menerjemahkan ke Bahasa Prancis-Kanada:
LocBaml.exe /generate HelloApp.resources.dll /trans:Hellofr-CA.csv /out:c:\ /cul:fr-CA
Dalam rakitan yang sama dengan perakitan aplikasi utama, buat folder khusus budaya baru untuk menampung perakitan satelit baru. Untuk Prancis-Kanada, folder akan menjadi fr-CA.
Salin rakitan satelit yang dihasilkan ke folder baru.
Untuk menguji rakitan satelit baru, Anda perlu mengubah budaya tempat aplikasi Anda akan berjalan. Anda dapat melakukannya dengan salah satu dari dua cara ini:
Ubah pengaturan regional sistem operasi Anda.
Di aplikasi Anda, tambahkan kode berikut ke App.xaml.cs:
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="SDKSample.App" x:Uid="Application_1" StartupUri="Window1.xaml"> </Application>
using System.Windows; using System.Globalization; using System.Threading; namespace SDKSample { public partial class App : Application { public App() { // Change culture under which this application runs CultureInfo ci = new CultureInfo("fr-CA"); Thread.CurrentThread.CurrentCulture = ci; Thread.CurrentThread.CurrentUICulture = ci; } } }
Imports System.Windows Imports System.Globalization Imports System.Threading Namespace SDKSample Partial Public Class App Inherits Application Public Sub New() ' Change culture under which this application runs Dim ci As New CultureInfo("fr-CA") Thread.CurrentThread.CurrentCulture = ci Thread.CurrentThread.CurrentUICulture = ci End Sub End Class End Namespace
Tips untuk Menggunakan LocBaml
Semua rakitan dependen yang menentukan kontrol kustom harus disalin ke direktori lokal LocBaml atau diinstal ke GAC. Ini diperlukan karena API pelokalan harus memiliki akses ke rakitan dependen saat membaca XAML biner (BAML).
Jika rakitan utama ditandatangani, DLL sumber daya yang dihasilkan juga harus ditandatangani agar dimuat.
Versi DLL sumber daya yang dilokalkan perlu disinkronkan dengan rakitan utama.
Baca juga
.NET Desktop feedback
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk