I am using
The locale object doesn't seem to provide this information directly, but of course the number formatter must know it. You're not supposed to ask (new-style) number formatters for their
format directly, although that'll probably work, and you can then look for the currency symbol,
¤, in the format string.
Possibly better would be to create a
CFNumberFormatter, which does explicitly allow you to view its format, and then inspect that string:
// NSLocale and CFLocale are toll-free bridged, so if you have an existing // NSNumberFormatter, you can get its locale and use that instead. CFLocaleRef usLocale = CFLocaleCreate(NULL, CFSTR("en_US")); CFNumberFormatterRef usFormatter = CFNumberFormatterCreate(NULL, usLocale, kCFNumberFormatterCurrencyStyle); CFLocaleRef frLocale = CFLocaleCreate(NULL, CFSTR("fr_FR")); CFNumberFormatterRef frFormatter = CFNumberFormatterCreate(NULL, frLocale, kCFNumberFormatterCurrencyStyle); NSString * usString = (__bridge NSString *)CFNumberFormatterGetFormat(usFormatter); NSString * frString = (__bridge NSString *)CFNumberFormatterGetFormat(frFormatter); NSUInteger loc = ([usString rangeOfString:@"¤"]).location; NSLog(@"Currency marker at beginning for US? %@", (loc == 0) ? @"YES" : @"NO"); loc = ([frString rangeOfString:@"¤"]).location; NSLog(@"Currency marker at end for FR? %@", (loc == [frString length] - 1) ? @"YES" : @"NO");