iOS:如何使用多个内插参数本地化字符串?

标签 ios objective-c localization internationalization nslocalizedstring

我如何使用 NSLocalizedString 构建具有多个参数的字符串,同时让翻译人员根据需要更改顺序?

我的 Localizable.string 中的一个例子是:

"score_out_of"="Your score is %i out of %i";

并且会像这样被调用

[NSString stringWithFormat:NSLocalizedString(@"score_out_of", nil), correct, total];

但在某些语言环境中,语法规则可能会规定总计先于正确。在 Objective C 中,插值顺序似乎是硬编码的。

在其他语言中,这是通过命名参数来完成的,例如在 ruby​​ 中,它的定义如下:

out_of: "Your score is %{correct} out of %{total}"

并像这样调用:

I18n('out_of', {total: total, correct: correct})

在 iOS/Objective C 上完成同样的事情的推荐方法是什么?

最佳答案

根据文档

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW2

Note that you can also use the “n$” positional specifiers such as %1$@ %2$s

所以你可以简单地创建你的字符串

"score_out_of"="你的分数是 %1$i,总分 %2$i"

换句话说,它可能是

"score_out_of"="在 %2$i 中,你的分数是 %1$i"

关于iOS:如何使用多个内插参数本地化字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24160675/

相关文章:

ios - CFUUID - 创建一次并在应用程序的整个生命周期中使用

ios - 如何根据字符串大小在 UITableViewCell 中动态设置 UITextView 的高度?

ios - 迅速丰富的通知。图片未显示在通知中

c++ - 找不到我的着色器(Obj-C++、ios、opengles2.0)

localization - 十月 CMS 如何获取当前语言环境名称?

c++ - 在 Excel 自动化中使用非本地化公式

ios - 以编程方式创建的 UIControl 中的自动布局似乎不起作用

objective-c - 使用指针访问 Swift/Obj-c 中的指针到 Swift 转换

ios - 核心数据死锁

c++ - 如何测试 gcc 编译器支持的本地语言(除了英语,如中文、印地语等)