答案將覆蓋ZDCChatStrings與自定義類捆綁,每當它會從內部轉換列表中呼籲localizedStringForKey方法的返回翻譯。代碼:
#import "NSBundle+Language.h"
#import <UIKit/UIKit.h>
#import <objc/runtime.h>
@interface CustomBundle : NSBundle
@end
@implementation CustomBundle
- (NSString *)localizedStringForKey:(NSString *)key value:(NSString *)value
table:(NSString *)tableName
{
return NSLocalizedStringFromTable(key, g_appDelegate.lang, key);
}
@end
@implementation NSBundle (Language)
+ (void)registerBundle
{
static dispatch_once_t tempToken;
dispatch_once(&tempToken, ^{
NSBundle *bundle = [NSBundle bundleWithPath: [[NSBundle mainBundle] pathForResource: @"ZDCChatStrings" ofType: @"bundle"]];
object_setClass(bundle, [CustomBundle class]);
});
}
@end
某處初始化你的AppDelegate:
[NSBundle registerBundle];
謝謝您的回覆,是的,我知道如何改變這種狀況,我如何改變在運行過程中的語言問題。因此,我可以到達該ZDCChatStrings捆綁軟件並將其設置爲其他語言,而不受iPhone全球語言選擇限制。 –