XIB / Storyboard本地化的
officially recommended method是为您要支持的每个本地化的xx.lproj(其中xx是双字母语言ID)创建.xib和.storyboard文件.
这会产生一个问题,因为您有多个文件在许多情况下共享相同的UI,容易发生变化.如果您想重新设计一个视图的UI,则必须多次执行(更糟糕的是,如果您在xib本身中输入了可本地化的字符串值).这违反了DRY原则.
调用需要它的NSLocalizedString()似乎更有效率,只需使用一个XIB或Storyboard进行一个本地化.
那么,为什么(不)我创建本地化的XIB / Storyboard文件?
解决方法
为了更改文本标签,我做了这样的事情
+(void) replaceTextWithLocalizedTextInSubviewsForView:(UIView*)view { for (UIView* v in view.subviews) { if (v.subviews.count > 0) { [self replaceTextWithLocalizedTextInSubviewsForView:v]; } if ([v isKindOfClass:[UILabel class]]) { UILabel* l = (UILabel*)v; l.text = NSLocalizedString(l.text,nil); [l sizeToFit]; } if ([v isKindOfClass:[UIButton class]]) { UIButton* b = (UIButton*)v; [b setTitle:NSLocalizedString(b.titleLabel.text,nil) forState:UIControlStateNormal]; } } }
在你的viewDidLoad中调用此函数:像这样:
[[self class] replaceTextWithLocalizedTextInSubviewsForView:self.view];
当我们想要的是本地化的标签时,它节省了大量的工作声明和连接IBOutlets.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。