我想在iOS的Swift中使用plurar stringdict来翻译此字符串
由于这个问题,使用不带占位符的简单复数是可行的,但是当我添加字符串占位符时,访问它会崩溃。
该规则复数正在使用下面的XML:
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@format@</string>
<key>format</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>li</string>
<key>one</key>
<string>Sleeps at your place</string>
<key>other</key>
<string>Sleep at your place</string>
</dict>
</dict>
并使用此快速代码引用上述不带字符串占位符的复数:
let format = NSLocalizedString("key_to_plural_above", comment: "")
let label = String.localizedStringWithFormat(format, kidsIds.count)
问题是,当我在翻译中添加字符串占位符时,尝试读取它会导致崩溃。下面的xml是由翻译工具(lokalise)生成的,因此我认为它是正确的。
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@format@</string>
<key>format</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>li</string>
<key>one</key>
<string>Sleeps at %1$@</string>
<key>other</key>
<string>Sleep at %1$@</string>
</dict>
使用以下快速代码获取上面的复数形式,我得到了一个未知的崩溃,没有任何堆栈跟踪:
let format = NSLocalizedString("key_to_plural_above", comment: "")
let label = String.localizedStringWithFormat(format, kidsIds.count, "Name")
位置参数n$
是基于一的,因此在
let label = String.localizedStringWithFormat(format, kidsIds.count, "Name")
"Name"
是第二个参数,您可以使用引用它%2$@
:
<key>NSStringLocalizedFormatKey</key>
<string>%#@format@</string>
<key>format</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>li</string>
<key>one</key>
<string>Sleeps at %2$@</string>
<key>other</key>
<string>Sleep at %2$@</string>
</dict>
在您的代码中,%1$@
引用第一个参数kidsIds.count
。那不是导致崩溃的字符串。
或者,将其放入NSStringLocalizedFormatKey中:
<key>NSStringLocalizedFormatKey</key>
<string>%#@format@ at %@</string>
<key>format</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>li</string>
<key>one</key>
<string>Sleeps</string>
<key>other</key>
<string>Sleep</string>
</dict>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句