2015-09-25 39 views
5

Ponieważ tworzę iOS używam następujący kod do przetłumaczenia/zlokalizować moje aplikacje:Localization już nie działa pod iOS 9/iOS 9.0.1

NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; 
if ([language isEqualToString:@"de"]) { 
    // localized language 
} 
else { //base language 
} 

Ale od aktualizacji do iOS 9 robi to kod już nie działa. Wszystkie moje aplikacje są teraz w języku angielskim.

Ani aplikacje, które już mam w sklepie App Store, ani aplikacje uruchamiane w Symulatorze są już zlokalizowane.

Byłoby wspaniale, gdyby mógł pan powiedzieć mi, jak mam się tłumaczyć mojego kodu programowego w iOS 9.

+0

Co otrzymujesz za "język"? – zaph

+0

Zawsze otrzymuję "en". Właściwie uruchamiam aplikację po niemiecku, więc powinienem otrzymać: "de". – EANicolas1

+0

Może jest to związane z następującym błędem http://stackoverflow.com/questions/33017981/ios-localization-doesnt-work-with-more-than-63-files?newreg=5def7e334c554377be788b1ce2eace3e –

Odpowiedz

1

mogę rozwiązać ten problem.

Jeśli używam następujący kod umiejscowienie działa pod iOS 9.

[[NSBundle mainBundle] preferredLocalizations]; 
NSString *language = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0]; 
     if ([language isEqualToString:@"de"]){ 
      // localization 
     } 
     else { 
      //base language 
     } 

Mam nadzieję, że pomoże niektórzy z was też.

0

Proponuję użyć klasy kategorii do lokalizowania ciągów znaków dla określonego języka, które automatycznie wykrywają bieżący język i lokalizują go.

Utwórz klasę kategorii z nazwy RunTimeLanguage

.h plików

#import <Foundation/Foundation.h> 

@interface NSBundle (RunTimeLanguage) 
#define NSLocalizeString(key, comment) [[NSBundle mainBundle] runTimeLocalizedStringForKey:(key) value:@"" table:nil] 
- (NSString *)runTimeLocalizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName; 

@end 

.m pliku

#import "NSBundle+RunTimeLanguage.h" 

@implementation NSBundle (RunTimeLanguage) 
- (NSString *)runTimeLocalizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName 
{ 
    NSString *StrCurrentLang = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0]; 
    NSString *path= [[NSBundle mainBundle] pathForResource:StrCurrentLang ofType:@"lproj"]; 
    NSBundle *languageBundle = [NSBundle bundleWithPath:path]; 
    NSString *localizedString=[languageBundle localizedStringForKey:key value:key table:nil]; 
    return localizedString; 
} 
@end 

można bezpośrednio uzyskać dostęp do zlokalizowanej przy użyciu wartości poniżej oświadczeniu.

NSLocalizeString(@"yourText", nil)