2017-04-06 9 views
0

私はストーリーボードをいくつかテキスト表示しています。ストーリーボード(Storyboard.stringsファイルの作成)をローカライズしようとすると、すべてのUITextViewがローカライズされません。 UILabelsは大丈夫です。iOS UITextViewがストーリーボードで適切にローカライズされない

私の設定は以下の通りである:2 Storyboard.stringsファイルで 1つの基本ストーリーボードファイル Storyboard Configuration

Storyboard.stringsファイルはOKです、その後のすべてのUILabelsでの作業:Storyboard.strings file

は、あなたが見つけましたこの問題の解決策は? Xcode 8.3、Swift 3、iOS 10を使用しています。

答えて

0

XcodeでIBOutletを作成し、didSet関数で最初のUITextView値を設定するだけです。

など。

@IBOutlet var textView: UITextView { 
    didSet { 
     textView.text = NSLocalizedString("CUSTOM_LOCALISED_STRING", comment: "Comment.") 
    } 
} 
+0

私はストーリーボードで私のローカリゼーションをしたいと思っています。あなたのソリューションでは、ローカライゼーションの一部をLocalizable.stringsに保存する必要があります。 – user2552888

0

私はこの解決策になってしまった:私はUITextView-オブジェクトにアクセスし、使用するStoryboard.stringsからローカライズされたテキストを強制することができるのUIViewControllerで

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: "") 
     } 
    } 
} 

のviewDidLoadでこの関数を呼び出し、カスタムMyViewControllerを(あなたが好きな名前選択)を作成します。

class MyViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     fixTextViewStoryboardLocalization() 
    } 
} 

は、ストーリーボード・ビュー・コントローラは、クラスMyViewControllerからであることを確認してください:で MyViewController custom class in Storyboard

を上記のコードを実行するには、ストーリーボードの各UITextViewの復元IDを設定する必要があります。 UITextView Restoration ID

最終段階 - Storyboard.stringsでテキストビューをローカライズ:これはすべて私の絵コンテですべての私のUITextViewsのために働く

/* Class = "UITextView"; text = "Base text"; ObjectID = "MyTextView-Restoration-ID"; */ 
"MyTextView-Restoration-ID.text" = "Localized text comes here"; 

関連する問題