languagesupport.cpp

Go to the documentation of this file.
00001 /****************************************************************
00002  *  Vidalia is distributed under the following license:
00003  *
00004  *  Copyright (C) 2006,  Matt Edman, Justin Hipple
00005  *
00006  *  This program is free software; you can redistribute it and/or
00007  *  modify it under the terms of the GNU General Public License
00008  *  as published by the Free Software Foundation; either version 2
00009  *  of the License, or (at your option) any later version.
00010  *
00011  *  This program is distributed in the hope that it will be useful,
00012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  *  GNU General Public License for more details.
00015  *
00016  *  You should have received a copy of the GNU General Public License
00017  *  along with this program; if not, write to the Free Software
00018  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, 
00019  *  Boston, MA  02110-1301, USA.
00020  ****************************************************************/
00021 
00022 /** 
00023  * \file languagesupport.cpp
00024  * \version $Id: languagesupport.cpp 1238 2006-09-25 17:50:57Z edmanm $
00025  * \brief Contains languages supported by Vidalia
00026  */
00027 
00028 #include <QTranslator>
00029 #include <QLocale>
00030 
00031 #include "languagesupport.h"
00032 
00033 
00034 /** Initializes the list of available languages. */
00035 QMap<QString, QString>
00036 LanguageSupport::languages()
00037 {
00038   static QMap<QString, QString> languages;
00039   if (languages.isEmpty()) {
00040     languages.insert("en",    "English");
00041     languages.insert("bg",
00042       QString::fromUtf8("\320\221\321\212\320\273\320\263\320"
00043                         "\260\321\200\321\201\320\272\320\270"));
00044     languages.insert("de",    "Deutsch");
00045     languages.insert("fi",    "suomi");
00046     languages.insert("fr",    
00047       QString::fromUtf8("fran\303\247ais"));
00048     languages.insert("hu",    "magyar nyelv");
00049     languages.insert("it",    "Italiano");
00050     languages.insert("nl",    "Nederlands");
00051     languages.insert("pl",    "Polski");
00052     languages.insert("ru",
00053       QString::fromUtf8("\320\240\321\203\321\201\321\201\320\272\320\270\320\271"));
00054     languages.insert("zh-cn", 
00055       QString::fromUtf8("\347\256\200\344\275\223\345\255\227"));
00056   }
00057   return languages;
00058 }
00059 
00060 /** Returns the default language code for the system locale. */
00061 QString
00062 LanguageSupport::defaultLanguageCode()
00063 {
00064   QString localeName = QLocale::system().name();
00065   QString language   = localeName.mid(0, localeName.indexOf("_"));
00066   if (language == "zh") {
00067     language += "-" + localeName.mid(localeName.indexOf("_")+1).toLower();
00068   }
00069   if (!isValidLanguageCode(language)) {
00070     language = "en";
00071   }
00072   return language;
00073 }
00074 
00075 /** Returns the language code for a given language name. */
00076 QString
00077 LanguageSupport::languageCode(QString languageName)
00078 {
00079   return languages().key(languageName);
00080 }
00081 
00082 /** Returns a list of all supported language codes. (e.g., "en"). */
00083 QStringList
00084 LanguageSupport::languageCodes()
00085 {
00086   return languages().keys();
00087 }
00088 
00089 /** Returns the language name for a given language code. */
00090 QString
00091 LanguageSupport::languageName(QString languageCode)
00092 {
00093   return languages().value(languageCode);
00094 }
00095 
00096 /** Returns a list of all supported language names (e.g., "English"). */
00097 QStringList
00098 LanguageSupport::languageNames()
00099 {
00100   return languages().values();
00101 }
00102 
00103 /** Returns true if we understand the given language code. */
00104 bool
00105 LanguageSupport::isValidLanguageCode(QString code)
00106 {
00107   return languageCodes().contains(code.toLower());
00108 }
00109 
00110 /** Sets the application's translator to the specified language. */
00111 bool
00112 LanguageSupport::translate(QString langCode)
00113 {
00114   if (isValidLanguageCode(langCode)) {
00115     QTranslator *translator = new QTranslator();
00116     if (translator->load(QString(":/lang/") + langCode.toLower())) {
00117       QApplication::installTranslator(translator);
00118       return true;
00119     }
00120     delete translator;
00121   }
00122   return false;
00123 }
00124 

Generated on Mon Oct 23 20:08:16 2006 for Vidalia by  doxygen 1.5.0