Subversion Repositories Scribus

Rev

Rev 22063 | Rev 22164 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4430 cbradney 1
/*
2
For general Scribus (>=1.3.2) copyright and licensing information please refer
3
to the COPYING file provided with the program. Following this notice may exist
4
a copyright and/or license notice that predates the release of Scribus 1.3.2
5
for which a new license (GPL+exception) is in place.
6
*/
1525 cbradney 7
/***************************************************************************
8
    begin                : Jan 2005
9
    copyright            : (C) 2005 by Craig Bradney
10
    email                : cbradney@zip.com.au
11
 ***************************************************************************/
12
 
13
/***************************************************************************
14
 *                                                                         *
15
 *   This program is free software; you can redistribute it and/or modify  *
16
 *   it under the terms of the GNU General Public License as published by  *
17
 *   the Free Software Foundation; either version 2 of the License, or     *
18
 *   (at your option) any later version.                                   *
19
 *                                                                         *
20
 ***************************************************************************/
21
 
663 cbradney 22
#include <iostream>
17501 craig 23
#include <QDebug>
10223 cbradney 24
#include <QDir>
20259 craig 25
#include <QFile>
10223 cbradney 26
#include <QFileInfo>
27
#include <QMap>
28
#include <QObject>
29
#include <QStringList> 
20259 craig 30
#include <QTextStream>
663 cbradney 31
 
2688 craig 32
#include "scconfig.h"
663 cbradney 33
#include "langmgr.h"
1693 craig 34
#include "scpaths.h"
663 cbradney 35
 
12787 pierre 36
LanguageManager * LanguageManager::m_instance = 0;
18650 jghali 37
 
12787 pierre 38
LanguageManager * LanguageManager::instance()
39
{
40
        if(!m_instance)
41
        {
42
                m_instance = new LanguageManager;
43
                Q_ASSERT(m_instance);
44
                m_instance->init();
45
        }
46
        return m_instance;
47
}
48
 
18650 jghali 49
void LanguageManager::deleteInstance()
50
{
51
        if (m_instance)
52
                delete m_instance;
53
        m_instance = 0;
54
}
55
 
17798 craig 56
void LanguageManager::languageChange()
57
{
20653 craig 58
        QList<LangDef> oldLangList = m_langTable;
17801 craig 59
        generateLangList();
17858 jghali 60
 
20653 craig 61
        for (int i = 0; i < m_langTable.count(); ++i)
17858 jghali 62
        {
20653 craig 63
                m_langTable[i].m_hyphAvailable = oldLangList[i].m_hyphAvailable;
64
                m_langTable[i].m_hyphFile = oldLangList[i].m_hyphFile;
17858 jghali 65
 
20653 craig 66
                m_langTable[i].m_spellAvailable = oldLangList[i].m_spellAvailable;
67
                m_langTable[i].m_spellFile = oldLangList[i].m_spellFile;
17858 jghali 68
 
20653 craig 69
                m_langTable[i].m_transAvailable = oldLangList[i].m_transAvailable;
70
                m_langTable[i].m_transFile = oldLangList[i].m_transFile;
17858 jghali 71
        }
17798 craig 72
}
73
 
2010 cbradney 74
void LanguageManager::init(bool generateInstalledList)
663 cbradney 75
{
3776 cbradney 76
        //generateUntranslatedLangList();
663 cbradney 77
        generateLangList();
2010 cbradney 78
        if (generateInstalledList)
17798 craig 79
        {
80
                generateInstalledGUILangList();
81
                generateInstalledSpellLangList();
82
                generateInstalledHyphLangList();
83
        }
663 cbradney 84
}
85
 
86
void LanguageManager::generateLangList()
87
{
12787 pierre 88
        // So internally language would always be manipulated as a code and otherwise presented translated.
17798 craig 89
        //Build table;
20653 craig 90
        m_langTable.clear();
21909 craig 91
        // Please keep this list sorted by language name.
92
        m_langTable.append(LangDef("aiw",      "",         "Aari",                    QObject::tr("Aari")));
93
        m_langTable.append(LangDef("abq",      "",         "Abaza",                   QObject::tr("Abaza")));
21908 craig 94
        m_langTable.append(LangDef("ab",       "",         "Abkhazian",               QObject::tr("Abkhazian")));
21294 craig 95
        m_langTable.append(LangDef("ach",      "",         "Acoli",                   QObject::tr("Acoli")));
96
        m_langTable.append(LangDef("ady",      "",         "Adyghe",                  QObject::tr("Adyghe")));
97
        m_langTable.append(LangDef("af",       "af_ZA",    "Afrikaans",               QObject::tr("Afrikaans")));
21909 craig 98
        m_langTable.append(LangDef("aa",       "",         "Afar",                    QObject::tr("Afar")));
21294 craig 99
        m_langTable.append(LangDef("aio",      "",         "Aiton",                   QObject::tr("Aiton")));
100
        m_langTable.append(LangDef("ak",       "",         "Akan",                    QObject::tr("Akan")));
21909 craig 101
        m_langTable.append(LangDef("sq",       "",         "Albanian",                QObject::tr("Albanian")));
102
        m_langTable.append(LangDef("atv",      "alt",      "Altai",                   QObject::tr("Altai")));
21294 craig 103
        m_langTable.append(LangDef("am",       "",         "Amharic",                 QObject::tr("Amharic")));
21909 craig 104
        m_langTable.append(LangDef("blo",      "",         "Anii",                    QObject::tr("Anii")));
21294 craig 105
        m_langTable.append(LangDef("ar",       "",         "Arabic",                  QObject::tr("Arabic")));
21909 craig 106
        m_langTable.append(LangDef("ar_dz",    "",         "Arabic (Algeria)",        QObject::tr("Arabic (Algeria)")));
21908 craig 107
        m_langTable.append(LangDef("ar_bh",    "",         "Arabic (Bahrain)",        QObject::tr("Arabic (Bahrain)")));
108
        m_langTable.append(LangDef("ar_eg",    "",         "Arabic (Egypt)",          QObject::tr("Arabic (Egypt)")));
109
        m_langTable.append(LangDef("ar_iq",    "",         "Arabic (Iraq)",           QObject::tr("Arabic (Iraq)")));
21910 craig 110
        m_langTable.append(LangDef("ar_jo",    "",         "Arabic (Jordan)",         QObject::tr("Arabic (Jordan)")));
21908 craig 111
        m_langTable.append(LangDef("ar_kw",    "",         "Arabic (Kuwait)",         QObject::tr("Arabic (Kuwait)")));
112
        m_langTable.append(LangDef("ar_lb",    "",         "Arabic (Lebanon)",        QObject::tr("Arabic (Lebanon)")));
113
        m_langTable.append(LangDef("ar_ly",    "",         "Arabic (Libya)",          QObject::tr("Arabic (Libya)")));
114
        m_langTable.append(LangDef("ar_ma",    "",         "Arabic (Morocco)",        QObject::tr("Arabic (Morocco)")));
115
        m_langTable.append(LangDef("ar_om",    "",         "Arabic (Oman)",           QObject::tr("Arabic (Oman)")));
116
        m_langTable.append(LangDef("ar_qa",    "",         "Arabic (Qatar)",          QObject::tr("Arabic (Qatar)")));
117
        m_langTable.append(LangDef("ar_sa",    "",         "Arabic (Saudi Arabia)",   QObject::tr("Arabic (Saudi Arabia)")));
118
        m_langTable.append(LangDef("ar_sd",    "",         "Arabic (Sudan)",          QObject::tr("Arabic (Sudan)")));
119
        m_langTable.append(LangDef("ar_sy",    "",         "Arabic (Syria)",          QObject::tr("Arabic (Syria)")));
120
        m_langTable.append(LangDef("ar_tn",    "",         "Arabic (Tunisia)",        QObject::tr("Arabic (Tunisia)")));
21909 craig 121
        m_langTable.append(LangDef("ar_ae",    "",         "Arabic (UAE)",            QObject::tr("Arabic (UAE)")));
21908 craig 122
        m_langTable.append(LangDef("ar_ye",    "",         "Arabic (Yemen)",          QObject::tr("Arabic (Yemen)")));
21909 craig 123
        m_langTable.append(LangDef("an",       "an_ES",    "Aragonese",               QObject::tr("Aragonese")));
124
        m_langTable.append(LangDef("hy",       "",         "Armenian",                QObject::tr("Armenian")));
125
        m_langTable.append(LangDef("rup",      "",         "Aromanian",               QObject::tr("Aromanian")));
21294 craig 126
        m_langTable.append(LangDef("as",       "",         "Assamese",                QObject::tr("Assamese")));
127
        m_langTable.append(LangDef("ast",      "",         "Asturian",                QObject::tr("Asturian")));
128
        m_langTable.append(LangDef("ath",      "",         "Athapaskan",              QObject::tr("Athapaskan")));
129
        m_langTable.append(LangDef("av",       "",         "Avaric",                  QObject::tr("Avaric")));
130
        m_langTable.append(LangDef("awa",      "",         "Awadhi",                  QObject::tr("Awadhi")));
131
        m_langTable.append(LangDef("ay",       "",         "Aymara",                  QObject::tr("Aymara")));
132
        m_langTable.append(LangDef("az",       "aze",      "Azerbaijani",             QObject::tr("Azerbaijani")));
21909 craig 133
        m_langTable.append(LangDef("azj",      "",         "Azerbaijani (North)",     QObject::tr("Azerbaijani (North)")));
21908 craig 134
        m_langTable.append(LangDef("azb",      "",         "Azerbaijani (South)",     QObject::tr("Azerbaijani (South)")));
21909 craig 135
        m_langTable.append(LangDef("bfq",      "",         "Badaga",                  QObject::tr("Badaga")));
136
        m_langTable.append(LangDef("bfy",      "",         "Baghelkhandi",            QObject::tr("Baghelkhandi")));
137
        m_langTable.append(LangDef("bgq",      "",         "Bagri",                   QObject::tr("Bagri")));
138
        m_langTable.append(LangDef("bqi",      "",         "Bakhtiari",               QObject::tr("Bakhtiari")));
139
        m_langTable.append(LangDef("krc",      "",         "Balkar",                  QObject::tr("Balkar")));
140
        m_langTable.append(LangDef("bjt",      "",         "Balanta-Ganja",           QObject::tr("Balanta-Ganja")));
141
        m_langTable.append(LangDef("ble",      "",         "Balanta-Kentohe",         QObject::tr("Balanta-Kentohe")));
142
        m_langTable.append(LangDef("ban",      "",         "Balinese",                QObject::tr("Balinese")));
143
        m_langTable.append(LangDef("bal",      "",         "Baluchi",                 QObject::tr("Baluchi")));
144
        m_langTable.append(LangDef("bft",      "",         "Balti",                   QObject::tr("Balti")));
145
        m_langTable.append(LangDef("bm",       "",         "Bambara",                 QObject::tr("Bambara")));
146
        m_langTable.append(LangDef("bai",      "",         "Bamileke",                QObject::tr("Bamileke")));
147
        m_langTable.append(LangDef("bad",      "",         "Banda",                   QObject::tr("Banda")));
21908 craig 148
        m_langTable.append(LangDef("ba",       "",         "Bashkir",                 QObject::tr("Bashkir")));
21909 craig 149
        m_langTable.append(LangDef("eu",       "",         "Basque",                  QObject::tr("Basque")));
150
        m_langTable.append(LangDef("bts",      "",         "Batak Simalungun",        QObject::tr("Batak Simalungun")));
21294 craig 151
        m_langTable.append(LangDef("bbc",      "",         "Batak Toba",              QObject::tr("Batak Toba")));
152
        m_langTable.append(LangDef("bci",      "",         "Baulé",                   QObject::trUtf8("Baul\303\251")));
21909 craig 153
        m_langTable.append(LangDef("bar",      "",         "Bavarian",                QObject::tr("Bavarian")));
21294 craig 154
        m_langTable.append(LangDef("bcq",      "",         "Bench",                   QObject::tr("Bench")));
155
        m_langTable.append(LangDef("bdy",      "",         "Bandjalang",              QObject::tr("Bandjalang")));
21909 craig 156
        m_langTable.append(LangDef("bem",      "",         "Bemba",                   QObject::tr("Bemba")));
21908 craig 157
        m_langTable.append(LangDef("be_BY",    "",         "Belarusian",              QObject::tr("Belarusian")));
21909 craig 158
        m_langTable.append(LangDef("bn",       "",         "Bengali",                 QObject::tr("Bengali")));
159
        m_langTable.append(LangDef("bn_BD",    "",         "Bengali (Bangladesh)",    QObject::tr("Bengali (Bangladesh)")));
21294 craig 160
        m_langTable.append(LangDef("ber",      "",         "Berber",                  QObject::tr("Berber")));
21909 craig 161
        m_langTable.append(LangDef("btb",      "",         "Beti (Cameroon)",         QObject::tr("Beti (Cameroon)")));
162
        m_langTable.append(LangDef("eot",      "",         "Beti (Côte d'Ivoire)",    QObject::trUtf8("Beti (C\303\264te d'Ivoire)")));
21294 craig 163
        m_langTable.append(LangDef("bhb",      "",         "Bhili",                   QObject::tr("Bhili")));
164
        m_langTable.append(LangDef("bho",      "",         "Bhojpuri",                QObject::tr("Bhojpuri")));
165
        m_langTable.append(LangDef("bik",      "",         "Bikol",                   QObject::tr("Bikol")));
21909 craig 166
        m_langTable.append(LangDef("bcl",      "",         "Bikol (Central)",         QObject::tr("Bikol (Central)")));
167
        m_langTable.append(LangDef("byn",      "",         "Bilen",                   QObject::tr("Bilen")));
21294 craig 168
        m_langTable.append(LangDef("bin",      "",         "Bini",                    QObject::tr("Bini")));
21909 craig 169
        m_langTable.append(LangDef("bpy",      "",         "Bishnupriya",             QObject::tr("Bishnupriya")));
170
        m_langTable.append(LangDef("bi",       "",         "Bislama",                 QObject::tr("Bislama")));
21908 craig 171
        m_langTable.append(LangDef("bla",      "",         "Blackfoot",               QObject::tr("Blackfoot")));
21294 craig 172
        m_langTable.append(LangDef("brx",      "",         "Bodo (India)",            QObject::tr("Bodo (India)")));
21909 craig 173
        m_langTable.append(LangDef("pcc",      "",         "Bouyei",                  QObject::tr("Bouyei")));
21294 craig 174
        m_langTable.append(LangDef("bs_BA",    "bs_BA",    "Bosnian",                 QObject::tr("Bosnian")));
21909 craig 175
        m_langTable.append(LangDef("brh",      "",         "Brahui",                  QObject::tr("Brahui")));
176
        m_langTable.append(LangDef("bra",      "",         "Braj Bhasha",             QObject::tr("Braj Bhasha")));
177
        m_langTable.append(LangDef("br",       "br_FR",    "Breton",                  QObject::tr("Breton")));
21294 craig 178
        m_langTable.append(LangDef("bug",      "",         "Buginese",                QObject::tr("Buginese")));
21909 craig 179
        m_langTable.append(LangDef("bg",       "bg_BG",    "Bulgarian",               QObject::tr("Bulgarian")));
180
        m_langTable.append(LangDef("my",       "",         "Burmese",                 QObject::tr("Burmese")));
181
        m_langTable.append(LangDef("frc",      "",         "Cajun French",            QObject::tr("Cajun French")));
182
        m_langTable.append(LangDef("crx",      "",         "Carrier",                 QObject::tr("Carrier")));
21294 craig 183
        m_langTable.append(LangDef("ca",       "",         "Catalan",                 QObject::tr("Catalan")));
21909 craig 184
        m_langTable.append(LangDef("cts",      "",         "Catanduanes Bikol Northern", QObject::tr("Catanduanes Bikol Northern")));
185
        m_langTable.append(LangDef("bln",      "",         "Catanduanes Bikol Southern", QObject::tr("Catanduanes Bikol Southern")));
186
        m_langTable.append(LangDef("ceb",      "",         "Cebuano",                 QObject::tr("Cebuano")));
187
        m_langTable.append(LangDef("tzm",      "",         "Central Atlas Tamazight", QObject::tr("Central Atlas Tamazight")));
188
        m_langTable.append(LangDef("ch",       "",         "Chamorro",                QObject::tr("Chamorro")));
189
        m_langTable.append(LangDef("hne",      "",         "Chattisgarhi",            QObject::tr("Chattisgarhi")));
21908 craig 190
        m_langTable.append(LangDef("cbk",      "",         "Chavacano",               QObject::tr("Chavacano")));
191
        m_langTable.append(LangDef("ce",       "",         "Chechen",                 QObject::tr("Chechen")));
21909 craig 192
        m_langTable.append(LangDef("chr",      "",         "Cherokee",                QObject::tr("Cherokee")));
193
        m_langTable.append(LangDef("ny",       "",         "Chewa",                   QObject::tr("Chewa")));
194
        m_langTable.append(LangDef("chy",      "",         "Cheyenne",                QObject::tr("Cheyenne")));
21908 craig 195
        m_langTable.append(LangDef("cgg",      "",         "Chiga",                   QObject::tr("Chiga")));
21909 craig 196
        m_langTable.append(LangDef("zh",       "",         "Chinese",                 QObject::tr("Chinese")));
197
        m_langTable.append(LangDef("zh_TW",    "",         "Chinese (Trad.)",         QObject::tr("Chinese (Trad.)")));
198
        m_langTable.append(LangDef("chp",      "",         "Chipewyan",               QObject::tr("Chipewyan")));
199
        m_langTable.append(LangDef("ctg",      "",         "Chittagonian",            QObject::tr("Chittagonian")));
21908 craig 200
        m_langTable.append(LangDef("cho",      "",         "Choctaw",                 QObject::tr("Choctaw")));
21294 craig 201
        m_langTable.append(LangDef("ckt",      "",         "Chukchi",                 QObject::tr("Chukchi")));
21909 craig 202
        m_langTable.append(LangDef("cu",       "",         "Church Slavic",           QObject::tr("Church Slavic")));
203
        m_langTable.append(LangDef("cv",       "",         "Chuvash",                 QObject::tr("Chuvash")));
204
        m_langTable.append(LangDef("swb",      "",         "Comorian",                QObject::tr("Comorian")));
21294 craig 205
        m_langTable.append(LangDef("cop",      "",         "Coptic",                  QObject::tr("Coptic")));
21909 craig 206
        m_langTable.append(LangDef("kw",       "",         "Cornish",                 QObject::tr("Cornish")));
21294 craig 207
        m_langTable.append(LangDef("cr",       "",         "Cree",                    QObject::tr("Cree")));
21909 craig 208
        m_langTable.append(LangDef("crm",      "",         "Cree (Moose)",            QObject::tr("Cree (Moose)")));
209
        m_langTable.append(LangDef("crl",      "",         "Cree (East Northern)",    QObject::tr("Cree (East Southern)")));
210
        m_langTable.append(LangDef("crj",      "",         "Cree (East Southern)",    QObject::tr("Cree (East Southern)")));
211
        m_langTable.append(LangDef("cwd",      "",         "Cree (Woods)",            QObject::tr("Woods Cree")));
212
        m_langTable.append(LangDef("mus",      "",         "Creek",                   QObject::tr("Creek")));
21908 craig 213
        m_langTable.append(LangDef("crh",      "",         "Crimean Tatar",           QObject::tr("Crimean Tatar")));
21909 craig 214
        m_langTable.append(LangDef("hr",       "",         "Croatian",                QObject::tr("Croatian")));
215
        m_langTable.append(LangDef("quz",      "",         "Cusco Quechua",           QObject::tr("Cusco Quechua")));
21908 craig 216
        m_langTable.append(LangDef("cs",       "cs_CZ",    "Czech",                   QObject::tr("Czech")));
21909 craig 217
        m_langTable.append(LangDef("ada",      "",         "Dangme",                  QObject::tr("Dangme")));
21294 craig 218
        m_langTable.append(LangDef("da",       "da_DK",    "Danish",                  QObject::tr("Danish")));
219
        m_langTable.append(LangDef("dar",      "",         "Dargwa",                  QObject::tr("Dargwa")));
21909 craig 220
        m_langTable.append(LangDef("prs",      "",         "Dari",                    QObject::tr("Afghan Dari")));
21294 craig 221
        m_langTable.append(LangDef("dhd",      "",         "Dhundari",                QObject::tr("Dhundari")));
222
        m_langTable.append(LangDef("din",      "",         "Dinka",                   QObject::tr("Dinka")));
223
        m_langTable.append(LangDef("diq",      "",         "Dimli",                   QObject::tr("Dimli")));
21909 craig 224
        m_langTable.append(LangDef("dgo",      "",         "Dogri",                   QObject::tr("Dogri")));
225
        m_langTable.append(LangDef("nl",       "nl_NL",    "Dutch",                   QObject::tr("Dutch")));
21294 craig 226
        m_langTable.append(LangDef("dz",       "",         "Dzongkha",                QObject::tr("Dzongkha")));
21909 craig 227
        m_langTable.append(LangDef("igb",      "",         "Ebira",                   QObject::tr("Ebira")));
21348 jghali 228
        m_langTable.append(LangDef("efi",      "",         "Efik",                    QObject::tr("Efik")));
21294 craig 229
        m_langTable.append(LangDef("en_AU",    "",         "English (Australia)",     QObject::tr("English (Australia)")));
230
        m_langTable.append(LangDef("en_CA",    "",         "English (Canada)",        QObject::tr("English (Canada)")));
21909 craig 231
        m_langTable.append(LangDef("en_NZ",    "",         "English (New Zealand)",   QObject::tr("English (New Zealand)")));
232
        m_langTable.append(LangDef("en_ZA",    "",         "English (South Africa)",  QObject::tr("English (South Africa)")));
21908 craig 233
        m_langTable.append(LangDef("en_GB",    "en",       "English (UK)",            QObject::tr("English (UK)")));
21294 craig 234
        m_langTable.append(LangDef("en_US",    "",         "English (US)",            QObject::tr("English (US)")));
21371 craig 235
        m_langTable.append(LangDef("en_US",    "",         "English",                 QObject::tr("English")));
21909 craig 236
        m_langTable.append(LangDef("ang",      "",         "English (Old 450-1100)",  QObject::tr("English (Old 450-1100)")));
21294 craig 237
        m_langTable.append(LangDef("eo",       "",         "Esperanto",               QObject::tr("Esperanto")));
21909 craig 238
        m_langTable.append(LangDef("myv",      "",         "Erzya",                   QObject::tr("Erzya")));
21294 craig 239
        m_langTable.append(LangDef("et",       "et_EE",    "Estonian",                QObject::tr("Estonian")));
21909 craig 240
        m_langTable.append(LangDef("ekk",      "",         "Estonian (Standard)",     QObject::tr("Estonian (Standard)")));
21294 craig 241
        m_langTable.append(LangDef("eve",      "",         "Even",                    QObject::tr("Even")));
242
        m_langTable.append(LangDef("evn",      "",         "Evenki",                  QObject::tr("Evenki")));
21909 craig 243
        m_langTable.append(LangDef("ee",       "",         "Ewe",                     QObject::tr("Ewe")));
244
        m_langTable.append(LangDef("fo",       "",         "Faroese",                 QObject::tr("Faroese")));
245
        m_langTable.append(LangDef("fj",       "",         "Fijian",                  QObject::tr("Fijian")));
246
        m_langTable.append(LangDef("fil",      "",         "Filipino",                QObject::tr("Filipino")));
21908 craig 247
        m_langTable.append(LangDef("fi",       "",         "Finnish",                 QObject::tr("Finnish")));
21294 craig 248
        m_langTable.append(LangDef("fon",      "",         "Fon",                     QObject::tr("Fon")));
21909 craig 249
        m_langTable.append(LangDef("myq",      "",         "Forest Maninka",          QObject::tr("Forest Maninka")));
250
        m_langTable.append(LangDef("frp",      "",         "Franco-Provençal",        QObject::trUtf8("Franco-Proven\303\247al")));
21908 craig 251
        m_langTable.append(LangDef("fr",       "fr_FR",    "French",                  QObject::tr("French")));
21909 craig 252
        m_langTable.append(LangDef("fy",       "",         "Frisian",                 QObject::tr("Frisian")));
21908 craig 253
        m_langTable.append(LangDef("fur",      "",         "Friulian",                QObject::tr("Friulian")));
21909 craig 254
        m_langTable.append(LangDef("ff",       "",         "Fulah",                   QObject::tr("Fulah")));
21294 craig 255
        m_langTable.append(LangDef("gaa",      "",         "Ga",                      QObject::tr("Ga")));
256
        m_langTable.append(LangDef("gag",      "",         "Gagauz",                  QObject::tr("Gagauz")));
21909 craig 257
        m_langTable.append(LangDef("gl",       "gl_ES",    "Galician",                QObject::tr("Galician")));
258
        m_langTable.append(LangDef("lg",       "",         "Ganda",                   QObject::tr("Ganda")));
21294 craig 259
        m_langTable.append(LangDef("gbm",      "",         "Garhwali",                QObject::tr("Garhwali")));
21909 craig 260
        m_langTable.append(LangDef("grt",      "",         "Garo",                    QObject::tr("Garo")));
21294 craig 261
        m_langTable.append(LangDef("gez",      "",         "Ge'ez",                   QObject::tr("Ge'ez")));
21909 craig 262
        m_langTable.append(LangDef("ka",       "",         "Georgian",                QObject::tr("Georgian")));
263
        m_langTable.append(LangDef("de",       "de_DE",    "German",                  QObject::tr("German")));
264
        m_langTable.append(LangDef("de_AT",    "",         "German (Austria)",        QObject::tr("German (Austria)")));
265
        m_langTable.append(LangDef("de_CH",    "",         "German (Swiss)",          QObject::tr("German (Swiss)")));
266
        m_langTable.append(LangDef("de_1901",  "",         "German (Trad.)",          QObject::tr("German (Trad.)")));
21294 craig 267
        m_langTable.append(LangDef("glk",      "",         "Gilaki",                  QObject::tr("Gilaki")));
21909 craig 268
        m_langTable.append(LangDef("niv",      "",         "Gilyak",                  QObject::tr("Gilyak")));
21294 craig 269
        m_langTable.append(LangDef("gog",      "",         "Gogo",                    QObject::tr("Gogo")));
270
        m_langTable.append(LangDef("gon",      "",         "Gondi",                   QObject::tr("Gondi")));
21909 craig 271
        m_langTable.append(LangDef("gno",      "",         "Gondi Northern",          QObject::tr("Gondi Northern")));
272
        m_langTable.append(LangDef("ggo",      "",         "Gondi Southern",          QObject::tr("Gondi Southern")));
273
        m_langTable.append(LangDef("el",       "",         "Greek",                   QObject::tr("Greek")));
274
        m_langTable.append(LangDef("gn",       "",         "Guarani",                 QObject::tr("Guarani")));
21294 craig 275
        m_langTable.append(LangDef("gu",       "gu_IN",    "Gujarati",                QObject::tr("Gujarati")));
276
        m_langTable.append(LangDef("guk",      "",         "Gumuz",                   QObject::tr("Gumuz")));
277
        m_langTable.append(LangDef("guz",      "",         "Gusii",                   QObject::tr("Gusii")));
21909 craig 278
        m_langTable.append(LangDef("ht",       "",         "Haitian Creole",          QObject::tr("Haitian Creole")));
279
        m_langTable.append(LangDef("amf",      "",         "Hamer-Banna",             QObject::tr("Hamer-Banna")));
280
        m_langTable.append(LangDef("har",      "",         "Harari",                  QObject::tr("Harari")));
281
        m_langTable.append(LangDef("hoj",      "",         "Harauti",                 QObject::tr("Harauti")));
282
        m_langTable.append(LangDef("bgc",      "",         "Haryanvi",                QObject::tr("Haryanvi")));
21908 craig 283
        m_langTable.append(LangDef("ha",       "",         "Hausa",                   QObject::tr("Hausa")));
21294 craig 284
        m_langTable.append(LangDef("haw",      "",         "Hawaiian",                QObject::tr("Hawaiian")));
285
        m_langTable.append(LangDef("hay",      "",         "Haya",                    QObject::tr("Haya")));
286
        m_langTable.append(LangDef("haz",      "",         "Hazaragi",                QObject::tr("Hazaragi")));
287
        m_langTable.append(LangDef("he",       "he_IL",    "Hebrew",                  QObject::tr("Hebrew")));
21909 craig 288
        m_langTable.append(LangDef("hz",       "",         "Herero",                  QObject::tr("Herero")));
289
        m_langTable.append(LangDef("mrj",      "",         "High Mari",               QObject::tr("High Mari")));
290
        m_langTable.append(LangDef("hil",      "",         "Hiligaynon",              QObject::tr("Hiligaynon")));
21908 craig 291
        m_langTable.append(LangDef("hi_IN",    "",         "Hindi",                   QObject::tr("Hindi")));
21909 craig 292
        m_langTable.append(LangDef("hno",      "",         "Hindko (Northern)",       QObject::tr("Hindko (Northern)")));
21908 craig 293
        m_langTable.append(LangDef("hnd",      "",         "Hindko (Southern)",       QObject::tr("Hindko (Southern)")));
21294 craig 294
        m_langTable.append(LangDef("ho",       "",         "Hiri Motu",               QObject::tr("Hiri Motu")));
21909 craig 295
        m_langTable.append(LangDef("mww",      "",         "Hmong Daw",               QObject::tr("Hmong Daw")));
21294 craig 296
        m_langTable.append(LangDef("hoc",      "",         "Ho",                      QObject::tr("Ho")));
297
        m_langTable.append(LangDef("hu",       "hu_HU",    "Hungarian",               QObject::tr("Hungarian")));
298
        m_langTable.append(LangDef("ibb",      "",         "Ibibio",                  QObject::tr("Ibibio")));
21909 craig 299
        m_langTable.append(LangDef("is",       "",         "Icelandic",               QObject::tr("Icelandic")));
300
        m_langTable.append(LangDef("io",       "",         "Ido",                     QObject::tr("Ido")));
21294 craig 301
        m_langTable.append(LangDef("ig",       "",         "Igbo",                    QObject::tr("Igbo")));
302
        m_langTable.append(LangDef("ijo",      "",         "Ijo",                     QObject::tr("Ijo")));
303
        m_langTable.append(LangDef("ilo",      "",         "Ilokano",                 QObject::tr("Ilokano")));
21909 craig 304
        m_langTable.append(LangDef("id",       "",         "Indonesian",              QObject::tr("Indonesian")));
21294 craig 305
        m_langTable.append(LangDef("inh",      "",         "Ingush",                  QObject::tr("Ingush")));
21909 craig 306
        m_langTable.append(LangDef("ia",       "",         "Interlingua",             QObject::tr("Interlingua")));
307
        m_langTable.append(LangDef("iu",       "",         "Inuktitut",               QObject::tr("Inuktitut")));
308
        m_langTable.append(LangDef("ik",       "",         "Inupiaq",                 QObject::tr("Inupiaq")));
309
        m_langTable.append(LangDef("ga",       "",         "Irish",                   QObject::tr("Irish")));
310
        m_langTable.append(LangDef("sga",      "",         "Irish Old (to 900)",      QObject::tr("Irish Old (to 900)")));
21908 craig 311
        m_langTable.append(LangDef("it",       "it_IT",    "Italian",                 QObject::tr("Italian")));
21909 craig 312
        m_langTable.append(LangDef("ijc",      "",         "Izon",                    QObject::tr("Izon")));
313
        m_langTable.append(LangDef("jam",      "",         "Jamaican Creole English", QObject::tr("Jamaican Creole English")));
21908 craig 314
        m_langTable.append(LangDef("ja",       "",         "Japanese",                QObject::tr("Japanese")));
21294 craig 315
        m_langTable.append(LangDef("jv",       "",         "Javanese",                QObject::tr("Javanese")));
21909 craig 316
        m_langTable.append(LangDef("dyu",      "",         "Jula",                    QObject::tr("Jula")));
317
        m_langTable.append(LangDef("quc",      "",         "K'iche'",                 QObject::tr("K'iche'")));
318
        m_langTable.append(LangDef("kbd",      "",         "Kabardian",               QObject::tr("Kabardian")));
21294 craig 319
        m_langTable.append(LangDef("kab",      "",         "Kabyle",                  QObject::tr("Kabyle")));
21909 craig 320
        m_langTable.append(LangDef("kl",       "",         "Kalaallisut",             QObject::tr("Kalaallisut")));
321
        m_langTable.append(LangDef("xal",      "",         "Kalmyk",                  QObject::tr("Kalmyk")));
322
        m_langTable.append(LangDef("kln",      "",         "Kalenjin",                QObject::tr("Kalenjin")));
21294 craig 323
        m_langTable.append(LangDef("kam",      "",         "Kamba (Kenya)",           QObject::tr("Kamba (Kenya)")));
21909 craig 324
        m_langTable.append(LangDef("bjj",      "",         "Kanauji",                 QObject::tr("Kanauji")));
325
        m_langTable.append(LangDef("kn_IN",    "kn",       "Kannada",                 QObject::tr("Kannada")));
326
        m_langTable.append(LangDef("kr",       "",         "Kanuri",                  QObject::tr("Kanuri")));
327
        m_langTable.append(LangDef("pam",      "",         "Kapampangan",             QObject::tr("Kapampangan")));
328
        m_langTable.append(LangDef("kdr",      "",         "Karaim",                  QObject::tr("Karaim")));
329
        m_langTable.append(LangDef("kaa",      "",         "Karakalpak",              QObject::tr("Karakalpak")));
330
        m_langTable.append(LangDef("krl",      "",         "Karelian",                QObject::tr("Karelian")));
21908 craig 331
        m_langTable.append(LangDef("kar",      "",         "Karen",                   QObject::tr("Karen")));
21294 craig 332
        m_langTable.append(LangDef("kfr",      "",         "Kachchi",                 QObject::tr("Kachchi")));
21909 craig 333
        m_langTable.append(LangDef("ks",       "",         "Kashmiri",                QObject::tr("Kashmiri")));
334
        m_langTable.append(LangDef("csb",      "",         "Kashubian",               QObject::tr("Kashubian")));
335
        m_langTable.append(LangDef("kyu",      "",         "Kayah",                   QObject::tr("Kayah")));
336
        m_langTable.append(LangDef("kk",       "",         "Kazakh",                  QObject::tr("Kazakh")));
337
        m_langTable.append(LangDef("kjh",      "",         "Khakass",                 QObject::tr("Khakass")));
338
        m_langTable.append(LangDef("kht",      "",         "Khamti",                  QObject::tr("Khamti")));
21908 craig 339
        m_langTable.append(LangDef("kha",      "",         "Khasi",                   QObject::tr("Khasi")));
21909 craig 340
        m_langTable.append(LangDef("km",       "",         "Khmer",                   QObject::tr("Khmer")));
21294 craig 341
        m_langTable.append(LangDef("khw",      "",         "Khowar",                  QObject::tr("Khowar")));
342
        m_langTable.append(LangDef("ki",       "",         "Kikuyu",                  QObject::tr("Kikuyu")));
21909 craig 343
        m_langTable.append(LangDef("sjd",      "",         "Kildin Sami",             QObject::tr("Kildin Sami")));
21294 craig 344
        m_langTable.append(LangDef("kmb",      "",         "Kimbundu",                QObject::tr("Kimbundu")));
21909 craig 345
        m_langTable.append(LangDef("rw",       "",         "Kinyarwanda",             QObject::tr("Kinyarwanda")));
346
        m_langTable.append(LangDef("mwk",      "",         "Kita Maninkakan",         QObject::tr("Kita Maninkakan")));
347
        m_langTable.append(LangDef("kex",      "",         "Kituba (Congo)",          QObject::tr("Kituba (Congo)")));
348
        m_langTable.append(LangDef("kex",      "",         "Kokni",                   QObject::tr("Kokni")));
349
        m_langTable.append(LangDef("ksh",      "",         "Kölsch",                  QObject::trUtf8("K\303\266lsch")));
350
        m_langTable.append(LangDef("kv",       "",         "Komi",                    QObject::tr("Komi")));
351
        m_langTable.append(LangDef("koi",      "",         "Komi-Permyak",            QObject::tr("Komi-Permyak")));
352
        m_langTable.append(LangDef("kpv",      "",         "Komi-Zyrian",             QObject::tr("Komi-Zyrian")));
21908 craig 353
        m_langTable.append(LangDef("kmw",      "",         "Komo (Congo)",            QObject::tr("Komo (Congo)")));
21909 craig 354
        m_langTable.append(LangDef("xom",      "",         "Komo (Sudan)",            QObject::tr("Komo (Sudan)")));
355
        m_langTable.append(LangDef("kxc",      "",         "Komso",                   QObject::tr("Komso")));
356
        m_langTable.append(LangDef("kg",       "",         "Kongo",                   QObject::tr("Kongo")));
357
        m_langTable.append(LangDef("kok",      "",         "Konkani",                 QObject::tr("Konkani")));
358
        m_langTable.append(LangDef("kqy",      "",         "Koorete",                 QObject::tr("Koorete")));
21908 craig 359
        m_langTable.append(LangDef("ko",       "",         "Korean",                  QObject::tr("Korean")));
21909 craig 360
        m_langTable.append(LangDef("kpy",      "",         "Koryak",                  QObject::tr("Koryak")));
361
        m_langTable.append(LangDef("mku",      "",         "Konyanka Maninka",        QObject::tr("Konyanka Maninka")));
21908 craig 362
        m_langTable.append(LangDef("kpe",      "",         "Kpelle",                  QObject::tr("Kpelle")));
21294 craig 363
        m_langTable.append(LangDef("kri",      "",         "Krio",                    QObject::tr("Krio")));
21909 craig 364
        m_langTable.append(LangDef("kxu",      "",         "Kui (India)",             QObject::tr("Kui (India)")));
365
        m_langTable.append(LangDef("kvd",      "",         "Kui (Indonesia)",         QObject::tr("Kui (Indonesia)")));
366
        m_langTable.append(LangDef("kfy",      "",         "Kumaoni",                 QObject::tr("Kumaoni")));
367
        m_langTable.append(LangDef("kum",      "",         "Kumyk",                   QObject::tr("Kumyk")));
368
        m_langTable.append(LangDef("zum",      "",         "Kumzari",                 QObject::tr("Kumzari")));
369
        m_langTable.append(LangDef("ku",       "",         "Kurdish",                 QObject::tr("Kurdish")));
370
        m_langTable.append(LangDef("ckb",      "",         "Kurdish (Sorani)",        QObject::tr("Kurdish (Sorani)")));
21908 craig 371
        m_langTable.append(LangDef("kru",      "",         "Kurukh",                  QObject::tr("Kurukh")));
21909 craig 372
        m_langTable.append(LangDef("kdt",      "",         "Kuy",                     QObject::tr("Kuy")));
373
        m_langTable.append(LangDef("kj",       "",         "Kwanyama",                QObject::tr("Kwanyama")));
21294 craig 374
        m_langTable.append(LangDef("ky",       "",         "Kyrgyz",                  QObject::tr("Kyrgyz")));
21909 craig 375
        m_langTable.append(LangDef("lbj",      "",         "Ladakhi",                 QObject::tr("Ladakhi")));
376
        m_langTable.append(LangDef("lld",      "",         "Ladin",                   QObject::tr("Ladin")));
21294 craig 377
        m_langTable.append(LangDef("lad",      "",         "Ladino",                  QObject::tr("Ladino")));
378
        m_langTable.append(LangDef("lbe",      "",         "Lak",                     QObject::tr("Lak")));
379
        m_langTable.append(LangDef("lki",      "",         "Laki",                    QObject::tr("Laki")));
380
        m_langTable.append(LangDef("lmn",      "",         "Lambani",                 QObject::tr("Lambani")));
21909 craig 381
        m_langTable.append(LangDef("ljp",      "",         "Lampung Api",             QObject::tr("Lampung Api")));
21294 craig 382
        m_langTable.append(LangDef("lmo",      "",         "Lombard",                 QObject::tr("Lombard")));
21909 craig 383
        m_langTable.append(LangDef("lo",       "",         "Lao",                     QObject::tr("Lao")));
384
        m_langTable.append(LangDef("la",       "",         "Latin",                   QObject::tr("Latin")));
385
        m_langTable.append(LangDef("lv",       "",         "Latvian",                 QObject::tr("Latvian")));
386
        m_langTable.append(LangDef("lzz",      "",         "Laz",                     QObject::tr("Laz")));
387
        m_langTable.append(LangDef("lez",      "",         "Lezgi",                   QObject::tr("Lezgi")));
388
        m_langTable.append(LangDef("lij",      "",         "Ligurian",                QObject::tr("Ligurian")));
389
        m_langTable.append(LangDef("lif",      "",         "Limbu",                   QObject::tr("Limbu")));
390
        m_langTable.append(LangDef("li",       "",         "Limburgish",              QObject::tr("Limburgish")));
21908 craig 391
        m_langTable.append(LangDef("ln",       "",         "Lingala",                 QObject::tr("Lingala")));
21909 craig 392
        m_langTable.append(LangDef("lis",      "",         "Lisu",                    QObject::tr("Lisu")));
21294 craig 393
        m_langTable.append(LangDef("lt",       "lt_LT",    "Lithuanian",              QObject::tr("Lithuanian")));
21909 craig 394
        m_langTable.append(LangDef("jbo",      "",         "Lojban",                  QObject::tr("Lojban")));
395
        m_langTable.append(LangDef("ngl",      "",         "Lomwe",                   QObject::tr("Lomwe")));
396
        m_langTable.append(LangDef("nds",      "",         "Low German",              QObject::tr("Low German")));
397
        m_langTable.append(LangDef("mhr",      "",         "Low Mari",                QObject::tr("Low Mari")));
398
        m_langTable.append(LangDef("dsb",      "",         "Lower Sorbian",           QObject::tr("Lower Sorbian")));
399
        m_langTable.append(LangDef("lb",       "",         "Luxembourgish",           QObject::tr("Luxembourgish")));
400
        m_langTable.append(LangDef("khb",      "",         "Lü",                      QObject::trUtf8("L\303\274")));
401
        m_langTable.append(LangDef("lua",      "",         "Luba-Kasai",              QObject::tr("Luba-Kasai")));
21908 craig 402
        m_langTable.append(LangDef("lu",       "",         "Luba-Katanga",            QObject::tr("Luba-Katanga")));
21294 craig 403
        m_langTable.append(LangDef("luo",      "",         "Luo (Kenya and Tanzania)",QObject::tr("Luo (Kenya and Tanzania)")));
21909 craig 404
        m_langTable.append(LangDef("lrc",      "",         "Luri (Northern)",         QObject::tr("Luri (Northern)")));
21294 craig 405
        m_langTable.append(LangDef("luz",      "",         "Luri (Southern)",         QObject::tr("Luri (Southern)")));
21909 craig 406
        m_langTable.append(LangDef("mk",       "",         "Macedonian",              QObject::tr("Macedonian")));
21294 craig 407
        m_langTable.append(LangDef("mad",      "",         "Madurese",                QObject::tr("Madurese")));
408
        m_langTable.append(LangDef("mag",      "",         "Magahi",                  QObject::tr("Magahi")));
21909 craig 409
        m_langTable.append(LangDef("knn",      "",         "Maharashtrian Konkani",   QObject::tr("Maharashtrian Konkani")));
21294 craig 410
        m_langTable.append(LangDef("mai",      "",         "Maithili",                QObject::tr("Maithili")));
21909 craig 411
        m_langTable.append(LangDef("mpe",      "",         "Majang",                  QObject::tr("Majang")));
21294 craig 412
        m_langTable.append(LangDef("mak",      "",         "Makasar",                 QObject::tr("Makasar")));
21909 craig 413
        m_langTable.append(LangDef("vmw",      "",         "Makhuwa",                 QObject::tr("Makhuwa")));
414
        m_langTable.append(LangDef("kde",      "",         "Makonde",                 QObject::tr("Makonde")));
415
        m_langTable.append(LangDef("ms",       "",         "Malay",                   QObject::tr("Malay")));
416
        m_langTable.append(LangDef("mg",       "",         "Malagasy",                QObject::tr("Malagasy")));
417
        m_langTable.append(LangDef("ml",       "ml_IN",    "Malayalam",               QObject::tr("Malayalam")));
418
        m_langTable.append(LangDef("dv",       "",         "Maldivian",               QObject::tr("Maldivian")));
419
        m_langTable.append(LangDef("mdy",      "",         "Male (Ethiopia)",         QObject::tr("Male (Ethiopia)")));
420
        m_langTable.append(LangDef("mdc",      "",         "Male (Papua New Guinea)", QObject::tr("Male (Papua New Guinea)")));
421
        m_langTable.append(LangDef("mt",       "",         "Maltese",                 QObject::tr("Maltese")));
422
        m_langTable.append(LangDef("mi",       "",         "Maori",                   QObject::tr("Maori")));
21908 craig 423
        m_langTable.append(LangDef("man",      "",         "Manding",                 QObject::tr("Manding")));
21909 craig 424
        m_langTable.append(LangDef("mnc",      "",         "Manchu",                  QObject::tr("Manchu")));
21908 craig 425
        m_langTable.append(LangDef("mdr",      "",         "Mandar",                  QObject::tr("Mandar")));
21909 craig 426
        m_langTable.append(LangDef("mnk",      "",         "Mandinka",                QObject::tr("Mandinka")));
427
        m_langTable.append(LangDef("mni",      "",         "Manipuri",                QObject::tr("Manipuri")));
428
        m_langTable.append(LangDef("emk",      "",         "Maninkakan (Eastern)",    QObject::tr("Maninkakan (Eastern)")));
429
        m_langTable.append(LangDef("mlq",      "",         "Maninkakan (Western)",    QObject::tr("Maninkakan (Western)")));
430
        m_langTable.append(LangDef("mns",      "",         "Mansi",                   QObject::tr("Mansi")));
431
        m_langTable.append(LangDef("gv",       "",         "Manx",                    QObject::tr("Manx")));
432
        m_langTable.append(LangDef("mr",       "",         "Marathi",                 QObject::tr("Marathi")));
433
        m_langTable.append(LangDef("mh",       "",         "Marshallese",             QObject::tr("Marshallese")));
434
        m_langTable.append(LangDef("mwr",      "",         "Marwari",                 QObject::tr("Marwari")));
435
        m_langTable.append(LangDef("mve",      "",         "Marwari (Pakistan)",      QObject::tr("Marwari (Pakistan)")));
436
        m_langTable.append(LangDef("mzn",      "",         "Mazanderani",             QObject::tr("Mazanderani")));
21908 craig 437
        m_langTable.append(LangDef("men",      "",         "Mende (Sierra Leone)",    QObject::tr("Mende (Sierra Leone)")));
21909 craig 438
        m_langTable.append(LangDef("mym",      "",         "Me'en",                   QObject::tr("Me'en")));
21908 craig 439
        m_langTable.append(LangDef("mer",      "",         "Meru",                    QObject::tr("Meru")));
21909 craig 440
        m_langTable.append(LangDef("wry",      "",         "Merwari",                 QObject::tr("Merwari")));
441
        m_langTable.append(LangDef("mtr",      "",         "Mewari",                  QObject::tr("Mewari")));
442
        m_langTable.append(LangDef("rwr",      "",         "Mewari (India)",          QObject::tr("Mewari (India)")));
443
        m_langTable.append(LangDef("wtm",      "",         "Mewati",                  QObject::tr("Mewati")));
21908 craig 444
        m_langTable.append(LangDef("min",      "",         "Minangkabau",             QObject::tr("Minangkabau")));
21909 craig 445
        m_langTable.append(LangDef("mwl",      "",         "Mirandese",               QObject::tr("Mirandese")));
446
        m_langTable.append(LangDef("lus",      "",         "Mizo",                    QObject::tr("Mizo")));
21908 craig 447
        m_langTable.append(LangDef("mnw",      "",         "Mon",                     QObject::tr("Mon")));
21909 craig 448
        m_langTable.append(LangDef("moh",      "",         "Mohawk",                  QObject::tr("Mohawk")));
449
        m_langTable.append(LangDef("mdf",      "",         "Moksha",                  QObject::tr("Moksha")));
21908 craig 450
        m_langTable.append(LangDef("mo",       "",         "Moldavian",               QObject::tr("Moldavian")));
21909 craig 451
        m_langTable.append(LangDef("mn_MN",    "",         "Mongolian",               QObject::tr("Mongolian")));
452
        m_langTable.append(LangDef("mfe",      "",         "Morisyen",                QObject::tr("Morisyen")));
21908 craig 453
        m_langTable.append(LangDef("mos",      "",         "Mossi",                   QObject::tr("Mossi")));
21909 craig 454
        m_langTable.append(LangDef("unr",      "",         "Mundari",                 QObject::tr("Mundari")));
455
        m_langTable.append(LangDef("nqo",      "",         "N'Ko",                    QObject::tr("N'Ko")));
456
        m_langTable.append(LangDef("nah",      "",         "Nahuatl",                 QObject::tr("Nahuatl")));
457
        m_langTable.append(LangDef("gld",      "",         "Nanai",                   QObject::tr("Nanai")));
458
        m_langTable.append(LangDef("nsk",      "",         "Naskapi",                 QObject::tr("Naskapi")));
21908 craig 459
        m_langTable.append(LangDef("na",       "",         "Nauru",                   QObject::tr("Nauru")));
21909 craig 460
        m_langTable.append(LangDef("nv",       "",         "Navajo",                  QObject::tr("Navajo")));
461
        m_langTable.append(LangDef("ndc",      "",         "Ndau",                    QObject::tr("Ndau")));
462
        m_langTable.append(LangDef("nd",       "",         "Ndebele North",           QObject::tr("North Ndebele")));
463
        m_langTable.append(LangDef("nr",       "",         "Ndebele South",           QObject::tr("South Ndebele")));
464
        m_langTable.append(LangDef("ng",       "",         "Ndonga",                  QObject::tr("Ndonga")));
21908 craig 465
        m_langTable.append(LangDef("nap",      "",         "Neapolitan",              QObject::tr("Neapolitan")));
21294 craig 466
        m_langTable.append(LangDef("ne_NP",    "",         "Nepali",                  QObject::tr("Nepali")));
467
        m_langTable.append(LangDef("new",      "",         "Newari",                  QObject::tr("Newari")));
468
        m_langTable.append(LangDef("nga",      "",         "Ngabaka",                 QObject::tr("Ngabaka")));
21909 craig 469
        m_langTable.append(LangDef("fuv",      "",         "Nigerian Fulfulde",       QObject::tr("Nigerian Fulfulde")));
470
        m_langTable.append(LangDef("noe",      "",         "Nimadi",                  QObject::tr("Nimadi")));
471
        m_langTable.append(LangDef("dap",      "",         "Nisi (India)",            QObject::tr("Nisi (India)")));
472
        m_langTable.append(LangDef("yso",      "",         "Nisi (China)",            QObject::tr("Nisi (China)")));
21908 craig 473
        m_langTable.append(LangDef("niu",      "",         "Niuean",                  QObject::tr("Niuean")));
21909 craig 474
        m_langTable.append(LangDef("nog",      "",         "Nogai",                   QObject::tr("Nogai")));
475
        m_langTable.append(LangDef("no",       "no_NO",    "Norwegian",               QObject::tr("Norwegian")));
476
        m_langTable.append(LangDef("nb",       "nb_NO",    "Norwegian (Bokmål)",      QObject::trUtf8("Norwegian (Bokm\303\245l)")));
21908 craig 477
        m_langTable.append(LangDef("nn",       "nn_NO",    "Norwegian (Nnyorsk)",     QObject::tr("Norwegian (Nnyorsk)")));
21294 craig 478
        m_langTable.append(LangDef("nov",      "",         "Novial",                  QObject::tr("Novial")));
479
        m_langTable.append(LangDef("nym",      "",         "Nyamwezi",                QObject::tr("Nyamwezi")));
480
        m_langTable.append(LangDef("nyn",      "",         "Nyankole",                QObject::tr("Nyankole")));
21909 craig 481
        m_langTable.append(LangDef("ie",       "",         "Occidental",              QObject::tr("Occidental")));
21294 craig 482
        m_langTable.append(LangDef("oc",       "",         "Occitan (post 1500)",     QObject::tr("Occitan (post 1500)")));
483
        m_langTable.append(LangDef("oj",       "",         "Ojibwa",                  QObject::tr("Ojibwa")));
484
        m_langTable.append(LangDef("ojs",      "",         "Oji-Cree",                QObject::tr("Oji-Cree")));
485
        m_langTable.append(LangDef("om",       "",         "Oromo",                   QObject::tr("Oromo")));
486
        m_langTable.append(LangDef("or",       "",         "Oriya",                   QObject::tr("Oriya")));
487
        m_langTable.append(LangDef("os",       "",         "Ossetian",                QObject::tr("Ossetian")));
21909 craig 488
        m_langTable.append(LangDef("blk",      "",         "Pa'O",                    QObject::tr("Pa'O")));
489
        m_langTable.append(LangDef("pce",      "",         "Palaung (Ruching)",       QObject::tr("Palaung (Ruching)")));
490
        m_langTable.append(LangDef("pll",      "",         "Palaung (Shwe)",          QObject::tr("Palaung (Shwe)")));
491
        m_langTable.append(LangDef("pi",       "",         "Pali",                    QObject::tr("Pali")));
492
        m_langTable.append(LangDef("plp",      "",         "Palpa",                   QObject::tr("Palpa")));
21294 craig 493
        m_langTable.append(LangDef("pa",       "",         "Panjabi",                 QObject::tr("Panjabi")));
21909 craig 494
        m_langTable.append(LangDef("pnb",      "",         "Panjabi Western",         QObject::tr("Panjabi Western")));
21294 craig 495
        m_langTable.append(LangDef("pag",      "",         "Pangasinan",              QObject::tr("Pangasinan")));
21909 craig 496
        m_langTable.append(LangDef("ps",       "",         "Pashto",                  QObject::tr("Pashto")));
21294 craig 497
        m_langTable.append(LangDef("pdc",      "",         "Pennsylvania German",     QObject::tr("Pennsylvania German")));
21909 craig 498
        m_langTable.append(LangDef("fa",       "",         "Persian",                 QObject::tr("Persian")));
499
        m_langTable.append(LangDef("fa_AF",    "",         "Persian (Afghanistan)",   QObject::tr("Persian (Afghanistan)")));
500
        m_langTable.append(LangDef("fa_IR",    "",         "Persian (Iran)",          QObject::tr("Persian")));
21294 craig 501
        m_langTable.append(LangDef("phk",      "",         "Phake",                   QObject::tr("Phake")));
502
        m_langTable.append(LangDef("pih",      "",         "Pitcairn-Norfolk",        QObject::tr("Pitcairn-Norfolk")));
21909 craig 503
        m_langTable.append(LangDef("pcd",      "",         "Picard",                  QObject::tr("Picard")));
504
        m_langTable.append(LangDef("pms",      "",         "Piedmontese",             QObject::tr("Piedmontese")));
21908 craig 505
        m_langTable.append(LangDef("pl",       "pl_PL",    "Polish",                  QObject::tr("Polish")));
21909 craig 506
        m_langTable.append(LangDef("pap",      "",         "Papiamento",              QObject::tr("Papiamento")));
21294 craig 507
        m_langTable.append(LangDef("pt",       "pt_PT",    "Portuguese",              QObject::tr("Portuguese")));
508
        m_langTable.append(LangDef("pt_BR",    "",         "Portuguese (BR)",         QObject::tr("Portuguese (BR)")));
21909 craig 509
        m_langTable.append(LangDef("kjp",      "",         "Pwo Eastern Karen",       QObject::tr("Pwo Eastern Karen")));
21294 craig 510
        m_langTable.append(LangDef("pwo",      "",         "Pwo Western Karen",       QObject::tr("Pwo Western Karen")));
21909 craig 511
        m_langTable.append(LangDef("bto",      "",         "Rinconada Bikol",         QObject::tr("Rinconada Bikol")));
21294 craig 512
        m_langTable.append(LangDef("qu",       "",         "Quechua",                 QObject::tr("Quechua")));
21909 craig 513
        m_langTable.append(LangDef("rki",      "",         "Rakhine",                 QObject::tr("Rakhine")));
21294 craig 514
        m_langTable.append(LangDef("raj",      "",         "Rajasthani",              QObject::tr("Rajasthani")));
515
        m_langTable.append(LangDef("rej",      "",         "Rejang",                  QObject::tr("Rejang")));
516
        m_langTable.append(LangDef("ria",      "",         "Riang (India)",           QObject::tr("Riang (India)")));
517
        m_langTable.append(LangDef("ril",      "",         "Riang (Myanmar)",         QObject::tr("Riang (Myanmar)")));
21909 craig 518
        m_langTable.append(LangDef("ro",       "",         "Romanian",                QObject::tr("Romanian")));
21908 craig 519
        m_langTable.append(LangDef("rm",       "",         "Romansh",                 QObject::tr("Romansh")));
21909 craig 520
        m_langTable.append(LangDef("rom",      "",         "Romany",                  QObject::tr("Romany")));
21908 craig 521
        m_langTable.append(LangDef("rn",       "",         "Rundi",                   QObject::tr("Rundi")));
21294 craig 522
        m_langTable.append(LangDef("ru",       "ru_RU",    "Russian",                 QObject::tr("Russian")));
21909 craig 523
        m_langTable.append(LangDef("bxr",      "ru_RU",    "Russian Buriat",          QObject::tr("Russian Buriat")));
21294 craig 524
        m_langTable.append(LangDef("rue",      "",         "Rusyn",                   QObject::tr("Rusyn")));
21909 craig 525
        m_langTable.append(LangDef("ksw",      "",         "S'gaw Karen",             QObject::tr("S'gaw Karen")));
526
        m_langTable.append(LangDef("sck",      "",         "Sadri",                   QObject::tr("Sadri")));
527
        m_langTable.append(LangDef("msc",      "",         "Sasak",                   QObject::tr("Sasak")));
528
        m_langTable.append(LangDef("sm",       "",         "Samoan",                  QObject::tr("Samoan")));
529
        m_langTable.append(LangDef("sgs",      "",         "Samogitian",              QObject::tr("Samogitian")));
530
        m_langTable.append(LangDef("se",       "",         "Sami (Northern)",         QObject::tr("Sami (Northern)")));
531
        m_langTable.append(LangDef("sma",      "",         "Sami (Southern)",         QObject::tr("Sami (Southern)")));
532
        m_langTable.append(LangDef("smj",      "",         "Sami (Lule)",             QObject::tr("Sami (Lule)")));
533
        m_langTable.append(LangDef("sms",      "",         "Sami (Skolt)",            QObject::tr("Sami (Skolt)")));
534
        m_langTable.append(LangDef("sg",       "",         "Sango",                   QObject::tr("Sango")));
535
        m_langTable.append(LangDef("msc",      "",         "Sankaran Maninka",        QObject::tr("Sankaran Maninka")));
21294 craig 536
        m_langTable.append(LangDef("sa",       "",         "Sanskrit",                QObject::tr("Sanskrit")));
537
        m_langTable.append(LangDef("sat",      "",         "Santali",                 QObject::tr("Santali")));
538
        m_langTable.append(LangDef("sc",       "",         "Sardinian",               QObject::tr("Sardinian")));
21909 craig 539
        m_langTable.append(LangDef("stq",      "",         "Saterfriesisch",          QObject::tr("Saterfriesisch")));
21294 craig 540
        m_langTable.append(LangDef("sco",      "",         "Scots",                   QObject::tr("Scots")));
21909 craig 541
        m_langTable.append(LangDef("gd",       "gd_GB",    "Scottish Gaelic",         QObject::tr("Scottish Gaelic")));
542
        m_langTable.append(LangDef("sgw",      "",         "Sebat Bet Gurage",        QObject::tr("Sebat Bet Gurage")));
543
        m_langTable.append(LangDef("sel",      "",         "Selkup",                  QObject::tr("Selkup")));
21908 craig 544
        m_langTable.append(LangDef("seh",      "",         "Sena",                    QObject::tr("Sena")));
21909 craig 545
        m_langTable.append(LangDef("skr",      "",         "Seraiki",                 QObject::tr("Seraiki")));
546
        m_langTable.append(LangDef("sr",       "",         "Serbian",                 QObject::tr("Serbian")));
547
        m_langTable.append(LangDef("sr-Latn",  "sr-Latn",  "Serbian (Latin)",         QObject::tr("Serbian (Latin)")));
21294 craig 548
        m_langTable.append(LangDef("shn",      "",         "Shan",                    QObject::tr("Shan")));
21909 craig 549
        m_langTable.append(LangDef("srr",      "",         "Serer",                   QObject::tr("Serer")));
550
        m_langTable.append(LangDef("swv",      "",         "Shekhawati",              QObject::tr("Shekhawati")));
551
        m_langTable.append(LangDef("sn",       "",         "Shona",                   QObject::tr("Shona")));
552
        m_langTable.append(LangDef("nco",      "",         "Sibe",                    QObject::tr("Sibe")));
553
        m_langTable.append(LangDef("scn",      "",         "Sicilian",                QObject::tr("Sicilian")));
554
        m_langTable.append(LangDef("sid",      "",         "Sidamo",                  QObject::tr("Sidamo")));
555
        m_langTable.append(LangDef("szl",      "",         "Silesian",                QObject::tr("Silesian")));
556
        m_langTable.append(LangDef("stv",      "",         "Silt'e",                  QObject::tr("Silt'e")));
557
        m_langTable.append(LangDef("sd",       "",         "Sindhi",                  QObject::tr("Sindhi")));
21908 craig 558
        m_langTable.append(LangDef("si",       "",         "Sinhala",                 QObject::tr("Sinhala")));
21909 craig 559
        m_langTable.append(LangDef("scs",      "",         "Slavey (North)",          QObject::tr("Slavey (North)")));
560
        m_langTable.append(LangDef("xsl",      "",         "Slavey (South)",          QObject::tr("Slavey (South)")));
21294 craig 561
        m_langTable.append(LangDef("sk",       "sk_SK",    "Slovak",                  QObject::tr("Slovak")));
562
        m_langTable.append(LangDef("sl",       "sl_SL",    "Slovenian",               QObject::tr("Slovenian")));
21909 craig 563
        m_langTable.append(LangDef("gru",      "",         "Sodo Gurage",             QObject::tr("Sodo Gurage")));
21294 craig 564
        m_langTable.append(LangDef("so",       "",         "Somali",                  QObject::tr("Somali")));
21909 craig 565
        m_langTable.append(LangDef("xog",      "",         "Soga",                    QObject::tr("Soga")));
21294 craig 566
        m_langTable.append(LangDef("sop",      "",         "Songe",                   QObject::tr("Songe")));
21909 craig 567
        m_langTable.append(LangDef("snk",      "",         "Soninke",                 QObject::tr("Soninke")));
568
        m_langTable.append(LangDef("nso",      "",         "Sotho Northern",          QObject::tr("Sotho Northern")));
21294 craig 569
        m_langTable.append(LangDef("st",       "",         "Sotho Southern",          QObject::tr("Sotho Southern")));
21909 craig 570
        m_langTable.append(LangDef("es",       "es_ES",    "Spanish",                 QObject::tr("Spanish")));
571
        m_langTable.append(LangDef("es",       "es_ANY",   "Spanish",                 QObject::tr("Spanish")));
572
        m_langTable.append(LangDef("es_AR",    "",         "Spanish (Argentina)",     QObject::tr("Spanish (Argentina)")));
573
        m_langTable.append(LangDef("es_LA",    "",         "Spanish (Latin)",         QObject::tr("Spanish (Latin)")));
574
        m_langTable.append(LangDef("aii",      "",         "Swadaya Aramaic",         QObject::tr("Swadaya Aramaic")));
575
        m_langTable.append(LangDef("suk",      "",         "Sukama",                  QObject::tr("Sukama")));
21908 craig 576
        m_langTable.append(LangDef("su",       "",         "Sundanese",               QObject::tr("Sundanese")));
21294 craig 577
        m_langTable.append(LangDef("suq",      "",         "Suri",                    QObject::tr("Suri")));
578
        m_langTable.append(LangDef("sva",      "",         "Svan",                    QObject::tr("Svan")));
579
        m_langTable.append(LangDef("sw",       "",         "Swahili",                 QObject::tr("Swahili")));
21909 craig 580
        m_langTable.append(LangDef("sv",       "",         "Swedish",                 QObject::tr("Swedish")));
581
        m_langTable.append(LangDef("ss",       "",         "Swati",                   QObject::tr("Swati")));
21294 craig 582
        m_langTable.append(LangDef("syl",      "",         "Sylheti",                 QObject::tr("Sylheti")));
583
        m_langTable.append(LangDef("syr",      "",         "Syriac",                  QObject::tr("Syriac")));
21909 craig 584
        m_langTable.append(LangDef("tyz",      "",         "Tày",                     QObject::trUtf8("T\303\240y")));
21294 craig 585
        m_langTable.append(LangDef("tab",      "",         "Tabasaran",               QObject::tr("Tabasaran")));
21909 craig 586
        m_langTable.append(LangDef("tl",       "",         "Tagalog",                 QObject::tr("Tagalog")));
587
        m_langTable.append(LangDef("ty",       "",         "Tahitian",                QObject::tr("Tahitian")));
21294 craig 588
        m_langTable.append(LangDef("tdd",      "",         "Tai Nüa",                 QObject::trUtf8("Tai N\303\274a")));
21909 craig 589
        m_langTable.append(LangDef("tg",       "",         "Tajik",                   QObject::tr("Tajik")));
590
        m_langTable.append(LangDef("tmh",      "",         "Tamashek",                QObject::tr("Tamashek")));
591
        m_langTable.append(LangDef("ta",       "",         "Tamil",                   QObject::tr("Tamil")));
592
        m_langTable.append(LangDef("tt",       "",         "Tatar",                   QObject::tr("Tatar")));
21294 craig 593
        m_langTable.append(LangDef("te",       "te_IN",    "Telugu",                  QObject::tr("Telugu")));
594
        m_langTable.append(LangDef("tem",      "",         "Temne",                   QObject::tr("Temne")));
595
        m_langTable.append(LangDef("tet",      "",         "Tetum",                   QObject::tr("Tetum")));
596
        m_langTable.append(LangDef("th",       "th_TH",    "Thai",                    QObject::tr("Thai")));
21909 craig 597
        m_langTable.append(LangDef("nod",      "",         "Thai Northern",           QObject::tr("Thai Northern")));
598
        m_langTable.append(LangDef("bo",       "",         "Tibetan",                 QObject::tr("Tibetan")));
599
        m_langTable.append(LangDef("tig",      "",         "Tigre",                   QObject::tr("Tigre")));
21908 craig 600
        m_langTable.append(LangDef("ti",       "",         "Tigrinya",                QObject::tr("Tigrinya")));
21294 craig 601
        m_langTable.append(LangDef("tiv",      "",         "Tiv",                     QObject::tr("Tiv")));
21909 craig 602
        m_langTable.append(LangDef("tpi",      "",         "Tok Pisin",               QObject::tr("Tok Pisin")));
603
        m_langTable.append(LangDef("to",       "",         "Tonga (Tonga Islands)",   QObject::tr("Tonga (Tonga Islands)")));
604
        m_langTable.append(LangDef("ts",       "",         "Tsonga",                  QObject::tr("Tsonga")));
21908 craig 605
        m_langTable.append(LangDef("tn",       "",         "Tswana",                  QObject::tr("Tswana")));
21909 craig 606
        m_langTable.append(LangDef("tcy",      "",         "Tulu",                    QObject::tr("Tulu")));
607
        m_langTable.append(LangDef("tum",      "",         "Tumbuka",                 QObject::tr("Tumbuka")));
21908 craig 608
        m_langTable.append(LangDef("tr",       "tr_TR",    "Turkish",                 QObject::tr("Turkish")));
21909 craig 609
        m_langTable.append(LangDef("tk",       "",         "Turkmen",                 QObject::tr("Turkmen")));
21908 craig 610
        m_langTable.append(LangDef("tru",      "",         "Turoyo Aramaic",          QObject::tr("Turoyo Aramaic")));
21909 craig 611
        m_langTable.append(LangDef("tyv",      "",         "Tuvin",                   QObject::tr("Tuvin")));
21908 craig 612
        m_langTable.append(LangDef("tw",       "",         "Twi",                     QObject::tr("Twi")));
21909 craig 613
        m_langTable.append(LangDef("uk",       "uk_UA",    "Ukranian",                QObject::tr("Ukranian")));
614
        m_langTable.append(LangDef("sxu",      "",         "Upper Saxon",             QObject::tr("Upper Saxon")));
615
        m_langTable.append(LangDef("hsb",      "",         "Upper Sorbian",           QObject::tr("Upper Sorbian")));
21294 craig 616
        m_langTable.append(LangDef("udm",      "",         "Udmurt",                  QObject::tr("Udmurt")));
617
        m_langTable.append(LangDef("ug",       "",         "Uighur",                  QObject::tr("Uighur")));
618
        m_langTable.append(LangDef("umb",      "",         "Umbundu",                 QObject::tr("Umbundu")));
619
        m_langTable.append(LangDef("ur",       "",         "Urdu",                    QObject::tr("Urdu")));
21909 craig 620
        m_langTable.append(LangDef("uk",       "",         "Ukrainian",               QObject::tr("Ukrainian")));
21294 craig 621
        m_langTable.append(LangDef("uz",       "",         "Uzbek",                   QObject::tr("Uzbek")));
622
        m_langTable.append(LangDef("uzn",      "",         "Uzbek (Northern)",        QObject::tr("Uzbek (Northern)")));
623
        m_langTable.append(LangDef("uzs",      "",         "Uzbek (Southern)",        QObject::tr("Uzbek (Southern)")));
624
        m_langTable.append(LangDef("ve",       "",         "Venda",                   QObject::tr("Venda")));
625
        m_langTable.append(LangDef("vec",      "",         "Venetian",                QObject::tr("Venetian")));
626
        m_langTable.append(LangDef("vi",       "",         "Vietnamese",              QObject::tr("Vietnamese")));
627
        m_langTable.append(LangDef("vls",      "",         "Vlaams",                  QObject::tr("Vlaams")));
21909 craig 628
        m_langTable.append(LangDef("rmy",      "",         "Vlax Romani",             QObject::tr("Vlax Romani")));
21294 craig 629
        m_langTable.append(LangDef("vo",       "",         "Volapük",                 QObject::trUtf8("Volap\303\274k")));
630
        m_langTable.append(LangDef("vro",      "",         "Võro",                    QObject::trUtf8("V\303\265ro")));
21909 craig 631
        m_langTable.append(LangDef("wbm",      "",         "Wa",                      QObject::tr("Wa")));
632
        m_langTable.append(LangDef("wbr",      "",         "Wagdi",                   QObject::tr("Wagdi")));
21908 craig 633
        m_langTable.append(LangDef("wa",       "",         "Walloon",                 QObject::tr("Walloon")));
634
        m_langTable.append(LangDef("war",      "",         "Waray (Philippines)",     QObject::tr("Waray (Philippines)")));
21909 craig 635
        m_langTable.append(LangDef("guc",      "cy_GB",    "Wayuu",                   QObject::tr("Wayuu")));
636
        m_langTable.append(LangDef("cy",       "cy_GB",    "Welsh",                   QObject::tr("Welsh")));
21294 craig 637
        m_langTable.append(LangDef("wle",      "",         "Wolane",                  QObject::tr("Wolane")));
638
        m_langTable.append(LangDef("wo",       "",         "Wolof",                   QObject::tr("Wolof")));
21909 craig 639
        m_langTable.append(LangDef("xwo",      "",         "Written Oirat (Todo)",    QObject::tr("Written Oirat (Todo)")));
21908 craig 640
        m_langTable.append(LangDef("xh",       "",         "Xhosa",                   QObject::tr("Xhosa")));
21294 craig 641
        m_langTable.append(LangDef("yao",      "",         "Yao",                     QObject::tr("Yao")));
21909 craig 642
        m_langTable.append(LangDef("sah",      "",         "Yakut",                   QObject::tr("Yakut")));
21294 craig 643
        m_langTable.append(LangDef("yi",       "",         "Yiddish",                 QObject::tr("Yiddish")));
644
        m_langTable.append(LangDef("yo",       "",         "Yoruba",                  QObject::tr("Yoruba")));
21909 craig 645
        m_langTable.append(LangDef("zne",      "",         "Zande",                   QObject::tr("Zande")));
646
        m_langTable.append(LangDef("dje",      "cy_GB",    "Zarma",                   QObject::tr("Zarma")));
647
        m_langTable.append(LangDef("zea",      "",         "Zeeuws",                  QObject::tr("Zeeuws")));
21908 craig 648
        m_langTable.append(LangDef("za",       "",         "Zhuang",                  QObject::tr("Zhuang")));
21294 craig 649
        m_langTable.append(LangDef("zu",       "",         "Zulu",                    QObject::tr("Zulu")));
663 cbradney 650
}
651
 
17798 craig 652
void LanguageManager::generateInstalledGUILangList()
663 cbradney 653
{
10997 jghali 654
        QString path = ScPaths::instance().translationDir();
3776 cbradney 655
        QString langAbbrev;
656
        QMap<QString, langPair>::Iterator it;
657
        QDir dir(path , "*.*", QDir::Name, QDir::Files | QDir::NoSymLinks);
658
        if (dir.exists() && (dir.count() != 0))
10617 cbradney 659
        {
3776 cbradney 660
                for (uint i = 0; i < dir.count(); ++i)
1303 cbradney 661
                {
3776 cbradney 662
                        QFileInfo file(path + dir[i]);
10617 cbradney 663
                        if (file.suffix().toLower() == "qm")
1303 cbradney 664
                        {
10617 cbradney 665
                                langAbbrev = file.completeSuffix().remove(".qm");
17798 craig 666
                                int j=langTableIndex(langAbbrev);
667
                                if (j!=-1)
668
                                {
20653 craig 669
                                        m_langTable[j].m_transAvailable=true;
670
                                        m_langTable[j].m_transFile=file.absoluteFilePath();
17798 craig 671
                                        //qDebug()<<"Found installed GUI translation file:"<<langAbbrev<<" : "<<langTable[j].m_transFile<<langTable[j].m_transName;
672
                                }
3776 cbradney 673
                        }
674
                }
10617 cbradney 675
        }
663 cbradney 676
}
677
 
17798 craig 678
void LanguageManager::generateInstalledHyphLangList()
679
{
19803 craig 680
        QStringList dictionaryPaths;
681
        bool dictPathFound=findHyphDictionaries(dictionaryPaths);
682
        if (!dictPathFound)
17798 craig 683
        {
19803 craig 684
//              qDebug()<<"No preinstalled hyphenation dictonaries or paths found";
17798 craig 685
                return;
686
        }
19803 craig 687
        QMap<QString, QString> dictionaryMap;
688
        findHyphDictionarySets(dictionaryPaths, dictionaryMap);
689
        if (dictionaryMap.count()==0)
690
                return;
17798 craig 691
 
19803 craig 692
        QMap<QString, QString>::iterator it = dictionaryMap.begin();
17798 craig 693
//      qDebug()<<"Installed Hyphenation Dictonaries:";
19803 craig 694
        while (it != dictionaryMap.end())
17798 craig 695
        {
19803 craig 696
                int j=langTableIndex(it.key());
17798 craig 697
                if (j!=-1)
698
                {
20653 craig 699
                        m_langTable[j].m_hyphAvailable=true;
700
                        m_langTable[j].m_hyphFile=it.value();
19803 craig 701
                        //qDebug()<<"Found installed hyphenation dictionary:"<<it.key()<<" : "<<it.value();
17798 craig 702
                }
19803 craig 703
                ++it;
17798 craig 704
        }
705
}
706
 
707
void LanguageManager::generateInstalledSpellLangList()
708
{
709
        QStringList dictionaryPaths;
710
        bool dictPathFound=findSpellingDictionaries(dictionaryPaths);
711
        if (!dictPathFound)
712
        {
713
                qDebug()<<"No preinstalled spelling dictonaries or paths found";
714
                return;
715
        }
716
        QMap<QString, QString> dictionaryMap;
717
        findSpellingDictionarySets(dictionaryPaths, dictionaryMap);
718
        if (dictionaryMap.count()==0)
719
                return;
720
 
721
        QMap<QString, QString>::iterator it = dictionaryMap.begin();
722
//      qDebug()<<"Installed Spelling Dictonaries:";
723
        while (it != dictionaryMap.end())
724
        {
725
                int j=langTableIndex(it.key());
726
                if (j!=-1)
727
                {
20653 craig 728
                        m_langTable[j].m_spellAvailable=true;
729
                        m_langTable[j].m_spellFile=it.value();
17798 craig 730
//                      qDebug()<<"Found installed spelling dictionary:"<<it.key()<<" : "<<it.value();
731
                }
732
                ++it;
733
        }
734
}
735
 
736
 
737
 
738
int LanguageManager::langTableIndex(const QString &abbrev)
739
{
740
//      qDebug()<<"langTableIndex: Trying to find:"<<abbrev;
20653 craig 741
        for (int i = 0; i < m_langTable.size(); ++i)
17798 craig 742
        {
743
//              qDebug()<<abbrev<<langTable[i].m_priAbbrev<<langTable[i].m_altAbbrev;
20653 craig 744
                if (m_langTable[i].m_priAbbrev==abbrev || m_langTable[i].m_altAbbrev==abbrev)
17798 craig 745
                        return i;
746
        }
747
        return -1;
748
}
749
 
3776 cbradney 750
const QString LanguageManager::getLangFromAbbrev(QString langAbbrev, bool getTranslated)
663 cbradney 751
{
17798 craig 752
//      qDebug()<<"Trying to find:"<<langAbbrev;
753
        int i=langTableIndex(langAbbrev);
754
//      qDebug()<<"Index of"<<langAbbrev<<":"<<i;
755
        if (i==-1)
3776 cbradney 756
        {
17798 craig 757
                if (langAbbrev.length()>5)
758
                {
759
                        langAbbrev.truncate(5);
760
                        i=langTableIndex(langAbbrev);
761
                }
762
        }
763
        if (i!=-1)
764
        {
3776 cbradney 765
                if (getTranslated)
20653 craig 766
                        return m_langTable[i].m_transName;
3776 cbradney 767
                else
20653 craig 768
                        return m_langTable[i].m_name;
3776 cbradney 769
        }
17798 craig 770
        //qDebug()<<langAbbrev<<"not found";
771
        return "";
663 cbradney 772
}
773
 
21563 jghali 774
const QString LanguageManager::getAbbrevFromLang(QString lang, bool useInstalled)
663 cbradney 775
{
20653 craig 776
        for (int i = 0; i < m_langTable.size(); ++i)
3776 cbradney 777
        {
17798 craig 778
                if (useInstalled)
5072 cbradney 779
                {
20653 craig 780
                        if (m_langTable[i].m_transAvailable && (m_langTable[i].m_name==lang || m_langTable[i].m_transName==lang))
781
                                return m_langTable[i].m_priAbbrev;
5072 cbradney 782
                }
17798 craig 783
                else
7617 cbradney 784
                {
17798 craig 785
                        //qDebug()<<lang<<langTable[i].m_priAbbrev<<langTable[i].m_name<<langTable[i].m_transName;
20653 craig 786
                        if (m_langTable[i].m_name==lang || m_langTable[i].m_transName==lang)
787
                                return m_langTable[i].m_priAbbrev;
7617 cbradney 788
                }
789
        }
5781 cbradney 790
        return "";
663 cbradney 791
}
792
 
17798 craig 793
const QString LanguageManager::getLangFromTransLang(QString transLang)
13210 jghali 794
{
20653 craig 795
        for (int i = 0; i < m_langTable.size(); ++i)
13210 jghali 796
        {
20653 craig 797
                if (m_langTable[i].m_transName==transLang)
798
                        return m_langTable[i].m_name;
13210 jghali 799
        }
800
        return "";
801
}
802
 
12283 cbradney 803
const QString LanguageManager::getTransLangFromLang(QString lang)
804
{
20653 craig 805
        for (int i = 0; i < m_langTable.size(); ++i)
12283 cbradney 806
        {
20653 craig 807
                if (m_langTable[i].m_name==lang)
808
                        return m_langTable[i].m_transName;
12283 cbradney 809
        }
810
        return "";
811
}
812
 
17798 craig 813
const QString LanguageManager::getShortAbbrevFromAbbrev(QString langAbbrev)
814
{
815
        //      qDebug()<<"Trying to find:"<<langAbbrev;
17929 jghali 816
        int i = langTableIndex(langAbbrev);
17798 craig 817
        //      qDebug()<<"Index of"<<langAbbrev<<":"<<i;
17929 jghali 818
        if (i == -1)
819
        {
820
                if (langAbbrev.length()>5)
17798 craig 821
                {
17929 jghali 822
                        langAbbrev.truncate(5);
823
                        i=langTableIndex(langAbbrev);
17798 craig 824
                }
17929 jghali 825
        }
826
        if (i != -1)
20653 craig 827
                return m_langTable[i].m_priAbbrev;
17929 jghali 828
        //qDebug()<<langAbbrev<<"not found";
829
        return "";
17798 craig 830
}
831
 
22150 jghali 832
const QString LanguageManager::getShortAbbrevFromAbbrevDecomposition(QString langAbbrev)
833
{
834
        int tIndex = langTableIndex(langAbbrev);
835
        if (tIndex >= 0)
836
                return m_langTable[tIndex].m_priAbbrev;
837
 
838
        QStringList abbrevs = getAbbrevDecomposition(langAbbrev);
839
        for (int i = 1; i < abbrevs.count(); ++i)
840
        {
841
                tIndex = langTableIndex(abbrevs.at(i));
842
                if (tIndex >= 0)
843
                        return m_langTable[tIndex].m_priAbbrev;
844
        }
845
 
846
        return "";
847
}
848
 
17798 craig 849
const QString LanguageManager::getAlternativeAbbrevfromAbbrev(QString langAbbrev)
850
{
851
        int i=langTableIndex(langAbbrev);
852
        if (i!=-1)
20653 craig 853
                return m_langTable[i].m_altAbbrev;
17798 craig 854
        return "";
855
}
856
 
22150 jghali 857
QStringList LanguageManager::getAbbrevDecomposition(QString langAbbrev)
858
{
859
        QStringList abbrevs;
860
        abbrevs.append(langAbbrev);
861
 
862
        QString curAbbrev  = langAbbrev;
863
        QString delimiters = QString::fromLatin1("_.");
864
 
865
        while (true)
866
        {
867
                int rightMost = 0;
868
                for (int i = 0; i < delimiters.length(); i++)
869
                {
870
                        int k = curAbbrev.lastIndexOf(delimiters[i]);
871
                        if (k > rightMost)
872
                                rightMost = k;
873
                }
874
 
875
                if (rightMost == 0)
876
                        break;
877
 
878
                curAbbrev.truncate(rightMost);
879
                abbrevs.append(curAbbrev);
880
        }
881
        return abbrevs;
882
}
883
 
21897 craig 884
void LanguageManager::fillInstalledStringList(QStringList *stringListToFill)
663 cbradney 885
{
21897 craig 886
        if (!stringListToFill)
887
                return;
888
        for (int i = 0; i < m_langTable.size(); ++i)
889
                stringListToFill->append(m_langTable[i].m_transName);
890
}
891
 
892
void LanguageManager::fillInstalledGUIStringList(QStringList *stringListToFill)
893
{
894
        if (!stringListToFill)
895
                return;
896
        for (int i = 0; i < m_langTable.size(); ++i)
663 cbradney 897
        {
21897 craig 898
                if (m_langTable[i].m_transAvailable)
20653 craig 899
                        stringListToFill->append(m_langTable[i].m_transName);
663 cbradney 900
        }
901
}
902
 
21897 craig 903
void LanguageManager::fillInstalledHyphStringList(QStringList *stringListToFill)
663 cbradney 904
{
21897 craig 905
        if (!stringListToFill)
906
                return;
907
        for (int i = 0; i < m_langTable.size(); ++i)
17798 craig 908
        {
21897 craig 909
                if (m_langTable[i].m_hyphAvailable)
910
                        stringListToFill->append(m_langTable[i].m_transName);
17798 craig 911
        }
21897 craig 912
        stringListToFill->sort();
663 cbradney 913
}
6769 cbradney 914
 
21897 craig 915
void LanguageManager::fillInstalledSpellStringList(QStringList *stringListToFill)
17798 craig 916
{
21897 craig 917
        if (!stringListToFill)
918
                return;
919
        for (int i = 0; i < m_langTable.size(); ++i)
17798 craig 920
        {
21897 craig 921
                if (m_langTable[i].m_spellAvailable)
922
                        stringListToFill->append(m_langTable[i].m_transName);
17798 craig 923
        }
924
        stringListToFill->sort();
925
}
926
 
22063 jghali 927
bool LanguageManager::isAvailableTranslation(QString langAbbrev)
928
{
929
        if (langAbbrev == "en" || langAbbrev == "en_GB")
930
                return true;
931
 
932
        int i = langTableIndex(langAbbrev);
933
        if (i == -1)
934
        {
935
                if (langAbbrev.length() > 5)
936
                {
937
                        langAbbrev.truncate(5);
938
                        i = langTableIndex(langAbbrev);
939
                }
940
        }
941
        if (i !=-1)
942
                return m_langTable[i].m_transAvailable;
943
        return false;
944
}
945
 
17798 craig 946
QStringList LanguageManager::languageList(bool getTranslated)
947
{
948
        QStringList sl;
20653 craig 949
        for (int i = 0; i < m_langTable.size(); ++i)
17798 craig 950
        {
951
                if (getTranslated)
20653 craig 952
                        sl<<m_langTable[i].m_transName;
17798 craig 953
                else
20653 craig 954
                        sl<<m_langTable[i].m_name;
17798 craig 955
        }
956
        sl.sort();
957
        return sl;
958
}
959
 
960
void LanguageManager::printInstalledList()
961
{
20259 craig 962
        QFile f;
963
        f.open(stderr, QIODevice::WriteOnly);
964
        QTextStream ts(&f);
20653 craig 965
        for (int i = 0; i < m_langTable.size(); ++i)
20259 craig 966
        {
20653 craig 967
                ts << "  " << m_langTable[i].m_priAbbrev.leftJustified(8) << ": " << m_langTable[i].m_name;
20259 craig 968
                endl(ts);
969
        }
970
        endl(ts);
971
        f.close();
17798 craig 972
}
973
 
6769 cbradney 974
QString LanguageManager::numericSequence(QString seq)
975
{
976
        QString retSeq;
977
        const int nsBengali=0,nsDevanagari=1,nsGujarati=2,nsGurumukhi=3,nsKannada=4,nsMalayalam=5,nsOriya=6,nsTamil=7,nsTelugu=8,nsTibetan=9,nsLepcha=10;
978
        switch (1)
979
        {
980
                case nsBengali:
981
                        retSeq+="";
982
                        break;
983
                case nsDevanagari:
984
                        retSeq+="०१२३४५६७८९";
985
                        break;
986
                case nsGujarati:
987
                        retSeq+="૦૧૨૩૪૫૬૭૮૯";
988
                        break;
989
                case nsGurumukhi:
990
                        retSeq+="੦੧੨੩੪੫੬੭੮੯";
991
                        break;
992
                case nsKannada:
993
                        retSeq+="";
994
                        break;
995
                case nsMalayalam:
996
                        retSeq+="";
997
                        break;
998
                case nsOriya:
999
                        retSeq+="";
1000
                        break;
1001
                case nsTamil:
1002
                        retSeq+="";
1003
                        break;
1004
                case nsTelugu:
1005
                        retSeq+="";
1006
                        break;
1007
                case nsTibetan:
1008
                        retSeq+="";
1009
                        break;
1010
                case nsLepcha:
1011
                        retSeq+="";
1012
                        break;
1013
                default:
1014
                        retSeq="0123456789";
1015
                        break;
1016
        }
1017
        return retSeq;
1018
}
1019
 
17798 craig 1020
bool LanguageManager::findSpellingDictionaries(QStringList &sl)
17550 craig 1021
{
1022
        sl=ScPaths::instance().spellDirs();
1023
        if (sl.count()==0)
1024
                return false;
1025
        return true;
1026
}
1027
 
17798 craig 1028
void LanguageManager::findSpellingDictionarySets(QStringList &dictionaryPaths, QMap<QString, QString> &dictionaryMap)
17550 craig 1029
{
1030
        for (int i=0; i<dictionaryPaths.count(); ++i)
1031
        {
1032
                // Find the dic and aff files in the location
1033
                QDir dictLocation(dictionaryPaths.at(i));
1034
                QStringList dictFilters("*.dic");
1035
                QStringList dictList(dictLocation.entryList(dictFilters, QDir::Files, QDir::Name));
1036
                dictList.replaceInStrings(".dic","");
1037
 
1038
                //Ensure we have aff+dic file pairs, remove any hyphenation dictionaries from the list
21942 craig 1039
 
1040
                foreach(const QString& dictName, dictList)
17550 craig 1041
                {
1042
                        if (!QFile::exists(dictionaryPaths.at(i)+dictName+".aff"))
1043
                                dictList.removeAll(dictName);
1044
                        else
1045
                        {
1046
                                if (!dictionaryMap.contains(dictName))
17798 craig 1047
                                {
1048
                                        if (dictName.length()<=5)
1049
                                        {
1050
                                                //QString shortAbbrev(LanguageManager::getShortAbbrevFromAbbrev(dictName));
1051
                                                //qDebug()<<"findSpellingDictionarySets"<<dictName<<shortAbbrev;
1052
                                                dictionaryMap.insert(dictName, dictionaryPaths.at(i)+dictName);
1053
                                                //dictionaryMap.insert(shortAbbrev, dictionaryPaths.at(i)+dictName);
1054
                                        }
1055
                                        //qDebug()<<"Spell Finder:"<<dictName<<dictionaryPaths.at(i)+dictName;
1056
                                        if (dictName.length()>5)
1057
                                        {
1058
                                                QString shortAbbrev(LanguageManager::getShortAbbrevFromAbbrev(dictName));
1059
                                                //qDebug()<<shortAbbrev;
1060
                                                dictionaryMap.insert(shortAbbrev, dictionaryPaths.at(i)+dictName);
1061
                                        }
1062
                                }
17550 craig 1063
                        }
1064
                }
1065
//              qDebug()<<"Number of dictionaries/AFFs found in"<<dictionaryPaths.at(i)<<":"<<dictList.count();
1066
        }
17798 craig 1067
        //Now rescan dictionary map for any extra languages we can support with the files we have
1068
        QMap<QString, QString>::iterator it = dictionaryMap.begin();
1069
        while (it != dictionaryMap.end())
1070
        {
1071
                QString lang(it.key());
1072
                if (lang.length()==5)
1073
                {
1074
                        QString shortAbbrev(LanguageManager::getShortAbbrevFromAbbrev(lang));
1075
                        if (!dictionaryMap.contains(shortAbbrev))
1076
                        {
1077
                                //qDebug()<<"Adding extra spelling definitions for:"<<lang<<":"<<shortAbbrev;
1078
                                dictionaryMap.insert(shortAbbrev, it.value());
1079
                        }
1080
                        //else
1081
                                //qDebug()<<"Short abbreviation:"<<shortAbbrev<<"already exists for:"<<lang;
1082
                }
1083
                if (lang.length()==2)
1084
                {
1085
                        QString altAbbrev(LanguageManager::getAlternativeAbbrevfromAbbrev(lang));
1086
                        if (!dictionaryMap.contains(altAbbrev))
1087
                        {
1088
                                //qDebug()<<"Adding extra spelling definitions for:"<<lang<<":"<<altAbbrev;
1089
                                dictionaryMap.insert(altAbbrev, it.value());
1090
                        }
1091
                        //else
1092
                                //qDebug()<<"Alt. abbreviation:"<<altAbbrev<<"already exists for:"<<lang;
1093
                }
1094
                ++it;
1095
        }
17550 craig 1096
}
1097
 
19800 craig 1098
bool LanguageManager::findHyphDictionaries(QStringList& sl)
1099
{
1100
        sl=ScPaths::instance().hyphDirs();
1101
        if (sl.count()==0)
1102
                return false;
1103
        return true;
1104
}
1105
 
1106
void LanguageManager::findHyphDictionarySets(QStringList& dictionaryPaths, QMap<QString, QString>& dictionaryMap)
1107
{
1108
        for (int i=0; i<dictionaryPaths.count(); ++i)
1109
        {
1110
                // Find the dic and aff files in the location
1111
                QDir dictLocation(dictionaryPaths.at(i));
1112
                QStringList dictFilters("hyph*.dic");
21526 craig 1113
                if (dictionaryPaths.at(i)==ScPaths::userDictDir(ScPaths::Hyph, false))
20367 craig 1114
                                dictFilters.append("*.dic");
19800 craig 1115
                QStringList dictList(dictLocation.entryList(dictFilters, QDir::Files, QDir::Name));
1116
                dictList.replaceInStrings(".dic","");
21942 craig 1117
                foreach(const QString& dn, dictList)
19800 craig 1118
                {
20367 craig 1119
//                      qDebug()<<dn;
1120
                        QString dictName;
1121
                        if (dn.startsWith("hyph_"))
1122
                                dictName=dn.section('_',1);
1123
                        else
1124
                                dictName=dn;
19800 craig 1125
                        if (!dictionaryMap.contains(dictName))
1126
                        {
1127
                                if (dictName.length()<=2)
1128
                                {
19803 craig 1129
                                        dictionaryMap.insert(dictName, dictionaryPaths.at(i)+dn+".dic");
19800 craig 1130
                                }
1131
                                if (dictName.length()>2)
1132
                                {
1133
                                        QString shortAbbrev(LanguageManager::getShortAbbrevFromAbbrev(dictName));
19803 craig 1134
                                        dictionaryMap.insert(shortAbbrev, dictionaryPaths.at(i)+dn+".dic");
19800 craig 1135
                                }
1136
                        }
1137
                }
1138
        }
1139
}
1140
 
7669 cbradney 1141
LanguageManager::~LanguageManager()
1142
{
20653 craig 1143
        m_langTable.clear();
7669 cbradney 1144
}
1145
 
17798 craig 1146
const QString LanguageManager::getHyphFilename(const QString & langAbbrev)
1147
{
1148
        int j=langTableIndex(langAbbrev);
20653 craig 1149
        if (j!=-1 && m_langTable[j].m_hyphAvailable)
17798 craig 1150
        {
1151
//              qDebug()<<"Found requested hyphenation dictionary:"<<langAbbrev<<" : "<<langTable[j].m_hyphFile;
20653 craig 1152
                return m_langTable[j].m_hyphFile;
17798 craig 1153
        }
1154
        return QString();
1155
}
1156