作者: Hackice
国际化与本地化
国际化是指在设计软件,将软件与特定语言及地区脱钩的过程。当软件被移植到不同的语言及地区时,软件本身不用做内部工程上的改变或修正。本地化则是指当移植软件时,加上与特定区域设置有关的信息和翻译文件的过程。
——《维基百科》
国际化意味着产品有适用于任何地方的“潜力”;本地化则是为了更适合于“特定”地方的使用。
项目中国际化方式
- 静态字符串(.strings),通过调用Bundle的
localizedString(forKey: String, value: String, table: String)
方法实现国际化 - 资源:xib/asset/info.plist
- 语言包:xcloc
New
- iOS 13中用户可以针对每一个应用单独的设置语言选项
- 获取当前语言设置
1 | // 系统设置中的语言偏好列表 |
- Test Plan导出包含上下文的语言包信息
问题
- 当前国际化依赖手动维护各个语种的字符串文件(.strings),从调用难易度、容错、可维护性,有没有更好的方案
- Interface Builder中国际化的处理,比如文本和图片
- app语言切换
参考:
Creating Great Localized Experiences with Xcode 11 WWDC19
Clean iOS Localizable Files medium
How to keep your iOS localizable files clean medium
String Localization objc.io