界面生成器本地化指南

3
我正在研究苹果开发者文档,以了解应该如何进行应用的本地化/国际化,并且我想了解接口构建器如何帮助您管理多个语言的多个NIB文件...文档将我指向接口构建器用户指南中的“本地化”部分,但我找不到它...我应该在Xcode 4文档中找到它吗?有人能为我指出一个文件,展示如何在接口构建器/XCode中实现本地化吗?“接口构建器用户指南”在哪里?
提前感谢。
PS:即使我只使用一种语言开始开发应用程序,我是否应该从一开始就使用本地化字符串/包?如果没有考虑支持多种语言,国际化应用程序是否很麻烦?
3个回答

4

我认为您在寻找以下内容:

http://developer.apple.com/internationalization/

(更详细的信息请参见:http://developer.apple.com/library/ios/#documentation/MacOSX/Conceptual/BPInternational/BPInternational.html)

您应该始终以此为出发点开发应用程序。因为如果您的客户需要添加新语言,您将有大量工作要做。即使这个应用程序只是为您自己使用,您也应该使用它。除了学习如何做到这一点,您还可以保持代码的灵活性,以适应需求的突然变化。


1
对于一个没有经验的iOS开发者来说,实现国际化似乎在开始时有点复杂...但是在阅读文档并尝试简单的测试应用程序后,可能会变得更加清晰 :) 感谢您的回答! - Gianni Costanzi
Jacky,我有一个问题要问你... 如果我想开始一个新应用程序并从一开始就进行国际化,是必须要“手动”完成,还是可以告诉Xcode启动一个“国际化”的应用程序呢?我正在做一些单视图应用程序的实验,Xcode会为您准备好nib文件和其他文件,我想知道是否可以告诉Xcode以一种易于国际化的方式准备项目。 我希望我的问题相当清楚。 - Gianni Costanzi
我发现可以告诉Xcode国际化资源,所以我尝试国际化xxx-info.plist文件,但是代码无法编译,因为它没有在en.lproj目录中查找,而是在基本目录中查找...我想我必须仔细阅读文档,才能正确地管理这些东西...也许info.plist文件不需要国际化.. - Gianni Costanzi

2

我同意之前的评论,这些解决方案非常复杂。因此,我刚刚创建了一个新工具,可以自动本地化您的IB文件。请在此处查看:https://github.com/angelolloqui/AGi18n


0
我写了一个简单的分类,用于处理与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

基本用法:

  1. 创建一个类似于UIButton或UIlable的UIView元素
  2. 在UserDefinedAttributes中针对"mainTextKey"或"secondaryTextKey"键指定您的字符串键。
  3. 运行应用程序,它将从您的字符串文件加载适当的文本。

这篇文章没有经过任何校对,如有任何愚蠢的错误请谅解。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接