Saya ingin mendapatkan kode bahasa perangkat (id, es ...) di aplikasi saya yang ditulis dengan Swift. Bagaimana bisa mendapatkan ini?
Saya mencoba ini:
var preferredLanguages : NSLocale!
let pre = preferredLanguages.displayNameForKey(NSLocaleIdentifier, value: preferredLanguages)
Tapi ini mengembalikan nol.
Sangat penting untuk membuat perbedaan antara bahasa App dan bahasa lokal perangkat (Kode di bawah ini dalam Swift 3 )
Akan mengembalikan bahasa Perangkat :
Akan mengembalikan bahasa Aplikasi :
sumber
Locale.current.languageCode: de Locale.current.identifier: de_DE Locale.preferredLanguages[0]: de
Ketika bahasa pengembangan aplikasi saya adalah EN dan saya menjalankan perangkat yang dikonfigurasikan FR, di mana saya belum melokalkan aplikasi hasilnya adalah:Locale.current.languageCode: en Locale.current.identifier: en_FR Locale.preferredLanguages[0]: fr
Swift 4 & 5:
sumber
Locale(identifier: Locale.current.identifier)
;Locale.autoupdatingCurrent.languageCode
juga tersediaDalam Swift 3:
sumber
Untuk menggunakan bahasa saat ini di aplikasi Anda (berbeda dari bahasa pilihan)
sumber
Swift 3 & 4 & 4.2 & 5
Locale.current.languageCode
tidak mengkompilasi secara teratur. Karena Anda tidak menerapkan pelokalan untuk proyek Anda.Anda memiliki dua solusi yang memungkinkan
1)
String(Locale.preferredLanguages[0].prefix(2))
Ini mengembalikan lang telepon dengan benar.Jika Anda ingin mendapatkan tipenya
en-En
, Anda bisa menggunakannyaLocale.preferredLanguages[0]
2) Pilih
Project(MyApp)
->Project (not Target)
-> tekan tombol + keLocalizations
, lalu tambahkan bahasa yang Anda inginkan.sumber
cepat 3
sumber
let langStr = Locale.preferredLanguages.first!
inilah yang saya lakukan meninjau posting ini. Ini berfungsi, dan saya membandingkan dengan bahasa saya denganlangStr.lowercased().contains("es")
untuk semua variasi bahasa Spanyol misalnya.Anda dapat menggunakan kode di bawah ini berfungsi dengan baik dengan cepat 3
sumber
Saya ingin melacak bahasa yang dipilih oleh pengguna di aplikasi Pengaturan setiap kali pengguna meluncurkan aplikasi saya - yang belum dilokalkan (aplikasi saya hanya dalam bahasa Inggris). Saya mengadopsi logika ini:
buat enum untuk membuatnya lebih mudah untuk menangani bahasa dalam array
buat beberapa ekstensi ke Lokal
Bila perlu, Anda cukup menggunakan ekstensi
sumber
Di Swift, Anda bisa menggunakan lokal.
sumber
Locale.current.languageCode
mengembalikan saya kode yang salah, jadi saya menggunakan ekstensi ini:sumber
Inilah yang saya gunakan di Swift 5 Xcode 11:
Di dalam variabel kelas:
Ini muncul sebagai string. Ia mengembalikan 2 karakter, yaitu "en", "es", "de" ...
Dari sini saya dapat dengan mudah menentukan bahasa apa yang akan ditampilkan:
Jika Anda ingin informasi lengkap bahasa, maka hapus? .Prefex (2)
sumber