diff options
-rw-r--r-- | tools/iso639.h | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/tools/iso639.h b/tools/iso639.h new file mode 100644 index 00000000..66438f13 --- /dev/null +++ b/tools/iso639.h @@ -0,0 +1,171 @@ +/* + * iso639.h: iso-639-1 <-> iso-639-2 language code translations + * + * See the main source file 'xineliboutput.c' for copyright information and + * how to reach the author. + * + * $Id: iso639.h,v 1.1 2008-02-20 03:55:11 phintuka Exp $ + * + */ + +#ifndef __ISO_639_H +#define __ISO_639_H + +static const struct { + const char iso639_2[4]; + const char iso639_1[4]; +} ISO639_map[] = +{ + {"???", "??"}, + {"abk", "ab"}, + {"aar", "aa"}, + {"afr", "af"}, + {"alb", "sq"}, + {"amh", "am"}, + {"ara", "ar"}, + {"arm", "hy"}, + {"ast", "as"}, + {"aym", "ay"}, + {"aze", "az"}, + {"bak", "ba"}, + {"baq", "eu"}, + {"bel", "be"}, + {"ben", "bn"}, + {"bih", "bh"}, + {"bis", "bi"}, + {"bre", "br"}, + {"bul", "bg"}, + {"bur", "my"}, + {"cat", "ca"}, + {"chi", "zh"}, + {"cos", "co"}, + {"scr", "hr"}, + {"cze", "cs"}, + {"dan", "da"}, + {"dut", "nl"}, + {"dzo", "dz"}, + {"eng", "en"}, + {"epo", "eo"}, + {"est", "et"}, + {"fao", "fo"}, + {"fij", "fj"}, + {"fin", "fi"}, + {"fre", "fr"}, + {"fry", "fy"}, + {"glg", "gl"}, + {"geo", "ka"}, + {"ger", "de"}, + {"gre", "el"}, + {"grn", "gn"}, + {"guj", "gu"}, + {"hau", "ha"}, + {"heb", "he"}, + {"hin", "hi"}, + {"hun", "hu"}, + {"ice", "is"}, + {"ind", "id"}, + {"ina", "ia"}, + {"iku", "iu"}, + {"ipk", "ik"}, + {"gle", "ga"}, + {"ita", "it"}, + {"jpn", "ja"}, + {"jav", "jv"}, + {"kal", "kl"}, + {"kan", "kn"}, + {"kas", "ks"}, + {"kaz", "kk"}, + {"khm", "km"}, + {"kin", "rw"}, + {"kir", "ky"}, + {"kor", "ko"}, + {"kur", "ku"}, + {"lao", "lo"}, + {"lat", "la"}, + {"lav", "lv"}, + {"lin", "ln"}, + {"lit", "lt"}, + {"mac", "mk"}, + {"mlg", "mg"}, + {"may", "ms"}, + {"mlt", "ml"}, + {"mao", "mi"}, + {"mar", "mr"}, + {"mol", "mo"}, + {"mon", "mn"}, + {"nau", "na"}, + {"nep", "ne"}, + {"nor", "no"}, + {"oci", "oc"}, + {"ori", "or"}, + {"orm", "om"}, + {"per", "fa"}, + {"pol", "pl"}, + {"por", "pt"}, + {"pus", "ps"}, + {"que", "qu"}, + {"roh", "rm"}, + {"rum", "ro"}, + {"run", "rn"}, + {"rus", "ru"}, + {"smo", "sm"}, + {"sag", "sg"}, + {"san", "sa"}, + {"srp", "sr"}, + {"scr", "sh"}, + {"sna", "sn"}, + {"snd", "sd"}, + {"sin", "si"}, + {"slo", "sk"}, + {"slv", "sl"}, + {"som", "so"}, + {"sot", "st"}, + {"spa", "es"}, + {"sun", "su"}, + {"swa", "sw"}, + {"ssw", "ss"}, + {"swe", "sv"}, + {"tgl", "tl"}, + {"tgk", "tg"}, + {"tam", "ta"}, + {"tat", "tt"}, + {"tel", "te"}, + {"tha", "th"}, + {"tib", "bo"}, + {"tir", "ti"}, + {"tog", "to"}, + {"tso", "ts"}, + {"tsn", "tn"}, + {"tur", "tr"}, + {"tuk", "tk"}, + {"twi", "tw"}, + {"uig", "ug"}, + {"ukr", "uk"}, + {"urd", "ur"}, + {"uzb", "uz"}, + {"vie", "vi"}, + {"vol", "vo"}, + {"wel", "cy"}, + {"wol", "wo"}, + {"xho", "xh"}, + {"yid", "yi"}, + {"yor", "yo"}, + {"zha", "za"}, + {"zul", "zu"}, +}; + +static const char *iso639_2_to_iso639_1(const char *lang) +{ + if (lang && lang[0]) { + if(lang[1] && !lang[2]) { + for (unsigned int i = 0 ; i < sizeof(ISO639_map) / sizeof(ISO639_map[0]); i++) + if (((uint16_t*)ISO639_map[i].iso639_1)[0] == ((uint16_t*)lang)[0]) + return ISO639_map[i].iso639_2; + LOGMSG("Unknown iso639-2 code: %s", lang); + } + return lang; + } + return NULL; +} + +#endif |