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