1 // --------------------------------------------------------------------------------------------------------------------
\r
2 // <copyright file="LanguageCodes.cs" company="HandBrake Project (http://handbrake.fr)">
\r
3 // This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
\r
6 // Contains utilities for converting language codes.
\r
8 // --------------------------------------------------------------------------------------------------------------------
\r
10 namespace HandBrake.Interop
\r
12 using System.Collections.Generic;
\r
15 /// Contains utilities for converting language codes.
\r
17 public static class LanguageCodes
\r
20 /// The map of language codes to friendly names.
\r
22 private static Dictionary<string, string> languageMap;
\r
25 /// Gets the map of language codes to friendly names.
\r
27 private static Dictionary<string, string> LanguageMap
\r
31 if (languageMap == null)
\r
33 languageMap = new Dictionary<string, string>
\r
35 {"und", "Unspecified"},
\r
38 {"fra", "Français"},
\r
42 {"abk", "Abkhazian"},
\r
43 {"afr", "Afrikaans"},
\r
45 {"sqi", "Albanian"},
\r
48 {"arg", "Aragonese"},
\r
49 {"hye", "Armenian"},
\r
50 {"asm", "Assamese"},
\r
54 {"aze", "Azerbaijani"},
\r
58 {"bel", "Belarusian"},
\r
64 {"bul", "Bulgarian"},
\r
67 {"cha", "Chamorro"},
\r
70 {"chu", "Church Slavic"},
\r
73 {"cos", "Corsican"},
\r
78 {"nld", "Nederlands"},
\r
79 {"dzo", "Dzongkha"},
\r
80 {"epo", "Esperanto"},
\r
81 {"est", "Estonian"},
\r
86 {"fry", "Western Frisian"},
\r
88 {"kat", "Georgian"},
\r
89 {"gla", "Gaelic (Scots)"},
\r
91 {"glg", "Galician"},
\r
93 {"ell", "Greek Modern"},
\r
95 {"guj", "Gujarati"},
\r
101 {"hmo", "Hiri Motu"},
\r
104 {"isl", "Islenska"},
\r
106 {"iii", "Sichuan Yi"},
\r
107 {"iku", "Inuktitut"},
\r
108 {"ile", "Interlingue"},
\r
109 {"ina", "Interlingua"},
\r
110 {"ind", "Indonesian"},
\r
111 {"ipk", "Inupiaq"},
\r
112 {"ita", "Italiano"},
\r
113 {"jav", "Javanese"},
\r
114 {"jpn", "Japanese"},
\r
115 {"kal", "Kalaallisut"},
\r
116 {"kan", "Kannada"},
\r
117 {"kas", "Kashmiri"},
\r
120 {"khm", "Central Khmer"},
\r
122 {"kin", "Kinyarwanda"},
\r
123 {"kir", "Kirghiz"},
\r
127 {"kua", "Kuanyama"},
\r
128 {"kur", "Kurdish"},
\r
131 {"lav", "Latvian"},
\r
132 {"lim", "Limburgan"},
\r
133 {"lin", "Lingala"},
\r
134 {"lit", "Lithuanian"},
\r
135 {"ltz", "Luxembourgish"},
\r
136 {"lub", "Luba-Katanga"},
\r
138 {"mkd", "Macedonian"},
\r
139 {"mah", "Marshallese"},
\r
140 {"mal", "Malayalam"},
\r
142 {"mar", "Marathi"},
\r
144 {"mlg", "Malagasy"},
\r
145 {"mlt", "Maltese"},
\r
146 {"mol", "Moldavian"},
\r
147 {"mon", "Mongolian"},
\r
150 {"nbl", "Ndebele, South"},
\r
151 {"nde", "Ndebele, North"},
\r
154 {"nno", "Norwegian Nynorsk"},
\r
155 {"nob", "Norwegian Bokmål"},
\r
157 {"nya", "Chichewa; Nyanja"},
\r
158 {"oci", "Occitan"},
\r
162 {"oss", "Ossetian"},
\r
163 {"pan", "Panjabi"},
\r
164 {"fas", "Persian"},
\r
167 {"por", "Portugues"},
\r
169 {"que", "Quechua"},
\r
170 {"roh", "Romansh"},
\r
171 {"ron", "Romanian"},
\r
174 {"san", "Sanskrit"},
\r
175 {"srp", "Serbian"},
\r
176 {"hrv", "Hrvatski"},
\r
177 {"sin", "Sinhala"},
\r
179 {"slv", "Slovenian"},
\r
180 {"sme", "Northern Sami"},
\r
185 {"sot", "Sotho Southern"},
\r
186 {"srd", "Sardinian"},
\r
188 {"sun", "Sundanese"},
\r
189 {"swa", "Swahili"},
\r
190 {"swe", "Svenska"},
\r
191 {"tah", "Tahitian"},
\r
196 {"tgl", "Tagalog"},
\r
198 {"bod", "Tibetan"},
\r
199 {"tir", "Tigrinya"},
\r
203 {"tuk", "Turkmen"},
\r
204 {"tur", "Turkish"},
\r
207 {"ukr", "Ukrainian"},
\r
211 {"vie", "Vietnamese"},
\r
212 {"vol", "Volapük"},
\r
214 {"wln", "Walloon"},
\r
217 {"yid", "Yiddish"},
\r
224 return languageMap;
\r
229 /// Gets a list of all languages.
\r
231 public static IList<Language> Languages
\r
235 List<Language> languages = new List<Language>();
\r
237 foreach (string languageCode in LanguageMap.Keys)
\r
239 languages.Add(new Language(languageCode));
\r
247 /// Gives the friendly name of the language with the given code.
\r
249 /// <param name="languageCode">The language code.</param>
\r
250 /// <returns>The friendly name of the language.</returns>
\r
251 public static string Decode(string languageCode)
\r
253 if (LanguageMap.ContainsKey(languageCode))
\r
255 return LanguageMap[languageCode];
\r