From ce6b3785ac3485082fd244a234a7c8929aa3b9aa Mon Sep 17 00:00:00 2001 From: Syping Date: Sun, 29 Mar 2026 11:40:13 +0200 Subject: [PATCH] deepl: improve compatibility and language formatting --- src/translator/deepl/deepl.cpp | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/translator/deepl/deepl.cpp b/src/translator/deepl/deepl.cpp index 597d307..a8b8047 100644 --- a/src/translator/deepl/deepl.cpp +++ b/src/translator/deepl/deepl.cpp @@ -56,10 +56,16 @@ const std::vector deepl::get_languages() if (json_lang_code != json_language->end()) language.code = *json_lang_code; - if (language.code.size() > 2) + if (language.code.size() == 5) { std::transform(language.code.begin(), language.code.begin() + 2, language.code.begin(), ::tolower); - else + } + else if (language.code.size() > 5) { + std::transform(language.code.begin(), language.code.begin() + 2, language.code.begin(), ::tolower); + std::transform(language.code.begin() + 4, language.code.end(), language.code.begin() + 4, ::tolower); + } + else { std::transform(language.code.begin(), language.code.end(), language.code.begin(), ::tolower); + } auto json_lang_name = json_language->find("name"); if (json_lang_name != json_language->end()) @@ -69,6 +75,23 @@ const std::vector deepl::get_languages() m_languages.languages.push_back(std::move(language)); } } + // Improving DeepL compatibility + if (std::find_if(m_languages.languages.begin(), m_languages.languages.end(), [](language language) { + return language.code == "en"; + }) == m_languages.languages.end()) { + language english; + english.code = "en"; + english.name = "English (Default)"; + m_languages.languages.push_back(english); + } + if (std::find_if(m_languages.languages.begin(), m_languages.languages.end(), [](language language) { + return language.code == "pt"; + }) == m_languages.languages.end()) { + language portuguese; + portuguese.code = "pt"; + portuguese.name = "Portuguese (Default)"; + m_languages.languages.push_back(portuguese); + } m_languages.query_time = std::chrono::system_clock::now(); } }