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 Plurals ジェネレーター

翻訳者がフレーズを修正できるように、完全な行として残しておくことも重要です。「Save %#@files@」の代わりに、「%#@files」で作業する行全体を指定します。なんで?一部の言語では、「保存」という単語は、ファイルの数に応じて活用する必要があるか、数字の反対側に表示する必要がある場合があります (つまり、保存するファイルが 3 つ)。英語の文法がうまくいくと思い込まず、翻訳者に行全体を翻訳させてください。

于 2015-05-20T19:02:06.010 に答える