使用无数字的多个字符串

时间:2014-02-14 19:27:19

标签: ios macos ios7 localizable.strings plural

我对.stringsdict documentation感到有点困惑(滚动到"本地化属性列表文件")。

鉴于有多个文件,我想显示保存文件或相应地保存保存文件。我认为以下内容可行,但不是。

在代码中:

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>

无论计数如何,始终显示保存文件

我做错了什么?

3 个答案:

答案 0 :(得分:3)

问题是您的代码缺少保存的文件数。为了使用stringsdict文件来定位多行,该行必须具有数字变量。所以在它说@&#34; %保存文件&#34;时,应该说@&#34; 保存%ld文件&#34;。 %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 Plurals Generator

同样重要的是,你要留下翻译的完整行来重写这句话。而不是&#34; Save%#@ files @&#34;让他们全程使用&#34;%#@ files&#34;。为什么?因为这个词&#34; Save&#34;某些语言可能需要根据文件的数量进行共轭,或者可能需要在数字的另一侧出现(即3个要保存的文件)。永远不要假设英语语法会起作用,让翻译人员翻译完整的句子。

答案 1 :(得分:1)

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

中删除“%”,则无效

答案 2 :(得分:-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>