Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Localizing attributed UITextView from storyboard

I am using the storyboard and have a view where I have subclassed some UITextViews.

My problem is that I am using ibtool --generate-strings-file to extract strings from the storyboard for localization and afterwards use ibtool -write on another storyboard file to apply the translated strings.

When I use ibtool any UITextViews that have attributed text is ignored by the ibtool --generate-strings-file command and omitted from the resulting strings file.

Is it possible to extract attributed text from a storyboard for localization?

like image 564
CracyD Avatar asked Jan 22 '13 13:01

CracyD


1 Answers

on Xcode 6.1, the best way is to copy the attributed text of a text view into a “BASE” RTF text ( using TextEdit for example or directly from XCode > New File > ressources > RTF ).

Going through the TextEdit way, you need to import your text into your project. Obviously, if you have done it through Xcode, nothing to import.

then just you use the utilies panel to find the “localize..." button which will do it's deed for you.

to import the correct version just do ( in viewWillAppear for 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];

Update for 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!!        
}
like image 176
Solariane Avatar answered Oct 27 '22 00:10

Solariane