Есть ли способ получить локализованное отображаемое имя системного каталога в macOS? - PullRequest
0 голосов
/ 20 декабря 2018

Я хочу получить системные локализованные отображаемые имена каталогов (например, Рабочий стол, Документы, Загрузки), как показано в Избранном Finder.

Я попытался использовать NSFileManager 'displayNameAtPath: но этоработал только для пользовательских каталогов Directory.localized, содержащих *. строковых файлов, и не работал для системных каталогов.

Ниже приведен код, с которым я проверял это.

#import <Foundation/Foundation.h>

int main (int argc, const char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    if (argc < 2) {
        // Use ~/Application directory if no command line arguments are provided
        NSString *localizedApplicationDirectoryName = [[NSFileManager defaultManager] displayNameAtPath:NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSLocalDomainMask, YES).lastObject];
        NSLog(@"%@", localizedApplicationDirectoryName);
        [pool drain];
        return 1;
    }

    // Use command line arguments
    NSFileManager *fileManager = [[NSFileManager alloc] init];
    NSString *directory = [NSString stringWithUTF8String:argv[1]];
    NSString *displayName = [fileManager displayNameAtPath:directory];    
    NSLog(@"%@", displayName);

    [pool drain];
    return 0;
}

What I 'я делаю неправильно?Есть ли другие способы получить этот перевод?

1 Ответ

0 голосов
/ 20 декабря 2018

Получить локализованное имя из URL, например, папки рабочего стола

NSURL *url = [[NSURL fileURLWithPath:NSHomeDirectory()] URLByAppendingPathComponent: @"Desktop"];
NSString *localizedName;
NSError *error;
[url getResourceValue:&localizedName forKey:NSURLLocalizedNameKey error:&error];
if (error) {
    NSLog(@"%@", error);
} else {
    NSLog(@"%@", localizedName);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...