日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

iOS之多语言开发

發布時間:2024/9/5 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 iOS之多语言开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前要:iOS多語言開發,可以分為兩種

系統設置,通過在手機設置中切換語言,進而改變app中語言;
app中手動切換,用戶在app中,手動選擇語言,進行切換。

一.添加需要的語言

不管使用哪種方法,都需要先添加語言,這一點是相同的。

在項目的project中添加語言

添加完成后是這樣的

創建Localizable.strings 文件

文件名是 Localizable,也可以更改其它名,后面會講到

上面都完成后,項目是這樣的

在每個語言的.string文件中,把項目中的所有需顯示的文字,按照key-value 的形式放進去。

至此,所有的前置工作都完成了。

二. 代碼部分

1.使用系統設置切換語言

使用系統設置切換語言,比較簡單,直接上代碼:

 1     NSArray *array = @[@"中文",@"英文",@"法語",@"韓語"];
 2     for (int i=0; i<4; i++) {
 3         UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
 4         btn.frame = CGRectMake(100, 200+70*i, 200, 40);
 5         btn.backgroundColor = [UIColor orangeColor];
 6         
 7         //第一種:使用系統設置語言
 8         [btn setTitle:NSLocalizedString(array[i], nil) forState:UIControlStateNormal];
 9         
10         [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
11         [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
12         btn.tag = i+10;
13         [self.view addSubview:btn];
14     }

直接使用NSLocalizedString(key, comment)方法,“key”就是Localizable.strings文件中的我們設置的key, “comment”寫niu即可

如此,只要在手機 設置-通用-語言與地區 中,切換語言,再打開app,app中文字就會切換成對應的語言。

2.app中手動切換語言

- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSArray *array = @[@"中文",@"英文",@"法語",@"韓語"];
    for (int i=0; i<4; i++) {
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
        btn.frame = CGRectMake(100, 200+70*i, 200, 40);
        btn.backgroundColor = [UIColor orangeColor];
        
        //第一種:使用系統設置語言
        //[btn setTitle:NSLocalizedString(array[i], nil) forState:UIControlStateNormal];
        
        //第二種,app中手動選擇語言
        [btn setTitle:KLanguage(array[i]) forState:UIControlStateNormal];
        
        [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
        btn.tag = i+10;
        [self.view addSubview:btn];
    }
    
    
}

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

    UIWindow *window = [UIApplication sharedApplication].delegate.window;
    [UIView animateWithDuration:0.4f animations:^{
        CGAffineTransform curent =  window.transform;
        CGAffineTransform scale = CGAffineTransformScale(curent, 0.0001,0.0001);
        [window setTransform:scale];
    } completion:^(BOOL finished) {
        exit(0);
    }];
    
}

每次選擇語言后,保存到本地

這里用了一個宏:

#define KLanguage(key)  [[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] 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 = [[NSUserDefaults standardUserDefaults]objectForKey:@"appLanguage"];
    if (!currentLanguage) {
        //獲得當前語言
        NSArray *languages = [NSLocale preferredLanguages];
        NSString *language = [languages objectAtIndex:0];
        if([language hasPrefix:@"en"]){
            [[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:@"appLanguage"];
        }else if([language hasPrefix:@"zh-Hans"]){
            [[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:@"appLanguage"];
        }else{
            [[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:@"appLanguage"];
        }
        [[NSUserDefaults standardUserDefaults]synchronize];
    }
    
    
    [self.window makeKeyAndVisible];
    
    return YES;
}

代碼演示:

進入app:

點擊英文,重新進入app:

點擊韓語:

總結

以上是生活随笔為你收集整理的iOS之多语言开发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。