Skip to content

Commit 493e80e

Browse files
committed
change file name and remove global to fix threading issue
1 parent db31e19 commit 493e80e

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

extensions/translatewrapper.cpp

+10-11
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
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;
2523
extern const char* TRANSLATION_PROVIDER;
2624
extern const char* GET_API_KEY_FROM;
2725
extern const QStringList languagesTo, languagesFrom;
28-
extern const std::unordered_map<std::wstring, std::wstring> codes;
2926
extern bool translateSelectedOnly, rateLimitAll, rateLimitSelected, useCache, useFilter;
3027
extern int tokenCount, rateLimitTimespan, maxSentenceSize;
3128
std::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-
3530
QFormLayout* display;
3631
Settings settings;
3732

3833
namespace
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
141141
private:
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

Comments
 (0)