2012-08-03 82 views

回答

12

文件系统中的目录名称始终为英文。这些目录可以附加本地化名称以显示给用户,但这些名称不是用来访问目录的名称。从Internationalization Programming Topics

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

这就是说,你得到编程方式使用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

+0

第一个例子不适用于ARC,你确定返回类型吗? – MatterGoal 2012-08-03 17:55:28

+0

检查[documentation](https://developer.apple.com/library/mac/documentation/cocoa/reference/foundation/miscellaneous/foundation_functions/Reference/reference.html#//apple_ref/doc/uid/20000055-SW5 )。如果出现错误,请编辑您的问题并粘贴您的代码和错误。 – 2012-08-03 17:56:58

+0

我发现错误抱歉。 “路径”不是“路径” 'NSSearchPathForDirectoriesInDomains' – MatterGoal 2012-08-03 17:58:26

3
[[[NSFileManager defaultManager] URLsForDirectory: NSApplicationDirectory inDomains:NSLocalDomainMask] lastObject]; 

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

1

为了得到一个文件夹的适合呈现给用户,使用本地化名称(或局部名的应用程序):

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

对于应用程序文件夹,您可以使用:

NSString *localizedApplicationDirectoryName = [[NSFileManager defaultManager] displayNameAtPath:NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSLocalDomainMask, YES).lastObject]; 
相关问题