2012-02-06 14 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

+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

はスウィフトのためにこれを試してみてください:yの場合

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

また、これを試してください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)") 
1が利用可能になったとき、それは、キーのローカライズされた値を返すため、このメソッドの使用は他のアクセス方式よりも好ましい
0
Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? "" 

。 。あなたは歓迎している@Umgre

関連する問題