7

我对.stringsdict 文档有点困惑(滚动到“本地化属性列表文件”)。

给定许多文件,我想显示保存文件或相应地保存保存文件。我认为以下方法会起作用,但没有。

在代码中:

NSString *string = [NSString localizedStringWithFormat:NSLocalizedString(@"%Save Files", @""), (long)files.count];

Localizable.stringsdict

<key>Save Files</key>
<dict>
    <key>NSStringLocalizedFormatKey</key>
    <string>Save %#@files@</string>
    <key>files</key>
    <dict>
        <key>NSStringFormatSpecTypeKey</key>
        <string>NSStringPluralRuleType</string>
        <key>NSStringFormatValueTypeKey</key>
        <string>ld</string>
        <key>one</key>
        <string>File</string>
        <key>other</key>
        <string>Files</string>
    </dict>
</dict>

始终显示Save Files,无论计数如何。

我究竟做错了什么?

4

3 回答 3

3

问题是您的代码缺少保存的文件数量。为了使用 stringsdict 文件本地化复数行,该行必须有一个数字变量。所以它说@“ %Save Files”的地方应该说@“ Save %ld File(s) ”。%ld 是 Xcode 需要的数字,以了解在运行时使用哪个复数规则。

然后,在您的 Localizable.stringsdict 文件中,您的 plist 必须如下所示:

<key>Save %ld File(s)</key>
<dict>
  <key>NSStringLocalizedFormatKey</key>
  <string>%#@files@</string>
  <key>files</key>
  <dict>
    <key>NSStringFormatSpecTypeKey</key>
    <string>NSStringPluralRuleType</string>
    <key>NSStringFormatValueTypeKey</key>
    <string>ld</string>
    <key>one</key>
    <string>Save %ld File</string>
    <key>other</key>
    <string>Save %ld Files</string>
  </dict>
</dict>

使用像这样的 Localizable.stringsdict 生成器/教程可以真正帮助解决此类问题:

iOS Stringsdict 复数生成器

同样重要的是,您要留下完整的行,让翻译人员重新修改短语。而不是“保存 %#@files@”,而是给他们整行来使用“%#@files”。为什么?因为某些语言中的“保存”一词可能需要根据文件的数量进行共轭,或者可能需要出现在数字的另一侧(即要保存 3 个文件)。永远不要假设英语语法会起作用,让翻译人员翻译完整的行。

于 2015-05-20T19:02:06.010 回答
1

如果您从NSLocalizedString(@"%Save Files", @"")

于 2017-04-12T03:26:57.430 回答
-1

你错过了%ld里面NSLocalizesString

NSString *string = [NSString localizedStringWithFormat:NSLocalizedString(@"%ld Save Files", nil), (long)files.count];

plist dict应该:

<key>%ld Save Files</key>
<dict>
    <key>NSStringLocalizedFormatKey</key>
    <string>%ld Save %#@files@</string>
    <key>files</key>
    <dict>
        <key>NSStringFormatSpecTypeKey</key>
        <string>NSStringPluralRuleType</string>
        <key>NSStringFormatValueTypeKey</key>
        <string>ld</string>
        <key>one</key>
        <string>File</string>
        <key>other</key>
        <string>Files</string>
    </dict>
</dict>
于 2014-03-28T07:47:38.680 回答