美文网首页
本地实现多语言-ios

本地实现多语言-ios

作者: 桔子橙子柚子_F | 来源:发表于2018-09-11 16:33 被阅读0次

1、新建语言文件,命名为language.strings



2、配置需要用到的语言,我们只用到了中英文



配置好后,language.strings文件下会出现2个文件,一个中文 一个英文

注意:文件中的格式为“key”=“value”; 如:"mine" ="Me"; //我的
接下来就是获取某个文件下的某个值了
3、新建工具类

#import "InternationalControl.h"

@implementation InternationalControl
static NSBundle *bundle = nil;
+ ( NSBundle * )bundle{
    return bundle;
}
+(void)initUserLanguage{
    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
    NSString *string = [def valueForKey:@"userLanguage"];  //保存在本地
    if(string.length <= 0){
        NSArray *appLanguages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];  //获取系统语言  app首次打开显示的语言与系统语言一致
        NSString *languageName = [appLanguages objectAtIndex:0];
        if ([languageName containsString:@"en"]) {   //系统语言为英文
            [def setValue:@"en" forKey:@"userLanguage"];   //英文保存en 为了与服务器保持一致
        }else {
            //获取系统当前语言版本(中文zh-Hans,英文en)
            [def setValue:@"zh-Hans" forKey:@"userLanguage"];
        }
        [def synchronize];//持久化,不加的话不会保存
    }
    //获取文件路径
    NSString *path = [[NSBundle mainBundle] pathForResource:string ofType:@"lproj"];
    bundle = [NSBundle bundleWithPath:path];//生成bundle
}
//获取当前选择的语言
+(NSString *)userLanguage{
    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
    NSString *language = [def valueForKey:@"userLanguage"];
    return language;
}
//选择某种语言 保存到本地
+(void)setUserlanguage:(NSString *)language{
    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
    //1.第一步改变bundle的值
    NSString *path = [[NSBundle mainBundle] pathForResource:language ofType:@"lproj"];
    bundle = [NSBundle bundleWithPath:path];
    //2.持久化
    [def setValue:language forKey:@"userLanguage"];
    [def synchronize];
}

4、初始化语言

[InternationalControl initUserLanguage];

5、加载语言

#define GetLanguageForkey(a) [Utils setTitleWithKey:a]
+ (NSString *)setTitleWithKey:(NSString *)key {
    return [[InternationalControl bundle] localizedStringForKey:key value:nil table:@"language"];
}

6、切换语言

[InternationalControl setUserlanguage:@"en"];

文章借鉴http://blog.csdn.net/yang8456211/article/details/12031667

相关文章

  • 本地实现多语言-ios

    1、新建语言文件,命名为language.strings 2、配置需要用到的语言,我们只用到了中英文 注意:文件中...

  • IOS 多语言本地化 完美解决方案【自动+手动】

    多语言本地化,是我们在做IOS项目的时候经常用的,下面根据自己的经验和使用场景,来全面的说说多语言本地化的解决方案...

  • IOS 多语言本地化 完美解决方案【自动+手动】

    多语言本地化,是我们在做IOS项目的时候经常用的,下面根据自己的经验和使用场景,来全面的说说多语言本地化的解决方案...

  • iOS 多语言版本的开发(一)

    iOS 多语言版本的开发(一) 引言 多语言 & 本地化,随你怎么叫,道理差不多;一个App 要想走出国门,只支持...

  • iOS 多语言版本的开发(三)

    iOS 多语言版本的开发(三) 写在前面 iOS 多语言版本的开发(二) 中我们实现了如何让用户自己去切换系统语言...

  • iOS 多语言版本的开发

    iOS 多语言版本的开发 iOS 多语言版本的开发(一) iOS 多语言版本的开发(二)

  • iOS 多语言全局适配

    本文记录iOS 多语言全局适配解决方案,适用于项目中后期快速适配多语言; 实现思路:runtime method ...

  • 2018-12-29

    H5对接多语言平台 首先,对接多语言平台我们需要将本地的多语言给到多语言平台,但是多语言平台那边识别不了我们本地文...

  • 本地推送闹钟功能实现

    本地推送闹钟功能实现 在ios10下使用UserNotifications用本地推送实现闹钟功能,只是实现了简单的...

  • iOS 本地化/国际化 多语言 开发/上架

    iOS 本地化/国际化 多语言 开发/上架 因为项目有同时面对大陆和海外市场的需求,所以需要做本地化处理。 1)开...

网友评论

      本文标题:本地实现多语言-ios

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