2012-08-03 56 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]; 
相關問題