iOS本地化/国际化/多语言切换(Objective-C)
2018-03-10 本文已影响0人
Raywf
2018.3.10
demo下载地址 GitHub
demo是基于objective-c的纯代码实现,已剥离xib,关于xib的本地化实现,这里没有。
README
1. Info.plist文件不可以本地化
因为本地化之后,Info.plist文件被移动至本地化语言文件夹中,项目根目录下不存在Info.plist文件,系统读取不到元数据,程序无法加载。
2. 利用InfoPlist.strings文件和CFBundleDisplayName,实现应用名称的本地化显示
但是,该本地化显示仅支持跟随系统语言设定。
3.同样的,通过在(2.)中的文件中设置相应的权限的Key,也可以实现权限提示内容的本地化
同理本地化显示也仅支持跟随系统语言设定。
功能文件
简单的代码为应用实现多语言的功能,不使用更加清晰的枚举值来表示不同语言,是为了便于二次开发/自定义需求的实现。
RFLanguageHelper.h
RFLanguageHelper.m
调用方式
1.在AppDelegate中的didFinishLaunchingWithOptions方法中调用初始化方法:
[RFLanguageHelper InitLanguageHelper:@"本地化多语言文件名"];
2.基本调用,示例代码:self.title = RFLanguage(@"标题");
3.多语言切换,示例代码:详见demo中的 ViewController.m 文件。
补充
2018.3.30更新
发现的bug,
不同的手机版本,语言码对应的语言会不一样。。
解决方案如下,
新增一个方法 + (NSInteger)LanguageCodeViaKey:(NSString *)key
运行时利用新的方法获取到准确的语言码,而后做相应的设定