Human readable language names
Translation source language set if possible
This commit is contained in:
parent
d30eb3509c
commit
aec6416819
@ -21,6 +21,7 @@ namespace settings_names
|
||||
|
||||
//! Translation
|
||||
const QString translationGroup = "Translation";
|
||||
const QString sourceLanguage = "source_language";
|
||||
const QString translationLanguage = "translation_language";
|
||||
|
||||
}
|
||||
@ -42,6 +43,7 @@ namespace settings_values
|
||||
const int imageScale = 5;
|
||||
|
||||
//! Translation
|
||||
const QString sourceLanguage = "auto";
|
||||
const QString translationLanguage = "ru";
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,9 @@ SettingsEditor::SettingsEditor(QWidget *parent) :
|
||||
connect (ui->tessdataEdit, SIGNAL (textChanged (const QString&)),
|
||||
SLOT (initOcrLangCombo ()));
|
||||
|
||||
initTranslateLangCombo ();
|
||||
initTranslateLanguages ();
|
||||
ui->translateLangCombo->addItems (translateLanguages_.keys ());
|
||||
initOcrLanguages ();
|
||||
loadSettings ();
|
||||
loadState ();
|
||||
}
|
||||
@ -56,14 +58,24 @@ void SettingsEditor::saveSettings() const
|
||||
|
||||
settings.beginGroup (settings_names::recogntionGroup);
|
||||
settings.setValue (settings_names::tessDataPlace, ui->tessdataEdit->text ());
|
||||
settings.setValue (settings_names::ocrLanguage, ui->ocrLangCombo->currentText ());
|
||||
QString uiOcrLanguage = ui->ocrLangCombo->currentText ();
|
||||
QString settingsOcrLanguage = ocrLanguages_.value (uiOcrLanguage, uiOcrLanguage);
|
||||
settings.setValue (settings_names::ocrLanguage, settingsOcrLanguage);
|
||||
settings.setValue (settings_names::imageScale, ui->imageScaleSpin->value ());
|
||||
settings.endGroup ();
|
||||
|
||||
|
||||
settings.beginGroup (settings_names::translationGroup);
|
||||
settings.setValue (settings_names::translationLanguage,
|
||||
ui->translateLangCombo->currentText ());
|
||||
Q_ASSERT (translateLanguages_.contains (ui->translateLangCombo->currentText ()));
|
||||
QString uiTranslateLanguage = ui->translateLangCombo->currentText ();
|
||||
QString settingsTranslateLanguage = translateLanguages_.value (uiTranslateLanguage);
|
||||
settings.setValue (settings_names::translationLanguage, settingsTranslateLanguage);
|
||||
QString sourceLanguage = settings_values::sourceLanguage;
|
||||
if (translateLanguages_.contains (uiOcrLanguage))
|
||||
{
|
||||
sourceLanguage = translateLanguages_.value (uiOcrLanguage);
|
||||
}
|
||||
settings.setValue (settings_names::sourceLanguage, sourceLanguage);
|
||||
settings.endGroup ();
|
||||
}
|
||||
|
||||
@ -107,9 +119,10 @@ void SettingsEditor::loadSettings()
|
||||
QString tessDataPlace = settings.value (settings_names::tessDataPlace,
|
||||
settings_values::tessDataPlace).toString ();
|
||||
ui->tessdataEdit->setText (tessDataPlace);
|
||||
QString ocrLang = settings.value (settings_names::ocrLanguage,
|
||||
QString settingsOcrLanguage = settings.value (settings_names::ocrLanguage,
|
||||
settings_values::ocrLanguage).toString ();
|
||||
ui->ocrLangCombo->setCurrentText (ocrLang);
|
||||
QString uiOcrLanguage = ocrLanguages_.key (settingsOcrLanguage, settingsOcrLanguage);
|
||||
ui->ocrLangCombo->setCurrentText (uiOcrLanguage);
|
||||
int imageScale = settings.value (settings_names::imageScale,
|
||||
settings_values::imageScale).toInt ();
|
||||
ui->imageScaleSpin->setValue (imageScale);
|
||||
@ -117,9 +130,11 @@ void SettingsEditor::loadSettings()
|
||||
|
||||
|
||||
settings.beginGroup (settings_names::translationGroup);
|
||||
QString translationLanguage = settings.value (settings_names::translationLanguage,
|
||||
QString settingsTranslateLanguage = settings.value (settings_names::translationLanguage,
|
||||
settings_values::translationLanguage).toString ();
|
||||
ui->translateLangCombo->setCurrentText (translationLanguage);
|
||||
QString uiTranslateLanguage = translateLanguages_.key (settingsTranslateLanguage);
|
||||
Q_ASSERT (!uiTranslateLanguage.isEmpty ());
|
||||
ui->translateLangCombo->setCurrentText (uiTranslateLanguage);
|
||||
settings.endGroup ();
|
||||
}
|
||||
|
||||
@ -151,71 +166,137 @@ void SettingsEditor::initOcrLangCombo()
|
||||
foreach (const QString& file, files)
|
||||
{
|
||||
QString lang = file.left (file.indexOf ("."));
|
||||
lang = ocrLanguages_.key (lang, lang); // Replace with readable text if can.
|
||||
languages << lang;
|
||||
}
|
||||
ui->ocrLangCombo->addItems (languages);
|
||||
}
|
||||
|
||||
void SettingsEditor::initTranslateLangCombo()
|
||||
void SettingsEditor::initTranslateLanguages()
|
||||
{
|
||||
QHash<QString, QString> gtLang;
|
||||
gtLang.insert("Afrikaans","af");
|
||||
gtLang.insert("Albanian","sq");
|
||||
gtLang.insert("Arabic","ar");
|
||||
gtLang.insert("Armenian","hy");
|
||||
gtLang.insert("Azerbaijani","az");
|
||||
gtLang.insert("Basque","eu");
|
||||
gtLang.insert("Belarusian","be");
|
||||
gtLang.insert("Bulgarian","bg");
|
||||
gtLang.insert("Catalan","ca");
|
||||
gtLang.insert("Chinese (Simplified)","zh-CN");
|
||||
gtLang.insert("Chinese (Traditional)","zh-TW");
|
||||
gtLang.insert("Croatian","hr");
|
||||
gtLang.insert("Czech","cs");
|
||||
gtLang.insert("Danish","da");
|
||||
gtLang.insert("Dutch","nl");
|
||||
gtLang.insert("English","en");
|
||||
gtLang.insert("Estonian","et");
|
||||
gtLang.insert("Filipino","tl");
|
||||
gtLang.insert("Finnish","fi");
|
||||
gtLang.insert("French","fr");
|
||||
gtLang.insert("Galician","gl");
|
||||
gtLang.insert("Georgian","ka");
|
||||
gtLang.insert("German","de");
|
||||
gtLang.insert("Greek","el");
|
||||
gtLang.insert("Haitian Creole","ht");
|
||||
gtLang.insert("Hebrew","iw");
|
||||
gtLang.insert("Hindi","hi");
|
||||
gtLang.insert("Hungarian","hu");
|
||||
gtLang.insert("Icelandic","is");
|
||||
gtLang.insert("Indonesian","id");
|
||||
gtLang.insert("Irish","ga");
|
||||
gtLang.insert("Italian","it");
|
||||
gtLang.insert("Japanese","ja");
|
||||
gtLang.insert("Korean","ko");
|
||||
gtLang.insert("Latvian","lv");
|
||||
gtLang.insert("Lithuanian","lt");
|
||||
gtLang.insert("Macedonian","mk");
|
||||
gtLang.insert("Malay","ms");
|
||||
gtLang.insert("Maltese","mt");
|
||||
gtLang.insert("Norwegian","no");
|
||||
gtLang.insert("Persian","fa");
|
||||
gtLang.insert("Polish","pl");
|
||||
gtLang.insert("Portuguese","pt");
|
||||
gtLang.insert("Romanian","ro");
|
||||
gtLang.insert("Russian","ru");
|
||||
gtLang.insert("Serbian","sr");
|
||||
gtLang.insert("Slovak","sk");
|
||||
gtLang.insert("Slovenian","sl");
|
||||
gtLang.insert("Spanish","es");
|
||||
gtLang.insert("Swahili","sw");
|
||||
gtLang.insert("Swedish","sv");
|
||||
gtLang.insert("Thai","th");
|
||||
gtLang.insert("Turkish","tr");
|
||||
gtLang.insert("Ukrainian","uk");
|
||||
gtLang.insert("Urdu","ur");
|
||||
gtLang.insert("Vietnamese","vi");
|
||||
gtLang.insert("Welsh","cy");
|
||||
gtLang.insert("Yiddish","yi");
|
||||
ui->translateLangCombo->addItems (gtLang.values ());
|
||||
translateLanguages_.insert(tr("Afrikaans"),"af");
|
||||
translateLanguages_.insert(tr("Albanian"),"sq");
|
||||
translateLanguages_.insert(tr("Arabic"),"ar");
|
||||
translateLanguages_.insert(tr("Armenian"),"hy");
|
||||
translateLanguages_.insert(tr("Azerbaijani"),"az");
|
||||
translateLanguages_.insert(tr("Basque"),"eu");
|
||||
translateLanguages_.insert(tr("Belarusian"),"be");
|
||||
translateLanguages_.insert(tr("Bulgarian"),"bg");
|
||||
translateLanguages_.insert(tr("Catalan"),"ca");
|
||||
translateLanguages_.insert(tr("Chinese (Simplified)"),"zh-CN");
|
||||
translateLanguages_.insert(tr("Chinese (Traditional)"),"zh-TW");
|
||||
translateLanguages_.insert(tr("Croatian"),"hr");
|
||||
translateLanguages_.insert(tr("Czech"),"cs");
|
||||
translateLanguages_.insert(tr("Danish"),"da");
|
||||
translateLanguages_.insert(tr("Dutch"),"nl");
|
||||
translateLanguages_.insert(tr("English"),"en");
|
||||
translateLanguages_.insert(tr("Estonian"),"et");
|
||||
translateLanguages_.insert(tr("Filipino"),"tl");
|
||||
translateLanguages_.insert(tr("Finnish"),"fi");
|
||||
translateLanguages_.insert(tr("French"),"fr");
|
||||
translateLanguages_.insert(tr("Galician"),"gl");
|
||||
translateLanguages_.insert(tr("Georgian"),"ka");
|
||||
translateLanguages_.insert(tr("German"),"de");
|
||||
translateLanguages_.insert(tr("Greek"),"el");
|
||||
translateLanguages_.insert(tr("Haitian Creole"),"ht");
|
||||
translateLanguages_.insert(tr("Hebrew"),"iw");
|
||||
translateLanguages_.insert(tr("Hindi"),"hi");
|
||||
translateLanguages_.insert(tr("Hungarian"),"hu");
|
||||
translateLanguages_.insert(tr("Icelandic"),"is");
|
||||
translateLanguages_.insert(tr("Indonesian"),"id");
|
||||
translateLanguages_.insert(tr("Irish"),"ga");
|
||||
translateLanguages_.insert(tr("Italian"),"it");
|
||||
translateLanguages_.insert(tr("Japanese"),"ja");
|
||||
translateLanguages_.insert(tr("Korean"),"ko");
|
||||
translateLanguages_.insert(tr("Latvian"),"lv");
|
||||
translateLanguages_.insert(tr("Lithuanian"),"lt");
|
||||
translateLanguages_.insert(tr("Macedonian"),"mk");
|
||||
translateLanguages_.insert(tr("Malay"),"ms");
|
||||
translateLanguages_.insert(tr("Maltese"),"mt");
|
||||
translateLanguages_.insert(tr("Norwegian"),"no");
|
||||
translateLanguages_.insert(tr("Persian"),"fa");
|
||||
translateLanguages_.insert(tr("Polish"),"pl");
|
||||
translateLanguages_.insert(tr("Portuguese"),"pt");
|
||||
translateLanguages_.insert(tr("Romanian"),"ro");
|
||||
translateLanguages_.insert(tr("Russian"),"ru");
|
||||
translateLanguages_.insert(tr("Serbian"),"sr");
|
||||
translateLanguages_.insert(tr("Slovak"),"sk");
|
||||
translateLanguages_.insert(tr("Slovenian"),"sl");
|
||||
translateLanguages_.insert(tr("Spanish"),"es");
|
||||
translateLanguages_.insert(tr("Swahili"),"sw");
|
||||
translateLanguages_.insert(tr("Swedish"),"sv");
|
||||
translateLanguages_.insert(tr("Thai"),"th");
|
||||
translateLanguages_.insert(tr("Turkish"),"tr");
|
||||
translateLanguages_.insert(tr("Ukrainian"),"uk");
|
||||
translateLanguages_.insert(tr("Urdu"),"ur");
|
||||
translateLanguages_.insert(tr("Vietnamese"),"vi");
|
||||
translateLanguages_.insert(tr("Welsh"),"cy");
|
||||
translateLanguages_.insert(tr("Yiddish"),"yi");
|
||||
}
|
||||
|
||||
void SettingsEditor::initOcrLanguages()
|
||||
{
|
||||
ocrLanguages_.insert(tr("Ancient Greek"),"grc");
|
||||
ocrLanguages_.insert(tr("Esperanto alternative"),"epo_alt");
|
||||
ocrLanguages_.insert(tr("English"),"eng");
|
||||
ocrLanguages_.insert(tr("Ukrainian"),"ukr");
|
||||
ocrLanguages_.insert(tr("Turkish"),"tur");
|
||||
ocrLanguages_.insert(tr("Thai"),"tha");
|
||||
ocrLanguages_.insert(tr("Tagalog"),"tgl");
|
||||
ocrLanguages_.insert(tr("Telugu"),"tel");
|
||||
ocrLanguages_.insert(tr("Tamil"),"tam");
|
||||
ocrLanguages_.insert(tr("Swedish"),"swe");
|
||||
ocrLanguages_.insert(tr("Swahili"),"swa");
|
||||
ocrLanguages_.insert(tr("Serbian"),"srp");
|
||||
ocrLanguages_.insert(tr("Albanian"),"sqi");
|
||||
ocrLanguages_.insert(tr("Spanish"),"spa");
|
||||
ocrLanguages_.insert(tr("Slovenian"),"slv");
|
||||
ocrLanguages_.insert(tr("Slovakian"),"slk");
|
||||
ocrLanguages_.insert(tr("Romanian"),"ron");
|
||||
ocrLanguages_.insert(tr("Portuguese"),"por");
|
||||
ocrLanguages_.insert(tr("Polish"),"pol");
|
||||
ocrLanguages_.insert(tr("Norwegian"),"nor");
|
||||
ocrLanguages_.insert(tr("Dutch"),"nld");
|
||||
ocrLanguages_.insert(tr("Malay"),"msa");
|
||||
ocrLanguages_.insert(tr("Maltese"),"mlt");
|
||||
ocrLanguages_.insert(tr("Macedonian"),"mkd");
|
||||
ocrLanguages_.insert(tr("Malayalam"),"mal");
|
||||
ocrLanguages_.insert(tr("Lithuanian"),"lit");
|
||||
ocrLanguages_.insert(tr("Latvian"),"lav");
|
||||
ocrLanguages_.insert(tr("Korean"),"kor");
|
||||
ocrLanguages_.insert(tr("Kannada"),"kan");
|
||||
ocrLanguages_.insert(tr("Italian"),"ita");
|
||||
ocrLanguages_.insert(tr("Icelandic"),"isl");
|
||||
ocrLanguages_.insert(tr("Indonesian"),"ind");
|
||||
ocrLanguages_.insert(tr("Cherokee"),"chr");
|
||||
ocrLanguages_.insert(tr("Hungarian"),"hun");
|
||||
ocrLanguages_.insert(tr("Croatian"),"hrv");
|
||||
ocrLanguages_.insert(tr("Hindi"),"hin");
|
||||
ocrLanguages_.insert(tr("Hebrew"),"heb");
|
||||
ocrLanguages_.insert(tr("Galician"),"glg");
|
||||
ocrLanguages_.insert(tr("Middle French (ca. 1400-1600)"),"frm");
|
||||
ocrLanguages_.insert(tr("Frankish"),"frk");
|
||||
ocrLanguages_.insert(tr("French"),"fra");
|
||||
ocrLanguages_.insert(tr("Finnish"),"fin");
|
||||
ocrLanguages_.insert(tr("Basque"),"eus");
|
||||
ocrLanguages_.insert(tr("Estonian"),"est");
|
||||
ocrLanguages_.insert(tr("Math / equation"),"equ");
|
||||
ocrLanguages_.insert(tr("Esperanto"),"epo");
|
||||
ocrLanguages_.insert(tr("Middle English (1100-1500)"),"enm");
|
||||
ocrLanguages_.insert(tr("Greek"),"ell");
|
||||
ocrLanguages_.insert(tr("German"),"deu");
|
||||
ocrLanguages_.insert(tr("Danish"),"dan");
|
||||
ocrLanguages_.insert(tr("Czech"),"ces");
|
||||
ocrLanguages_.insert(tr("Catalan"),"cat");
|
||||
ocrLanguages_.insert(tr("Bulgarian"),"bul");
|
||||
ocrLanguages_.insert(tr("Bengali"),"ben");
|
||||
ocrLanguages_.insert(tr("Belarusian"),"bel");
|
||||
ocrLanguages_.insert(tr("Azerbaijani"),"aze");
|
||||
ocrLanguages_.insert(tr("Arabic"),"ara");
|
||||
ocrLanguages_.insert(tr("Afrikaans"),"afr");
|
||||
ocrLanguages_.insert(tr("Japanese"),"jpn");
|
||||
ocrLanguages_.insert(tr("Chinese (Simplified)"),"chi_sim");
|
||||
ocrLanguages_.insert(tr("Chinese (Traditional)"),"chi_tra");
|
||||
ocrLanguages_.insert(tr("Russian"),"rus");
|
||||
ocrLanguages_.insert(tr("Vietnamese"),"vie");
|
||||
}
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
#include <QDialog>
|
||||
#include <QButtonGroup>
|
||||
#include <QMap>
|
||||
|
||||
namespace Ui {
|
||||
class SettingsEditor;
|
||||
@ -31,11 +32,14 @@ class SettingsEditor : public QDialog
|
||||
void loadSettings ();
|
||||
void saveState () const;
|
||||
void loadState ();
|
||||
void initTranslateLangCombo ();
|
||||
void initTranslateLanguages ();
|
||||
void initOcrLanguages ();
|
||||
|
||||
private:
|
||||
Ui::SettingsEditor *ui;
|
||||
QButtonGroup* buttonGroup_;
|
||||
QMap<QString, QString> translateLanguages_;
|
||||
QMap<QString, QString> ocrLanguages_;
|
||||
};
|
||||
|
||||
#endif // SETTINGSEDITOR_H
|
||||
|
@ -13,7 +13,7 @@
|
||||
namespace
|
||||
{
|
||||
const QString translateBaseUrl = "http://translate.google.com/translate_a/"
|
||||
"t?client=t&text=%1&sl=auto&tl=%2";
|
||||
"t?client=t&text=%1&sl=%2&tl=%3";
|
||||
}
|
||||
|
||||
Translator::Translator(QObject *parent) :
|
||||
@ -31,8 +31,9 @@ void Translator::applySettings()
|
||||
QSettings settings;
|
||||
settings.beginGroup (settings_names::translationGroup);
|
||||
translationLanguage_ = settings.value (settings_names::translationLanguage,
|
||||
settings_values::translationLanguage).
|
||||
toString ();
|
||||
settings_values::translationLanguage).toString ();
|
||||
sourceLanguage_ = settings.value (settings_names::sourceLanguage,
|
||||
settings_values::sourceLanguage).toString ();
|
||||
}
|
||||
|
||||
void Translator::translate(ProcessingItem item)
|
||||
@ -43,7 +44,7 @@ void Translator::translate(ProcessingItem item)
|
||||
emit error (tr ("Неверные парметры для перевода."));
|
||||
return;
|
||||
}
|
||||
QUrl url (translateBaseUrl.arg (item.recognized, translationLanguage_));
|
||||
QUrl url (translateBaseUrl.arg (item.recognized, sourceLanguage_, translationLanguage_));
|
||||
QNetworkReply* reply = network_.get (QNetworkRequest (url));
|
||||
items_.insert (reply, item);
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ class Translator : public QObject
|
||||
private:
|
||||
QNetworkAccessManager network_;
|
||||
QString translationLanguage_;
|
||||
QString sourceLanguage_;
|
||||
QHash<QNetworkReply*, ProcessingItem> items_;
|
||||
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user