1

これが私が日をローカライズする方法です:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

NSString *dayFormat = [NSDateFormatter dateFormatFromTemplate:@"EEEE" options:0 locale:[NSLocale currentLocale]];

[dateFormatter setDateFormat:dayFormat];
[dateFormatter setLocale:[NSLocale currentLocale]];

NSString *day = [dateFormatter stringFromDate:date];

それでも、デバイス言語(シミュレーターでドイツ語に設定されている)ではなく、英語の曜日(月曜日、火曜日など)が返されるようです。

私がどこで間違っているのか考えていますか?

デバイスで調査を行った後、更新します。日付の言語を変更する言語設定ではなく、実際には地域の設定であることに気付きました。奇妙ですが、それは理由があると思います。

ありがとう

4

2 に答える 2

1

日付の言語は、言語ではなく地域によって設定ます。これはバグでなければなりません。私がドイツにいて、英語を話す人なら、ドイツ語でデートしたくありませんよね?

とにかく、これが理由です。言語と地域を変更する必要があります。

于 2012-12-13T13:44:23.260 に答える
0

私は同じ問題を抱えていました。シミュレーターでは機能しませんが、デバイスでは機能します。試してみませんか?しかし、私はそれを解決しませんでした。アプリの真の主なターゲットであるデバイスで完全に機能していたので、それ以上調べることさえしませんでした.


編集:

これはAppleのドキュメントから来ています:

現在のロケール

現在のユーザーの論理ロケールを返します。

+ (id)currentLocale

戻り値

現在のユーザーの論理ロケール。ロケールは、現在のユーザーが選択したシステム ロケールの設定に、ユーザーがシステム環境設定で指定したカスタム設定が重ね合わされたものから形成されます。

討論

このロケールから取得した設定は、操作が一貫するようにユーザーのプリファレンスが変更されても変更されません。通常、返されたオブジェクトに対していくつかの操作を実行してから、破棄できるようにします。さらに、返されたオブジェクトはキャッシュされる場合があるため、無期限に保持する必要はありません。autoupdatingCurrentLocale と対比してください。

多分あなたは使ってみることができます:

優先言語

ユーザーの言語設定順序を文字列の配列として返します。

+ (NSArray *)preferredLanguages

戻り値

NSString オブジェクトの配列としてのユーザーの言語設定順序。各オブジェクトは正規化された IETF BCP 47 言語識別子です。

于 2012-12-13T13:31:00.980 に答える