Membuat aplikasi Anda dapat dilokalkan

Aplikasi yang dilokalkan adalah aplikasi yang dapat dilokalkan untuk pasar, bahasa, atau wilayah lain tanpa mengungkap cacat fungsional apa pun 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 sendiri 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 mengodekan 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 UI dan manifes 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 bahasa apa pun 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 tersebut 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 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 memasukkan 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 bahasa 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 pakar 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 menjadi kalimat

Gunakan string berukuran tepat. String pendek lebih mudah diterjemahkan, dan mengaktifkan 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 "on" dan "off" mungkin diterjemahkan secara berbeda, tergantung pada konteksnya. Dalam bahasa Inggris, "aktifkan" dan "nonaktif" dapat digunakan untuk pengalih 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 tersebut 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, err di sisi aman dan gunakan string yang berbeda.

Singkatnya, faktorkan string Anda menjadi beberapa bagian 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 parameter:

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 koalisisme dan metafora dalam string yang Anda tulis dalam bahasa default Anda. Bahasa yang khusus untuk grup demografi, 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 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 melakukannya.

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.

Pelokalan semu

Pseudo-lokalkan aplikasi Anda untuk mengungkap masalah pelokalan apa pun. Pseudo-localization adalah semacam pelokalan dry-run, atau tes pengungkapan. Anda menghasilkan satu set sumber daya yang tidak benar-benar diterjemahkan; Mereka hanya terlihat seperti itu. String Anda sekitar 40% lebih panjang 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-US 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 terus hanya 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 "Generate App Bundle" ke "never":

  1. Di Visual Studio, klik kanan nama proyek
  2. Pilih Simpan ->Buat paket aplikasi...
  3. Dalam dialog Buat Paket Anda , pilih Saya ingin membuat paket untuk diunggah ke Microsoft Store menggunakan nama aplikasi baru lalu klik Berikutnya.
  4. Dalam dialog Pilih nama aplikasi , pilih/buat nama aplikasi untuk paket Anda.
  5. 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-batas regional atau nasional yang kontroversial, dan mereka sering menjadi sumber pelanggaran politik. Berhati-hatilah agar 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 yang memenuhi syarat dan Memperbarui gambar sebagai respons terhadap peristiwa perubahan nilai yang memenuhi syarat.

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 masing-masing parameter sehingga mereka dapat membalikkan urutan item format dalam string format (misalnya, "{1}{0}") yang sesuai untuk bahasa target.

Jangan melokalisasi berlebihan

Hanya mengirimkan bahasa alami kepada penerjemah; bukan bahasa pemrograman atau markup. Tag <link> bukan bahasa alami. Pertimbangkan contoh-contoh ini.

Jangan lokalkan ini Lokalkan ini
<tautan>ketentuan penggunaan</tautan> ketentuan penggunaan
<tautkan>kebijakan</tautan privasi> kebijakan privasi

<link> Menyertakan tag dalam File Sumber Daya (.resw) berarti tag tersebut juga kemungkinan akan diterjemahkan. Itu akan membuat tag tidak valid. Jika Anda memiliki string panjang yang perlu menyertakan markup untuk mempertahankan konteks dan memastikan pengurutan, maka perjelas 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 bekerja 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 menangani proses terjemahan. Pendekatan ini mendapat manfaat dari menjadi cepat, tidak memerlukan alat, dan meminimalkan risiko kesalahan terjemahan. Tetapi 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 berlangsung 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 gambar dan file 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 penyortiran 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 prosedur tersebut 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 pembacaan langka atau unik untuk diurutkan di bawah bacaan yang lebih umum sebagai gantinya. 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.

  1. Tambahkan "ms-resource:Appname" sebagai Nama Tampilan Paket dan Nama Tampilan Aplikasi.

  2. 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
    
  3. Di Resources.resw untuk ja-JP umum: Tambahkan sumber daya string untuk Appname "希蒼"

  4. 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 nilai (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 "漢字".

Sampel