localizedStringWithFormat如何工作?

请注意

我不问有关NSLocalizedString()macros。 我正在询问有关NSString类的函数+ (instancetype)localizedStringWithFormat:(NSString *)format, ...

这是两件独立的事情。

我试图使用NSString类的方法localizedStringWithFormat但我只是不能解决我应该如何使用它。

无论我尝试什么,我似乎都没有得到单词出现在翻译文件使用Xcode 6 export for localization 。 我已经尝试了前两个变化,但没有。

文档中的示例显示了…

 NSString *myString = [NSString localizedStringWithFormat:@"%@: %f", @"Cost", 1234.56]; 

这是否意味着我必须从数字中分离翻译的词语? 即我可以不只是使用…

 NSString *myString = [NSString localizedStringWithFormat:@"Cost: %f", 1234.56]; 

如果我可以使用这个,那么翻译的词组是什么,翻译是什么?

如果没有,那为什么要用这个呢? 为什么不使用…

 NSString *myString = [NSString stringWithFormat:@"%@: %f", NSLocalizedString(@"Cost"), 1234.56]; 

这最后一个有什么不同?

无论哪种方式,有人可以告诉我如何获得在这个翻译的实际的话。

更新

好的,此刻我正在使用一个愚蠢的工作,似乎只是在滥用一切哈哈。

如果我做…

 NSString *myString = [NSString stringWithFormat:@"%@: %f", NSLocalizedString(@"Cost"), 1234.56]; 

然后它翻译了“成本”一词,但没有使用正确的地区为数字。

如果我使用…

 NSString *myString = [NSString localizedStringWithFormat:@"%@: %f", @"Cost", 1234.56]; // or NSString *myString = [NSString localizedStringWithFormat:@"Cost: %f", 1234.56]; 

然后,Xcode“导出为本地化”只是完全忽略它,没有任何关于“成本”的东西都被添加到翻译文件中,所以没有任何东西被翻译。

所以,我使用了…

 [NSString localizedStringWithFormat:@"%@: %f", NSLocalizedString(@"Cost", @"Cost context stuff..."), 1234.56]; 

这增加了“成本”的翻译文件,并将数字转换为正确的语言环境,但似乎我在这里使用了大量的多余的东西。

当你想到NSLocalizedStrings – 认为键/值。 你可以用键来玩一些技巧,就像你的第二个例子:

 @"Cost: %f" 

这是一个关键 – 值可能是像“@ SomeOtherWord:%f”, – %f仍然使用格式string的一部分之后。

你给的最后一个例子:

 NSString *myString = [NSString stringWithFormat:@"%@: %f", NSLocalizedString(@"Cost"), 1234.56]; 

允许您将单词“成本”与string的重置分开,这可能是正确的 – 但可能不足以有效地expression您在所有语言中的含义。 也许有一种语言,你不会标签:价值,然后只是翻译“成本”并没有让你良好的本地化。

NSLocalizedString可以帮助大多数情况,但是本地化很难并且有特殊情况,所以你的代码也可能有特殊的情况 – 只是尽力保持与其他逻辑的隔离。

编辑:解决实际问题,因为它演变:

 localizedStringWithFormat: 

将改变格式说明符如何被replace。

从苹果的NSString文档:

讨论

此方法相当于使用initWithFormat:locale:并将当前语言环境作为语言环境parameter passing。