我使用XCode 6。
想象一下以下场景:您的应用程序的基本语言是英语,您决定添加德语本地化。您现在有两个版本的std::unique_ptr
。如果您要将UI元素添加到基本版本,您可以简单地将德语版本转换为可本地化的字符串并返回,并且所有更改都将被移植(如果添加了字符串,那么当然必须手动编辑它们)
但是,如果您编辑的是Interface.xib
的德语版本,该怎么办?如何将新的UI元素添加到英文版中?你不能简单地使用相同的技巧,至少我没有找到从本地化字符串转换回来的方法,可能XCode不知道它应该使用剩余的德语XIB并填写英语本地化字符串。
我该怎么办,除了以后总是在基础版本中进行UI更改?
答案 0 :(得分:2)
您可以使用策略将XIB或Storyboard保存在单个文件中并定位可视化 按需编程组件,以编程方式制作。
我创建了一个演示项目并放在我的github上:
我相信通过几个步骤,您可以评估该策略是否符合您的需求:
如果您自定义可视组件(例如UILabel),则覆盖方法可以' drawRect'并动态替换文本字段中的键。因此,您可以保留所有屏幕的通用设计,而无需担心保留多个国际化布局。
- (void)drawRect:(CGRect)rect {
NSString *text = NSLocalizedStringWithDefaultValue([self text], nil, [NSBundle mainBundle], [self text], @"");
if (self.attributedText && [[self text] length] > 0) {
NSDictionary *attributes = [(NSAttributedString *)self.attributedText attributesAtIndex:0
effectiveRange:NULL];
[self setText:text];
self.attributedText = [[NSAttributedString alloc] initWithString:self.text attributes:attributes];
}else{
[self setText:text];
}
[super drawRect:rect];
}
现在运行项目时,请注意UILabel组件将在您设置其XIB或Storyboard的属性时动态设置键值。
一般帮助:
答案 1 :(得分:2)
你的结论是正确的。 Xcode中设计本地化的方式要求您使用基本语言创建所有UI更改。