Для этого есть «взлом».Вы можете загрузить свой собственный NSBundle с локализованным текстом и использовать вместо него этот NSBundle.Обратите внимание, что если локализованный языковой файл отсутствует, приложение не запустится, поэтому убедитесь, что вы указали правильный язык.
Над реализацией AppDelegate добавьте пользовательское объявление NSBundle:
static NSBundle *bundle = nil;
И затем загрузите нужный язык в этот пакет:
[[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"he", nil] forKey:@"AppleLanguages"];
NSLocale* locale = TTCurrentLocale();
NSString *path = [[NSBundle mainBundle] pathForResource:[locale localeIdentifier] ofType:@"lproj" ];
bundle = [[NSBundle bundleWithPath:path] retain];
Вы добавите пользовательскую функцию в свой AppDelegate, чтобы получить локализованный текст (вместо NSLocalizedString)
///////////////////////////////////////////////////////////////////////////////////////////////////
+ (NSString*)get:(NSString*)key {
return [bundle localizedStringForKey:key value:nil table:nil];
}
Чтобы упростить задачу, вы можете добавить статическую функцию в файл pch:
#import "AppDelegate.h"
#define MyLocalizedString(key, alt) [AppDelegate get:key]