界面生成器本地化如何
我正在深入研究Apple开发人员的文档,以了解应用程序的本地化/国际化应该如何完成,并且我想了解Interface Builder如何帮助您pipe理多种语言的多个NIB文件…文档指向我的“本地化”部分界面生成器用户指南 ,但我找不到它..我应该find它在Xcode 4文档? 有人能给我一个文档,告诉你如何在Interface Builder / XCode中实现本地化吗? “Interface Builder用户指南”在哪里?
提前致谢。
PS:我应该从一开始就使用本地化的string/捆绑包开始实施我的应用程序,即使我只从一种语言开始? 将“多国语言”支持下的应用程序“国际化”是一种痛苦吗?
吉亚尼我想你是想find这个:
http://developer.apple.com/internationalization/
(更多细节: http : //developer.apple.com/library/ios/#documentation/MacOSX/Conceptual/BPInternational/BPInternational.html )
您应该始终以此为起点开发一个应用程序。 因为后来,如果你的客户需要添加一种新的语言,你将会有很多工作。 即使这是应用程序只是为了你,你应该使用它。 除了学习如何做,你还要保持代码的灵活性,以便突然改变你的需求。
我同意以前对这些解决scheme的复杂性的评论。 正因为如此,我刚刚创build了一个新的工具, 自动本地化您的IB文件 。 看看这里: https : //github.com/angelolloqui/AGi18n
我写了一个简单的类别来处理IB的本地化。
头文件看起来像这样。
@interface UIView (Localization) @property (nonatomic, strong) NSString *mainTextKey; @property (nonatomic, strong) NSString *secondaryTextKey; - (void)updateMainText; - (void)updateSecondaryText; @end
履行
@implementation UIView (Localization) - (NSString *)mainTextKey{ return objc_getAssociatedObject(self, @selector(mainTextKey)); } - (void)setMainTextKey:(NSString *)mainTextKey{ objc_setAssociatedObject(self, @selector(mainTextKey), mainTextKey, OBJC_ASSOCIATION_RETAIN_NONATOMIC); [self updateMainText]; } - (NSString *)secondaryTextKey{ return objc_getAssociatedObject(self, @selector(secondaryTextKey)); } - (void)setSecondaryTextKey:(NSString *)secondaryTextKey{ objc_setAssociatedObject(self, @selector(secondaryTextKey), secondaryTextKey, OBJC_ASSOCIATION_RETAIN_NONATOMIC); [self updateSecondaryText]; } - (void)updateMainText{ //handle all cases one by one if([self isKindOfClass:[UILabel class]]){ UILabel *label = (UILabel *)self; label.text= NSLocalizedString(self.mainTextKey, nil) ; }else if ([self isKindOfClass:[UIButton class]]){ UIButton *btn = (UIButton *)self; [btn setTitle:NSLocalizedString(self.mainTextKey, nil) forState:UIControlStateNormal]; } } - (void)updateSecondaryText{ //handle all cases one by one } @end
基本用法:
- 像UIButton或UIlable创build一个UIView元素
- 在关键字“mainTextKey”或“secondaryTextKey”中指定UserDefinedAttributes内的string键。
- 运行应用程序,它会从你的string文件中加载正确的文本。
这是写在没有任何证据的阅读,借口任何愚蠢的错误。