0

私は最近、アプリケーションの使用のフランス語バージョンに取り組んでいますがNSLocalizedStrings、これまでのところすべてがうまく機能しています。

しかし、私の問題は今、日付にあります。アプリケーションでは、状況に応じてさまざまな形式で日付を表示することがよくあります。

元:

-Fri Feb 22, 2013
-Monday February 18, 2013
-Feb 18
-Dec 5, 2012

フランス語の日付は、月の名前だけでなく、月、日、年の順序も異なります。

元:

-Dec 5, 2012 would be 5 Dec 2012
-Monday February 18, 2013 would be Lundi le 18 Fevrier 2013.

ファイルに個々の月/日の名前がありLocalizable.stringますが、表示方法の順序を管理するにはどうすればよいですか。

そのように現在のデバイス言語をチェックするifステートメントが必要ですか?:

NSString *currentLanguage = [[NSLocale preferredLanguages] objectAtIndex:0];

if([currentLanguage isEqualToString:@"fr"])
{
    //Handle French logic
}

これはおそらくそれを回避するための最良の方法ではありません。

何か案は?

4

5 に答える 5

4

NSDateFormatterを使用して、次のように目的のNSLocaleをフィードする必要があります。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"nl_NL"];
dateFormatter.dateFormat = @"EEEE d MMMM yyyy HH:mm";

「EEEE」は曜日のフルネームであり、私の場合はオランダ語で表示されます。

于 2013-02-12T18:29:16.830 に答える
1

日付を文字列に変換するときにNSDateFormatterに適切なロケールを設定すると、日付フォーマッターはユーザー設定に応じてフォーマットのすべての詳細を処理します。

NSDateFormatter *formatter = ... // Create and setup formatter
[formatter setLocale:[NSLocale autoupdatingCurrentLocale]]; 
// Now you can convert date to string
于 2013-02-12T18:27:57.040 に答える
1

それはおそらくはるかに簡単です:と呼ばれるものがあります

NSDateFormatterShortStyle,
NSDateFormatterMediumStyle
NSDateFormatterLongStyle

日付と時刻のコンポーネントを個別に設定します。

[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 
[dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 

ユーザーの言語であれば、iOSはそれを正しくフォーマットします。

データフォーマットガイドをさらに見る

于 2013-02-12T18:30:02.713 に答える
1

を使用しNSDateFormatterます。例えば:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];

NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:162000];

NSString *formattedDateString = [dateFormatter stringFromDate:date];
NSLog(@"formattedDateString: %@", formattedDateString);

NSDateFormatterMediumStyleユーザーの好み(英語、フランス語など)に従って日付を自動的にフォーマットします。

カスタムスタイルが必要で、アプリがiOS 4.0以降で実行されている場合は、日付フォーマッターでカスタムテンプレートを使用できます。

NSString *formatString = [NSDateFormatter dateFormatFromTemplate:@"EdMMMyyy" options:0
                                          locale:[NSLocale currentLocale]];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:formatString];

NSString *todayString = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@"todayString: %@", todayString);
于 2013-02-12T18:30:15.607 に答える
0

NSDateFormatterとテンプレート(Unicode技術標準#35から)を使用する前に、クラス関数を試してみますlocalizedStringFromDate:dateStyle:timeStyle:NSDateFormatter

例:

[NSDateFormatter localizedStringFromDate:dateTime dateStyle:NSDateFormatterMediumStyle timeStyle:NSDateFormatterNoStyle];

ドキュメントで詳しく説明されているさまざまな長さの異なる日付と時刻の出力の両方を選択できます。

Appleのドキュメント:NSDateFormatterlocalizedStringFromDate:dateStyle:timeStyle:

于 2013-02-12T20:58:48.827 に答える