NSUserDefaults *userDefaults = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"];
NSArray *langArr = [userDefaults valueForKey:@"AppleLanguages"];
第一语言是中文,定义一个 NSUserDefaults key value 保存当前语言。
@implementation NSBundle (JJLanguage)
+ (void)setLanguage:(NSString *)language {
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);
}
调用者个方法,修改App语言。
在项目-> Project -> info -> Localizations
添加不同的语言包。
key -> value
英语
日语
中文
宏定义
#define kxLocal(key) NSLocalizedStringFromTable(key, @"Kx", nil);
使用
kxLocal(@"Delete");
或封装
+(NSString *)kxLocalized:(NSString *)key{
NSString *str = kxLocal(key);
return str;
}
例: 带参数
语音包 -> "No.%@" = "第%@名";
NSString *numStr = kxLocal(@"No.%@");
_label.text = [NSString localizedStringWithFormat:numStr,@"5"];