NSLocalizedString格式

时间:2013-02-20 16:10:42

标签: objective-c nslocalizedstring

我如何将NSLocalizedString用于此字符串:

[NSString stringWithFormat:@"Is “%@“ still correct for “%@“ tap “OK“ otherwise tap “Change“ to choose new contact details", individual.contactInfo, individual.name];

在使用stringWithFormat之前,我已按以下方式使用它:

[NSString stringWithFormat:@"%d %@", itemCount, NSLocalizedString(@"number of items", nil)];

4 个答案:

答案 0 :(得分:69)

[NSString stringWithFormat:NSLocalizedString(@"Is “%@“ still correct for “%@“ tap “OK“ otherwise tap “Change“ to choose new contact details", @"Query if parm 1 is still correct for parm 2"), individual.contactInfo, individual.name];

答案 1 :(得分:30)

在某些语言中,可以使用变量部分以不同的顺序构造句子,然后我认为你应该使用[NSString stringWithFormat:]的位置参数:

NSString *format = NSLocalizedString(@"number_of_items", @"Number of items");

将为英语加载以下字符串:

@"Is \"%1$@\" still correct for \"%2$@\" tap \"OK\" otherwise tap \"Change\" to choose new contact details"

也许是法语的其他东西(我不懂法语,所以我不会尝试翻译,但它可能会有不同顺序的第一和第二个参数):

"French \"%2$@\" french \"%1$@\" french"

您可以安全地格式化字符串:

NSString *translated = [NSString stringWithFormat:format individual.contactInfo, individual.name];

答案 2 :(得分:12)

我只想添加一个非常有用的定义,我在很多项目中使用它。

我已将此功能添加到我的header prefix文件中:

#define NSLocalizedFormatString(fmt, ...) [NSString stringWithFormat:NSLocalizedString(fmt, nil), __VA_ARGS__]

这允许您定义如下的本地化字符串:

 "ExampleScreenAuthorizationDescriptionLbl"= "I authorize the payment of %@ to %@.";

可以通过以下方式使用:

self.labelAuthorizationText.text = NSLocalizedFormatString(@"ExampleScreenAuthorizationDescriptionLbl", self.formattedAmount, self.companyQualifier);

答案 3 :(得分:0)

快速

  

// Localizable.strings

     

“ my-localized-string” =“ foo%@ baz”;

示例:

myLabel.text = String(format: NSLocalizedString("my-localized-string", 
                                       comment: "foo %@ baz"), "bar") //foo bar baz