繁体   English   中英

如何在swift ios中将常规字符串占位符添加到已翻译的复数.stringdict中

[英]How to add regular string placeholders to a translated plurals .stringdict in swift ios

我想在swift for iOS中使用plurar stringdict翻译这个字符串

  • 住在%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>

使用这个快速代码获取上面的复数,我得到一个未知的崩溃没有任何堆栈跟踪:

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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM