如何在IB [iPhone SDK]中使用NSLocalizedString?

ero*_*ppa 6 iphone localization

当我以编程方式分配文本时,我可以使用NSLocalizedString(....),但是如果我直接在IB中写文本(比如UILabel)我该如何本地化呢?

Don*_*hey 11

一种解决方案是创建多个本地化的nib文件.如果您的本地化需求非常简单,并且您只是在开发结束时将资源转移到专家软件本地化程序,那么这可能效果最佳.

如果您在开发过程中进行本地化并且UI正在快速变化,那么重复的nib文件可能会非常麻烦,因为必须在每个本地版本的nib中复制每个UI tweek.为避免这种情况,您需要在视图控制器中编写一些代码来处理设置本地化字符串,通常在视图控制器的-viewDidLoad方法中.确保每个具有本地化文本的控件都是一个IBOutlet并将它们连接到IB中的视图控制器.然后你的视图控制器-viewDidLoad将看起来像这样:

- (void)viewDidLoad {
    [super viewDidLoad];
    hello.text = NSLocalizedString(@"Hello", @"Hello label");
    world.text = NSLocalizedString(@"world", @"world label");
    // ... etc
}
Run Code Online (Sandbox Code Playgroud)

您可以执行此类视图设置,-viewDidLoad因为您的-init方法运行之后,您的笔尖中的对象才会完全创建. 在您的视图可见之前-viewDidLoad运行-init.


Mar*_*ark 6

这是一个庞大而复杂的话题.一个很好的起点是国际化编程主题简介,还有准备你的Nib文件进行本地化