美文网首页
iOS 国际化 强制默认显示某种语言

iOS 国际化 强制默认显示某种语言

作者: 双门 | 来源:发表于2020-07-15 16:35 被阅读0次

    场景需求 :
    在系统语言选定为中文时,App 语言为 中文
    其他情况下全部作 英文 显示

    因此需要添加系统语言读取,经过判断后直接调用我需要的某种语言对应的值来显示。

    // 在 Appdelegate.m 中添加系统语言检测与赋值
    NSArray *languages = [NSLocale preferredLanguages];
    NSString *language = [languages objectAtIndex:0];
    if ([language hasPrefix:@"zh"]) { // 检测开头匹配, 是否为中文
    [[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:@"appLanguage"]; // App语言设置为中文
    } else { // 其他语言
    [[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:@"appLanguage"]; // App语言设置为英文
    }
    
    // 在需要的部分添加手动选取语言的宏, 并调用得到对应的值
    // 宏
    #define Localized(key)  [[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(key) value:nil table:@"Localizable"]
    
    // 调用
    self.label.text = Localized(@"mainText");
    
    

    选定系统语言为中文,安装App并运行,之后修改系统语言为日文,使用 NSLocalizedString 国际化的文字显示为中文,使用自定义宏 Localized 国际化的文字显示为英文。

    相关文章

      网友评论

          本文标题:iOS 国际化 强制默认显示某种语言

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