美文网首页
iOS 国际化多语言(下)

iOS 国际化多语言(下)

作者: 卟过尔尔 | 来源:发表于2021-09-29 15:33 被阅读0次

    前言

    上一片文章介绍的是根据系统语言自动切换,现在我们来说说怎么在APP中手动切换多语言。
    iOS 国际化多语言(上)

    配置

    配置内容还是和上篇文章一样,不知道的可以点击上面链接。

    步骤

    先新建一个Strings File 文件(iOS->Resource->Strings File)。文件名称Language,名称可以随意,放的位置也可以随意。

    新建Language文件 然后选择这个文件,右边点击Localize,会弹出一个对话框,展开对话框列表,发现下拉列表所展示的语言正是我们在上面配置的需要国际化的语言,选择我们需要本地化的语言,然后点击对话框的Localize按钮。 选择语言 在中文文件和英文文件中添加对应的内容 英文 中文 启动时判断一下系统语言,在AppDelegate中的didFinishLaunchingWithOptions方法里设置语言,也可以自己写死中文什么的。用NSUserDefaults本地保存记录设置的语言。 首次设置语言
    if (![[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]) {
            NSArray *languages = [NSLocale preferredLanguages];
            NSString *language = [languages objectAtIndex:0];
            if ([language hasPrefix:@"zh-Hans"]) {//开头匹配
                [[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:@"appLanguage"];
            }else{
                [[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:@"appLanguage"];
            }
            [[NSUserDefaults standardUserDefaults] synchronize];
        }
    

    修改语言,我们可以第一个宏,或者自行封装

    // 宏
    #define Localized(key)  [[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(key) value:nil table:@"Language"]
    
    // 方法
    NSString *str = [[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"];
    NSString *path = [[NSBundle mainBundle] pathForResource:str ofType:@"lproj"];
    NSBundle *bundle = [NSBundle bundleWithPath: path];
    NSString *value = [bundle localizedStringForKey:strL value:nil table:@"Language"];
    
    使用

    相关文章

      网友评论

          本文标题:iOS 国际化多语言(下)

          本文链接:https://www.haomeiwen.com/subject/jfjjnltx.html