458 Stimmen

Aktuelle Gerätesprache in iOS abrufen?

Ich möchte die aktuelle Sprache anzeigen, die die Benutzeroberfläche des Geräts verwendet. Welchen Code würde ich verwenden?

Ich möchte dies als NSString in vollständig ausgeschriebener Form. (Nicht @"en_US")

EDIT: Für diejenigen, die vorbeifahren, gibt es hier eine Menge nützlicher Kommentare, da sich die Antwort mit neuen iOS-Versionen weiterentwickelt hat.

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".

3voto

Chuck Savage Punkte 11491

Für MonoTouch C# Entwickler verwenden:

NSLocale.PreferredLanguages.FirstOrDefault() ?? "en"

Anmerkung: Ich weiß, dass dies eine iOS-Frage war, aber da ich ein MonoTouch-Entwickler bin, hat mich die Antwort auf dieser Seite in die richtige Richtung geführt und ich dachte, ich würde die Ergebnisse teilen.

0 Stimmen

Ich bin derzeit mit NSLocale.PreferredLanguages und ich erhalte ein leeres Array. Ich nehme an, Sie haben in der Dokumentation gelesen, dass es nie leer sein kann, aber ich kann dies nirgends sehen?

0 Stimmen

Nein, das war ehrlich gesagt nur eine Vermutung von mir.

0 Stimmen

@LarryF Dieses Video ansehen: jonas.follesoe.no/2011/07/22/plattformübergreifende-mobile-ndc-2011 Es ist sehr informativ, wie Sie Ihren Code / Multiplattform-Anwendungen strukturieren können.

3voto

Tarik Punkte 529

Mauersegler 3

let locale = Locale.current
let code = (locale as NSLocale).object(forKey: NSLocale.Key.countryCode) as! String?
print(code!)

0 Stimmen

Willkommen bei Stack Overflow! Dieses Stück Code kann zwar die Frage beantworten, aber es ist besser, eine Beschreibung des Problems beizufügen und zu erläutern, wie Ihr Code das Problem lösen wird. Für die Zukunft finden Sie hier einige Informationen, wie man eine geniale Antwort knackt auf Stack Overflow.

3voto

Sasha Prokhorenko Punkte 328

Einfache Swift 3-Funktion:

@discardableResult
func getLanguageISO() -> String {
    let locale = Locale.current
    guard let languageCode = locale.languageCode,
          let regionCode = locale.regionCode else {
        return "de_DE"
    }
    return languageCode + "_" + regionCode
}

2voto

Danboz Punkte 551

Wenn Sie nur die Sprache lernen wollen, hier ist meine vorgeschlagene Antwort:

NSString *langplusreg = [[NSLocale preferredLanguages] objectAtIndex:0];
NSString * langonly = [[langplusreg componentsSeparatedByString:@"-"] 
objectAtIndex:0];

In meinem Fall wollte ich nur die Locale-Sprache, nicht die Locale-Region.

Ausgabe: Wenn Ihre Gebietsschema-Sprache Japanisch und Ihre Gebietsschema-Region Japan ist, dann:

langplusreg = ja-JP

langonly = ja

2voto

Johnny Rockex Punkte 4028
-(NSString *)returnPreferredLanguage { //as written text

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
NSArray *preferredLanguages = [defaults objectForKey:@"AppleLanguages"];
NSString *preferredLanguageCode = [preferredLanguages objectAtIndex:0]; //preferred device language code
NSLocale *enLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en"]; //language name will be in English (or whatever)
NSString *languageName = [enLocale displayNameForKey:NSLocaleIdentifier value:preferredLanguageCode]; //name of language, eg. "French"
return languageName;

}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X