4

私は現在、日付を多用するiPhone用のアプリを書いています。NSDateFormatter日付を文字列に変換するために使用しています。便利なNSDateFormatterことに、リージョン形式に基づいてユーザーの言語で文字列を自動的に作成します。考えられるすべての言語と地域でアプリをローカライズすることはできないため、アプリは英語、ドイツ語、スペイン語、およびその他のいくつかの言語でのみローカライズされます。

たとえば、アプリがフランス語のユーザー向けに実行されている場合、アプリのデフォルトは英語になります。それは問題ありませんが、日付は引き続きフランス語を使用して変換されます。これにより、「Month:July」ではなく「Month:Juillet」のような文字列になります。

NSDateFormatterアプリが実行されている言語を常に使用するようにするにはどうすればよいですか?NSLocalizedString()識別子をローカライズするために使用できることは知っていますNSLocaleが、これではリージョン設定が正しくなくなります。

ユーザーが通常「en_GB」リージョンを使用していて、アプリが一般的に英語にローカライズされているNSDateFormatter場合、「en」や「en_US」だけでなく「en_GB」を使用したいと思います。ユーザーがフランス語を実行するときは、ロケールを「en」にし、アプリを「de_DE」リージョンで実行する場合は、アプリがドイツ語をサポートしているため、日付形式も「de_DE」にする必要があります。

よろしく、ファビアン

4

1 に答える 1

3

日付フォーマッターを作成すると、現在のロケールからスタイルが初期化されますが、これをオーバーライドできます。

[テストされていません]NSBundleを使用して、ユーザーリストと使用可能なロケールから最適なロケールを取得できます。

+ (NSArray *)preferredLocalizationsFromArray:(NSArray *)localizationsArray

NSFormatter:

+ (NSString *)dateFormatFromTemplate:(NSString *)template options:(NSUInteger)opts locale:(NSLocale *)locale

指定されたロケールのローカライズされたフォーマット文字列を提供する必要があります。

次に、setDateFormatを使用して、フォーマッターの初期日付形式を上書きできます。

于 2012-07-31T08:56:24.073 に答える