[译]iOS Developer Library Technical Q&A QA1544 Obtaining the localized application name in Cocoa

比较实用,翻译一下,留作日后参考,E文原文:http://developer.apple.com/library/mac/#qa/qa1544/_index.html

获取Cocoa应用程序的本地化名称

Q:如何取得我的Cocoa应用程序的本地化名称?

A:应用程序名称有一些不同的版本,但都可以以NSString的形式获得。根据你的具体需要,可以用以下五种方法:

警告:请注意用户可以用Finder修改应用程序包。如果你想取得的是可能被用户修改过的应用程序名称,那就用第5种方法介绍的NSFileManager实现。

应用程序的别名(short name)由CFBundleName定义,常用在菜单或关于对话框中。

1:从main bundle中获取应用程序的简名(short name)。

NSString *appName =          [[[NSBundle mainBundle] localizedInfoDictionary] objectForKey:(NSString *)kCFBundleNameKey];

应用程序的“显示名称”一般都比较长,用在Finder中显示bundle名字。

2:获取应用程序的显示名称。

NSString *appName =          [[[NSBundle mainBundle] localizedInfoDictionary] objectForKey:@"CFBundleDisplayName"];

注意之前的这些方法都有可能返回空(nil)。如果这样的话,可以按照默认的关于对话框的做法解决,直接用进程名称本身。

3:获取进程名称。

NSString *appName = [[NSProcessInfo processInfo] processName];

从Mac OS X 10.6开始,可以用NSRunningApplication来获得本地化的应用程序名称。

4:使用NSRunningApplication获得本地化的应用程序名称。

NSString *appName = [[NSRunningApplication currentApplication] localizedName];

不过最通用的实现方式莫过于使用NSFileManager。displayNameAtPath:这个方法,在本地化名称存在的情况下返回这个名称,并在不存在的情况下返回bundle名称,甚至可以返回用户重命名应用程序后的名称。

5:从NSFileManager获得通用显示名称。

NSString *bundlePath = [[NSBundle mainBundle] bundlePath];     NSString *appName = [[NSFileManager defaultManager] displayNameAtPath: bundlePath];

博主友情提示:

如在您的评论中需要提及如QQ号、微信号、电子邮件地址或其他隐私敏感信息,欢迎通过>>博主专用加密工具v2<<加密后发布,原文只有博主可以看到。