美文网首页
iOS-实现多语言

iOS-实现多语言

作者: 空白Null | 来源:发表于2016-10-17 20:17 被阅读26次

1.在Project设置,添加中英两种语言:

2.新建Localizable.strings文件,作为多语言对应的词典,存储多种语言,点击右侧Localization,勾选中英:

3.添加一个字段,

在English中,添加:SUBMIT_BTN_TITLE = Go;

在Chinese中,添加:SUBMIT_BTN_TITLE = 开始;

4.一个工具类GDLocalizableController,用来切换本地语言:

//

//  GDLocalizableController.h

//  guide-book

//

#import

@interface GDLocalizableController : NSObject

+(NSBundle *)bundle;//获取当前资源文件

+(void)initUserLanguage;//初始化语言文件

+(NSString *)userLanguage;//获取应用当前语言

+(void)setUserlanguage:(NSString *)language;//设置当前语言

@end

//

//  GDLocalizableController.m

//  guide-book

//

#import GDLocalizableController.h

@implementation GDLocalizableController

static NSBundle *bundle = nil;

+ ( NSBundle * )bundle{

return bundle;

}

+(void)initUserLanguage{

NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

NSString *string = [def valueForKey:@userLanguage];

if(string.length == 0){

//获取系统当前语言版本

NSArray* languages = [def objectForKey:@AppleLanguages];

NSString *current = [languages objectAtIndex:0];

string = current;

[def setValue:current 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];

}

@end

5. 自定义一个宏方便处理:

// ----- 多语言设置

#define CHINESE @zh-Hans

#define ENGLISH @en

#define GDLocalizedString(key) [[GDLocalizableController bundle] localizedStringForKey:(key) value:@ table:nil]

6.使用:

[GDLocalizableController setUserlanguage:CHINESE];

NSLog(GDLocalizedString(@SUBMIT_BTN_TITLE));

[GDLocalizableController setUserlanguage:ENGLISH];

NSLog(GDLocalizedString(@SUBMIT_BTN_TITLE));

相关文章

  • iOS-实现多语言

    1.在Project设置,添加中英两种语言: 2.新建Localizable.strings文件,作为多语言对应的...

  • Flutter 多语言&多主题实现

    目录 多语言实现 多主题实现 状态管理 切换多语言 切换多主题 多语言实现 1. AndroidStudio-> ...

  • iOS-自己实现个NSNotificationCenter

    iOS-自己实现个NSNotificationCenter 代码地址 实现原理类似多播委托 1.指定objc的实现...

  • iOS - KVO

    [toc] 参考 KVO KVC 【 iOS--KVO的实现原理与具体应用 】 【 IOS-详解KVO底层实现 】...

  • iOS-多语言配置

    第一.简单版 第二.最新版 点我传送 第三.详细版 点我传送 第四.多语言启动页 跨星际传送门

  • iOS多语言构建技巧

    虽说是讲多语言,但是这里不讲怎么实现多语言,因为各大网站都有说,而且这个技术不在话下。 今天来讲讲构建多语言文件,...

  • iOS多语言构建技巧

    虽说是讲多语言,但是这里不讲怎么实现多语言,因为各大网站都有说,而且这个技术不在话下。 今天来讲讲构建多语言文件,...

  • asp.net core 基于 JSON 实现多语言

    asp.net core 基于 JSON 实现多语言 Intro 上次我们提到了,微软默认提供基于资源文件的多语言...

  • rxjs - i18n

    目的 实现网页多语言的切换 依赖 react,rxjs,useObservable感觉就是简单,简单,简单 实现 ...

  • iOS 多语言全局适配

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

网友评论

      本文标题:iOS-实现多语言

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