iOS版。多元化。 Stringdict,格式包含2个int参数

问题描述 投票:2回答:1

我的问题类似于How to add regular string placeholders to a translated plurals .stringdict in swift ios,但我试图理解是否有可能将2个int参数传递给字符串dict。

如果我想要翻译如下内容:

1 apple : 3 pears
2 apples : 1 pear

是否可以在一个本地化格式字符串中执行此操作:

let apples = 1
let pears = 3
let applesAndPears = String.localizedStringWithFormat(<format>, apples, pears)
print(applesAndPears)

或者我必须单独组合它们?

ios swift translation plural
1个回答
2
投票

一种格式就足够了。您可以在NSStringLocalizedFormatKey条目中使用多个占位符,并为每个占位符使用具有复数规则的单独字典。例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>apples_and_pears</key>
        <dict>
            <key>NSStringLocalizedFormatKey</key>
            <string>%#@num_apples@ : %#@num_pears@</string>
            <key>num_apples</key>
            <dict>
                <key>NSStringFormatSpecTypeKey</key>
                <string>NSStringPluralRuleType</string>
                <key>NSStringFormatValueTypeKey</key>
                <string>ld</string>
                <key>zero</key>
                <string>no apple</string>
                <key>one</key>
                <string>1 apple</string>
                <key>other</key>
                <string>%ld apples</string>
            </dict>
            <key>num_pears</key>
            <dict>
                <key>NSStringFormatSpecTypeKey</key>
                <string>NSStringPluralRuleType</string>
                <key>NSStringFormatValueTypeKey</key>
                <string>ld</string>
                <key>zero</key>
                <string>no pear</string>
                <key>one</key>
                <string>1 pear</string>
                <key>other</key>
                <string>%ld pears</string>
            </dict>
        </dict>
    </dict>
</plist>

用法:

let apples = 1
let pears = 3
let format = NSLocalizedString("apples_and_pears", comment: "")
let applesAndPears = String.localizedStringWithFormat(format, apples, pears)
print(applesAndPears) // 1 apple : 3 pears

这可以与位置参数结合使用:如果格式更改为

        <key>NSStringLocalizedFormatKey</key>
        <string>%2$#@num_pears@ : %1$#@num_apples@</string>

然后输出变成“3梨:1苹果”。

© www.soinside.com 2019 - 2024. All rights reserved.