使用数字和名称进行多元化(swift stringsdict)

时间:2018-04-13 06:45:04

标签: ios swift pluralize

我有一个字符串和后面的句子,我想用几种语言翻译:

<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)

我原本希望得到“我的朋友彼得有3只狗。”但是我得到了一个错误。所以也许有人提示并可以帮助我,我怎么可以在字典中使用字符串,或者可能还有其他方法可以做到这一点?

2 个答案:

答案 0 :(得分:3)

Andreas said之外:没有字典 格式字符串中的%#@name@变量,但您只需使用%@ 换一个Swift字符串。然后是完整的stringsdict条目 变

<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>

答案 1 :(得分:1)

您缺少格式类型键:

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

有关详细信息,请参阅String Format Specifiers