iOS APP多语言开发(国际化)

项目开发中考虑到不同国家的用户,不同国家的语言,因而在APP里面做了多语言(即为:APP内部切换语言),这里有个问题,(未考虑手机系统的语言,我们将APP语言设置之后,直接保存在本地,当APP下次进入时候直接加载我们本地保存的语言,类似于微信的多种语言选择)
1、使用Xcode新建项目,我们叫做ManyLanguage,
2、创建Strings Files 文件,此处需要注意,APP的名称name必须为:InfoPlist.strings,我们APP里面用到的文件名必须为:Localizable.strings,
这里写图片描述
选中右边操作Localization
这里写图片描述
选中语言
这里写图片描述
添加自己需要的语言种类
这里写图片描述
设置应用名称
这里写图片描述
创建应用内部需要的string文件 ,创建 Localizable.strings文件
此处略过方法同上,需要注意的是应用内部key value 格式为:
“key” = “value”;(;不能少)
接下来我们编写代码,首先在Localizable.strings文件里面按照key value格式确定需要国际化的地方,
这里写图片描述
这里写图片描述
这里我们使用英语和柬埔寨高棉语;
好了到这一步,我们所有需要创建的部分全部完成,接下来我们编写代码,我们创建一个NSBundle的类目(NSBundle+Language)
写一个类方法
+(void)setLanguageTo:(NSString*)string;
方法实现
{

    static dispatch_once_t onceToken;
   dispatch_once(&onceToken, ^{
    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);

}
我们在需要的地方直接调用方法设置语言,此处需要注意的是
setLanguageTo后面的NSString为语言编码如:中文”zh-Hans”,英文 “en”,高棉文”kh”对应的每种语言,在创建语言的时候后面括号里面都有
-(IBAction)chinaActoion:(id)sender{
//语言设置为中文
[self changeLanguage:@”zh-Hans”];
}
设置好语言之后,我们使用NSUserDefaults直接保存

-(void)changeLanguage:(NSString *)language
{

[NSBundle setLanguage:language];
// 然后将设置好的语言存储好,下次进来直接加载
[[NSUserDefaults standardUserDefaults] setObject:language forKey:@"myLanguage"];
[[NSUserDefaults standardUserDefaults] synchronize];

// 我们要把系统windown的rootViewController替换掉
TabBarViewController *tab = [[TabBarViewController alloc] init];
[UIApplication sharedApplication].keyWindow.rootViewController = tab;

}
当APP退出重新进入时候,在appdelegate里面设置

-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"myLanguage"] && ![[[NSUserDefaults standardUserDefaults] objectForKey:@"myLanguage"] isEqualToString:@""]) {
    [NSBundle setLanguage:[[NSUserDefaults standardUserDefaults] objectForKey:@"myLanguage"]];
}


// 创建主页面
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = [[TabBarViewController alloc] init];
[self.window makeKeyAndVisible];

return YES;

}

此处我们已经APP内部完成多语言的设置 ,demo 我稍后上传

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值