Vidalia  0.2.21
LanguageSupport.cpp
Go to the documentation of this file.
1 /*
2 ** This file is part of Vidalia, and is subject to the license terms in the
3 ** LICENSE file, found in the top level directory of this distribution. If you
4 ** did not receive the LICENSE file with this file, you may obtain it from the
5 ** Vidalia source package distributed by the Vidalia Project at
6 ** http://www.torproject.org/projects/vidalia.html. No part of Vidalia,
7 ** including this file, may be copied, modified, propagated, or distributed
8 ** except according to the terms described in the LICENSE file.
9 */
10 
11 /*
12 ** \file LanguageSupport.cpp
13 ** \brief Contains languages supported by Vidalia
14 */
15 
16 #include "LanguageSupport.h"
17 #include "Vidalia.h"
18 
19 #include <QLocale>
20 
21 
22 /** Initializes the list of available languages. */
23 QMap<QString, QString>
25 {
26  static QMap<QString, QString> languages;
27  if (languages.isEmpty()) {
28  languages.insert("en", "English");
29  languages.insert("ar",
30  QString::fromUtf8("\330\247\331\204\330\271\330\261\330"
31  "\250\331\212\330\251"));
32  languages.insert("bg",
33  QString::fromUtf8("\320\221\321\212\320\273\320\263\320"
34  "\260\321\200\321\201\320\272\320\270"));
35  languages.insert("my", "Burmese");
36  languages.insert("cs",
37  QString::fromUtf8("\304\215e\305\241tina"));
38  languages.insert("ca",
39  QString::fromUtf8("catal\303\240"));
40  languages.insert("da", "dansk");
41  languages.insert("de", "Deutsch");
42  languages.insert("es",
43  QString::fromUtf8("espa\303\261ol"));
44  languages.insert("el",
45  QString::fromUtf8("\316\225\316\273\316\273\316\267\316\275\316\271\316\272\316\254"));
46  languages.insert("eu", "Basque");
47  // languages.insert("eo", "Esperanto");
48  languages.insert("fa",
49  QString::fromUtf8("\331\201\330\247\330\261\330\263\333\214"));
50  languages.insert("fi", "suomi");
51  languages.insert("fr",
52  QString::fromUtf8("fran\303\247ais"));
53  languages.insert("he",
54  QString::fromUtf8("\327\242\327\221\327\250\327\231\327\252"));
55  languages.insert("hu", "magyar nyelv");
56  languages.insert("hr_HR", "Croatian");
57  languages.insert("it", "Italiano");
58  languages.insert("id", "Indonesian");
59  // languages.insert("ja",
60  // QString::fromUtf8("\346\227\245\346\234\254\350\252\236"));
61  languages.insert("ko",
62  QString::fromUtf8("\355\225\234\352\265\255\354\226\264"));
63  languages.insert("nb",
64  QString::fromUtf8("Bokm\303\245l"));
65  languages.insert("nl", "Nederlands");
66  languages.insert("pl", "Polski");
67  languages.insert("pt",
68  QString::fromUtf8("Portugu\303\252s"));
69  languages.insert("pt_BR",
70  QString::fromUtf8("Portugu\303\252s brasileiro"));
71  languages.insert("ro",
72  QString::fromUtf8("rom\303\242n\304\203"));
73  languages.insert("ru",
74  QString::fromUtf8("\320\240\321\203\321\201\321\201\320\272\320\270\320\271"));
75  // languages.insert("sq", "Shqip");
76  languages.insert("sv", "svenska");
77  // languages.insert("sk", "Slovak");
78  languages.insert("sr", "Serbian");
79  // languages.insert("th", "Thai");
80  languages.insert("tr", QString::fromUtf8("T\303\274rk\303\247e"));
81  // languages.insert("vi",
82  // QString::fromUtf8("ti\341\272\277ng Vi\341\273\207t"));
83  languages.insert("zh_CN",
84  QString::fromUtf8("\347\256\200\344\275\223\345\255\227"));
85  // languages.insert("zh_TW",
86  // QString::fromUtf8("\347\260\241\351\253\224\345\255\227"));
87  }
88  return languages;
89 }
90 
91 /** Returns the default language code for the system locale. */
92 QString
94 {
95  QString language = QLocale::system().name();
96 
97  if (language != "zh_CN" && language != "zh_TW")
98  language = language.mid(0, language.indexOf("_"));
99  if (!isValidLanguageCode(language))
100  language = "en";
101 
102  return language;
103 }
104 
105 /** Returns the language code for a given language name. */
106 QString
107 LanguageSupport::languageCode(const QString &languageName)
108 {
109  return languages().key(languageName);
110 }
111 
112 /** Returns a list of all supported language codes. (e.g., "en"). */
113 QStringList
115 {
116  return languages().keys();
117 }
118 
119 /** Returns the language name for a given language code. */
120 QString
121 LanguageSupport::languageName(const QString &languageCode)
122 {
123  return languages().value(languageCode);
124 }
125 
126 /** Returns a list of all supported language names (e.g., "English"). */
127 QStringList
129 {
130  return languages().values();
131 }
132 
133 /** Returns true if we understand the given language code. */
134 bool
135 LanguageSupport::isValidLanguageCode(const QString &languageCode)
136 {
137  return languageCodes().contains(languageCode);
138 }
139