32 #include <QtCore/QHash>
33 #include <QtCore/QMap>
35 #define DEFAULT_CONFIG_FILE "sonnetrc"
57 if (s_loader.isDestroyed()) {
69 d->settings->restore(&config);
77 delete d->settings; d->settings = 0;
82 const QString& clientName)
const
86 bool ddefault =
false;
88 if (plang.isEmpty()) {
89 plang = d->settings->defaultLanguage();
91 if (clientName == d->settings->defaultClient() &&
92 plang == d->settings->defaultLanguage()) {
96 const QList<Client*> lClients = d->languageClients[plang];
98 if (lClients.isEmpty()) {
99 kError()<<
"No language dictionaries for the language : "
104 QListIterator<Client*> itr(lClients);
105 while (itr.hasNext()) {
106 Client* item = itr.next();
107 if (!pclient.isEmpty()) {
108 if (pclient == item->
name()) {
130 return d->languageClients.keys();
135 QString currentDictionary = langCode,
141 QByteArray variantEnglish;
147 struct variantListType
149 const char* variantShortName;
150 const char* variantEnglishName;
153 const variantListType variantList[] = {
154 {
"40",
I18N_NOOP2(
"dictionary variant",
"40") },
155 {
"60",
I18N_NOOP2(
"dictionary variant",
"60") },
156 {
"80",
I18N_NOOP2(
"dictionary variant",
"80") },
157 {
"ise",
I18N_NOOP2(
"dictionary variant",
"-ise suffixes") },
158 {
"ize",
I18N_NOOP2(
"dictionary variant",
"-ize suffixes") },
159 {
"ise-w_accents",
I18N_NOOP2(
"dictionary variant",
"-ise suffixes and with accents") },
160 {
"ise-wo_accents",
I18N_NOOP2(
"dictionary variant",
"-ise suffixes and without accents") },
161 {
"ize-w_accents",
I18N_NOOP2(
"dictionary variant",
"-ize suffixes and with accents") },
162 {
"ize-wo_accents",
I18N_NOOP2(
"dictionary variant",
"-ize suffixes and without accents") },
163 {
"lrg",
I18N_NOOP2(
"dictionary variant",
"large") },
164 {
"med",
I18N_NOOP2(
"dictionary variant",
"medium") },
165 {
"sml",
I18N_NOOP2(
"dictionary variant",
"small") },
166 {
"variant_0",
I18N_NOOP2(
"dictionary variant",
"variant 0") },
167 {
"variant_1",
I18N_NOOP2(
"dictionary variant",
"variant 1") },
168 {
"variant_2",
I18N_NOOP2(
"dictionary variant",
"variant 2") },
169 {
"wo_accents",
I18N_NOOP2(
"dictionary variant",
"without accents") },
170 {
"w_accents",
I18N_NOOP2(
"dictionary variant",
"with accents") },
171 {
"ye",
I18N_NOOP2(
"dictionary variant",
"with ye") },
172 {
"yeyo",
I18N_NOOP2(
"dictionary variant",
"with yeyo") },
173 {
"yo",
I18N_NOOP2(
"dictionary variant",
"with yo") },
174 {
"extended",
I18N_NOOP2(
"dictionary variant",
"extended") },
178 minusPos = currentDictionary.indexOf(QLatin1Char(
'-'));
179 underscorePos = currentDictionary.indexOf(QLatin1Char(
'_'));
180 if (underscorePos != -1 && underscorePos <= 3) {
181 cISOName = currentDictionary.mid(underscorePos + 1, 2);
182 lISOName = currentDictionary.left(underscorePos);
183 if ( minusPos != -1 )
184 variantName = currentDictionary.right(
185 currentDictionary.length() - minusPos - 1);
187 if ( minusPos != -1 ) {
188 variantName = currentDictionary.right(
189 currentDictionary.length() - minusPos - 1);
190 lISOName = currentDictionary.left(minusPos);
193 lISOName = currentDictionary;
196 if (localizedLang.isEmpty())
197 localizedLang = lISOName;
198 if (!cISOName.isEmpty()) {
202 localizedCountry = cISOName;
204 if (!variantName.isEmpty()) {
205 while (variantList[variantCount].variantShortName != 0)
206 if (QLatin1String(variantList[variantCount].variantShortName) == variantName)
210 if (variantList[variantCount].variantShortName != 0)
211 variantEnglish = variantList[variantCount].variantEnglishName;
213 variantEnglish = variantName.toLatin1();
215 if (!cISOName.isEmpty() && !variantName.isEmpty())
217 "dictionary name. %1-language, %2-country and %3 variant name",
218 "%1 (%2) [%3]", localizedLang, localizedCountry,
219 i18nc(
"dictionary variant", variantEnglish));
220 else if (!cISOName.isEmpty())
222 "dictionary name. %1-language and %2-country name",
223 "%1 (%2)", localizedLang, localizedCountry);
224 else if (!variantName.isEmpty())
226 "dictionary name. %1-language and %2-variant name",
227 "%1 [%2]", localizedLang,
228 i18nc(
"dictionary variant", variantEnglish));
230 return localizedLang;
238 if (d->languagesNameCache.count() ==
languages().count() )
239 return d->languagesNameCache;
244 for (QStringList::ConstIterator it = allDictionaries.begin();
245 it != allDictionaries.end(); ++it) {
249 d->languagesNameCache = allLocalizedDictionaries;
250 return allLocalizedDictionaries;
258 void Loader::loadPlugins()
262 for (KService::List::const_iterator itr = d->plugins.constBegin();
263 itr != d->plugins.constEnd(); ++itr ) {
278 d->clients.append(client->name());
280 for (QStringList::const_iterator itr = languages.begin();
281 itr != languages.end(); ++itr) {
282 if (!d->languageClients[*itr].isEmpty() &&
283 client->reliability() <
284 d->languageClients[*itr].first()->reliability())
285 d->languageClients[*itr].append(client);
287 d->languageClients[*itr].prepend(client);
303 #include "loader_p.moc"