前言
项目开发中不同语言环境需要进行多语言适配
- 纯代码界面开发时,直接添加本地化语言文件,并针对键值对获取即可
- xib界面开发时,你也可以通过拖拽UI控件,间接的调用本地化语言文件,但这显然不是最优的解决方案,实际上苹果已兼容了这种情况,可以直接针对对应的xib文件进行本地化语言处理
首先为项目添加国际化语言
全局添加需要适配的多语言纯代码本地化
1.创建本地化文件,推荐使用localizable命名
创建本地化文件
选择对应的本地化语言
勾选需要添加的本地化语言
2.在Strings文件中设置Key-Value
/* Localizable.string */
// Localizable (English)
"title" = "title";
// Localizable (Chinese simplified)
"title" = "标题"
// Localizable (Chinese HongKong)
"title" = "標題"
3.调用本地化方法
// 为String添加转换扩展,便于快捷调用
extension String {
func localized() {
return Bundle.main.localizedString(forKey: self, value: nil, table: nil)
}
}
// 调用字符串对应的本地化字符
let title = "title".localized()
XIB本地化
1.针对控制器.xib文件添加国际化扩展
为xib添加本地化文件
勾选需要添加的本地化语言
针对勾选的本地化语言会自动生成对应的strings文件
/* Class = "UILabel"; text = "国际化语言"; ObjectID = "kFe-or-R4m"; */
"kFe-or-R4m.text" = "国际化语言";
ObjectID对应位置
2.设置不同的语言对应的文字
此时针对不同语言的strings文件进行文本设置就能达到多语言适配了
/* Class = "UILabel"; text = "国际化语言"; ObjectID = "kFe-or-R4m"; */
// xxxx(English).strings文件
"kFe-or-R4m.text" = "international language";
// xxxx(Chinese (HongKong)).strings文件
"kFe-or-R4m.text" = "國際化語言";
// xxxx(Chinese (Simplified)).strings文件
"kFe-or-R4m.text" = "国际化语言";
3.注意事项
针对新生成的strings,会自动关联相关的UI控件,但后续添加的UI控件并不会自动加入到strings中,此时需要在xib中将对应的语言勾选取消掉后再重新插入,注意对strings文件进行备档处理
网友评论