Shun 发表于 2021-9-19 10:01:26

iOS之多语言开发


[*]系统设置,通过在手机设置中切换语言,进而改变app中语言;
[*]app中手动切换,用户在app中,手动选择语言,进行切换。
一、添加需要的语言不管使用哪种方法,都需要先添加语言,这一点是相同的。
[*]在项目的project中添加语言添加完成后是这样的
[*]创建 Localizable.strings 文件
文件名是 Localizable ,也可以更改其它名,后面会讲到
[*]
上面都完成后,项目是这样的

在每个语言的.string文件中,把项目中的所有需显示的文字,按照key-value 的形式放进去。 至此,所有的前置工作都完成了。二、代码部分1.使用系统设置切换语言使用系统设置切换语言,比较简单,直接上代码:NSArray *array = @[@"中文",@"英文",@"法语",@"韩语"];
    for (int i=0; i<4; i++) {
      UIButton *btn = ;
      btn.frame = CGRectMake(100, 200+70*i, 200, 40);
      btn.backgroundColor = ;

      //第一种:使用系统设置语言
      , nil) forState:UIControlStateNormal];

       forState:UIControlStateNormal];
      ;
      btn.tag = i+10;
      ;
    }直接使用 NSLocalizedString(key, comment)方法,“key”就是Localizable.strings文件中的我们设置的key, “comment”写niu即可如此,只要在手机设置-通用-语言与地区中,切换语言,再打开app,app中文字就会切换成对应的语言。2.app中手动切换语言- (void)viewDidLoad {
    ;
   
    NSArray *array = @[@"中文",@"英文",@"法语",@"韩语"];
    for (int i=0; i<4; i++) {
      UIButton *btn = ;
      btn.frame = CGRectMake(100, 200+70*i, 200, 40);
      btn.backgroundColor = ;
      
      //第一种:使用系统设置语言
      //, nil) forState:UIControlStateNormal];
      
      //第二种,app中手动选择语言
      ) forState:UIControlStateNormal];
      
       forState:UIControlStateNormal];
      ;
      btn.tag = i+10;
      ;
    }
   
   
}

-(void)btnClick:(UIButton *)btn{
   
   
   
    NSInteger tag = btn.tag-10;
    if (tag==0) {
      [ setObject:@"zh-Hans" forKey:@"appLanguage"];
    }else if(tag==1){
      [ setObject:@"en" forKey:@"appLanguage"];
    }else if (tag==2){
      [ setObject:@"fr" forKey:@"appLanguage"];
    }else{
      [ setObject:@"ko" forKey:@"appLanguage"];
    }
    [synchronize];

    UIWindow *window = .delegate.window;
    [UIView animateWithDuration:0.4f animations:^{
      CGAffineTransform curent =window.transform;
      CGAffineTransform scale = CGAffineTransformScale(curent, 0.0001,0.0001);
      ;
    } completion:^(BOOL finished) {
      exit(0);
    }];
   
}每次选择语言后,保存到本地这里用了一个宏:#define KLanguage(key)[ pathForResource: objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:key value:nil table:@"Localizable"]"appLanguage":将选择的语言保存在本地,本地偏好设置保存用的key,"Localizable":这就是我们创建的Localizable.strings文件名。也可以用其它名字,只要与宏里的保持一致即可。每种语言对应的字符串:首次进入app,使用系统默认的语言:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //首次进入app,设置语言。自己根据实际情况,设置刚进入app的默认语言
    NSString *currentLanguage = [objectForKey:@"appLanguage"];
    if (!currentLanguage) {
      //获得当前语言
      NSArray *languages = ;
      NSString *language = ;
      if(){
            [ setObject:@"en" forKey:@"appLanguage"];
      }else if(){
            [ setObject:@"zh-Hans" forKey:@"appLanguage"];
      }else{
            [ setObject:@"en" forKey:@"appLanguage"];
      }
      [synchronize];
    }
   
   
    ;
   
    return YES;
}代码演示:进入app:
点击英文,重新进入app:点击韩语:
https://www.cnblogs.com/lfyDragon/p/15305471.html
页: [1]
查看完整版本: iOS之多语言开发