Bibletime – a bible study tool
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

clanguagemgr.cpp 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499
  1. /*********
  2. *
  3. * This file is part of BibleTime's source code, http://www.bibletime.info/.
  4. *
  5. * Copyright 1999-2006 by the BibleTime developers.
  6. * The BibleTime source code is licensed under the GNU General Public License version 2.0.
  7. *
  8. **********/
  9. #include "clanguagemgr.h"
  10. #include "cswordmoduleinfo.h"
  11. #include "cswordbackend.h"
  12. #include "util/cpointers.h"
  13. //Qt includes
  14. #include <tqptrlist.h>
  15. //KDE includes
  16. #include <klocale.h>
  17. //initialize static language list
  18. CLanguageMgr::LanguageList CLanguageMgr::m_langList;
  19. CLanguageMgr::LanguageList CLanguageMgr::m_cleanupLangPtrs;
  20. CLanguageMgr::Language::Language() : m_altAbbrevs(0) {
  21. m_abbrev = TQString::null;
  22. m_englishName = TQString::null;
  23. m_translatedName = TQString::null;
  24. };
  25. CLanguageMgr::Language::Language(const Language& l) {
  26. m_abbrev = l.m_abbrev;
  27. m_englishName = l.m_englishName;
  28. m_translatedName = l.m_translatedName;
  29. if (l.m_altAbbrevs) { //copy alternative abbrevs in a new list
  30. m_altAbbrevs = new TQStringList(*l.m_altAbbrevs);
  31. //*m_altAbbrevs = *l.m_altAbbrevs;
  32. }
  33. else {
  34. m_altAbbrevs = 0;
  35. }
  36. }
  37. CLanguageMgr::Language::Language( const TQString& abbrev, const TQString& name, const TQString& translatedName, const TQStringList& altAbbrevs ) : m_altAbbrevs(0) {
  38. m_abbrev = abbrev;
  39. m_englishName = name;
  40. m_translatedName = translatedName;
  41. if (altAbbrevs.count() > 0) {
  42. m_altAbbrevs = new TQStringList();
  43. *m_altAbbrevs = altAbbrevs;
  44. }
  45. };
  46. CLanguageMgr::Language::~Language() {
  47. delete m_altAbbrevs;
  48. };
  49. /****************************************************/
  50. /******************** CLanguageMgr ******************/
  51. /****************************************************/
  52. CLanguageMgr::CLanguageMgr() : m_langMap(0) {
  53. m_availableModulesCache.moduleCount = 0;
  54. init();
  55. }
  56. CLanguageMgr::~CLanguageMgr() {
  57. m_cleanupLangPtrs.setAutoDelete(true);
  58. m_cleanupLangPtrs.clear();
  59. m_langList.setAutoDelete(true);
  60. m_langList.clear();
  61. }
  62. const CLanguageMgr::LangMap& CLanguageMgr::availableLanguages() {
  63. ListCSwordModuleInfo mods = CPointers::backend()->moduleList();
  64. if ( m_availableModulesCache.moduleCount != mods.count() ) { //we have to refill the cached map
  65. m_availableModulesCache.availableLanguages.clear();
  66. m_availableModulesCache.moduleCount = mods.count();
  67. //collect the languages abbrevs of all modules
  68. TQStrList abbrevs;
  69. char *abbrev;
  70. ListCSwordModuleInfo::iterator end_it = mods.end();
  71. for (ListCSwordModuleInfo::iterator it(mods.begin()); it != end_it; ++it) {
  72. // for (CSwordModuleInfo* m = mods.first(); m; m = mods.next()) {
  73. abbrev = (*it)->module()->Lang();
  74. if (abbrev && !abbrevs.contains(abbrev)) {
  75. abbrevs.append( abbrev );
  76. }
  77. };
  78. //now create a map of available langs
  79. for ( abbrev = abbrevs.first(); abbrev; abbrev = abbrevs.next() ) {
  80. const Language* const lang = languageForAbbrev(abbrev);
  81. if (lang->isValid()) {
  82. m_availableModulesCache.availableLanguages.insert( abbrev, lang );
  83. }
  84. else { //invalid lang used by a modules, create a new language using the abbrev
  85. Language* newLang = new Language(abbrev, abbrev, abbrev);
  86. m_cleanupLangPtrs.append(newLang);
  87. m_availableModulesCache.availableLanguages.insert( abbrev, newLang );
  88. }
  89. };
  90. }
  91. return m_availableModulesCache.availableLanguages;
  92. };
  93. const CLanguageMgr::Language* const CLanguageMgr::languageForAbbrev( const TQString& abbrev ) const {
  94. Language* lang = m_langMap.find(abbrev);
  95. if (lang) {
  96. return lang;
  97. }
  98. //try to search in the alternative abbrevs
  99. //const LangMapIterator end = m_langMap.constEnd();
  100. for ( LangMapIterator it( m_langMap ); it.current(); ++it ) {
  101. if (it.current()->alternativeAbbrevs() && it.current()->alternativeAbbrevs()->contains(abbrev)) {
  102. return it.current();
  103. }
  104. }
  105. // Invalid lang used by a modules, create a new language using the abbrev
  106. Language* newLang = new Language(abbrev, abbrev, abbrev); //return a language which holds the valid abbrev
  107. m_cleanupLangPtrs.append(newLang);
  108. return newLang;
  109. };
  110. const CLanguageMgr::Language* const CLanguageMgr::languageForName( const TQString& name ) const {
  111. for ( LangMapIterator it( m_langMap ); it.current(); ++it ) {
  112. if (it.current()->name() == name) {
  113. return it.current();
  114. }
  115. }
  116. return &m_defaultLanguage;//invalid language
  117. };
  118. const CLanguageMgr::Language* const CLanguageMgr::languageForTranslatedName( const TQString& name ) const {
  119. for ( LangMapIterator it( m_langMap ); it.current(); ++it ) {
  120. if (it.current()->translatedName() == name) {
  121. return it.current();
  122. }
  123. }
  124. return &m_defaultLanguage; //invalid language
  125. };
  126. void CLanguageMgr::init() {
  127. //if we've already inserted all items we do not proceed
  128. if (m_langMap.count() > 0) {
  129. return;
  130. }
  131. /*
  132. * Chris explained in an eMail how language codes are build:
  133. Preference order for locale codes are:
  134. ISO 639-1
  135. ISO 639-2
  136. Ethnologue (http://www.ethnologue.org/)
  137. We intend to always follow OSIS locale conventions, which state that
  138. Ethnologue codes will be encoded in the format x-E-??? where ???
  139. represents the 3-letter Ethnologue code in capital letters (though
  140. capitalization really doesn't matter here).
  141. Some older modules maintain a former format for Ethnolgoue codes of
  142. xx-???, including the AleWiesler module.
  143. --Chris
  144. */
  145. // m_langList.append( new Language("aa" , "Afar" , i18n("Afar")) );
  146. // m_langList.append( new Language("ab" , "Abkhazian" , i18n("Abkhazian")) );
  147. // m_langList.append( new Language("ae" , "Avestan" , i18n("Avestan")) );
  148. m_langList.append( new Language("af" , "Afrikaans" , i18n("Afrikaans")) );
  149. // m_langList.append( new Language("am" , "Amharic" , i18n("Amharic")) );
  150. m_langList.append( new Language("ang", "English, Old (ca.450-1100)", i18n("English, Old (ca.450-1100)")) );
  151. m_langList.append( new Language("ar" , "Arabic" , i18n("Arabic")) );
  152. // m_langList.append( new Language("as" , "Assamese" , i18n("Assamese")) );
  153. m_langList.append( new Language("az" , "Azerbaijani" , i18n("Azerbaijani")) );
  154. // m_langList.append( new Language("ba" , "Bashkir" , i18n("Bashkir")) );
  155. m_langList.append( new Language("be" , "Belarusian" , i18n("Belarusian")) );
  156. m_langList.append( new Language("bg" , "Bulgarian" , i18n("Bulgarian")) );
  157. // m_langList.append( new Language("bh" , "Bihari" , i18n("Bihari")) );
  158. // m_langList.append( new Language("bi" , "Bislama" , i18n("Bislama")) );
  159. // m_langList.append( new Language("bn" , "Bengali" , i18n("Bengali")) );
  160. // m_langList.append( new Language("bo" , "Tibetan" , i18n("Tibetan")) );
  161. m_langList.append( new Language("br" , "Breton" , i18n("Breton")) );
  162. m_langList.append( new Language("bs" , "Bosnian" , i18n("Bosnian")) );
  163. m_langList.append( new Language("ca" , "Catalan" , i18n("Catalan")) );
  164. // m_langList.append( new Language("ce" , "Chechen" , i18n("Chechen")) );
  165. m_langList.append( new Language("ceb" , "Cebuano" , i18n("Cebuano")) );
  166. m_langList.append( new Language("ch" , "Chamorro" , i18n("Chamorro")) );
  167. // m_langList.append( new Language("co" , "Corsican" , i18n("Corsican")) );
  168. m_langList.append( new Language("cop" , "Coptic" , i18n("Coptic")) );
  169. m_langList.append( new Language("cs" , "Czech" , i18n("Czech")) );
  170. m_langList.append( new Language("cu" , "Church Slavic" , i18n("Church Slavic")) );
  171. // m_langList.append( new Language("cv" , "Chuvash" , i18n("Chuvash")) );
  172. m_langList.append( new Language("cy" , "Welsh" , i18n("Welsh")) );
  173. m_langList.append( new Language("da" , "Danish" , i18n("Danish")) );
  174. m_langList.append( new Language("de" , "German" , i18n("German")) );
  175. // m_langList.append( new Language("dz" , "Dzongkha" , i18n("Dzongkha")) );
  176. m_langList.append( new Language("el" , "Greek, Modern (1453-)" , i18n("Greek, Modern (1453-)"), makeStringList("gre;ell")) );
  177. m_langList.append( new Language("en" , "English" , i18n("English")) );
  178. m_langList.append( new Language("en_US","American English" , i18n("American English")) );
  179. m_langList.append( new Language("enm" , "English, Middle (1100-1500)", i18n("English, Middle (1100-1500)")) );
  180. m_langList.append( new Language("eo" , "Esperanto" , i18n("Esperanto")) );
  181. m_langList.append( new Language("es" , "Spanish" , i18n("Spanish")) );
  182. m_langList.append( new Language("et" , "Estonian" , i18n("Estonian")) );
  183. m_langList.append( new Language("eu" , "Basque" , i18n("Basque")) );
  184. // m_langList.append( new Language("fa" , "Persian" , i18n("Persian")) );
  185. m_langList.append( new Language("fi" , "Finnish" , i18n("Finnish")) );
  186. // m_langList.append( new Language("fj" , "Fijian" , i18n("Fijian")) );
  187. // m_langList.append( new Language("fo" , "Faroese" , i18n("Faroese")) );
  188. m_langList.append( new Language("fr" , "French" , i18n("French")) );
  189. m_langList.append( new Language("fy" , "Frisian" , i18n("Frisian")) );
  190. m_langList.append( new Language("ga" , "Irish" , i18n("Irish")) );
  191. m_langList.append( new Language("gd" , "Gaelic (Scots)", i18n("Gaelic (Scots)")) );
  192. // m_langList.append( new Language("gl" , "Gallegan" , i18n("Gallegan")) );
  193. // m_langList.append( new Language("gn" , "Guarani" , i18n("Guarani")) );
  194. // m_langList.append( new Language("gn" , "Gujarati" , i18n("Gujarati")) );
  195. m_langList.append( new Language("got" , "Gothic" , i18n("Gothic")) );
  196. m_langList.append( new Language("gv" , "Manx" , i18n("Manx")) );
  197. m_langList.append( new Language("grc" , "Greek, Ancient (to 1453)" , i18n("Greek, Ancient (to 1453)")) );
  198. m_langList.append( new Language("he" , "Hebrew" , i18n("Hebrew")) );
  199. m_langList.append( new Language("hau" , "Hausa" , i18n("Hausa")) );
  200. m_langList.append( new Language("haw" , "Hawaiian" , i18n("Hawaiian")) );
  201. // m_langList.append( new Language("hi" , "Hindi" , i18n("Hindi")) );
  202. // m_langList.append( new Language("ho" , "Hiri Motu" , i18n("Hiri Motu")) );
  203. m_langList.append( new Language("hr" , "Croatian" , i18n("Croatian")) );
  204. m_langList.append( new Language("hu" , "Hungarian" , i18n("Hungarian")) );
  205. m_langList.append( new Language("hy" , "Armenian" , i18n("Armenian")) );
  206. // m_langList.append( new Language("hz" , "Herero" , i18n("Herero")) );
  207. // m_langList.append( new Language("ia" , "Interlingua" , i18n("Interlingua")) );
  208. m_langList.append( new Language("id" , "Indonesian" , i18n("Indonesian")) );
  209. // m_langList.append( new Language("ie" , "Interlingue" , i18n("Interlingue")) );
  210. // m_langList.append( new Language("ik" , "Inupiaq" , i18n("Inupiaq")) );
  211. m_langList.append( new Language("is" , "Icelandic" , i18n("Icelandic")) );
  212. m_langList.append( new Language("it" , "Italian" , i18n("Italian")) );
  213. // m_langList.append( new Language("iu" , "Inuktitut" , i18n("Inuktitut")) );
  214. m_langList.append( new Language("ja" , "Japanese" , i18n("Japanese")) );
  215. m_langList.append( new Language("ka" , "Georgian" , i18n("Georgian")) );
  216. // m_langList.append( new Language("x-E-KAB" , "Kabyle" , i18n("Kabyle")) );
  217. // m_langList.append( new Language("ki" , "Kikuyu" , i18n("Kikuyu")) );
  218. // m_langList.append( new Language("kj" , "Kuanyama" , i18n("Kuanyama")) );
  219. // m_langList.append( new Language("kk" , "Kazakh" , i18n("Kazakh")) );
  220. // m_langList.append( new Language("kl" , "Kalaallisut" , i18n("Kalaallisut")) );
  221. // m_langList.append( new Language("km" , "Khmer" , i18n("Khmer")) );
  222. // m_langList.append( new Language("kn" , "Kannada" , i18n("Kannada")) );
  223. m_langList.append( new Language("ko" , "Korean" , i18n("Korean")) );
  224. // m_langList.append( new Language("ks" , "Kashmiri" , i18n("Kashmiri")) );
  225. m_langList.append( new Language("ku" , "Kurdish" , i18n("Kurdish")) );
  226. // m_langList.append( new Language("kv" , "Komi" , i18n("Komi")) );
  227. // m_langList.append( new Language("kw" , "Cornish" , i18n("Cornish")) );
  228. m_langList.append( new Language("ky" , "Kirghiz" , i18n("Kirghiz")) );
  229. m_langList.append( new Language("la" , "Latin" , i18n("Latin")) );
  230. // m_langList.append( new Language("lb" , "Letzeburgesch" , i18n("Letzeburgesch")) );
  231. // m_langList.append( new Language("ln" , "Lingala" , i18n("Lingala")) );
  232. // m_langList.append( new Language("lo" , "Lao" , i18n("Lao")) );
  233. m_langList.append( new Language("lt" , "Lithuanian" , i18n("Lithuanian")) );
  234. m_langList.append( new Language("lv" , "Latvian" , i18n("Latvian")) );
  235. // m_langList.append( new Language("mg" , "Malagasy" , i18n("Malagasy")) );
  236. // m_langList.append( new Language("mh" , "Marshall" , i18n("Marshall")) );
  237. m_langList.append( new Language("mi" , "Maori" , i18n("Maori")) );
  238. m_langList.append( new Language("mk" , "Macedonian" , i18n("Macedonian")) );
  239. // m_langList.append( new Language("ml" , "Malayalam" , i18n("Malayalam")) );
  240. // m_langList.append( new Language("mn" , "Mongolian" , i18n("Mongolian")) );
  241. // m_langList.append( new Language("mo" , "Moldavian" , i18n("Moldavian")) );
  242. m_langList.append( new Language("mos" , "More" , i18n("More")) );
  243. // m_langList.append( new Language("mr" , "Marathi" , i18n("Marathi")) );
  244. m_langList.append( new Language("ms" , "Malay" , i18n("Malay")) );
  245. m_langList.append( new Language("mt" , "Maltese" , i18n("Maltese")) );
  246. // m_langList.append( new Language("my" , "Burmese" , i18n("Burmese")) );
  247. // m_langList.append( new Language("na" , "Nauru" , i18n("Nauru")) );
  248. // m_langList.append( new Language("nb" , "Norwegian Bokmål" , i18n("Norwegian Bokmål")) );
  249. // m_langList.append( new Language("nd" , "Ndebele, North" , i18n("Ndebele, North")) );
  250. m_langList.append( new Language("nds" , "Low German; Low Saxon" , i18n("Low German; Low Saxon")) );
  251. // m_langList.append( new Language("ne" , "Nepali" , i18n("Nepali")) );
  252. // m_langList.append( new Language("ng" , "Ndonga" , i18n("Ndonga")) );
  253. m_langList.append( new Language("nl" , "Dutch" , i18n("Dutch")) );
  254. // m_langList.append( new Language("nn" , "Norwegian Nynorsk" , i18n("Norwegian Nynorsk")) );
  255. m_langList.append( new Language("no" , "Norwegian" , i18n("Norwegian")) );
  256. // m_langList.append( new Language("nr" , "Ndebele, South" , i18n("Ndebele, South")) );
  257. // m_langList.append( new Language("nv" , "Navajo" , i18n("Navajo")) );
  258. // m_langList.append( new Language("ny" , "Chichewa; Nyanja" , i18n("Chichewa; Nyanja")) );
  259. // m_langList.append( new Language("oc" , "Occitan (post 1500); Provençal" , i18n("Occitan (post 1500); Provençal")) );
  260. // m_langList.append( new Language("om" , "Oromo" , i18n("Oromo")) );
  261. // m_langList.append( new Language("or" , "Oriya" , i18n("Oriya")) );
  262. // m_langList.append( new Language("os" , "Ossetian; Ossetic" , i18n("Ossetian; Ossetic")) );
  263. // m_langList.append( new Language("pa" , "Panjabi" , i18n("Panjabi")) );
  264. m_langList.append( new Language("pap" , "Papiamento" , i18n("Papiamento")) );
  265. // m_langList.append( new Language("pi" , "Pali" , i18n("Pali")) );
  266. m_langList.append( new Language("pl" , "Polish" , i18n("Polish")) );
  267. // m_langList.append( new Language("ps" , "Pushto" , i18n("Pushto")) );
  268. m_langList.append( new Language("pt" , "Portuguese" , i18n("Portuguese")) );
  269. m_langList.append( new Language("pt_BR" , "Brasilian Portuguese" , i18n("Brasilian Portuguese")) );//added by ourself
  270. // m_langList.append( new Language("qu" , "Quechua" , i18n("Quechua")) );
  271. // m_langList.append( new Language("rm" , "Raeto-Romance" , i18n("Raeto-Romance")) );
  272. // m_langList.append( new Language("rn" , "Rundi" , i18n("Rundi")) );
  273. m_langList.append( new Language("ro" , "Romanian" , i18n("Romanian")) );
  274. m_langList.append( new Language("ru" , "Russian" , i18n("Russian")) );
  275. // m_langList.append( new Language("rw" , "Kinyarwanda" , i18n("Kinyarwanda")) );
  276. // m_langList.append( new Language("sa" , "Sanskrit" , i18n("Sanskrit")) );
  277. // m_langList.append( new Language("sc" , "Sardinian" , i18n("Sardinian")) );
  278. m_langList.append( new Language("sco" , "Scots" , i18n("Scots")) );
  279. // m_langList.append( new Language("sd" , "Sindhi" , i18n("Sindhi")) );
  280. // m_langList.append( new Language("se" , "Northern Sami" , i18n("Northern Sami")) );
  281. // m_langList.append( new Language("sg" , "Sango" , i18n("Sango")) );
  282. // m_langList.append( new Language("si" , "Sinhalese" , i18n("Sinhalese")) );
  283. m_langList.append( new Language("sk" , "Slovak" , i18n("Slovak")) );
  284. m_langList.append( new Language("sl" , "Slovenian" , i18n("Slovenian")) );
  285. // m_langList.append( new Language("sm" , "Samoan" , i18n("Samoan")) );
  286. // m_langList.append( new Language("sn" , "Shona" , i18n("Shona")) );
  287. m_langList.append( new Language("so" , "Somali" , i18n("Somali")) );
  288. m_langList.append( new Language("sq" , "Albanian" , i18n("Albanian")) );
  289. // m_langList.append( new Language("sr" , "Serbian" , i18n("Serbian")) );
  290. // m_langList.append( new Language("ss" , "Swati" , i18n("Swati")) );
  291. // m_langList.append( new Language("st" , "Sotho, Southern" , i18n("Sotho, Southern")) );
  292. // m_langList.append( new Language("su" , "Sundanese" , i18n("Sundanese")) );
  293. m_langList.append( new Language("sv" , "Swedish" , i18n("Swedish")) );
  294. m_langList.append( new Language("sw" , "Swahili" , i18n("Swahili")) );
  295. m_langList.append( new Language("syr" , "Syriac" , i18n("Syriac")) );
  296. m_langList.append( new Language("ta" , "Tamil" , i18n("Tamil")) );
  297. // m_langList.append( new Language("te" , "Telugu" , i18n("Telugu")) );
  298. // m_langList.append( new Language("tg" , "Tajik" , i18n("Tajik")) );
  299. m_langList.append( new Language("th" , "Thai" , i18n("Thai")) );
  300. // m_langList.append( new Language("tk" , "Turkmen" , i18n("Turkmen")) );
  301. m_langList.append( new Language("tl" , "Tagalog" , i18n("Tagalog")) );
  302. m_langList.append( new Language("tn" , "Tswana" , i18n("Tswana")) );
  303. m_langList.append( new Language("tr" , "Turkish" , i18n("Turkish")) );
  304. // m_langList.append( new Language("ts" , "Tsonga" , i18n("Tsonga")) );
  305. // m_langList.append( new Language("tt" , "Tatar" , i18n("Tatar")) );
  306. // m_langList.append( new Language("tw" , "Twi" , i18n("Twi")) );
  307. m_langList.append( new Language("ty" , "Tahitian" , i18n("Tahitian")) );
  308. //
  309. // m_langList.append( new Language("ug" , "Uighur" , i18n("Uighur")) );
  310. m_langList.append( new Language("uk" , "Ukrainian" , i18n("Ukrainian")) );
  311. // m_langList.append( new Language("ur" , "Urdu" , i18n("Urdu")) );
  312. // m_langList.append( new Language("uz" , "Uzbek" , i18n("Uzbek")) );
  313. m_langList.append( new Language("vi" , "Vietnamese" , i18n("Vietnamese")) );
  314. // m_langList.append( new Language("vo" , "Volapük" , i18n("Volapük")) );
  315. //
  316. // m_langList.append( new Language("wo" , "Wolof" , i18n("Wolof")) );
  317. m_langList.append( new Language("xh" , "Xhosa" , i18n("Xhosa")) );
  318. m_langList.append( new Language("x-E-BAR" , "Bavarian" , i18n("Bavarian")) );
  319. m_langList.append( new Language("x-E-DJE" , "Zarma" , i18n("Zarma")) );
  320. m_langList.append( new Language("x-E-GSW" , "Alemannisch" , i18n("Alemannisch")) );
  321. m_langList.append( new Language("x-E-HAT" , "Haitian Creole French" , i18n("Haitian Creole French")) );
  322. m_langList.append( new Language("x-E-ITZ" , TQString::fromUtf8("Itzá") , i18n("Itzá")) );
  323. m_langList.append( new Language("x-E-JIV" , "Shuar" , i18n("Shuar")) );
  324. m_langList.append( new Language("x-E-KEK" , TQString::fromUtf8("Kekchí") , i18n("Kekchí")) );
  325. m_langList.append( new Language("x-E-KAB" , "Kabyle" , i18n("Kabyle")) );
  326. m_langList.append( new Language("x-E-LMO" , "Lombard" , i18n("Lombard")) );
  327. m_langList.append( new Language("x-E-MKJ" , "Macedonian" , i18n("Macedonian")) );
  328. m_langList.append( new Language("x-E-PDG" , "Tok Pisin" , i18n("Tok Pisin")) );
  329. m_langList.append( new Language("x-E-PPK" , "Uma" , i18n("Uma")) );
  330. m_langList.append( new Language("x-E-RMY" , "Romani, Vlax" , i18n("Romani, Vlax")) );
  331. m_langList.append( new Language("x-E-SAJ" , "Sango" , i18n("Sango")) );
  332. m_langList.append( new Language("x-E-SRN" , "Sranan" , i18n("Sranan")) );
  333. // m_langList.append( new Language("yi" , "Yiddish" , i18n("Yiddish")) );
  334. //
  335. // m_langList.append( new Language("za" , "Zhuang" , i18n("Zhuang")) );
  336. m_langList.append( new Language("zh" , "Chinese" , i18n("Chinese")) );
  337. m_langList.append( new Language("zu" , "Zulu" , i18n("Zulu")) );
  338. for ( Language* lang = m_langList.first(); lang; lang = m_langList.next() ) {
  339. m_langMap.insert( lang->abbrev(), lang);
  340. };
  341. };