Bagaimana kita bisa mendapatkan bahasa saat ini dipilih di perangkat Android?
android
localization
Pinki
sumber
sumber
Jawaban:
Jika Anda ingin mendapatkan bahasa yang dipilih pada perangkat Anda, ini mungkin membantu Anda:
sumber
Locale.getDefault().getLanguage();
untuk mendapatkan kode bahasa yang biasa (mis. "De", "en").Locale.setDefault("ru")
, dan bahasa dalam pengaturan sistem diatur ke Bahasa Inggris, maka metodeLocale.getDefault().getLanguage()
akan mengembalikan "ru" , tetapi tidak "en" . Apakah ada metode lain untuk mendapatkan lokal / bahasa SISTEM nyata? Saya menemukan solusi tidak didokumentasikan di sini , tetapi apakah ada solusi yang lebih elegan?Locale.getDefault().toString()
yang memberikan string yang sepenuhnya mengidentifikasi lokal, misalnya "en_US".Saya telah memeriksa metode Lokal di perangkat Android 4.1.2 saya, dan hasilnya:
sumber
Locale.getDefault().getDisplayLanguage()
yang kembali"English"
Apa yang berhasil untuk saya adalah:
Resources.getSystem()
mengembalikan objek Sumber Daya global bersama yang menyediakan akses ke hanya sumber daya sistem (tanpa sumber daya aplikasi), dan tidak dikonfigurasikan untuk layar saat ini (tidak dapat menggunakan unit dimensi, tidak berubah berdasarkan orientasi, dll.).Karena
getConfiguration.locale
sekarang telah ditinggalkan, cara yang disukai untuk mendapatkan lokal utama di Android Nougat adalah:Untuk menjamin kompatibilitas dengan versi Android sebelumnya, solusi yang mungkin adalah pemeriksaan sederhana:
Memperbarui
Dimulai dengan pustaka dukungan,
26.1.0
Anda tidak perlu memeriksa versi Android karena menawarkan metode yang nyaman kompatibel dengan mundurgetLocales()
.Cukup telepon:
sumber
ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration())
getLocales
adalah cara untuk pergi. Saya telah memperbarui jawaban saya.Anda dapat 'mengekstrak' bahasa dari lokal saat ini. Anda dapat mengekstrak lokal melalui Java API standar, atau dengan menggunakan Android Context. Misalnya, dua baris di bawah ini setara:
sumber
Locale.setDefault()
dengan beberapa lokal lain sebelumnya dan Anda mendapatkan hasil yang berbeda.Untuk menghemat waktu dan / atau kebingungan yang lain, saya ingin membagikan bahwa saya telah mencoba dua alternatif yang diusulkan oleh Johan Pelgrim di atas dan pada perangkat saya, keduanya setara - terlepas dari apakah lokasi default diubah atau tidak.
Jadi pengaturan default perangkat saya adalah Bahasa Inggris (United Kindom) dan dalam kondisi ini seperti yang diharapkan kedua Strings dalam jawaban Johan memberikan hasil yang sama. Jika saya kemudian mengubah lokal di pengaturan telepon (katakan ke italiano (Italia)) dan menjalankan kembali maka kedua Strings dalam jawaban Johan memberikan lokal sebagai italiano (Italia).
Karena itu saya percaya posting asli Johan benar dan komentar gregm salah.
sumber
Anda bisa menggunakan ini
ketika "xx" adalah kode bahasa seperti "en", "fr", "sp", "ar" .... dan seterusnya
sumber
Seperti yang dijelaskan dalam referensi Lokal cara terbaik untuk mendapatkan bahasa adalah:
metode ini mengembalikan string dengan id bahasa sesuai dengan standar ISO 639-1
sumber
jika level API 24 atau di atas, gunakan yang
LocaleList.getDefault().get(0).getLanguage()
lain gunakanLocale.getDefault.getLanguage()
referensi: https://developer.android.com/guide/topics/resources/multilingual-support
sumber
Untuk menambah jawaban Johan Pelgrim
adalah setara karena
android.text.format.DateFormat
kelas menggunakan keduanya secara bergantian, misalnyadan
sumber
Anda dapat mencoba mendapatkan lokal dari sumber daya sistem:
sumber
Jawaban di atas tidak membedakan antara Cina sederhana dan Cina tradisional.
Locale.getDefault().toString()
bekerja yang mengembalikan "zh_CN", "zh_TW", "en_US" dan lain-lainReferensi ke: https://developer.android.com/reference/java/util/Locale.html , ISO 639-1 adalah LAMA.
sumber
Solusi ini berhasil untuk saya. Ini akan mengembalikan Anda bahasa perangkat android (bukan bahasa lokal aplikasi)
Ini akan mengembalikan "en" atau "de" atau "fr" atau apa pun bahasa perangkat Anda.
sumber
Anda dapat menggunakan kode ini untuk mengetahui keyboard saat ini
sumber
Ada dua bahasa.
Bahasa default OS:
Bahasa Aplikasi saat ini:
sumber
Jika Anda memilih bahasa yang tidak bisa Anda ketikkan Bahasa Yunani ini mungkin membantu.
Sekarang coba dengan bahasa Yunani
sumber
Jika Anda ingin memeriksa bahasa saat ini, gunakan jawaban @Sarpe (@Thorbear):
sumber
DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault()).format(Date())
.sumber
Cara yang benar untuk mendapatkan bahasa perangkat Anda adalah sebagai berikut:
Semoga ini bisa membantu.
sumber
akan memberi Anda
Written
nama untuk Bahasa, misalnya,English, Dutch, French
akan memberimu
language code
, misalnya:en, nl, fr
Kedua metode mengembalikan String
sumber
sumber
Yang lain telah memberikan jawaban yang baik untuk bahasa perangkat,
jika Anda ingin bahasa aplikasi cara termudah untuk melakukannya adalah dengan menambahkan
app_lang
kunci ke Andastrings.xml
file , dan tentukan lang untuk masing-masing langs juga.Dengan begitu, jika bahasa default aplikasi Anda berbeda dari bahasa perangkat, Anda dapat memilih untuk mengirimkannya sebagai parameter untuk layanan Anda.
sumber
sumber
Solusi saya seperti ini
lalu
ditampilkan ---> id
sumber
di sini adalah kode untuk mendapatkan negara perangkat Kompatibel dengan semua versi Android bahkan oreo.
Solusi: jika pengguna tidak memiliki kartu sim daripada mendapatkan negara ia digunakan selama pengaturan telepon, atau pemilihan bahasa saat ini.
sumber
Jika Anda ingin melakukan tugas khusus untuk pengguna yang berada di India yang berbicara bahasa Hindi, gunakan kondisi di bawah ini
sumber