Bekerja dengan WatchOS Localization di Xamarin
Mengadaptasi aplikasi watchOS Anda untuk beberapa bahasa
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:
Buat direktori Base.lproj dan pindahkan Interface.storyboard ke dalamnya.
Buat <direktori language.lproj> untuk setiap bahasa yang ingin Anda dukung.
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):
Teks Papan Cerita
Saat Anda mengedit papan cerita, pilih setiap elemen dan perhatikan 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 Button
memiliki 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.
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#.
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.
Anda dapat mengubah
Image
kontrol dengan mengatur nilainya ke nama string gambar yang sudah ada di Aplikasi Watch, misalnyadisplayImage.SetImage("gradient"); // image in Watch App (as shown above)
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 menggunakanDetailController
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).
Perangkat tonton
Saat menguji dengan jam tangan, ubah bahasa jam tangan di app Apple Watch di i yang dipasangkan Telepon.