1. 首先要配置localizable.strings,如下图:
详细的配置过程这里就不说了,可以另行百度。今天主要说的是怎样在内部切换语言环境。
2. 新建类:LanguageHelper.swift
代码中注释已经很详细了,这里就不多说了。请看代码:
//
// LanguageHelper.swift
//
// Created by amberoot on 17/8/24.
// Copyright 2017年 amberoot. All rights reserved.
//
import UIKit
class LanguageHelper: NSObject {
//单例
static let shareInstance = LanguageHelper()
let def = UserDefaults.standard
var bundle : Bundle?
///根据用户设置的语言类型获取字符串
func getUserStr(key: String) -> String
{
// 获取本地化字符串,字符串根据手机系统语言自动切换
let str = NSLocalizedString(key, comment: "default")
return str
}
///根据app内部设置的语言类型获取字符串
func getAppStr(key: String) -> String
{
// 获取本地化字符串,字符串会根据app系统语言自动切换
let str = NSLocalizedString(key, tableName: "Localizable", bundle: LanguageHelper.shareInstance.bundle!, value: "default", comment: "default")
return str
}
///设置app语言环境
func setLanguage(langeuage: String) {
var str = langeuage
//如果获取不到系统语言,就把app语言设置为首选语言
if langeuage == "" {
//获取系统首选语言顺序
let languages:[String] = UserDefaults.standard.object(forKey: "AppleLanguages") as! [String]
let str2:String = languages[0]
//如果首选语言是中文,则设置APP语言为中文,否则设置成英文
if ((str2=="zh-Hans-CN")||(str2=="zh-Hans"))
{
str = "zh-Hans"
}else
{
str="en"
}
}
//语言设置
def.set(str, forKey: "langeuage")
def.synchronize()
//根据str获取语言数据(因为设置了本地化,所以项目中有en.lproj和zn-Hans.lproj)
let path = Bundle.main.path(forResource:str , ofType: "lproj")
bundle = Bundle(path: path!)
}
}
3. LanguageHelper.swift的应用
(1)在AppDelegate.swift中设置app的初始语言
可以获取手机系统语言来设置APP的初始语言环境,也可以根据自己的需求设置APP的初始语言环境。
(2)实际应用:配置label的text或button的title等等
参考博客地址:http://www.zhimengzhe.com/bianchengjiaocheng/swift/337155.html