> 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]