Bagikan melalui


Memahami bahasa profil pengguna dan bahasa manifes aplikasi

Pengguna Windows dapat menggunakan Pengaturan> Time & Language>Region &language untuk mengonfigurasi daftar bahasa tampilan pilihan yang diurutkan, atau hanya satu bahasa tampilan pilihan. Bahasa dapat memiliki varian regional. Misalnya, Anda dapat memilih Bahasa Spanyol seperti yang diucapkan di Spanyol, Spanyol seperti yang diucapkan di Meksiko, Spanyol seperti yang diucapkan dalam Amerika Serikat, antara lain.

Juga dalam Pengaturan> Time & Language>Region &language, tetapi terpisah dari bahasa, pengguna dapat menentukan lokasi mereka (dikenal sebagai wilayah) di dunia. Perhatikan bahwa pengaturan bahasa tampilan (dan varian regional) bukan penentu pengaturan wilayah, dan sebaliknya. Misalnya, pengguna mungkin saat ini tinggal di Prancis tetapi memilih bahasa tampilan Windows pilihan Español (México).

Untuk aplikasi Windows, bahasa direpresentasikan sebagai tag bahasa BCP-47. Misalnya, tag bahasa BCP-47 "en-US" sesuai dengan bahasa Inggris (Amerika Serikat) dalam Pengaturan. API Runtime Windows yang sesuai menerima dan mengembalikan representasi string tag bahasa BCP-47.

Lihat juga registri subtag bahasa IANA.

Tiga bagian berikut menentukan istilah "daftar bahasa profil pengguna", "daftar bahasa manifes aplikasi", dan "daftar bahasa runtime aplikasi". Kita akan menggunakan istilah-istilah ini dalam topik ini dan topik lain di area fitur ini, jadi penting untuk mengetahui apa artinya.

Daftar bahasa profil pengguna

Daftar bahasa profil pengguna adalah nama daftar yang dikonfigurasi oleh pengguna di Pengaturan> Time & Language>Region &language>Languages. Dalam kode, Anda dapat menggunakan properti GlobalizationPreferences.Languages untuk mengakses daftar bahasa profil pengguna sebagai daftar string baca-saja, di mana setiap string adalah satu tag bahasa BCP-47 seperti "en-US" atau "ja-JP".

    IReadOnlyList<string> userLanguages = Windows.System.UserProfile.GlobalizationPreferences.Languages;

Daftar bahasa manifes aplikasi

Daftar bahasa manifes aplikasi adalah daftar bahasa yang aplikasi Anda deklarasikan (atau akan mendeklarasikan) dukungan. Daftar ini berkembang saat Anda mengembangkan aplikasi Anda melalui siklus hidup pengembangan hingga pelokalan.

Daftar ditentukan pada waktu kompilasi, tetapi Anda memiliki dua opsi untuk mengontrol dengan tepat bagaimana hal itu terjadi. Salah satu opsinya adalah membiarkan Visual Studio menentukan daftar dari file di proyek Anda. Untuk melakukannya, pertama-tama atur bahasa Default aplikasi Anda pada tab Aplikasi di file sumber manifes paket aplikasi Anda (Package.appxmanifest). Kemudian, konfirmasikan bahwa file yang sama berisi konfigurasi ini (yang dilakukannya secara default).

  <Resources>
    <Resource Language="x-generate" />
  </Resources>

Setiap kali Visual Studio menghasilkan file manifes paket aplikasi bawaan Anda (AppxManifest.xml), Visual Studio memperluas elemen tunggal Resource tersebut dalam file sumber ke dalam penyatuan semua kualifikasi bahasa yang ditemukan dalam proyek Anda (lihat Menyesuaikan sumber daya Anda untuk bahasa, skala, kontras tinggi, dan kualifikasi lainnya). Misalnya, jika Anda telah mulai melokalisasi dan Anda memiliki sumber daya string, gambar, dan/atau file yang nama folder atau filenya mencakup "en-US", "ja-JP", dan "fr-FR", maka file bawaan AppxManifest.xml Anda akan berisi yang berikut (entri pertama dalam daftar adalah bahasa default yang Anda tetapkan).

  <Resources>
    <Resource Language="EN-US" />
    <Resource Language="JA-JP" />
    <Resource Language="FR-FR" />
  </Resources>

Opsi lainnya adalah mengganti elemen "x-generate" <Resource> tunggal itu dalam file sumber manifes paket aplikasi Anda (Package.appxmanifest) dengan daftar <Resource> elemen yang diperluas (berhati-hatilah untuk mencantumkan bahasa default terlebih dahulu). Opsi tersebut melibatkan lebih banyak pekerjaan pemeliharaan untuk Anda, tetapi mungkin merupakan opsi yang sesuai untuk Anda jika Anda menggunakan sistem build kustom.

Untuk memulainya, daftar bahasa manifes aplikasi Anda hanya akan berisi satu bahasa. Mungkin itu en-US. Tetapi akhirnya—saat Anda mengonfigurasi manifes secara manual, atau saat Anda menambahkan sumber daya yang diterjemahkan ke proyek Anda—daftar tersebut akan bertambah.

Saat aplikasi Anda berada di Microsoft Store, bahasa dalam daftar bahasa manifes aplikasi adalah bahasa yang ditampilkan kepada pelanggan. Untuk daftar tag bahasa BCP-47 yang didukung secara khusus oleh Microsoft Store, lihat Bahasa yang didukung.

Dalam kode Anda dapat menggunakan properti ApplicationLanguages.ManifestLanguages untuk mengakses daftar bahasa manifes aplikasi sebagai daftar string baca-saja, di mana setiap string adalah satu tag bahasa BCP-47.

    IReadOnlyList<string> userLanguages = Windows.Globalization.ApplicationLanguages.ManifestLanguages;

Daftar bahasa runtime aplikasi

Daftar bahasa ketiga yang menarik adalah persimpangan antara dua daftar yang baru saja kami jelaskan. Saat runtime, daftar bahasa yang telah dideklarasikan oleh aplikasi Anda (daftar bahasa manifes aplikasi) dibandingkan dengan daftar bahasa yang penggunanya telah mendeklarasikan preferensi (daftar bahasa profil pengguna). Daftar bahasa runtime aplikasi diatur ke persimpangan ini (jika persimpangan tidak kosong), atau hanya untuk bahasa default aplikasi (jika persimpangan kosong).

Lebih khusus lagi, daftar bahasa runtime aplikasi terdiri dari item-item ini.

  1. (Opsional) Penimpaan Bahasa Utama. PrimaryLanguageOverride adalah pengaturan penggantian sederhana untuk aplikasi yang memberi pengguna pilihan bahasa independen mereka sendiri, atau aplikasi yang memiliki alasan kuat untuk mengambil alih pilihan bahasa default. Untuk mempelajari lebih lanjut , lihat Sumber daya aplikasi dan sampel pelokalan.
  2. Bahasa pengguna yang didukung oleh aplikasi. Ini adalah daftar bahasa profil pengguna yang difilter menurut daftar bahasa manifes aplikasi. Memfilter bahasa pengguna oleh yang didukung oleh aplikasi mempertahankan konsistensi di antara kit pengembangan perangkat lunak (SDK), pustaka kelas, paket kerangka kerja dependen, dan aplikasi.
  3. Jika 1 dan 2 kosong, maka bahasa default atau pertama yang didukung oleh aplikasi. Jika daftar bahasa profil pengguna tidak berisi bahasa apa pun yang didukung aplikasi, bahasa runtime aplikasi adalah bahasa pertama yang didukung oleh aplikasi.

Dalam kode Anda dapat menggunakan properti ResourceContext.QualifierValues untuk mengakses daftar bahasa runtime aplikasi dalam bentuk string yang berisi daftar tag bahasa yang dibatasi titik koma dari tag bahasa BCP-47.

    string runtimeLanguages = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().QualifierValues["Language"];

Anda juga dapat mengaksesnya sebagai daftar string baca-saja, masing-masing berisi satu tag bahasa BCP-47. Anda dapat menggunakan properti ResourceContext.Languages atau properti ApplicationLanguages.Languages untuk melakukan ini.

    IReadOnlyList<string> runtimeLanguages = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().Languages;

    runtimeLanguages = Windows.Globalization.ApplicationLanguages.Languages;

Daftar bahasa runtime aplikasi menentukan sumber daya yang dimuat Windows untuk aplikasi Anda dan juga bahasa yang digunakan untuk memformat tanggal, waktu, angka, dan komponen lainnya. Lihat Globalisasi format tanggal/waktu/angka Anda.

Catatan Jika bahasa profil pengguna dan bahasa manifes aplikasi adalah varian regional satu sama lain, maka varian regional pengguna digunakan sebagai bahasa runtime aplikasi. Misalnya, jika pengguna lebih suka en-GB dan aplikasi mendukung en-US, bahasa runtime aplikasi adalah en-GB. Ini memastikan bahwa tanggal, waktu, dan angka diformat lebih dekat dengan harapan pengguna (en-GB), tetapi sumber daya yang dilokalkan masih dimuat (karena pencocokan bahasa) dalam bahasa yang didukung aplikasi (en-US).

Memenuhi syarat file sumber daya dengan bahasa mereka

Beri nama file sumber daya Anda, atau foldernya, dengan kualifikasi sumber daya bahasa. Untuk mempelajari selengkapnya tentang kualifikasi sumber daya, lihat Menyesuaikan sumber daya Anda untuk bahasa, skala, kontras tinggi, dan kualifikasi lainnya. File sumber daya dapat berupa gambar (atau aset lain), atau dapat menjadi file kontainer sumber daya, seperti .resw yang berisi string teks.

Catatan Bahkan sumber daya dalam bahasa default aplikasi Anda harus menentukan kualifikasi bahasa. Misalnya, jika bahasa default aplikasi Anda adalah bahasa Inggris (Amerika Serikat), maka memenuhi syarat aset Anda sebagai \Assets\Images\en-US\logo.png.

  • Windows melakukan pencocokan kompleks, termasuk di seluruh varian regional seperti en-US dan en-GB. Jadi sertakan sub-tag wilayah yang sesuai. Lihat Bagaimana Sistem Manajemen Sumber Daya cocok dengan tag bahasa.
  • Tentukan sub-tag skrip bahasa di kualifikasi ketika tidak ada nilai Suppress-Script yang ditentukan untuk bahasa tersebut. Misalnya, alih-alih zh-CN atau zh-TW, gunakan zh-Hant, zh-Hant-TW, atau zh-Hans (untuk detail selengkapnya, lihat registri subtag bahasa IANA).
  • Untuk bahasa yang memiliki dialek standar tunggal, tidak perlu menyertakan kualifikasi wilayah. Misalnya, gunakan ja alih-alih ja-JP.
  • Beberapa alat dan komponen lain seperti penerjemah mesin mungkin menemukan tag bahasa tertentu, seperti info dialek regional, berguna dalam memahami data.

Tidak semua sumber daya perlu dilokalkan

Pelokalan mungkin tidak diperlukan untuk semua sumber daya.

  • Minimal, pastikan semua sumber daya ada dalam bahasa default.
  • Subset beberapa sumber daya mungkin cukup untuk bahasa yang terkait erat (pelokalan parsial). Misalnya, Anda mungkin tidak melokalisasi semua UI aplikasi anda ke Catalan jika aplikasi Anda memiliki sekumpulan sumber daya lengkap dalam bahasa Spanyol. Untuk pengguna yang berbicara bahasa Katalan dan bahasa Spanyol, sumber daya yang tidak tersedia di Catalan muncul dalam bahasa Spanyol.
  • Beberapa sumber daya mungkin memerlukan pengecualian untuk bahasa tertentu, sementara sebagian besar sumber daya lain memetakan ke sumber daya umum. Dalam hal ini, tandai sumber daya yang dimaksudkan untuk digunakan untuk semua bahasa dengan tag bahasa yang tidak ditentukan 'und'. Windows menginterpretasikan tag bahasa 'und' sebagai kartubebas (mirip dengan '*') karena cocok dengan bahasa aplikasi teratas setelah kecocokan spesifik lainnya. Misalnya, jika beberapa sumber daya berbeda untuk bahasa Finlandia, tetapi sumber daya lainnya sama untuk semua bahasa, sumber daya Finlandia harus ditandai dengan tag bahasa Finlandia, dan sisanya harus ditandai dengan 'und'.
  • Untuk sumber daya yang didasarkan pada skrip bahasa, seperti font atau tinggi teks, gunakan tag bahasa yang tidak ditentukan dengan skrip tertentu: 'und-script<>'. Misalnya, untuk font Latin, gunakan und-Latn\\fonts.css dan untuk font Sirilik, gunakan und-Cryl\\fonts.css.

Mengatur header permintaan HTTP Accept-Language

Pertimbangkan apakah layanan web yang Anda sebut memiliki tingkat pelokalan yang sama seperti aplikasi Anda. Permintaan HTTP yang dibuat dari aplikasi Windows dalam permintaan web umum, dan XMLHttpRequest (XHR), gunakan header permintaan HTTP Accept-Language standar. Secara default, header HTTP diatur ke daftar bahasa profil pengguna. Setiap bahasa dalam daftar diperluas lebih lanjut untuk menyertakan netral bahasa dan pembobotan (q). Misalnya, daftar bahasa pengguna fr-FR dan en-US menghasilkan header permintaan HTTP Accept-Language dari fr-FR, fr, en-US, en ("fr-FR,fr; q=0.8,en-US; q=0.5,en; q=0.3"). Tetapi jika aplikasi cuaca Anda (misalnya) menampilkan UI dalam bahasa Prancis (Prancis), tetapi bahasa teratas pengguna dalam daftar preferensi mereka adalah Bahasa Jerman, maka Anda harus secara eksplisit meminta bahasa Prancis (Prancis) dari layanan agar tetap konsisten dalam aplikasi Anda.

API di namespace Windows.Globalization

Biasanya, API di namespace layanan Windows.Globalization menggunakan daftar bahasa runtime aplikasi untuk menentukan bahasa. Jika tidak ada bahasa yang memiliki format yang cocok, maka lokal pengguna digunakan. Ini adalah lokal yang sama yang digunakan untuk jam sistem. Lokal pengguna tersedia dari Pengaturan> Time &Language>Region &language>Tanggal, waktu, & pengaturan>regional Wilayah: Ubah format tanggal, waktu, atau angka. API Windows.Globalization juga memiliki penimpaan untuk menentukan daftar bahasa yang akan digunakan, bukan daftar bahasa runtime aplikasi.

Dengan menggunakan kelas Bahasa, Anda dapat memeriksa detail tentang bahasa tertentu, seperti skrip bahasa, nama tampilan, dan nama asli.

Menggunakan wilayah geografis jika sesuai

Di Pengaturan> Time & Wilayah Bahasa>& Negara atau wilayah bahasa>, pengguna dapat menentukan lokasi mereka di dunia. Anda dapat menggunakan pengaturan ini, alih-alih bahasa, untuk memilih konten apa yang akan ditampilkan kepada pengguna. Misalnya, aplikasi berita mungkin default untuk menampilkan konten dari wilayah ini.

Dalam kode, Anda dapat mengakses pengaturan ini dengan menggunakan properti GlobalizationPreferences.HomeGeographicRegion.

Dengan menggunakan kelas GeographicRegion, Anda dapat memeriksa detail tentang wilayah tertentu, seperti nama tampilan, nama asli, dan mata uang yang digunakan.

Contoh

Tabel berikut berisi contoh apa yang akan dilihat pengguna di UI aplikasi Anda di bawah berbagai pengaturan bahasa dan wilayah.

Daftar bahasa manifes aplikasi Daftar bahasa profil pengguna Pengabaian bahasa utama aplikasi (opsional) Daftar bahasa runtime aplikasi Apa yang dilihat pengguna di aplikasi
Inggris (GB) (default); Jerman (Jerman) Inggris (GB) tidak ada Inggris (GB) UI: Inggris (GB)
Tanggal/Waktu/Angka: Bahasa Inggris (GB)
Jerman (Jerman) (default); Prancis (Prancis); Italia (Italia) Prancis (Austria) tidak ada Prancis (Austria) UI: Prancis (Prancis) (fallback dari Prancis (Austria))
Tanggal/Waktu/Angka: Prancis (Austria)
Inggris (AS) (default); Prancis (Prancis); Inggris (GB) Inggris (Kanada); Prancis (Kanada) tidak ada Inggris (Kanada); Prancis (Kanada) UI: Inggris (AS) (fallback dari Bahasa Inggris (Kanada))
Tanggal/Waktu/Angka: Bahasa Inggris (Kanada)
Spanyol (Spanyol) (default); Spanyol (Meksiko); Spanyol (Amerika Latin); Portugis (Brasil) Inggris (US) tidak ada Spanyol (Spanyol) UI: Spanyol (Spanyol) (menggunakan default karena tidak ada fallback yang tersedia untuk bahasa Inggris)
Tanggal/Waktu/Angka Spanyol (Spanyol)
Katala (default); Spanyol (Spanyol); Prancis (Prancis) Catalan; Prancis (Prancis) tidak ada Catalan; Prancis (Prancis) UI: Sebagian besar catalan dan beberapa Prancis (Prancis) karena tidak semua string berada di Catalan
Tanggal/Waktu/Angka: Katala
Inggris (GB) (default); Prancis (Prancis); Jerman (Jerman) Jerman (Jerman); Inggris (GB) Inggris (GB) (dipilih oleh pengguna di UI aplikasi) Inggris (GB); Jerman (Jerman) UI: Inggris (GB) (penggantian bahasa)
Dates/Times/Numbers English (GB)

Catatan

Untuk daftar kode negara/wilayah standar yang digunakan oleh Microsoft, lihat Daftar Negara/Wilayah Resmi.

API penting

Sampel