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

이 API는 plist에 번들 표시 이름을 반환합니다.현지화 된 CFBundleDisplayName을 얻는 방법

그러나 내 앱이 현지화되어 있으며 다른 표시 이름이 있습니다.

그래서 장치 언어 설정에 따라 달라지는 InfoPlist.strings에 현지화 된 표시 이름을 가져와야합니다.

답변

50

-[NSBundle localizedInfoDictionary]을 사용해 보셨습니까?

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

간단한 해결책 :(감사 – Umgre

+0

이 API를의 톤이있다 - =)를 기억하는 많은 – 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 ?? "" 

. . 당신은 환영합니다 @Umgre

관련 문제