Ich habe eine Reihe von Ländercodes wie: ["US","CZ","FR"]
usw. und ich möchte lokalisierte Ländernamen erhalten, die durch dieses Array iterieren.Name des empfangenden Landes aus dem Regionalcode
Zuvor localizedString(forRegionCode:)
hat perfekt funktioniert. Aber wahrscheinlich seit 10.3 hat sich etwas geändert.
Hier ist ein Beispiel:
let currentLocale = Locale.current
// en_US (current)
let currentIdentifier = Locale.current.identifier
// "en_US"
let localeFromCurrentIdentifier = Locale(identifier: currentIdentifier)
// "en_US" (fixed)
let franceCode = "fr"
let franceName = currentLocale.localizedString(forRegionCode: franceCode)
// nil
let franceName2 = localeFromCurrentIdentifier.localizedString(forRegionCode: franceCode)
// "France"
Warum aktuelle Locale gibt nil
für Frankreich Code und der aus der aktuellen locale Kennung initialisiert locale gibt France
?
Update: So die Abhilfe zu machen localizedString(forRegionCode:)
Arbeit ist nicht Locale.current
zu verwenden, aber Locale(identifier: Locale.current.identifier)
.
Beide Versionen funktionieren für mich im 10.3 Simulator unter Xcode 8.3.1 –
Könnte ein Spielplatz Problem sein. – rmaddy
@ChrisAllwein interessant, meine App funktioniert nicht richtig, wenn ich nur 'current' anstelle von separaten Gebietsschema zu initialisieren:/ – njuri