Files
peko-ios/YuMi/Tools/Bundle/NSBundle+Localizable.m
2024-10-23 19:08:51 +08:00

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