00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <QTranslator>
00029 #include <QLocale>
00030 #include <vidalia.h>
00031
00032 #include "languagesupport.h"
00033
00034
00035
00036 QMap<QString, QString>
00037 LanguageSupport::languages()
00038 {
00039 static QMap<QString, QString> languages;
00040 if (languages.isEmpty()) {
00041 languages.insert("en", "English");
00042 languages.insert("bg",
00043 QString::fromUtf8("\320\221\321\212\320\273\320\263\320"
00044 "\260\321\200\321\201\320\272\320\270"));
00045 languages.insert("cs",
00046 QString::fromUtf8("\304\215esky"));
00047 languages.insert("de", "Deutsch");
00048 languages.insert("es",
00049 QString::fromUtf8("espa\303\261ol"));
00050 languages.insert("fa",
00051 QString::fromUtf8("\331\201\330\247\330\261\330\263\333\214"));
00052 languages.insert("fi", "suomi");
00053 languages.insert("fr",
00054 QString::fromUtf8("fran\303\247ais"));
00055 languages.insert("hu", "magyar nyelv");
00056 languages.insert("it", "Italiano");
00057 languages.insert("nb",
00058 QString::fromUtf8("Bokm\303\245l"));
00059 languages.insert("nl", "Nederlands");
00060 languages.insert("pl", "Polski");
00061 languages.insert("pt",
00062 QString::fromUtf8("Portugu\303\252s"));
00063 languages.insert("ru",
00064 QString::fromUtf8("\320\240\321\203\321\201\321\201\320\272\320\270\320\271"));
00065 languages.insert("sv", "svenska");
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 localeName = QLocale::system().name();
00079 QString language = localeName.mid(0, localeName.indexOf("_"));
00080 if (language == "zh") {
00081 language += "-" + localeName.mid(localeName.indexOf("_")+1).toLower();
00082 }
00083 if (!isValidLanguageCode(language)) {
00084 language = "en";
00085 }
00086 return language;
00087 }
00088
00089
00090 QString
00091 LanguageSupport::languageCode(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(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(QString code)
00120 {
00121 return languageCodes().contains(code.toLower());
00122 }
00123
00124
00125 bool
00126 LanguageSupport::translate(QString langCode)
00127 {
00128 if (isValidLanguageCode(langCode)) {
00129 QTranslator *translator = new QTranslator();
00130 langCode = langCode.toLower();
00131 if (translator->load(QString(":/lang/") + langCode)) {
00132 QApplication::installTranslator(translator);
00133 if (langCode == "fa") {
00134 vApp->setLayoutDirection(Qt::RightToLeft);
00135 }
00136 return true;
00137 }
00138 delete translator;
00139 }
00140 return false;
00141 }
00142