如何在 Stringsdict 文件格式中添加复数而不在显示的字符串中显示数字值

How to add plural in Stringsdict file format without showing the number value in the string shown

在 Xcode 中使用 stringsdict 文件,我将如何为不会在最终显示的文本中显示数字的标签支持复数形式?

例如,如果我有一个标签 "Days Since" 和另一个具有相应编号的标签,当它们是两个单独的标签时,如何将其输入到 stringsdict 文件中?

谢谢。

正如您所希望的那样简单。将数字添加到可本地化的字符串中,但不要在翻译中使用它。在翻译中不提及变量是完全可以的;也许您想键入零或一而不是 0 或 1。


例如,在 SwiftUI 中,以下将查找复数翻译: Text("\(count) days").

正常的英语 stringsdict 文件如下所示,结果为 0 days1 day2 days 等:

<?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>%lld days</key>
    <dict>
        <key>NSStringLocalizedFormatKey</key>
        <string>%#@days@</string>
        <key>days</key>
        <dict>
            <key>NSStringFormatSpecTypeKey</key>
            <string>NSStringPluralRuleType</string>
            <key>NSStringFormatValueTypeKey</key>
            <string>d</string>
            <key>one</key>
            <string>%d day</string>
            <key>other</key>
            <string>%d days</string>
        </dict>
    </dict>
</dict>
</plist>

要实现您的目标,只需从翻译中删除 %d。结果将是 days(对于 0),day(对于 1),days(对于 2+):

<?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>%lld days</key>
    <dict>
        <key>NSStringLocalizedFormatKey</key>
        <string>%#@days@</string>
        <key>days</key>
        <dict>
            <key>NSStringFormatSpecTypeKey</key>
            <string>NSStringPluralRuleType</string>
            <key>NSStringFormatValueTypeKey</key>
            <string>d</string>
            <key>one</key>
            <string>day</string>
            <key>other</key>
            <string>days</string>
        </dict>
    </dict>
</dict>
</plist>