@ -173,29 +173,32 @@ static void
mac_set_currency_locale ( NSLocale * locale , NSString * locale_str )
{
/* If the currency doesn't match the base locale, we need to find a locale that does match, because setlocale won't know what to do with just a currency identifier. */
NSLocale * cur_locale = [ [ NSLocale alloc ] initWithLocaleIdentifier : locale_str ] ;
if ( ! [ [ locale objectForKey : NSLocaleCurrencyCode ] isEqualToString :
[ [ [ NSLocale alloc ] initWithLocaleIdentifier : locale_str ] objectForKey : NSLocaleCurrencyCode ] ] ) {
NSArray * all_locales = [ NSLocale availableLocaleIdentifiers ] ;
NSEnumerator * locale_iter = [ all_locales objectEnumerator ] ;
NSString * this_locale ;
NSString * currency = [ locale objectForKey : NSLocaleCurrencyCode ] ;
NSString * money_locale = nil ;
while ( ( this_locale = ( NSString * ) [ locale_iter nextObject ] ) )
{
NSLocale * templocale = [ [ NSLocale alloc ]
initWithLocaleIdentifier : this_locale ] ;
if ( [ [ templocale objectForKey : NSLocaleCurrencyCode ]
isEqualToString : currency ] )
{
money_locale = this_locale ;
[ templocale release ] ;
break ;
}
[ templocale release ] ;
}
if ( money_locale )
setlocale ( LC_MONETARY , [ money_locale UTF8String ] ) ;
[ cur_locale objectForKey : NSLocaleCurrencyCode ] ] )
{
NSArray * all_locales = [ NSLocale availableLocaleIdentifiers ] ;
NSEnumerator * locale_iter = [ all_locales objectEnumerator ] ;
NSString * this_locale ;
NSString * currency = [ locale objectForKey : NSLocaleCurrencyCode ] ;
NSString * money_locale = nil ;
while ( ( this_locale = ( NSString * ) [ locale_iter nextObject ] ) )
{
NSLocale * templocale = [ [ NSLocale alloc ]
initWithLocaleIdentifier : this_locale ] ;
if ( [ [ templocale objectForKey : NSLocaleCurrencyCode ]
isEqualToString : currency ] )
{
money_locale = this_locale ;
[ templocale release ] ;
break ;
}
[ templocale release ] ;
}
if ( money_locale )
setlocale ( LC_MONETARY , [ money_locale UTF8String ] ) ;
}
[ cur_locale release ] ;
}
/* The locale that we got from AppKit isn't a supported POSIX one, so we need to
* find something close . First see if we can find another locale for the
@ -219,9 +222,7 @@ mac_find_close_country(NSString *locale_str, NSString *country_str,
new_locale = this_locale ;
break ;
}
if ( new_locale )
locale_str = new_locale ;
else
if ( ! new_locale )
while ( ( this_locale = ( NSString * ) [ locale_iter nextObject ] ) )
if ( [ [ [ NSLocale componentsFromLocaleIdentifier : this_locale ]
objectForKey : NSLocaleLanguageCode ]