3

在美国和欧洲,应用程序文件夹是命名的Applications,但在中文或日文本地化下它是如何命名的?

有没有办法以编程方式获取文件夹的名称?

4

4 回答 4

14

文件系统中的目录名称始终为英文。目录可以附加本地化名称以向用户显示,但这些不是您用于访问目录的名称。来自国际化编程主题

您需要了解应用程序中的本地化路径名并适当地显示它们。本地化路径名仅用于显示目的,在访问文件系统时绝不应使用。在代码中处理文件和目录时,包括需要写入缓存或用户首选项时,您应该继续使用实际路径名。唯一应该使用本地化路径名的情况是,当您希望通过应用程序的用户界面向用户显示该路径时。

也就是说,您可以使用以下方式以编程方式获取路径NSSearchPathForDirectoriesInDomains

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSLocalDomainMask, YES);
// Returns an NSArray containing the string "/Applications"

您还可以使用-[NSFileManager URLsForDirectory:inDomains:]

NSArray *urls = [[NSFileManager defaultManager] URLsForDirectory:NSApplicationDirectory inDomains:NSLocalDomainMask];
// Returns an NSArray containing the NSURL "file://localhost/Applications"

如果您需要向用户显示本地化名称,请查看Internationalization Programming Topics

于 2012-08-03T17:40:10.123 回答
3
[[[NSFileManager defaultManager] URLsForDirectory: NSApplicationDirectory inDomains:NSLocalDomainMask] lastObject];

我认为应该工作(参考)。如果您使用的是以前版本的 OS X 并且 URLsForDirectory 不受支持,NSSearchPathForDirectoriesInDomains()则可以选择。

于 2012-08-03T17:42:29.807 回答
1

要获取适合呈现给用户的文件夹(或具有本地化名称的应用程序)的本地化名称,请使用:

NSString *localizedName = [[NSFileManager defaultManager] displayNameAtPath:path];

对于 Applications 文件夹,您可以使用:

NSString *localizedApplicationDirectoryName = [[NSFileManager defaultManager] displayNameAtPath:NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSLocalDomainMask, YES).lastObject];
于 2014-11-11T17:50:11.593 回答
1

迅速:

let urls = FileManager().urls(for: .applicationDirectory, in: .localDomainMask)

▿ 1 个元素
▿ 0 : file:///Applications/

let urls = FileManager().urls(for: .allApplicationsDirectory, in: .localDomainMask)

▿ 4 个元素
▿ 0:file:///Applications/
▿ 1:file:///Applications/Utilities/
▿ 2:file:///Developer/Applications/
▿ 3:file:///Applications/Demos/

于 2018-05-22T19:53:07.177 回答