You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
447 lines
18 KiB
447 lines
18 KiB
/* BEGIN_COMMON_COPYRIGHT_HEADER
|
|
* (c)LGPL2+
|
|
*
|
|
* LXQt - a lightweight, Qt based, desktop toolset
|
|
* http://razor-qt.org
|
|
*
|
|
* Copyright: 2010-2011 Razor team
|
|
* Authors:
|
|
* Alexander Sokoloff <sokoloff.a@gmail.com>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*
|
|
* END_COMMON_COPYRIGHT_HEADER */
|
|
|
|
|
|
#include "translatorsinfo.h"
|
|
#include <QDebug>
|
|
#include <QSettings>
|
|
#include <QStringList>
|
|
#include <QTextCodec>
|
|
#include <QTextDocument>
|
|
|
|
using namespace LxQt;
|
|
|
|
void fillLangguages(QMap<QString, QString> *languages)
|
|
{
|
|
languages->insert("ach" ,"Acoli");
|
|
languages->insert("af" ,"Afrikaans");
|
|
languages->insert("af_ZA" ,"Afrikaans (South Africa)");
|
|
languages->insert("ak" ,"Akan");
|
|
languages->insert("sq" ,"Albanian");
|
|
languages->insert("sq_AL" ,"Albanian (Albania)");
|
|
languages->insert("aln" ,"Albanian Gheg");
|
|
languages->insert("am" ,"Amharic");
|
|
languages->insert("am_ET" ,"Amharic (Ethiopia)");
|
|
languages->insert("ar" ,"Arabic");
|
|
languages->insert("ar_SA" ,"Arabic (Saudi Arabia)");
|
|
languages->insert("ar_AA" ,"Arabic (Unitag)");
|
|
languages->insert("an" ,"Aragonese");
|
|
languages->insert("hy" ,"Armenian");
|
|
languages->insert("hy_AM" ,"Armenian (Armenia)");
|
|
languages->insert("as" ,"Assamese");
|
|
languages->insert("as_IN" ,"Assamese (India)");
|
|
languages->insert("ast" ,"Asturian");
|
|
languages->insert("az" ,"Azerbaijani");
|
|
languages->insert("az_AZ" ,"Azerbaijani (Azerbaijan)");
|
|
languages->insert("bal" ,"Balochi");
|
|
languages->insert("eu" ,"Basque");
|
|
languages->insert("eu_ES" ,"Basque (Spain)");
|
|
languages->insert("be" ,"Belarusian");
|
|
languages->insert("be_BY" ,"Belarusian (Belarus)");
|
|
languages->insert("be@tarask" ,"Belarusian (Tarask)");
|
|
languages->insert("bn" ,"Bengali");
|
|
languages->insert("bn_BD" ,"Bengali (Bangladesh)");
|
|
languages->insert("bn_IN" ,"Bengali (India)");
|
|
languages->insert("brx" ,"Bodo");
|
|
languages->insert("bs" ,"Bosnian");
|
|
languages->insert("bs_BA" ,"Bosnian (Bosnia and Herzegovina)");
|
|
languages->insert("br" ,"Breton");
|
|
languages->insert("bg" ,"Bulgarian");
|
|
languages->insert("bg_BG" ,"Bulgarian (Bulgaria)");
|
|
languages->insert("my" ,"Burmese");
|
|
languages->insert("my_MM" ,"Burmese (Myanmar)");
|
|
languages->insert("ca" ,"Catalan");
|
|
languages->insert("ca_ES" ,"Catalan (Spain)");
|
|
languages->insert("ca@valencia" ,"Catalan (Valencian)");
|
|
languages->insert("hne" ,"Chhattisgarhi");
|
|
languages->insert("cgg" ,"Chiga");
|
|
languages->insert("zh" ,"Chinese");
|
|
languages->insert("zh_CN" ,"Chinese (China)");
|
|
languages->insert("zh_CN.GB2312" ,"Chinese (China) (GB2312)");
|
|
languages->insert("zh_HK" ,"Chinese (Hong Kong)");
|
|
languages->insert("zh_TW" ,"Chinese (Taiwan)");
|
|
languages->insert("zh_TW.Big5" ,"Chinese (Taiwan) (Big5) ");
|
|
languages->insert("kw" ,"Cornish");
|
|
languages->insert("co" ,"Corsican");
|
|
languages->insert("crh" ,"Crimean Turkish");
|
|
languages->insert("hr" ,"Croatian");
|
|
languages->insert("hr_HR" ,"Croatian (Croatia)");
|
|
languages->insert("cs" ,"Czech");
|
|
languages->insert("cs_CZ" ,"Czech (Czech Republic)");
|
|
languages->insert("da" ,"Danish");
|
|
languages->insert("da_DK" ,"Danish (Denmark)");
|
|
languages->insert("nl" ,"Dutch");
|
|
languages->insert("nl_BE" ,"Dutch (Belgium)");
|
|
languages->insert("nl_NL" ,"Dutch (Netherlands)");
|
|
languages->insert("dz" ,"Dzongkha");
|
|
languages->insert("dz_BT" ,"Dzongkha (Bhutan)");
|
|
languages->insert("en" ,"English");
|
|
languages->insert("en_AU" ,"English (Australia)");
|
|
languages->insert("en_CA" ,"English (Canada)");
|
|
languages->insert("en_IE" ,"English (Ireland)");
|
|
languages->insert("en_ZA" ,"English (South Africa)");
|
|
languages->insert("en_GB" ,"English (United Kingdom)");
|
|
languages->insert("en_US" ,"English (United States)");
|
|
languages->insert("eo" ,"Esperanto");
|
|
languages->insert("et" ,"Estonian");
|
|
languages->insert("et_EE" ,"Estonian (Estonia)");
|
|
languages->insert("fo" ,"Faroese");
|
|
languages->insert("fo_FO" ,"Faroese (Faroe Islands)");
|
|
languages->insert("fil" ,"Filipino");
|
|
languages->insert("fi" ,"Finnish");
|
|
languages->insert("fi_FI" ,"Finnish (Finland)");
|
|
languages->insert("frp" ,"Franco-Provençal (Arpitan)");
|
|
languages->insert("fr" ,"French");
|
|
languages->insert("fr_CA" ,"French (Canada)");
|
|
languages->insert("fr_FR" ,"French (France)");
|
|
languages->insert("fr_CH" ,"French (Switzerland)");
|
|
languages->insert("fur" ,"Friulian");
|
|
languages->insert("ff" ,"Fulah");
|
|
languages->insert("gd" ,"Gaelic, Scottish");
|
|
languages->insert("gl" ,"Galician");
|
|
languages->insert("gl_ES" ,"Galician (Spain)");
|
|
languages->insert("lg" ,"Ganda");
|
|
languages->insert("ka" ,"Georgian");
|
|
languages->insert("ka_GE" ,"Georgian (Georgia)");
|
|
languages->insert("de" ,"German");
|
|
languages->insert("de_DE" ,"German (Germany)");
|
|
languages->insert("de_CH" ,"German (Switzerland)");
|
|
languages->insert("el" ,"Greek");
|
|
languages->insert("el_GR" ,"Greek (Greece)");
|
|
languages->insert("gu" ,"Gujarati");
|
|
languages->insert("gu_IN" ,"Gujarati (India)");
|
|
languages->insert("gun" ,"Gun");
|
|
languages->insert("ht" ,"Haitian (Haitian Creole)");
|
|
languages->insert("ht_HT" ,"Haitian (Haitian Creole) (Haiti)");
|
|
languages->insert("ha" ,"Hausa");
|
|
languages->insert("he" ,"Hebrew");
|
|
languages->insert("he_IL" ,"Hebrew (Israel)");
|
|
languages->insert("hi" ,"Hindi");
|
|
languages->insert("hi_IN" ,"Hindi (India)");
|
|
languages->insert("hu" ,"Hungarian");
|
|
languages->insert("hu_HU" ,"Hungarian (Hungary)");
|
|
languages->insert("is" ,"Icelandic");
|
|
languages->insert("is_IS" ,"Icelandic (Iceland)");
|
|
languages->insert("ig" ,"Igbo");
|
|
languages->insert("ilo" ,"Iloko");
|
|
languages->insert("id" ,"Indonesian");
|
|
languages->insert("id_ID" ,"Indonesian (Indonesia)");
|
|
languages->insert("ia" ,"Interlingua");
|
|
languages->insert("ga" ,"Irish");
|
|
languages->insert("ga_IE" ,"Irish (Ireland)");
|
|
languages->insert("it" ,"Italian");
|
|
languages->insert("it_IT" ,"Italian (Italy)");
|
|
languages->insert("ja" ,"Japanese");
|
|
languages->insert("ja_JP" ,"Japanese (Japan)");
|
|
languages->insert("jv" ,"Javanese");
|
|
languages->insert("kn" ,"Kannada");
|
|
languages->insert("kn_IN" ,"Kannada (India)");
|
|
languages->insert("ks" ,"Kashmiri");
|
|
languages->insert("ks_IN" ,"Kashmiri (India)");
|
|
languages->insert("csb" ,"Kashubian");
|
|
languages->insert("kk" ,"Kazakh");
|
|
languages->insert("kk_KZ" ,"Kazakh (Kazakhstan)");
|
|
languages->insert("km" ,"Khmer");
|
|
languages->insert("km_KH" ,"Khmer (Cambodia)");
|
|
languages->insert("rw" ,"Kinyarwanda");
|
|
languages->insert("ky" ,"Kirgyz");
|
|
languages->insert("tlh" ,"Klingon");
|
|
languages->insert("ko" ,"Korean");
|
|
languages->insert("ko_KR" ,"Korean (Korea)");
|
|
languages->insert("ku" ,"Kurdish");
|
|
languages->insert("ku_IQ" ,"Kurdish (Iraq)");
|
|
languages->insert("lo" ,"Lao");
|
|
languages->insert("lo_LA" ,"Lao (Laos)");
|
|
languages->insert("la" ,"Latin");
|
|
languages->insert("lv" ,"Latvian");
|
|
languages->insert("lv_LV" ,"Latvian (Latvia)");
|
|
languages->insert("li" ,"Limburgian");
|
|
languages->insert("ln" ,"Lingala");
|
|
languages->insert("lt" ,"Lithuanian");
|
|
languages->insert("lt_LT" ,"Lithuanian (Lithuania)");
|
|
languages->insert("nds" ,"Low German");
|
|
languages->insert("lb" ,"Luxembourgish");
|
|
languages->insert("mk" ,"Macedonian");
|
|
languages->insert("mk_MK" ,"Macedonian (Macedonia)");
|
|
languages->insert("mai" ,"Maithili");
|
|
languages->insert("mg" ,"Malagasy");
|
|
languages->insert("ms" ,"Malay");
|
|
languages->insert("ml" ,"Malayalam");
|
|
languages->insert("ml_IN" ,"Malayalam (India)");
|
|
languages->insert("ms_MY" ,"Malay (Malaysia)");
|
|
languages->insert("mt" ,"Maltese");
|
|
languages->insert("mt_MT" ,"Maltese (Malta)");
|
|
languages->insert("mi" ,"Maori");
|
|
languages->insert("arn" ,"Mapudungun");
|
|
languages->insert("mr" ,"Marathi");
|
|
languages->insert("mr_IN" ,"Marathi (India)");
|
|
languages->insert("mn" ,"Mongolian");
|
|
languages->insert("mn_MN" ,"Mongolian (Mongolia)");
|
|
languages->insert("nah" ,"Nahuatl");
|
|
languages->insert("nr" ,"Ndebele, South");
|
|
languages->insert("nap" ,"Neapolitan");
|
|
languages->insert("ne" ,"Nepali");
|
|
languages->insert("ne_NP" ,"Nepali (Nepal)");
|
|
languages->insert("se" ,"Northern Sami");
|
|
languages->insert("nso" ,"Northern Sotho");
|
|
languages->insert("no" ,"Norwegian");
|
|
languages->insert("nb" ,"Norwegian Bokmål");
|
|
languages->insert("nb_NO" ,"Norwegian Bokmål (Norway)");
|
|
languages->insert("no_NO" ,"Norwegian (Norway)");
|
|
languages->insert("nn" ,"Norwegian Nynorsk");
|
|
languages->insert("nn_NO" ,"Norwegian Nynorsk (Norway)");
|
|
languages->insert("ny" ,"Nyanja");
|
|
languages->insert("oc" ,"Occitan (post 1500)");
|
|
languages->insert("or" ,"Oriya");
|
|
languages->insert("or_IN" ,"Oriya (India)");
|
|
languages->insert("pa" ,"Panjabi (Punjabi)");
|
|
languages->insert("pa_IN" ,"Panjabi (Punjabi) (India)");
|
|
languages->insert("pap" ,"Papiamento");
|
|
languages->insert("fa" ,"Persian");
|
|
languages->insert("fa_IR" ,"Persian (Iran)");
|
|
languages->insert("pms" ,"Piemontese");
|
|
languages->insert("pl" ,"Polish");
|
|
languages->insert("pl_PL" ,"Polish (Poland)");
|
|
languages->insert("pt" ,"Portuguese");
|
|
languages->insert("pt_BR" ,"Portuguese (Brazil)");
|
|
languages->insert("pt_PT" ,"Portuguese (Portugal)");
|
|
languages->insert("ps" ,"Pushto");
|
|
languages->insert("ro" ,"Romanian");
|
|
languages->insert("ro_RO" ,"Romanian (Romania)");
|
|
languages->insert("rm" ,"Romansh");
|
|
languages->insert("ru" ,"Russian");
|
|
languages->insert("ru_RU" ,"Russian (Russia)");
|
|
languages->insert("sm" ,"Samoan");
|
|
languages->insert("sc" ,"Sardinian");
|
|
languages->insert("sco" ,"Scots");
|
|
languages->insert("sr" ,"Serbian");
|
|
languages->insert("sr@latin" ,"Serbian (Latin)");
|
|
languages->insert("sr_RS@latin" ,"Serbian (Latin) (Serbia)");
|
|
languages->insert("sr_RS" ,"Serbian (Serbia)");
|
|
languages->insert("sn" ,"Shona");
|
|
languages->insert("sd" ,"Sindhi");
|
|
languages->insert("si" ,"Sinhala");
|
|
languages->insert("si_LK" ,"Sinhala (Sri Lanka)");
|
|
languages->insert("sk" ,"Slovak");
|
|
languages->insert("sk_SK" ,"Slovak (Slovakia)");
|
|
languages->insert("sl" ,"Slovenian");
|
|
languages->insert("sl_SI" ,"Slovenian (Slovenia)");
|
|
languages->insert("so" ,"Somali");
|
|
languages->insert("son" ,"Songhay");
|
|
languages->insert("st" ,"Sotho, Southern");
|
|
languages->insert("st_ZA" ,"Sotho, Southern (South Africa)");
|
|
languages->insert("es" ,"Spanish");
|
|
languages->insert("es_AR" ,"Spanish (Argentina)");
|
|
languages->insert("es_BO" ,"Spanish (Bolivia)");
|
|
languages->insert("es_CL" ,"Spanish (Chile)");
|
|
languages->insert("es_CO" ,"Spanish (Colombia)");
|
|
languages->insert("es_CR" ,"Spanish (Costa Rica)");
|
|
languages->insert("es_DO" ,"Spanish (Dominican Republic)");
|
|
languages->insert("es_EC" ,"Spanish (Ecuador)");
|
|
languages->insert("es_SV" ,"Spanish (El Salvador)");
|
|
languages->insert("es_MX" ,"Spanish (Mexico)");
|
|
languages->insert("es_NI" ,"Spanish (Nicaragua)");
|
|
languages->insert("es_PA" ,"Spanish (Panama)");
|
|
languages->insert("es_PY" ,"Spanish (Paraguay)");
|
|
languages->insert("es_PE" ,"Spanish (Peru)");
|
|
languages->insert("es_PR" ,"Spanish (Puerto Rico)");
|
|
languages->insert("es_ES" ,"Spanish (Spain)");
|
|
languages->insert("es_UY" ,"Spanish (Uruguay)");
|
|
languages->insert("es_VE" ,"Spanish (Venezuela)");
|
|
languages->insert("su" ,"Sundanese");
|
|
languages->insert("sw" ,"Swahili");
|
|
languages->insert("sw_KE" ,"Swahili (Kenya)");
|
|
languages->insert("sv" ,"Swedish");
|
|
languages->insert("sv_FI" ,"Swedish (Finland)");
|
|
languages->insert("sv_SE" ,"Swedish (Sweden)");
|
|
languages->insert("tl" ,"Tagalog");
|
|
languages->insert("tl_PH" ,"Tagalog (Philippines)");
|
|
languages->insert("tg" ,"Tajik");
|
|
languages->insert("tg_TJ" ,"Tajik (Tajikistan)");
|
|
languages->insert("ta" ,"Tamil");
|
|
languages->insert("ta_IN" ,"Tamil (India)");
|
|
languages->insert("ta_LK" ,"Tamil (Sri-Lanka)");
|
|
languages->insert("tt" ,"Tatar");
|
|
languages->insert("te" ,"Telugu");
|
|
languages->insert("te_IN" ,"Telugu (India)");
|
|
languages->insert("th" ,"Thai");
|
|
languages->insert("th_TH" ,"Thai (Thailand)");
|
|
languages->insert("bo" ,"Tibetan");
|
|
languages->insert("bo_CN" ,"Tibetan (China)");
|
|
languages->insert("ti" ,"Tigrinya");
|
|
languages->insert("to" ,"Tongan");
|
|
languages->insert("tr" ,"Turkish");
|
|
languages->insert("tr_TR" ,"Turkish (Turkey)");
|
|
languages->insert("tk" ,"Turkmen");
|
|
languages->insert("ug" ,"Uighur");
|
|
languages->insert("uk" ,"Ukrainian");
|
|
languages->insert("uk_UA" ,"Ukrainian (Ukraine)");
|
|
languages->insert("hsb" ,"Upper Sorbian");
|
|
languages->insert("ur" ,"Urdu");
|
|
languages->insert("ur_PK" ,"Urdu (Pakistan)");
|
|
languages->insert("uz" ,"Uzbek");
|
|
languages->insert("ve" ,"Venda");
|
|
languages->insert("vi" ,"Vietnamese");
|
|
languages->insert("vi_VN" ,"Vietnamese (Vietnam)");
|
|
languages->insert("vls" ,"Vlaams");
|
|
languages->insert("wa" ,"Walloon");
|
|
languages->insert("cy" ,"Welsh");
|
|
languages->insert("cy_GB" ,"Welsh (United Kingdom)");
|
|
languages->insert("fy" ,"Western Frisian");
|
|
languages->insert("fy_NL" ,"Western Frisian (Netherlands)");
|
|
languages->insert("wo" ,"Wolof");
|
|
languages->insert("wo_SN" ,"Wolof (Senegal)");
|
|
languages->insert("xh" ,"Xhosa");
|
|
languages->insert("yi" ,"Yiddish");
|
|
languages->insert("yo" ,"Yoruba");
|
|
languages->insert("zu" ,"Zulu");
|
|
languages->insert("zu_ZA" ,"Zulu (South Africa)");
|
|
}
|
|
|
|
|
|
QString getValue(const QSettings &src, const QString &key)
|
|
{
|
|
QString ret = src.value(key).toString().trimmed();
|
|
if (ret == "-")
|
|
return "";
|
|
|
|
return ret;
|
|
}
|
|
|
|
|
|
|
|
TranslatorsInfo::TranslatorsInfo()
|
|
{
|
|
//fillLangguages(&mLanguagesList);
|
|
|
|
QSettings src(":/translatorsInfo", QSettings::IniFormat);
|
|
src.setIniCodec("UTF-8");
|
|
|
|
foreach(QString group, src.childGroups())
|
|
{
|
|
QString lang = group.section("_", 1).remove(".info");
|
|
src.beginGroup(group);
|
|
int cnt = src.allKeys().count();
|
|
for (int i=0; i<cnt; i++)
|
|
{
|
|
QString nameEnglish = getValue(src, QString("translator_%1_nameEnglish").arg(i));
|
|
QString nameNative = getValue(src, QString("translator_%1_nameNative").arg(i));
|
|
QString contact = getValue(src, QString("translator_%1_contact").arg(i));
|
|
|
|
if (!nameEnglish.isEmpty())
|
|
{
|
|
process(lang, nameEnglish, nameNative, contact);
|
|
}
|
|
|
|
}
|
|
src.endGroup();
|
|
}
|
|
|
|
}
|
|
|
|
TranslatorsInfo::~TranslatorsInfo()
|
|
{
|
|
qDeleteAll(mItems);
|
|
}
|
|
|
|
QString TranslatorsInfo::asHtml() const
|
|
{
|
|
QString ret;
|
|
foreach(TranslatorPerson *translator, mItems)
|
|
{
|
|
ret += "<li>" + translator->asHtml() + "</li>";
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
|
|
|
|
void TranslatorsInfo::process(const QString &lang, const QString &englishName, const QString &nativeName, const QString &contact)
|
|
{
|
|
QString key = QString("%1:%2:%3").arg(englishName, nativeName, contact);
|
|
TranslatorPerson *translator = mItems.value(key);
|
|
|
|
if (!translator)
|
|
{
|
|
translator = new TranslatorPerson(englishName, nativeName, contact);
|
|
mItems.insert(key, translator);
|
|
}
|
|
|
|
translator->addLanguage(lang);
|
|
}
|
|
|
|
|
|
TranslatorPerson::TranslatorPerson(const QString &englishName, const QString &nativeName, const QString &contact)
|
|
{
|
|
mEnglishName = englishName;
|
|
|
|
if (nativeName != englishName)
|
|
mNativeName = nativeName;
|
|
|
|
mContact = contact;
|
|
|
|
if (mNativeName.isEmpty())
|
|
mInfo = QString("%1").arg(mEnglishName);
|
|
else
|
|
mInfo = QString("%1 (%2)").arg(mEnglishName, mNativeName);
|
|
|
|
if (!mContact.isEmpty())
|
|
{
|
|
|
|
if (mContact.contains(QRegExp("^(https?|mailto):")))
|
|
mInfo = QString(" <a href='%1'>%2</a>").arg(contact, mInfo.toHtmlEscaped());
|
|
else if (contact.contains("@") || contact.contains("<"))
|
|
mInfo = QString(" <a href='mailto:%1'>%2</a>").arg(contact, mInfo.toHtmlEscaped());
|
|
else
|
|
mInfo = QString(" <a href='http://%1'>%2</a>").arg(contact, mInfo.toHtmlEscaped());
|
|
}
|
|
}
|
|
|
|
|
|
void TranslatorPerson::addLanguage(QString langId)
|
|
{
|
|
static QMap<QString, QString> mLanguagesList;
|
|
if (mLanguagesList.isEmpty())
|
|
{
|
|
fillLangguages(&mLanguagesList);
|
|
}
|
|
|
|
if (mLanguagesList.contains(langId))
|
|
mLanguages << mLanguagesList.value(langId);
|
|
else
|
|
mLanguages << langId;
|
|
}
|
|
|
|
|
|
QString TranslatorPerson::asHtml()
|
|
{
|
|
QString ret(mInfo);
|
|
ret += " - " + mLanguages.join(", ");
|
|
return ret;
|
|
}
|
|
|