Membuat aplikasi Anda dapat dilokalkan
Aplikasi yang dilokalkan adalah aplikasi yang dapat dilokalkan untuk pasar, bahasa, atau wilayah lain tanpa mengungkap cacat fungsi di aplikasi. Properti paling penting dari aplikasi yang dapat dilokalkan adalah bahwa kode yang dapat dieksekusi telah dipisahkan dengan bersih dari sumber daya yang dapat dilokalkan. Jadi, Anda harus menentukan sumber daya aplikasi mana yang perlu dilokalkan. Tanyakan pada diri Anda apa yang perlu diubah jika aplikasi Anda akan dilokalkan untuk pasar lain.
Kami juga menyarankan Agar Anda terbiasa dengan pedoman globalisasi.
Masukkan string Anda ke dalam File Sumber Daya (.resw)
Jangan mengkodekan literal string secara permanen dalam kode imperatif Anda, markup XAML, atau dalam manifes paket aplikasi Anda. Sebagai gantinya, masukkan string Anda ke dalam Resources Files (.resw) sehingga dapat disesuaikan dengan pasar lokal yang berbeda secara independen dari biner bawaan aplikasi Anda. Untuk detailnya, lihat Melokalkan string di manifes UI dan paket aplikasi Anda.
Topik itu juga menunjukkan kepada Anda cara menambahkan komentar ke File Sumber Daya default (.resw). Misalnya, jika Anda mengadopsi suara atau nada informal, pastikan untuk menjelaskannya dalam komentar. Selain itu, untuk meminimalkan pengeluaran, konfirmasikan bahwa hanya string yang perlu diterjemahkan yang disediakan untuk penerjemah.
Atur bahasa default untuk aplikasi Anda dengan tepat di file sumber manifes paket aplikasi Anda ( Package.appxmanifest
file ). Bahasa default menentukan bahasa yang digunakan saat bahasa pilihan pengguna tidak cocok dengan salah satu bahasa yang didukung aplikasi Anda. Tandai semua sumber daya Anda dengan bahasa mereka (bahkan sumber daya dalam bahasa default Anda, misalnya \Assets\en-us\Logo.png
) sehingga sistem dapat mengetahui bahasa mana sumber daya berada dan bagaimana sumber daya digunakan dalam situasi tertentu.
Menyesuaikan gambar Anda dan sumber daya file lainnya untuk bahasa
Idealnya, Anda akan dapat meng-globalisasi gambar Anda—yaitu, menjadikannya independen budaya. Untuk gambar apa pun dan sumber daya file lainnya di mana itu tidak mungkin, buat varian yang berbeda sebanyak yang Anda butuhkan dan masukkan kualifikasi bahasa yang sesuai ke dalam nama file atau folder mereka. Untuk mempelajari lebih lanjut, lihat Menyesuaikan sumber daya Anda untuk bahasa, skala, kontras tinggi, dan kualifikasi lainnya.
Untuk meminimalkan biaya pelokalan, jangan letakkan teks atau materi yang sensitif secara budaya ke dalam gambar untuk memulai. Gambar yang sesuai dalam budaya Anda sendiri mungkin menyinggung atau salah disalahartikan dalam budaya lain. Hindari penggunaan gambar khusus budaya seperti kotak surat, yang tidak umum di seluruh dunia. Hindari simbol agama, hewan, politik, atau gambar khusus gender. Tampilan daging, bagian tubuh, atau gerakan tangan juga bisa menjadi topik sensitif. Jika Anda tidak dapat menghindari semua ini, maka gambar Anda harus dilokalkan dengan cermat. Jika Anda melokalisasi ke bahasa dengan arah bacaan yang berbeda dari anda sendiri, menggunakan gambar dan efek simetris membuatnya lebih mudah untuk mendukung pencerminan.
Hindari juga penggunaan teks dalam gambar, dan ucapan dalam file audio/video.
Penggunaan warna di aplikasi Anda
Berhati-hatilah saat menggunakan warna. Menggunakan kombinasi warna yang terkait dengan bendera nasional atau gerakan politik bisa bermasalah. Pilihan warna mungkin perlu ditinjau oleh para ahli budaya. Ada juga masalah aksesibilitas dengan menggunakan warna. Jika Anda menggunakan warna untuk menyampaikan arti maka Anda juga harus menyampaikan informasi yang sama dengan beberapa cara lain, seperti ukuran, bentuk, atau label.
Pertimbangkan untuk memperhitungkan string Anda ke dalam kalimat
Gunakan string berukuran tepat. String pendek lebih mudah diterjemahkan, dan memungkinkan daur ulang terjemahan (yang menghemat pengeluaran karena string yang sama tidak dikirim ke localizer lebih dari sekali). Selain itu, string yang sangat panjang mungkin tidak didukung oleh alat pelokalan.
Tetapi dalam ketegangan dengan pedoman ini adalah risiko menggunakan kembali string dalam konteks yang berbeda. Bahkan kata-kata sederhana seperti "aktif" dan "nonaktif" mungkin diterjemahkan secara berbeda, tergantung pada konteksnya. Dalam bahasa Inggris, "on" dan "off" dapat digunakan untuk tombol untuk Mode Penerbangan, Bluetooth, dan perangkat. Tetapi dalam bahasa Italia, terjemahan tergantung pada konteks apa yang diaktifkan dan dinonaktifkan. Anda perlu membuat sepasang string untuk setiap konteks. Anda dapat menggunakan kembali string jika kedua konteksnya sama. Misalnya, Anda dapat menggunakan kembali string "Volume" untuk volume efek suara dan volume musik karena keduanya merujuk pada intensitas suara. Anda tidak boleh menggunakan kembali string yang sama saat merujuk ke volume hard disk karena konteks dan maknanya berbeda, dan kata mungkin diterjemahkan secara berbeda.
Selain itu, string seperti "teks" atau "faks" dapat digunakan sebagai kata kerja dan kata benda dalam bahasa Inggris, yang dapat membingungkan proses terjemahan. Sebagai gantinya, buat string terpisah untuk format kata kerja dan kata benda. Saat Anda tidak yakin apakah konteksnya sama, kesalahan di sisi yang aman dan gunakan string yang berbeda.
Singkatnya, faktorkan string Anda menjadi potongan-potongan yang berfungsi dalam semua konteks. Akan ada kasus di mana string harus menjadi seluruh kalimat.
Pertimbangkan string berikut: "Tidak {0} dapat disinkronkan."
Berbagai kata dapat menggantikan {0}, seperti "janji temu", "tugas", atau "dokumen". Meskipun contoh ini berfungsi untuk bahasa Inggris, itu tidak akan berfungsi dalam semua kasus untuk kalimat yang sesuai di, misalnya, Jerman. Perhatikan bahwa dalam kalimat Jerman berikut, beberapa kata dalam string templat ("Der", "Die", "Das") perlu mencocokkan kata yang diparameterkan:
Inggris | Jerman |
---|---|
Janji temu tidak dapat disinkronkan. | Der Termin konnte nicht synchronisiert werden. |
Tugas tidak dapat disinkronkan. | Die Aufgabe konnte nicht synchronisiert werden. |
Dokumen tidak dapat disinkronkan. | Das Dokument konnte nicht synchronisiert werden. |
Sebagai contoh lain, pertimbangkan kalimat "Ingatkan saya dalam {0} hitungan menit" Menggunakan "menit" berfungsi untuk bahasa Inggris, tetapi bahasa lain mungkin menggunakan istilah yang berbeda. Misalnya, bahasa Polandia menggunakan "minuta", "minuty", atau "minut" tergantung pada konteksnya.
Untuk mengatasi masalah ini, lokalkan seluruh kalimat, bukan satu kata. Melakukan ini mungkin tampak seperti pekerjaan ekstra dan solusi yang tidak terlupakan, tetapi ini adalah solusi terbaik karena:
- Pesan yang benar secara tata bahasa akan ditampilkan untuk semua bahasa.
- Penerjemah Anda tidak perlu bertanya tentang string apa yang akan digantikan.
- Anda tidak perlu menerapkan perbaikan kode yang mahal ketika masalah seperti ini muncul setelah aplikasi Anda selesai.
Pertimbangan lain untuk string
Hindari kolekualisme dan metafora dalam string yang Anda buat dalam bahasa default Anda. Bahasa yang khusus untuk grup demografis, seperti budaya dan usia, bisa sulit dipahami atau diterjemahkan karena hanya orang dalam grup demografis yang menggunakan bahasa tersebut. Demikian pula, metafora mungkin masuk akal bagi satu orang tetapi tidak berarti apa-apa bagi orang lain. Misalnya, "bluebird" berarti sesuatu yang spesifik bagi mereka yang merupakan bagian dari budaya ski, tetapi mereka yang bukan bagian dari budaya itu tidak memahami referensi.
Jangan gunakan jargon teknis, singkatan, atau akronim. Bahasa teknis cenderung tidak dipahami oleh audiens non-teknis atau orang-orang dari budaya atau wilayah lain, dan sulit untuk diterjemahkan. Orang-orang tidak menggunakan kata-kata semacam ini dalam percakapan sehari-hari. Bahasa teknis sering muncul dalam pesan kesalahan untuk mengidentifikasi masalah perangkat keras dan perangkat lunak, tetapi Anda harus string menjadi teknis hanya jika pengguna membutuhkan tingkat informasi tersebut, dan dapat bertindak atau menemukan seseorang yang dapat.
Menggunakan suara atau nada informal dalam string Anda adalah pilihan yang valid. Anda dapat menggunakan komentar di File Sumber Daya default (.resw) untuk menunjukkan niat tersebut.
Pseudo-localization
Pseudo-localize aplikasi Anda untuk mengungkap masalah pelokalan apa pun. Pseudo-localization adalah semacam dry-run lokalisasi, atau uji pengungkapan. Anda menghasilkan sekumpulan sumber daya yang tidak benar-benar diterjemahkan; Mereka hanya terlihat seperti itu. String Anda sekitar 40% lebih lama daripada dalam bahasa default, misalnya, dan mereka memiliki pemisah di dalamnya sehingga Anda dapat melihat sekilas apakah mereka telah dipotong di UI.
Pertimbangan Penyebaran
Saat menginstal aplikasi yang berisi data bahasa yang dilokalkan, Anda mungkin menemukan bahwa hanya bahasa default yang tersedia untuk aplikasi meskipun Anda awalnya menyertakan sumber daya untuk beberapa bahasa. Ini karena proses penginstalan dioptimalkan untuk hanya menginstal sumber daya bahasa yang cocok dengan bahasa dan budaya perangkat saat ini. Oleh karena itu, jika perangkat Anda dikonfigurasi untuk en-US, hanya sumber daya bahasa en-AS yang diinstal dengan aplikasi Anda.
Catatan
Tidak dimungkinkan untuk menginstal dukungan bahasa tambahan untuk aplikasi Anda setelah penginstalan awal. Jika Anda mengubah bahasa default setelah menginstal aplikasi, aplikasi hanya akan terus menggunakan sumber daya bahasa asli.
Jika Anda ingin memastikan semua sumber daya bahasa tersedia setelah penginstalan, buat file konfigurasi untuk paket aplikasi yang menentukan bahwa sumber daya tertentu diperlukan selama penginstalan (termasuk sumber daya bahasa). Fitur penginstalan yang dioptimalkan ini diaktifkan secara otomatis saat .appxbundle aplikasi Anda dihasilkan selama pengemasan. Untuk informasi selengkapnya, lihat Memastikan bahwa sumber daya diinstal pada perangkat terlepas dari apakah perangkat memerlukannya.
Secara opsional, untuk memastikan semua sumber daya diinstal (bukan hanya subset), Anda dapat menonaktifkan pembuatan .appxbundle saat mengemas aplikasi. Namun, ini tidak disarankan karena dapat meningkatkan waktu penginstalan aplikasi Anda.
Nonaktifkan pembuatan otomatis .appxbundle dengan mengatur atribut "Hasilkan App Bundle" ke "never":
- Di Visual Studio, klik kanan nama proyek
- Pilih Simpan ->Buat paket aplikasi...
- Dalam dialog Buat Paket Anda, pilih Saya ingin membuat paket untuk diunggah ke Microsoft Store menggunakan nama aplikasi baru lalu klik Berikutnya.
- Dalam dialog Pilih nama aplikasi, pilih/buat nama aplikasi untuk paket Anda.
- Dalam dialog Pilih dan Konfigurasi Paket, atur Hasilkan bundel aplikasi ke Tidak Pernah.
Kesadaran geopolitik
Hindari pelanggaran politik di peta atau ketika merujuk ke wilayah. Peta mungkin mencakup batas regional atau nasional yang kontroversial, dan merupakan sumber pelanggaran politik yang sering terjadi. Berhati-hatilah bahwa UI apa pun yang digunakan untuk memilih negara menyebutnya sebagai "negara/wilayah". Mencantumkan wilayah yang disengketakan dalam daftar berlabel "negara"—seperti dalam formulir alamat—mungkin menyinggung beberapa pengguna.
Peristiwa yang diubah bahasa dan wilayah
Berlangganan peristiwa yang dimunculkan saat pengaturan bahasa dan wilayah sistem berubah. Lakukan ini agar Anda dapat memuat ulang sumber daya, jika sesuai. Untuk detailnya, lihat Memperbarui string sebagai respons terhadap peristiwa perubahan nilai kualifikasi dan Memperbarui gambar sebagai respons terhadap peristiwa perubahan nilai kualifikasi.
Pastikan urutan parameter yang benar saat memformat string
Jangan berasumsi bahwa semua bahasa mengekspresikan parameter dalam urutan yang sama. Misalnya, pertimbangkan format ini.
string.Format("Every {0} {1}", monthName, dayNumber); // For example, "Every April 1".
String format dalam contoh ini berfungsi untuk bahasa Inggris (Amerika Serikat). Tetapi tidak sesuai untuk bahasa Jerman (Jerman), misalnya, di mana hari dan bulan ditampilkan dalam urutan terbalik. Pastikan bahwa penerjemah mengetahui niat dari setiap parameter sehingga mereka dapat membalikkan urutan item format dalam string format (misalnya, "{1}{0}") sesuai untuk bahasa target.
Jangan melokalisasi berlebihan
Hanya mengirimkan bahasa alami ke penerjemah; bukan bahasa pemrograman atau markup. Tag <link>
bukan bahasa alami. Pertimbangkan contoh-contoh ini.
Jangan melokalisasi ini | Lokalkan ini |
---|---|
<tautan>ketentuan penggunaan</tautan> | ketentuan penggunaan |
<menautkan>kebijakan</tautan privasi> | kebijakan privasi |
<link>
Menyertakan tag dalam File Sumber Daya (.resw) Berarti tag tersebut juga kemungkinan akan diterjemahkan. Itu akan merender tag tidak valid. Jika Anda memiliki string panjang yang perlu menyertakan markup untuk mempertahankan konteks dan memastikan pengurutan, maka jelaskan dalam komentar apa yang tidak harus diterjemahkan.
Pilih pendekatan terjemahan yang sesuai
Setelah string dipisahkan menjadi file sumber daya, string dapat diterjemahkan. Waktu ideal untuk menerjemahkan string adalah setelah string dalam proyek Anda diselesaikan, yang biasanya terjadi menjeda akhir proyek. Anda dapat mendekati proses terjemahan dalam sejumlah cara. Ini mungkin tergantung pada volume string yang akan diterjemahkan, jumlah bahasa yang akan diterjemahkan, dan bagaimana terjemahan akan dilakukan (seperti internal versus menyewa vendor eksternal).
Pertimbangkan opsi ini.
- File sumber daya dapat diterjemahkan dengan membukanya langsung dalam proyek. Pendekatan ini berfungsi dengan baik untuk proyek yang memiliki volume kecil string yang perlu diterjemahkan ke dalam dua atau tiga bahasa. Ini bisa cocok untuk skenario di mana pengembang berbicara lebih dari satu bahasa dan bersedia untuk menangani proses terjemahan. Pendekatan ini mendapat manfaat dari cepat, tidak memerlukan alat, dan meminimalkan risiko kesalahan terjemahan. Tapi itu tidak dapat diskalakan. Secara khusus, sumber daya dalam bahasa yang berbeda dapat dengan mudah tidak sinkron, menyebabkan pengalaman pengguna yang buruk dan sakit kepala pemeliharaan.
- File sumber daya string dalam format teks XML atau ResJSON, sehingga dapat diserahkan untuk terjemahan menggunakan editor teks apa pun. File yang diterjemahkan kemudian akan disalin kembali ke dalam proyek. Pendekatan ini membawa risiko penerjemah secara tidak sengaja mengedit tag XML, tetapi memungkinkan pekerjaan terjemahan terjadi di luar proyek Microsoft Visual Studio. Pendekatan ini dapat bekerja dengan baik untuk proyek yang perlu diterjemahkan ke dalam sejumlah kecil bahasa. Format XLIFF adalah format XML yang dirancang khusus untuk digunakan dalam pelokalan, dan harus didukung dengan baik oleh beberapa vendor pelokalan atau alat pelokalan. Anda dapat menggunakan Toolkit Aplikasi Multibahasa untuk menghasilkan file XLIFF dari file sumber daya lain, seperti .resw atau .resjson.
Catatan
Pelokalan mungkin juga diperlukan untuk aset lain, termasuk file gambar dan audio.
Anda juga harus mempertimbangkan hal-hal berikut:
- Alat pelokalan Sejumlah alat pelokalan tersedia untuk mengurai file sumber daya dan hanya memungkinkan string yang dapat diterjemahkan untuk diedit oleh penerjemah. Pendekatan ini mengurangi risiko penerjemah secara tidak sengaja mengedit tag XML. Tetapi memiliki kelemahan memperkenalkan alat dan proses baru ke proses pelokalan. Alat pelokalan baik untuk proyek dengan volume string yang besar tetapi sejumlah kecil bahasa. Untuk mempelajari lebih lanjut, lihat Cara menggunakan Toolkit Aplikasi Multibahasa.
- Vendor pelokalan Pertimbangkan untuk menggunakan vendor pelokalan jika aplikasi Anda berisi string ekstensif yang perlu diterjemahkan ke dalam sejumlah besar bahasa. Vendor pelokalan dapat memberikan saran tentang alat dan proses, serta menerjemahkan file sumber daya Anda. Ini adalah solusi yang ideal, tetapi juga merupakan opsi yang paling mahal, dan dapat meningkatkan waktu penyelesaian untuk konten anda yang diterjemahkan.
Menjaga kunci akses dan label tetap konsisten
Ini adalah tantangan untuk "menyinkronkan" kunci akses yang digunakan dalam aksesibilitas dengan tampilan kunci akses yang dilokalkan, karena dua sumber daya string dikategorikan dalam dua bagian terpisah. Pastikan untuk memberikan komentar untuk string label seperti: Make sure that the emphasized shortcut key is synchronized with the access key.
Mendukung furigana untuk string Jepang yang dapat diurutkan
Karakter kanji Jepang memiliki properti memiliki lebih dari satu bacaan (pengucapan) tergantung pada kata di mana mereka digunakan. Ini menyebabkan masalah ketika Anda mencoba mengurutkan objek bernama Jepang, seperti nama aplikasi, file, lagu, dan sebagainya. Kanji Jepang memiliki, di masa lalu, biasanya diurutkan dalam urutan yang dapat dimengerti mesin yang disebut XJIS. Sayangnya, karena urutan pengurutan ini tidak fonetik, itu tidak terlalu berguna bagi manusia.
Furigana mengatasi masalah ini dengan memungkinkan pengguna atau pembuat menentukan fonetik untuk karakter yang mereka gunakan. Jika Anda menggunakan prosedur berikut untuk menambahkan furigana ke nama aplikasi, Anda dapat memastikan bahwa itu diurutkan di lokasi yang tepat di daftar aplikasi. Jika nama aplikasi Anda berisi karakter kanji dan furigana tidak disediakan saat bahasa UI pengguna atau urutan pengurutan diatur ke bahasa Jepang, Windows melakukan upaya terbaik untuk menghasilkan pengucapan yang sesuai. Namun, ada kemungkinan untuk nama aplikasi yang berisi bacaan langka atau unik untuk diurutkan di bawah pembacaan yang lebih umum. Oleh karena itu, praktik terbaik untuk aplikasi Jepang (terutama yang berisi karakter kanji dalam namanya) adalah menyediakan versi furigana dari nama aplikasi mereka sebagai bagian dari proses pelokalan Jepang.
Tambahkan "ms-resource:Appname" sebagai Nama Tampilan Paket dan Nama Tampilan Aplikasi.
Buat folder ja-JP di bawah string, dan tambahkan dua file sumber daya sebagai berikut:
strings\ en-us\ ja-jp\ Resources.altform-msft-phonetic.resw Resources.resw
Di Resources.resw untuk ja-JP umum: Tambahkan sumber daya string untuk Appname "希蒼"
Di Resources.altform-msft-phonetic.resw untuk sumber daya furigana Jepang: Tambahkan nilai furigana untuk AppName "のあ"
Pengguna dapat mencari nama aplikasi "希蒼" menggunakan nilai furigana "の あ" (noa), dan fonetik value (menggunakan fungsi GetPhonetic dari Input Method Editor (IME)) "まれあお" (mare-ao).
Pengurutan mengikuti format Panel Kontrol Regional:
- Di bawah lokal pengguna Jepang,
- Jika furigana diaktifkan, maka "希蒼" diurutkan di bawah "の".
- Jika furigana hilang, maka "希蒼" diurutkan di bawah "ま".
- Di bawah lokal pengguna non-Jepang,
- Jika furigana diaktifkan, maka "希蒼" diurutkan di bawah "の".
- Jika furigana hilang, maka "希蒼" diurutkan di bawah "漢字".
Topik terkait
- Panduan untuk globalisasi
- Melokalisasi string di manifes paket UI dan aplikasi Anda
- Menyesuaikan sumber daya Anda untuk bahasa, skala, kontras tinggi, dan kualifikasi lainnya
- Menyesuaikan tata letak dan font, dan mendukung RTL
- Memperbarui gambar sebagai respons terhadap peristiwa perubahan nilai kualifikasi
Sampel
Windows developer