IM 即时通讯 (442)
Android (209)
- 初始化&链接 (8)
- 事件&监听处理 (7)
- 用户信息 (13)
- 会话列表 (16)
- 聊天会话 (26)
- 消息处理 (35)
- 自定义消息 (6)
- 音视频 (2)
- 推送&通知 (34)
- 扩展功能 (4)
- 第三方地图 (3)
- 依赖&配置 (9)
- 升级说明 (3)
- 其他 (43)
iOS (168)
- SDK 导入 (10)
- 连接 (8)
- 事件处理 (2)
- 用户信息 (3)
- 会话列表 (14)
- 聊天会话 (44)
- 消息处理 (26)
- 自定义消息 (8)
- 推送&通知 (19)
- 扩展功能 (5)
- 国际化 (4)
- 音视频 (3)
- 其他 (22)
Web (36)
Server (29)
iOS App 内语言切换
主要讲解了如何实现类似 微信 那种 App 内切换语言功能
发布时间: 2018-07-26 15:32
回答:
详细参考下面 Demo 里面的代码,实现了简单的 App 内语言切换
其实要实现 App 内语言切换思路总共两种:
1:非入侵方式:因为 App 开发的过程中可能会引入各种的 SDK,每个 SDK 可能都会有自身的国际化资源,那么只要要求 所有 SDK 的厂商都提供一个统一的接口来实现自家 SDK 的语言切换就行,但是这个可能性基本上很渺茫,没人能要求所有的厂商这么做,除非苹果这么要求。
2:入侵方式:修改系统代码的执行逻辑,原始的切换语言是由 iOS 系统内部决定到底读取哪个资源包下的 .strings 文件,如果通过 runtime 的方式,我们修改了读取资源包 .strings 文件的逻辑,让系统读取我们指定的资源包,那么就可以让所有的 SDK 包括 App 本身都支持内部切换语言,附件的 Demo 使用的就是这个思路,需要说明的是使用这种方式需要把整个 UI 堆栈给重建,然后系统才会读取指定的资源包,就实现了语言的切换,微信切换语言有个页面切换的动画,也是这个原因。
注:该 Demo 使用 pod 管理