Human readable language names

Translation source language set if possible
This commit is contained in:
Gres 2014-03-30 14:56:21 +04:00
parent d30eb3509c
commit aec6416819
5 changed files with 165 additions and 76 deletions

View File

@ -21,6 +21,7 @@ namespace settings_names
//! Translation //! Translation
const QString translationGroup = "Translation"; const QString translationGroup = "Translation";
const QString sourceLanguage = "source_language";
const QString translationLanguage = "translation_language"; const QString translationLanguage = "translation_language";
} }
@ -42,6 +43,7 @@ namespace settings_values
const int imageScale = 5; const int imageScale = 5;
//! Translation //! Translation
const QString sourceLanguage = "auto";
const QString translationLanguage = "ru"; const QString translationLanguage = "ru";
} }

View File

@ -22,7 +22,9 @@ SettingsEditor::SettingsEditor(QWidget *parent) :
connect (ui->tessdataEdit, SIGNAL (textChanged (const QString&)), connect (ui->tessdataEdit, SIGNAL (textChanged (const QString&)),
SLOT (initOcrLangCombo ())); SLOT (initOcrLangCombo ()));
initTranslateLangCombo (); initTranslateLanguages ();
ui->translateLangCombo->addItems (translateLanguages_.keys ());
initOcrLanguages ();
loadSettings (); loadSettings ();
loadState (); loadState ();
} }
@ -56,14 +58,24 @@ void SettingsEditor::saveSettings() const
settings.beginGroup (settings_names::recogntionGroup); settings.beginGroup (settings_names::recogntionGroup);
settings.setValue (settings_names::tessDataPlace, ui->tessdataEdit->text ()); 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.setValue (settings_names::imageScale, ui->imageScaleSpin->value ());
settings.endGroup (); settings.endGroup ();
settings.beginGroup (settings_names::translationGroup); settings.beginGroup (settings_names::translationGroup);
settings.setValue (settings_names::translationLanguage, Q_ASSERT (translateLanguages_.contains (ui->translateLangCombo->currentText ()));
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 (); settings.endGroup ();
} }
@ -107,9 +119,10 @@ void SettingsEditor::loadSettings()
QString tessDataPlace = settings.value (settings_names::tessDataPlace, QString tessDataPlace = settings.value (settings_names::tessDataPlace,
settings_values::tessDataPlace).toString (); settings_values::tessDataPlace).toString ();
ui->tessdataEdit->setText (tessDataPlace); ui->tessdataEdit->setText (tessDataPlace);
QString ocrLang = settings.value (settings_names::ocrLanguage, QString settingsOcrLanguage = settings.value (settings_names::ocrLanguage,
settings_values::ocrLanguage).toString (); 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, int imageScale = settings.value (settings_names::imageScale,
settings_values::imageScale).toInt (); settings_values::imageScale).toInt ();
ui->imageScaleSpin->setValue (imageScale); ui->imageScaleSpin->setValue (imageScale);
@ -117,9 +130,11 @@ void SettingsEditor::loadSettings()
settings.beginGroup (settings_names::translationGroup); settings.beginGroup (settings_names::translationGroup);
QString translationLanguage = settings.value (settings_names::translationLanguage, QString settingsTranslateLanguage = settings.value (settings_names::translationLanguage,
settings_values::translationLanguage).toString (); settings_values::translationLanguage).toString ();
ui->translateLangCombo->setCurrentText (translationLanguage); QString uiTranslateLanguage = translateLanguages_.key (settingsTranslateLanguage);
Q_ASSERT (!uiTranslateLanguage.isEmpty ());
ui->translateLangCombo->setCurrentText (uiTranslateLanguage);
settings.endGroup (); settings.endGroup ();
} }
@ -151,71 +166,137 @@ void SettingsEditor::initOcrLangCombo()
foreach (const QString& file, files) foreach (const QString& file, files)
{ {
QString lang = file.left (file.indexOf (".")); QString lang = file.left (file.indexOf ("."));
lang = ocrLanguages_.key (lang, lang); // Replace with readable text if can.
languages << lang; languages << lang;
} }
ui->ocrLangCombo->addItems (languages); ui->ocrLangCombo->addItems (languages);
} }
void SettingsEditor::initTranslateLangCombo() void SettingsEditor::initTranslateLanguages()
{ {
QHash<QString, QString> gtLang; translateLanguages_.insert(tr("Afrikaans"),"af");
gtLang.insert("Afrikaans","af"); translateLanguages_.insert(tr("Albanian"),"sq");
gtLang.insert("Albanian","sq"); translateLanguages_.insert(tr("Arabic"),"ar");
gtLang.insert("Arabic","ar"); translateLanguages_.insert(tr("Armenian"),"hy");
gtLang.insert("Armenian","hy"); translateLanguages_.insert(tr("Azerbaijani"),"az");
gtLang.insert("Azerbaijani","az"); translateLanguages_.insert(tr("Basque"),"eu");
gtLang.insert("Basque","eu"); translateLanguages_.insert(tr("Belarusian"),"be");
gtLang.insert("Belarusian","be"); translateLanguages_.insert(tr("Bulgarian"),"bg");
gtLang.insert("Bulgarian","bg"); translateLanguages_.insert(tr("Catalan"),"ca");
gtLang.insert("Catalan","ca"); translateLanguages_.insert(tr("Chinese (Simplified)"),"zh-CN");
gtLang.insert("Chinese (Simplified)","zh-CN"); translateLanguages_.insert(tr("Chinese (Traditional)"),"zh-TW");
gtLang.insert("Chinese (Traditional)","zh-TW"); translateLanguages_.insert(tr("Croatian"),"hr");
gtLang.insert("Croatian","hr"); translateLanguages_.insert(tr("Czech"),"cs");
gtLang.insert("Czech","cs"); translateLanguages_.insert(tr("Danish"),"da");
gtLang.insert("Danish","da"); translateLanguages_.insert(tr("Dutch"),"nl");
gtLang.insert("Dutch","nl"); translateLanguages_.insert(tr("English"),"en");
gtLang.insert("English","en"); translateLanguages_.insert(tr("Estonian"),"et");
gtLang.insert("Estonian","et"); translateLanguages_.insert(tr("Filipino"),"tl");
gtLang.insert("Filipino","tl"); translateLanguages_.insert(tr("Finnish"),"fi");
gtLang.insert("Finnish","fi"); translateLanguages_.insert(tr("French"),"fr");
gtLang.insert("French","fr"); translateLanguages_.insert(tr("Galician"),"gl");
gtLang.insert("Galician","gl"); translateLanguages_.insert(tr("Georgian"),"ka");
gtLang.insert("Georgian","ka"); translateLanguages_.insert(tr("German"),"de");
gtLang.insert("German","de"); translateLanguages_.insert(tr("Greek"),"el");
gtLang.insert("Greek","el"); translateLanguages_.insert(tr("Haitian Creole"),"ht");
gtLang.insert("Haitian Creole","ht"); translateLanguages_.insert(tr("Hebrew"),"iw");
gtLang.insert("Hebrew","iw"); translateLanguages_.insert(tr("Hindi"),"hi");
gtLang.insert("Hindi","hi"); translateLanguages_.insert(tr("Hungarian"),"hu");
gtLang.insert("Hungarian","hu"); translateLanguages_.insert(tr("Icelandic"),"is");
gtLang.insert("Icelandic","is"); translateLanguages_.insert(tr("Indonesian"),"id");
gtLang.insert("Indonesian","id"); translateLanguages_.insert(tr("Irish"),"ga");
gtLang.insert("Irish","ga"); translateLanguages_.insert(tr("Italian"),"it");
gtLang.insert("Italian","it"); translateLanguages_.insert(tr("Japanese"),"ja");
gtLang.insert("Japanese","ja"); translateLanguages_.insert(tr("Korean"),"ko");
gtLang.insert("Korean","ko"); translateLanguages_.insert(tr("Latvian"),"lv");
gtLang.insert("Latvian","lv"); translateLanguages_.insert(tr("Lithuanian"),"lt");
gtLang.insert("Lithuanian","lt"); translateLanguages_.insert(tr("Macedonian"),"mk");
gtLang.insert("Macedonian","mk"); translateLanguages_.insert(tr("Malay"),"ms");
gtLang.insert("Malay","ms"); translateLanguages_.insert(tr("Maltese"),"mt");
gtLang.insert("Maltese","mt"); translateLanguages_.insert(tr("Norwegian"),"no");
gtLang.insert("Norwegian","no"); translateLanguages_.insert(tr("Persian"),"fa");
gtLang.insert("Persian","fa"); translateLanguages_.insert(tr("Polish"),"pl");
gtLang.insert("Polish","pl"); translateLanguages_.insert(tr("Portuguese"),"pt");
gtLang.insert("Portuguese","pt"); translateLanguages_.insert(tr("Romanian"),"ro");
gtLang.insert("Romanian","ro"); translateLanguages_.insert(tr("Russian"),"ru");
gtLang.insert("Russian","ru"); translateLanguages_.insert(tr("Serbian"),"sr");
gtLang.insert("Serbian","sr"); translateLanguages_.insert(tr("Slovak"),"sk");
gtLang.insert("Slovak","sk"); translateLanguages_.insert(tr("Slovenian"),"sl");
gtLang.insert("Slovenian","sl"); translateLanguages_.insert(tr("Spanish"),"es");
gtLang.insert("Spanish","es"); translateLanguages_.insert(tr("Swahili"),"sw");
gtLang.insert("Swahili","sw"); translateLanguages_.insert(tr("Swedish"),"sv");
gtLang.insert("Swedish","sv"); translateLanguages_.insert(tr("Thai"),"th");
gtLang.insert("Thai","th"); translateLanguages_.insert(tr("Turkish"),"tr");
gtLang.insert("Turkish","tr"); translateLanguages_.insert(tr("Ukrainian"),"uk");
gtLang.insert("Ukrainian","uk"); translateLanguages_.insert(tr("Urdu"),"ur");
gtLang.insert("Urdu","ur"); translateLanguages_.insert(tr("Vietnamese"),"vi");
gtLang.insert("Vietnamese","vi"); translateLanguages_.insert(tr("Welsh"),"cy");
gtLang.insert("Welsh","cy"); translateLanguages_.insert(tr("Yiddish"),"yi");
gtLang.insert("Yiddish","yi"); }
ui->translateLangCombo->addItems (gtLang.values ());
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");
} }

View File

@ -3,6 +3,7 @@
#include <QDialog> #include <QDialog>
#include <QButtonGroup> #include <QButtonGroup>
#include <QMap>
namespace Ui { namespace Ui {
class SettingsEditor; class SettingsEditor;
@ -31,11 +32,14 @@ class SettingsEditor : public QDialog
void loadSettings (); void loadSettings ();
void saveState () const; void saveState () const;
void loadState (); void loadState ();
void initTranslateLangCombo (); void initTranslateLanguages ();
void initOcrLanguages ();
private: private:
Ui::SettingsEditor *ui; Ui::SettingsEditor *ui;
QButtonGroup* buttonGroup_; QButtonGroup* buttonGroup_;
QMap<QString, QString> translateLanguages_;
QMap<QString, QString> ocrLanguages_;
}; };
#endif // SETTINGSEDITOR_H #endif // SETTINGSEDITOR_H

View File

@ -13,7 +13,7 @@
namespace namespace
{ {
const QString translateBaseUrl = "http://translate.google.com/translate_a/" 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) : Translator::Translator(QObject *parent) :
@ -31,8 +31,9 @@ void Translator::applySettings()
QSettings settings; QSettings settings;
settings.beginGroup (settings_names::translationGroup); settings.beginGroup (settings_names::translationGroup);
translationLanguage_ = settings.value (settings_names::translationLanguage, translationLanguage_ = settings.value (settings_names::translationLanguage,
settings_values::translationLanguage). settings_values::translationLanguage).toString ();
toString (); sourceLanguage_ = settings.value (settings_names::sourceLanguage,
settings_values::sourceLanguage).toString ();
} }
void Translator::translate(ProcessingItem item) void Translator::translate(ProcessingItem item)
@ -43,7 +44,7 @@ void Translator::translate(ProcessingItem item)
emit error (tr ("Неверные парметры для перевода.")); emit error (tr ("Неверные парметры для перевода."));
return; return;
} }
QUrl url (translateBaseUrl.arg (item.recognized, translationLanguage_)); QUrl url (translateBaseUrl.arg (item.recognized, sourceLanguage_, translationLanguage_));
QNetworkReply* reply = network_.get (QNetworkRequest (url)); QNetworkReply* reply = network_.get (QNetworkRequest (url));
items_.insert (reply, item); items_.insert (reply, item);
} }

View File

@ -25,6 +25,7 @@ class Translator : public QObject
private: private:
QNetworkAccessManager network_; QNetworkAccessManager network_;
QString translationLanguage_; QString translationLanguage_;
QString sourceLanguage_;
QHash<QNetworkReply*, ProcessingItem> items_; QHash<QNetworkReply*, ProcessingItem> items_;
}; };