UPDATE
The best way to actually change the text is to directly use the setter from the UITextView.
If your text is NOT formatted, simply use:
[textView setText:NSLocalizedString(key, comment)];
If your text IS formatted, you have to use:
[textView setAttributedText:[[NSMutableAttributedString alloc] initWithString:NSLocalizedString(key, comment)]];
You don't need to use the workaround anymore with the updated method.
WORKARROUND
To be able to achieve this, the easiest solution I have found is to simply add an extra UITextView with the translated text exactly at the same place as the other and hide it.
To display the proper view I do this in the viewDidLoad method of the controller:
NSString *language = [[NSLocale preferredLanguages] firstObject];
if ([language isEqualToString:FRENCH_LANGUAGE]) { //@"fr"
UITextView.hidden = YES;
UITextViewFR.hidden = NO;
}
Although this solution is definitely not elegant, it's certainly a good workaround when you don't have to keep a lot of translations.
That being said, using the storyboard localized string is not working. Adding an IBOutlet and setting the text attribute with a NSLocalizedString was not working too. I have looked around for a solution and it seems like no one has really been able to find a clear answer for that one.