当你的应用需要适配多语言时,需要将app名称和内部文字改成其他语言,现在主要是中英文转换,废话不多说,下面开始实战。
- 一、app名称随系统切换
1.创建InfoPlist.strings
文件,右侧选项Snip20170408_5.png
之后选择中英文(Base无需选择)
Snip20170408_6.png
在English中CFBundleDisplayName="FlowerField";
FlowerField是app的英文名
在Chinese中CFBundleDisplayName="花田小憩"
;花田小憩是app的中文名
创建之后的效果图:
Snip20170409_7.png
系统中文效果:
Snip20170409_2.png
系统英文效果:
Snip20170409_3.png
- 二、内部应用文字随系统切换
1.创建Localizable.strings
文件,如下图:(Base文件可以不用创建)
Snip20170409_8.png
2.在strings文件中添加要替换的文字
English中
Snip20170409_9.png
Chinese中
Snip20170409_10.png
3.代码中实现
在标签控制器UITabBarController
中(此次演示用的是Swift)
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
setup()
}```
func setup () {
//设置TabBar的tintColor
tabBar.tintColor = UIColor.black
addViewController(HomeTableViewController(), title: NSLocalizedString("tab_theme", comment: ""))
addViewController(MallsTableViewController(), title: NSLocalizedString("tab_malls", comment: ""))
addViewController(profile, title: NSLocalizedString("tab_profile", comment: ""))
}
//添加子控制器
private func addViewController(_ childController:UIViewController,title:String) {
let nav = UINavigationController(rootViewController: childController)
addChildViewController(nav)
childController.tabBarItem.title = title
childController.tabBarItem.image = UIImage(named: "tb_\(childViewControllers.count - 1)" )
childController.tabBarItem.selectedImage = UIImage(named: "tb_\(childViewControllers.count - 1)" + "_selected")
}
其中需要使用的方法是```NSLocalizedString(key, comment) ```
其中key是Localizable.strings这个文件中读取对应的key-value值,comment可以为nil,空的字符串,也可以是对key的注释。
这样就设置完成了,系统英文状态下:

中文状态下:

* 三、注意点strings文件名称一定要写对,因为Xcode就是根据文件名称来寻找的,写错了就找不到了。