Kabul edilen ve diğer cevapların tümü, tercih edilen dilin cihaz dilinden başka bir dil olabileceğini dikkate almaz .
cihaz dili işletim sistemi elemanları ve Apple uygulamaları sunulduğu dildir.
Tercih dil kullanıcı Apple sadece çeviriler sınırlı kümesi sağlar. Yerelleştirilmiş uygulamalar istiyorum dildir. Tercih edilen dil Apple'ın uygulamalarını çevirdiği tek bir dilse, cihaz dili de olacaktır. Ancak , kullanıcı Apple'ın çeviri sağlamadığı bir dili tercih ederse cihaz tercih edilir ve tercih edilen diller eşleşmez . Cihaz dili, tercih edilen diller listesinde ilk sırada olmayacaktır.
Aşağıdaki işlev, tercih edilen diller listesinden geçer ve Apple çerçevelerinde bir çeviri olup olmadığını kontrol eder. Çeviri yapan ilk dil aygıt dilidir. İşlev dil kodunu döndürür.
func deviceLanguage() -> String? {
let systemBundle: NSBundle = NSBundle(forClass: UIView.self)
let englishLocale: NSLocale = NSLocale(localeIdentifier: "en")
let preferredLanguages: [String] = NSLocale.preferredLanguages()
for language: String in preferredLanguages {
let languageComponents: [String : String] = NSLocale.componentsFromLocaleIdentifier(language)
guard let languageCode: String = languageComponents[NSLocaleLanguageCode] else {
continue
}
// ex: es_MX.lproj, zh_CN.lproj
if let countryCode: String = languageComponents[NSLocaleCountryCode] {
if systemBundle.pathForResource("\(languageCode)_\(countryCode)", ofType: "lproj") != nil {
// returns language and country code because it appears that the actual language is coded within the country code aswell
// for example: zh_CN probably mandarin, zh_HK probably cantonese
return language
}
}
// ex: English.lproj, German.lproj
if let languageName: String = englishLocale.displayNameForKey(NSLocaleIdentifier, value: languageCode) {
if systemBundle.pathForResource(languageName, ofType: "lproj") != nil {
return languageCode
}
}
// ex: pt.lproj, hu.lproj
if systemBundle.pathForResource(languageCode, ofType: "lproj") != nil {
return languageCode
}
}
return nil
}
Bu, tercih edilen dil listesi:
- Afrikaans (iOS diline çevrilmemiştir)
- İspanyolca (Cihaz Dili)
Tercih dil liste edilebilir düzenlenebilir : Settings.app -> Genel -> Dil ve Bölge -> Tercih Edilen Dil al
Cihazın dil kodunu kullanabilir ve dil adına çevirebilirsiniz. Aşağıdaki satırlar aygıt dilini aygıt dilinde yazdıracaktır. Örneğin, cihaz İspanyolca olarak ayarlanmışsa "Español".
if let deviceLanguageCode: String = deviceLanguage() {
let printOutputLanguageCode: String = deviceLanguageCode
let printOutputLocale: NSLocale = NSLocale(localeIdentifier: printOutputLanguageCode)
if let deviceLanguageName: String = printOutputLocale.displayNameForKey(NSLocaleIdentifier, value: deviceLanguageCode) {
// keep in mind that for some localizations this will print a language and a country
// see deviceLanguage() implementation above
print(deviceLanguageName)
}
}
NSLocale
. Cevabımı gör.