数字和名称的复数化(swift stringsdict)

Pluralization with number and name (swift stringsdict)

我有一个 stringdict 和下面的句子我想翻译成多种语言:

<key>myKey</key>
<dict>
    <key>NSStringLocalizedFormatKey</key>
    <string>My friend %#@name@ has %#@count@.</string>
    <key>count</key>
    <dict>
        <key>NSStringFormatSpecTypeKey</key>
        <string>NSStringPluralRuleType</string>
        <key>one</key>
        <string>one dog</string>
        <key>other</key>
        <string>%d dogs</string>
    </dict>
</dict>

我想要的是使用以下代码来创建我的字符串

let name = "Peter"
let dogs = 3
let myString = String(format: NSLocalizedString("myKey", comment:""), name, dogs)

我本来希望得到 "My friend Peter has 3 dogs.",但我得到了一个错误。所以也许有人提示可以帮助我,我如何在 dict 中使用字符串,或者也许有另一种方法可以做到这一点?

您缺少格式类型密钥:

<key>NSStringFormatValueTypeKey</key>
<string>d</string>

有关这方面的更多详细信息,请参阅 String Format Specifiers

除此之外 : 没有字典的 %#@name@ 格式字符串中的变量,但您可以简单地使用 %@ 取而代之的是 Swift 字符串。然后是完整的 stringdict 条目 变成

<key>myKey</key>
<dict>
    <key>NSStringLocalizedFormatKey</key>
    <string>My friend %@ has %#@count@.</string>
    <key>count</key>
    <dict>
        <key>NSStringFormatValueTypeKey</key>
        <string>d</string>
        <key>NSStringFormatSpecTypeKey</key>
        <string>NSStringPluralRuleType</string>
        <key>one</key>
        <string>one dog</string>
        <key>other</key>
        <string>%d dogs</string>
    </dict>
</dict>