mirror of
https://github.com/Artikash/Textractor.git
synced 2024-12-23 08:54:12 +08:00
only cache translation on current thread
This commit is contained in:
parent
011a5418e9
commit
c074bbf506
@ -4,6 +4,8 @@
|
||||
|
||||
extern const wchar_t* TRANSLATION_ERROR;
|
||||
|
||||
extern Synchronized<std::wstring> translateTo;
|
||||
|
||||
const char* TRANSLATION_PROVIDER = "Bing";
|
||||
QStringList languages
|
||||
{
|
||||
@ -53,7 +55,6 @@ QStringList languages
|
||||
"Vietnamese: vi",
|
||||
"Welsh: cy"
|
||||
};
|
||||
Synchronized<std::wstring> translateTo = L"en";
|
||||
|
||||
std::pair<bool, std::wstring> Translate(const std::wstring& text)
|
||||
{
|
||||
|
@ -6,6 +6,8 @@
|
||||
|
||||
extern const wchar_t* TRANSLATION_ERROR;
|
||||
|
||||
extern Synchronized<std::wstring> translateTo;
|
||||
|
||||
const char* TRANSLATION_PROVIDER = "Google";
|
||||
QStringList languages
|
||||
{
|
||||
@ -70,7 +72,6 @@ QStringList languages
|
||||
"Yiddish: yi",
|
||||
"Zulu: zu"
|
||||
};
|
||||
Synchronized<std::wstring> translateTo = L"en";
|
||||
|
||||
std::wstring GetTranslationUri(const std::wstring& text, unsigned TKK)
|
||||
{
|
||||
|
@ -9,9 +9,9 @@ extern const wchar_t* TOO_MANY_TRANS_REQUESTS;
|
||||
|
||||
extern const char* TRANSLATION_PROVIDER;
|
||||
extern QStringList languages;
|
||||
extern Synchronized<std::wstring> translateTo;
|
||||
std::pair<bool, std::wstring> Translate(const std::wstring& text);
|
||||
|
||||
Synchronized<std::wstring> translateTo = L"en";
|
||||
int savedSize;
|
||||
Synchronized<std::unordered_map<std::wstring, std::wstring>> translationCache;
|
||||
|
||||
@ -86,7 +86,7 @@ bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo)
|
||||
if (translationCache->count(sentence) != 0) translation = translationCache->at(sentence);
|
||||
else if (!(rateLimiter.Request() || sentenceInfo["current select"])) translation = TOO_MANY_TRANS_REQUESTS;
|
||||
else std::tie(cache, translation) = Translate(sentence);
|
||||
if (cache)
|
||||
if (cache && sentenceInfo["current select"])
|
||||
{
|
||||
translationCache->insert({ sentence, translation });
|
||||
if (translationCache->size() > savedSize + 50) SaveCache();
|
||||
@ -98,9 +98,5 @@ bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo)
|
||||
}
|
||||
|
||||
TEST(
|
||||
{
|
||||
std::wstring test = L"こんにちは";
|
||||
ProcessSentence(test, { SentenceInfo::DUMMY });
|
||||
assert(test.find(L"Hello") != std::wstring::npos);
|
||||
}
|
||||
assert(Translate(L"こんにちは").second.find(L"ello") != std::wstring::npos)
|
||||
);
|
||||
|
Loading…
x
Reference in New Issue
Block a user