gpt4 book ai didi

ios - 以编程方式动态本地化 Storyboard

转载 作者:行者123 更新时间:2023-11-30 13:57:43 24 4
gpt4 key购买 nike

我的应用程序允许用户更改国家/地区,因此如果他们更改为泰国,我应该更新我的 Storyboard等的语言。P/S:我看到很多人说如果重新启动应用程序就会没事,但这确实是我想防止的用户体验问题。以下是我当前的尝试,它对于以编程方式创建/修改/定义的文本效果很好,但它不会更新我的 Storyboard上的文本:(

import UIKit
class LocalizationHelper: NSObject {
static var bundle: NSBundle?
static let sharedInstance = LocalizationHelper()

func localizedStringForKey(key: String, comment: String) -> String {
return (LocalizationHelper.bundle?.localizedStringForKey(key, value: comment, table: nil))!
}

func setLanguage(language: String) {

NSUserDefaults.standardUserDefaults().setObject(language, forKey: "LocalizedStringUserDefaultsKey")
NSUserDefaults.standardUserDefaults().synchronize()


if let path = NSBundle.mainBundle().pathForResource(language, ofType: "lproj") {

print(language)
print(language)

LocalizationHelper.bundle = NSBundle(path: path)
print(LocalizationHelper.bundle)
} else {
NSUserDefaults.standardUserDefaults().setObject("Base", forKey: "LocalizedStringUserDefaultsKey")
NSUserDefaults.standardUserDefaults().synchronize()
LocalizationHelper.bundle = NSBundle.mainBundle()
}
}

}

打印语句结果为

Optional(NSBundle </var/mobile/Containers/Bundle/Application/91776A02-BADA-4EC9-A451-45A453B84C83/Appname.app/th.lproj> (not yet loaded))

这有什么关系吗?作为记录,我引用了这个

https://github.com/jslim89/JSLocalizedString

P/S:我还在 Main.storyboard(Base) 中准备好了 Main.string(Thai),只是它们仅在我更改系统语言时更新:(

最佳答案

我相信您已经为 Storyboard 中的每个 UI 组件定义了 socket 。您可以通过调用 NSLocalizedString 来简单地本地化它们:

self.title = NSLocalizedString("MyTitle", nil);

另一种选择可能是为每种受支持的语言提供多个 Storyboard 。用户更改国家/地区后,根据支持的语言选择正确的 Storyboard。像这样的事情:

let storyboard = UIStoryboard(name: "MainStoryboard_English", bundle: nil)

关于ios - 以编程方式动态本地化 Storyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33410365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com