Subversion Repositories Scribus

Rev

Rev 6794 | Rev 7617 | 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>
23
 
24
#include <qdir.h>
25
#include <qfileinfo.h>
26
#include <qmap.h>
27
#include <qobject.h>
28
#include <qstringlist.h> 
29
 
2688 craig 30
#include "scconfig.h"
663 cbradney 31
#include "langmgr.h"
1693 craig 32
#include "scpaths.h"
663 cbradney 33
 
2010 cbradney 34
void LanguageManager::init(bool generateInstalledList)
663 cbradney 35
{
3776 cbradney 36
        //generateUntranslatedLangList();
663 cbradney 37
        generateLangList();
2010 cbradney 38
        if (generateInstalledList)
39
                generateInstalledLangList();
663 cbradney 40
}
41
 
42
void LanguageManager::generateLangList()
43
{
5516 cbradney 44
        langList.insert("af",       langPair("Afrikaans",           QObject::tr( "Afrikaans" )) );
45
        langList.insert("ar",       langPair("Arabic",              QObject::tr( "Arabic" )) );
46
        langList.insert("sq",       langPair("Albanian",            QObject::tr( "Albanian" )) );
47
        langList.insert("eu",       langPair("Basque",              QObject::tr( "Basque" )) );
48
        langList.insert("bg",       langPair("Bulgarian",           QObject::tr( "Bulgarian" )) );
6677 cbradney 49
        langList.insert("br",       langPair("Breton",              QObject::tr( "Breton" )) );
5516 cbradney 50
        langList.insert("ca",       langPair("Catalan",             QObject::tr( "Catalan" )) );
51
        langList.insert("zh",       langPair("Chinese",             QObject::tr( "Chinese" )) );
52
        langList.insert("hr",       langPair("Croatian",            QObject::tr( "Croatian" )) );
53
        langList.insert("cs",       langPair("Czech",               QObject::tr( "Czech" )) );
54
        langList.insert("cs_CZ",    langPair("Czech",               QObject::tr( "Czech" )) );
55
        langList.insert("da",       langPair("Danish",              QObject::tr( "Danish" )) );
56
        langList.insert("da_DK",    langPair("Danish",              QObject::tr( "Danish" )) );
57
        langList.insert("dz",       langPair("Dzongkha",            QObject::tr( "Dzongkha" )) );
58
        langList.insert("nl",       langPair("Dutch",               QObject::tr( "Dutch" )) );
59
        langList.insert("en",       langPair("English",             QObject::tr( "English" )) );
6773 cbradney 60
        langList.insert("en_AU",    langPair("English (Australian)",   QObject::tr( "English (Australian)" )) );
5516 cbradney 61
        langList.insert("en_GB",    langPair("English (British)",   QObject::tr( "English (British)" )) );
6769 cbradney 62
        langList.insert("en_US",    langPair("English (American)",  QObject::tr( "English (American)" )) );
5516 cbradney 63
        langList.insert("eo",       langPair("Esperanto",           QObject::tr( "Esperanto" )) );
64
        langList.insert("et",       langPair("Estonian",            QObject::tr( "Estonian" )) );
65
        langList.insert("de",       langPair("German",              QObject::tr( "German" )) );
7586 cbradney 66
        langList.insert("de_CH",    langPair("German",              QObject::tr( "German (Swiss)" )) );
5516 cbradney 67
        langList.insert("de_ol",    langPair("German (Trad.)",      QObject::tr( "German (Trad.)" )) );
68
        langList.insert("fi",       langPair("Finnish",             QObject::tr( "Finnish" )) );
69
        langList.insert("fr",       langPair("French",              QObject::tr( "French" )) );
70
        langList.insert("ga",       langPair("Galician",            QObject::tr( "Galician" )) );
71
        langList.insert("galician", langPair("Galician",            QObject::tr( "Galician" )) );
72
        langList.insert("gl",       langPair("Galician",            QObject::tr( "Galician" )) );
73
        langList.insert("el",       langPair("Greek",               QObject::tr( "Greek" )) );
74
        langList.insert("hu",       langPair("Hungarian",           QObject::tr( "Hungarian" )) );
6254 mrdocs 75
        langList.insert("ia",       langPair("Latin",               QObject::tr( "Latin" )) );
5516 cbradney 76
        langList.insert("is",       langPair("Icelandic",           QObject::tr( "Icelandic" )) );
77
        langList.insert("id",       langPair("Indonesian",          QObject::tr( "Indonesian" )) );
78
        langList.insert("it",       langPair("Italian",             QObject::tr( "Italian" )) );
79
        langList.insert("ja",       langPair("Japanese",            QObject::tr( "Japanese" )) );
80
        langList.insert("ko",       langPair("Korean",              QObject::tr( "Korean" )) );
81
        langList.insert("lt",       langPair("Lithuanian",          QObject::tr( "Lithuanian" )) );
82
        langList.insert("lt_LT",    langPair("Lithuanian",          QObject::tr( "Lithuanian" )) );
83
        langList.insert("lu",       langPair("Luxembourgish",       QObject::tr( "Luxembourgish" )) );
6261 cbradney 84
        //We might need &#00E5; for this accented a
6794 cbradney 85
        langList.insert("nb",       langPair("Norwegian (Bokmål)",  QObject::trUtf8( "Norwegian (Bokmål)" )) );
86
        langList.insert("nb_NO",    langPair("Norwegian (Bokmål)",  QObject::trUtf8( "Norwegian (Bokmål)" )) );
5516 cbradney 87
        langList.insert("nn",       langPair("Norwegian (Nnyorsk)", QObject::tr( "Norwegian (Nnyorsk)" )) );
88
        langList.insert("nn_NO",    langPair("Norwegian (Nnyorsk)", QObject::tr( "Norwegian (Nnyorsk)" )) );
89
        langList.insert("no",       langPair("Norwegian",           QObject::tr( "Norwegian" )) );
90
        langList.insert("no_NO",    langPair("Norwegian",           QObject::tr( "Norwegian" )) );
91
        langList.insert("pl",       langPair("Polish",              QObject::tr( "Polish" )) );
92
        langList.insert("pl_PL",    langPair("Polish",              QObject::tr( "Polish" )) );
93
        langList.insert("pt",       langPair("Portuguese",          QObject::tr( "Portuguese" )) );
94
        langList.insert("pt_BR",    langPair("Portuguese (BR)",     QObject::tr( "Portuguese (BR)" )) );
6254 mrdocs 95
        langList.insert("ro",       langPair("Romanian",            QObject::tr( "Romanian" )) );
5516 cbradney 96
        langList.insert("ru",       langPair("Russian",             QObject::tr( "Russian" )) );
97
        langList.insert("se",       langPair("Swedish",             QObject::tr( "Swedish" )) );
98
        langList.insert("es",       langPair("Spanish",             QObject::tr( "Spanish" )) );
99
        langList.insert("es_ES",    langPair("Spanish",             QObject::tr( "Spanish" )) );
100
        langList.insert("es_LA",    langPair("Spanish (Latin)",     QObject::tr( "Spanish (Latin)" )) );
101
        langList.insert("sk",       langPair("Slovak",              QObject::tr( "Slovak" )) );
102
        langList.insert("sl",       langPair("Slovenian",           QObject::tr( "Slovenian" )) );
103
        langList.insert("sr",       langPair("Serbian",             QObject::tr( "Serbian" )) );
104
        langList.insert("sv",       langPair("Swedish",             QObject::tr( "Swedish" )) );
105
        langList.insert("th",       langPair("Thai",                QObject::tr( "Thai" )) );
106
        langList.insert("th_TH",    langPair("Thai",                QObject::tr( "Thai" )) );
107
        langList.insert("tr",       langPair("Turkish",             QObject::tr( "Turkish" )) );
108
        langList.insert("tr_TR",    langPair("Turkish",             QObject::tr( "Turkish" )) );
109
        langList.insert("uk",       langPair("Ukranian",            QObject::tr( "Ukranian" )) );
110
        langList.insert("cy",       langPair("Welsh",               QObject::tr( "Welsh" )) );
663 cbradney 111
}
112
 
113
void LanguageManager::generateInstalledLangList()
114
{
3776 cbradney 115
        QString path = ScPaths::instance().libDir();
116
        QString langAbbrev;
117
        QMap<QString, langPair>::Iterator it;
663 cbradney 118
 
3776 cbradney 119
        QDir dir(path , "*.*", QDir::Name, QDir::Files | QDir::NoSymLinks);
120
        if (dir.exists() && (dir.count() != 0))
121
                for (uint i = 0; i < dir.count(); ++i)
1303 cbradney 122
                {
3776 cbradney 123
                        QFileInfo file(path + dir[i]);
124
                        if (file.extension(false).lower() == "qm")
1303 cbradney 125
                        {
3776 cbradney 126
                                langAbbrev = file.extension().remove(".qm");
127
                                if ((it=langList.find(langAbbrev))!=langList.end())
128
                                                installedLangList.insert(it.key(), it.data().second);
129
                        }
130
                }
663 cbradney 131
}
132
 
3776 cbradney 133
const QString LanguageManager::getLangFromAbbrev(QString langAbbrev, bool getTranslated)
663 cbradney 134
{
3776 cbradney 135
        QMap<QString, langPair>::Iterator it;
663 cbradney 136
        if ((it=langList.find(langAbbrev))!=langList.end())
3776 cbradney 137
        {
138
                if (getTranslated)
139
                        return it.data().second;
140
                else
141
                        return it.data().first;
142
        }
663 cbradney 143
        else
2010 cbradney 144
                return "";     
663 cbradney 145
}
146
 
3776 cbradney 147
const QString LanguageManager::getAbbrevFromLang(QString lang, bool getTranslated)
663 cbradney 148
{
3776 cbradney 149
        QMap<QString, langPair>::Iterator it;
663 cbradney 150
        for (it=langList.begin();it!=langList.end();++it)
3776 cbradney 151
        {
5072 cbradney 152
                if (installedLangList.find(it.key()) != installedLangList.end())
153
                {
154
                        if (getTranslated && it.data().second==lang)
155
                                return it.key();
156
                        if (!getTranslated && it.data().first==lang)
157
                                return it.key();
158
                }
3776 cbradney 159
        }
5781 cbradney 160
        return "";
663 cbradney 161
}
162
 
163
void LanguageManager::fillInstalledStringList(QStringList *stringListToFill, bool addDefaults)
164
{
165
        if (stringListToFill)
166
        {
167
                QMap<QString, QString>::Iterator it;
168
 
169
                if (addDefaults)
170
                {
171
                        stringListToFill->append("");
172
                        stringListToFill->append( QObject::tr( "English" ));
173
                }
174
 
175
                for (it=installedLangList.begin();it!=installedLangList.end();++it)
176
                        stringListToFill->append(it.data());
177
        }
178
}
179
 
180
void LanguageManager::printInstalledList()
181
{
182
        QMap<QString, QString>::Iterator it;
183
 
184
        for (it=installedLangList.begin();it!=installedLangList.end();++it)
185
                std::cout << it.key().leftJustify(6) << ": " << it.data() << std::endl;
186
}
6769 cbradney 187
 
188
QString LanguageManager::numericSequence(QString seq)
189
{
190
        QString retSeq;
191
        const int nsBengali=0,nsDevanagari=1,nsGujarati=2,nsGurumukhi=3,nsKannada=4,nsMalayalam=5,nsOriya=6,nsTamil=7,nsTelugu=8,nsTibetan=9,nsLepcha=10;
192
        switch (1)
193
        {
194
                case nsBengali:
195
                        retSeq+="";
196
                        break;
197
                case nsDevanagari:
198
                        retSeq+="०१२३४५६७८९";
199
                        break;
200
                case nsGujarati:
201
                        retSeq+="૦૧૨૩૪૫૬૭૮૯";
202
                        break;
203
                case nsGurumukhi:
204
                        retSeq+="੦੧੨੩੪੫੬੭੮੯";
205
                        break;
206
                case nsKannada:
207
                        retSeq+="";
208
                        break;
209
                case nsMalayalam:
210
                        retSeq+="";
211
                        break;
212
                case nsOriya:
213
                        retSeq+="";
214
                        break;
215
                case nsTamil:
216
                        retSeq+="";
217
                        break;
218
                case nsTelugu:
219
                        retSeq+="";
220
                        break;
221
                case nsTibetan:
222
                        retSeq+="";
223
                        break;
224
                case nsLepcha:
225
                        retSeq+="";
226
                        break;
227
                default:
228
                        retSeq="0123456789";
229
                        break;
230
        }
231
        return retSeq;
232
}
233