如何将常规字符串占位符添加到 swift ios 中的翻译复数 .stringdict
How to add regular string placeholders to a translated plurals .stringdict in swift ios
我想在 swift 中使用复数字符串字典为 iOS
翻译这个字符串
- 停留在 %1$@
- 留在 %1$@
由于 ,使用没有占位符的简单复数是可行的
但是当我添加一个字符串占位符时,我在访问它时遇到了崩溃。
常规复数形式使用以下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 代码引用上面没有字符串占位符的复数:
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>
使用这个 swift 代码得到上面的复数,我得到了一个没有任何堆栈跟踪的未知崩溃:
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>
我想在 swift 中使用复数字符串字典为 iOS
翻译这个字符串- 停留在 %1$@
- 留在 %1$@
由于
常规复数形式使用以下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 代码引用上面没有字符串占位符的复数:
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>
使用这个 swift 代码得到上面的复数,我得到了一个没有任何堆栈跟踪的未知崩溃:
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>