我已經有一個班語言管理器,爲我本地化字符串。這是一個非常簡單的類,它最重要的方法是這樣的
func localizeString(stringToLocalize:String) -> String
{
// Get the corresponding bundle path.
let selectedLanguage = self.getLanguage()
let path = Bundle.main.path(forResource: selectedLanguage, ofType: "lproj")
// Get the corresponding localized string.
let languageBundle = Bundle(path: path!)
return languageBundle!.localizedString(forKey: stringToLocalize, value: "", table: nil)
}
我在此寫循環的方法遞歸通過視圖控制器的所有意見,他們本地化,因爲它去擴展。我決定分享這個,因爲我認爲它非常有用,可以在任何視圖控制器中以即插即用的方式工作,並且可以避免導出Storyboardy字符串文件的循環,添加到它們中,並在發生更改時重新集成它們。這樣您只需添加Localizable.strings文件即可自動處理所有內容。
func localizeUI(parentView:UIView)
{
for view:UIView in parentView.subviews
{
if let potentialButton = view as? UIButton
{
if let titleString = potentialButton.titleLabel?.text {
potentialButton.setTitle(localizeString(stringToLocalize: titleString), for: .normal)
}
}
else if let potentialLabel = view as? UILabel
{
if potentialLabel.text != nil {
potentialLabel.text = localizeString(stringToLocalize: potentialLabel.text!)
}
}
localizeUI(parentView: view)
}
}