From: Daniel Caujolle-B. <f1...@us...> - 2003-04-26 22:15:40
|
Update of /cvsroot/xine/xine-ui/src/xitk In directory sc8-pr-cvs1:/tmp/cvs-serv32153 Modified Files: lang.c lang.h menus.c osd.c Log Message: display audio/spu language using ISO 639-1 Index: lang.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/lang.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- lang.c 5 Jan 2003 00:24:34 -0000 1.7 +++ lang.c 26 Apr 2003 22:15:26 -0000 1.8 @@ -269,6 +269,223 @@ { NULL, ENGLISH, "_en" } }; +/* ISO 639-1 */ +typedef struct { + unsigned char *two_letters; + unsigned char *language; +} iso639_1_t; + +static iso639_1_t iso639_1[] = { + { "ab", "Abkhazian" }, + { "aa", "Afar" }, + { "af", "Afrikaans" }, + { "ak", "Akan" }, + { "sq", "Albanian" }, + { "am", "Amharic" }, + { "ar", "Arabic" }, + { "an", "Aragonese" }, + { "hy", "Armenian" }, + { "as", "Assamese" }, + { "av", "Avaric" }, + { "ae", "Avestan" }, + { "ay", "Aymara" }, + { "az", "Azerbaijani" }, + { "bm", "Bambara" }, + { "ba", "Bashkir" }, + { "eu", "Basque" }, + { "be", "Belarusian" }, + { "bn", "Bengali" }, + { "bh", "Bihari" }, + { "bi", "Bislama" }, + { "nb", "Bokmål, Norwegian" }, + { "bs", "Bosnian" }, + { "br", "Breton" }, + { "bg", "Bulgarian" }, + { "my", "Burmese" }, + { "ca", "Catalan" }, + { "ch", "Chamorro" }, + { "ce", "Chechen" }, + { "zh", "Chinese" }, + { "cv", "Chuvash" }, + { "kw", "Cornish" }, + { "co", "Corse" }, + { "cr", "Cree" }, + { "hr", "Croatian" }, + { "cs", "Czech" }, + { "da", "Danish" }, + { "dv", "Divehi" }, + { "nl", "Dutch, Flemish" }, + { "dz", "Dzongkha" }, + { "en", "English" }, + { "eo", "Esperanto" }, + { "et", "Estonian" }, + { "ee", "Ewe" }, + { "fo", "Faroese" }, + { "fj", "Fijian" }, + { "fi", "Finnish" }, + { "fr", "Français" }, + { "fy", "Frisian" }, + { "ff", "Fulah" }, + { "gd", "Gaelic" }, + { "gl", "Gallegan" }, + { "lg", "Ganda" }, + { "ka", "Georgian" }, + { "de", "German" }, + { "el", "Greek" }, + { "kl", "Greenlandic" }, + { "gn", "Guarani" }, + { "gu", "Gujarati" }, + { "ha", "Hausa" }, + { "he", "Hebrew" }, + { "hz", "Herero" }, + { "hi", "Hindi" }, + { "ho", "Hiri Motu" }, + { "hu", "Hungarian" }, + { "is", "Icelandic" }, + { "io", "Ido" }, + { "ig", "Igbo" }, + { "id", "Indonesian" }, + { "ia", "Interlingua" }, + { "ie", "Interlingue" }, + { "iu", "Inuktitut" }, + { "ik", "Inupiaq" }, + { "ga", "Irish" }, + { "it", "Italian" }, + { "ja", "Japanese" }, + { "jv", "Javanese" }, + { "kn", "Kannada" }, + { "kr", "Kanuri" }, + { "ks", "Kashmiri" }, + { "kk", "Kazakh" }, + { "km", "Khmer" }, + { "ki", "Kikuyu" }, + { "rw", "Kinyarwanda" }, + { "ky", "Kirghiz" }, + { "kv", "Komi" }, + { "kg", "Kongo" }, + { "ko", "Korean" }, + { "kj", "Kuanyama" }, + { "ku", "Kurdish" }, + { "lo", "Lao" }, + { "la", "Latin" }, + { "lv", "Latvian" }, + { "lb", "Letzeburgesch" }, + { "li", "Limburgan" }, + { "ln", "Lingala" }, + { "lt", "Lithuanian" }, + { "lu", "Luba-Katanga" }, + { "mk", "Macedonian" }, + { "mg", "Malagasy" }, + { "ms", "Malay" }, + { "ml", "Malayalam" }, + { "mt", "Maltese" }, + { "gv", "Manx" }, + { "mi", "Maori" }, + { "mr", "Marathi" }, + { "mh", "Marshallese" }, + { "mo", "Moldavian" }, + { "mn", "Mongolian" }, + { "na", "Nauru" }, + { "nv", "Navaho" }, + { "nd", "Ndebele North" }, + { "nr", "Ndebele South" }, + { "ng", "Ndonga" }, + { "ne", "Nepali" }, + { "se", "Northern Sami" }, + { "no", "Norwegian" }, + { "nn", "Norwegian Nynorsk" }, + { "ny", "Nyanja" }, + { "oc", "Provençal" }, + { "oj", "Ojibwa" }, + { "cu", "Old Bulgarian" }, + { "or", "Oriya" }, + { "om", "Oromo" }, + { "os", "Ossetian" }, + { "pi", "Pali" }, + { "pa", "Panjabi" }, + { "fa", "Persian" }, + { "pl", "Polish" }, + { "pt", "Portuguese" }, + { "ps", "Pushto" }, + { "qu", "Quechua" }, + { "rm", "Raeto-Romance" }, + { "ro", "Romanian" }, + { "rn", "Rundi" }, + { "ru", "Russian" }, + { "sm", "Samoan" }, + { "sg", "Sango" }, + { "sa", "Sanskrit" }, + { "sc", "Sardinian" }, + { "sr", "Serbian" }, + { "sn", "Shona" }, + { "ii", "Sichuan Yi" }, + { "sd", "Sindhi" }, + { "si", "Sinhalese" }, + { "sk", "Slovak" }, + { "sl", "Slovenian" }, + { "so", "Somali" }, + { "st", "Sotho" }, + { "es", "Spanish" }, + { "su", "Sundanese" }, + { "sw", "Swahili" }, + { "ss", "Swati" }, + { "sv", "Swedish" }, + { "tl", "Tagalog" }, + { "ty", "Tahitian" }, + { "tg", "Tajik" }, + { "ta", "Tamil" }, + { "tt", "Tatar" }, + { "te", "Telugu" }, + { "th", "Thai" }, + { "bo", "Tibetan" }, + { "ti", "Tigrinya" }, + { "to", "Tonga" }, + { "ts", "Tsonga" }, + { "tn", "Tswana" }, + { "tr", "Turkish" }, + { "tk", "Turkmen" }, + { "tw", "Twi" }, + { "ug", "Uighur" }, + { "uk", "Ukrainian" }, + { "ur", "Urdu" }, + { "uz", "Uzbek" }, + { "ve", "Venda" }, + { "vi", "Vietnamese" }, + { "vo", "Volapük" }, + { "wa", "Walloon" }, + { "cy", "Welsh" }, + { "wo", "Wolof" }, + { "xh", "Xhosa" }, + { "yi", "Yiddish" }, + { "yo", "Yoruba" }, + { "za", "Zhuang" }, + { "zu", "Zulu" }, + { NULL, NULL } +}; + +/* + * Return language from iso639-1 two letters. + */ +const char *get_language_from_iso639_1(char *two_letters) { + + if(two_letters) { + char *tl = two_letters; + + while((*tl == ' ') && (*tl != '\0')) + tl++; + + if(tl && (strlen(tl) == 2)) { + int i; + + for(i = 0; iso639_1[i].two_letters; i++) { + if(!strcmp(iso639_1[i].two_letters, tl)) + return iso639_1[i].language; + } + } + } + + return two_letters ? two_letters : _("Unknown"); +} /* * Return a langs_t pointer on static struct langs[]; Index: lang.h =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/lang.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- lang.h 5 Jan 2003 00:24:34 -0000 1.5 +++ lang.h 26 Apr 2003 22:15:27 -0000 1.6 @@ -45,4 +45,6 @@ const langs_t *get_lang(void); const langs_t *get_default_lang(void); +const char *get_language_from_iso639_1(char *two_letters); + #endif Index: menus.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/menus.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- menus.c 26 Apr 2003 12:56:57 -0000 1.20 +++ menus.c 26 Apr 2003 22:15:29 -0000 1.21 @@ -646,7 +646,7 @@ break; } - sprintf(buffer, "%s/%s", location, langbuf); + sprintf(buffer, "%s/%s", location, (get_language_from_iso639_1(langbuf))); menu_entry.menu = buffer; menu_entry.type = IS_CHANNEL_CHECKED(channel, i); menu_entry.cb = menu_audio_chan; @@ -696,7 +696,7 @@ break; } - sprintf(buffer, "%s/%s", location, langbuf); + sprintf(buffer, "%s/%s", location, (get_language_from_iso639_1(langbuf))); menu_entry.menu = buffer; menu_entry.type = IS_CHANNEL_CHECKED(channel, i); menu_entry.cb = menu_spu_chan; @@ -796,7 +796,7 @@ break; } - menu_entry.menu = langbuf; + menu_entry.menu = (char *) get_language_from_iso639_1(langbuf); menu_entry.type = IS_CHANNEL_CHECKED(channel, i); menu_entry.cb = menu_audio_chan; menu_entry.user_data = (void *) i; @@ -868,7 +868,7 @@ break; } - menu_entry.menu = langbuf; + menu_entry.menu = (char *) get_language_from_iso639_1(langbuf); menu_entry.type = IS_CHANNEL_CHECKED(channel, i); menu_entry.cb = menu_spu_chan; menu_entry.user_data = (void *) i; Index: osd.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/osd.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- osd.c 20 Apr 2003 23:02:28 -0000 1.18 +++ osd.c 26 Apr 2003 22:15:29 -0000 1.19 @@ -622,7 +622,7 @@ break; } - sprintf(buffer, _("Subtitles: %s"), lang); + sprintf(buffer, _("Subtitles: %s"), get_language_from_iso639_1(lang)); osd_display_info(buffer); } @@ -651,6 +651,6 @@ break; } - sprintf(buffer, _("Audio Channel: %s"), lang); + sprintf(buffer, _("Audio Channel: %s"), get_language_from_iso639_1(lang)); osd_display_info(buffer); } |