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



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

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

谢谢。

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


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

正常的英文字符串文件如下所示,并导致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>

最新更新