3

可能重复:
如何在用户的语言环境中获取星期几的名称?

即使用户区域设置为(瑞典 aso 的 sv-SE),我也知道如何获得两个字母的语言 NSString(英语 aso 的 en)。

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

现在假设用户已将语言和瑞典的英语设置为地区。获取英语而不是瑞典语或用户可以选择的任何语言和地区组合的工作日数组的代码是什么?

/约翰

4

1 回答 1

5

这是我的前 3 种首选语言的完整命令行程序示例:

#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;
}

德语、英语和土耳其语的输出:

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

只是指出:
对于您的要求,这些行就足够了

NSDateFormatter * df = [[NSDateFormatter alloc] init];
[df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:[[NSLocale preferredLanguages] objectAtIndex:0]]];
NSArray *weekdays = [df weekdaySymbols];
NSLog(@"%@", weekdays);
于 2012-09-05T01:01:39.133 回答