42

我将如何使用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

4 回答 4

74
[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];
于 2013-02-20T16:13:37.280 回答
33

给定的句子可以在某些语言中以不同的顺序用可变部分构造,那么我认为你应该使用位置参数[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];
于 2013-02-20T16:18:53.153 回答
13

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

我已将此功能添加到我的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);
于 2014-06-02T06:54:13.313 回答
2

迅速

//Localizable.strings

“我的本地化字符串”=“foo %@ baz”;

例子:

myLabel.text = String(format: NSLocalizedString("my-localized-string", 
                                       comment: "foo %@ baz"), "bar") //foo bar baz
于 2019-02-20T13:55:12.533 回答