我在示例应用程序中使用英语和西班牙语的本地化。我为英语和西班牙语添加了 Localizable.strings 类。我知道可以本地化图像、XIB 和标签文本。但我想知道是否可以在不本地化 XIB 的情况下本地化 iPhone 应用程序,甚至需要使 XIB 本地化?或者我们可以在 Interface Builder 中将按钮标题设为 NSLocalizedString(@"TITLE", nil) 吗?我知道这不是这样做的正确方法。请建议我进一步处理。
谢谢。
我在示例应用程序中使用英语和西班牙语的本地化。我为英语和西班牙语添加了 Localizable.strings 类。我知道可以本地化图像、XIB 和标签文本。但我想知道是否可以在不本地化 XIB 的情况下本地化 iPhone 应用程序,甚至需要使 XIB 本地化?或者我们可以在 Interface Builder 中将按钮标题设为 NSLocalizedString(@"TITLE", nil) 吗?我知道这不是这样做的正确方法。请建议我进一步处理。
谢谢。
是的,您可以在不本地化 XIB 的情况下本地化应用程序。
您将需要为每个标签、按钮、文本视图创建一个插座......然后在viewDidLoad
设置正确的本地化字符串:
-(void) viewDidLoad {
[super viewDidLoad];
self.nameLabel.text = NSLocalizedString(@"name:", @"name label");
[self.saveButton setTitle:NSLocalizedString(@"save", @"Save button title.") forState:UIControlStateNormal];
}
这就是我这样做的方式,因为更改所有本地化的 XIB 将需要很长时间,并且使用自动布局可以确保一切都适合。
本地化 XIB 文件的原因是不同语言的文本长度不同,因此 UI 中的视图大小需要更改。这可以在 XIB 或代码中处理(例如sizeToFit
重新定位/自动布局约束)。
从技术上讲,如果您愿意,您也可以使用NSLocalizedString
获取本地化图像名称...
您不需要 XIB 来本地化字符串,例如。对于您使用的按钮
[button setTitle:NSLocalizedString(@"Title","description") forState:UIControlStateNormal];
然后你在 Localizable.strings 文件中定义为哪种语言显示什么
在 Localizable.strings 中(西班牙语)
"Title" = "<Title in spanish>";