> Are these names only accessible from private frameworks or is there an
> AppKit or CoreGraphics API I have yet to stumble across that maps the
> display unit number or display ID to a localized (or not) display name?

The answer is in I/O Kit:


#import <IOKit/graphics/IOGraphicsLib.h>

#import <IOKit/graphics/IOGraphicsTypes.h>

NSString* screenNameForDisplayID(CGDirectDisplayID displayID)

{

    NSDictionary *deviceFullDescription = (NSDictionary *)
IODisplayCreateInfoDictionary(CGDisplayIOServicePort(displayID), kNilOptions
);

    if (deviceFullDescription == nil) {

        return nil;

    }



    NSDictionary *localizedNames = [deviceFullDescription objectForKey
:@kDisplayProductName];

    if ([localizedNames count] < 1) {

        return nil;

    }



    NSString *languageKey = nil;

    for (NSString *preferredLanguage in [NSLocale preferredLanguages]) {

        for (NSString *localeIdentifier in [localizedNames allKeys]) {

            if ([[[NSLocale componentsFromLocaleIdentifier
:preferredLanguage] objectForKey:NSLocaleLanguageCode] isEqualToString:[[
NSLocale componentsFromLocaleIdentifier:localeIdentifier] objectForKey:
NSLocaleLanguageCode]]) {

                languageKey = localeIdentifier;

                goto exit;

            }

        }

    }

    exit:



    return [localizedNames objectForKey:languageKey ? languageKey :
[[localizedNames allKeys] objectAtIndex:0]];

}
_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to