Bagikan melalui


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.

  1. Kembangkan aplikasi Anda ke titik di mana Anda ingin memulai pelokalan.

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

  3. 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:

  1. Kompilasi HelloApp untuk membuat pustaka tautan dinamis (DLL):

    msbuild helloapp.csproj

  2. Rakitan aplikasi utama yang baru dibuat, HelloApp.exe, dibuat di folder berikut: C:\HelloApp\Bin\Debug

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

  1. Semua file yang diperlukan untuk membangun LocBaml terletak di sampel WPF. Unduh file C# dari Sampel Alat LocBaml.

  2. Dari baris perintah, jalankan file proyek (locbaml.csproj) untuk membangun alat:

    msbuild locbaml.csproj

  3. Buka direktori Bin\Release untuk menemukan file yang dapat dieksekusi yang baru dibuat (locbaml.exe). Contoh: C:\LocBaml\Bin\Release\locbaml.exe

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

  1. Salin LocBaml.exe ke folder bin\debug aplikasi Anda, tempat perakitan aplikasi utama dibuat.

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

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

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

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

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

  3. "Halo Dunia" dan "Goodbye World" sekarang harus diterjemahkan dalam aplikasi Anda.

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

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

  6. Salin rakitan satelit yang dihasilkan ke folder baru.

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