2011-01-19 13 views
9

Mam zamiar zlokalizować aplikację na iPhone'a. Chcę użyć innego adresu URL, gdy język użytkownika (język systemu iOS) jest niemiecki.Lokalizacja: Jak uzyskać aktualny język użytkownika?

Chcę wiedzieć, czy jest to właściwy sposób na osiągnięcie tego:

NSURL *url = [NSURL URLWithString:@"http://..."]; // english URL 
NSString* languageCode = [[NSLocale preferredLanguages] objectAtIndex:0]; 
if ([languageCode isEqualToString:@"de"]) { 
    url = [NSURL URLWithString:@"http://..."]; // german URL 
} 

Rozumiem, że [NSLocale currentLocale] zwraca się języka w oparciu o bieżący regionie, ale nie język systemu, ani nie [NSLocale systemLocale] pracy.

(nie chcę używać NSLocalizedString tutaj!)

Odpowiedz

13
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSArray *languages = [defaults objectForKey:@"AppleLanguages"]; 
NSString *currentLanguage = [languages objectAtIndex:0]; 

Kod jest OK. Ale będę Doit tak:

NSString *urlString = nil; 
    NSString *languageCode = [[NSLocale preferredLanguages] objectAtIndex:0]; 
    if ([languageCode isEqualToString:@"de"]) { 
     urlString = @"http://..."; 
    }else{ 
     urlString = @"http://..."; 
    } 
    NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]; 
9

Chciałbym po prostu użyć NSLocalizedString patrzeć zlokalizowaną url tak:

NSString* urlString = NSLocalizedString(@"myUrlKey", nil); 

Następnie w swoim Localizable.strings Pliki można po prostu zrobić:

// German 
"myUrlKey" = "http://www.example.com/de/myapp"; 

I

// English 
"myUrlKey" = "http://www.example.com/en/myapp"; 

odpowiednio.

+3

Nie wiem, czy chcesz zostawić odpowiedzialność adresów URL dla zespołu tłumaczy. –

+0

Myślę, że to rozwiązanie jest najlepsze. – jimwan

2

Lepiej używać

[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode]; 

jeśli chcesz przetestować go z Xcode 6 nowych funkcji testowania inny język bez zmiany preferencji systemu.

+0

Uwaga: Obecne ustawienia regionalne nie są takie same, jak preferowany język! Ustawienia regionalne określają sposób porównywania tekstu oraz formatowania liczb i dat. Preferowanym językiem jest język faktyczny. Tak więc użytkownik (jak ja) może używać niemieckiego ustawienia narodowego (aby otrzymać niemieckie daty i zegar 24-godzinny), ale nadal woli używać OS X w języku angielskim. Jeśli chcesz określić, które tłumaczenia mają być wyświetlane, użyj preferowanego języka, a nie ustawienia narodowego! (Wiele aplikacji robi to źle i jest dość denerwujące, gdy dostaję aplikację w języku niemieckim, chociaż wolę angielski). –

Powiązane problemy