Bagikan melalui


Bekerja dengan WatchOS Localization di Xamarin

Mengadaptasi aplikasi watchOS Anda untuk beberapa bahasa

Apple Watch menampilkan konten yang dilokalkan

Aplikasi watchOS dilokalkan menggunakan metode iOS standar:

  • Menggunakan ID Pelokalan pada elemen papan cerita,
  • File .strings yang terkait dengan papan cerita, dan
  • File localizable.strings untuk teks yang digunakan dalam kode.

Papan cerita dan sumber daya default terletak di direktori Dasar , dan terjemahan khusus bahasa dan sumber daya lainnya disimpan dalam direktori .lproj . iOS dan Watch OS akan secara otomatis menggunakan pilihan bahasa pengguna untuk memuat string dan sumber daya yang benar.

Karena app Apple Watch memiliki dua bagian - Watch App dan Watch Extension - sumber daya string yang dilokalkan diperlukan di dua tempat, tergantung pada cara penggunaannya.

Teks dan sumber daya yang dilokalkan akan berbeda di aplikasi watch dan ekstensi watch.

Aplikasi Tonton

Aplikasi jam tangan berisi papan cerita yang menjelaskan antarmuka pengguna aplikasi. Kontrol apa pun (seperti Label dan Image) yang mendukung pelokalan memiliki ID Pelokalan.

Setiap direktori .lproj khusus bahasa harus berisi file .strings dengan terjemahan untuk setiap elemen (menggunakan ID Pelokalan), serta gambar yang direferensikan oleh papan cerita.

Tonton Ekstensi

Ekstensi watch adalah tempat kode aplikasi Anda berjalan. Teks apa pun yang ditampilkan kepada pengguna dari kode perlu dilokalkan dalam ekstensi dan bukan di aplikasi pengawasan.

Ekstensi juga harus berisi direktori .lproj khusus bahasa, tetapi file .strings hanya memerlukan terjemahan untuk teks yang digunakan dalam kode Anda.

Meng-globalisasi Solusi Watch

Globalisasi adalah proses membuat aplikasi dapat dilokalkan. Untuk aplikasi tonton, ini berarti merancang papan cerita dengan mempertimbangkan panjang teks yang berbeda, memastikan setiap tata letak layar menyesuaikan dengan tepat tergantung pada teks apa yang ditampilkan. Anda juga perlu memastikan string apa pun yang direferensikan dalam kode ekstensi watch dapat diterjemahkan menggunakan metode .LocalizedString

Aplikasi Tonton

Secara default, aplikasi watch tidak dikonfigurasi untuk pelokalan. Anda perlu memindahkan file papan cerita default dan membuat beberapa direktori lain untuk terjemahan Anda:

  1. Buat direktori Base.lproj dan pindahkan Interface.storyboard ke dalamnya.

  2. Buat <direktori language.lproj> untuk setiap bahasa yang ingin Anda dukung.

  3. Direktori .lproj harus berisi file teks Interface.strings (nama file harus cocok dengan nama storboard). Anda dapat secara opsional menempatkan gambar apa pun yang memerlukan pelokalan di direktori ini.

Proyek aplikasi jam tangan terlihat seperti ini setelah perubahan ini dibuat (hanya file bahasa Inggris dan Spanyol yang telah ditambahkan):

Proyek aplikasi jam tangan dengan file bahasa Inggris dan Spanyol

Teks Papan Cerita

Saat Anda mengedit papan cerita, pilih setiap elemen dan perhatikan ID Pelokalan yang muncul di pad Properti :

ID Pelokalan yang muncul di pad Properti

Di folder Base.lproj, buat pasangan kunci-nilai seperti yang ditunjukkan di bawah ini, di mana kunci dibentuk oleh ID Pelokalan dan nama properti pada kontrol, digabungkan oleh titik (.).

"AgC-eL-Hgc.title" = "WatchL10nEN"; // interface controller title
"0.text" = "Welcome to WatchL10n"; // Welcome
"1.text" = "Language settings are in Apple Watch App"; // How to change language
"2.title" = "Greetings"; // Greeting
"6.title" = "Detail";
"39.text" = "Second screen";

Perhatikan dalam contoh ini bahwa ID Pelokalan dapat menjadi string angka sederhana (misalnya. "0", "1", dll) atau string yang lebih kompleks (seperti "AgC-eL-Hgc"). Label kontrol memiliki Text properti dan Buttonmemiliki Title properti , yang tercermin dalam cara nilai yang dilokalkan diatur - pastikan untuk menggunakan nama properti huruf kecil seperti yang ditunjukkan pada contoh di atas.

Ketika papan cerita dirender pada jam tangan, nilai yang benar akan secara otomatis diekstrak dan ditampilkan sesuai dengan bahasa yang dipilih oleh pengguna.

Gambar Papan Cerita

Contoh solusi juga menyertakan gradient@2x.png gambar di setiap folder bahasa. Gambar ini dapat berbeda untuk setiap bahasa (misalnya, mungkin telah menyematkan teks yang perlu diterjemahkan, atau menggunakan ikonografi yang dilokalkan).

Cukup atur properti Gambar gambar di papan cerita dan gambar yang benar akan dirender pada jam tangan sesuai dengan bahasa yang dipilih oleh pengguna.

Mengatur properti gambar Gambar di papan cerita

Catatan: karena semua Apple Watch memiliki layar Retina, hanya versi gambar @2x yang diperlukan. Anda tidak perlu menentukan @2x di papan cerita.

Tonton Ekstensi

Ekstensi jam tangan memerlukan struktur direktori serupa untuk mendukung pelokalan, namun tidak ada papan cerita. String yang dilokalkan dalam ekstensi hanya yang dirujuk oleh kode C#.

Struktur direktori ekstensi watch untuk mendukung pelokalan

String dalam Kode

File Localizable.strings memiliki struktur yang sedikit berbeda daripada jika dikaitkan dengan papan cerita. Dalam hal ini kita dapat memilih string "kunci"; Rekomendasi Apple adalah menggunakan kunci yang mencerminkan teks aktual yang akan ditampilkan dalam bahasa default:

"Breakfast time" = "Breakfast time!"; // morning
"Lunch time" = "Lunch time!"; // midday
"Dinner time" = "Dinner time!"; // evening
"Bed time" = "Bed time!"; // night

Metode NSBundle.MainBundle.LocalizedString ini digunakan untuk menyelesaikan string ke dalam rekan-rekan yang diterjemahkan, seperti yang ditunjukkan pada kode di bawah ini.

var display = "Breakfast time";
var localizedDisplay =
  NSBundle.MainBundle.LocalizedString (display, comment:"greeting");
displayText.SetText (localizedDisplay);

Gambar dalam Kode

Gambar yang diisi oleh kode dapat diatur dengan dua cara.

  1. Anda dapat mengubah Image kontrol dengan mengatur nilainya ke nama string gambar yang sudah ada di Aplikasi Watch, misalnya

    displayImage.SetImage("gradient"); // image in Watch App (as shown above)
    
  2. Anda dapat memindahkan gambar dari ekstensi ke jam tangan menggunakan FromBundle dan aplikasi akan secara otomatis memilih gambar yang benar untuk pilihan bahasa pengguna. Dalam contoh solusi ada gambar language@2x.png di setiap folder bahasa, dan ditampilkan menggunakan DetailController kode berikut:

    using (var image = UIImage.FromBundle ("language")) {
        displayImage.SetImage (image);
    }
    

    Perhatikan bahwa Anda tidak perlu menentukan @2x saat merujuk ke nama file gambar.

Metode kedua juga berlaku jika Anda mengunduh gambar dari server jarak jauh untuk dirender di jam tangan; namun dalam hal ini Anda harus memastikan bahwa gambar yang Anda unduh dilokalkan dengan benar sesuai dengan preferensi pengguna.

Pelokalan

Setelah Mengonfigurasi solusi, penerjemah harus memproses file dan gambar .strings untuk setiap bahasa yang ingin Anda dukung.

Anda dapat membuat direktori .lproj sebanyak yang Anda butuhkan (satu untuk setiap bahasa yang didukung). Mereka diberi nama menggunakan kode bahasa, seperti en, es, de, ja, pt-BR, dll. (untuk bahasa Inggris, Spanyol, Jerman, Jepang, dan Portugis (Brasil) masing-masing).

Sampel terlampir menggunakan terjemahan (yang dihasilkan mesin) untuk menunjukkan cara melokalisasi aplikasi watchOS.

Aplikasi Tonton

Nilai-nilai ini digunakan untuk menerjemahkan antarmuka pengguna yang ditentukan dalam papan cerita aplikasi jam tangan. Nilai kunci adalah kombinasi dari ID Pelokalan setiap kontrol papan cerita dan properti yang sedang diterjemahkan.

Disarankan untuk menambahkan komentar yang berisi teks asli ke file sehingga penerjemah tahu apa yang harus diterjemahkan.

es.lproj/Interface.strings

String bahasa Spanyol (diterjemahkan mesin) untuk papan cerita ditunjukkan di bawah ini. Sangat membantu untuk menambahkan komentar ke setiap baris, karena sulit untuk mengetahui apa yang dimaksud dengan ID Pelokalan:

"AgC-eL-Hgc.title" = "Spanish"; // app screen heading
"0.text" = "Bienvenido a WatchL10n"; // Welcome to WatchL10n
"1.text" = "Ajustes de idioma están en Apple Watch App"; // Change the language in the Apple Watch App
"2.title" = "Saludos"; // Greetings
"6.title" = "2nd"; // second screen heading
"39.text" = "Segunda pantalla"; // second screen

Tonton Ekstensi

Nilai-nilai ini digunakan dalam kode untuk menerjemahkan informasi sebelum ditampilkan kepada pengguna. Kunci dipilih oleh pengembang saat mereka menulis kode, dan biasanya berisi string aktual yang akan diterjemahkan.

file es.lproj/Localizable.strings

String bahasa Spansish (diterjemahkan mesin):

"Breakfast time" = "la hora del desayuno"; // morning
"Lunch time" = "hora de comer"; // midday
"Dinner time" = "hora de la cena"; // evening
"Bed time" = "la hora de dormir"; // night

Pengujian

Metode untuk mengubah preferensi bahasa berbeda antara simulator dan perangkat fisik.

Simulator

Pada simulator, pilih bahasa yang akan diuji menggunakan aplikasi iOS Pengaturan (ikon peralatan abu-abu di layar beranda simulator).

Pengaturan Pelokalan aplikasi Pengaturan iOS

Perangkat tonton

Saat menguji dengan jam tangan, ubah bahasa jam tangan di app Apple Watch di i yang dipasangkan Telepon.

Ubah bahasa jam tangan di app Apple Watch pada i yang dipasangkan Telepon