Как и в этом вопросе, Как заставить NSLocalizedString использовать определенный язык
Я могу заставить локализовать этот метод.
Заголовочный файл
@interface NSBundle (Language)
+(void)setLanguage:(NSString*)language;
@end
Реализация
#import <objc/runtime.h>
static const char _bundle=0;
@interface BundleEx : NSBundle
@end
@implementation BundleEx
-(NSString*)localizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName
{
NSBundle* bundle=objc_getAssociatedObject(self, &_bundle);
return bundle ? [bundle localizedStringForKey:key value:value table:tableName] : [super localizedStringForKey:key value:value table:tableName];
}
@end
@implementation NSBundle (Language)
+(void)setLanguage:(NSString*)language
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
{
object_setClass([NSBundle mainBundle],[BundleEx class]);
});
objc_setAssociatedObject([NSBundle mainBundle], &_bundle, language ? [NSBundle bundleWithPath: [[NSBundle mainBundle] pathForResource:language ofType:@"lproj"]] : nil, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end
После этого мне нужно локализовать изображение, и в результате мне это нравится. Локализовать каталоги активов
Проблема в том, что я программно изменяю локализацию, она никогда не меняет изображение.
[NSBundle setLanguage:@"en"];
Изменена только моя строка. Как мне это сделать? Я пробовал как с обычным образом, так и с изображением в таких активах. Но это не сработает, если я не изменил свой язык телефона в настройке. Но мне нужно изменить/заставить локализацию программно, а изображение нужно изменить (а не только текст). Могу я знать, как это сделать?