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 1835 2007-08-20 01:29:21Z edmanm $
00025  * \brief Contains languages supported by Vidalia
00026  */
00027 
00028 #include <QTranslator>
00029 #include <QLocale>
00030 #include <vidalia.h>
00031 
00032 #include "languagesupport.h"
00033 
00034 
00035 /** Initializes the list of available languages. */
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 /** Returns the default language code for the system locale. */
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 /** Returns the language code for a given language name. */
00090 QString
00091 LanguageSupport::languageCode(QString languageName)
00092 {
00093   return languages().key(languageName);
00094 }
00095 
00096 /** Returns a list of all supported language codes. (e.g., "en"). */
00097 QStringList
00098 LanguageSupport::languageCodes()
00099 {
00100   return languages().keys();
00101 }
00102 
00103 /** Returns the language name for a given language code. */
00104 QString
00105 LanguageSupport::languageName(QString languageCode)
00106 {
00107   return languages().value(languageCode);
00108 }
00109 
00110 /** Returns a list of all supported language names (e.g., "English"). */
00111 QStringList
00112 LanguageSupport::languageNames()
00113 {
00114   return languages().values();
00115 }
00116 
00117 /** Returns true if we understand the given language code. */
00118 bool
00119 LanguageSupport::isValidLanguageCode(QString code)
00120 {
00121   return languageCodes().contains(code.toLower());
00122 }
00123 
00124 /** Sets the application's translator to the specified language. */
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 

Generated on Wed Sep 5 15:49:27 2007 for Vidalia by  doxygen 1.5.3