3

Possible Duplicate:
How do I get the name of a day of the week in the user’s locale?

I know how to get a two letter language NSString (en for English a.s.o.) even if the users region is set to (sv-SE for Sweden a.s.o).

NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0]

Now let's say the user has set English for Language und Sweden as region. What is the code for getting an array of weekdays in English, not in Swedish, or any combos of languages and Regions the user may choose??

/John

Community
  • 1
  • 1
John Wilund
  • 339
  • 4
  • 13

1 Answers1

5

Here a complete command line program example for my first 3 preferred languages:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        NSDateFormatter * df = [[NSDateFormatter alloc] init];
        NSArray * preferredLanguages =[[NSLocale preferredLanguages] subarrayWithRange:NSMakeRange(0, 3)];

        [preferredLanguages enumerateObjectsUsingBlock:^(NSString  *languageIdentifier, NSUInteger idx, BOOL *stop) {
            [df setLocale: [[NSLocale alloc] initWithLocaleIdentifier:languageIdentifier]];
            NSArray * weekdays = [df weekdaySymbols];
            [weekdays enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
                NSLog(@"%@ %@",languageIdentifier, obj);
            }];
            NSLog(@"------------");
        }];


    }
    return 0;
}

output for languages German, English and Turkish:

de Sonntag
de Montag
de Dienstag
de Mittwoch
de Donnerstag
de Freitag
de Samstag
------------
en Sunday
en Monday
en Tuesday
en Wednesday
en Thursday
en Friday
en Saturday
------------
tr Pazar
tr Pazartesi
tr Salı
tr Çarşamba
tr Perşembe
tr Cuma
tr Cumartesi
------------

Just to point it out:
for your requirements, these lines are enough

NSDateFormatter * df = [[NSDateFormatter alloc] init];
[df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:[[NSLocale preferredLanguages] objectAtIndex:0]]];
NSArray *weekdays = [df weekdaySymbols];
NSLog(@"%@", weekdays);
vikingosegundo
  • 52,040
  • 14
  • 137
  • 178