22#include " extension.h"
33#include " translatewrapper.h"
44#include " blockmarkup.h"
5- #include " network.h"
65#include < concurrent_priority_queue.h>
7- #include < map>
86#include < fstream>
97#include < QComboBox>
108
@@ -25,33 +23,35 @@ extern const wchar_t* TOO_MANY_TRANS_REQUESTS;
2523extern const char * TRANSLATION_PROVIDER;
2624extern const char * GET_API_KEY_FROM;
2725extern const QStringList languagesTo, languagesFrom;
28- extern const std::unordered_map<std::wstring, std::wstring> codes;
2926extern bool translateSelectedOnly, rateLimitAll, rateLimitSelected, useCache, useFilter;
3027extern int tokenCount, rateLimitTimespan, maxSentenceSize;
3128std::pair<bool , std::wstring> Translate (const std::wstring& text, TranslationParam tlp);
3229
33- std::string TRANSLATION_CACHE_FILE = FormatString(" %s Translation Cache.txt" , TRANSLATION_PROVIDER);
34-
3530QFormLayout* display;
3631Settings settings;
3732
3833namespace
3934{
4035 Synchronized<TranslationParam> tlp;
41- Synchronized<std::map<std::wstring, std::wstring>> translationCache;
42- int savedSize;
36+ Synchronized<std::unordered_map<std::wstring, std::wstring>> translationCache;
37+ int savedSize = 0 ;
38+
39+ std::string CacheFile ()
40+ {
41+ return FormatString (" %s Cache (%S).txt" , TRANSLATION_PROVIDER, tlp->translateTo );
42+ }
4343 void SaveCache ()
4444 {
4545 std::wstring allTranslations (L" \xfeff " );
4646 for (const auto & [sentence, translation] : translationCache.Acquire ().contents )
4747 allTranslations.append (L" |SENTENCE|" ).append (sentence).append (L" |TRANSLATION|" ).append (translation).append (L" |END|\r\n " );
48- std::ofstream (TRANSLATION_CACHE_FILE , std::ios::binary | std::ios::trunc).write ((const char *)allTranslations.c_str (), allTranslations.size () * sizeof (wchar_t ));
48+ std::ofstream (CacheFile () , std::ios::binary | std::ios::trunc).write ((const char *)allTranslations.c_str (), allTranslations.size () * sizeof (wchar_t ));
4949 savedSize = translationCache->size ();
5050 }
5151 void LoadCache ()
5252 {
5353 translationCache->clear ();
54- std::ifstream stream (TRANSLATION_CACHE_FILE , std::ios::binary);
54+ std::ifstream stream (CacheFile () , std::ios::binary);
5555 BlockMarkupIterator savedTranslations (stream, Array<std::wstring_view>{ L" |SENTENCE|" , L" |TRANSLATION|" });
5656 auto translationCache = ::translationCache.Acquire ();
5757 while (auto read = savedTranslations.Next ())
@@ -141,9 +141,8 @@ class Window : public QDialog, Localizer
141141private:
142142 void SaveTranslateTo (QString language)
143143 {
144- settings.setValue (TRANSLATE_TO, S (tlp->translateTo = S (language)));
145144 if (translationCache->size () > savedSize) SaveCache ();
146- TRANSLATION_CACHE_FILE = FormatString ( " %s Translation Cache (%ls).txt " , TRANSLATION_PROVIDER, codes. at ( S (language)));
145+ settings. setValue (TRANSLATE_TO, S (tlp-> translateTo = S (language)));
147146 LoadCache ();
148147 }
149148 void SaveTranslateFrom (QString language)
0 commit comments