Skip to content

Commit accd231

Browse files
committed
add option to only translate selected thread
1 parent 8a71065 commit accd231

File tree

6 files changed

+31
-18
lines changed

6 files changed

+31
-18
lines changed

extensions/bingtranslate.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ QStringList languages
1414
"Bangla: bn",
1515
"Bosnian: bs",
1616
"Bulgarian: bg",
17-
"Cantonese (Traditional): yue",
17+
"Cantonese (traditional): yue",
1818
"Catalan: ca",
19-
"Chinese (Simplified): zh-Hans",
20-
"Chinese (Traditional): zh-Hant",
19+
"Chinese (simplified): zh-Hans",
20+
"Chinese (traditional): zh-Hant",
2121
"Croatian: hr",
2222
"Czech: cs",
2323
"Danish: da",
@@ -79,6 +79,9 @@ QStringList languages
7979
"Yucatec Maya: yua"
8080
};
8181

82+
bool translateSelectedOnly = false, rateLimitAll = true, rateLimitSelected = false, useCache = true;
83+
int tokenCount = 30, tokenRestoreDelay = 60000;
84+
8285
std::pair<bool, std::wstring> Translate(const std::wstring& text, SentenceInfo)
8386
{
8487
if (HttpRequest httpRequest{

extensions/deepltranslate.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ extern Synchronized<std::wstring> translateTo;
1313
const char* TRANSLATION_PROVIDER = "DeepL Translate";
1414
QStringList languages
1515
{
16-
"Chinese: ZH",
16+
"Chinese (simplified): ZH",
1717
"Dutch: NL",
1818
"English: EN",
1919
"French: FR",
@@ -26,6 +26,9 @@ QStringList languages
2626
"Spanish: ES",
2727
};
2828

29+
bool translateSelectedOnly = true, rateLimitAll = true, rateLimitSelected = true, useCache = false;
30+
int tokenCount = 10, tokenRestoreDelay = 60000;
31+
2932
const wchar_t* accept[] = { L"*/*", nullptr };
3033

3134
Synchronized<std::wstring> LMTBID;
@@ -87,8 +90,8 @@ std::pair<bool, std::wstring> Translate(const std::wstring& text, SentenceInfo s
8790
}
8891
)", ++id, r + (n - r % n), WideStringToString(translateTo->c_str()), jsonText, useContext ? WideStringToString(context->operator[](sentenceInfo["text number"])) : "");
8992
context->insert_or_assign(sentenceInfo["text number"], L'"' + text + L'"');
90-
std::wstring headers = L"Host: www2.deepl.com\r\nAccept-Language: en-US,en;q=0.5\r\nContent-type: text/plain\r\nOrigin: https://www.deepl.com\r\nTE: Trailers"
91-
+ LMTBID.Acquire().contents;
93+
// missing accept-encoding header since it fucks up HttpRequest
94+
std::wstring headers = L"Host: www2.deepl.com\r\nAccept-Language: en-US,en;q=0.5\r\nContent-type: text/plain\r\nOrigin: https://www.deepl.com\r\nTE: Trailers" + LMTBID.Acquire().contents;
9295
if (HttpRequest httpRequest{
9396
L"Mozilla/5.0 Textractor",
9497
L"www2.deepl.com",

extensions/googletranslate.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ QStringList languages
2121
"Bosnian: bs",
2222
"Bulgarian: bg",
2323
"Catalan: ca",
24-
"Chinese(Simplified): zh-CH",
25-
"Chinese(Traditional): zh-TW",
24+
"Chinese (simplified): zh-CH",
25+
"Chinese (traditional): zh-TW",
2626
"Croatian: hr",
2727
"Czech: cs",
2828
"Danish: da",
@@ -75,6 +75,9 @@ QStringList languages
7575
"Zulu: zu"
7676
};
7777

78+
bool translateSelectedOnly = false, rateLimitAll = true, rateLimitSelected = false, useCache = true;
79+
int tokenCount = 30, tokenRestoreDelay = 60000;
80+
7881
Synchronized<std::wstring> key;
7982

8083
unsigned TKK = 0;

extensions/translatewrapper.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
extern const char* NATIVE_LANGUAGE;
1010
extern const char* TRANSLATE_TO;
11+
extern const char* TRANSLATE_SELECTED_THREAD_ONLY;
1112
extern const char* RATE_LIMIT_ALL_THREADS;
1213
extern const char* RATE_LIMIT_SELECTED_THREAD;
1314
extern const char* USE_TRANS_CACHE;
@@ -17,6 +18,8 @@ extern const wchar_t* TOO_MANY_TRANS_REQUESTS;
1718

1819
extern const char* TRANSLATION_PROVIDER;
1920
extern QStringList languages;
21+
extern bool translateSelectedOnly, rateLimitAll, rateLimitSelected, useCache;
22+
extern int tokenCount, tokenRestoreDelay;
2023
std::pair<bool, std::wstring> Translate(const std::wstring& text, SentenceInfo sentenceInfo);
2124

2225
const char* LANGUAGE = u8"Language";
@@ -26,8 +29,6 @@ QFormLayout* display;
2629
QSettings settings = openSettings();
2730
Synchronized<std::wstring> translateTo = L"en";
2831

29-
bool rateLimitAll = true, rateLimitSelected = false, useCache = true;
30-
int tokenCount = 30, tokenRestoreDelay = 60000;
3132
Synchronized<std::map<std::wstring, std::wstring>> translationCache;
3233
int savedSize;
3334

@@ -61,6 +62,7 @@ class Window : public QDialog
6162
display->addRow(TRANSLATE_TO, languageBox);
6263
connect(languageBox, &QComboBox::currentTextChanged, this, &Window::saveLanguage);
6364
for (auto [value, label] : Array<bool&, const char*>{
65+
{ translateSelectedOnly, TRANSLATE_SELECTED_THREAD_ONLY },
6466
{ rateLimitAll, RATE_LIMIT_ALL_THREADS },
6567
{ rateLimitSelected, RATE_LIMIT_SELECTED_THREAD },
6668
{ useCache, USE_TRANS_CACHE },
@@ -136,9 +138,9 @@ bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo)
136138
if (useCache)
137139
{
138140
auto translationCache = ::translationCache.Acquire();
139-
if (auto it = translationCache->find(sentence); it != translationCache->end()) translation = it->second + L"\x200b";
141+
if (auto it = translationCache->find(sentence); it != translationCache->end()) translation = it->second + L"\x200b"; // dumb hack to not try to translate if stored empty translation
140142
}
141-
if (translation.empty())
143+
if (translation.empty() && (!translateSelectedOnly || sentenceInfo["current select"]))
142144
if (rateLimiter.Request() || !rateLimitAll || (!rateLimitSelected && sentenceInfo["current select"])) std::tie(cache, translation) = Translate(sentence, sentenceInfo);
143145
else translation = TOO_MANY_TRANS_REQUESTS;
144146
if (cache) translationCache->try_emplace(sentence, translation);

include/common.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,14 @@ constexpr bool x64 = false;
2828
#endif
2929

3030
template <typename T, typename... Xs>
31-
struct ArrayImpl { using type = std::tuple<T, Xs...>[]; };
31+
struct ArrayImpl { using Type = std::tuple<T, Xs...>[]; };
3232
template <typename T>
33-
struct ArrayImpl<T> { using type = T[]; };
33+
struct ArrayImpl<T> { using Type = T[]; };
3434
template <typename... Ts>
35-
using Array = typename ArrayImpl<Ts...>::type;
35+
using Array = typename ArrayImpl<Ts...>::Type;
3636

37-
template <auto F> using Functor = std::integral_constant<std::remove_reference_t<decltype(F)>, F>;
37+
template <auto F>
38+
using Functor = std::integral_constant<std::remove_reference_t<decltype(F)>, F>;
3839

3940
template <typename V>
4041
struct Identity { V operator()(V v) const { return v; } };

text.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,9 @@ const char* READ_ERROR = u8"Textractor: Reader ERROR (likely an incorrect R-code
130130
const char* HIJACK_ERROR = u8"Textractor: Hijack ERROR";
131131
const char* COULD_NOT_FIND = u8"Textractor: could not find text";
132132
const char* TRANSLATE_TO = u8"Translate to";
133+
const char* TRANSLATE_SELECTED_THREAD_ONLY = u8"Translate selected text thread only";
133134
const char* RATE_LIMIT_ALL_THREADS = u8"Rate limit all text threads";
134-
const char* RATE_LIMIT_SELECTED_THREAD = u8"Rate limit currently selected text thread";
135+
const char* RATE_LIMIT_SELECTED_THREAD = u8"Rate limit selected text thread";
135136
const char* USE_TRANS_CACHE = u8"Use translation cache";
136137
const char* RATE_LIMIT_TOKEN_COUNT = u8"Rate limiter token count";
137138
const char* RATE_LIMIT_TOKEN_RESTORE_DELAY = u8"Rate limiter token restore delay (ms)";
@@ -308,7 +309,7 @@ Clic y arrastra los bordes de la ventana para moverla, o en la esquina inferior
308309
#endif // SPANISH
309310

310311
#ifdef SIMPLIFIED_CHINESE
311-
NATIVE_LANGUAGE = "Chinese (Simplified)";
312+
NATIVE_LANGUAGE = "Chinese (simplified)";
312313
ATTACH = u8"附加到游戏";
313314
LAUNCH = u8"启动游戏";
314315
DETACH = u8"从游戏分离";

0 commit comments

Comments
 (0)