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

此API返回plist中的Bundle Display Name。如何获得本地化的CFBundleDisplayName

但是我的应用程序已本地化,并有不同的显示名称。

所以我需要得到本地化的显示名称InfoPlist.strings应该随设备语言设置而变化。

回答

50

你试过-[NSBundle localizedInfoDictionary]

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

简单的解决办法:(感谢 – Umgre 2012-02-06 05:55:50

+0

@Umgre欢迎你有一吨的API的 - 大量的背诵=) – justin 2012-02-06 05:59:18

+8

这种方法更直接返回一个本地化的字符串太: '[一个NSBundle mainBundle] objectForInfoDictionaryKey:@ “CFBundleDisplayName”]' – artur 2014-07-22 20:18:59

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 ?? "" 

使用这种方法优于其他接入方式,因为它返回键的本地化值时,一个可用。 。

相关问题