2012-02-06 10 views
27
[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"] 

यह API प्लेलिस्ट में बंडल प्रदर्शन नाम देता है।स्थानीयकृत CFBundleDisplayName

हालांकि मेरा ऐप स्थानीयकृत है और इसमें अलग-अलग डिस्प्ले नाम हैं।

इसलिए मुझे InfoPlist.strings में स्थानीयकृत डिस्प्ले नाम प्राप्त करने की आवश्यकता है जो डिवाइस भाषा सेटिंग के साथ भिन्न होना चाहिए।

उत्तर

50

क्या आपने -[NSBundle localizedInfoDictionary] को आजमाया है?

[[[NSBundle mainBundle] localizedInfoDictionary] 
     objectForKey:@"CFBundleDisplayName"] 
+0

सरल उपाय :(धन्यवाद – Umgre

+0

@Umgre आपका स्वागत है वहाँ के एपीआई एक टन कर रहे हैं - बहुत सारे =) याद करने के लिए – justin

+8

इस विधि अधिक सीधे भी एक स्थानीय स्ट्रिंग रिटर्न: '[[NSBundle mainBundle] objectForInfoDictionaryKey: @ "CFBundleDisplayName"] ' – artur

2

मैं kCFBundleNameKey उपयोग करने के लिए सुझाव देते हैं:

[[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString*)kCFBundleNameKey] 
0

स्विफ्ट 3,0

class Utils { 
    static var localizedAppName: String? { 
     return Bundle.main.localizedInfoDictionary?["CFBundleDisplayName"] as! String? 
    } 
} 
1

स्विफ्ट के लिए यह प्रयास करें:

// Localized 
if let displayName = Bundle.main.localizedInfoDictionary?["CFBundleDisplayName"] as? String { 
    print("App Display Name - \(displayName)") 
} 


// Non-Localized 
if let displayName = Bundle.main.infoDictionary?["CFBundleDisplayName"] as? String { 
    print("App Display Name - \(displayName)") 
} 

इसके अलावा इस कोशिश, अगर y ou've टिप्पणी सेट प्रदर्शन नाम

// Localized 
if let appName = Bundle.main. localizedInfoDictionary?["CFBundleName"] as? String { 
    print("App Name - \(appName)") 
} 

// Non-Localized 
if let appName = Bundle.main.infoDictionary?["CFBundleName"] as? String { 
    print("App Name - \(appName)") 
} 

उपयोगी चाल:

// Print bundle info dictionary to get complete details about app 
print("Bundle.main.infoDictionary - \(Bundle.main.infoDictionary)") 
print("Bundle.main.localizedInfoDictionary - \(Bundle.main.localizedInfoDictionary)") 
0
Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? "" 

इस विधि का उपयोग अन्य अभिगम विधि से अधिक पसंद किया जाता है क्योंकि यह एक प्रमुख के स्थानीय मान देता है जब एक ही उपलब्ध है । ।