2
2
#include " extension.h"
3
3
#include " translatewrapper.h"
4
4
#include " blockmarkup.h"
5
- #include " network.h"
6
5
#include < concurrent_priority_queue.h>
7
- #include < map>
8
6
#include < fstream>
9
7
#include < QComboBox>
10
8
@@ -25,33 +23,35 @@ extern const wchar_t* TOO_MANY_TRANS_REQUESTS;
25
23
extern const char * TRANSLATION_PROVIDER;
26
24
extern const char * GET_API_KEY_FROM;
27
25
extern const QStringList languagesTo, languagesFrom;
28
- extern const std::unordered_map<std::wstring, std::wstring> codes;
29
26
extern bool translateSelectedOnly, rateLimitAll, rateLimitSelected, useCache, useFilter;
30
27
extern int tokenCount, rateLimitTimespan, maxSentenceSize;
31
28
std::pair<bool , std::wstring> Translate (const std::wstring& text, TranslationParam tlp);
32
29
33
- std::string TRANSLATION_CACHE_FILE = FormatString(" %s Translation Cache.txt" , TRANSLATION_PROVIDER);
34
-
35
30
QFormLayout* display;
36
31
Settings settings;
37
32
38
33
namespace
39
34
{
40
35
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
+ }
43
43
void SaveCache ()
44
44
{
45
45
std::wstring allTranslations (L" \xfeff " );
46
46
for (const auto & [sentence, translation] : translationCache.Acquire ().contents )
47
47
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 ));
49
49
savedSize = translationCache->size ();
50
50
}
51
51
void LoadCache ()
52
52
{
53
53
translationCache->clear ();
54
- std::ifstream stream (TRANSLATION_CACHE_FILE , std::ios::binary);
54
+ std::ifstream stream (CacheFile () , std::ios::binary);
55
55
BlockMarkupIterator savedTranslations (stream, Array<std::wstring_view>{ L" |SENTENCE|" , L" |TRANSLATION|" });
56
56
auto translationCache = ::translationCache.Acquire ();
57
57
while (auto read = savedTranslations.Next ())
@@ -141,9 +141,8 @@ class Window : public QDialog, Localizer
141
141
private:
142
142
void SaveTranslateTo (QString language)
143
143
{
144
- settings.setValue (TRANSLATE_TO, S (tlp->translateTo = S (language)));
145
144
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)));
147
146
LoadCache ();
148
147
}
149
148
void SaveTranslateFrom (QString language)
0 commit comments