OSDN Git Service

Remove the set cpu count option as it doesn't do anything now
[handbrake-jp/handbrake-jp-git.git] / libhb / lang.c
1 /* $Id: lang.h,v 1.1 2004/08/02 07:19:05 titer Exp $
2
3    This file is part of the HandBrake source code.
4    Homepage: <http://handbrake.fr/>.
5    It may be used under the terms of the GNU General Public License. */
6
7 #include "lang.h"
8 #include <string.h>
9 #include <ctype.h>
10
11 static const iso639_lang_t languages[] =
12 { { "Unknown", "", "", "und" },
13   { "Afar", "", "aa", "aar" },
14   { "Abkhazian", "", "ab", "abk" },
15   { "Afrikaans", "", "af", "afr" },
16   { "Akan", "", "ak", "aka" },
17   { "Albanian", "", "sq", "sqi", "alb" },
18   { "Amharic", "", "am", "amh" },
19   { "Arabic", "", "ar", "ara" },
20   { "Aragonese", "", "an", "arg" },
21   { "Armenian", "", "hy", "hye", "arm" },
22   { "Assamese", "", "as", "asm" },
23   { "Avaric", "", "av", "ava" },
24   { "Avestan", "", "ae", "ave" },
25   { "Aymara", "", "ay", "aym" },
26   { "Azerbaijani", "", "az", "aze" },
27   { "Bashkir", "", "ba", "bak" },
28   { "Bambara", "", "bm", "bam" },
29   { "Basque", "", "eu", "eus", "baq" },
30   { "Belarusian", "", "be", "bel" },
31   { "Bengali", "", "bn", "ben" },
32   { "Bihari", "", "bh", "bih" },
33   { "Bislama", "", "bi", "bis" },
34   { "Bosnian", "", "bs", "bos" },
35   { "Breton", "", "br", "bre" },
36   { "Bulgarian", "", "bg", "bul" },
37   { "Burmese", "", "my", "mya", "bur" },
38   { "Catalan", "", "ca", "cat" },
39   { "Chamorro", "", "ch", "cha" },
40   { "Chechen", "", "ce", "che" },
41   { "Chinese", "", "zh", "zho", "chi" },
42   { "Church Slavic", "", "cu", "chu" },
43   { "Chuvash", "", "cv", "chv" },
44   { "Cornish", "", "kw", "cor" },
45   { "Corsican", "", "co", "cos" },
46   { "Cree", "", "cr", "cre" },
47   { "Czech", "", "cs", "ces", "cze" },
48   { "Danish", "Dansk", "da", "dan" },
49   { "Divehi", "", "dv", "div" },
50   { "Dutch", "Nederlands", "nl", "nld", "dut" },
51   { "Dzongkha", "", "dz", "dzo" },
52   { "English", "English", "en", "eng" },
53   { "Esperanto", "", "eo", "epo" },
54   { "Estonian", "", "et", "est" },
55   { "Ewe", "", "ee", "ewe" },
56   { "Faroese", "", "fo", "fao" },
57   { "Fijian", "", "fj", "fij" },
58   { "Finnish", "Suomi", "fi", "fin" },
59   { "French", "Francais", "fr", "fra", "fre" },
60   { "Western Frisian", "", "fy", "fry" },
61   { "Fulah", "", "ff", "ful" },
62   { "Georgian", "", "ka", "kat", "geo" },
63   { "German", "Deutsch", "de", "deu", "ger" },
64   { "Gaelic (Scots)", "", "gd", "gla" },
65   { "Irish", "", "ga", "gle" },
66   { "Galician", "", "gl", "glg" },
67   { "Manx", "", "gv", "glv" },
68   { "Greek, Modern", "", "el", "ell", "gre" },
69   { "Guarani", "", "gn", "grn" },
70   { "Gujarati", "", "gu", "guj" },
71   { "Haitian", "", "ht", "hat" },
72   { "Hausa", "", "ha", "hau" },
73   { "Hebrew", "", "he", "heb" },
74   { "Herero", "", "hz", "her" },
75   { "Hindi", "", "hi", "hin" },
76   { "Hiri Motu", "", "ho", "hmo" },
77   { "Hungarian", "Magyar", "hu", "hun" },
78   { "Igbo", "", "ig", "ibo" },
79   { "Icelandic", "Islenska", "is", "isl", "ice" },
80   { "Ido", "", "io", "ido" },
81   { "Sichuan Yi", "", "ii", "iii" },
82   { "Inuktitut", "", "iu", "iku" },
83   { "Interlingue", "", "ie", "ile" },
84   { "Interlingua", "", "ia", "ina" },
85   { "Indonesian", "", "id", "ind" },
86   { "Inupiaq", "", "ik", "ipk" },
87   { "Italian", "Italiano", "it", "ita" },
88   { "Javanese", "", "jv", "jav" },
89   { "Japanese", "", "ja", "jpn" },
90   { "Kalaallisut (Greenlandic)", "", "kl", "kal" },
91   { "Kannada", "", "kn", "kan" },
92   { "Kashmiri", "", "ks", "kas" },
93   { "Kanuri", "", "kr", "kau" },
94   { "Kazakh", "", "kk", "kaz" },
95   { "Central Khmer", "", "km", "khm" },
96   { "Kikuyu", "", "ki", "kik" },
97   { "Kinyarwanda", "", "rw", "kin" },
98   { "Kirghiz", "", "ky", "kir" },
99   { "Komi", "", "kv", "kom" },
100   { "Kongo", "", "kg", "kon" },
101   { "Korean", "", "ko", "kor" },
102   { "Kuanyama", "", "kj", "kua" },
103   { "Kurdish", "", "ku", "kur" },
104   { "Lao", "", "lo", "lao" },
105   { "Latin", "", "la", "lat" },
106   { "Latvian", "", "lv", "lav" },
107   { "Limburgan", "", "li", "lim" },
108   { "Lingala", "", "ln", "lin" },
109   { "Lithuanian", "", "lt", "lit" },
110   { "Luxembourgish", "", "lb", "ltz" },
111   { "Luba-Katanga", "", "lu", "lub" },
112   { "Ganda", "", "lg", "lug" },
113   { "Macedonian", "", "mk", "mkd", "mac" },
114   { "Marshallese", "", "mh", "mah" },
115   { "Malayalam", "", "ml", "mal" },
116   { "Maori", "", "mi", "mri", "mao" },
117   { "Marathi", "", "mr", "mar" },
118   { "Malay", "", "ms", "msa", "msa" },
119   { "Malagasy", "", "mg", "mlg" },
120   { "Maltese", "", "mt", "mlt" },
121   { "Moldavian", "", "mo", "mol" },
122   { "Mongolian", "", "mn", "mon" },
123   { "Nauru", "", "na", "nau" },
124   { "Navajo", "", "nv", "nav" },
125   { "Ndebele, South", "", "nr", "nbl" },
126   { "Ndebele, North", "", "nd", "nde" },
127   { "Ndonga", "", "ng", "ndo" },
128   { "Nepali", "", "ne", "nep" },
129   { "Norwegian Nynorsk", "", "nn", "nno" },
130   { "Norwegian Bokmål", "", "nb", "nob" },
131   { "Norwegian", "Norsk", "no", "nor" },
132   { "Chichewa; Nyanja", "", "ny", "nya" },
133   { "Occitan (post 1500); Provençal", "", "oc", "oci" },
134   { "Ojibwa", "", "oj", "oji" },
135   { "Oriya", "", "or", "ori" },
136   { "Oromo", "", "om", "orm" },
137   { "Ossetian; Ossetic", "", "os", "oss" },
138   { "Panjabi", "", "pa", "pan" },
139   { "Persian", "", "fa", "fas", "per" },
140   { "Pali", "", "pi", "pli" },
141   { "Polish", "", "pl", "pol" },
142   { "Portuguese", "Portugues", "pt", "por" },
143   { "Pushto", "", "ps", "pus" },
144   { "Quechua", "", "qu", "que" },
145   { "Romansh", "", "rm", "roh" },
146   { "Romanian", "", "ro", "ron", "rum" },
147   { "Rundi", "", "rn", "run" },
148   { "Russian", "", "ru", "rus" },
149   { "Sango", "", "sg", "sag" },
150   { "Sanskrit", "", "sa", "san" },
151   { "Serbian", "", "sr", "srp", "scc" },
152   { "Croatian", "Hrvatski", "hr", "hrv", "scr" },
153   { "Sinhala", "", "si", "sin" },
154   { "Slovak", "", "sk", "slk", "slo" },
155   { "Slovenian", "", "sl", "slv" },
156   { "Northern Sami", "", "se", "sme" },
157   { "Samoan", "", "sm", "smo" },
158   { "Shona", "", "sn", "sna" },
159   { "Sindhi", "", "sd", "snd" },
160   { "Somali", "", "so", "som" },
161   { "Sotho, Southern", "", "st", "sot" },
162   { "Spanish", "Espanol", "es", "spa" },
163   { "Sardinian", "", "sc", "srd" },
164   { "Swati", "", "ss", "ssw" },
165   { "Sundanese", "", "su", "sun" },
166   { "Swahili", "", "sw", "swa" },
167   { "Swedish", "Svenska", "sv", "swe" },
168   { "Tahitian", "", "ty", "tah" },
169   { "Tamil", "", "ta", "tam" },
170   { "Tatar", "", "tt", "tat" },
171   { "Telugu", "", "te", "tel" },
172   { "Tajik", "", "tg", "tgk" },
173   { "Tagalog", "", "tl", "tgl" },
174   { "Thai", "", "th", "tha" },
175   { "Tibetan", "", "bo", "bod", "tib" },
176   { "Tigrinya", "", "ti", "tir" },
177   { "Tonga (Tonga Islands)", "", "to", "ton" },
178   { "Tswana", "", "tn", "tsn" },
179   { "Tsonga", "", "ts", "tso" },
180   { "Turkmen", "", "tk", "tuk" },
181   { "Turkish", "", "tr", "tur" },
182   { "Twi", "", "tw", "twi" },
183   { "Uighur", "", "ug", "uig" },
184   { "Ukrainian", "", "uk", "ukr" },
185   { "Urdu", "", "ur", "urd" },
186   { "Uzbek", "", "uz", "uzb" },
187   { "Venda", "", "ve", "ven" },
188   { "Vietnamese", "", "vi", "vie" },
189   { "Volapük", "", "vo", "vol" },
190   { "Welsh", "", "cy", "cym", "wel" },
191   { "Walloon", "", "wa", "wln" },
192   { "Wolof", "", "wo", "wol" },
193   { "Xhosa", "", "xh", "xho" },
194   { "Yiddish", "", "yi", "yid" },
195   { "Yoruba", "", "yo", "yor" },
196   { "Zhuang", "", "za", "zha" },
197   { "Zulu", "", "zu", "zul" },
198   { NULL, NULL, NULL } };
199
200 iso639_lang_t * lang_for_code( int code )
201 {
202     char code_string[2];
203     iso639_lang_t * lang;
204
205     code_string[0] = tolower( ( code >> 8 ) & 0xFF );
206     code_string[1] = tolower( code & 0xFF );
207
208     for( lang = (iso639_lang_t*) languages; lang->eng_name; lang++ )
209     {
210         if( !strncmp( lang->iso639_1, code_string, 2 ) )
211         {
212             return lang;
213         }
214     }
215
216     return (iso639_lang_t*) languages;
217 }
218
219 iso639_lang_t * lang_for_code2( const char *code )
220 {
221     char code_string[4];
222     iso639_lang_t * lang;
223
224     code_string[0] = tolower( code[0] );
225     code_string[1] = tolower( code[1] );
226     code_string[2] = tolower( code[2] );
227     code_string[3] = 0;
228
229     for( lang = (iso639_lang_t*) languages; lang->eng_name; lang++ )
230     {
231         if( !strcmp( lang->iso639_2, code_string ) )
232         {
233             return lang;
234         }
235         if( lang->iso639_2b && !strcmp( lang->iso639_2b, code_string ) )
236         {
237             return lang;
238         }
239     }
240
241     return (iso639_lang_t*) languages;
242 }
243
244 int lang_to_code(const iso639_lang_t *lang)
245 {
246     int code = 0;
247
248     if (lang)
249         code = (lang->iso639_1[0] << 8) | lang->iso639_1[1];
250
251     return code;
252 }
253
254 iso639_lang_t * lang_for_english( const char * english )
255 {
256     iso639_lang_t * lang;
257
258     for( lang = (iso639_lang_t*) languages; lang->eng_name; lang++ )
259     {
260         if( !strcmp( lang->eng_name, english ) )
261         {
262             return lang;
263         }
264     }
265
266     return (iso639_lang_t*) languages;
267 }
268