~ubuntu-branches/ubuntu/natty/miro/natty

« back to all changes in this revision

Viewing changes to lib/iso639.py

  • Committer: Bazaar Package Importer
  • Author(s): Bryce Harrington
  • Date: 2011-01-22 02:46:33 UTC
  • mfrom: (1.4.10 upstream) (1.7.5 experimental)
  • Revision ID: james.westby@ubuntu.com-20110122024633-kjme8u93y2il5nmf
Tags: 3.5.1-1ubuntu1
* Merge from debian.  Remaining ubuntu changes:
  - Use python 2.7 instead of python 2.6
  - Relax dependency on python-dbus to >= 0.83.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Miro - an RSS based video player application
 
2
# Copyright (C) 2005-2010 Participatory Culture Foundation
 
3
#
 
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.
 
8
#
 
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.
 
13
#
 
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
 
17
#
 
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
 
20
# library.
 
21
#
 
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.
 
28
 
 
29
"""Holds the international standard for short codes for language names.
 
30
"""
 
31
 
 
32
TWO_LETTERS_CODE = "alpha2"
 
33
THREE_LETTERS_CODE = "alpha3"
 
34
LENGTH_MAP = {2: TWO_LETTERS_CODE, 3: THREE_LETTERS_CODE}
 
35
 
 
36
def find(value, key=None):
 
37
    """For a given language code value, returns the language name.
 
38
 
 
39
    >>> find('en')
 
40
    {'alpha2': 'en', 'alpha3': 'eng', 'name': u'English'}
 
41
    >>> find('foo', THREE_LETTERS_CODE)
 
42
    None
 
43
 
 
44
    :param value: language code value.  example: 'en'
 
45
 
 
46
    :param key: either None, ``TWO_LETTER_CODE`` or
 
47
        ``THREE_LETTERS_CODE``
 
48
 
 
49
    :returns: the language dict
 
50
    """
 
51
    if value is None:
 
52
        return None
 
53
    parts = None
 
54
    if "_" in value:
 
55
        parts = value.split("_")
 
56
        value = parts[0]
 
57
    if key is None:
 
58
        try:
 
59
            key = LENGTH_MAP[len(value)]
 
60
        except (TypeError, KeyError):
 
61
            return None
 
62
    for lang in LANGUAGES_MAP:
 
63
        if key in lang and lang[key] == value:
 
64
            langdict = dict(lang)
 
65
            if parts:
 
66
                langdict["name"] = u"%s (%s)" % (langdict["name"], parts[1])
 
67
            return langdict
 
68
    return None
 
69
 
 
70
LANGUAGES_MAP = [
 
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"}
 
215
]
 
216
 
 
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.
 
221
    import os
 
222
    langs = [mem[:-3] for mem in os.listdir("../resources/locale/")
 
223
             if mem.endswith(".mo")]
 
224
 
 
225
    unknown = []
 
226
    for mem in langs:
 
227
        ret = find(mem)
 
228
        if ret == None:
 
229
            unknown.append(mem)
 
230
        print "%s -> %s" % (mem, ret)