#include #include #include "LanguageHelper.h" #include "Settings.h" LanguageHelper::LanguageHelper() { init (); } QStringList LanguageHelper::availableOcrLanguagesUi() const { QStringList uiItems; foreach (const QString& item, availableOcrLanguages_) { uiItems << ocrCodeToUi (item); } uiItems.sort (); return uiItems; } const QStringList &LanguageHelper::availableOcrLanguages() const { return availableOcrLanguages_; } QStringList LanguageHelper::availableOcrLanguages(const QString &path) const { QDir dir (path + "/tessdata/"); if (!dir.exists ()) { return QStringList (); } QStringList items; QStringList files = dir.entryList (QStringList () << "*.traineddata", QDir::Files); foreach (const QString& file, files) { QString lang = file.left (file.indexOf (".")); items << lang; } return items; } QStringList LanguageHelper::availableOcrLanguagesUi(const QString &path) const { QStringList uiItems, items; items = availableOcrLanguages (path); foreach (const QString& item, items) { uiItems << ocrCodeToUi (item); } uiItems.sort (); return uiItems; } QStringList LanguageHelper::translateLanguagesUi() const { QStringList uiItems = translateLanguages_.keys (); uiItems.sort (); return uiItems; } QStringList LanguageHelper::translateLanguages() const { return translateLanguages_.values (); } QString LanguageHelper::translateCodeToUi(const QString &text) const { return translateLanguages_.key (text, text); } QString LanguageHelper::translateUiToCode(const QString &text) const { return translateLanguages_.value (text, text); } QString LanguageHelper::ocrCodeToUi(const QString &text) const { return ocrLanguages_.key (text, text); } QString LanguageHelper::ocrUiToCode(const QString &text) const { return ocrLanguages_.value (text, text); } QString LanguageHelper::translateForOcrCode(const QString &text) const { QString ocrUi = ocrUiToCode (text); QString translate = translateCodeToUi (ocrUi); if (translate == ocrUi) { translate = "auto"; } return translate; } void LanguageHelper::init() { initOcrLanguages (); initTranslateLanguages (); updateAvailableOcrLanguages (); } void LanguageHelper::updateAvailableOcrLanguages() { availableOcrLanguages_.clear (); QSettings settings; settings.beginGroup (settings_names::recogntionGroup); QString tessDataPlace = settings.value (settings_names::tessDataPlace, settings_values::tessDataPlace).toString (); availableOcrLanguages_ = availableOcrLanguages (tessDataPlace + "/tessdata/"); } void LanguageHelper::initTranslateLanguages() { translateLanguages_.insert(QObject::tr("Afrikaans"),"af"); translateLanguages_.insert(QObject::tr("Albanian"),"sq"); translateLanguages_.insert(QObject::tr("Arabic"),"ar"); translateLanguages_.insert(QObject::tr("Armenian"),"hy"); translateLanguages_.insert(QObject::tr("Azerbaijani"),"az"); translateLanguages_.insert(QObject::tr("Basque"),"eu"); translateLanguages_.insert(QObject::tr("Belarusian"),"be"); translateLanguages_.insert(QObject::tr("Bulgarian"),"bg"); translateLanguages_.insert(QObject::tr("Catalan"),"ca"); translateLanguages_.insert(QObject::tr("Chinese (Simplified)"),"zh-CN"); translateLanguages_.insert(QObject::tr("Chinese (Traditional)"),"zh-TW"); translateLanguages_.insert(QObject::tr("Croatian"),"hr"); translateLanguages_.insert(QObject::tr("Czech"),"cs"); translateLanguages_.insert(QObject::tr("Danish"),"da"); translateLanguages_.insert(QObject::tr("Dutch"),"nl"); translateLanguages_.insert(QObject::tr("English"),"en"); translateLanguages_.insert(QObject::tr("Estonian"),"et"); translateLanguages_.insert(QObject::tr("Filipino"),"tl"); translateLanguages_.insert(QObject::tr("Finnish"),"fi"); translateLanguages_.insert(QObject::tr("French"),"fr"); translateLanguages_.insert(QObject::tr("Galician"),"gl"); translateLanguages_.insert(QObject::tr("Georgian"),"ka"); translateLanguages_.insert(QObject::tr("German"),"de"); translateLanguages_.insert(QObject::tr("Greek"),"el"); translateLanguages_.insert(QObject::tr("Haitian Creole"),"ht"); translateLanguages_.insert(QObject::tr("Hebrew"),"iw"); translateLanguages_.insert(QObject::tr("Hindi"),"hi"); translateLanguages_.insert(QObject::tr("Hungarian"),"hu"); translateLanguages_.insert(QObject::tr("Icelandic"),"is"); translateLanguages_.insert(QObject::tr("Indonesian"),"id"); translateLanguages_.insert(QObject::tr("Irish"),"ga"); translateLanguages_.insert(QObject::tr("Italian"),"it"); translateLanguages_.insert(QObject::tr("Japanese"),"ja"); translateLanguages_.insert(QObject::tr("Korean"),"ko"); translateLanguages_.insert(QObject::tr("Latvian"),"lv"); translateLanguages_.insert(QObject::tr("Lithuanian"),"lt"); translateLanguages_.insert(QObject::tr("Macedonian"),"mk"); translateLanguages_.insert(QObject::tr("Malay"),"ms"); translateLanguages_.insert(QObject::tr("Maltese"),"mt"); translateLanguages_.insert(QObject::tr("Norwegian"),"no"); translateLanguages_.insert(QObject::tr("Persian"),"fa"); translateLanguages_.insert(QObject::tr("Polish"),"pl"); translateLanguages_.insert(QObject::tr("Portuguese"),"pt"); translateLanguages_.insert(QObject::tr("Romanian"),"ro"); translateLanguages_.insert(QObject::tr("Russian"),"ru"); translateLanguages_.insert(QObject::tr("Serbian"),"sr"); translateLanguages_.insert(QObject::tr("Slovak"),"sk"); translateLanguages_.insert(QObject::tr("Slovenian"),"sl"); translateLanguages_.insert(QObject::tr("Spanish"),"es"); translateLanguages_.insert(QObject::tr("Swahili"),"sw"); translateLanguages_.insert(QObject::tr("Swedish"),"sv"); translateLanguages_.insert(QObject::tr("Thai"),"th"); translateLanguages_.insert(QObject::tr("Turkish"),"tr"); translateLanguages_.insert(QObject::tr("Ukrainian"),"uk"); translateLanguages_.insert(QObject::tr("Urdu"),"ur"); translateLanguages_.insert(QObject::tr("Vietnamese"),"vi"); translateLanguages_.insert(QObject::tr("Welsh"),"cy"); translateLanguages_.insert(QObject::tr("Yiddish"),"yi"); } void LanguageHelper::initOcrLanguages() { ocrLanguages_.insert(QObject::tr("Ancient Greek"),"grc"); ocrLanguages_.insert(QObject::tr("Esperanto alternative"),"epo_alt"); ocrLanguages_.insert(QObject::tr("English"),"eng"); ocrLanguages_.insert(QObject::tr("Ukrainian"),"ukr"); ocrLanguages_.insert(QObject::tr("Turkish"),"tur"); ocrLanguages_.insert(QObject::tr("Thai"),"tha"); ocrLanguages_.insert(QObject::tr("Tagalog"),"tgl"); ocrLanguages_.insert(QObject::tr("Telugu"),"tel"); ocrLanguages_.insert(QObject::tr("Tamil"),"tam"); ocrLanguages_.insert(QObject::tr("Swedish"),"swe"); ocrLanguages_.insert(QObject::tr("Swahili"),"swa"); ocrLanguages_.insert(QObject::tr("Serbian"),"srp"); ocrLanguages_.insert(QObject::tr("Albanian"),"sqi"); ocrLanguages_.insert(QObject::tr("Spanish"),"spa"); ocrLanguages_.insert(QObject::tr("Slovenian"),"slv"); ocrLanguages_.insert(QObject::tr("Slovakian"),"slk"); ocrLanguages_.insert(QObject::tr("Romanian"),"ron"); ocrLanguages_.insert(QObject::tr("Portuguese"),"por"); ocrLanguages_.insert(QObject::tr("Polish"),"pol"); ocrLanguages_.insert(QObject::tr("Norwegian"),"nor"); ocrLanguages_.insert(QObject::tr("Dutch"),"nld"); ocrLanguages_.insert(QObject::tr("Malay"),"msa"); ocrLanguages_.insert(QObject::tr("Maltese"),"mlt"); ocrLanguages_.insert(QObject::tr("Macedonian"),"mkd"); ocrLanguages_.insert(QObject::tr("Malayalam"),"mal"); ocrLanguages_.insert(QObject::tr("Lithuanian"),"lit"); ocrLanguages_.insert(QObject::tr("Latvian"),"lav"); ocrLanguages_.insert(QObject::tr("Korean"),"kor"); ocrLanguages_.insert(QObject::tr("Kannada"),"kan"); ocrLanguages_.insert(QObject::tr("Italian"),"ita"); ocrLanguages_.insert(QObject::tr("Icelandic"),"isl"); ocrLanguages_.insert(QObject::tr("Indonesian"),"ind"); ocrLanguages_.insert(QObject::tr("Cherokee"),"chr"); ocrLanguages_.insert(QObject::tr("Hungarian"),"hun"); ocrLanguages_.insert(QObject::tr("Croatian"),"hrv"); ocrLanguages_.insert(QObject::tr("Hindi"),"hin"); ocrLanguages_.insert(QObject::tr("Hebrew"),"heb"); ocrLanguages_.insert(QObject::tr("Galician"),"glg"); ocrLanguages_.insert(QObject::tr("Middle French (ca. 1400-1600)"),"frm"); ocrLanguages_.insert(QObject::tr("Frankish"),"frk"); ocrLanguages_.insert(QObject::tr("French"),"fra"); ocrLanguages_.insert(QObject::tr("Finnish"),"fin"); ocrLanguages_.insert(QObject::tr("Basque"),"eus"); ocrLanguages_.insert(QObject::tr("Estonian"),"est"); ocrLanguages_.insert(QObject::tr("Math / equation"),"equ"); ocrLanguages_.insert(QObject::tr("Esperanto"),"epo"); ocrLanguages_.insert(QObject::tr("Middle English (1100-1500)"),"enm"); ocrLanguages_.insert(QObject::tr("Greek"),"ell"); ocrLanguages_.insert(QObject::tr("German"),"deu"); ocrLanguages_.insert(QObject::tr("Danish"),"dan"); ocrLanguages_.insert(QObject::tr("Czech"),"ces"); ocrLanguages_.insert(QObject::tr("Catalan"),"cat"); ocrLanguages_.insert(QObject::tr("Bulgarian"),"bul"); ocrLanguages_.insert(QObject::tr("Bengali"),"ben"); ocrLanguages_.insert(QObject::tr("Belarusian"),"bel"); ocrLanguages_.insert(QObject::tr("Azerbaijani"),"aze"); ocrLanguages_.insert(QObject::tr("Arabic"),"ara"); ocrLanguages_.insert(QObject::tr("Afrikaans"),"afr"); ocrLanguages_.insert(QObject::tr("Japanese"),"jpn"); ocrLanguages_.insert(QObject::tr("Chinese (Simplified)"),"chi_sim"); ocrLanguages_.insert(QObject::tr("Chinese (Traditional)"),"chi_tra"); ocrLanguages_.insert(QObject::tr("Russian"),"rus"); ocrLanguages_.insert(QObject::tr("Vietnamese"),"vie"); }