iOS-多语言配置(strings文件版和bundle版)

同一添加内容

appdelegate.m中 didFinishLanch里面新增方法

    - (void)getlanguage{
        NSArray  *languages = [NSLocale preferredLanguages];
        //判断当前系统语言
        NSString *language = [languages objectAtIndex:0];
        /// 判断上一次系统语言
        NSString *lastSysLanguage = [[NSUserDefaults standardUserDefaults] objectForKey:@"systemLanguage"];

        BOOL sysIsChange = NO;
        if (![language containsString:lastSysLanguage]) {
            sysIsChange = YES;
            /// 设置系统语言
            [[NSUserDefaults standardUserDefaults] setObject:language forKey:@"systemLanguage"];
        }

        NSInteger type = [[NSUserDefaults standardUserDefaults] integerForKey:@"appLanguageType"];
        if (type == 1 && !sysIsChange) {
            language = [[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"];
        }

        if ([language hasPrefix:@"zh"]) {
          //我这里的需求是,如果不是中文,则APP语言都显示成英文,
          //先把它存在NSUserDefaults中
          [[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:@"appLanguage"];
         } else if ([language hasPrefix:@"fr"]){
            [[NSUserDefaults standardUserDefaults] setObject:@"fr" forKey:@"appLanguage"];
        } else if ([language hasPrefix:@"ja"]){
            [[NSUserDefaults standardUserDefaults] setObject:@"ja" forKey:@"appLanguage"];
        } else if ([language hasPrefix:@"ko"]){
            [[NSUserDefaults standardUserDefaults] setObject:@"ko" forKey:@"appLanguage"];
        } else if ([language hasPrefix:@"tr"]){
            [[NSUserDefaults standardUserDefaults] setObject:@"tr" forKey:@"appLanguage"];
        } else{
            //en.lproj 是英文资源包的文件名字
            [[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:@"appLanguage"];
        }
    }

Strings文件版

一.简单版

1.创建一个 Localizable.strings 和 infoPlist.strings文件 (Newfile -- Resource -- String File);
2.点击工程名字,再点击 PROJECT 文件下的工程名字,选择 info  ,再 Locallzation 一栏 添加语言;
3.点击Localizable.strings 和 infoPlist.strings文件,在右侧 Show the file inspector 中点击 Locallzation 按钮 选择一项语言激活Locallzation; 
4.在语言文件里面 以 这种格式 "ALERT_CLOSE" = "关闭"; 两个内容自定,前提是各语言文件中的前缀的KEY:"ALERT_CLOSE"要保持一致;
5.在工程需要使用文字的地方用 宏:NSLocalizedString    ,  第一个@""位置输入 KEY ,第二个@""不填
    例如: lab.text = NSLocalizedString(@"ALERT_AM", @"");
6.完成!

二.最新版
点我传送

三.详细版

点我传送

四.多语言启动页

跨星际传送门

Bundle版

1.新建Bundle文件,生成好对应的多语言文件(en.lproj),并配置好键值对


图片.png

2.定义宏定义,相关参数名配置好对应名字

#define LCLocalizedString(Context, comment)  [NSString stringWithFormat:@"%@", [[NSBundle bundleWithPath:[[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"LCLanguage" ofType:@"bundle"]] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(Context) value:nil table:@"LCLanguage"]]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容