digiKam
Loading...
Searching...
No Matches
donlinetranslator_p.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2018-02-22
7 * Description : A text translator using web-services - Private members.
8 *
9 * SPDX-FileCopyrightText: 2018-2022 by Hennadii Chernyshchyk <genaloner at gmail dot com>
10 * SPDX-FileCopyrightText: 2021-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18#include "donlinetranslator.h"
19
20// Qt includes
21
22#include <QCoreApplication>
23#include <QFinalState>
24#include <QJsonDocument>
25#include <QNetworkReply>
26#include <QStateMachine>
27
28// KDE includes
29
30#include <klocalizedstring.h>
31
32// Local includes
33
34#include "digikam_debug.h"
35#include "networkmanager.h"
36
37namespace Digikam
38{
39
40class Q_DECL_HIDDEN DOnlineTranslator::Private
41{
42public:
43
44 explicit Private(DOnlineTranslator* const parent);
45
46 QStateMachine* stateMachine = nullptr;
47 QNetworkAccessManager* networkManager = nullptr;
48 QPointer<QNetworkReply> currentReply;
49
50 Language sourceLang = NoLanguage;
51 Language translationLang = NoLanguage;
52 Language uiLang = NoLanguage;
53 TranslationError error = NoError;
54
55 QString source;
58 QString translation;
60 QString errorString;
61
62 // Self-hosted engines settings
63 // Can be empty, since free instances ignores api key parameter
64
65 QByteArray libreApiKey;
66 QString libreUrl;
67 QString lingvaUrl;
68
69 QMap<QString, QVector<DOnlineTranslatorOption> > translationOptions;
70
71 bool sourceTranslitEnabled = true;
72 bool translationTranslitEnabled = true;
73 bool sourceTranscriptionEnabled = true;
74 bool translationOptionsEnabled = true;
75
76 bool onlyDetectLanguage = false;
77
78 // Credentials that is parsed from the web version to receive the translation using the API
79
80 static inline QString s_yandexKey;
81 static inline QByteArray s_bingKey;
82 static inline QByteArray s_bingToken;
83 static inline QString s_bingIg;
84 static inline QString s_bingIid;
85
86 // This properties used to store unseful information in states
87
88 static constexpr char s_textProperty[] = "Text";
89
90 // Engines have a limit of characters per translation request.
91 // If the query is larger, then it should be splited into several with getSplitIndex() helper function
92
93 static constexpr int s_googleTranslateLimit = 5000;
94 static constexpr int s_yandexTranslateLimit = 150;
95 static constexpr int s_yandexTranslitLimit = 180;
96 static constexpr int s_bingTranslateLimit = 5001;
97 static constexpr int s_libreTranslateLimit = 120;
98
99 static const QMap<DOnlineTranslator::Language, QString> s_genericLanguageCodes;
100 static const QMap<DOnlineTranslator::Language, QString> s_googleLanguageCodes;
101 static const QMap<DOnlineTranslator::Language, QString> s_yandexLanguageCodes;
102 static const QMap<DOnlineTranslator::Language, QString> s_bingLanguageCodes;
103 static const QMap<DOnlineTranslator::Language, QString> s_lingvaLanguageCodes;
104
105 static const QMap<QString, QString> s_rfc3066LanguageCodesGeneric;
106 static const QMap<QString, QString> s_rfc3066LanguageCodesGoogle;
107 static const QMap<QString, QString> s_rfc3066LanguageCodesYandex;
108 static const QMap<QString, QString> s_rfc3066LanguageCodesBing;
109 static const QMap<QString, QString> s_rfc3066LanguageCodesLingva;
110};
111
112// ---------------------------------------------------------------------------------------------
113
114class Q_DECL_HIDDEN DOnlineTts::Private
115{
116public:
117
118 Private() = default;
119
120 QList<QUrl> media;
121 QString errorString;
122 TtsError error = NoError;
123
124 static const QMap<Emotion, QString> s_emotionCodes;
125 static const QMap<Voice, QString> s_voiceCodes;
126
127 static constexpr int s_googleTtsLimit = 200;
128 static constexpr int s_yandexTtsLimit = 1400;
129};
130
131} // namespace Digikam
Definition donlinetranslator_p.h:41
static QString s_yandexKey
Definition donlinetranslator_p.h:80
static const QMap< QString, QString > s_rfc3066LanguageCodesYandex
Definition donlinetranslator_p.h:107
static const QMap< DOnlineTranslator::Language, QString > s_genericLanguageCodes
Definition donlinetranslator_p.h:99
static const QMap< DOnlineTranslator::Language, QString > s_bingLanguageCodes
Definition donlinetranslator_p.h:102
static const QMap< QString, QString > s_rfc3066LanguageCodesBing
Definition donlinetranslator_p.h:108
static QByteArray s_bingKey
Definition donlinetranslator_p.h:81
static const QMap< DOnlineTranslator::Language, QString > s_yandexLanguageCodes
Definition donlinetranslator_p.h:101
QPointer< QNetworkReply > currentReply
Definition donlinetranslator_p.h:48
static QString s_bingIg
Definition donlinetranslator_p.h:83
QString lingvaUrl
Definition donlinetranslator_p.h:67
QString translationTranslit
Definition donlinetranslator_p.h:59
QString sourceTranslit
Definition donlinetranslator_p.h:56
QString libreUrl
Definition donlinetranslator_p.h:66
QString errorString
Definition donlinetranslator_p.h:60
QString translation
Definition donlinetranslator_p.h:58
QString sourceTranscription
Definition donlinetranslator_p.h:57
QMap< QString, QVector< DOnlineTranslatorOption > > translationOptions
Definition donlinetranslator_p.h:69
static const QMap< QString, QString > s_rfc3066LanguageCodesGeneric
Definition donlinetranslator_p.h:105
static const QMap< DOnlineTranslator::Language, QString > s_lingvaLanguageCodes
Definition donlinetranslator_p.h:103
static const QMap< QString, QString > s_rfc3066LanguageCodesLingva
Definition donlinetranslator_p.h:109
static const QMap< QString, QString > s_rfc3066LanguageCodesGoogle
Definition donlinetranslator_p.h:106
static const QMap< DOnlineTranslator::Language, QString > s_googleLanguageCodes
Definition donlinetranslator_p.h:100
QByteArray libreApiKey
Definition donlinetranslator_p.h:65
static QString s_bingIid
Definition donlinetranslator_p.h:84
QString source
Definition donlinetranslator_p.h:55
static QByteArray s_bingToken
Definition donlinetranslator_p.h:82
Provides translation data.
Definition donlinetranslator.h:124
TranslationError
Indicates all possible error conditions found during the processing of the translation.
Definition donlinetranslator.h:282
Language
Represents all languages for translation.
Definition donlinetranslator.h:134
Definition donlinetranslator_p.h:115
QList< QUrl > media
Definition donlinetranslator_p.h:120
static const QMap< Voice, QString > s_voiceCodes
Definition donlinetranslator_p.h:125
static const QMap< Emotion, QString > s_emotionCodes
Definition donlinetranslator_p.h:124
QString errorString
Definition donlinetranslator_p.h:121
Provides TTS URL generation.
Definition donlinetranslator.h:793
TtsError
Indicates all possible error conditions found during the processing of the URLs generation.
Definition donlinetranslator.h:840
Definition datefolderview.cpp:34