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

API này trả về Tên hiển thị nhóm theo dạng plist.Cách nhận CFBundleDisplayName được bản địa hóa

Tuy nhiên, ứng dụng của tôi được bản địa hóa và có tên hiển thị khác.

vì vậy tôi cần phải có tên hiển thị được bản địa hóa trong InfoPlist.strings nên thay đổi theo cài đặt ngôn ngữ thiết bị.

Trả lời

50

Bạn đã thử -[NSBundle localizedInfoDictionary] chưa?

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

đơn giản giải pháp :(nhờ – Umgre

+0

@Umgre bạn đang chào đón có một tấn các API - rất nhiều để ghi nhớ =) – justin

+8

Phương pháp này trực tiếp hơn trả về một chuỗi cục bộ quá: '[[NSBundle mainBundle] objectForInfoDictionaryKey: @ "CFBundleDisplayName"] ' – artur

2

tôi đề nghị sử dụng kCFBundleNameKey:

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

Swift 3,0

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

Hãy thử điều này cho Swift:

// 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)") 
} 

Cũng thử này, nếu y ou've lưu ý thiết lập Display Name

// 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)") 
} 

lừa hữu ích:

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

Sử dụng phương pháp này được ưa thích hơn phương pháp truy cập khác vì nó trả về giá trị cục bộ của một phím bất kỳ khi ai có sẵn . .

Các vấn đề liên quan