如何在swift ios中将常规string占位符添加到翻译后的复数.stringdict
我想在iOS中使用swift中的plurar stringdict来翻译这个string
- 停留在%1 $ @
- 留在%1 $ @
使用一个简单的复数没有占位符的作品,感谢这个问题但是,当我添加一个string占位符时,我得到一个崩溃时访问它。
正则复数正在使用以下的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>
而使用这个swift代码来引用上面的复数forms没有string占位符:
let format = NSLocalizedString("key_to_plural_above", comment: "") let label = String.localizedStringWithFormat(format, kidsIds.count)
问题是, 当我添加一个string占位符的翻译,当我尝试读取它崩溃 。 下面的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>
使用这个swift代码来得到上面的复数,我得到一个未知的崩溃没有任何stacktrace:
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
。 这不是一个导致崩溃的string。
或者,把它放到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>