Index: trunk/tools/editor_trends/classes/wikiprojects.py |
— | — | @@ -1,917 +0,0 @@ |
2 | | -#!/usr/bin/python |
3 | | -# coding=utf-8 |
4 | | -''' |
5 | | -Copyright (C) 2010 by Diederik van Liere (dvanliere@gmail.com) |
6 | | -This program is free software; you can redistribute it and/or |
7 | | -modify it under the terms of the GNU General Public License version 2 |
8 | | -as published by the Free Software Foundation. |
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. |
12 | | -See the GNU General Public License for more details, at |
13 | | -http,//www.fsf.org/licenses/gpl.html |
14 | | -''' |
15 | | - |
16 | | -__author__ = '''\n'''.join(['Diederik van Liere (dvanliere@gmail.com)', ]) |
17 | | -__email__ = 'dvanliere at gmail dot com' |
18 | | -__date__ = '2010-10-21' |
19 | | -__version__ = '0.1' |
20 | | - |
21 | | -''' |
22 | | -This file provides mapper between language name and locale language name and |
23 | | -Wikipedia acronym. |
24 | | -Gothic and Birmese are not yet supported, see rows 450 and 554. |
25 | | -''' |
26 | | - |
27 | | -import os |
28 | | -import sys |
29 | | -import locale |
30 | | -import datetime |
31 | | -import time |
32 | | -import re |
33 | | -sys.path.append('..') |
34 | | - |
35 | | -from utils import text_utils |
36 | | -from utils import ordered_dict as odict |
37 | | - |
38 | | -class Wiki: |
39 | | - ''' |
40 | | - This class keeps track of the commands issued by the user and is used to |
41 | | - feed the different etl functions. Difference with configuration class is |
42 | | - that the configuration class are read-only settings that are always the |
43 | | - same for a user while these settings can change depending on the kind of |
44 | | - analysis requested. |
45 | | - ''' |
46 | | - def __init__(self, settings, args=None): |
47 | | - self.projects = {'wiki': 'wiki', |
48 | | - 'commons': 'wikicommons', |
49 | | - 'books': 'wikibooks', |
50 | | - 'news': 'wikinews', |
51 | | - 'quote': 'wikiquote', |
52 | | - 'source': 'wikisource', |
53 | | - 'versity': 'wikiversity', |
54 | | - 'tionary': 'wiktionary', |
55 | | - 'meta': 'metawiki', |
56 | | - 'species': 'wikispecies', |
57 | | - 'incubator': 'incubatorwiki', |
58 | | - 'foundation': 'foundationwiki', |
59 | | - 'mediawiki': 'mediawikiwiki', |
60 | | - 'outreach': 'outreachwiki', |
61 | | - 'strategic_planning': 'strategywiki', |
62 | | - 'usability_initiative': 'usabilitywiki', |
63 | | - #'multilingual_wikisource': None |
64 | | - } |
65 | | - #assert project in self.projects.keys() == True |
66 | | - self.settings = settings |
67 | | - self.short_project = 'wiki' |
68 | | - self.long_project = 'wikipedia' if self.short_project == 'wiki' else \ |
69 | | - self.projects.get(self.short_project, None) |
70 | | - |
71 | | - self.language = determine_default_language() |
72 | | - self.language_code = MAPPING[self.language] |
73 | | - self.valid_languages = self.project_supports_language() |
74 | | - |
75 | | - if args: |
76 | | - self.args = args |
77 | | - self.hash = self.secs_since_epoch() |
78 | | - self.base_location = self.get_value('location') \ |
79 | | - if self.get_value('location') != None else settings.input_location |
80 | | - self.short_project = self.get_project(settings) |
81 | | - self.update_language(self.get_value('language')) |
82 | | - #self.language = self.get_value('language') |
83 | | - #self.language_code = self.get_language() |
84 | | - self.targets = self.get_value('datasets') |
85 | | - self.function = self.get_value('func') |
86 | | - |
87 | | - self.collection = self.get_value('collection') |
88 | | - self.ignore = self.get_value('except') |
89 | | - self.clean = self.get_value('new') |
90 | | - self.force = self.get_value('force') |
91 | | - self.project = self.get_projectname() |
92 | | - self.location = self.get_project_location() |
93 | | - self.filename = self.generate_wikidump_filename() |
94 | | - self.namespaces = self.get_namespaces() |
95 | | - |
96 | | - self.dataset = os.path.join(settings.dataset_location, |
97 | | - self.project) |
98 | | - self.charts = os.path.join(settings.chart_location, |
99 | | - self.project) |
100 | | - |
101 | | - self.txt = os.path.join(self.location, 'txt') |
102 | | - self.sorted = os.path.join(self.location, 'sorted') |
103 | | - |
104 | | - self.directories = [self.location, |
105 | | - self.txt, |
106 | | - self.sorted, |
107 | | - self.dataset, |
108 | | - self.charts] |
109 | | - self.path = '/%s/latest/' % self.project |
110 | | - self.targets = self.targets.split(', ') |
111 | | - settings.verify_environment(self.directories) |
112 | | - |
113 | | - def __str__(self): |
114 | | - return 'Wiki Project Settings' |
115 | | - |
116 | | - def __iter__(self): |
117 | | - for item in self.__dict__: |
118 | | - yield item |
119 | | - |
120 | | - def dict(self): |
121 | | - ''' |
122 | | - Return a dictionary with all properties and their values |
123 | | - ''' |
124 | | - props = {} |
125 | | - for prop in self: |
126 | | - props[prop] = getattr(self, prop) |
127 | | - return props |
128 | | - |
129 | | - def get_project_location(self): |
130 | | - ''' |
131 | | - Construct the full project location |
132 | | - ''' |
133 | | - return os.path.join(self.base_location, self.language_code, self.project) |
134 | | - |
135 | | - def show_settings(self): |
136 | | - ''' |
137 | | - Prints some very high level configuration settings. |
138 | | - ''' |
139 | | - about = {} |
140 | | - about['Project'] = '%s' % self.long_project.title() |
141 | | - about['Language'] = '%s / %s' % (self.language, self.language_code) |
142 | | - about['Input directory'] = '%s' % self.location |
143 | | - about['Output directory'] = '%s and subdirectories' % self.location |
144 | | - |
145 | | - max_length_key = max([len(key) for key in about.keys()]) |
146 | | - print 'Final settings after parsing command line arguments:' |
147 | | - for ab in about: |
148 | | - print '%s: %s' % (ab.rjust(max_length_key), about[ab]) |
149 | | - |
150 | | - |
151 | | - def get_value(self, key): |
152 | | - ''' |
153 | | - Returns key from argument if present else None |
154 | | - ''' |
155 | | - return getattr(self.args, key, None) |
156 | | - |
157 | | - def get_project(self, settings): |
158 | | - ''' |
159 | | - Determine the project to be analyzed, default is Wikipedia |
160 | | - ''' |
161 | | - project = self.get_value('project') |
162 | | - if project != 'wiki': |
163 | | - project = self.projects.get(project, None) |
164 | | - return project |
165 | | - |
166 | | - def generate_wikidump_filename(self): |
167 | | - ''' |
168 | | - Generate the main name of the wikidump file to be downloaded. |
169 | | - ''' |
170 | | - return '%s-latest-%s' % (self.project, |
171 | | - self.get_value('file')) |
172 | | - |
173 | | - |
174 | | - def get_projectname(self): |
175 | | - ''' |
176 | | - Determine the full project name based on the project acronym and language. |
177 | | - ''' |
178 | | - #language_code = self.get_language() |
179 | | - print self.language_code, self.short_project |
180 | | - if self.language_code == None: |
181 | | - print 'Entered language: %s is not a valid Wikimedia language' \ |
182 | | - % self.get_value('language') |
183 | | - sys.exit(-1) |
184 | | - |
185 | | - if self.long_project == None: |
186 | | - print 'Entered project: %s is not valid Wikimedia Foundation project.' \ |
187 | | - % self.get_value('project') |
188 | | - sys.exit(-1) |
189 | | - else: |
190 | | - return '%s%s' % (self.language_code, self.short_project) |
191 | | - |
192 | | - def secs_since_epoch(self): |
193 | | - dt = datetime.datetime.now() |
194 | | - return time.mktime(dt.timetuple()) |
195 | | - |
196 | | - |
197 | | -# def get_language(self): |
198 | | -# ''' |
199 | | -# Get the locale name of the language |
200 | | -# ''' |
201 | | -# language = self.get_value('language') |
202 | | -# if language != None: |
203 | | -# language = language.title() |
204 | | -# return languages.MAPPING.get(language, 'en') |
205 | | - |
206 | | - def get_namespaces(self): |
207 | | - ''' |
208 | | - Get the list of namespaces that should be included for analysis. Default |
209 | | - is namespace 0 (the main namespace) |
210 | | - ''' |
211 | | - namespaces = self.get_value('namespace') |
212 | | - if namespaces != None: |
213 | | - return namespaces.split(',') |
214 | | - else: |
215 | | - return namespaces |
216 | | - |
217 | | - def update_project(self, project): |
218 | | - self.short_project = project |
219 | | - self.long_project = self.projects.get(project, None) |
220 | | - |
221 | | - def update_language(self, language): |
222 | | - self.language = language |
223 | | - #languages = language_map() |
224 | | - self.language_code = MAPPING.get(language, None) |
225 | | - |
226 | | - def match_languages(self): |
227 | | - encoding = 'utf-8' |
228 | | - language_codes = MAPPING.values() |
229 | | - languages = MAPPING.keys() |
230 | | - d = {} |
231 | | - for key in self.valid_languages: |
232 | | - d.setdefault('lnc', key) |
233 | | - x = 0 |
234 | | - while key in language_codes: |
235 | | - pos = language_codes.index(key) |
236 | | - ln = languages[pos] |
237 | | - del languages[pos] |
238 | | - del language_codes[pos] |
239 | | - d[x] = ln.encode(encoding) |
240 | | - x += 1 |
241 | | - yield d |
242 | | - d = {} |
243 | | - |
244 | | - |
245 | | - def supported_languages(self, output='parser'): |
246 | | - ''' |
247 | | - Generate a list of tuples with currently supported languages. |
248 | | - ''' |
249 | | - assert output == 'django' or output == 'parser' |
250 | | - choices = language_map() |
251 | | - if output == 'parser': |
252 | | - choices = [d.values() for d in self.match_languages()] |
253 | | - choices = [item for sublist in choices for item in sublist] |
254 | | - #print choices |
255 | | - return choices |
256 | | - else: |
257 | | - choices = [(d.get('lnc'), '%s' % (' | '.join(d.values()))) for d in self.match_languages()] |
258 | | - return tuple(choices) |
259 | | - |
260 | | - def supported_projects(self): |
261 | | - choices = ([(key, value.title()) for key, value in self.projects.iteritems()]) |
262 | | - return tuple(choices) |
263 | | - |
264 | | - def get_english_language_name(self): |
265 | | - languages = language_map() |
266 | | - return languages[self.language_code] |
267 | | - |
268 | | - |
269 | | - def project_supports_language(self, long_project=None): |
270 | | - if long_project == None: |
271 | | - long_project = self.long_project |
272 | | - valid_languages_wikipedia = ['ace', 'af', 'als', 'an', 'roa-rup', 'ast', 'gn', 'av', 'ay', 'az', 'id', 'ms', 'bm', 'zh-min-nan', 'jv', 'map-bms', 'su', 'bug', 'bi', 'bar', 'bs', 'br', 'ca', 'cbk-zam', 'ch', 'cs', 'ny', 'sn', 'tum', 've', 'co', 'za', 'cy', 'da', 'pdc', 'de', 'nv', 'na', 'lad', 'et', 'ang', 'en', 'es', 'eo', 'ext', 'eu', 'to', 'fo', 'fr', 'frp', 'fy', 'ff', 'fur', 'ga', 'gv', 'sm', 'gd', 'gl', 'got', 'hak', 'haw', 'hsb', 'hr', 'io', 'ilo', 'ig', 'ia', 'ie', 'ik', 'xh', 'zu', 'is', 'it', 'mh', 'kl', 'pam', 'csb', 'kw', 'kg', 'ki', 'rw', 'ky', 'rn', 'sw', 'ht', 'ku', 'la', 'lv', 'lb', 'lt', 'lij', 'li', 'ln', 'jbo', 'lg', 'lmo', 'hu', 'mg', 'mt', 'mi', 'cdo', 'my', 'nah', 'fj', 'nl', 'cr', 'ne', 'nap', 'frr', 'pih', 'no', 'nn', 'nrm', 'oc', 'om', 'pag', 'pi', 'pap', 'pms', 'nds', 'pl', 'pt', 'ty', 'ksh', 'ro', 'rmy', 'rm', 'qu', 'se', 'sg', 'sc', 'sco', 'st', 'tn', 'sq', 'scn', 'simple', 'ceb', 'ss', 'sk', 'sl', 'so', 'sh', 'fi', 'sv', 'tl', 'tt', 'tet', 'vi', 'tpi', 'chy', 'tr', 'tk', 'tw', 'vec', 'vo', 'fiu-vro', 'wa', 'vls', 'war', 'wo', 'ts', 'yo', 'bat-smg', 'el', 'ab', 'ba', 'be', 'bg', 'bxr', 'cu', 'os', 'kk', 'kv', 'mk', 'mn', 'ce', 'ru', 'sr', 'tg', 'udm', 'uk', 'uz', 'xal', 'cv', 'hy', 'ka', 'he', 'yi', 'ar', 'fa', 'ha', 'ps', 'sd', 'ur', 'ug', 'arc', 'dv', 'as', 'bn', 'bpy', 'gu', 'bh', 'hi', 'ks', 'mr', 'kn', 'ne', 'new', 'sa', 'ml', 'or', 'pa', 'ta', 'te', 'bo', 'dz', 'si', 'km', 'lo', 'th', 'am', 'ti', 'iu', 'chr', 'ko', 'ja', 'zh', 'wuu', 'lzh', 'yue'] |
273 | | - valid_languages_wiktionary = ['af', 'als', 'an', 'roa-rup', 'ast', 'gn', 'ay', 'az', 'id', 'ms', 'zh-min-nan', 'jv', 'su', 'mt', 'bs', 'br', 'ca', 'cs', 'co', 'za', 'cy', 'da', 'de', 'na', 'et', 'ang', 'en', 'es', 'eo', 'eu', 'fo', 'fr', 'fy', 'gd', 'ga', 'gv', 'sm', 'gl', 'hr', 'io', 'ia', 'ie', 'ik', 'zu', 'is', 'it', 'kl', 'csb', 'ku', 'kw', 'rw', 'sw', 'la', 'lv', 'lb', 'lt', 'li', 'ln', 'jbo', 'hu', 'mg', 'mi', 'nah', 'fj', 'nl', 'no', 'nn', 'oc', 'om', 'uz', 'nds', 'pl', 'pt', 'ro', 'qu', 'sg', 'st', 'tn', 'scn', 'simple', 'sk', 'sl', 'sq', 'ss', 'so', 'sh', 'fi', 'sv', 'tl', 'tt', 'vi', 'tpi', 'tr', 'tk', 'vo', 'wa', 'wo', 'ts', 'el', 'tsd', 'be', 'bg', 'kk', 'ky', 'mk', 'mn', 'ru', 'sr', 'tg', 'uk', 'hy', 'ka', 'he', 'yi', 'ar', 'fa', 'ha', 'ps', 'sd', 'ug', 'ur', 'dv', 'bn', 'gu', 'hi', 'ks', 'ne', 'sa', 'mr', 'kn', 'ml', 'pa', 'ta', 'te', 'km', 'lo', 'my', 'si', 'th', 'am', 'ti', 'iu', 'chr', 'ko', 'ja', 'zh'] |
274 | | - valid_languages_wikiquote = ['af', 'als', 'id', 'bs', 'ca', 'cs', 'da', 'de', 'en', 'es', 'eo', 'eu', 'fr', 'is', 'it', 'ku', 'la', 'lb', 'lt', 'hu', 'nl', 'no', 'pl', 'pt', 'ro', 'sk', 'fi', 'sv', 'tr', 'el', 'bg', 'ru', 'sr', 'ka', 'he', 'ar', 'fa', 'gu', 'mr', 'ta', 'th', 'ko', 'ja', 'zh'] |
275 | | - valid_languages_wikinews = ['als', 'bs', 'ca', 'cs', 'de', 'en', 'es', 'fa', 'fr', 'it', 'hu', 'nl', 'no', 'nds', 'pl', 'pt', 'ro', 'fi', 'sv', 'tr', 'bg', 'ru', 'sr', 'uk', 'he', 'ar', 'sd', 'ta', 'th', 'ko', 'ja', 'zh'] |
276 | | - valid_languages_wikisource = ['als', 'id', 'bs', 'cs', 'cy', 'da', 'de', 'en', 'es', 'fr', 'gl', 'hr', 'is', 'it', 'la', 'lt', 'li', 'nl', 'pl', 'pt', 'ro', 'sk', 'fi', 'sv', 'vi', 'tr', 'el', 'ru', 'sr', 'he', 'yi', 'ar', 'fa', 'bn', 'ml', 'th', 'ko', 'ja', 'zh'] |
277 | | - valid_languages_wikibooks = ['af', 'als', 'ang', 'als', 'az', 'ms', 'su', 'bs', 'cs', 'co', 'cy', 'da', 'de', 'na', 'et', 'en', 'es', 'eo', 'eu', 'fr', 'fy', 'gl', 'hr', 'ia', 'ie', 'is', 'it', 'ku', 'la', 'lt', 'mg', 'nl', 'no', 'oc', 'uz', 'nds', 'pl', 'pt', 'ro', 'qu', 'sq', 'simple', 'sk', 'sl', 'fi', 'sv', 'vi', 'tl', 'tt', 'tr', 'tk', 'vo', 'el', 'bg', 'be', 'kk', 'ky', 'mk', 'ru', 'sr', 'tg', 'uk', 'cv', 'hy', 'ka', 'he', 'ar', 'fa', 'ps', 'ur', 'bn', 'hi', 'mr', 'sa', 'kn', 'ml', 'pa', 'ta', 'te', 'km', 'ne', 'th', 'ko', 'ja', 'zh'] |
278 | | - valid_languages_wikiversity = ['cs', 'de', 'en', 'es', 'fr', 'it', 'pt', 'fi', 'el', 'ru', 'ja'] |
279 | | - valid_languages_wikicommons = ['en'] |
280 | | - valid_languages_wikispecies = ['en'] |
281 | | - try: |
282 | | - languages = locals()['valid_languages_%s' % long_project] |
283 | | - return languages |
284 | | - except KeyError: |
285 | | - return [] |
286 | | - |
287 | | - |
288 | | - |
289 | | -def extract_language_code_from_wikiprojects(): |
290 | | - ''' |
291 | | - Copy and paste a string of all supported projects from |
292 | | - http://meta.wikimedia.org/wiki/Complete_list_of_Wikimedia_projects and use |
293 | | - this function to extract the language codes. This list can be used for the |
294 | | - Wiki class |
295 | | - ''' |
296 | | - |
297 | | - str = ''' |
298 | | - Čeština (cs) • Deutsch (de) • English (en) • Español (es) • Français (fr) • Italiano (it) • Português (pt) • Suomi (fi) • Ελληνικά (el) • Русский (ru) • 日本語 (ja) |
299 | | - ''' |
300 | | - |
301 | | - reg = re.compile('\([\w\-]*\)') |
302 | | - abbr = re.findall(reg, str) |
303 | | - abbr = [ab.replace('(', '').replace(')', '') for ab in abbr] |
304 | | - print abbr |
305 | | - print len(abbr) |
306 | | - |
307 | | - |
308 | | -#def supported_languages(settings): |
309 | | -# ''' |
310 | | -# Generate a list of tuples with currently supported languages. |
311 | | -# ''' |
312 | | -# choices = MAPPING.keys() |
313 | | -# choices = [c.encode(settings.encoding) for c in choices] |
314 | | -# return tuple(choices) |
315 | | - |
316 | | -def determine_default_language(): |
317 | | - ''' |
318 | | - Determines the default language to make an educated guess which |
319 | | - Wikipedia project is most likely of interest |
320 | | - ''' |
321 | | - language_code = locale.getdefaultlocale()[0] |
322 | | - language_code = language_code.split('_')[0] |
323 | | - return get_language(language_code) |
324 | | - |
325 | | - |
326 | | -def get_language(language_code): |
327 | | - languages = language_map() |
328 | | - return languages[language_code] |
329 | | - |
330 | | -def language_map(): |
331 | | - return text_utils.invert_dict(MAPPING) |
332 | | - |
333 | | - |
334 | | -MAPPING = odict.OrderedDict([ |
335 | | -(u'English', 'en'), |
336 | | -(u'German', 'de'), |
337 | | -(u'French', 'fr'), |
338 | | -(u'Italian', 'it'), |
339 | | -(u'Polish', 'pl'), |
340 | | -(u'Japanese', 'ja'), |
341 | | -(u'Spanish', 'es'), |
342 | | -(u'Dutch', 'nl'), |
343 | | -(u'Portuguese', 'pt'), |
344 | | -(u'Russian', 'ru'), |
345 | | -(u'Swedish', 'sv'), |
346 | | -(u'Chinese', 'zh'), |
347 | | -(u'Catalan', 'ca'), |
348 | | -(u'Norwegian', 'no'), |
349 | | -(u'Bokmål', 'no'), |
350 | | -(u'Finnish', 'fi'), |
351 | | -(u'Ukrainian', 'uk'), |
352 | | -(u'Hungarian', 'hu'), |
353 | | -(u'Czech', 'cs'), |
354 | | -(u'Romanian', 'ro'), |
355 | | -(u'Turkish', 'tr'), |
356 | | -(u'Korean', 'ko'), |
357 | | -(u'Vietnamese', 'vi'), |
358 | | -(u'Danish', 'da'), |
359 | | -(u'Arabic', 'ar'), |
360 | | -(u'Esperanto', 'eo'), |
361 | | -(u'Serbian', 'sr'), |
362 | | -(u'Indonesian', 'id'), |
363 | | -(u'Lithuanian', 'lt'), |
364 | | -(u'Volapük', 'vo'), |
365 | | -(u'Slovak', 'sk'), |
366 | | -(u'Hebrew', 'he'), |
367 | | -(u'Bulgarian', 'bg'), |
368 | | -(u'Persian', 'fa'), |
369 | | -(u'Slovenian', 'sl'), |
370 | | -(u'Waray-Waray', 'war'), |
371 | | -(u'Croatian', 'hr'), |
372 | | -(u'Estonian', 'et'), |
373 | | -(u'Malay', 'ms'), |
374 | | -(u'Newar', 'new'), |
375 | | -(u'Nepal Bhasa', 'new'), |
376 | | -(u'Simple English', 'simple'), |
377 | | -(u'Galician', 'gl'), |
378 | | -(u'Thai', 'th'), |
379 | | -(u'Aromanian', 'roa-rup'), |
380 | | -(u'Nynorsk', 'nn'), |
381 | | -(u'Basque', 'eu'), |
382 | | -(u'Hindi', 'hi'), |
383 | | -(u'Greek', 'el'), |
384 | | -(u'Haitian', 'ht'), |
385 | | -(u'Latin', 'la'), |
386 | | -(u'Telugu', 'te'), |
387 | | -(u'Georgian', 'ka'), |
388 | | -(u'Cebuano', 'ceb'), |
389 | | -(u'Macedonian', 'mk'), |
390 | | -(u'Azeri', 'az'), |
391 | | -(u'Tagalog', 'tl'), |
392 | | -(u'Breton', 'br'), |
393 | | -(u'Serbo-Croatian', 'sh'), |
394 | | -(u'Marathi', 'mr'), |
395 | | -(u'Luxembourgish', 'lb'), |
396 | | -(u'Javanese', 'jv'), |
397 | | -(u'Latvian', 'lv'), |
398 | | -(u'Bosnian', 'bs'), |
399 | | -(u'Icelandic', 'is'), |
400 | | -(u'Welsh', 'cy'), |
401 | | -(u'Belarusian', 'be-x-old'), |
402 | | -(u'Taraškievica', 'be-x-old'), |
403 | | -(u'Piedmontese', 'pms'), |
404 | | -(u'Albanian', 'sq'), |
405 | | -(u'Tamil', 'ta'), |
406 | | -(u'Bishnupriya Manipuri', 'bpy'), |
407 | | -(u'Belarusian', 'be'), |
408 | | -(u'Aragonese', 'an'), |
409 | | -(u'Occitan', 'oc'), |
410 | | -(u'Bengali', 'bn'), |
411 | | -(u'Swahili', 'sw'), |
412 | | -(u'Ido', 'io'), |
413 | | -(u'Ripuarian', 'ksh'), |
414 | | -(u'Lombard', 'lmo'), |
415 | | -(u'West Frisian', 'fy'), |
416 | | -(u'Gujarati', 'gu'), |
417 | | -(u'Low Saxon', 'nds'), |
418 | | -(u'Afrikaans', 'af'), |
419 | | -(u'Sicilian', 'scn'), |
420 | | -(u'Quechua', 'qu'), |
421 | | -(u'Kurdish', 'ku'), |
422 | | -(u'Urdu', 'ur'), |
423 | | -(u'Sundanese', 'su'), |
424 | | -(u'Malayalam', 'ml'), |
425 | | -(u'Cantonese', 'zh-yue'), |
426 | | -(u'Asturian', 'ast'), |
427 | | -(u'Neapolitan', 'nap'), |
428 | | -(u'Samogitian', 'bat-smg'), |
429 | | -(u'Walloon', 'wa'), |
430 | | -(u'Chuvash', 'cv'), |
431 | | -(u'Irish', 'ga'), |
432 | | -(u'Armenian', 'hy'), |
433 | | -(u'Yoruba', 'yo'), |
434 | | -(u'Kannada', 'kn'), |
435 | | -(u'Tajik', 'tg'), |
436 | | -(u'Tarantino', 'roa-tara'), |
437 | | -(u'Venetian', 'vec'), |
438 | | -(u'Western Panjabi', 'pnb'), |
439 | | -(u'Nepali', 'ne'), |
440 | | -(u'Scottish Gaelic', 'gd'), |
441 | | -(u'Yiddish', 'yi'), |
442 | | -(u'Min Nan', 'zh-min-nan'), |
443 | | -(u'Uzbek', 'uz'), |
444 | | -(u'Tatar', 'tt'), |
445 | | -(u'Kapampangan', 'pam'), |
446 | | -(u'Ossetian', 'os'), |
447 | | -(u'Sakha', 'sah'), |
448 | | -(u'Alemannic', 'als'), |
449 | | -(u'Maori', 'mi'), |
450 | | -(u'Egyptian Arabic', 'arz'), |
451 | | -(u'Kazakh', 'kk'), |
452 | | -(u'Nahuatl', 'nah'), |
453 | | -(u'Limburgian', 'li'), |
454 | | -(u'Upper Sorbian', 'hsb'), |
455 | | -(u'Gilaki', 'glk'), |
456 | | -(u'Corsican', 'co'), |
457 | | -(u'Gan', 'gan'), |
458 | | -(u'Amharic', 'am'), |
459 | | -(u'Mongolian', 'mn'), |
460 | | -(u'Interlingua', 'ia'), |
461 | | -(u'Central Bicolano', 'bcl'), |
462 | | -(u'Võro', 'fiu-vro'), |
463 | | -(u'Dutch Low Saxon', 'nds-nl'), |
464 | | -(u'Faroese', 'fo'), |
465 | | -(u'Turkmen', 'tk'), |
466 | | -(u'Scots', 'sco'), |
467 | | -(u'West Flemish', 'vls'), |
468 | | -(u'Sinhalese', 'si'), |
469 | | -(u'Sanskrit', 'sa'), |
470 | | -(u'Bavarian', 'bar'), |
471 | | -(u'Burmese', 'my'), |
472 | | -(u'Manx', 'gv'), |
473 | | -(u'Divehi', 'dv'), |
474 | | -(u'Norman', 'nrm'), |
475 | | -(u'Pangasinan', 'pag'), |
476 | | -(u'Romansh', 'rm'), |
477 | | -(u'Banyumasan', 'map-bms'), |
478 | | -(u'Zazaki', 'diq'), |
479 | | -(u'Sorani', 'ckb'), |
480 | | -(u'Northern Sami', 'se'), |
481 | | -(u'Mazandarani', 'mzn'), |
482 | | -(u'Wu', 'wuu'), |
483 | | -(u'Uyghur', 'ug'), |
484 | | -(u'Friulian', 'fur'), |
485 | | -(u'Ligurian', 'lij'), |
486 | | -(u'Maltese', 'mt'), |
487 | | -(u'Bihari', 'bh'), |
488 | | -(u'Novial', 'nov'), |
489 | | -(u'Malagasy', 'mg'), |
490 | | -(u'Kashubian', 'csb'), |
491 | | -(u'Ilokano', 'ilo'), |
492 | | -(u'Sardinian', 'sc'), |
493 | | -(u'Classical Chinese', 'zh-classical'), |
494 | | -(u'Khmer', 'km'), |
495 | | -(u'Ladino', 'lad'), |
496 | | -(u'Pali', 'pi'), |
497 | | -(u'Anglo-Saxon', 'ang'), |
498 | | -(u'Zamboanga Chavacano', 'cbk-zam'), |
499 | | -(u'Tibetan', 'bo'), |
500 | | -(u'Fiji Hindi', 'hif'), |
501 | | -(u'Franco-Provençal', 'frp'), |
502 | | -(u'Arpitan', 'frp'), |
503 | | -(u'Hakka', 'hak'), |
504 | | -(u'Cornish', 'kw'), |
505 | | -(u'Punjabi', 'pa'), |
506 | | -(u'Pashto', 'ps'), |
507 | | -(u'Kalmyk', 'xal'), |
508 | | -(u'Silesian', 'szl'), |
509 | | -(u'Pennsylvania German', 'pdc'), |
510 | | -(u'Hawaiian', 'haw'), |
511 | | -(u'Saterland Frisian', 'stq'), |
512 | | -(u'Interlingue', 'ie'), |
513 | | -(u'Navajo', 'nv'), |
514 | | -(u'Fijian', 'fj'), |
515 | | -(u'Crimean Tatar', 'crh'), |
516 | | -(u'Komi', 'kv'), |
517 | | -(u'Tongan', 'to'), |
518 | | -(u'Acehnese', 'ace'), |
519 | | -(u'Somali', 'so'), |
520 | | -(u'Erzya', 'myv'), |
521 | | -(u'Guarani', 'gn'), |
522 | | -(u'Karachay-Balkar', 'krc'), |
523 | | -(u'Extremaduran', 'ext'), |
524 | | -(u'Lingala', 'ln'), |
525 | | -(u'Kirghiz', 'ky'), |
526 | | -(u'Meadow Mari', 'mhr'), |
527 | | -(u'Assyrian Neo-Aramaic', 'arc'), |
528 | | -(u'Emilian-Romagnol', 'eml'), |
529 | | -(u'Lojban', 'jbo'), |
530 | | -(u'Picard', 'pcd'), |
531 | | -(u'Aymara', 'ay'), |
532 | | -(u'Wolof', 'wo'), |
533 | | -(u'Tumbuka', 'tum'), |
534 | | -(u'Kabyle', 'kab'), |
535 | | -(u'Bashkir', 'ba'), |
536 | | -(u'North Frisian', 'frr'), |
537 | | -(u'Tahitian', 'ty'), |
538 | | -(u'Tok Pisin', 'tpi'), |
539 | | -(u'Papiamentu', 'pap'), |
540 | | -(u'Zealandic', 'zea'), |
541 | | -(u'Sranan', 'srn'), |
542 | | -(u'Greenlandic', 'kl'), |
543 | | -(u'Udmurt', 'udm'), |
544 | | -(u'Chechen', 'ce'), |
545 | | -(u'Igbo', 'ig'), |
546 | | -(u'Komi-Permyak', 'koi'), |
547 | | -(u'Oriya', 'or'), |
548 | | -(u'Lower Sorbian', 'dsb'), |
549 | | -(u'Kongo', 'kg'), |
550 | | -(u'Lao', 'lo'), |
551 | | -(u'Abkhazian', 'ab'), |
552 | | -(u'Moksha', 'mdf'), |
553 | | -(u'Romani', 'rmy'), |
554 | | -(u'Hill Mari', 'mrj'), |
555 | | -(u'Banjar', 'bjn'), |
556 | | -(u'Old Church Slavonic', 'cu'), |
557 | | -(u'Mirandese', 'mwl'), |
558 | | -(u'Karakalpak', 'kaa'), |
559 | | -(u'Samoan', 'sm'), |
560 | | -(u'Moldovan', 'mo'), |
561 | | -(u'Tetum', 'tet'), |
562 | | -(u'Avar', 'av'), |
563 | | -(u'Kashmiri', 'ks'), |
564 | | -(u'Gothic', 'got'), |
565 | | -(u'Sindhi', 'sd'), |
566 | | -(u'Bambara', 'bm'), |
567 | | -(u'Nauruan', 'na'), |
568 | | -(u'Norfolk', 'pih'), |
569 | | -(u'Pontic', 'pnt'), |
570 | | -(u'Inuktitut', 'iu'), |
571 | | -(u'Inupiak', 'ik'), |
572 | | -(u'Bislama', 'bi'), |
573 | | -(u'Cherokee', 'chr'), |
574 | | -(u'Assamese', 'as'), |
575 | | -(u'Min Dong', 'cdo'), |
576 | | -(u'Ewe', 'ee'), |
577 | | -(u'Swati', 'ss'), |
578 | | -(u'Oromo', 'om'), |
579 | | -(u'Zhuang', 'za'), |
580 | | -(u'Zulu', 'zu'), |
581 | | -(u'Tigrinya', 'ti'), |
582 | | -(u'Venda', 've'), |
583 | | -(u'Tsonga', 'ts'), |
584 | | -(u'Hausa', 'ha'), |
585 | | -(u'Dzongkha', 'dz'), |
586 | | -(u'Sango', 'sg'), |
587 | | -(u'Chamorro', 'ch'), |
588 | | -(u'Cree', 'cr'), |
589 | | -(u'Xhosa', 'xh'), |
590 | | -(u'Akan', 'ak'), |
591 | | -(u'Sesotho', 'st'), |
592 | | -(u'Kinyarwanda', 'rw'), |
593 | | -(u'Tswana', 'tn'), |
594 | | -(u'Kikuyu', 'ki'), |
595 | | -(u'Buryat', 'bxr'), |
596 | | -(u'Buginese', 'bug'), |
597 | | -(u'Chichewa', 'ny'), |
598 | | -(u'Lak', 'lbe'), |
599 | | -(u'Twi', 'tw'), |
600 | | -(u'Shona', 'sn'), |
601 | | -(u'Kirundi', 'rn'), |
602 | | -(u'Fula', 'ff'), |
603 | | -(u'Cheyenne', 'chy'), |
604 | | -(u'Luganda', 'lg'), |
605 | | -(u'Ndonga', 'ng'), |
606 | | -(u'Sichuan Yi', 'ii'), |
607 | | -(u'Choctaw', 'cho'), |
608 | | -(u'Marshallese', 'mh'), |
609 | | -(u'Afar', 'aa'), |
610 | | -(u'Kuanyama', 'kj'), |
611 | | -(u'Hiri Motu', 'ho'), |
612 | | -(u'Muscogee', 'mus'), |
613 | | -(u'Kanuri', 'kr'), |
614 | | -(u'Herero', 'hz'), |
615 | | -(u'English', 'en'), |
616 | | -(u'Deutsch', 'de'), |
617 | | -(u'Français', 'fr'), |
618 | | -(u'Italiano', 'it'), |
619 | | -(u'Polski', 'pl'), |
620 | | -(u'日本語', 'ja'), |
621 | | -(u'Español', 'es'), |
622 | | -(u'Nederlands', 'nl'), |
623 | | -(u'Português', 'pt'), |
624 | | -(u'Русский', 'ru'), |
625 | | -(u'Svenska', 'sv'), |
626 | | -(u'中文', 'zh'), |
627 | | -(u'Català', 'ca'), |
628 | | -(u'Norsk', 'no'), |
629 | | -(u'Bokmål', 'no'), |
630 | | -(u'Suomi', 'fi'), |
631 | | -(u'Українська', 'uk'), |
632 | | -(u'Magyar', 'hu'), |
633 | | -(u'Čeština', 'cs'), |
634 | | -(u'Română', 'ro'), |
635 | | -(u'Türkçe', 'tr'), |
636 | | -(u'한국어', 'ko'), |
637 | | -(u'Tiếng Việt', 'vi'), |
638 | | -(u'Dansk', 'da'), |
639 | | -(u'العربية', 'ar'), |
640 | | -(u'Esperanto', 'eo'), |
641 | | -(u'Српски', 'sr'), |
642 | | -(u'Srpski', 'sr'), |
643 | | -(u'Bahasa Indonesia', 'id'), |
644 | | -(u'Lietuvių', 'lt'), |
645 | | -(u'Volapük', 'vo'), |
646 | | -(u'Slovenčina', 'sk'), |
647 | | -(u'עברית', 'he'), |
648 | | -(u'Български', 'bg'), |
649 | | -(u'فارسی', 'fa'), |
650 | | -(u'Slovenščina', 'sl'), |
651 | | -(u'Winaray', 'war'), |
652 | | -(u'Hrvatski', 'hr'), |
653 | | -(u'Eesti', 'et'), |
654 | | -(u'Bahasa Melayu', 'ms'), |
655 | | -(u'नेपाल भाषा', 'new'), |
656 | | -(u'Simple English', 'simple'), |
657 | | -(u'Galego', 'gl'), |
658 | | -(u'ไทย', 'th'), |
659 | | -(u'Armãneashce', 'roa-rup'), |
660 | | -(u'Nynorsk', 'nn'), |
661 | | -(u'Euskara', 'eu'), |
662 | | -(u'हिन्दी', 'hi'), |
663 | | -(u'Ελληνικά', 'el'), |
664 | | -(u'Krèyol ayisyen', 'ht'), |
665 | | -(u'Latina', 'la'), |
666 | | -(u'తెలుగు', 'te'), |
667 | | -(u'ქართული', 'ka'), |
668 | | -(u'Sinugboanong Binisaya', 'ceb'), |
669 | | -(u'Македонски', 'mk'), |
670 | | -(u'Azərbaycan', 'az'), |
671 | | -(u'Tagalog', 'tl'), |
672 | | -(u'Brezhoneg', 'br'), |
673 | | -(u'Srpskohrvatski', 'sh'), |
674 | | -(u'Српскохрватски', 'sh'), |
675 | | -(u'मराठी', 'mr'), |
676 | | -(u'Lëtzebuergesch', 'lb'), |
677 | | -(u'Basa Jawa', 'jv'), |
678 | | -(u'Latviešu', 'lv'), |
679 | | -(u'Bosanski', 'bs'), |
680 | | -(u'Íslenska', 'is'), |
681 | | -(u'Cymraeg', 'cy'), |
682 | | -(u'Беларуская', 'be-x-old'), |
683 | | -(u'тарашкевіца', 'be-x-old'), |
684 | | -(u'Piemontèis', 'pms'), |
685 | | -(u'Shqip', 'sq'), |
686 | | -(u'தமிழ்', 'ta'), |
687 | | -(u'ইমার ঠার', 'bpy'), |
688 | | -(u'বিষ্ণুপ্রিয়া মণিপুরী', 'bpy'), |
689 | | -(u'Беларуская', 'be'), |
690 | | -(u'Aragonés', 'an'), |
691 | | -(u'Occitan', 'oc'), |
692 | | -(u'বাংলা', 'bn'), |
693 | | -(u'Kiswahili', 'sw'), |
694 | | -(u'Ido', 'io'), |
695 | | -(u'Ripoarisch', 'ksh'), |
696 | | -(u'Lumbaart', 'lmo'), |
697 | | -(u'Frysk', 'fy'), |
698 | | -(u'ગુજરાતી', 'gu'), |
699 | | -(u'Plattdüütsch', 'nds'), |
700 | | -(u'Afrikaans', 'af'), |
701 | | -(u'Sicilianu', 'scn'), |
702 | | -(u'Runa Simi', 'qu'), |
703 | | -(u'Kurdî', 'ku'), |
704 | | -(u'كوردی', 'ku'), |
705 | | -(u'اردو', 'ur'), |
706 | | -(u'Basa Sunda', 'su'), |
707 | | -(u'മലയാളം', 'ml'), |
708 | | -(u'粵語', 'zh-yue'), |
709 | | -(u'Asturianu', 'ast'), |
710 | | -(u'Nnapulitano', 'nap'), |
711 | | -(u'Žemaitėška', 'bat-smg'), |
712 | | -(u'Walon', 'wa'), |
713 | | -(u'Чăваш', 'cv'), |
714 | | -(u'Gaeilge', 'ga'), |
715 | | -(u'Հայերեն', 'hy'), |
716 | | -(u'Yorùbá', 'yo'), |
717 | | -(u'ಕನ್ನಡ', 'kn'), |
718 | | -(u'Тоҷикӣ', 'tg'), |
719 | | -(u'Tarandíne', 'roa-tara'), |
720 | | -(u'Vèneto', 'vec'), |
721 | | -(u'شاہ مکھی پنجابی', 'pnb'), |
722 | | -(u'Shāhmukhī Pañjābī', 'pnb'), |
723 | | -(u'नेपाली', 'ne'), |
724 | | -(u'Gàidhlig', 'gd'), |
725 | | -(u'ייִדיש', 'yi'), |
726 | | -(u'Bân-lâm-gú', 'zh-min-nan'), |
727 | | -(u'O‘zbek', 'uz'), |
728 | | -(u'Tatarça', 'tt'), |
729 | | -(u'Татарча', 'tt'), |
730 | | -(u'Kapampangan', 'pam'), |
731 | | -(u'Иронау', 'os'), |
732 | | -(u'Саха тыла', 'sah'), |
733 | | -(u'Saxa Tyla', 'sah'), |
734 | | -(u'Alemannisch', 'als'), |
735 | | -(u'Māori', 'mi'), |
736 | | -(u'مصرى', 'arz'), |
737 | | -(u'Maṣrī', 'arz'), |
738 | | -(u'Қазақша', 'kk'), |
739 | | -(u'Nāhuatl', 'nah'), |
740 | | -(u'Limburgs', 'li'), |
741 | | -(u'Hornjoserbsce', 'hsb'), |
742 | | -(u'گیلکی', 'glk'), |
743 | | -(u'Corsu', 'co'), |
744 | | -(u'贛語', 'gan'), |
745 | | -(u'አማርኛ', 'am'), |
746 | | -(u'Монгол', 'mn'), |
747 | | -(u'Interlingua', 'ia'), |
748 | | -(u'Bikol', 'bcl'), |
749 | | -(u'Võro', 'fiu-vro'), |
750 | | -(u'Nedersaksisch', 'nds-nl'), |
751 | | -(u'Føroyskt', 'fo'), |
752 | | -(u'تركمن ', 'tk'), |
753 | | -(u'Туркмен', 'tk'), |
754 | | -(u'Scots', 'sco'), |
755 | | -(u'West-Vlams', 'vls'), |
756 | | -(u'සිංහල', 'si'), |
757 | | -(u'संस्कृतम्', 'sa'), |
758 | | -(u'Boarisch', 'bar'), |
759 | | -(u'မ္ရန္မာစာ', 'my'), #Needs fix |
760 | | -(u'Gaelg', 'gv'), |
761 | | -(u'ދިވެހިބަސް', 'dv'), |
762 | | -(u'Nouormand', 'nrm'), |
763 | | -(u'Normaund', 'nrm'), |
764 | | -(u'Pangasinan', 'pag'), |
765 | | -(u'Rumantsch', 'rm'), |
766 | | -(u'Basa Banyumasan', 'map-bms'), |
767 | | -(u'Zazaki', 'diq'), |
768 | | -(u'Soranî', 'ckb'), |
769 | | -(u'کوردی', 'ckb'), |
770 | | -(u'Sámegiella', 'se'), |
771 | | -(u'مَزِروني', 'mzn'), |
772 | | -(u'吴语', 'wuu'), |
773 | | -(u'Oyghurque', 'ug'), |
774 | | -(u'Furlan', 'fur'), |
775 | | -(u'Líguru', 'lij'), |
776 | | -(u'Malti', 'mt'), |
777 | | -(u'भोजपुरी', 'bh'), |
778 | | -(u'Novial', 'nov'), |
779 | | -(u'Malagasy', 'mg'), |
780 | | -(u'Kaszëbsczi', 'csb'), |
781 | | -(u'Ilokano', 'ilo'), |
782 | | -(u'Sardu', 'sc'), |
783 | | -(u'古文', 'zh-classical'), |
784 | | -(u'文言文', 'zh-classical'), |
785 | | -(u'ភាសាខ្មែរ', 'km'), |
786 | | -(u'Dzhudezmo', 'lad'), |
787 | | -(u'पाऴि', 'pi'), |
788 | | -(u'Englisc', 'ang'), |
789 | | -(u'Chavacano de Zamboanga', 'cbk-zam'), |
790 | | -(u'བོད་སྐད', 'bo'), |
791 | | -(u'Fiji Hindi', 'hif'), |
792 | | -(u'Arpitan', 'frp'), |
793 | | -(u'Hak-kâ-fa', 'hak'), |
794 | | -(u'客家話', 'hak'), |
795 | | -(u'Kernewek', 'kw'), |
796 | | -(u'Karnuack', 'kw'), |
797 | | -(u'ਪੰਜਾਬੀ', 'pa'), |
798 | | -(u'پښتو', 'ps'), |
799 | | -(u'Хальмг', 'xal'), |
800 | | -(u'Ślůnski', 'szl'), |
801 | | -(u'Deitsch', 'pdc'), |
802 | | -(u'Hawai`i', 'haw'), |
803 | | -(u'Seeltersk', 'stq'), |
804 | | -(u'Interlingue', 'ie'), |
805 | | -(u'Diné bizaad', 'nv'), |
806 | | -(u'Na Vosa Vakaviti', 'fj'), |
807 | | -(u'Qırımtatarca', 'crh'), |
808 | | -(u'Коми', 'kv'), |
809 | | -(u'faka Tonga', 'to'), |
810 | | -(u'Bahsa Acèh', 'ace'), |
811 | | -(u'Soomaaliga', 'so'), |
812 | | -(u'Эрзянь', 'myv'), |
813 | | -(u'Erzjanj Kelj', 'myv'), |
814 | | -(u"Avañe'ẽ", 'gn'), |
815 | | -(u'Къарачай-Малкъар', 'krc'), |
816 | | -(u'Qarachay-Malqar', 'krc'), |
817 | | -(u'Estremeñu', 'ext'), |
818 | | -(u'Lingala', 'ln'), |
819 | | -(u'Кыргызча', 'ky'), |
820 | | -(u'Олык Марий', 'mhr'), |
821 | | -(u'Olyk Marij', 'mhr'), |
822 | | -(u'ܐܪܡܝܐ', 'arc'), |
823 | | -(u'Emiliàn e rumagnòl', 'eml'), |
824 | | -(u'Lojban', 'jbo'), |
825 | | -(u'Picard', 'pcd'), |
826 | | -(u'Aymar', 'ay'), |
827 | | -(u'Wolof', 'wo'), |
828 | | -(u'chiTumbuka', 'tum'), |
829 | | -(u'Taqbaylit', 'kab'), |
830 | | -(u'Башҡорт', 'ba'), |
831 | | -(u'Frasch', 'frr'), |
832 | | -(u'Reo Mā`ohi', 'ty'), |
833 | | -(u'Tok Pisin', 'tpi'), |
834 | | -(u'Papiamentu', 'pap'), |
835 | | -(u'Zeêuws', 'zea'), |
836 | | -(u'Sranantongo', 'srn'), |
837 | | -(u'Kalaallisut', 'kl'), |
838 | | -(u'Удмурт кыл', 'udm'), |
839 | | -(u'Нохчийн', 'ce'), |
840 | | -(u'Igbo', 'ig'), |
841 | | -(u'Перем Коми', 'koi'), |
842 | | -(u'Perem Komi', 'koi'), |
843 | | -(u'ଓଡ଼ିଆ', 'or'), |
844 | | -(u'Dolnoserbski', 'dsb'), |
845 | | -(u'KiKongo', 'kg'), |
846 | | -(u'ລາວ', 'lo'), |
847 | | -(u'Аҧсуа', 'ab'), |
848 | | -(u'Мокшень', 'mdf'), |
849 | | -(u'Mokshanj Kälj', 'mdf'), |
850 | | -(u'romani - रोमानी', 'rmy'), |
851 | | -(u'Кырык Мары', 'mrj'), |
852 | | -(u'Kyryk Mary', 'mrj'), |
853 | | -(u'Bahasa Banjar', 'bjn'), |
854 | | -(u'Словѣньскъ', 'cu'), |
855 | | -(u'Páigina Percipal', 'mwl'), |
856 | | -(u'Qaraqalpaqsha', 'kaa'), |
857 | | -(u'Gagana Samoa', 'sm'), |
858 | | -(u'Молдовеняскэ', 'mo'), |
859 | | -(u'Tetun', 'tet'), |
860 | | -(u'Авар', 'av'), |
861 | | -(u'कश्मीरी', 'ks'), |
862 | | -(u'كشميري', 'ks'), |
863 | | -(u'𐌲𐌿𐍄𐌹𐍃𐌺', 'got'), #Needs fix |
864 | | -(u'سنڌي، سندھی ، सिन्ध', 'sd'), |
865 | | -(u'Bamanankan', 'bm'), |
866 | | -(u'dorerin Naoero', 'na'), |
867 | | -(u'Norfuk', 'pih'), |
868 | | -(u'Ποντιακά', 'pnt'), |
869 | | -(u'ᐃᓄᒃᑎᑐᑦ', 'iu'), |
870 | | -(u'Iñupiak', 'ik'), |
871 | | -(u'Bislama', 'bi'), |
872 | | -(u'ᏣᎳᎩ', 'chr'), |
873 | | -(u'অসমীয়া', 'as'), |
874 | | -(u'Mìng-dĕ̤ng-ngṳ̄', 'cdo'), |
875 | | -(u'Eʋegbe', 'ee'), |
876 | | -(u'SiSwati', 'ss'), |
877 | | -(u'Oromoo', 'om'), |
878 | | -(u'Cuengh', 'za'), |
879 | | -(u'isiZulu', 'zu'), |
880 | | -(u'ትግርኛ', 'ti'), |
881 | | -(u'Tshivenda', 've'), |
882 | | -(u'Xitsonga', 'ts'), |
883 | | -(u'هَوُسَ', 'ha'), |
884 | | -(u'ཇོང་ཁ', 'dz'), |
885 | | -(u'Sängö', 'sg'), |
886 | | -(u'Chamoru', 'ch'), |
887 | | -(u'Nehiyaw', 'cr'), |
888 | | -(u'isiXhosa', 'xh'), |
889 | | -(u'Akana', 'ak'), |
890 | | -(u'Sesotho', 'st'), |
891 | | -(u'Ikinyarwanda', 'rw'), |
892 | | -(u'Setswana', 'tn'), |
893 | | -(u'Gĩkũyũ', 'ki'), |
894 | | -(u'Буряад', 'bxr'), |
895 | | -(u'Basa Ugi', 'bug'), |
896 | | -(u'Chi-Chewa', 'ny'), |
897 | | -(u'Лакку', 'lbe'), |
898 | | -(u'Twi', 'tw'), |
899 | | -(u'chiShona', 'sn'), |
900 | | -(u'Kirundi', 'rn'), |
901 | | -(u'Fulfulde', 'ff'), |
902 | | -(u'Tsetsêhestâhese', 'chy'), |
903 | | -(u'Luganda', 'lg'), |
904 | | -(u'Oshiwambo', 'ng'), |
905 | | -(u'ꆇꉙ', 'ii'), |
906 | | -(u'Choctaw', 'cho'), |
907 | | -(u'Ebon', 'mh'), |
908 | | -(u'Afar', 'aa'), |
909 | | -(u'Kuanyama', 'kj'), |
910 | | -(u'Hiri Motu', 'ho'), |
911 | | -(u'Muskogee', 'mus'), |
912 | | -(u'Kanuri', 'kr'), |
913 | | -(u'Otsiherero', 'hz'), |
914 | | -]) |
915 | | - |
916 | | - |
917 | | -#wiki = Wiki('utf-8') |
918 | | -#wiki.match_languages() |