3

重複の可能性:
ユーザーのロケールで曜日の名前を取得するにはどうすればよいですか?

ユーザーの地域が (スウェーデン aso の場合は sv-SE) に設定されている場合でも、2 文字の言語 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 に答える