languagesupport.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include <QTranslator>
00018 #include <QLocale>
00019 #include <QLibraryInfo>
00020 #include <vidalia.h>
00021
00022 #include "languagesupport.h"
00023
00024
00025
00026 QMap<QString, QString>
00027 LanguageSupport::languages()
00028 {
00029 static QMap<QString, QString> languages;
00030 if (languages.isEmpty()) {
00031 languages.insert("en", "English");
00032 languages.insert("ar",
00033 QString::fromUtf8("\330\247\331\204\330\271\330\261\330"
00034 "\250\331\212\330\251"));
00035
00036
00037
00038
00039
00040 languages.insert("de", "Deutsch");
00041 languages.insert("es",
00042 QString::fromUtf8("espa\303\261ol"));
00043 languages.insert("fa",
00044 QString::fromUtf8("\331\201\330\247\330\261\330\263\333\214"));
00045 languages.insert("fi", "suomi");
00046 languages.insert("fr",
00047 QString::fromUtf8("fran\303\247ais"));
00048 languages.insert("he",
00049 QString::fromUtf8("\327\242\327\221\327\250\327\231\327\252"));
00050 languages.insert("hu", "magyar nyelv");
00051 languages.insert("it", "Italiano");
00052
00053
00054
00055
00056
00057 languages.insert("pl", "Polski");
00058
00059
00060 languages.insert("ro",
00061 QString::fromUtf8("rom\303\242n\304\203"));
00062 languages.insert("ru",
00063 QString::fromUtf8("\320\240\321\203\321\201\321\201\320\272\320\270\320\271"));
00064
00065 languages.insert("sv", "svenska");
00066 languages.insert("tr", QString::fromUtf8("T\303\274rk\303\247e"));
00067 languages.insert("zh_CN",
00068 QString::fromUtf8("\347\256\200\344\275\223\345\255\227"));
00069 languages.insert("zh_TW",
00070 QString::fromUtf8("\347\260\241\351\253\224\345\255\227"));
00071 }
00072 return languages;
00073 }
00074
00075
00076 QString
00077 LanguageSupport::defaultLanguageCode()
00078 {
00079 QString language = QLocale::system().name();
00080
00081 if (language != "zh_CN" && language != "zh_TW")
00082 language = language.mid(0, language.indexOf("_"));
00083 if (!isValidLanguageCode(language))
00084 language = "en";
00085
00086 return language;
00087 }
00088
00089
00090 QString
00091 LanguageSupport::languageCode(const QString &languageName)
00092 {
00093 return languages().key(languageName);
00094 }
00095
00096
00097 QStringList
00098 LanguageSupport::languageCodes()
00099 {
00100 return languages().keys();
00101 }
00102
00103
00104 QString
00105 LanguageSupport::languageName(const QString &languageCode)
00106 {
00107 return languages().value(languageCode);
00108 }
00109
00110
00111 QStringList
00112 LanguageSupport::languageNames()
00113 {
00114 return languages().values();
00115 }
00116
00117
00118 bool
00119 LanguageSupport::isValidLanguageCode(const QString &languageCode)
00120 {
00121 return languageCodes().contains(languageCode);
00122 }
00123
00124
00125 bool
00126 LanguageSupport::translate(const QString &languageCode)
00127 {
00128 if (!isValidLanguageCode(languageCode))
00129 return false;
00130 if (languageCode == "en")
00131 return true;
00132
00133
00134
00135 QTranslator *systemQtTranslator = new QTranslator(vApp);
00136 Q_CHECK_PTR(systemQtTranslator);
00137
00138 QString qtDir = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
00139 if (systemQtTranslator->load(qtDir + "/qt_" + languageCode + ".qm"))
00140 QApplication::installTranslator(systemQtTranslator);
00141 else
00142 delete systemQtTranslator;
00143
00144
00145
00146 QTranslator *qtTranslator = new QTranslator(vApp);
00147 Q_CHECK_PTR(qtTranslator);
00148
00149 if (qtTranslator->load(":/lang/qt_" + languageCode + ".qm"))
00150 QApplication::installTranslator(qtTranslator);
00151 else
00152 delete qtTranslator;
00153
00154
00155 QTranslator *vidaliaTranslator = new QTranslator(vApp);
00156 Q_CHECK_PTR(vidaliaTranslator);
00157
00158 if (vidaliaTranslator->load(":/lang/vidalia_" + languageCode + ".qm")) {
00159 QApplication::installTranslator(vidaliaTranslator);
00160 return true;
00161 }
00162 delete vidaliaTranslator;
00163 return false;
00164 }