diff --git a/src/langcoder.cc b/src/langcoder.cc index c6fce461..e9efbe50 100644 --- a/src/langcoder.cc +++ b/src/langcoder.cc @@ -2,7 +2,6 @@ * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ #include "langcoder.hh" -#include "folding.hh" #include "language.hh" #include "utf8.hh" @@ -14,223 +13,213 @@ #endif #include -LangCoder langCoder; - // Language codes -static GDLangCode LangCodes[] = { - - { "aa", "aar", -1, "Afar" }, - { "ab", "abk", -1, "Abkhazian" }, - { "ae", "ave", -1, "Avestan" }, - { "af", "afr", -1, "Afrikaans" }, - { "ak", "aka", -1, "Akan" }, - { "am", "amh", -1, "Amharic" }, - { "an", "arg", -1, "Aragonese" }, - { "ar", "ara", 1, "Arabic" }, - { "as", "asm", -1, "Assamese" }, - { "av", "ava", -1, "Avaric" }, - { "ay", "aym", -1, "Aymara" }, - { "az", "aze", 0, "Azerbaijani" }, - { "ba", "bak", 0, "Bashkir" }, - { "be", "bel", 0, "Belarusian" }, - { "bg", "bul", 0, "Bulgarian" }, - { "bh", "bih", -1, "Bihari" }, - { "bi", "bis", -1, "Bislama" }, - { "bm", "bam", -1, "Bambara" }, - { "bn", "ben", -1, "Bengali" }, - { "bo", "tib", -1, "Tibetan" }, - { "br", "bre", -1, "Breton" }, - { "bs", "bos", 0, "Bosnian" }, - { "ca", "cat", -1, "Catalan" }, - { "ce", "che", -1, "Chechen" }, - { "ch", "cha", -1, "Chamorro" }, - { "co", "cos", -1, "Corsican" }, - { "cr", "cre", -1, "Cree" }, - { "cs", "cze", 0, "Czech" }, - { "cu", "chu", 0, "Church Slavic" }, - { "cv", "chv", 0, "Chuvash" }, - { "cy", "wel", 0, "Welsh" }, - { "da", "dan", 0, "Danish" }, - { "de", "ger", 0, "German" }, - { "dv", "div", -1, "Divehi" }, - { "dz", "dzo", -1, "Dzongkha" }, - { "ee", "ewe", -1, "Ewe" }, - { "el", "gre", 0, "Greek" }, - { "en", "eng", 0, "English" }, - { "eo", "epo", 0, "Esperanto" }, - { "es", "spa", 0, "Spanish" }, - { "et", "est", 0, "Estonian" }, - { "eu", "baq", 0, "Basque" }, - { "fa", "per", -1, "Persian" }, - { "ff", "ful", -1, "Fulah" }, - { "fi", "fin", 0, "Finnish" }, - { "fj", "fij", -1, "Fijian" }, - { "fo", "fao", -1, "Faroese" }, - { "fr", "fre", 0, "French" }, - { "fy", "fry", -1, "Western Frisian" }, - { "ga", "gle", 0, "Irish" }, - { "gd", "gla", 0, "Scottish Gaelic" }, - { "gl", "glg", -1, "Galician" }, - { "gn", "grn", -1, "Guarani" }, - { "gu", "guj", -1, "Gujarati" }, - { "gv", "glv", -1, "Manx" }, - { "ha", "hau", -1, "Hausa" }, - { "he", "heb", 1, "Hebrew" }, - { "hi", "hin", -1, "Hindi" }, - { "ho", "hmo", -1, "Hiri Motu" }, - { "hr", "hrv", 0, "Croatian" }, - { "ht", "hat", -1, "Haitian" }, - { "hu", "hun", 0, "Hungarian" }, - { "hy", "arm", 0, "Armenian" }, - { "hz", "her", -1, "Herero" }, - { "ia", "ina", -1, "Interlingua" }, - { "id", "ind", -1, "Indonesian" }, - { "ie", "ile", -1, "Interlingue" }, - { "ig", "ibo", -1, "Igbo" }, - { "ii", "iii", -1, "Sichuan Yi" }, - { "ik", "ipk", -1, "Inupiaq" }, - { "io", "ido", -1, "Ido" }, - { "is", "ice", -1, "Icelandic" }, - { "it", "ita", 0, "Italian" }, - { "iu", "iku", -1, "Inuktitut" }, - { "ja", "jpn", 0, "Japanese" }, - { "jv", "jav", -1, "Javanese" }, - { "ka", "geo", 0, "Georgian" }, - { "kg", "kon", -1, "Kongo" }, - { "ki", "kik", -1, "Kikuyu" }, - { "kj", "kua", -1, "Kwanyama" }, - { "kk", "kaz", 0, "Kazakh" }, - { "kl", "kal", -1, "Kalaallisut" }, - { "km", "khm", -1, "Khmer" }, - { "kn", "kan", -1, "Kannada" }, - { "ko", "kor", 0, "Korean" }, - { "kr", "kau", -1, "Kanuri" }, - { "ks", "kas", -1, "Kashmiri" }, - { "ku", "kur", -1, "Kurdish" }, - { "kv", "kom", 0, "Komi" }, - { "kw", "cor", -1, "Cornish" }, - { "ky", "kir", -1, "Kirghiz" }, - { "la", "lat", 0, "Latin" }, - { "lb", "ltz", 0, "Luxembourgish" }, - { "lg", "lug", -1, "Ganda" }, - { "li", "lim", -1, "Limburgish" }, - { "ln", "lin", -1, "Lingala" }, - { "lo", "lao", -1, "Lao" }, - { "lt", "lit", 0, "Lithuanian" }, - { "lu", "lub", -1, "Luba-Katanga" }, - { "lv", "lav", 0, "Latvian" }, - { "mg", "mlg", -1, "Malagasy" }, - { "mh", "mah", -1, "Marshallese" }, - { "mi", "mao", -1, "Maori" }, - { "mk", "mac", 0, "Macedonian" }, - { "ml", "mal", -1, "Malayalam" }, - { "mn", "mon", -1, "Mongolian" }, - { "mr", "mar", -1, "Marathi" }, - { "ms", "may", -1, "Malay" }, - { "mt", "mlt", -1, "Maltese" }, - { "my", "bur", -1, "Burmese" }, - { "na", "nau", -1, "Nauru" }, - { "nb", "nob", 0, "Norwegian Bokmal" }, - { "nd", "nde", -1, "North Ndebele" }, - { "ne", "nep", -1, "Nepali" }, - { "ng", "ndo", -1, "Ndonga" }, - { "nl", "dut", -1, "Dutch" }, - { "nn", "nno", -1, "Norwegian Nynorsk" }, - { "no", "nor", 0, "Norwegian" }, - { "nr", "nbl", -1, "South Ndebele" }, - { "nv", "nav", -1, "Navajo" }, - { "ny", "nya", -1, "Chichewa" }, - { "oc", "oci", -1, "Occitan" }, - { "oj", "oji", -1, "Ojibwa" }, - { "om", "orm", -1, "Oromo" }, - { "or", "ori", -1, "Oriya" }, - { "os", "oss", -1, "Ossetian" }, - { "pa", "pan", -1, "Panjabi" }, - { "pi", "pli", -1, "Pali" }, - { "pl", "pol", 0, "Polish" }, - { "ps", "pus", -1, "Pashto" }, - { "pt", "por", 0, "Portuguese" }, - { "qu", "que", -1, "Quechua" }, - { "rm", "roh", -1, "Raeto-Romance" }, - { "rn", "run", -1, "Kirundi" }, - { "ro", "rum", 0, "Romanian" }, - { "ru", "rus", 0, "Russian" }, - { "rw", "kin", -1, "Kinyarwanda" }, - { "sa", "san", -1, "Sanskrit" }, - { "sc", "srd", -1, "Sardinian" }, - { "sd", "snd", -1, "Sindhi" }, - { "se", "sme", -1, "Northern Sami" }, - { "sg", "sag", -1, "Sango" }, - { "sh", "shr", 0, "Serbo-Croatian" }, - { "si", "sin", -1, "Sinhala" }, - { "sk", "slo", 0, "Slovak" }, - { "sl", "slv", 0, "Slovenian" }, - { "sm", "smo", -1, "Samoan" }, - { "sn", "sna", -1, "Shona" }, - { "so", "som", -1, "Somali" }, - { "sq", "alb", 0, "Albanian" }, - { "sr", "srp", 0, "Serbian" }, - { "ss", "ssw", -1, "Swati" }, - { "st", "sot", -1, "Southern Sotho" }, - { "su", "sun", -1, "Sundanese" }, - { "sv", "swe", 0, "Swedish" }, - { "sw", "swa", -1, "Swahili" }, - { "ta", "tam", -1, "Tamil" }, - { "te", "tel", -1, "Telugu" }, - { "tg", "tgk", 0, "Tajik" }, - { "th", "tha", -1, "Thai" }, - { "ti", "tir", -1, "Tigrinya" }, - { "tk", "tuk", 0, "Turkmen" }, - { "tl", "tgl", -1, "Tagalog" }, - { "tn", "tsn", -1, "Tswana" }, - { "to", "ton", -1, "Tonga" }, - { "tr", "tur", 0, "Turkish" }, - { "ts", "tso", -1, "Tsonga" }, - { "tt", "tat", -1, "Tatar" }, - { "tw", "twi", -1, "Twi" }, - { "ty", "tah", -1, "Tahitian" }, - { "ug", "uig", -1, "Uighur" }, - { "uk", "ukr", -1, "Ukrainian" }, - { "ur", "urd", -1, "Urdu" }, - { "uz", "uzb", 0, "Uzbek" }, - { "ve", "ven", -1, "Venda" }, - { "vi", "vie", -1, "Vietnamese" }, - { "vo", "vol", 0, "Volapuk" }, - { "wa", "wln", -1, "Walloon" }, - { "wo", "wol", -1, "Wolof" }, - { "xh", "xho", -1, "Xhosa" }, - { "yi", "yid", -1, "Yiddish" }, - { "yo", "yor", -1, "Yoruba" }, - { "za", "zha", -1, "Zhuang" }, - { "zh", "chi", 0, "Chinese" }, - { "zu", "zul", -1, "Zulu" }, - { "jb", "jbo", 0, "Lojban" }, +QMap< QString, GDLangCode > LangCoder::LANG_CODE_MAP = { + { "aa", { "aa", "aar", -1, "Afar" } }, + { "ab", { "ab", "abk", -1, "Abkhazian" } }, + { "ae", { "ae", "ave", -1, "Avestan" } }, + { "af", { "af", "afr", -1, "Afrikaans" } }, + { "ak", { "ak", "aka", -1, "Akan" } }, + { "am", { "am", "amh", -1, "Amharic" } }, + { "an", { "an", "arg", -1, "Aragonese" } }, + { "ar", { "ar", "ara", 1, "Arabic" } }, + { "as", { "as", "asm", -1, "Assamese" } }, + { "av", { "av", "ava", -1, "Avaric" } }, + { "ay", { "ay", "aym", -1, "Aymara" } }, + { "az", { "az", "aze", 0, "Azerbaijani" } }, + { "ba", { "ba", "bak", 0, "Bashkir" } }, + { "be", { "be", "bel", 0, "Belarusian" } }, + { "bg", { "bg", "bul", 0, "Bulgarian" } }, + { "bh", { "bh", "bih", -1, "Bihari" } }, + { "bi", { "bi", "bis", -1, "Bislama" } }, + { "bm", { "bm", "bam", -1, "Bambara" } }, + { "bn", { "bn", "ben", -1, "Bengali" } }, + { "bo", { "bo", "tib", -1, "Tibetan" } }, + { "br", { "br", "bre", -1, "Breton" } }, + { "bs", { "bs", "bos", 0, "Bosnian" } }, + { "ca", { "ca", "cat", -1, "Catalan" } }, + { "ce", { "ce", "che", -1, "Chechen" } }, + { "ch", { "ch", "cha", -1, "Chamorro" } }, + { "co", { "co", "cos", -1, "Corsican" } }, + { "cr", { "cr", "cre", -1, "Cree" } }, + { "cs", { "cs", "cze", 0, "Czech" } }, + { "cu", { "cu", "chu", 0, "Church Slavic" } }, + { "cv", { "cv", "chv", 0, "Chuvash" } }, + { "cy", { "cy", "wel", 0, "Welsh" } }, + { "da", { "da", "dan", 0, "Danish" } }, + { "de", { "de", "ger", 0, "German" } }, + { "dv", { "dv", "div", -1, "Divehi" } }, + { "dz", { "dz", "dzo", -1, "Dzongkha" } }, + { "ee", { "ee", "ewe", -1, "Ewe" } }, + { "el", { "el", "gre", 0, "Greek" } }, + { "en", { "en", "eng", 0, "English" } }, + { "eo", { "eo", "epo", 0, "Esperanto" } }, + { "es", { "es", "spa", 0, "Spanish" } }, + { "et", { "et", "est", 0, "Estonian" } }, + { "eu", { "eu", "baq", 0, "Basque" } }, + { "fa", { "fa", "per", -1, "Persian" } }, + { "ff", { "ff", "ful", -1, "Fulah" } }, + { "fi", { "fi", "fin", 0, "Finnish" } }, + { "fj", { "fj", "fij", -1, "Fijian" } }, + { "fo", { "fo", "fao", -1, "Faroese" } }, + { "fr", { "fr", "fre", 0, "French" } }, + { "fy", { "fy", "fry", -1, "Western Frisian" } }, + { "ga", { "ga", "gle", 0, "Irish" } }, + { "gd", { "gd", "gla", 0, "Scottish Gaelic" } }, + { "gl", { "gl", "glg", -1, "Galician" } }, + { "gn", { "gn", "grn", -1, "Guarani" } }, + { "gu", { "gu", "guj", -1, "Gujarati" } }, + { "gv", { "gv", "glv", -1, "Manx" } }, + { "ha", { "ha", "hau", -1, "Hausa" } }, + { "he", { "he", "heb", 1, "Hebrew" } }, + { "hi", { "hi", "hin", -1, "Hindi" } }, + { "ho", { "ho", "hmo", -1, "Hiri Motu" } }, + { "hr", { "hr", "hrv", 0, "Croatian" } }, + { "ht", { "ht", "hat", -1, "Haitian" } }, + { "hu", { "hu", "hun", 0, "Hungarian" } }, + { "hy", { "hy", "arm", 0, "Armenian" } }, + { "hz", { "hz", "her", -1, "Herero" } }, + { "ia", { "ia", "ina", -1, "Interlingua" } }, + { "id", { "id", "ind", -1, "Indonesian" } }, + { "ie", { "ie", "ile", -1, "Interlingue" } }, + { "ig", { "ig", "ibo", -1, "Igbo" } }, + { "ii", { "ii", "iii", -1, "Sichuan Yi" } }, + { "ik", { "ik", "ipk", -1, "Inupiaq" } }, + { "io", { "io", "ido", -1, "Ido" } }, + { "is", { "is", "ice", -1, "Icelandic" } }, + { "it", { "it", "ita", 0, "Italian" } }, + { "iu", { "iu", "iku", -1, "Inuktitut" } }, + { "ja", { "ja", "jpn", 0, "Japanese" } }, + { "jv", { "jv", "jav", -1, "Javanese" } }, + { "ka", { "ka", "geo", 0, "Georgian" } }, + { "kg", { "kg", "kon", -1, "Kongo" } }, + { "ki", { "ki", "kik", -1, "Kikuyu" } }, + { "kj", { "kj", "kua", -1, "Kwanyama" } }, + { "kk", { "kk", "kaz", 0, "Kazakh" } }, + { "kl", { "kl", "kal", -1, "Kalaallisut" } }, + { "km", { "km", "khm", -1, "Khmer" } }, + { "kn", { "kn", "kan", -1, "Kannada" } }, + { "ko", { "ko", "kor", 0, "Korean" } }, + { "kr", { "kr", "kau", -1, "Kanuri" } }, + { "ks", { "ks", "kas", -1, "Kashmiri" } }, + { "ku", { "ku", "kur", -1, "Kurdish" } }, + { "kv", { "kv", "kom", 0, "Komi" } }, + { "kw", { "kw", "cor", -1, "Cornish" } }, + { "ky", { "ky", "kir", -1, "Kirghiz" } }, + { "la", { "la", "lat", 0, "Latin" } }, + { "lb", { "lb", "ltz", 0, "Luxembourgish" } }, + { "lg", { "lg", "lug", -1, "Ganda" } }, + { "li", { "li", "lim", -1, "Limburgish" } }, + { "ln", { "ln", "lin", -1, "Lingala" } }, + { "lo", { "lo", "lao", -1, "Lao" } }, + { "lt", { "lt", "lit", 0, "Lithuanian" } }, + { "lu", { "lu", "lub", -1, "Luba-Katanga" } }, + { "lv", { "lv", "lav", 0, "Latvian" } }, + { "mg", { "mg", "mlg", -1, "Malagasy" } }, + { "mh", { "mh", "mah", -1, "Marshallese" } }, + { "mi", { "mi", "mao", -1, "Maori" } }, + { "mk", { "mk", "mac", 0, "Macedonian" } }, + { "ml", { "ml", "mal", -1, "Malayalam" } }, + { "mn", { "mn", "mon", -1, "Mongolian" } }, + { "mr", { "mr", "mar", -1, "Marathi" } }, + { "ms", { "ms", "may", -1, "Malay" } }, + { "mt", { "mt", "mlt", -1, "Maltese" } }, + { "my", { "my", "bur", -1, "Burmese" } }, + { "na", { "na", "nau", -1, "Nauru" } }, + { "nb", { "nb", "nob", 0, "Norwegian Bokmal" } }, + { "nd", { "nd", "nde", -1, "North Ndebele" } }, + { "ne", { "ne", "nep", -1, "Nepali" } }, + { "ng", { "ng", "ndo", -1, "Ndonga" } }, + { "nl", { "nl", "dut", -1, "Dutch" } }, + { "nn", { "nn", "nno", -1, "Norwegian Nynorsk" } }, + { "no", { "no", "nor", 0, "Norwegian" } }, + { "nr", { "nr", "nbl", -1, "South Ndebele" } }, + { "nv", { "nv", "nav", -1, "Navajo" } }, + { "ny", { "ny", "nya", -1, "Chichewa" } }, + { "oc", { "oc", "oci", -1, "Occitan" } }, + { "oj", { "oj", "oji", -1, "Ojibwa" } }, + { "om", { "om", "orm", -1, "Oromo" } }, + { "or", { "or", "ori", -1, "Oriya" } }, + { "os", { "os", "oss", -1, "Ossetian" } }, + { "pa", { "pa", "pan", -1, "Panjabi" } }, + { "pi", { "pi", "pli", -1, "Pali" } }, + { "pl", { "pl", "pol", 0, "Polish" } }, + { "ps", { "ps", "pus", -1, "Pashto" } }, + { "pt", { "pt", "por", 0, "Portuguese" } }, + { "qu", { "qu", "que", -1, "Quechua" } }, + { "rm", { "rm", "roh", -1, "Raeto-Romance" } }, + { "rn", { "rn", "run", -1, "Kirundi" } }, + { "ro", { "ro", "rum", 0, "Romanian" } }, + { "ru", { "ru", "rus", 0, "Russian" } }, + { "rw", { "rw", "kin", -1, "Kinyarwanda" } }, + { "sa", { "sa", "san", -1, "Sanskrit" } }, + { "sc", { "sc", "srd", -1, "Sardinian" } }, + { "sd", { "sd", "snd", -1, "Sindhi" } }, + { "se", { "se", "sme", -1, "Northern Sami" } }, + { "sg", { "sg", "sag", -1, "Sango" } }, + { "sh", { "sh", "shr", 0, "Serbo-Croatian" } }, + { "si", { "si", "sin", -1, "Sinhala" } }, + { "sk", { "sk", "slo", 0, "Slovak" } }, + { "sl", { "sl", "slv", 0, "Slovenian" } }, + { "sm", { "sm", "smo", -1, "Samoan" } }, + { "sn", { "sn", "sna", -1, "Shona" } }, + { "so", { "so", "som", -1, "Somali" } }, + { "sq", { "sq", "alb", 0, "Albanian" } }, + { "sr", { "sr", "srp", 0, "Serbian" } }, + { "ss", { "ss", "ssw", -1, "Swati" } }, + { "st", { "st", "sot", -1, "Southern Sotho" } }, + { "su", { "su", "sun", -1, "Sundanese" } }, + { "sv", { "sv", "swe", 0, "Swedish" } }, + { "sw", { "sw", "swa", -1, "Swahili" } }, + { "ta", { "ta", "tam", -1, "Tamil" } }, + { "te", { "te", "tel", -1, "Telugu" } }, + { "tg", { "tg", "tgk", 0, "Tajik" } }, + { "th", { "th", "tha", -1, "Thai" } }, + { "ti", { "ti", "tir", -1, "Tigrinya" } }, + { "tk", { "tk", "tuk", 0, "Turkmen" } }, + { "tl", { "tl", "tgl", -1, "Tagalog" } }, + { "tn", { "tn", "tsn", -1, "Tswana" } }, + { "to", { "to", "ton", -1, "Tonga" } }, + { "tr", { "tr", "tur", 0, "Turkish" } }, + { "ts", { "ts", "tso", -1, "Tsonga" } }, + { "tt", { "tt", "tat", -1, "Tatar" } }, + { "tw", { "tw", "twi", -1, "Twi" } }, + { "ty", { "ty", "tah", -1, "Tahitian" } }, + { "ug", { "ug", "uig", -1, "Uighur" } }, + { "uk", { "uk", "ukr", -1, "Ukrainian" } }, + { "ur", { "ur", "urd", -1, "Urdu" } }, + { "uz", { "uz", "uzb", 0, "Uzbek" } }, + { "ve", { "ve", "ven", -1, "Venda" } }, + { "vi", { "vi", "vie", -1, "Vietnamese" } }, + { "vo", { "vo", "vol", 0, "Volapuk" } }, + { "wa", { "wa", "wln", -1, "Walloon" } }, + { "wo", { "wo", "wol", -1, "Wolof" } }, + { "xh", { "xh", "xho", -1, "Xhosa" } }, + { "yi", { "yi", "yid", -1, "Yiddish" } }, + { "yo", { "yo", "yor", -1, "Yoruba" } }, + { "za", { "za", "zha", -1, "Zhuang" } }, + { "zh", { "zh", "chi", 0, "Chinese" } }, + { "zu", { "zu", "zul", -1, "Zulu" } }, + { "jb", { "jb", "jbo", 0, "Lojban" } }, }; -LangCoder::LangCoder() +QString LangCoder::decode( quint32 _code ) { - for ( const auto & lc : LangCodes ) { - codeMap[ lc.code ] = lc; - } -} - -QString LangCoder::decode(quint32 code) -{ - auto code2 = intToCode2( code ); - if ( langCoder.codeMap.contains( code2 ) ) - return QString::fromStdString( langCoder.codeMap[ code2 ].lang ); + if ( auto code = intToCode2( _code ); exists( code ) ) + return QString::fromStdString( LANG_CODE_MAP[ code ].lang ); return {}; } +bool LangCoder::exists( const QString & _code ) +{ + return LANG_CODE_MAP.contains( _code ); +} QIcon LangCoder::icon( quint32 _code ) { - auto code = intToCode2( _code ); - - if (langCoder.codeMap.contains(code)) - { - const GDLangCode & lc = langCoder.codeMap[ code ]; + if ( auto code = intToCode2( _code ); exists( code ) ) { + const GDLangCode & lc = LANG_CODE_MAP[ code ]; return QIcon( ":/flags/" + QString(lc.code) + ".png" ); } @@ -254,7 +243,7 @@ quint32 LangCoder::findIdForLanguage( gd::wstring const & lang ) { const auto langFolded = Utf8::encode( lang ); - for ( auto const & lc : LangCodes ) { + for ( auto const & lc : LANG_CODE_MAP ) { if ( langFolded == lc.lang ) { return code2toInt( lc.code.toStdString().c_str() ); } @@ -265,7 +254,7 @@ quint32 LangCoder::findIdForLanguage( gd::wstring const & lang ) quint32 LangCoder::findIdForLanguageCode3( std::string const & code ) { - for ( auto const & lc : LangCodes ) { + for ( auto const & lc : LANG_CODE_MAP ) { if ( code == lc.code3 ) { return code2toInt( lc.code ); } @@ -285,7 +274,7 @@ quint32 LangCoder::guessId( const QString & lang ) // check if it could be the whole language name if (lstr.size() >= 3) { - for ( auto const & lc : LangCodes ) { + for ( auto const & lc : LANG_CODE_MAP ) { if ( lstr == ( lstr.size() == 3 ? QString::fromStdString( lc.code3 ) : QString::fromStdString( lc.lang ) ) ) { return code2toInt( lc.code ); } @@ -322,12 +311,9 @@ QPair LangCoder::findIdsForFilename( QString const & name ) bool LangCoder::isLanguageRTL( quint32 _code ) { - auto code = intToCode2( _code ); - if ( langCoder.codeMap.contains( code ) ) - { - GDLangCode & lc = langCoder.codeMap[ code ]; - if( lc.isRTL < 0 ) - { + if ( auto code = intToCode2( _code ); exists( code ) ) { + GDLangCode lc = LANG_CODE_MAP[ code ]; + if ( lc.isRTL < 0 ) { lc.isRTL = static_cast< int >( QLocale( lc.code ).textDirection() == Qt::RightToLeft ); } return lc.isRTL != 0; diff --git a/src/langcoder.hh b/src/langcoder.hh index 65252e22..a175cb83 100644 --- a/src/langcoder.hh +++ b/src/langcoder.hh @@ -15,7 +15,6 @@ struct GDLangCode class LangCoder { public: - LangCoder(); static quint32 code2toInt( const char code[ 2 ] ) { @@ -45,7 +44,7 @@ public: static quint32 guessId( const QString & lang ); /// Returns decoded name of language or empty string if not found. - static QString decode(quint32 code); + static QString decode( quint32 _code ); /// Returns icon for language or empty string if not found. static QIcon icon( quint32 code ); @@ -53,7 +52,8 @@ public: static bool isLanguageRTL( quint32 code ); private: - QMap< QString, GDLangCode > codeMap; + static QMap< QString, GDLangCode > LANG_CODE_MAP; + static bool exists( const QString & _code ); }; ///////////////////////////////////////////////////////////////////////////////