Güncelleme
NSLocalizedString()
"uygulaması içinde dillerini nasıl değiştirilir" (ve varyasyonları) cevap tercih diller için kullanıcının ayarları belirlemek için NSUserDefaults içinde "AppleLanguages" tuşuna erişmek . Bu, bir dil kodu dizisini döndürür, bunlardan ilki, kullanıcı tarafından telefon için ayarlanmış olan ve daha sonra tercih edilenler, bir kaynak tercih edilen dilde mevcut değilse, geri dönüş olarak kullanılır.
İster kendi yaptığınız gibi kendi dil listenizi ayarlamak için setObject: forKey: yöntemini kullanarak isterseniz, kendi uygulamanız için genel ayarı geçersiz kılabilirsiniz. Bu, global olarak belirlenen değere göre öncelikli olacak ve uygulamanızda yerelleştirmeyi gerçekleştiren herhangi bir koda geri dönecektir.
[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", @"en", @"fr", nil] forKey:@"AppleLanguages"];
Not: Bu kod benzer görünümde olacaktır güvenli tarafta olmak için buna uygun bir ön tanımlı diller adını kullandığınızdan emin olun.
Kod snippet'i aşağıdadır, ancak projenizdeki tüm yerelleştirme dosyalarına sahip olmalısınız.
@implementation LocalizeLanguage
static NSBundle *bundle = nil;
+(void)initialize {
NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
NSString *current = [[languages objectAtIndex:0] retain];
[self setLocalizeLanguage:current];
}
/*
[LocalizeLanguage setLocalizeLanguage:@"en"];
[LocalizeLanguage setLocalizeLanguage:@"fr"];
*/
+(void)setLocalizeLanguage:(NSString *)lang {
NSLog(@"preferredLang: %@", lang);
NSString *path = [[ NSBundle mainBundle ] pathForResource:lang ofType:@"lproj" ];
bundle = [[NSBundle bundleWithPath:path] retain];
}
+(NSString *)get:(NSString *)key alter:(NSString *)alternate {
return [bundle localizedStringForKey:key value:alternate table:nil];
}
@end
aşağıdaki sonrası benim cevap kontrol edin: http://stackoverflow.com/a/20257557/306764 –