【问题标题】:How to quickly localize storyboard on the fly?如何快速本地化故事板?
【发布时间】:2017-05-02 09:24:58
【问题描述】:

我正在尝试使用 Swift 3 和 Xcode 8.1 本地化我的应用程序。

我正在尝试使用 storyboard(main.strings(German)) 和以编程方式使用 "NSLocalizedString" 对应用程序进行本地化。

我可以使用以下代码以编程方式使用 "NSLocalizedString" 进行本地化

func localized(lang:String) ->String {

        let path = Bundle.main.path(forResource: lang, ofType: "lproj")
        let bundle = Bundle(path: path!)

        return NSLocalizedString(self, tableName:  nil, bundle: bundle!, value: "", comment: "")
    }

但我被故事板中定义的本地化所困扰。我在 main.strings(German) 中定义了本地化字符串。

/* Class = “IBUILabel”; text = “Date :”; ObjectID = “0sh-CK-26C”; */
“0sh-CK-26C.text” = “Datum :”;

有没有办法在运行时本地化情节提要?

【问题讨论】:

    标签: ios xcode localization storyboard swift3


    【解决方案1】:

    我认为,本地化 Storyboard 的最佳方式是 - 您应该首先以当地语言完成设计工作,然后将您的故事板本地化为所需的语言。然后导出 .xliff 文件并以所需语言替换所有文本。然后再次将 .xliff 文件导入您的项目。 你已经完成了......!

    【讨论】:

    • 谢谢..但是我应该如何动态更改情节提要的语言(例如单击按钮)
    • 如果您想通过单击按钮来完成,那么您只能从代码中完成。您不能即时更改情节提要。如果您想更改情节提要,则必须重新启动您的应用程序。
    • 哦,明白了..你能分享一下如何在按钮单击时更改情节提要的语言...考虑重新启动案例
    • 当用户从按钮上的菜单更改语言时,只需更改 NSUserDefault 中键“AppleLanguages”的值并要求用户重新启动应用程序。例如: [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"ru", nil] forKey:@"AppleLanguages"]; [[NSUserDefaults standardUserDefaults]同步];
    • 谢谢..我们可以以编程方式重新启动应用程序吗?
    猜你喜欢
    • 2015-10-26
    • 2012-01-08
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多