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

esta API devuelve el nombre de visualización del paquete en plist.Cómo obtener localizado CFBundleDisplayName

Sin embargo, mi aplicación está traducida y tiene un nombre de visualización diferente.

así que necesito obtener el nombre de visualización localizado en InfoPlist.strings que debería variar con la configuración del idioma del dispositivo.

Respuesta

50

¿Has probado -[NSBundle localizedInfoDictionary]?

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

solución simple :(gracias – Umgre

+0

@Umgre De nada hay un montón de APIs - un montón de memorizar) = – justin

+8

Este método devuelve más directamente una cadena localizada también: '[[NSBundle mainBundle] objectForInfoDictionaryKey: @ "CFBundleDisplayName"] ' – artur

2

Es mejor utilizar kCFBundleNameKey:

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

Swift 3,0

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

Prueba esto para 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)") 
} 

también probar esto, si y nota ou've establecer Display Nombre

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

truco útil:

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

El uso de este método es preferido sobre otros métodos de acceso, ya que devuelve el valor localizada de una tecla cuando uno está disponible . .

Cuestiones relacionadas