[英].stringsdict not working in iOS8
使用 .stringsdict 時遇到一些問題。 代碼如下:
<?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>%#@groups@</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>%#@friends@</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>%#@points@</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
。 任何想法我在這里可能做錯了什么?
檢查http://maniak-dobrii.com/understanding-ios-internationalization/ ,特別是說:
“.stringsdict 的一個快速問題:不要忘記為您支持的每個本地化提供(至少是空的).strings 文件,否則 .stringsdict 將不會被識別和使用。”
就我而言,我有一個本地化的 .stringsdict 文件和一個非本地化的 .strings 文件。 iOS9 能夠顯示正確的翻譯,但 iOS8 卻慘遭失敗
實際上它適用於 iOS 8.4。 我們也在使用.strinsgdict
格式。 所以我添加了這個代碼:
<key>points-usage-message</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@points@</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];
或迅速:
let localizedFormat = NSLocalizedString("points-usage-message", comment: "")
let pointsInfo = String.localizedStringWithFormat(localizedFormat, 42)
請嘗試該代碼並分享結果。 此外,您還可以嘗試檢查.strinsgdict
文件目標成員資格和本地化(應設置為某個國家/地區)。
嘗試改變
<string>%#@points@</string>
<key>credits</key>
到
<string>%#@points@</string>
<key>points</key>
為您points-usage-message
字符串。 string
和key
都必須相同。
還要注意。 .stringsdict 和 .strings 文件必須位於項目的根目錄下。 否則它們不會被發現。
我在 Xcode 9 上遇到了類似的問題,我不得不刪除我的 .stringsdict 文件,重新創建它,將其放入根項目文件夾,然后將其添加到目標中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.