关于iOS 国际化(类似微信切换语言)

本文详细介绍了如何实现iOS应用的国际化,包括获取App启动时的语言版本,修改应用内部语言设置,设置翻译语言包,以及在代码中使用Localizations进行字符串本地化的方法。通过这些步骤,开发者可以轻松实现类似微信的多语言切换功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)第一次启动App 获取当前App语言版本

NSUserDefaults *userDefaults = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"];

NSArray *langArr = [userDefaults valueForKey:@"AppleLanguages"];

第一语言是中文,定义一个 NSUserDefaults key value 保存当前语言。

(2)修改App内语言版本 

@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语言。



(3)设置翻译语言包

在项目-> Project -> info -> Localizations


添加不同的语言包。


key -> value  

英语

日语

中文


(4)代码中实现

宏定义

#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"];



该篇 近期项目中用到 与 2015年写的 实现方式不一致。个人建议用本篇比较合理,如有大神有更好的实现方案请留言。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值