Sie können die displayNameForKey:value:
Methode der NSLocale
:
// get a French locale instance
NSLocale *frLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"] autorelease];
// use it to get translated display names of fr_FR and en_US
NSLog(@"%@", [frLocale displayNameForKey:NSLocaleIdentifier value:@"fr_FR"]);
NSLog(@"%@", [frLocale displayNameForKey:NSLocaleIdentifier value:@"en_US"]);
Dies wird ausgedruckt:
français (France)
anglais (États-Unis)
Wenn Sie denselben Gebietsschema-Bezeichner für die initWithLocaleIdentifier:
und auch die displayNameForKey:value:
Methode, dann erhalten Sie den einheimischen Namen der Sprache. Ich habe herausgefunden, dass, wenn Sie den Ländercode entfernen und nur fr
y en
dass es auch das Land aus dem Anzeigenamen weglässt (zumindest unter Mac OS X, bei iOS bin ich mir nicht sicher).
1 Stimmen
Dies ist eingebaut in
NSLocale
. Siehe meine Antwort.18 Stimmen
iOS9 Kommentar: achten Sie darauf, dass Apple aus irgendeinem Grund das Format geändert hat, das von
[NSLocale preferredLanguages]
. früher wurde sie durch einen Unterstrich getrennt (z. B.en_US
), aber jetzt wurde er in einen Bindestrich umgewandelt:en-US
7 Stimmen
Mehr zu iOS9: Der Erhalt von [NSLocale preferredLanguages] auf einem iOS 8.4-Simulator im Vergleich zu einem 9.0-Simulator weist ebenfalls Diskrepanzen auf. Auf iOS 8.4 ist es "en" und iOS 9.0 ist es "en-US".
0 Stimmen
Dieser Kommentar hat mir sehr geholfen! Wir steckten mit einem einfachen Problem fest und fragten uns, was etwa 1 Stunde lang falsch lief, bis ich Ihren Kommentar sah.
4 Stimmen
NSLocale
hat MethodencomponentsFromLocaleIdentifier:
ylocaleIdentifierFromComponents:
die wahrscheinlich der richtige Weg sind, um das (potenziell veränderbare) Format zu handhaben.