00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <iostream>
00023
00024 #include <QDir>
00025 #include <QFileInfo>
00026 #include <QMap>
00027 #include <QObject>
00028 #include <QStringList>
00029
00030 #include "scconfig.h"
00031 #include "langmgr.h"
00032 #include "scpaths.h"
00033
00034 void LanguageManager::init(bool generateInstalledList)
00035 {
00036
00037 generateLangList();
00038 if (generateInstalledList)
00039 generateInstalledLangList();
00040 }
00041
00042 void LanguageManager::generateLangList()
00043 {
00044 langList.insert("af", langPair("Afrikaans", QObject::tr( "Afrikaans" )) );
00045 langList.insert("ar", langPair("Arabic", QObject::tr( "Arabic" )) );
00046 langList.insert("sq", langPair("Albanian", QObject::tr( "Albanian" )) );
00047 langList.insert("eu", langPair("Basque", QObject::tr( "Basque" )) );
00048 langList.insert("bg", langPair("Bulgarian", QObject::tr( "Bulgarian" )) );
00049 langList.insert("br", langPair("Breton", QObject::tr( "Breton" )) );
00050 langList.insert("ca", langPair("Catalan", QObject::tr( "Catalan" )) );
00051 langList.insert("zh", langPair("Chinese", QObject::tr( "Chinese" )) );
00052 langList.insert("zh_TW", langPair("Chinese (Trad.)", QObject::tr( "Chinese (Trad.)" )) );
00053 langList.insert("hr", langPair("Croatian", QObject::tr( "Croatian" )) );
00054 langList.insert("cs", langPair("Czech", QObject::tr( "Czech" )) );
00055 langList.insert("cs_CZ", langPair("Czech", QObject::tr( "Czech" )) );
00056 langList.insert("da", langPair("Danish", QObject::tr( "Danish" )) );
00057 langList.insert("da_DK", langPair("Danish", QObject::tr( "Danish" )) );
00058 langList.insert("dz", langPair("Dzongkha", QObject::tr( "Dzongkha" )) );
00059 langList.insert("nl", langPair("Dutch", QObject::tr( "Dutch" )) );
00060 langList.insert("en", langPair("English", QObject::tr( "English" )) );
00061 langList.insert("en_AU", langPair("English (Australian)",QObject::tr( "English (Australian)" )) );
00062 langList.insert("en_GB", langPair("English (British)", QObject::tr( "English (British)" )) );
00063 langList.insert("en_US", langPair("English (American)", QObject::tr( "English (American)" )) );
00064 langList.insert("eo", langPair("Esperanto", QObject::tr( "Esperanto" )) );
00065 langList.insert("et", langPair("Estonian", QObject::tr( "Estonian" )) );
00066 langList.insert("de", langPair("German", QObject::tr( "German" )) );
00067 langList.insert("de_CH", langPair("German (Swiss)", QObject::tr( "German (Swiss)" )) );
00068 langList.insert("de_ol", langPair("German (Trad.)", QObject::tr( "German (Trad.)" )) );
00069 langList.insert("fi", langPair("Finnish", QObject::tr( "Finnish" )) );
00070 langList.insert("fr", langPair("French", QObject::tr( "French" )) );
00071 langList.insert("ga", langPair("Galician", QObject::tr( "Galician" )) );
00072 langList.insert("galician", langPair("Galician", QObject::tr( "Galician" )) );
00073 langList.insert("gl", langPair("Galician", QObject::tr( "Galician" )) );
00074 langList.insert("el", langPair("Greek", QObject::tr( "Greek" )) );
00075 langList.insert("he", langPair("Hebrew", QObject::tr( "Hebrew" )) );
00076 langList.insert("hu", langPair("Hungarian", QObject::tr( "Hungarian" )) );
00077 langList.insert("ia", langPair("Latin", QObject::tr( "Latin" )) );
00078 langList.insert("is", langPair("Icelandic", QObject::tr( "Icelandic" )) );
00079 langList.insert("id", langPair("Indonesian", QObject::tr( "Indonesian" )) );
00080 langList.insert("it", langPair("Italian", QObject::tr( "Italian" )) );
00081 langList.insert("ja", langPair("Japanese", QObject::tr( "Japanese" )) );
00082 langList.insert("km", langPair("Khmer", QObject::tr( "Khmer" )) );
00083 langList.insert("ko", langPair("Korean", QObject::tr( "Korean" )) );
00084 langList.insert("lo", langPair("Lao", QObject::tr( "Lao" )) );
00085 langList.insert("la", langPair("Latin", QObject::tr( "Latin" )) );
00086 langList.insert("lt", langPair("Lithuanian", QObject::tr( "Lithuanian" )) );
00087 langList.insert("lt_LT", langPair("Lithuanian", QObject::tr( "Lithuanian" )) );
00088 langList.insert("lu", langPair("Luxembourgish", QObject::tr( "Luxembourgish" )) );
00089
00090 langList.insert("nb", langPair("Norwegian (Bokmål)", QObject::trUtf8( "Norwegian (Bokm\225l)" )) );
00091 langList.insert("nb_NO", langPair("Norwegian (Bokmål)", QObject::trUtf8( "Norwegian (Bokm\225l)" )) );
00092 langList.insert("nn", langPair("Norwegian (Nnyorsk)", QObject::tr( "Norwegian (Nnyorsk)" )) );
00093 langList.insert("nn_NO", langPair("Norwegian (Nnyorsk)", QObject::tr( "Norwegian (Nnyorsk)" )) );
00094 langList.insert("no", langPair("Norwegian", QObject::tr( "Norwegian" )) );
00095 langList.insert("no_NO", langPair("Norwegian", QObject::tr( "Norwegian" )) );
00096 langList.insert("pl", langPair("Polish", QObject::tr( "Polish" )) );
00097 langList.insert("pl_PL", langPair("Polish", QObject::tr( "Polish" )) );
00098 langList.insert("pt", langPair("Portuguese", QObject::tr( "Portuguese" )) );
00099 langList.insert("pt_BR", langPair("Portuguese (BR)", QObject::tr( "Portuguese (BR)" )) );
00100 langList.insert("ro", langPair("Romanian", QObject::tr( "Romanian" )) );
00101 langList.insert("ru", langPair("Russian", QObject::tr( "Russian" )) );
00102 langList.insert("es", langPair("Spanish", QObject::tr( "Spanish" )) );
00103 langList.insert("es_ES", langPair("Spanish", QObject::tr( "Spanish" )) );
00104 langList.insert("es_LA", langPair("Spanish (Latin)", QObject::tr( "Spanish (Latin)" )) );
00105 langList.insert("sk", langPair("Slovak", QObject::tr( "Slovak" )) );
00106 langList.insert("sl", langPair("Slovenian", QObject::tr( "Slovenian" )) );
00107 langList.insert("sr", langPair("Serbian", QObject::tr( "Serbian" )) );
00108 langList.insert("sv", langPair("Swedish", QObject::tr( "Swedish" )) );
00109 langList.insert("th", langPair("Thai", QObject::tr( "Thai" )) );
00110 langList.insert("th_TH", langPair("Thai", QObject::tr( "Thai" )) );
00111 langList.insert("tr", langPair("Turkish", QObject::tr( "Turkish" )) );
00112 langList.insert("tr_TR", langPair("Turkish", QObject::tr( "Turkish" )) );
00113 langList.insert("uk", langPair("Ukranian", QObject::tr( "Ukranian" )) );
00114 langList.insert("vi", langPair("Vietnamese", QObject::tr( "Vietnamese" )) );
00115 langList.insert("cy", langPair("Welsh", QObject::tr( "Welsh" )) );
00116 }
00117
00118 void LanguageManager::generateInstalledLangList()
00119 {
00120 QString path = ScPaths::instance().translationDir();
00121 QString langAbbrev;
00122 QMap<QString, langPair>::Iterator it;
00123 QDir dir(path , "*.*", QDir::Name, QDir::Files | QDir::NoSymLinks);
00124 if (dir.exists() && (dir.count() != 0))
00125 {
00126 for (uint i = 0; i < dir.count(); ++i)
00127 {
00128 QFileInfo file(path + dir[i]);
00129 if (file.suffix().toLower() == "qm")
00130 {
00131 langAbbrev = file.completeSuffix().remove(".qm");
00132 if ((it=langList.find(langAbbrev))!=langList.end())
00133 installedLangList.insert(it.key(), it.value().second);
00134 }
00135 }
00136 }
00137 }
00138
00139 const QString LanguageManager::getLangFromAbbrev(QString langAbbrev, bool getTranslated)
00140 {
00141 QMap<QString, langPair>::Iterator it;
00142 if ((it=langList.find(langAbbrev))!=langList.end())
00143 {
00144 if (getTranslated)
00145 return it.value().second;
00146 else
00147 return it.value().first;
00148 }
00149 else
00150 return "";
00151 }
00152
00153 const QString LanguageManager::getAbbrevFromLang(QString lang, bool getFromTranslated, bool useInstalled)
00154 {
00155 QMap<QString, langPair>::Iterator it;
00156 if (lang == "English" || lang == QObject::tr( "English"))
00157 useInstalled = false;
00158 if (useInstalled)
00159 {
00160 for (it=langList.begin();it!=langList.end();++it)
00161 {
00162 if (installedLangList.find(it.key()) != installedLangList.end())
00163 {
00164 if (getFromTranslated && it.value().second==lang)
00165 return it.key();
00166 if (!getFromTranslated && it.value().first==lang)
00167 return it.key();
00168 }
00169 }
00170 }
00171 else
00172 {
00173 for (it=langList.begin();it!=langList.end();++it)
00174 {
00175
00176
00177 if (getFromTranslated && it.value().second==lang)
00178 return it.key();
00179 if (!getFromTranslated && it.value().first==lang)
00180 return it.key();
00181
00182 }
00183 }
00184 return "";
00185 }
00186
00187 void LanguageManager::fillInstalledStringList(QStringList *stringListToFill, bool addDefaults)
00188 {
00189 if (stringListToFill)
00190 {
00191 QMap<QString, QString>::Iterator it;
00192
00193 if (addDefaults)
00194 {
00195 stringListToFill->append("");
00196 stringListToFill->append( QObject::tr( "English" ));
00197 }
00198
00199 for (it=installedLangList.begin();it!=installedLangList.end();++it)
00200 stringListToFill->append(it.value());
00201 }
00202 }
00203
00204 void LanguageManager::printInstalledList()
00205 {
00206 QMap<QString, QString>::Iterator it;
00207
00208 for (it=installedLangList.begin();it!=installedLangList.end();++it)
00209 std::cout << it.key().leftJustified(6).toStdString() << ": " << it.value().toStdString() << std::endl;
00210 }
00211
00212 QString LanguageManager::numericSequence(QString seq)
00213 {
00214 QString retSeq;
00215 const int nsBengali=0,nsDevanagari=1,nsGujarati=2,nsGurumukhi=3,nsKannada=4,nsMalayalam=5,nsOriya=6,nsTamil=7,nsTelugu=8,nsTibetan=9,nsLepcha=10;
00216 switch (1)
00217 {
00218 case nsBengali:
00219 retSeq+="";
00220 break;
00221 case nsDevanagari:
00222 retSeq+="०१२३४५६७८९";
00223 break;
00224 case nsGujarati:
00225 retSeq+="૦૧૨૩૪૫૬૭૮૯";
00226 break;
00227 case nsGurumukhi:
00228 retSeq+="੦੧੨੩੪੫੬੭੮੯";
00229 break;
00230 case nsKannada:
00231 retSeq+="";
00232 break;
00233 case nsMalayalam:
00234 retSeq+="";
00235 break;
00236 case nsOriya:
00237 retSeq+="";
00238 break;
00239 case nsTamil:
00240 retSeq+="";
00241 break;
00242 case nsTelugu:
00243 retSeq+="";
00244 break;
00245 case nsTibetan:
00246 retSeq+="";
00247 break;
00248 case nsLepcha:
00249 retSeq+="";
00250 break;
00251 default:
00252 retSeq="0123456789";
00253 break;
00254 }
00255 return retSeq;
00256 }
00257
00258 LanguageManager::~LanguageManager()
00259 {
00260 langList.clear();
00261 installedLangList.clear();
00262 }
00263