2015-09-25 24 views
5

Dato che io creo iOS Apps Io uso il seguente codice di tradurre/localizzare le mie applicazioni:La localizzazione non funziona più sotto iOS 9/iOS 9.0.1

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

Ma dal momento che l'aggiornamento a iOS 9 questo codice fa non funziona più Tutte le mie app sono ora in inglese.

Né le app che ho già nell'app store, né le app che eseguo nel simulatore sono più localizzate.

Sarebbe bello se potesse dire come devo tradurre il mio codice di programmazione in iOS 9.

+0

Cosa ottieni per 'lingua'? – zaph

+0

Ho sempre "en". In realtà eseguo l'app in tedesco, quindi dovrei ottenere: "de". – EANicolas1

+0

Forse è correlato al seguente bug http://stackoverflow.com/questions/33017981/ios-localization-doesnt-work-with-more-than-63-files?newreg=5def7e334c554377be788b1ce2eace3e –

risposta

1

ho potuto risolvere il problema.

Se uso il seguente codice della localizzazione funziona sotto iOS 9.

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

Spero che vi aiuterà alcuni di voi, anche.

0

Suggerirei di utilizzare una classe di classe per localizzare le stringhe per la lingua specificata che rileva automaticamente la lingua corrente e localizza la stessa.

Creare una classe categoria con nome RunTimeLanguage

file h

#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 

di file .m

#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 

È possibile accedere direttamente al valore localizzato utilizzando seguito dichiarazione.

NSLocalizeString(@"yourText", nil) 
Problemi correlati