2016-01-29 4 views
5

.stringsdictを使用していくつかの問題があります。そのようなコード:.stringsdictはiOS8で動作しません

<?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>groups-selected</key> 
    <dict> 
     <key>NSStringLocalizedFormatKey</key> 
     <string>%#@[email protected]</string> 
     <key>groups</key> 
     <dict> 
      <key>NSStringFormatSpecTypeKey</key> 
      <string>NSStringPluralRuleType</string> 
      <key>NSStringFormatValueTypeKey</key> 
      <string>d</string> 
      <key>one</key> 
      <string>%d group selected</string> 
      <key>other</key> 
      <string>%d groups selected</string> 
     </dict> 
    </dict> 
    <key>friends-online</key> 
    <dict> 
     <key>NSStringLocalizedFormatKey</key> 
     <string>%#@[email protected]</string> 
     <key>friends</key> 
     <dict> 
      <key>NSStringFormatSpecTypeKey</key> 
      <string>NSStringPluralRuleType</string> 
      <key>NSStringFormatValueTypeKey</key> 
      <string>d</string> 
      <key>one</key> 
      <string>%d friend online</string> 
      <key>other</key> 
      <string>%d friends online</string> 
     </dict> 
    </dict> 
    <key>points-usage-message</key> 
    <dict> 
     <key>NSStringLocalizedFormatKey</key> 
     <string>%#@[email protected]</string> 
     <key>points</key> 
     <dict> 
      <key>NSStringFormatSpecTypeKey</key> 
      <string>NSStringPluralRuleType</string> 
      <key>NSStringFormatValueTypeKey</key> 
      <string>d</string> 
      <key>one</key> 
      <string>%d point will be deducted</string> 
      <key>other</key> 
      <string>%d points will be deducted</string> 
     </dict> 
    </dict> 
</dict> 
</plist> 

ローカライズ作品がシミュレータで、デバイス上のiOS9 +で見つけるには、しかしiOS8のためには、どちらも上では動作しませんし、私はちょうどキー名出力すなわち:points-usage-messageを取得します。私がここで間違っているかもしれない何かのアイデア?

+0

NSLocalizedStringをコードで呼び出すには、その部分のコードで質問を更新できますか? –

+0

@KexAri any luck? Maxim Mikheevが尋ねたように、回答を確認したり、コードを追加したりできますか? –

+0

@KexAri any luck?同じ問題に直面... – ofer2980

答えて

1

はあなたpoints-usage-message文字列を

<string>%#@[email protected]</string> 
<key>points</key> 

<string>%#@[email protected]</string> 
<key>credits</key> 

を変更してください。 stringkeyの両方が同じである必要があります。

+1

https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/StringsdictFileFormat/StringsdictFileFormat.html – Joe

+0

申し訳ありませんが、それは誤字です。ポイントです。質問を修正しました。 – KexAri

4

実際には、iOS 8.4で動作するようになっています。また、.strinsgdict形式も使用しています。私たちのファイルに

<key>points-usage-message</key> 
<dict> 
    <key>NSStringLocalizedFormatKey</key> 
    <string>%#@[email protected]</string> 
    <key>points</key> 
    <dict> 
     <key>NSStringFormatSpecTypeKey</key> 
     <string>NSStringPluralRuleType</string> 
     <key>NSStringFormatValueTypeKey</key> 
     <string>d</string> 
     <key>one</key> 
     <string>%d point will be deducted</string> 
     <key>other</key> 
     <string>%d points will be deducted</string> 
    </dict> 
</dict> 

、それが正常に動作し、私はこのコードでそれを取得したとき:だから私はこのコードを追加

[NSString localizedStringWithFormat:NSLocalizedString(@"points-usage-message", nil), 42]; 

かSWIFT:

let localizedFormat = NSLocalizedString("points-usage-message", comment: "") 
let pointsInfo = String.localizedStringWithFormat(localizedFormat, 42) 

そのコードを試してみてください結果を共有することができます。 また、.strinsgdictファイルのターゲットメンバーシップとローカリゼーション(一部の国に設定する必要があります)をチェックすることもできます。

4

チェックhttp://maniak-dobrii.com/understanding-ios-internationalization/、と言う特別な部分:

「を.stringsdictための迅速な落とし穴:それ以外の場合は、(少なくとも空).stringsあなたがサポートする各ローカライズに同じ名前のファイルを持っていることを忘れないでください.stringsdictは認識されず、使用されません。

私の場合は、ローカライズされた.stringsdictファイルとローカライズされていない.stringsファイルがありました。 iOS9は正しい翻訳を表示することができましたが、iOS8は惨めに失敗しました

+0

これは、iOS 8が.stringsdictファイルを取得しないという問題を修正しました。ファイルの形式が間違っていたため、選択できるローカライズ可能なオプションはありませんでした。 –

1

注意してください。 .stringsdictと.stringsファイルは、プロジェクトのルートに配置する必要があります。 それ以外のものは見つかりません。

関連する問題