0

我想将我的应用程序保留在其中一个区域中,并且我想在不更改本地语言或区域设置的情况下本地化应用程序,特别是对于 iOS 9,有没有办法在不更改 ios 系统设置的情况下本地化应用程序?

4

1 回答 1

1
 [NSBundle setLanguage:@"ar"];

在 @autoreleasepool 之前的 main.m

#import "NSBundle+Language.h"
#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
于 2015-10-05T13:04:05.403 回答