2017-04-12 4 views
0

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

+0

Beide Versionen funktionieren für mich im 10.3 Simulator unter Xcode 8.3.1 –

+0

Könnte ein Spielplatz Problem sein. – rmaddy

+0

@ChrisAllwein interessant, meine App funktioniert nicht richtig, wenn ich nur 'current' anstelle von separaten Gebietsschema zu initialisieren:/ – njuri

Antwort

0

Sie müssen eine Tabelle verwalten, die jeden Ländercode einem Standardsprachcode zuordnet, z. B. this table auf Wikipedia. Wählen Sie für jedes Land eine Standardsprache aus, da es mehrere offizielle Sprachen oder sogar Variationen derselben Sprache (vereinfachtes oder traditionelles Chinesisch) haben kann.

Verwandte Themen