File indexing completed on 2025-04-27 03:58:38
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2018-02-22 0007 * Description : A text translator using web-services - Properties methods. 0008 * 0009 * SPDX-FileCopyrightText: 2018-2022 by Hennadii Chernyshchyk <genaloner at gmail dot com> 0010 * SPDX-FileCopyrightText: 2021-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0011 * 0012 * SPDX-License-Identifier: GPL-2.0-or-later 0013 * 0014 * ============================================================ */ 0015 0016 #include "donlinetranslator_p.h" 0017 0018 namespace Digikam 0019 { 0020 0021 bool DOnlineTranslator::isSourceTranslitEnabled() const 0022 { 0023 return d->sourceTranslitEnabled; 0024 } 0025 0026 void DOnlineTranslator::setSourceTranslitEnabled(bool enable) 0027 { 0028 d->sourceTranslitEnabled = enable; 0029 } 0030 0031 bool DOnlineTranslator::isTranslationTranslitEnabled() const 0032 { 0033 return d->translationTranslitEnabled; 0034 } 0035 0036 void DOnlineTranslator::setTranslationTranslitEnabled(bool enable) 0037 { 0038 d->translationTranslitEnabled = enable; 0039 } 0040 0041 bool DOnlineTranslator::isSourceTranscriptionEnabled() const 0042 { 0043 return d->sourceTranscriptionEnabled; 0044 } 0045 0046 void DOnlineTranslator::setSourceTranscriptionEnabled(bool enable) 0047 { 0048 d->sourceTranscriptionEnabled = enable; 0049 } 0050 0051 bool DOnlineTranslator::isTranslationOptionsEnabled() const 0052 { 0053 return d->translationOptionsEnabled; 0054 } 0055 0056 void DOnlineTranslator::setTranslationOptionsEnabled(bool enable) 0057 { 0058 d->translationOptionsEnabled = enable; 0059 } 0060 0061 void DOnlineTranslator::setEngineUrl(Engine engine, const QString& url) 0062 { 0063 switch (engine) 0064 { 0065 case LibreTranslate: 0066 d->libreUrl = url; 0067 break; 0068 0069 case Lingva: 0070 d->lingvaUrl = url; 0071 break; 0072 0073 default: 0074 break; 0075 } 0076 } 0077 0078 void DOnlineTranslator::setEngineApiKey(Engine engine, const QByteArray& apiKey) 0079 { 0080 switch (engine) 0081 { 0082 case LibreTranslate: 0083 d->libreApiKey = apiKey; 0084 break; 0085 0086 default: 0087 break; 0088 } 0089 } 0090 0091 QJsonDocument DOnlineTranslator::toJson() const 0092 { 0093 QJsonObject translationOptions; 0094 0095 for (auto it = d->translationOptions.cbegin() ; it != d->translationOptions.cend() ; ++it) 0096 { 0097 QJsonArray arr; 0098 0099 for (const DOnlineTranslatorOption& option : it.value()) 0100 { 0101 arr.append(option.toJson()); 0102 } 0103 0104 translationOptions.insert(it.key(), arr); 0105 } 0106 0107 QJsonObject object 0108 { 0109 { QLatin1String("source"), d->source }, 0110 { QLatin1String("sourceTranscription"), d->sourceTranscription }, 0111 { QLatin1String("sourceTranslit"), d->sourceTranslit }, 0112 { QLatin1String("translation"), d->translation }, 0113 { QLatin1String("translationOptions"), qMove(translationOptions) }, 0114 { QLatin1String("translationTranslit"), d->translationTranslit }, 0115 }; 0116 0117 return QJsonDocument(object); 0118 } 0119 0120 QString DOnlineTranslator::source() const 0121 { 0122 return d->source; 0123 } 0124 0125 QString DOnlineTranslator::sourceTranslit() const 0126 { 0127 return d->sourceTranslit; 0128 } 0129 0130 QString DOnlineTranslator::sourceTranscription() const 0131 { 0132 return d->sourceTranscription; 0133 } 0134 0135 QString DOnlineTranslator::sourceLanguageName() const 0136 { 0137 return languageName(d->sourceLang); 0138 } 0139 0140 DOnlineTranslator::Language DOnlineTranslator::sourceLanguage() const 0141 { 0142 return d->sourceLang; 0143 } 0144 0145 QString DOnlineTranslator::translation() const 0146 { 0147 return d->translation; 0148 } 0149 0150 QString DOnlineTranslator::translationTranslit() const 0151 { 0152 return d->translationTranslit; 0153 } 0154 0155 QString DOnlineTranslator::translationLanguageName() const 0156 { 0157 return languageName(d->translationLang); 0158 } 0159 0160 DOnlineTranslator::Language DOnlineTranslator::translationLanguage() const 0161 { 0162 return d->translationLang; 0163 } 0164 0165 QMap<QString, QVector<DOnlineTranslatorOption>> DOnlineTranslator::translationOptions() const 0166 { 0167 return d->translationOptions; 0168 } 0169 0170 DOnlineTranslator::TranslationError DOnlineTranslator::error() const 0171 { 0172 return d->error; 0173 } 0174 0175 QString DOnlineTranslator::errorString() const 0176 { 0177 return d->errorString; 0178 } 0179 0180 QString DOnlineTranslator::languageCode(Language lang) 0181 { 0182 return DOnlineTranslator::Private::s_genericLanguageCodes.value(lang); 0183 } 0184 0185 DOnlineTranslator::Language DOnlineTranslator::language(const QString& langCode) 0186 { 0187 return DOnlineTranslator::Private::s_genericLanguageCodes.key(langCode, NoLanguage); 0188 } 0189 0190 } // namespace Digikam