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 <vidalia.h>
00020
00021 #include "languagesupport.h"
00022
00023
00024
00025 QMap<QString, QString>
00026 LanguageSupport::languages()
00027 {
00028 static QMap<QString, QString> languages;
00029 if (languages.isEmpty()) {
00030 languages.insert("en", "English");
00031 languages.insert("ar",
00032 QString::fromUtf8("\330\247\331\204\330\271\330\261\330"
00033 "\250\331\212\330\251"));
00034 languages.insert("bg",
00035 QString::fromUtf8("\320\221\321\212\320\273\320\263\320"
00036 "\260\321\200\321\201\320\272\320\270"));
00037 languages.insert("cs",
00038 QString::fromUtf8("\304\215e\305\241tina"));
00039 languages.insert("de", "Deutsch");
00040 languages.insert("es",
00041 QString::fromUtf8("espa\303\261ol"));
00042 languages.insert("fa",
00043 QString::fromUtf8("\331\201\330\247\330\261\330\263\333\214"));
00044 languages.insert("fi", "suomi");
00045 languages.insert("fr",
00046 QString::fromUtf8("fran\303\247ais"));
00047 languages.insert("he",
00048 QString::fromUtf8("\327\242\327\221\327\250\327\231\327\252"));
00049 languages.insert("hu", "magyar nyelv");
00050 languages.insert("it", "Italiano");
00051 languages.insert("ja",
00052 QString::fromUtf8("\346\227\245\346\234\254\350\252\236"));
00053 languages.insert("nb",
00054 QString::fromUtf8("Bokm\303\245l"));
00055 languages.insert("nl", "Nederlands");
00056 languages.insert("pl", "Polski");
00057 languages.insert("pt",
00058 QString::fromUtf8("Portugu\303\252s"));
00059 languages.insert("ro",
00060 QString::fromUtf8("rom\303\242n\304\203"));
00061 languages.insert("ru",
00062 QString::fromUtf8("\320\240\321\203\321\201\321\201\320\272\320\270\320\271"));
00063 languages.insert("sq", "Shqip");
00064 languages.insert("sv", "svenska");
00065 languages.insert("tr", QString::fromUtf8("T\303\274rk\303\247e"));
00066 languages.insert("zh_CN",
00067 QString::fromUtf8("\347\256\200\344\275\223\345\255\227"));
00068 languages.insert("zh_TW",
00069 QString::fromUtf8("\347\260\241\351\253\224\345\255\227"));
00070 }
00071 return languages;
00072 }
00073
00074
00075 QString
00076 LanguageSupport::defaultLanguageCode()
00077 {
00078 QString language = QLocale::system().name();
00079
00080 if (language != "zh_CN" && language != "zh_TW")
00081 language = language.mid(0, language.indexOf("_"));
00082 if (!isValidLanguageCode(language))
00083 language = "en";
00084
00085 return language;
00086 }
00087
00088
00089 QString
00090 LanguageSupport::languageCode(const QString &languageName)
00091 {
00092 return languages().key(languageName);
00093 }
00094
00095
00096 QStringList
00097 LanguageSupport::languageCodes()
00098 {
00099 return languages().keys();
00100 }
00101
00102
00103 QString
00104 LanguageSupport::languageName(const QString &languageCode)
00105 {
00106 return languages().value(languageCode);
00107 }
00108
00109
00110 QStringList
00111 LanguageSupport::languageNames()
00112 {
00113 return languages().values();
00114 }
00115
00116
00117 bool
00118 LanguageSupport::isValidLanguageCode(const QString &languageCode)
00119 {
00120 return languageCodes().contains(languageCode);
00121 }
00122
00123
00124 bool
00125 LanguageSupport::isRightToLeft(const QString &languageCode)
00126 {
00127 return (!languageCode.compare("ar", Qt::CaseInsensitive)
00128 || !languageCode.compare("fa", Qt::CaseInsensitive)
00129 || !languageCode.compare("he", Qt::CaseInsensitive));
00130 }
00131
00132
00133 bool
00134 LanguageSupport::translate(const QString &languageCode)
00135 {
00136 if (!isValidLanguageCode(languageCode))
00137 return false;
00138 if (languageCode == "en")
00139 return true;
00140
00141 QTranslator *translator = new QTranslator(vApp);
00142 if (translator->load(QString(":/lang/vidalia_%1.qm").arg(languageCode))) {
00143 QApplication::installTranslator(translator);
00144 if (isRightToLeft(languageCode))
00145 vApp->setLayoutDirection(Qt::RightToLeft);
00146 return true;
00147 }
00148 delete translator;
00149 return false;
00150 }
00151