80 lines
2.6 KiB
Objective-C
80 lines
2.6 KiB
Objective-C
//
|
|
// NSBundle+Localizable.m
|
|
// YuMi
|
|
//
|
|
// Created by YuMi on 2023/6/19.
|
|
//
|
|
|
|
#import "NSBundle+Localizable.h"
|
|
#import <objc/runtime.h>
|
|
|
|
// 定义常量用于存储当前语言的 key
|
|
static NSString * const kSaveCurLanguageKey = @"kSaveCurLanguage";
|
|
static NSString * const kResourceType = @"lproj";
|
|
|
|
@implementation NSBundle (Localizable)
|
|
|
|
+(void)load{
|
|
Method oldMethod = class_getClassMethod(self, @selector(mj_localizedStringForKey:));
|
|
Method newMethod = class_getClassMethod(self, @selector(ms_localizedStringForKey:));
|
|
method_exchangeImplementations(oldMethod, newMethod);
|
|
}
|
|
+ (NSString *)ms_localizedStringForKey:(NSString *)key{
|
|
return YMLocalizedString(key);
|
|
}
|
|
+(NSString *)ymLocalizedStringForKey:(NSString *)key
|
|
{
|
|
return [self ymLocalizedStringForKey:key value:@""];
|
|
}
|
|
|
|
+(NSString *)ymLocalizedStringForKey:(NSString *)key value:(NSString *)value
|
|
{
|
|
NSString *language = [NSBundle getLanguageText];
|
|
NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:language
|
|
ofType:kResourceType]];
|
|
value = [bundle localizedStringForKey:key
|
|
value:value
|
|
table:nil];
|
|
return value;
|
|
}
|
|
|
|
+(NSString *)getLanguageText{
|
|
NSString *saveLanguage = [[NSUserDefaults standardUserDefaults] valueForKey:kSaveCurLanguageKey];
|
|
if (saveLanguage){
|
|
return saveLanguage;
|
|
}
|
|
|
|
NSString *preferredLanguage = [NSLocale preferredLanguages].firstObject;
|
|
return [self mapLanguageForLocalization:preferredLanguage];
|
|
}
|
|
|
|
+(NSString *)uploadLanguageText{
|
|
NSString *saveLanguage = [[NSUserDefaults standardUserDefaults]valueForKey:kSaveCurLanguageKey];
|
|
if (saveLanguage){
|
|
return [self mapLanguageForLocalization:saveLanguage];
|
|
}
|
|
|
|
NSString *preferredLanguage = [NSLocale preferredLanguages].firstObject;
|
|
return [self mapLanguageForLocalization:preferredLanguage];
|
|
}
|
|
|
|
+(void)setLanguageText:(NSString *)language{
|
|
[[NSUserDefaults standardUserDefaults]setValue:language forKey:kSaveCurLanguageKey];
|
|
[[NSUserDefaults standardUserDefaults]synchronize];
|
|
}
|
|
|
|
// 辅助方法,用于映射本地化语言
|
|
+ (NSString *)mapLanguageForLocalization:(NSString *)language {
|
|
if ([language hasPrefix:@"zh"]) {
|
|
return @"zh-Hant"; // 繁体中文
|
|
} else if ([language hasPrefix:@"ar"]) {
|
|
return @"ar"; // 阿拉伯语
|
|
} else if ([language hasPrefix:@"tr"]) {
|
|
return @"tr"; // 土耳其语
|
|
} else {
|
|
return @"en"; // 默认英文
|
|
}
|
|
}
|
|
|
|
@end
|