2017-01-16 14 views
0

文字列をローカライズしようとすると、以前の値が返されます。 this postに、実際にキャッシュを無効にする必要があることがわかりました。SwiftのNSBundleからキャッシュを無効にする方法

これは多かれ少なかれ私が試したコードです。 localizableStringsPathの中には、実際にはinetからダウンロードした翻訳が実際に表示されますが、bundleは前の値を返します。私は、アプリケーションを閉じて、その後、localizableStringsPathから以前の値を返すしなければならない。

func translateFromInet(key: String) -> String { 
    let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first ?? "" 
    let localizableStringsPath = documentsPath + "/Localizable.strings" // This file is downloaded from the inet with custom translations 
    let bundle = Bundle(path: documentsPath) 
    return bundle!.localizedString(forKey: key, value: nil, table: nil) 
} 
+0

、あなたは何をすべきか「それは前の値を返す」という意味ですか?あなたがリンクした質問は、そのポスターの非常に珍しい要件であり、あなたに当てはまる可能性は低いです。より具体的に何をしようとしているのか、何が起こるのか、実際に何が起こっているのかを指定できますか?いくつかのコードを教えてください。 –

+0

リモートローカライズされた文字列を含むファイルをダウンロードして、アプリケーションに適用する必要があります。アプリケーションが起動すると、ファイルをダウンロードし、documentsDictoryに追加してから、前のパスのバンドルを作成して翻訳を取得します。しかし、私はそれらの値がキャッシュされているので、実際のデータを取得するために、アプリケーションを閉じて再起動する必要があります。投稿したリンクを読んでください。 – Godfather

+1

さて、私は問題を理解していると思います。これまでに試したコードを提供できますか? NSLocalizedStringFromTableInBundleを使用していますか? –

答えて

1

Localizable.nocache.strings代わりのLocalizable.stringsとしてローカライズファイルを保存します。 あなたはリンゴのドキュメント内のより詳細な情報を見つけることができます。 developer.apple.com - Resource Programming Guide - String Resources

  • あなたは、次のようにコードを編集を行い、その後Localizable.nocache.stringsにダウンロードしたファイルの名前を変更することができます

    func translateFromInet(key: String) -> String { 
        let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first ?? "" 
        let localizableStringsPath = documentsPath + "/Localizable.nocache.strings" // This file is downloaded from the inet with custom translations 
        let bundle = Bundle(path: documentsPath) 
        return bundle!.localizedString(forKey: key, value: nil, table: nil) 
    } 
    
関連する問題