গৃহীত, এবং অন্যান্য উত্তরগুলি সমস্তই বিবেচনায় নেয় না যে পছন্দসই ভাষা ডিভাইসের ভাষার চেয়ে অন্য ভাষা হতে পারে ।
ডিভাইস ভাষা যা অপারেটিং সিস্টেম উপাদান এবং অ্যাপল অ্যাপস উপস্থাপন করা হয় ভাষা।
পছন্দের ভাষা ভাষা ব্যবহারকারী। অ্যাপল শুধুমাত্র অনুবাদের একটি সীমিত সেট প্রদান স্থানীয় অ্যাপ্লিকেশান নেই চাই হয়। পছন্দসই ভাষা যদি এক ভাষা অ্যাপল তাদের অ্যাপ্লিকেশনগুলিতে অনুবাদ করে তবে এটি ডিভাইসের ভাষাও হবে। তবে ব্যবহারকারী যদি এমন কোনও ভাষা পছন্দ করেন যার জন্য অ্যাপল ডিভাইস অনুবাদগুলি সরবরাহ করে না এবং পছন্দসই ভাষা মেলে না । ডিভাইসের ভাষা পছন্দসই ভাষার তালিকায় প্রথম অবস্থানে থাকবে না।
নিম্নলিখিত ফাংশনটি পছন্দের ভাষার তালিকার মধ্য দিয়ে যাবে এবং অ্যাপল ফ্রেমওয়ার্কগুলিতে কোনও অনুবাদ আছে কিনা তা পরীক্ষা করবে। অনুবাদটির প্রথম ভাষাটি হ'ল ডিভাইস ভাষা। ফাংশনটি তার ভাষার কোডটি ফিরিয়ে দেবে।
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
}
যদি পছন্দের ভাষার তালিকাটি হয় তবে এটি কাজ করে:
- আফ্রিকান্স (আইওএস আফ্রিকান ভাষায় অনুবাদ হয় না)
- স্প্যানিশ (ডিভাইসের ভাষা)
পছন্দসই ভাষা তালিকা করা যেতে পারে সম্পাদনা : Settings.app -> সাধারণ -> ভাষা ও অঞ্চল -> পছন্দের ভাষাটি অবশ্যই ক্রম অনুসারে
আপনি ডিভাইসের ভাষা কোডটি ব্যবহার করে ভাষাটির নামে অনুবাদ করতে পারবেন। নিম্নলিখিত লাইনগুলি ডিভাইসের ভাষায় ডিভাইসের ভাষা মুদ্রণ করবে। উদাহরণস্বরূপ "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
। আমার উত্তর দেখুন।