Vidalia  0.2.17
LanguageSupport.cpp
Go to the documentation of this file.
00001 /*
00002 **  This file is part of Vidalia, and is subject to the license terms in the
00003 **  LICENSE file, found in the top level directory of this distribution. If you
00004 **  did not receive the LICENSE file with this file, you may obtain it from the
00005 **  Vidalia source package distributed by the Vidalia Project at
00006 **  http://www.torproject.org/projects/vidalia.html. No part of Vidalia, 
00007 **  including this file, may be copied, modified, propagated, or distributed 
00008 **  except according to the terms described in the LICENSE file.
00009 */
00010 
00011 /*
00012 ** \file LanguageSupport.cpp
00013 ** \brief Contains languages supported by Vidalia
00014 */
00015 
00016 #include "LanguageSupport.h"
00017 #include "Vidalia.h"
00018 
00019 #include <QLocale>
00020 
00021 
00022 /** Initializes the list of available languages. */
00023 QMap<QString, QString>
00024 LanguageSupport::languages()
00025 {
00026   static QMap<QString, QString> languages;
00027   if (languages.isEmpty()) {
00028     languages.insert("en",    "English");
00029     languages.insert("ar",
00030       QString::fromUtf8("\330\247\331\204\330\271\330\261\330"
00031                         "\250\331\212\330\251"));
00032     languages.insert("bg",
00033       QString::fromUtf8("\320\221\321\212\320\273\320\263\320"
00034                        "\260\321\200\321\201\320\272\320\270"));
00035     // languages.insert("my",   "Burmese");
00036     languages.insert("cs",    
00037       QString::fromUtf8("\304\215e\305\241tina"));
00038     languages.insert("ca",    "Catalan");
00039     languages.insert("da",    "dansk");
00040     languages.insert("de",    "Deutsch");
00041     languages.insert("es",    
00042       QString::fromUtf8("espa\303\261ol"));
00043     languages.insert("el",    "Greek");
00044     // languages.insert("eo",    "Esperanto");
00045     languages.insert("fa",
00046       QString::fromUtf8("\331\201\330\247\330\261\330\263\333\214"));
00047     languages.insert("fi",    "suomi");
00048     languages.insert("fr",    
00049       QString::fromUtf8("fran\303\247ais"));
00050     languages.insert("he",
00051       QString::fromUtf8("\327\242\327\221\327\250\327\231\327\252"));
00052     languages.insert("hu",    "magyar nyelv");
00053     languages.insert("it",    "Italiano");
00054     languages.insert("id",    "Indonesian");
00055     // languages.insert("ja",
00056     //   QString::fromUtf8("\346\227\245\346\234\254\350\252\236"));
00057     languages.insert("ko",    "Korean");
00058     languages.insert("nb",    
00059       QString::fromUtf8("Bokm\303\245l"));
00060     languages.insert("nl",    "Nederlands");
00061     languages.insert("pl",    "Polski");
00062     languages.insert("pt",    
00063       QString::fromUtf8("Portugu\303\252s"));
00064     languages.insert("pt_BR",    
00065       QString::fromUtf8("Portugu\303\252s brasileiro"));
00066     languages.insert("ro",
00067       QString::fromUtf8("rom\303\242n\304\203"));
00068     languages.insert("ru",
00069       QString::fromUtf8("\320\240\321\203\321\201\321\201\320\272\320\270\320\271"));
00070     // languages.insert("sq",    "Shqip");
00071     languages.insert("sv",    "svenska");
00072     // languages.insert("sk",    "Slovak");
00073     // languages.insert("sr",    "Servian");
00074     // languages.insert("th",    "Thai");
00075     languages.insert("tr",    QString::fromUtf8("T\303\274rk\303\247e"));
00076     // languages.insert("vi",
00077     //   QString::fromUtf8("ti\341\272\277ng Vi\341\273\207t"));
00078     languages.insert("zh_CN", 
00079       QString::fromUtf8("\347\256\200\344\275\223\345\255\227"));
00080     // languages.insert("zh_TW", 
00081     //   QString::fromUtf8("\347\260\241\351\253\224\345\255\227"));
00082   }
00083   return languages;
00084 }
00085 
00086 /** Returns the default language code for the system locale. */
00087 QString
00088 LanguageSupport::defaultLanguageCode()
00089 {
00090   QString language = QLocale::system().name();
00091 
00092   if (language != "zh_CN" && language != "zh_TW")
00093     language = language.mid(0, language.indexOf("_"));
00094   if (!isValidLanguageCode(language))
00095     language = "en";
00096   
00097   return language;
00098 }
00099 
00100 /** Returns the language code for a given language name. */
00101 QString
00102 LanguageSupport::languageCode(const QString &languageName)
00103 {
00104   return languages().key(languageName);
00105 }
00106 
00107 /** Returns a list of all supported language codes. (e.g., "en"). */
00108 QStringList
00109 LanguageSupport::languageCodes()
00110 {
00111   return languages().keys();
00112 }
00113 
00114 /** Returns the language name for a given language code. */
00115 QString
00116 LanguageSupport::languageName(const QString &languageCode)
00117 {
00118   return languages().value(languageCode);
00119 }
00120 
00121 /** Returns a list of all supported language names (e.g., "English"). */
00122 QStringList
00123 LanguageSupport::languageNames()
00124 {
00125   return languages().values();
00126 }
00127 
00128 /** Returns true if we understand the given language code. */
00129 bool
00130 LanguageSupport::isValidLanguageCode(const QString &languageCode)
00131 {
00132   return languageCodes().contains(languageCode);
00133 }
00134