从故事板本地化归因于UITextView

Cra*_*cyD 18 xcode localization nsattributedstring ios

我正在使用故事板,并有一个视图,我已经将一些UITextViews子类化.

我的问题是我正在使用ibtool --generate-strings-file从故事板中提取字符串进行本地化,然后ibtool -write在另一个故事板文件上使用以应用翻译的字符串.

当我使用ibtool任何具有归属文本的UITextView时,ibtool --generate-strings-file命令会忽略该命令并从结果字符串文件中省略.

是否可以从故事板中提取属性文本以进行本地化?

小智 18

在Xcode 6.1上,最好的方法是将文本视图的属性文本复制到"BASE"RTF文本中(例如使用TextEdit或直接从XCode> New File> ressources> RTF).

通过TextEdit方式,您需要将文本导入项目.显然,如果你是通过Xcode完成的,那么无需导入.

然后只需使用utilies面板找到"localize ..."按钮,它将为您做到这一点.

要导入正确的版本(在viewWillAppear中为ex.),

 NSURL *url = [[NSBundle mainBundle] URLForResource:[fileName stringByDeletingPathExtension] withExtension:[fileName pathExtension]];
NSError *error;
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithFileURL:url
                                                                           options:@{NSDocumentTypeDocumentAttribute:NSRTFTextDocumentType}
                                                                documentAttributes:nil
                                                                             error:&error];

[_originalMessage setAttributedText:attributedString];
Run Code Online (Sandbox Code Playgroud)

Swift 4的更新:

var attrString: NSAttributedString?
let fileUrl: URL = Bundle.main.url(forResource: "mytextfile", withExtension: ".rtf")!

do {
   attrString = try NSAttributedString(url: fileUrl, options: [.documentType:NSAttributedString.DocumentType.rtf], documentAttributes: nil)
} catch {
    // Somebody do something!!        
}
Run Code Online (Sandbox Code Playgroud)


Cra*_*cyD 5

我最后得出的结论是ibtool,在目前的版本中无法使用它.

相反,我让Textview成为纯文本视图,并使用我的子类解析其text属性,以便我可以创建NSMutableAttributedString并设置所需的属性.

这使我能够使用ibtool提取字符串并仍然具有属性textview.