Skip to content

Commit db31e19

Browse files
Blu3trainArtikash
authored andcommitted
cache filename extension translators: added target language name
1 parent d64a2c0 commit db31e19

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

extensions/translatewrapper.cpp

+18-11
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,12 @@ extern const wchar_t* TOO_MANY_TRANS_REQUESTS;
2525
extern const char* TRANSLATION_PROVIDER;
2626
extern const char* GET_API_KEY_FROM;
2727
extern const QStringList languagesTo, languagesFrom;
28+
extern const std::unordered_map<std::wstring, std::wstring> codes;
2829
extern bool translateSelectedOnly, rateLimitAll, rateLimitSelected, useCache, useFilter;
2930
extern int tokenCount, rateLimitTimespan, maxSentenceSize;
3031
std::pair<bool, std::wstring> Translate(const std::wstring& text, TranslationParam tlp);
3132

32-
const std::string TRANSLATION_CACHE_FILE = FormatString("%s Translation Cache.txt", TRANSLATION_PROVIDER);
33+
std::string TRANSLATION_CACHE_FILE = FormatString("%s Translation Cache.txt", TRANSLATION_PROVIDER);
3334

3435
QFormLayout* display;
3536
Settings settings;
@@ -47,6 +48,19 @@ namespace
4748
std::ofstream(TRANSLATION_CACHE_FILE, std::ios::binary | std::ios::trunc).write((const char*)allTranslations.c_str(), allTranslations.size() * sizeof(wchar_t));
4849
savedSize = translationCache->size();
4950
}
51+
void LoadCache()
52+
{
53+
translationCache->clear();
54+
std::ifstream stream(TRANSLATION_CACHE_FILE, std::ios::binary);
55+
BlockMarkupIterator savedTranslations(stream, Array<std::wstring_view>{ L"|SENTENCE|", L"|TRANSLATION|" });
56+
auto translationCache = ::translationCache.Acquire();
57+
while (auto read = savedTranslations.Next())
58+
{
59+
auto& [sentence, translation] = read.value();
60+
translationCache->try_emplace(std::move(sentence), std::move(translation));
61+
}
62+
savedSize = translationCache->size();
63+
}
5064
}
5165

5266
class Window : public QDialog, Localizer
@@ -117,16 +131,6 @@ class Window : public QDialog, Localizer
117131

118132
setWindowTitle(TRANSLATION_PROVIDER);
119133
QMetaObject::invokeMethod(this, &QWidget::show, Qt::QueuedConnection);
120-
121-
std::ifstream stream(TRANSLATION_CACHE_FILE, std::ios::binary);
122-
BlockMarkupIterator savedTranslations(stream, Array<std::wstring_view>{ L"|SENTENCE|", L"|TRANSLATION|" });
123-
auto translationCache = ::translationCache.Acquire();
124-
while (auto read = savedTranslations.Next())
125-
{
126-
auto& [sentence, translation] = read.value();
127-
translationCache->try_emplace(std::move(sentence), std::move(translation));
128-
}
129-
savedSize = translationCache->size();
130134
}
131135

132136
~Window()
@@ -138,6 +142,9 @@ class Window : public QDialog, Localizer
138142
void SaveTranslateTo(QString language)
139143
{
140144
settings.setValue(TRANSLATE_TO, S(tlp->translateTo = S(language)));
145+
if (translationCache->size() > savedSize) SaveCache();
146+
TRANSLATION_CACHE_FILE = FormatString("%s Translation Cache (%ls).txt", TRANSLATION_PROVIDER, codes.at(S(language)));
147+
LoadCache();
141148
}
142149
void SaveTranslateFrom(QString language)
143150
{

0 commit comments

Comments
 (0)