我結束了此解決方案:
在一個UIViewController我可以從Storyboard.strings訪問我的UITextView的對象,並迫使本地化的文本中使用。
func fixTextViewStoryboardLocalization() {
guard storyboard != nil else {
return // No need to fix it if storyboard is not presented
}
let storyboardName = storyboard!.value(forKey: "name") as! String
for case let textView as UITextView in view.subviews {
if let ident = textView.restorationIdentifier {
textView.text = NSLocalizedString("\(ident).text", tableName: storyboardName, bundle: Bundle.main, value: "", comment: "")
}
}
}
創建自定義MyViewController(挑選您想要的任何名稱),調用這個函數在viewDidLoad中:
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
fixTextViewStoryboardLocalization()
}
}
確保故事板視圖控制器是從類MyViewController: MyViewController custom class in Storyboard
在爲了使上面的代碼正常工作,我需要爲Storyboard中的每個UITextView設置恢復ID: UITextView Restoration ID
最後一步 - 本地化Storyboard.strings文本視圖:
/* Class = "UITextView"; text = "Base text"; ObjectID = "MyTextView-Restoration-ID"; */
"MyTextView-Restoration-ID.text" = "Localized text comes here";
這適用於我在我所有的故事板所有UITextViews。
我非常想在Storyboard中進行本地化。您的解決方案迫使我將本地化的一些部分存儲在Localizable.strings中。 – user2552888