使用XCode 4.2本地化字符串(IOS-IPhone dev)

时间:2012-01-26 14:22:51

标签: iphone objective-c ios xcode

在我的程序中的某些屏幕中,本地化字符串可以正常工作,有些则不然。 (Xcode 4.2)

我做了什么:

  1. 在“资源”

  2. 文件夹中添加了Localizable.strings
  3. 在我的.h文件中,在@interface ClassViewController里面:UIViewController {}我添加了:

    IBOutlet UILable *labelName;
    
  4. 同样在.h文件中,我添加了

    property (nonatomic, assign) IBOutlet UILabel *labelName;
    
  5. 在.m文件中,我添加了:

    @synthetize labelName;
    
  6. 仍然在.m文件中,我在里面添加了“ - (foid)dealloc”:

    [labelName release];
    
  7. In - (void)viewDidLoad我添加了:

    self.labelName.text = [NSString stringWithFormat:@"KEY"];
    
  8. 最后,在xib文件中(使用Interface manager),我将标签对象与变量链接起来。

  9. 所以,正如我所说,这种方法适用于某些屏幕,而不适用于其他屏幕。有什么想法吗?

    解决方案:

    那是一个多么愚蠢的错误。输入文字的行应为:

    NSLocalizedString(@"KEY", nil);
    

4 个答案:

答案 0 :(得分:4)

改为使用:

self.labelName.text = NSLocalizedString(@"KEY", "");

来自文档:

  • 名称:NSLocalizedString
  • 描述:NSString * NSLocalizedString(NSString * key,NSString * comment)
  • 可用性:iOS(2.0及更高版本)
  • 摘要:返回字符串的本地化版本。

答案 1 :(得分:1)

正如文斯所指出的,你需要使用NSLocalizedString函数。所以在这种情况下,6中的代码将是:

    self.labelName.text = NSLocalizedString(@"The key for this label",@"Some comment");

那应该适合你。

答案 2 :(得分:1)

XCode-4.2 中,您可以执行以下操作:

  1. 点击“目标”
  2. 然后选择“构建阶段”
  3. 选择“添加构建阶段”&选择“添加复制文件”。
  4. 选择“copy files(int item)”。(其中'int'可以是1或2或3等,具体取决于之前创建的项目数。)。将“Destination”设置为“Resources”。
  5. 现在点击“+​​”&选择你创建的'.string'文件(例如localization.string)。
  6. 它有效,希望它能帮到你。

答案 3 :(得分:0)

你认为这条线有什么作用?

self.labelName.text = [NSString stringWithFormat:@"KEY"];

因为它在功能上等同于写这个:

self.labelName.text = @"KEY";

但我怀疑你打算写的是这个:

self.labelName.text = NSLocalizedString(@"KEY", @"description");