1
# Miro - an RSS based video player application
2
# Copyright (C) 2005-2010 Participatory Culture Foundation
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; either version 2 of the License, or
7
# (at your option) any later version.
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
# GNU General Public License for more details.
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
# In addition, as a special exception, the copyright holders give
19
# permission to link the code of portions of this program with the OpenSSL
22
# You must obey the GNU General Public License in all respects for all of
23
# the code used other than OpenSSL. If you modify file(s) with this
24
# exception, you may extend this exception to your version of the file(s},
25
# but you are not obligated to do so. If you do not wish to do so, delete
26
# this exception statement from your version. If you delete this exception
27
# statement from all source files in the program, then also delete it here.
29
"""Holds the international standard for short codes for language names.
32
TWO_LETTERS_CODE = "alpha2"
33
THREE_LETTERS_CODE = "alpha3"
34
LENGTH_MAP = {2: TWO_LETTERS_CODE, 3: THREE_LETTERS_CODE}
36
def find(value, key=None):
37
"""For a given language code value, returns the language name.
40
{'alpha2': 'en', 'alpha3': 'eng', 'name': u'English'}
41
>>> find('foo', THREE_LETTERS_CODE)
44
:param value: language code value. example: 'en'
46
:param key: either None, ``TWO_LETTER_CODE`` or
47
``THREE_LETTERS_CODE``
49
:returns: the language dict
55
parts = value.split("_")
59
key = LENGTH_MAP[len(value)]
60
except (TypeError, KeyError):
62
for lang in LANGUAGES_MAP:
63
if key in lang and lang[key] == value:
66
langdict["name"] = u"%s (%s)" % (langdict["name"], parts[1])
71
{"alpha2": "", "alpha3": "und", "name": u"Unspecified"},
72
{"alpha2": "af", "alpha3": "afr", "name": u"Afrikaans"},
73
{"alpha2": "sq", "alpha3": "alb", "name": u"Albanian"},
74
{"alpha2": "sq", "alpha3": "sqi", "name": u"Albanian"},
75
{"alpha2": "am", "alpha3": "amh", "name": u"Amharic"},
76
{"alpha2": "ar", "alpha3": "ara", "name": u"Arabic"},
77
{"alpha2": "hy", "alpha3": "arm", "name": u"Armenian"},
78
{"alpha2": "hy", "alpha3": "hye", "name": u"Armenian"},
79
{"alpha2": "as", "alpha3": "asm", "name": u"Assamese"},
80
{"alpha2": "ay", "alpha3": "aym", "name": u"Aymara"},
81
{"alpha2": "az", "alpha3": "aze", "name": u"Azerbaijani"},
82
{"alpha2": "eu", "alpha3": "baq", "name": u"Basque"},
83
{"alpha2": "eu", "alpha3": "eus", "name": u"Basque"},
84
{"alpha2": "be", "alpha3": "bel", "name": u"Belarusian"},
85
{"alpha2": "bn", "alpha3": "ben", "name": u"Bengali"},
86
{"alpha2": "bs", "alpha3": "bos", "name": u"Bosnian"},
87
{"alpha2": "br", "alpha3": "bre", "name": u"Breton"},
88
{"alpha2": "bg", "alpha3": "bul", "name": u"Bulgarian"},
89
{"alpha2": "my", "alpha3": "bur", "name": u"Burmese"},
90
{"alpha2": "my", "alpha3": "mya", "name": u"Burmese"},
91
{"alpha2": "ca", "alpha3": "cat", "name": u"Catalan"},
92
{"alpha2": "zh", "alpha3": "chi", "name": u"Chinese"},
93
{"alpha2": "zh", "alpha3": "zho", "name": u"Chinese"},
94
{"alpha2": "cz", "alpha3": "cze", "name": u"Czech"},
95
{"alpha2": "cs", "alpha3": "ces", "name": u"Czech"},
96
{"alpha2": "da", "alpha3": "dan", "name": u"Danish"},
97
{"alpha2": "nl", "alpha3": "dut", "name": u"Dutch"},
98
{"alpha2": "nl", "alpha3": "nld", "name": u"Dutch"},
99
{"alpha2": "dz", "alpha3": "dzo", "name": u"Dzongkha"},
100
{"alpha2": "en", "alpha3": "eng", "name": u"English"},
101
{"alpha2": "eo", "alpha3": "epo", "name": u"Esperanto"},
102
{"alpha2": "et", "alpha3": "est", "name": u"Estonian"},
103
{"alpha2": "fo", "alpha3": "fao", "name": u"Faroese"},
104
{"alpha2": "", "alpha3": "fil", "name": u"Filipino"},
105
{"alpha2": "fi", "alpha3": "fin", "name": u"Finnish"},
106
{"alpha2": "fr", "alpha3": "fre", "name": u"French"},
107
{"alpha2": "fr", "alpha3": "fra", "name": u"French"},
108
{"alpha2": "fy", "alpha3": "fry", "name": u"Western Frisian"},
109
{"alpha2": "ka", "alpha3": "geo", "name": u"Georgian"},
110
{"alpha2": "ka", "alpha3": "kat", "name": u"Georgian"},
111
{"alpha2": "de", "alpha3": "ger", "name": u"German"},
112
{"alpha2": "de", "alpha3": "deu", "name": u"German"},
113
{"alpha2": "", "alpha3": "nds", "name": u"LowGerman"},
114
{"alpha2": "gl", "alpha3": "glg", "name": u"Galician"},
115
{"alpha2": "gd", "alpha3": "gla", "name": u"ScottishGaelic"},
116
{"alpha2": "ga", "alpha3": "gle", "name": u"IrishGaelic"},
117
{"alpha2": "gv", "alpha3": "glv", "name": u"ManxGaelic"},
118
{"alpha2": "", "alpha3": "grc", "name": u"GreekAncient"},
119
{"alpha2": "el", "alpha3": "gre", "name": u"Greek"},
120
{"alpha2": "el", "alpha3": "ell", "name": u"Greek"},
121
{"alpha2": "gn", "alpha3": "grn", "name": u"Guarani"},
122
{"alpha2": "gu", "alpha3": "guj", "name": u"Gujarati"},
123
{"alpha2": "he", "alpha3": "heb", "name": u"Hebrew"},
124
{"alpha2": "hi", "alpha3": "hin", "name": u"Hindi"},
125
{"alpha2": "hu", "alpha3": "hun", "name": u"Hungarian"},
126
{"alpha2": "is", "alpha3": "ice", "name": u"Icelandic"},
127
{"alpha2": "is", "alpha3": "isl", "name": u"Icelandic"},
128
{"alpha2": "id", "alpha3": "ind", "name": u"Indonesian"},
129
{"alpha2": "it", "alpha3": "ita", "name": u"Italian"},
130
{"alpha2": "jv", "alpha3": "jav", "name": u"JavaneseRom"},
131
{"alpha2": "ja", "alpha3": "jpn", "name": u"Japanese"},
132
{"alpha2": "kl", "alpha3": "kal", "name": u"Greenlandic"},
133
{"alpha2": "kn", "alpha3": "kan", "name": u"Kannada"},
134
{"alpha2": "ks", "alpha3": "kas", "name": u"Kashmiri"},
135
{"alpha2": "kk", "alpha3": "kaz", "name": u"Kazakh"},
136
{"alpha2": "km", "alpha3": "khm", "name": u"Khmer"},
137
{"alpha2": "rw", "alpha3": "kin", "name": u"Kinyarwanda"},
138
{"alpha2": "ky", "alpha3": "kir", "name": u"Kirghiz"},
139
{"alpha2": "ko", "alpha3": "kor", "name": u"Korean"},
140
{"alpha2": "ku", "alpha3": "kur", "name": u"Kurdish"},
141
{"alpha2": "", "alpha3": "ckb", "name": u"Central Kurdish"},
142
{"alpha2": "", "alpha3": "csb", "name": u"Kashubian"},
143
{"alpha2": "lo", "alpha3": "lao", "name": u"Lao"},
144
{"alpha2": "la", "alpha3": "lat", "name": u"Latin"},
145
{"alpha2": "lv", "alpha3": "lav", "name": u"Latvian"},
146
{"alpha2": "lt", "alpha3": "lit", "name": u"Lithuanian"},
147
{"alpha2": "lb", "alpha3": "ltz", "name": u"Luxembourgish"},
148
{"alpha2": "mk", "alpha3": "mac", "name": u"Macedonian"},
149
{"alpha2": "mk", "alpha3": "mkd", "name": u"Macedonian"},
150
{"alpha2": "ml", "alpha3": "mal", "name": u"Malayalam"},
151
{"alpha2": "mr", "alpha3": "mar", "name": u"Marathi"},
152
{"alpha2": "ms", "alpha3": "may", "name": u"MalayRoman"},
153
{"alpha2": "ms", "alpha3": "msa", "name": u"MalayRoman"},
154
{"alpha2": "mg", "alpha3": "mlg", "name": u"Malagasy"},
155
{"alpha2": "mt", "alpha3": "mlt", "name": u"Maltese"},
156
{"alpha2": "mo", "alpha3": "mol", "name": u"Moldavian"},
157
{"alpha2": "mn", "alpha3": "mon", "name": u"Mongolian"},
158
{"alpha2": "ne", "alpha3": "nep", "name": u"Nepali"},
159
{"alpha2": "nb", "alpha3": "nob", "name": u"Norwegian"},
160
{"alpha2": "no", "alpha3": "nor", "name": u"Norwegian"},
161
{"alpha2": "nn", "alpha3": "nno", "name": u"Nynorsk"},
162
{"alpha2": "ny", "alpha3": "nya", "name": u"Nyanja"},
163
{"alpha2": "oc", "alpha3": "oci", "name": u"Occitan"},
164
{"alpha2": "or", "alpha3": "ori", "name": u"Oriya"},
165
{"alpha2": "om", "alpha3": "orm", "name": u"Oromo"},
166
{"alpha2": "pa", "alpha3": "pan", "name": u"Punjabi"},
167
{"alpha2": "fa", "alpha3": "per", "name": u"Persian"},
168
{"alpha2": "fa", "alpha3": "fas", "name": u"Persian"},
169
{"alpha2": "pl", "alpha3": "pol", "name": u"Polish"},
170
{"alpha2": "pt", "alpha3": "por", "name": u"Portuguese"},
171
{"alpha2": "qu", "alpha3": "que", "name": u"Quechua"},
172
{"alpha2": "ro", "alpha3": "rum", "name": u"Romanian"},
173
{"alpha2": "ro", "alpha3": "ron", "name": u"Romanian"},
174
{"alpha2": "rn", "alpha3": "run", "name": u"Rundi"},
175
{"alpha2": "ru", "alpha3": "rus", "name": u"Russian"},
176
{"alpha2": "sa", "alpha3": "san", "name": u"Sanskrit"},
177
{"alpha2": "sr", "alpha3": "scc", "name": u"Serbian"},
178
{"alpha2": "sr", "alpha3": "srp", "name": u"Serbian"},
179
{"alpha2": "hr", "alpha3": "scr", "name": u"Croatian"},
180
{"alpha2": "hr", "alpha3": "hrv", "name": u"Croatian"},
181
{"alpha2": "si", "alpha3": "sin", "name": u"Sinhalese"},
182
{"alpha2": "", "alpha3": "sit", "name": u"Tibetan"},
183
{"alpha2": "sk", "alpha3": "slo", "name": u"Slovak"},
184
{"alpha2": "sk", "alpha3": "slk", "name": u"Slovak"},
185
{"alpha2": "sl", "alpha3": "slv", "name": u"Slovenian"},
186
{"alpha2": "se", "alpha3": "sme", "name": u"Sami"},
187
{"alpha2": "", "alpha3": "smi", "name": u"Sami"},
188
{"alpha2": "sd", "alpha3": "snd", "name": u"Sindhi"},
189
{"alpha2": "so", "alpha3": "som", "name": u"Somali"},
190
{"alpha2": "es", "alpha3": "spa", "name": u"Spanish"},
191
{"alpha2": "su", "alpha3": "sun", "name": u"SundaneseRom"},
192
{"alpha2": "sw", "alpha3": "swa", "name": u"Swahili"},
193
{"alpha2": "sv", "alpha3": "swe", "name": u"Swedish"},
194
{"alpha2": "ta", "alpha3": "tam", "name": u"Tamil"},
195
{"alpha2": "tt", "alpha3": "tat", "name": u"Tatar"},
196
{"alpha2": "te", "alpha3": "tel", "name": u"Telugu"},
197
{"alpha2": "tg", "alpha3": "tgk", "name": u"Tajiki"},
198
{"alpha2": "tl", "alpha3": "tgl", "name": u"Tagalog"},
199
{"alpha2": "th", "alpha3": "tha", "name": u"Thai"},
200
{"alpha2": "bo", "alpha3": "tib", "name": u"Tibetan"},
201
{"alpha2": "bo", "alpha3": "bod", "name": u"Tibetan"},
202
{"alpha2": "ti", "alpha3": "tir", "name": u"Tigrinya"},
203
{"alpha2": "", "alpha3": "tog", "name": u"Tongan"},
204
{"alpha2": "tr", "alpha3": "tur", "name": u"Turkish"},
205
{"alpha2": "tk", "alpha3": "tuk", "name": u"Turkmen"},
206
{"alpha2": "ug", "alpha3": "uig", "name": u"Uighur"},
207
{"alpha2": "uk", "alpha3": "ukr", "name": u"Ukrainian"},
208
{"alpha2": "ur", "alpha3": "urd", "name": u"Urdu"},
209
{"alpha2": "uz", "alpha3": "uzb", "name": u"Uzbek"},
210
{"alpha2": "vi", "alpha3": "vie", "name": u"Vietnamese"},
211
{"alpha2": "cy", "alpha3": "wel", "name": u"Welsh"},
212
{"alpha2": "cy", "alpha3": "cym", "name": u"Welsh"},
213
{"alpha2": "yi", "alpha3": "yid", "name": u"Yiddish"},
214
{"alpha2": "zu", "alpha3": "zul", "name": u"Zulu"}
217
if __name__ == "__main__":
218
# This goes through all the languages we support in
219
# resources/locale/ and runs them through find and prints the ones
220
# that aren't in LANGUAGES_MAP.
222
langs = [mem[:-3] for mem in os.listdir("../resources/locale/")
223
if mem.endswith(".mo")]
230
print "%s -> %s" % (mem, ret)