2013-02-26 12 views
6

Come posso ottenere un elenco di tutte le localizzazioni disponibili?xcode iOS ottenendo un elenco di tutte le localizzazioni

Ho un'app con cinque localizzazioni. Devo sapere se la locale corrente è in quella lista e in caso contrario, creare una riserva. Ma come faccio a sapere se la locale corrente è in quell'elenco?

+0

[NSLocale currentLocale]; –

+0

Quindi confrontare con la matrice di tutte le localizzazioni –

+0

bene - io però quello - ma questo è un po 'macchinoso, non è vero? Non c'è un modo per scoprire quali lingue sono state localizzate a livello di programmazione invece di tenere una lista? – Swissdude

risposta

2

Il modo più semplice per scoprire se la locale corrente è supportata o meno sarebbe aggiungere una stringa "test" speciale (ad esempio, @"IsSupported" = @"Yes") a tutte e cinque le localizzazioni supportate. Poi un semplice controllo funzionerà:

BOOL supported = [NSLocalizedString(@"IsSupported", nil) isEqualToString:@"Yes"]; 
+1

Non dovrebbe questo fallback nella lingua di sviluppo e restituire "Sì" se la locale non è definita? –

7

Per me soluzione accettata non ha funzionato, se il linguaggio non è stato sostenuto - App semplicemente ricadere a inglese e, come ci sono file stringhe inglese stringa "isSupported" - è tornato " SÌ".

ho dovuto usare questa soluzione

NSString* currentLanguage = [NSLocale preferredLanguages][0]; 
NSArray* supportedLocalizations = [[NSBundle mainBundle] localizations]; 

if ([supportedLocalizations containsObject:currentLanguage]) { 
    isLocalizedToCurrentLanguage = YES; 
} 
else { 
    isLocalizedToCurrentLanguage = NO; 
} 
+0

Non penso che funzionerà - 'preferredLanguages' restituisce stringhe come 'pt-BR', 'en-US' ma le localizzazioni restituiscono stringhe come 'pt', 'en'. – Bill

+0

Leggi '[[NSBundle mainBundle] preferredLocalizations]' invece di '[NSLocale preferredLanguages]'. Ciò restituirà "en", "cs", ecc ... –

Problemi correlati