首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >故事板本地化在运行时迅速

故事板本地化在运行时迅速
EN

Stack Overflow用户
提问于 2015-08-04 12:41:20
回答 2查看 1.7K关注 0票数 0

我在谷歌上有很多关于IOS应用本地化的帖子。然而,他们中的大多数都在谈论objective-C,而没有提到swift语言。我只是想知道,当在运行时更改故事板时,是否可以使用Xcode中的内置本地化功能。请看下面的链接示例。谢谢。

http://tinypic.com/view.php?pic=fw3cyu&s=8#.VcBAIniloRl

EN

回答 2

Stack Overflow用户

发布于 2015-08-04 12:56:18

您必须编写自定义本地化方法,否则在SWIFT中您只能通过system setting进行更改,这肯定会使device 重新启动。在此,我在 iPhone 中创建了一个自定义模块,从中可以在runtime中更改您的应用程序的语言

https://github.com/pr0gramm3r8hai/InAppLocalize

票数 2
EN

Stack Overflow用户

发布于 2016-05-24 12:48:47

如果你想以编程的方式本地化故事板的标签,你可以简单地将UILabel子类,并在设置文本后翻译它。因此,您不需要创建另一个脚本。

代码语言:javascript
复制
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!
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31800825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档