lightbulb_outline Help shape the future of the Google Play Console, Android Studio, and Firebase. Start survey

Bahasa dan Lokal

Mulai Android 7.0 (API Level 24), Android memberikan dukungan yang disempurnakan untuk pengguna multibahasa, yang memungkinkan mereka memilih beberapa lokal dalam setelan. Android menyediakan kemampuan ini dengan memperbanyak jumlah lokal yang didukung dan mengubah cara sistem mengatasi masalah sumber daya.

Dokumen ini dimulai dengan menjelaskan strategi resolusi sumber daya dalam versi Android yang lebih rendah daripada 7.0 (API level 24). Berikutnya, dokumen menjelaskan strategi resolusi sumber daya yang telah disempurnakan dalam Android 7.0. Terakhir, akan dijelaskan cara memanfaatkan jumlah lokal yang telah diperbanyak untuk mendukung lebih banyak pengguna multibahasa.

Tantangan dalam Mengatasi Masalah Sumber Daya Bahasa

Sebelum Android 7.0, Android tidak selalu berhasil mencocokkan lokal aplikasi dan lokal sistem.

Misalnya, anggaplah Anda menghadapi situasi berikut:

  • Bahasa default aplikasi Anda adalah en_US (US English), dan aplikasi juga berisi string bahasa Spanyol yang telah dilokalkan di file sumber daya es_ES.
  • Perangkat telah disetel ke es_MX
  • Bila kode Java Anda merujuk ke string, sistem akan memuat string dari file sumber daya default (en_US), sekalipun aplikasi memiliki sumber daya bahasa Spanyol yang telah dilokalkan pada es_ES. Hal ini karena bila sistem tidak bisa menemukan hasil yang persis, sistem akan terus mencari sumber daya dengan menghilangkan kode negara dari lokal tersebut. Akhirnya, jika tidak ada hasil yang ditemukan, sistem akan mengembalikan ke default, yakni en_US.

    Sistem juga akan default ke en_US jika pengguna memilih bahasa yang sama sekali tidak didukung oleh aplikasi, seperti bahasa Prancis. Misalnya:

    Tabel 1. Resolusi sumber daya tanpa lokal yang persis sama.

    Setelan Pengguna Sumber Daya Aplikasi Resolusi Sumber Daya
    fr_CH default (en)
    de_DE
    es_ES
    fr_FR
    it_IT
    Coba fr_CH => Gagal
    Coba fr => Gagal
    Gunakan default (en)

    Dalam contoh ini, sistem menampilkan string bahasa Inggris tanpa mengetahui apakah pengguna memahami bahasa Inggris. Perilaku ini sudah sangat umum sekarang.

    Peningkatan pada Strategi Resolusi Sumber Daya

    Android 7.0 (API Level 24) menghadirkan resolusi sumber daya yang lebih andal, dan secara otomatis menemukan fallback yang lebih baik. Akan tetapi, untuk mempercepat resolusi dan meningkatkan kemudahan pemeliharaan, Anda harus menyimpan sumber daya dalam dialek induk yang paling umum. Misalnya, jika sebelumnya Anda telah menyimpan sumber daya bahasa Spanyol di direktori es-US, pindahkan ke direktori es-419, yang berisi bahasa Spanyol Amerika Latin. Demikian pula, jika Anda memiliki string sumber daya dalam folder bernama en-GB, ganti nama folder itu menjadi en-001 (bahasa Inggris internasional), karena induk yang paling umum untuk string en-GB adalah en-001. Contoh berikut menjelaskan mengapa praktik-praktik ini meningkatkan kinerja dan keandalan resolusi sumber daya.

    Contoh resolusi sumber daya

    Dengan versi Android lebih besar dari 7.0, kasus yang diuraikan dalam Tabel 1 dipulihkan secara berbeda:

    Tabel 2. Strategi resolusi yang ditingkatkan bila tidak ada lokal yang sama persis.

    Setelan Pengguna Sumber Daya Aplikasi Resolusi Sumber Daya
    1. fr_CH
    default (en)
    de_DE
    es_ES
    fr_FR
    it_IT
    Coba fr_CH => Gagal
    Coba fr => Gagal
    Coba anak dari fr => fr_FR
    Gunakan fr_FR

    Sekarang pengguna mendapatkan sumber daya bahasa Prancis sebagai ganti bahasa Inggris. Contoh ini juga menunjukkan mengapa Anda harus menyimpan pengaturan bahasa Prancis di fr dan bukan fr_FR untuk Android 7.0 atau yang lebih tinggi. Di sini tindakan yang harus diambil adalah mencocokkan dialek induk terdekat, membuat resolusi lebih cepat dan lebih terprediksi.

    Selain logika resolusi yang diperbaiki ini, Android sekarang menawarkan lebih banyak pilihan bahasa untuk pengguna. Mari kita coba lagi contoh di atas dengan menetapkan bahasa Italia sebagai bahasa pengguna tambahan, tetapi tanpa dukungan aplikasi untuk bahasa Prancis.

    Tabel 3. Resolusi sumber daya bila aplikasi hanya mencocokkan setelan lokal yang disukai kedua oleh pengguna.

    Setelan Pengguna Sumber Daya Aplikasi Resolusi Sumber Daya
    1. fr_CH
    2. it_CH
    default (en)
    de_DE
    es_ES
    it_IT
    Coba fr_CH => Gagal
    Coba fr => Gagal
    Coba anak dari fr => Gagal
    Coba it_CH => Gagal
    Coba it => Gagal
    Coba anak dari it => it_IT
    Gunakan it_IT

    Pengguna tetap mendapatkan bahasa yang mereka pahami, meskipun aplikasi tidak mendukung bahasa Prancis.

    Mendesain Aplikasi Anda untuk Mendukung Lokal Tambahan

    LocaleList API

    Dimulai dengan Android 7.0 (API level 24), Android mengekspos LocaleList.getDefault() API yang memungkinkan aplikasi secara langsung meng-kueri daftar bahasa yang telah ditetapkan oleh pengguna. API ini memungkinkan Anda membuat perilaku aplikasi yang lebih canggih dan tampilan materi yang lebih optimal. Misalnya, Telusur bisa menampilkan hasil dalam beberapa bahasa berdasarkan setelan pengguna. Aplikasi browser bisa menghindari penawaran menerjemahkan laman dalam bahasa yang sudah diketahui pengguna, dan aplikasi keyboard bisa mengaktifkan otomatis semua layout yang sesuai.

    Formatter

    Hingga Android 6.0 (API level 23), Android hanya mendukung satu atau dua lokal untuk banyak bahasa umum (en, es, ar, fr, ru). Karena hanya ada beberapa varian dari setiap bahasa, aplikasi bisa menghindar dengan menyimpan beberapa nomor dan tanggal sebagai string hard-code dalam file sumber daya. Akan tetapi, dengan perluasan set lokal yang didukung Android, maka akan ada perbedaan format yang signifikan untuk tanggal, waktu, mata uang, dan informasi serupa bahkan dalam lokal tunggal. Menjadikan format Anda sebagai hard-code bisa menghasilkan pengalaman yang membingungkan bagi pengguna akhir. Karena itu, saat mengembangkan untuk Android 7.0 atau versi yang lebih tinggi, pastikan menggunakan formatter sebagai ganti menjadikan string angka dan tanggal sebagai hard-code.

    Misalnya, Android 7.0 dan yang lebih tinggi menyertakan dukungan untuk 27 bahasa Arab lokal. Bahasa lokal ini bisa berbagi hampir semua sumber daya, namun sebagian lebih memilih digit ASCII, sementara yang lain memilih digit asli. Misalnya, bila Anda ingin membuat kalimat dengan variabel digit, seperti "Pilih PIN 4 digit", gunakan formatter seperti yang ditampilkan di bawah ini:

     format(locale, "Choose a %d-digit PIN", 4)