我在谷歌上有很多关于IOS应用本地化的帖子。然而,他们中的大多数都在谈论objective-C,而没有提到swift语言。我只是想知道,当在运行时更改故事板时,是否可以使用Xcode中的内置本地化功能。请看下面的链接示例。谢谢。
http://tinypic.com/view.php?pic=fw3cyu&s=8#.VcBAIniloRl
发布于 2015-08-04 12:56:18
您必须编写自定义本地化方法,否则在SWIFT中您只能通过system setting进行更改,这肯定会使device 重新启动。在此,我在 iPhone 中创建了一个自定义模块,从中可以在runtime中更改您的应用程序的语言
发布于 2016-05-24 12:48:47
如果你想以编程的方式本地化故事板的标签,你可以简单地将UILabel子类,并在设置文本后翻译它。因此,您不需要创建另一个脚本。
class TranslatedLabel: UILabel {
override func drawTextInRect(rect: CGRect) {
self.text = Language.sharedInstance.stringforKey(self.text!)
super.drawTextInRect(rect)
}
}
class Language {
class var sharedInstance : Language {
struct Static {
static var onceToken : dispatch_once_t = 0
static var instance : Language? = nil
}
dispatch_once(&Static.onceToken) {
Static.instance = Language()
}
return Static.instance!
}
func stringforKey(key:String)->String{
let lan:String = NSUserDefaults.standardUserDefaults().objectForKey("language") as! String
let string:String?
if lan.containsString("Hans"){
let path = NSBundle.mainBundle().pathForResource("zh-Hans", ofType: "lproj")
let bundle = NSBundle(path: path!)
string = bundle?.localizedStringForKey(key, value: nil, table: nil)
}else if lan.containsString("Hant"){
let path = NSBundle.mainBundle().pathForResource("zh-Hant", ofType: "lproj")
let bundle = NSBundle(path: path!)
string = bundle?.localizedStringForKey(key, value: nil, table: nil)
}else{
let path = NSBundle.mainBundle().pathForResource("en", ofType: "lproj")
let bundle = NSBundle(path: path!)
string = bundle?.localizedStringForKey(key, value: nil, table: nil)
}
return string!
}
}https://stackoverflow.com/questions/31800825
复制相似问题