簡體   English   中英

.stringsdict 在 iOS8 中不起作用

[英].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字符串。 stringkey都必須相同。

還要注意。 .stringsdict 和 .strings 文件必須位於項目的根目錄下。 否則它們不會被發現。

我在 Xcode 9 上遇到了類似的問題,我不得不刪除我的 .stringsdict 文件,重新創建它,將其放入根項目文件夾,然后將其添加到目標中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM