2015-09-25 3 views
5

Da ich iOS Apps erstellen verwende ich den folgenden Code meine apps zu übersetzen/lokalisieren:Lokalisierung nicht mehr unter iOS funktioniert 9/iOS 9.0.1

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

Aber seit dem Update auf iOS 9 dieser Code tut nicht mehr arbeiten. Alle meine Apps sind jetzt in Englisch.

Weder die Apps, die ich bereits im App Store habe, noch die Apps, die ich im Simulator verwende, sind nicht mehr lokalisiert.

Es wäre toll, wenn Sie mir sagen, wie könnte ich meinen Code programmatisch in iOS müssen 9.

+0

Was bekommen Sie für 'Sprache'? – zaph

+0

Ich bekomme immer "en". Eigentlich betreibe ich die App auf Deutsch, also sollte ich: "de" bekommen. – EANicolas1

+0

Vielleicht ist es mit dem folgenden Fehler verwandt http://StackOverflow.com/Questions/33017981/ios-Localization-doesnt-Work-with-More-Than-63-files?newreg=5def7e334c554377be788b1ce2eace3e –

Antwort

1
übersetzen

ich das Problem lösen könnte.

Wenn ich den folgenden Code verwenden, die Lokalisierung unter iOS arbeitet 9.

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

Ich hoffe, dass einige von ihnen helfen wird, auch.

0

Ich würde vorschlagen, eine Kategorie-Klasse für die Lokalisierung von Strings für die angegebene Sprache zu verwenden, die automatisch die aktuelle Sprache erkennt und diese lokalisiert.

eine Kategorie Klasse erstellen mit Namen RunTimeLanguage

.h-Datei

#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-Datei

#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 

Sie direkt den lokalisierten Wert unter Verwendung von unter Anweisung zugreifen können.

NSLocalizeString(@"yourText", nil)