2013-02-26 13 views
6

Jak uzyskać listę wszystkich dostępnych lokalizacji?xcode iOS uzyskiwanie listy wszystkich lokalizacji

Mam aplikację z pięcioma lokalizacjami. Muszę wiedzieć, czy bieżące ustawienia regionalne znajdują się na tej liście, a jeśli nie, utwórz rezerwę. Ale jak mogę sprawdzić, czy bieżące ustawienia narodowe znajdują się na tej liście?

+0

[NSLocale currentLocale]; –

+0

Następnie porównaj z tablicą wszystkich lokalizacji –

+0

dobrze - choć to - ale to trochę uciążliwe, prawda? Nie ma sposobu, aby dowiedzieć się, które języki zostały zlokalizowane programowo zamiast zachować listę? – Swissdude

Odpowiedz

2

Najprostszym sposobem sprawdzenia, czy bieżące ustawienia narodowe są obsługiwane, byłoby dodanie do wszystkich pięciu obsługiwanych lokalizacji specjalnego "łańcucha" testowego (powiedzmy: @"IsSupported" = @"Yes"). Wtedy to prosta kontrola zadziała:

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

Czy nie powinno to być powrotem do języka programowania i zwrócić "Tak", jeśli ustawienia regionalne nie są zdefiniowane? –

7

Dla mnie przyjętego rozwiązania nie działa, jeśli język nie był wspierany - App prostu spaść z powrotem na angielski i jako plik angielski struny zawarte „IsSupported” string - powrócił " TAK".

miałem użyciu tego rozwiązania

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

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

Nie sądzę, że to zadziała - 'preferredLanguages' zwraca ciągi takie jak 'pt-BR', 'en-US', ale lokalizacja zwraca ciągi takie jak" pt "," en ". – Bill

+0

Przeczytaj '[[NSBundle mainBundle] preferredLocalizations]' zamiast '[NSLocale preferredLanguages]'. To zwróci "en", "cs", etc ... –

Powiązane problemy