我如何将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)];
答案 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