2015-09-25 35 views
5

Kể từ khi tôi tạo Apps iOS Tôi sử dụng đoạn mã sau để dịch/bản địa hoá ứng dụng của tôi:Localization không hoạt động nữa dưới iOS 9/iOS 9.0.1

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

Nhưng kể từ khi cập nhật lên iOS 9 mã này không không hoạt động nữa. Tất cả các ứng dụng của tôi hiện bằng tiếng Anh.

Cả ứng dụng tôi đã có trong cửa hàng ứng dụng hoặc ứng dụng tôi chạy trong Trình mô phỏng đều được bản địa hóa nữa. Nếu bạn có thể cho tôi biết cách dịch mã của tôi theo chương trình trong iOS 9.

+0

Bạn nhận được gì cho 'ngôn ngữ'? – zaph

+0

Tôi luôn nhận được "vi". Thực ra tôi chạy ứng dụng bằng tiếng Đức, vì vậy tôi sẽ nhận được: "de". – EANicolas1

+0

Có thể nó liên quan đến lỗi sau http://stackoverflow.com/questions/33017981/ios-localization-doesnt-work-with-more-than-63-files?newreg=5def7e334c554377be788b1ce2eace3e –

Trả lời

1

Tôi có thể giải quyết vấn đề.

Nếu tôi sử dụng đoạn mã sau localization làm việc dưới iOS 9.

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

Tôi hy vọng rằng sẽ giúp một số bạn, quá.

0

Tôi khuyên bạn nên sử dụng lớp danh mục để Bản địa hóa các chuỗi cho ngôn ngữ được chỉ định tự động phát hiện ngôn ngữ hiện tại và bản địa hóa giống nhau.

Tạo một lớp loại với Tên RunTimeLanguage

tập tin .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 

.m tập tin

#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 

Bạn có thể truy cập trực tiếp các giá trị cục bộ bằng cách sử dụng dưới đây tuyên bố.

NSLocalizeString(@"yourText", nil) 
Các vấn đề liên quan