diff --git a/Changelog.yaml b/Changelog.yaml index 04cea3af3d..faf6926727 100644 --- a/Changelog.yaml +++ b/Changelog.yaml @@ -5,7 +5,7 @@ # Also, each release can have new and improved recipes. # - version: ?.?.? -# date: 2011-??-?? +# date: 2012-??-?? # # new features: # - title: @@ -19,8 +19,68 @@ # new recipes: # - title: +- version: 0.8.36 + date: 2012-01-20 + + new features: + - title: "Decrease startup time for large libraries with at least one composite custom column by reading format info on demand" + + - title: "When automatically deleting news older than x days, from the calibre library, only delete the book if it both has the tag News and the author calibre. This prevents accidental deletion of books tagged with News by the user." + + - title: "Driver for Infibeam Pi 2" + + - title: "Add a Tag Editor for tags like custom columns to the edit metadata dialog" + + bug fixes: + - title: "E-book viewer: Fix regression in 0.8.35 that caused viewer to raise an error on books that did not define a language" + + - title: "Content server: Fix grouping for categories based on custom columns." + tickets: [919011] + + - title: "Edit metadata dialog: When setting the series from a format or via metadata download, ensure that the series index is not automatically changed, when closing the dialog." + tickets: [918751] + + - title: "When reading metadata from Topaz (azw1) files, handle non ascii metadata correctly." + tickets: [917419] + + - title: "CHM Input: Do not choke on CHM files with non ascii internal filenames on windows." + tickets: [917696] + + - title: "Fix reading metadata from CHM files with non-ascii titles" + + - title: "Fix HTML 5 parser choking on comments" + + - title: "If calibre is started from a directory that does not exist, automatically use the home directory as the working directory, instead of crashing" + + - title: "Fix iriver story HD Wi-Fi device and external SD card swapped" + tickets: [916364] + + - title: "Content server: Fix ugly URLs for specific format download in the book details and permalink panels" + + - title: "When adding FB2 files do not set the date field from the metadata in the file" + + improved recipes: + - OReilly Premuim + - Variety + - Blic + - New Journal of Physics + - Der Tagesspiegel + + new recipes: + - title: Tweakers.net + author: Roedi06 + + - title: Village Voice + author: Barty + + - title: Edge.org Conversations + author: levien + + - title: Novi list - printed edition + author: Darko Miletic + - version: 0.8.35 - date: 2011-01-13 + date: 2012-01-13 new features: - title: "Metadata plugboards: Allow creation of plugboards for email delivery." diff --git a/recipes/al_masry_al_youm.recipe b/recipes/al_masry_al_youm.recipe new file mode 100644 index 0000000000..6ee085e412 --- /dev/null +++ b/recipes/al_masry_al_youm.recipe @@ -0,0 +1,50 @@ +__license__ = 'GPL v3' +__copyright__ = '2011, Pat Stapleton ' +''' +abc.net.au/news +''' +import re +from calibre.web.feeds.recipes import BasicNewsRecipe + +class TheDailyNewsEG(BasicNewsRecipe): + title = u'al-masry al-youm' + __author__ = 'Omm Mishmishah' + description = 'Independent News from Egypt' + masthead_url = 'http://www.almasryalyoum.com/sites/default/files/img/english_logo.png' + cover_url = 'http://www.almasryalyoum.com/sites/default/files/img/english_logo.png' + + auto_cleanup = True + oldest_article = 7 + max_articles_per_feed = 100 + no_stylesheets = False + #delay = 1 + use_embedded_content = False + encoding = 'utf8' + publisher = 'Independent News Egypt' + category = 'News, Egypt, World' + language = 'en_EG' + publication_type = 'newsportal' +# preprocess_regexps = [(re.compile(r'', re.DOTALL), lambda m: '')] +#Remove annoying map links (inline-caption class is also used for some image captions! hence regex to match maps.google) + preprocess_regexps = [(re.compile(r'', '', raw) - with TemporaryFile(suffix='.htm') as fname: - with open(fname, 'wb') as f: - f.write(raw) - br.open_local_file(fname) + if self.username and self.password: + br.set_handle_refresh(False) + url = ('https://r.espn.go.com/members/v3_1/login') + raw = br.open(url).read() + raw = re.sub(r'(?s)
.*?id="regsigninbtn".*?
', '', raw) + with TemporaryFile(suffix='.htm') as fname: + with open(fname, 'wb') as f: + f.write(raw) + br.open_local_file(fname) - br.form = br.forms().next() - br.form.find_control(name='username', type='text').value = self.username - br.form['password'] = self.password - br.submit().read() - br.open('http://espn.go.com').read() - br.set_handle_refresh(True) + br.form = br.forms().next() + br.form.find_control(name='username', type='text').value = self.username + br.form['password'] = self.password + br.submit().read() + br.open('http://espn.go.com').read() + br.set_handle_refresh(True) return br def get_article_url(self, article): return article.get('guid', None) def print_version(self, url): - if 'eticket' in url: return url.partition('&')[0].replace('story?', 'print?') match = re.search(r'story\?(id=\d+)', url) diff --git a/recipes/klip_me.recipe b/recipes/klip_me.recipe new file mode 100644 index 0000000000..71918dc78b --- /dev/null +++ b/recipes/klip_me.recipe @@ -0,0 +1,72 @@ +from calibre.web.feeds.news import BasicNewsRecipe + +class AdvancedUserRecipe1299694372(BasicNewsRecipe): + title = u'Klipme' + __author__ = 'Ken Sun' + publisher = 'Klip.me' + category = 'info, custom, Klip.me' + oldest_article = 365 + max_articles_per_feed = 100 + no_stylesheets = True + remove_javascript = True + remove_tags = [ + dict(name='div', attrs={'id':'text_controls_toggle'}) + ,dict(name='script') + ,dict(name='div', attrs={'id':'text_controls'}) + ,dict(name='div', attrs={'id':'editing_controls'}) + ,dict(name='div', attrs={'class':'bar bottom'}) + ] + use_embedded_content = False + needs_subscription = True + INDEX = u'http://www.klip.me' + LOGIN = INDEX + u'/fav/signin?callback=/fav' + + + feeds = [ + (u'Klip.me unread', u'http://www.klip.me/fav'), + (u'Klip.me started', u'http://www.klip.me/fav?s=starred') + ] + + + def get_browser(self): + br = BasicNewsRecipe.get_browser() + if self.username is not None: + br.open(self.LOGIN) + br.select_form(nr=0) + br['Email'] = self.username + if self.password is not None: + br['Passwd'] = self.password + br.submit() + return br + + def parse_index(self): + totalfeeds = [] + lfeeds = self.get_feeds() + for feedobj in lfeeds: + feedtitle, feedurl = feedobj + self.report_progress(0, 'Fetching feed'+' %s...'%(feedtitle if feedtitle else feedurl)) + articles = [] + soup = self.index_to_soup(feedurl) + for item in soup.findAll('table',attrs={'class':['item','item new']}): + atag = item.a + if atag and atag.has_key('href'): + url = atag['href'] + articles.append({ + 'url' :url + }) + totalfeeds.append((feedtitle, articles)) + return totalfeeds + + def print_version(self, url): + return 'http://www.klip.me' + url + + def populate_article_metadata(self, article, soup, first): + article.title = soup.find('title').contents[0].strip() + + def postprocess_html(self, soup, first_fetch): + for link_tag in soup.findAll(attrs={"id" : "story"}): + link_tag.insert(0,'

'+soup.find('title').contents[0].strip()+'

') + print link_tag + + return soup + diff --git a/recipes/new_scientist.recipe b/recipes/new_scientist.recipe index 434c41f525..1bfe27685f 100644 --- a/recipes/new_scientist.recipe +++ b/recipes/new_scientist.recipe @@ -1,16 +1,35 @@ -__license__ = 'GPL v3' -__copyright__ = '2008-2010, AprilHare, Darko Miletic ' +## +## Title: Microwave Journal RSS recipe +## Contact: AprilHare, Darko Miletic +## +## License: GNU General Public License v3 - http://www.gnu.org/copyleft/gpl.html +## Copyright: 2008-2010, AprilHare, Darko Miletic +## +## Written: 2008 +## Last Edited: Jan 2012 +## + +''' +01-19-2012: Added GrayScale Image conversion and Duplicant article removals +''' + +__license__ = 'GNU General Public License v3 - http://www.gnu.org/copyleft/gpl.html' +__copyright__ = '2008-2012, AprilHare, Darko Miletic ' +__version__ = 'v0.5.0' +__date__ = '2012-01-19' +__author__ = 'Darko Miletic' + ''' newscientist.com ''' import re import urllib +from calibre.utils.magick import Image from calibre.web.feeds.news import BasicNewsRecipe class NewScientist(BasicNewsRecipe): title = 'New Scientist - Online News w. subscription' - __author__ = 'Darko Miletic' description = 'Science news and science articles from New Scientist.' language = 'en' publisher = 'Reed Business Information Ltd.' @@ -39,10 +58,19 @@ class NewScientist(BasicNewsRecipe): keep_only_tags = [dict(name='div', attrs={'id':['pgtop','maincol','blgmaincol','nsblgposts','hldgalcols']})] + # Whether to omit duplicates of articles (typically arsing when articles are indexed in + # more than one section). If True, only the first occurance will be downloaded. + filterDuplicates = True + + # Whether to convert images to grayscale for eInk readers. + Convert_Grayscale = False + + url_list = [] # This list is used to check if an article had already been included. + def get_browser(self): br = BasicNewsRecipe.get_browser() br.open('http://www.newscientist.com/') - if self.username is not None and self.password is not None: + if self.username is not None and self.password is not None: br.open('https://www.newscientist.com/user/login') data = urllib.urlencode({ 'source':'form' ,'redirectURL':'' @@ -80,6 +108,10 @@ class NewScientist(BasicNewsRecipe): return article.get('guid', None) def print_version(self, url): + if self.filterDuplicates: + if url in self.url_list: + return + self.url_list.append(url) return url + '?full=true&print=true' def preprocess_html(self, soup): @@ -91,7 +123,7 @@ class NewScientist(BasicNewsRecipe): item.name='p' for item in soup.findAll(['xref','figref']): tstr = item.string - item.replaceWith(tstr) + item.replaceWith(tstr) for tg in soup.findAll('a'): if tg.string == 'Home': tg.parent.extract() @@ -101,3 +133,16 @@ class NewScientist(BasicNewsRecipe): tg.replaceWith(tstr) return soup + # Converts images to Gray Scale + def postprocess_html(self, soup, first): + if self.Convert_Grayscale: + #process all the images + for tag in soup.findAll(lambda tag: tag.name.lower()=='img' and tag.has_key('src')): + iurl = tag['src'] + img = Image() + img.open(iurl) + if img < 0: + raise RuntimeError('Out of memory') + img.type = "GrayscaleType" + img.save(iurl) + return soup diff --git a/recipes/oreilly_premium.recipe b/recipes/oreilly_premium.recipe index c5a615900c..94d24c1e8e 100644 --- a/recipes/oreilly_premium.recipe +++ b/recipes/oreilly_premium.recipe @@ -1,8 +1,15 @@ +# Talking Points is not grabbing everything. +# The look is right, but only the last one added? import re import time from calibre.web.feeds.recipes import BasicNewsRecipe # Allows the Python soup converter, which makes parsing easier. from calibre.ebooks.BeautifulSoup import BeautifulSoup +# strip ads and graphics +# Current Column lacks a title. +# Talking Points Memo - shorten title - Remove year and Bill's name +# The News letter archive https://www.billoreilly.com/newsletterarchive is covered by other entries. +# Newsletters: Talking Points Memos covered by cat12 class OReillyPremium(BasicNewsRecipe): title = u'OReilly Premium' @@ -19,7 +26,17 @@ class OReillyPremium(BasicNewsRecipe): # Don't go down recursions = 0 max_articles_per_feed = 2000 - language = 'en' + + debugMessages = True + + # Name, URL, Soup FindAll Attr if relevant (last two are special case), articleList + catList = [ ["TV Archives", 'https://www.billoreilly.com/show?action=tvShowArchive', 'a', {'class':['showLinks','homeLinks']}, []], + ["No Spin Archives", 'https://www.billoreilly.com/blog?categoryID=7', True, {'class':['blogBody'], 'style':['padding-top:10px;']}, []], + ["Daily Briefings", 'http://www.billoreilly.com/blog?categoryID=11', True, {'class':['defaultHeaderSmallLinks']}, []], + ["Stratfor", 'http://www.billoreilly.com/blog?categoryID=5', 'a', {'class':['blogLinks']}, []], + ["Talking Points Memo", 'https://www.billoreilly.com/blog?categoryID=12', 'td', {}, []], + ["Current Column", 'https://www.billoreilly.com/currentcolumn', 'span', {'class':['defaultHeader']}, []] + ] def get_browser(self): br = BasicNewsRecipe.get_browser() @@ -31,6 +48,8 @@ class OReillyPremium(BasicNewsRecipe): br.submit() return br + # Returns the best-guess print url. + # The second parameter (pageURL) is returned if nothing is found. def extractPrintURL(self, baseURL, pageURL, printString): tagURL = pageURL soup = self.index_to_soup(pageURL) @@ -38,7 +57,6 @@ class OReillyPremium(BasicNewsRecipe): printText = soup.find('a', text=printString) else : print("Failed to find Print string "+printString+ " in "+pageURL) - if printText: tag = printText.parent tagURL = baseURL+tag['href'] @@ -47,177 +65,111 @@ class OReillyPremium(BasicNewsRecipe): def stripBadChars(self, inString) : return inString.replace("\'", "") - - # returns a qualifying article list - def parseNoSpinArchives(self, baseURL, soupURL, debugMessages): - articleList = [] - soup = self.index_to_soup(soupURL) - for div in soup.findAll(True, attrs={'class':['blogBody'], 'style':['padding-top:10px;']}): - a = div.find('a', href=True) - if not a: - continue - # re == regex. [href] is the link - url = baseURL - url +=re.sub(r'\?.*', '', a['href']) - # Get print version - printURL = self.extractPrintURL(baseURL, url, "Print this entry") - if printURL: - url = printURL - title = self.tag_to_string(a, use_alt=True).strip() - if debugMessages : - print("No Spin Archive Title:"+title+" at url: "+url) - description = 'None' - pubdate = time.strftime('%a, %d %b') - summary = div.find(True, attrs={'class':'summary'}) - if summary: - description = self.tag_to_string(summary, use_alt=False) - articleList.append(dict(title=title, url=url, date=pubdate, description=description, content='')) - return articleList - - - def parseTVArchives(self, baseURL, soupURL, debugMessages): - # TV Archives page has some Ajax, so look for the static only. - articleList = [] - soup = self.index_to_soup(soupURL) - if debugMessages : - print("In parseTVArchives") - for div in soup.findAll('a', {'class':['showLinks','homeLinks']}): - a = div - url = baseURL - url +=a['href'] - printURL = self.extractPrintURL(baseURL, url, "Print this entry") - if printURL: - url = printURL - title = self.tag_to_string(a, use_alt=True).strip() - title = self.stripBadChars(title) - if debugMessages : - print("TV Archive "+title+" at url: "+url) - description = 'None' - pubdate = time.strftime('%a, %d %b') - summary = div.find(True, attrs={'class':'summary'}) - if summary: - description = self.tag_to_string(summary, use_alt=False) - articleList.append(dict(title=title, url=url, date=pubdate, description=description, content='')) - if debugMessages : - print("Leaving TV Parse ") - return articleList - - # Get Daily Briefing Archives - def parseDailyBriefs(self, baseURL, soupURL, debugMessages) : - print("Starting daily briefs") - articleList = [] - soup = self.index_to_soup(soupURL) - for div in soup.findAll(True, attrs={'class':['defaultHeaderSmallLinks']}): - # re == regex. [href] is the link - url = baseURL - url +=re.sub(r'\?.*', '', div['href']) - printURL = self.extractPrintURL(baseURL, url, "Print this entry") - if printURL: - url = printURL - title = div.contents[0] - if debugMessages : - print("Daily Brief - title:"+title+" at url: "+url) - description = 'None' - pubdate = time.strftime('%a, %d %b') - summary = div.find(True, attrs={'class':'summary'}) - if summary: - description = self.tag_to_string(summary, use_alt=False) - articleList.append(dict(title=title, url=url, date=pubdate, description=description, content='')) - print("Leaving daily briefs") - return articleList - - # Get the weekly Stratfor intelligence report - def parseStratfor(self, baseURL, soupURL, debugMessages): - # http://www.billoreilly.com/blog?categoryID=5 - articleList = [] - soup = self.index_to_soup(soupURL) - if debugMessages : - print("In parseStratfor") - a = soup.find('a', {'class':['blogLinks']}) - url = baseURL - url +=a['href'] - title = self.tag_to_string(a, use_alt=True).strip() - if debugMessages : - print("url: "+url) - print("title:"+title) - # Get Stratfor contents so we can get the real title. - stratSoup = self.index_to_soup(url) - title = stratSoup.html.head.title.string - stratIndex = title.find('Stratfor.com:', 0) - if (stratIndex > -1) : - title = title[stratIndex+14:-1] - # Look for first blogBody -1) : + title = title[stratIndex+14:-1] + # Look for first blogBody ', re.DOTALL), lambda m: '')] +#Remove annoying map links (inline-caption class is also used for some image captions! hence regex to match maps.google) + preprocess_regexps = [(re.compile(r'
', re.IGNORECASE | re.DOTALL), lambda match : ''), + (re.compile(r'', re.IGNORECASE | re.DOTALL), lambda match : ''), + (re.compile(r'
.*?
'), lambda h1: ''), + ] + + extra_css = '.reactieHeader { color: #333333; font-size: 6px; border-bottom:solid 2px #333333; border-top:solid 1px #333333; } \ + .reactieContent { font-family:"Times New Roman",Georgia,Serif; color: #000000; font-size: 8px; } \ + .quote { font-family:"Times New Roman",Georgia,Serif; padding-left:2px; border-left:solid 3px #666666; color: #666666; }' + + + feeds = [(u'Tweakers.net', u'http://feeds.feedburner.com/tweakers/nieuws')] + + def print_version(self, url): + return url + '?max=200' + diff --git a/recipes/variety.recipe b/recipes/variety.recipe index bed04cc55d..35418174e1 100644 --- a/recipes/variety.recipe +++ b/recipes/variety.recipe @@ -1,5 +1,5 @@ __license__ = 'GPL v3' -__copyright__ = '2009-2010, Darko Miletic ' +__copyright__ = '2009-2012, Darko Miletic ' ''' www.variety.com ''' @@ -14,11 +14,11 @@ class Variety(BasicNewsRecipe): max_articles_per_feed = 100 no_stylesheets = True use_embedded_content = False - encoding = 'cp1252' + encoding = 'utf8' publisher = 'Red Business Information' category = 'Entertainment Industry News, Daily Variety, Movie Reviews, TV, Awards, Oscars, Cannes, Box Office, Hollywood' language = 'en' - masthead_url = 'http://a330.g.akamai.net/7/330/23382/20090528190853/www.variety.com/graphics/variety/Variety_logo_green_tm.gif' + masthead_url = 'http://images1.variety.com/graphics/variety/Variety_logo_green_tm.gif' extra_css = ' body{font-family: Georgia,"Times New Roman",Times,Courier,serif } img{margin-bottom: 1em} ' conversion_options = { @@ -30,17 +30,10 @@ class Variety(BasicNewsRecipe): remove_tags = [dict(name=['object','link','map'])] - keep_only_tags = [dict(name='div', attrs={'id':'article'})] + keep_only_tags = [dict(name='div', attrs={'class':'art control'})] feeds = [(u'News & Articles', u'http://feeds.feedburner.com/variety/headlines' )] def print_version(self, url): - rpt = url.rpartition('?')[0] - artid = rpt.rpartition('/')[2] - catidr = url.rpartition('categoryid=')[2] - catid = catidr.partition('&')[0] - return 'http://www.variety.com/index.asp?layout=print_story&articleid=' + artid + '&categoryid=' + catid - - - def preprocess_html(self, soup): - return self.adeify_images(soup) + rpt = url.rpartition('.html')[0] + return rpt + '?printerfriendly=true' diff --git a/recipes/villagevoice.recipe b/recipes/villagevoice.recipe new file mode 100644 index 0000000000..4723700817 --- /dev/null +++ b/recipes/villagevoice.recipe @@ -0,0 +1,46 @@ +#!/usr/bin/env python + +import re +from calibre.web.feeds.news import BasicNewsRecipe + +class VillageVoice(BasicNewsRecipe): + + title = 'Village Voice' + feeds = [ + ("Complete Issue", "http://villagevoice.com/syndication/issue"), + ("News", "http://villagevoice.com/syndication/section/news"), + ("Music", "http://villagevoice.com/syndication/section/music"), + ("Movies", "http://villagevoice.com/syndication/section/film"), + #("Restaurants", "http://villagevoice.com/syndication/section/dining"), + #("Music Events", "http://villagevoice.com/syndication/events?type=music"), + #("Calendar Events", "http://villagevoice.com/syndication/events"), + #("Promotional Events", "http://villagevoice.com/syndication/promoEvents"), + #("Restaurant Guide", "http://villagevoice.com/syndication/restaurants/search") + ] + + auto_cleanup = True + max_articles_per_feed = 50 + masthead_url = "http://assets.villagevoice.com/img/citylogo.png" + language = 'en' + __author__ = 'Barty' + + seen_urls = [] + + # village voice breaks the article up into multiple pages, so + # parse page and grab the print url + + url_regex = re.compile(r'\/content\/printVersion\/\d+',re.I) + + def print_version(self, url): + if url in self.seen_urls: + return None + self.seen_urls.append( url) + soup = self.index_to_soup(url) + atag = soup.find('a',attrs={'href':self.url_regex}) + if atag is None: + self.log('Warning: no print url found for '+url) + else: + m = self.url_regex.search(atag['href']) + if m: + url = 'http://www.villagevoice.com'+m.group(0) + return url diff --git a/resources/content_server/browse/browse.html b/resources/content_server/browse/browse.html index 746c4d6c6c..3e9d64dba0 100644 --- a/resources/content_server/browse/browse.html +++ b/resources/content_server/browse/browse.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + ..:: calibre {library} ::.. {title} @@ -58,7 +58,7 @@ method="post" title="Donate to support the development of calibre">
- + diff --git a/setup/hosting.py b/setup/hosting.py index e5fc3c878d..cdfd333f2a 100644 --- a/setup/hosting.py +++ b/setup/hosting.py @@ -26,7 +26,11 @@ def login_to_google(username, password): br.form['Email'] = username br.form['Passwd'] = password raw = br.submit().read() - if b'Account overview - Account Settings' not in raw: + if re.search(br'.*?Account Settings', raw) is None: + x = re.search(br'(?is).*?', raw) + if x is not None: + print ('Title of post login page: %s'%x.group()) + #open('/tmp/goog.html', 'wb').write(raw) raise ValueError(('Failed to login to google with credentials: %s %s' '\nGoogle sometimes requires verification when logging in from a ' 'new IP address. Use lynx to login and supply the verification, ' diff --git a/setup/iso_639/de.po b/setup/iso_639/de.po index dbb5613d60..77bd0f4695 100644 --- a/setup/iso_639/de.po +++ b/setup/iso_639/de.po @@ -18,14 +18,14 @@ msgstr "" "Report-Msgid-Bugs-To: Debian iso-codes team \n" "POT-Creation-Date: 2011-11-25 14:01+0000\n" -"PO-Revision-Date: 2012-01-08 20:03+0000\n" -"Last-Translator: Simeon \n" +"PO-Revision-Date: 2012-01-14 02:30+0000\n" +"Last-Translator: Wolfgang Rohdewald \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-01-09 04:49+0000\n" -"X-Generator: Launchpad (build 14640)\n" +"X-Launchpad-Export-Date: 2012-01-15 05:18+0000\n" +"X-Generator: Launchpad (build 14664)\n" "Language: de\n" #. name for aaa diff --git a/setup/iso_639/en_GB.po b/setup/iso_639/en_GB.po index 11d0bbf361..5f7a10a0ec 100644 --- a/setup/iso_639/en_GB.po +++ b/setup/iso_639/en_GB.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: calibre\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-11-25 14:01+0000\n" -"PO-Revision-Date: 2012-01-07 09:51+0000\n" +"PO-Revision-Date: 2012-01-19 00:12+0000\n" "Last-Translator: Vibhav Pant \n" "Language-Team: English (United Kingdom) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-01-08 05:02+0000\n" -"X-Generator: Launchpad (build 14640)\n" +"X-Launchpad-Export-Date: 2012-01-19 04:39+0000\n" +"X-Generator: Launchpad (build 14692)\n" #. name for aaa msgid "Ghotuo" @@ -1623,7 +1623,7 @@ msgstr "Attié" #. name for atj msgid "Atikamekw" -msgstr "" +msgstr "Atikamekw" #. name for atk msgid "Ati" @@ -1739,7 +1739,7 @@ msgstr "Asu (Nigeria)" #. name for aun msgid "One; Molmo" -msgstr "" +msgstr "One; Molmo" #. name for auo msgid "Auyokawa" @@ -1747,7 +1747,7 @@ msgstr "Auyokawa" #. name for aup msgid "Makayam" -msgstr "" +msgstr "Makayam" #. name for auq msgid "Anus" @@ -1803,5203 +1803,5203 @@ msgstr "Avikam" #. name for avk msgid "Kotava" -msgstr "" +msgstr "Kotava" #. name for avl msgid "Arabic; Eastern Egyptian Bedawi" -msgstr "" +msgstr "Arabic; Eastern Egyptian Bedawi" #. name for avn msgid "Avatime" -msgstr "" +msgstr "Avatime" #. name for avo msgid "Agavotaguerra" -msgstr "" +msgstr "Agavotaguerra" #. name for avs msgid "Aushiri" -msgstr "" +msgstr "Aushiri" #. name for avt msgid "Au" -msgstr "" +msgstr "Au" #. name for avu msgid "Avokaya" -msgstr "" +msgstr "Avokaya" #. name for avv msgid "Avá-Canoeiro" -msgstr "" +msgstr "Avá-Canoeiro" #. name for awa msgid "Awadhi" -msgstr "" +msgstr "Awadhi" #. name for awb msgid "Awa (Papua New Guinea)" -msgstr "" +msgstr "Awa (Papua New Guinea)" #. name for awc msgid "Cicipu" -msgstr "" +msgstr "Cicipu" #. name for awe msgid "Awetí" -msgstr "" +msgstr "Awetí" #. name for awh msgid "Awbono" -msgstr "" +msgstr "Awbono" #. name for awi msgid "Aekyom" -msgstr "" +msgstr "Aekyom" #. name for awk msgid "Awabakal" -msgstr "" +msgstr "Awabakal" #. name for awm msgid "Arawum" -msgstr "" +msgstr "Arawum" #. name for awn msgid "Awngi" -msgstr "" +msgstr "Awngi" #. name for awo msgid "Awak" -msgstr "" +msgstr "Awak" #. name for awr msgid "Awera" -msgstr "" +msgstr "Awera" #. name for aws msgid "Awyu; South" -msgstr "" +msgstr "Awyu; South" #. name for awt msgid "Araweté" -msgstr "" +msgstr "Araweté" #. name for awu msgid "Awyu; Central" -msgstr "" +msgstr "Awyu; Central" #. name for awv msgid "Awyu; Jair" -msgstr "" +msgstr "Awyu; Jair" #. name for aww msgid "Awun" -msgstr "" +msgstr "Awun" #. name for awx msgid "Awara" -msgstr "" +msgstr "Awara" #. name for awy msgid "Awyu; Edera" -msgstr "" +msgstr "Awyu; Edera" #. name for axb msgid "Abipon" -msgstr "" +msgstr "Abipon" #. name for axg msgid "Arára; Mato Grosso" -msgstr "" +msgstr "Arára; Mato Grosso" #. name for axk msgid "Yaka (Central African Republic)" -msgstr "" +msgstr "Yaka (Central African Republic)" #. name for axm msgid "Armenian; Middle" -msgstr "" +msgstr "Armenian; Middle" #. name for axx msgid "Xaragure" -msgstr "" +msgstr "Xaragure" #. name for aya msgid "Awar" -msgstr "" +msgstr "Awar" #. name for ayb msgid "Gbe; Ayizo" -msgstr "" +msgstr "Gbe; Ayizo" #. name for ayc msgid "Aymara; Southern" -msgstr "" +msgstr "Aymara; Southern" #. name for ayd msgid "Ayabadhu" -msgstr "" +msgstr "Ayabadhu" #. name for aye msgid "Ayere" -msgstr "" +msgstr "Ayere" #. name for ayg msgid "Ginyanga" -msgstr "" +msgstr "Ginyanga" #. name for ayh msgid "Arabic; Hadrami" -msgstr "" +msgstr "Arabic; Hadrami" #. name for ayi msgid "Leyigha" -msgstr "" +msgstr "Leyigha" #. name for ayk msgid "Akuku" -msgstr "" +msgstr "Akuku" #. name for ayl msgid "Arabic; Libyan" -msgstr "" +msgstr "Arabic; Libyan" #. name for aym msgid "Aymara" -msgstr "" +msgstr "Aymara" #. name for ayn msgid "Arabic; Sanaani" -msgstr "" +msgstr "Arabic; Sanaani" #. name for ayo msgid "Ayoreo" -msgstr "" +msgstr "Ayoreo" #. name for ayp msgid "Arabic; North Mesopotamian" -msgstr "" +msgstr "Arabic; North Mesopotamian" #. name for ayq msgid "Ayi (Papua New Guinea)" -msgstr "" +msgstr "Ayi (Papua New Guinea)" #. name for ayr msgid "Aymara; Central" -msgstr "" +msgstr "Aymara; Central" #. name for ays msgid "Ayta; Sorsogon" -msgstr "" +msgstr "Ayta; Sorsogon" #. name for ayt msgid "Ayta; Magbukun" -msgstr "" +msgstr "Ayta; Magbukun" #. name for ayu msgid "Ayu" -msgstr "" +msgstr "Ayu" #. name for ayy msgid "Ayta; Tayabas" -msgstr "" +msgstr "Ayta; Tayabas" #. name for ayz msgid "Mai Brat" -msgstr "" +msgstr "Mai Brat" #. name for aza msgid "Azha" -msgstr "" +msgstr "Azha" #. name for azb msgid "Azerbaijani; South" -msgstr "" +msgstr "Azerbaijani; South" #. name for aze msgid "Azerbaijani" -msgstr "" +msgstr "Azerbaijani" #. name for azg msgid "Amuzgo; San Pedro Amuzgos" -msgstr "" +msgstr "Amuzgo; San Pedro Amuzgos" #. name for azj msgid "Azerbaijani; North" -msgstr "" +msgstr "Azerbaijani; North" #. name for azm msgid "Amuzgo; Ipalapa" -msgstr "" +msgstr "Amuzgo; Ipalapa" #. name for azo msgid "Awing" -msgstr "" +msgstr "Awing" #. name for azt msgid "Atta; Faire" -msgstr "" +msgstr "Atta; Faire" #. name for azz msgid "Nahuatl; Highland Puebla" -msgstr "" +msgstr "Nahuatl; Highland Puebla" #. name for baa msgid "Babatana" -msgstr "" +msgstr "Babatana" #. name for bab msgid "Bainouk-Gunyuño" -msgstr "" +msgstr "Bainouk-Gunyuño" #. name for bac msgid "Badui" -msgstr "" +msgstr "Badui" #. name for bae msgid "Baré" -msgstr "" +msgstr "Baré" #. name for baf msgid "Nubaca" -msgstr "" +msgstr "Nubaca" #. name for bag msgid "Tuki" -msgstr "" +msgstr "Tuki" #. name for bah msgid "Creole English; Bahamas" -msgstr "" +msgstr "Creole English; Bahamas" #. name for baj msgid "Barakai" -msgstr "" +msgstr "Barakai" #. name for bak msgid "Bashkir" -msgstr "" +msgstr "Bashkir" #. name for bal msgid "Baluchi" -msgstr "" +msgstr "Baluchi" #. name for bam msgid "Bambara" -msgstr "" +msgstr "Bambara" #. name for ban msgid "Balinese" -msgstr "" +msgstr "Balinese" #. name for bao msgid "Waimaha" -msgstr "" +msgstr "Waimaha" #. name for bap msgid "Bantawa" -msgstr "" +msgstr "Bantawa" #. name for bar msgid "Bavarian" -msgstr "" +msgstr "Bavarian" #. name for bas msgid "Basa (Cameroon)" -msgstr "" +msgstr "Basa (Cameroon)" #. name for bau msgid "Bada (Nigeria)" -msgstr "" +msgstr "Bada (Nigeria)" #. name for bav msgid "Vengo" -msgstr "" +msgstr "Vengo" #. name for baw msgid "Bambili-Bambui" -msgstr "" +msgstr "Bambili-Bambui" #. name for bax msgid "Bamun" -msgstr "" +msgstr "Bamun" #. name for bay msgid "Batuley" -msgstr "" +msgstr "Batuley" #. name for baz msgid "Tunen" -msgstr "" +msgstr "Tunen" #. name for bba msgid "Baatonum" -msgstr "" +msgstr "Baatonum" #. name for bbb msgid "Barai" -msgstr "" +msgstr "Barai" #. name for bbc msgid "Batak Toba" -msgstr "" +msgstr "Batak Toba" #. name for bbd msgid "Bau" -msgstr "" +msgstr "Bau" #. name for bbe msgid "Bangba" -msgstr "" +msgstr "Bangba" #. name for bbf msgid "Baibai" -msgstr "" +msgstr "Baibai" #. name for bbg msgid "Barama" -msgstr "" +msgstr "Barama" #. name for bbh msgid "Bugan" -msgstr "" +msgstr "Bugan" #. name for bbi msgid "Barombi" -msgstr "" +msgstr "Barombi" #. name for bbj msgid "Ghomálá'" -msgstr "" +msgstr "Ghomálá'" #. name for bbk msgid "Babanki" -msgstr "" +msgstr "Babanki" #. name for bbl msgid "Bats" -msgstr "" +msgstr "Bats" #. name for bbm msgid "Babango" -msgstr "" +msgstr "Babango" #. name for bbn msgid "Uneapa" -msgstr "" +msgstr "Uneapa" #. name for bbo msgid "Bobo Madaré; Northern" -msgstr "" +msgstr "Bobo Madaré; Northern" #. name for bbp msgid "Banda; West Central" -msgstr "" +msgstr "Banda; West Central" #. name for bbq msgid "Bamali" -msgstr "" +msgstr "Bamali" #. name for bbr msgid "Girawa" -msgstr "" +msgstr "Girawa" #. name for bbs msgid "Bakpinka" -msgstr "" +msgstr "Bakpinka" #. name for bbt msgid "Mburku" -msgstr "" +msgstr "Mburku" #. name for bbu msgid "Kulung (Nigeria)" -msgstr "" +msgstr "Kulung (Nigeria)" #. name for bbv msgid "Karnai" -msgstr "" +msgstr "Karnai" #. name for bbw msgid "Baba" -msgstr "" +msgstr "Baba" #. name for bbx msgid "Bubia" -msgstr "" +msgstr "Bubia" #. name for bby msgid "Befang" -msgstr "" +msgstr "Befang" #. name for bbz msgid "Creole Arabic; Babalia" -msgstr "" +msgstr "Creole Arabic; Babalia" #. name for bca msgid "Bai; Central" -msgstr "" +msgstr "Bai; Central" #. name for bcb msgid "Bainouk-Samik" -msgstr "" +msgstr "Bainouk-Samik" #. name for bcc msgid "Balochi; Southern" -msgstr "" +msgstr "Balochi; Southern" #. name for bcd msgid "Babar; North" -msgstr "" +msgstr "Babar; North" #. name for bce msgid "Bamenyam" -msgstr "" +msgstr "Bamenyam" #. name for bcf msgid "Bamu" -msgstr "" +msgstr "Bamu" #. name for bcg msgid "Baga Binari" -msgstr "" +msgstr "Baga Binari" #. name for bch msgid "Bariai" -msgstr "" +msgstr "Bariai" #. name for bci msgid "Baoulé" -msgstr "" +msgstr "Baoulé" #. name for bcj msgid "Bardi" -msgstr "" +msgstr "Bardi" #. name for bck msgid "Bunaba" -msgstr "" +msgstr "Bunaba" #. name for bcl msgid "Bicolano; Central" -msgstr "" +msgstr "Bicolano; Central" #. name for bcm msgid "Bannoni" -msgstr "" +msgstr "Bannoni" #. name for bcn msgid "Bali (Nigeria)" -msgstr "" +msgstr "Bali (Nigeria)" #. name for bco msgid "Kaluli" -msgstr "" +msgstr "Kaluli" #. name for bcp msgid "Bali (Democratic Republic of Congo)" -msgstr "" +msgstr "Bali (Democratic Republic of Congo)" #. name for bcq msgid "Bench" -msgstr "" +msgstr "Bench" #. name for bcr msgid "Babine" -msgstr "" +msgstr "Babine" #. name for bcs msgid "Kohumono" -msgstr "" +msgstr "Kohumono" #. name for bct msgid "Bendi" -msgstr "" +msgstr "Bendi" #. name for bcu msgid "Awad Bing" -msgstr "" +msgstr "Awad Bing" #. name for bcv msgid "Shoo-Minda-Nye" -msgstr "" +msgstr "Shoo-Minda-Nye" #. name for bcw msgid "Bana" -msgstr "" +msgstr "Bana" #. name for bcy msgid "Bacama" -msgstr "" +msgstr "Bacama" #. name for bcz msgid "Bainouk-Gunyaamolo" -msgstr "" +msgstr "Bainouk-Gunyaamolo" #. name for bda msgid "Bayot" -msgstr "" +msgstr "Bayot" #. name for bdb msgid "Basap" -msgstr "" +msgstr "Basap" #. name for bdc msgid "Emberá-Baudó" -msgstr "" +msgstr "Emberá-Baudó" #. name for bdd msgid "Bunama" -msgstr "" +msgstr "Bunama" #. name for bde msgid "Bade" -msgstr "" +msgstr "Bade" #. name for bdf msgid "Biage" -msgstr "" +msgstr "Biage" #. name for bdg msgid "Bonggi" -msgstr "" +msgstr "Bonggi" #. name for bdh msgid "Baka (Sudan)" -msgstr "" +msgstr "Baka (Sudan)" #. name for bdi msgid "Burun" -msgstr "" +msgstr "Burun" #. name for bdj msgid "Bai" -msgstr "" +msgstr "Bai" #. name for bdk msgid "Budukh" -msgstr "" +msgstr "Budukh" #. name for bdl msgid "Bajau; Indonesian" -msgstr "" +msgstr "Bajau; Indonesian" #. name for bdm msgid "Buduma" -msgstr "" +msgstr "Buduma" #. name for bdn msgid "Baldemu" -msgstr "" +msgstr "Baldemu" #. name for bdo msgid "Morom" -msgstr "" +msgstr "Morom" #. name for bdp msgid "Bende" -msgstr "" +msgstr "Bende" #. name for bdq msgid "Bahnar" -msgstr "" +msgstr "Bahnar" #. name for bdr msgid "Bajau; West Coast" -msgstr "" +msgstr "Bajau; West Coast" #. name for bds msgid "Burunge" -msgstr "" +msgstr "Burunge" #. name for bdt msgid "Bokoto" -msgstr "" +msgstr "Bokoto" #. name for bdu msgid "Oroko" -msgstr "" +msgstr "Oroko" #. name for bdv msgid "Bodo Parja" -msgstr "" +msgstr "Bodo Parja" #. name for bdw msgid "Baham" -msgstr "" +msgstr "Baham" #. name for bdx msgid "Budong-Budong" -msgstr "" +msgstr "Budong-Budong" #. name for bdy msgid "Bandjalang" -msgstr "" +msgstr "Bandjalang" #. name for bdz msgid "Badeshi" -msgstr "" +msgstr "Badeshi" #. name for bea msgid "Beaver" -msgstr "" +msgstr "Beaver" #. name for beb msgid "Bebele" -msgstr "" +msgstr "Bebele" #. name for bec msgid "Iceve-Maci" -msgstr "" +msgstr "Iceve-Maci" #. name for bed msgid "Bedoanas" -msgstr "" +msgstr "Bedoanas" #. name for bee msgid "Byangsi" -msgstr "" +msgstr "Byangsi" #. name for bef msgid "Benabena" -msgstr "" +msgstr "Benabena" #. name for beg msgid "Belait" -msgstr "" +msgstr "Belait" #. name for beh msgid "Biali" -msgstr "" +msgstr "Biali" #. name for bei msgid "Bekati'" -msgstr "" +msgstr "Bekati'" #. name for bej msgid "Beja" -msgstr "" +msgstr "Beja" #. name for bek msgid "Bebeli" -msgstr "" +msgstr "Bebeli" #. name for bel msgid "Belarusian" -msgstr "" +msgstr "Belarusian" #. name for bem msgid "Bemba (Zambia)" -msgstr "" +msgstr "Bemba (Zambia)" #. name for ben msgid "Bengali" -msgstr "" +msgstr "Bengali" #. name for beo msgid "Beami" -msgstr "" +msgstr "Beami" #. name for bep msgid "Besoa" -msgstr "" +msgstr "Besoa" #. name for beq msgid "Beembe" -msgstr "" +msgstr "Beembe" #. name for bes msgid "Besme" -msgstr "" +msgstr "Besme" #. name for bet msgid "Béte; Guiberoua" -msgstr "" +msgstr "Béte; Guiberoua" #. name for beu msgid "Blagar" -msgstr "" +msgstr "Blagar" #. name for bev msgid "Bété; Daloa" -msgstr "" +msgstr "Bété; Daloa" #. name for bew msgid "Betawi" -msgstr "" +msgstr "Betawi" #. name for bex msgid "Jur Modo" -msgstr "" +msgstr "Jur Modo" #. name for bey msgid "Beli (Papua New Guinea)" -msgstr "" +msgstr "Beli (Papua New Guinea)" #. name for bez msgid "Bena (Tanzania)" -msgstr "" +msgstr "Bena (Tanzania)" #. name for bfa msgid "Bari" -msgstr "" +msgstr "Bari" #. name for bfb msgid "Bareli; Pauri" -msgstr "" +msgstr "Bareli; Pauri" #. name for bfc msgid "Bai; Northern" -msgstr "" +msgstr "Bai; Northern" #. name for bfd msgid "Bafut" -msgstr "" +msgstr "Bafut" #. name for bfe msgid "Betaf" -msgstr "" +msgstr "Betaf" #. name for bff msgid "Bofi" -msgstr "" +msgstr "Bofi" #. name for bfg msgid "Kayan; Busang" -msgstr "" +msgstr "Kayan; Busang" #. name for bfh msgid "Blafe" -msgstr "" +msgstr "Blafe" #. name for bfi msgid "British Sign Language" -msgstr "" +msgstr "British Sign Language" #. name for bfj msgid "Bafanji" -msgstr "" +msgstr "Bafanji" #. name for bfk msgid "Ban Khor Sign Language" -msgstr "" +msgstr "Ban Khor Sign Language" #. name for bfl msgid "Banda-Ndélé" -msgstr "" +msgstr "Banda-Ndélé" #. name for bfm msgid "Mmen" -msgstr "" +msgstr "Mmen" #. name for bfn msgid "Bunak" -msgstr "" +msgstr "Bunak" #. name for bfo msgid "Birifor; Malba" -msgstr "" +msgstr "Birifor; Malba" #. name for bfp msgid "Beba" -msgstr "" +msgstr "Beba" #. name for bfq msgid "Badaga" -msgstr "" +msgstr "Badaga" #. name for bfr msgid "Bazigar" -msgstr "" +msgstr "Bazigar" #. name for bfs msgid "Bai; Southern" -msgstr "" +msgstr "Bai; Southern" #. name for bft msgid "Balti" -msgstr "" +msgstr "Balti" #. name for bfu msgid "Gahri" -msgstr "" +msgstr "Gahri" #. name for bfw msgid "Bondo" -msgstr "" +msgstr "Bondo" #. name for bfx msgid "Bantayanon" -msgstr "" +msgstr "Bantayanon" #. name for bfy msgid "Bagheli" -msgstr "" +msgstr "Bagheli" #. name for bfz msgid "Pahari; Mahasu" -msgstr "" +msgstr "Pahari; Mahasu" #. name for bga msgid "Gwamhi-Wuri" -msgstr "" +msgstr "Gwamhi-Wuri" #. name for bgb msgid "Bobongko" -msgstr "" +msgstr "Bobongko" #. name for bgc msgid "Haryanvi" -msgstr "" +msgstr "Haryanvi" #. name for bgd msgid "Bareli; Rathwi" -msgstr "" +msgstr "Bareli; Rathwi" #. name for bge msgid "Bauria" -msgstr "" +msgstr "Bauria" #. name for bgf msgid "Bangandu" -msgstr "" +msgstr "Bangandu" #. name for bgg msgid "Bugun" -msgstr "" +msgstr "Bugun" #. name for bgi msgid "Giangan" -msgstr "" +msgstr "Giangan" #. name for bgj msgid "Bangolan" -msgstr "" +msgstr "Bangolan" #. name for bgk msgid "Bit" -msgstr "" +msgstr "Bit" #. name for bgl msgid "Bo (Laos)" -msgstr "" +msgstr "Bo (Laos)" #. name for bgm msgid "Baga Mboteni" -msgstr "" +msgstr "Baga Mboteni" #. name for bgn msgid "Balochi; Western" -msgstr "" +msgstr "Balochi; Western" #. name for bgo msgid "Baga Koga" -msgstr "" +msgstr "Baga Koga" #. name for bgp msgid "Balochi; Eastern" -msgstr "" +msgstr "Balochi; Eastern" #. name for bgq msgid "Bagri" -msgstr "" +msgstr "Bagri" #. name for bgr msgid "Chin; Bawm" -msgstr "" +msgstr "Chin; Bawm" #. name for bgs msgid "Tagabawa" -msgstr "" +msgstr "Tagabawa" #. name for bgt msgid "Bughotu" -msgstr "" +msgstr "Bughotu" #. name for bgu msgid "Mbongno" -msgstr "" +msgstr "Mbongno" #. name for bgv msgid "Warkay-Bipim" -msgstr "" +msgstr "Warkay-Bipim" #. name for bgw msgid "Bhatri" -msgstr "" +msgstr "Bhatri" #. name for bgx msgid "Turkish; Balkan Gagauz" -msgstr "" +msgstr "Turkish; Balkan Gagauz" #. name for bgy msgid "Benggoi" -msgstr "" +msgstr "Benggoi" #. name for bgz msgid "Banggai" -msgstr "" +msgstr "Banggai" #. name for bha msgid "Bharia" -msgstr "" +msgstr "Bharia" #. name for bhb msgid "Bhili" -msgstr "" +msgstr "Bhili" #. name for bhc msgid "Biga" -msgstr "" +msgstr "Biga" #. name for bhd msgid "Bhadrawahi" -msgstr "" +msgstr "Bhadrawahi" #. name for bhe msgid "Bhaya" -msgstr "" +msgstr "Bhaya" #. name for bhf msgid "Odiai" -msgstr "" +msgstr "Odiai" #. name for bhg msgid "Binandere" -msgstr "" +msgstr "Binandere" #. name for bhh msgid "Bukharic" -msgstr "" +msgstr "Bukharic" #. name for bhi msgid "Bhilali" -msgstr "" +msgstr "Bhilali" #. name for bhj msgid "Bahing" -msgstr "" +msgstr "Bahing" #. name for bhl msgid "Bimin" -msgstr "" +msgstr "Bimin" #. name for bhm msgid "Bathari" -msgstr "" +msgstr "Bathari" #. name for bhn msgid "Neo-Aramaic; Bohtan" -msgstr "" +msgstr "Neo-Aramaic; Bohtan" #. name for bho msgid "Bhojpuri" -msgstr "" +msgstr "Bhojpuri" #. name for bhp msgid "Bima" -msgstr "" +msgstr "Bima" #. name for bhq msgid "Tukang Besi South" -msgstr "" +msgstr "Tukang Besi South" #. name for bhr msgid "Malagasy; Bara" -msgstr "" +msgstr "Malagasy; Bara" #. name for bhs msgid "Buwal" -msgstr "" +msgstr "Buwal" #. name for bht msgid "Bhattiyali" -msgstr "" +msgstr "Bhattiyali" #. name for bhu msgid "Bhunjia" -msgstr "" +msgstr "Bhunjia" #. name for bhv msgid "Bahau" -msgstr "" +msgstr "Bahau" #. name for bhw msgid "Biak" -msgstr "" +msgstr "Biak" #. name for bhx msgid "Bhalay" -msgstr "" +msgstr "Bhalay" #. name for bhy msgid "Bhele" -msgstr "" +msgstr "Bhele" #. name for bhz msgid "Bada (Indonesia)" -msgstr "" +msgstr "Bada (Indonesia)" #. name for bia msgid "Badimaya" -msgstr "" +msgstr "Badimaya" #. name for bib msgid "Bissa" -msgstr "" +msgstr "Bissa" #. name for bic msgid "Bikaru" -msgstr "" +msgstr "Bikaru" #. name for bid msgid "Bidiyo" -msgstr "" +msgstr "Bidiyo" #. name for bie msgid "Bepour" -msgstr "" +msgstr "Bepour" #. name for bif msgid "Biafada" -msgstr "" +msgstr "Biafada" #. name for big msgid "Biangai" -msgstr "" +msgstr "Biangai" #. name for bij msgid "Vaghat-Ya-Bijim-Legeri" -msgstr "" +msgstr "Vaghat-Ya-Bijim-Legeri" #. name for bik msgid "Bikol" -msgstr "" +msgstr "Bikol" #. name for bil msgid "Bile" -msgstr "" +msgstr "Bile" #. name for bim msgid "Bimoba" -msgstr "" +msgstr "Bimoba" #. name for bin msgid "Bini" -msgstr "" +msgstr "Bini" #. name for bio msgid "Nai" -msgstr "" +msgstr "Nai" #. name for bip msgid "Bila" -msgstr "" +msgstr "Bila" #. name for biq msgid "Bipi" -msgstr "" +msgstr "Bipi" #. name for bir msgid "Bisorio" -msgstr "" +msgstr "Bisorio" #. name for bis msgid "Bislama" -msgstr "" +msgstr "Bislama" #. name for bit msgid "Berinomo" -msgstr "" +msgstr "Berinomo" #. name for biu msgid "Biete" -msgstr "" +msgstr "Biete" #. name for biv msgid "Birifor; Southern" -msgstr "" +msgstr "Birifor; Southern" #. name for biw msgid "Kol (Cameroon)" -msgstr "" +msgstr "Kol (Cameroon)" #. name for bix msgid "Bijori" -msgstr "" +msgstr "Bijori" #. name for biy msgid "Birhor" -msgstr "" +msgstr "Birhor" #. name for biz msgid "Baloi" -msgstr "" +msgstr "Baloi" #. name for bja msgid "Budza" -msgstr "" +msgstr "Budza" #. name for bjb msgid "Banggarla" -msgstr "" +msgstr "Banggarla" #. name for bjc msgid "Bariji" -msgstr "" +msgstr "Bariji" #. name for bjd msgid "Bandjigali" -msgstr "" +msgstr "Bandjigali" #. name for bje msgid "Mien; Biao-Jiao" -msgstr "" +msgstr "Mien; Biao-Jiao" #. name for bjf msgid "Neo-Aramaic; Barzani Jewish" -msgstr "" +msgstr "Neo-Aramaic; Barzani Jewish" #. name for bjg msgid "Bidyogo" -msgstr "" +msgstr "Bidyogo" #. name for bjh msgid "Bahinemo" -msgstr "" +msgstr "Bahinemo" #. name for bji msgid "Burji" -msgstr "" +msgstr "Burji" #. name for bjj msgid "Kanauji" -msgstr "" +msgstr "Kanauji" #. name for bjk msgid "Barok" -msgstr "" +msgstr "Barok" #. name for bjl msgid "Bulu (Papua New Guinea)" -msgstr "" +msgstr "Bulu (Papua New Guinea)" #. name for bjm msgid "Bajelani" -msgstr "" +msgstr "Bajelani" #. name for bjn msgid "Banjar" -msgstr "" +msgstr "Banjar" #. name for bjo msgid "Banda; Mid-Southern" -msgstr "" +msgstr "Banda; Mid-Southern" #. name for bjr msgid "Binumarien" -msgstr "" +msgstr "Binumarien" #. name for bjs msgid "Bajan" -msgstr "" +msgstr "Bajan" #. name for bjt msgid "Balanta-Ganja" -msgstr "" +msgstr "Balanta-Ganja" #. name for bju msgid "Busuu" -msgstr "" +msgstr "Busuu" #. name for bjv msgid "Bedjond" -msgstr "" +msgstr "Bedjond" #. name for bjw msgid "Bakwé" -msgstr "" +msgstr "Bakwé" #. name for bjx msgid "Itneg; Banao" -msgstr "" +msgstr "Itneg; Banao" #. name for bjy msgid "Bayali" -msgstr "" +msgstr "Bayali" #. name for bjz msgid "Baruga" -msgstr "" +msgstr "Baruga" #. name for bka msgid "Kyak" -msgstr "" +msgstr "Kyak" #. name for bkc msgid "Baka (Cameroon)" -msgstr "" +msgstr "Baka (Cameroon)" #. name for bkd msgid "Binukid" -msgstr "" +msgstr "Binukid" #. name for bkf msgid "Beeke" -msgstr "" +msgstr "Beeke" #. name for bkg msgid "Buraka" -msgstr "" +msgstr "Buraka" #. name for bkh msgid "Bakoko" -msgstr "" +msgstr "Bakoko" #. name for bki msgid "Baki" -msgstr "" +msgstr "Baki" #. name for bkj msgid "Pande" -msgstr "" +msgstr "Pande" #. name for bkk msgid "Brokskat" -msgstr "" +msgstr "Brokskat" #. name for bkl msgid "Berik" -msgstr "" +msgstr "Berik" #. name for bkm msgid "Kom (Cameroon)" -msgstr "" +msgstr "Kom (Cameroon)" #. name for bkn msgid "Bukitan" -msgstr "" +msgstr "Bukitan" #. name for bko msgid "Kwa'" -msgstr "" +msgstr "Kwa'" #. name for bkp msgid "Boko (Democratic Republic of Congo)" -msgstr "" +msgstr "Boko (Democratic Republic of Congo)" #. name for bkq msgid "Bakairí" -msgstr "" +msgstr "Bakairí" #. name for bkr msgid "Bakumpai" -msgstr "" +msgstr "Bakumpai" #. name for bks msgid "Sorsoganon; Northern" -msgstr "" +msgstr "Sorsoganon; Northern" #. name for bkt msgid "Boloki" -msgstr "" +msgstr "Boloki" #. name for bku msgid "Buhid" -msgstr "" +msgstr "Buhid" #. name for bkv msgid "Bekwarra" -msgstr "" +msgstr "Bekwarra" #. name for bkw msgid "Bekwel" -msgstr "" +msgstr "Bekwel" #. name for bkx msgid "Baikeno" -msgstr "" +msgstr "Baikeno" #. name for bky msgid "Bokyi" -msgstr "" +msgstr "Bokyi" #. name for bkz msgid "Bungku" -msgstr "" +msgstr "Bungku" #. name for bla msgid "Siksika" -msgstr "" +msgstr "Siksika" #. name for blb msgid "Bilua" -msgstr "" +msgstr "Bilua" #. name for blc msgid "Bella Coola" -msgstr "" +msgstr "Bella Coola" #. name for bld msgid "Bolango" -msgstr "" +msgstr "Bolango" #. name for ble msgid "Balanta-Kentohe" -msgstr "" +msgstr "Balanta-Kentohe" #. name for blf msgid "Buol" -msgstr "" +msgstr "Buol" #. name for blg msgid "Balau" -msgstr "" +msgstr "Balau" #. name for blh msgid "Kuwaa" -msgstr "" +msgstr "Kuwaa" #. name for bli msgid "Bolia" -msgstr "" +msgstr "Bolia" #. name for blj msgid "Bolongan" -msgstr "" +msgstr "Bolongan" #. name for blk msgid "Karen; Pa'o" -msgstr "" +msgstr "Karen; Pa'o" #. name for bll msgid "Biloxi" -msgstr "" +msgstr "Biloxi" #. name for blm msgid "Beli (Sudan)" -msgstr "" +msgstr "Beli (Sudan)" #. name for bln msgid "Bicolano; Southern Catanduanes" -msgstr "" +msgstr "Bicolano; Southern Catanduanes" #. name for blo msgid "Anii" -msgstr "" +msgstr "Anii" #. name for blp msgid "Blablanga" -msgstr "" +msgstr "Blablanga" #. name for blq msgid "Baluan-Pam" -msgstr "" +msgstr "Baluan-Pam" #. name for blr msgid "Blang" -msgstr "" +msgstr "Blang" #. name for bls msgid "Balaesang" -msgstr "" +msgstr "Balaesang" #. name for blt msgid "Tai Dam" -msgstr "" +msgstr "Tai Dam" #. name for blv msgid "Bolo" -msgstr "" +msgstr "Bolo" #. name for blw msgid "Balangao" -msgstr "" +msgstr "Balangao" #. name for blx msgid "Ayta; Mag-Indi" -msgstr "" +msgstr "Ayta; Mag-Indi" #. name for bly msgid "Notre" -msgstr "" +msgstr "Notre" #. name for blz msgid "Balantak" -msgstr "" +msgstr "Balantak" #. name for bma msgid "Lame" -msgstr "" +msgstr "Lame" #. name for bmb msgid "Bembe" -msgstr "" +msgstr "Bembe" #. name for bmc msgid "Biem" -msgstr "" +msgstr "Biem" #. name for bmd msgid "Manduri; Baga" -msgstr "" +msgstr "Manduri; Baga" #. name for bme msgid "Limassa" -msgstr "" +msgstr "Limassa" #. name for bmf msgid "Bom" -msgstr "" +msgstr "Bom" #. name for bmg msgid "Bamwe" -msgstr "" +msgstr "Bamwe" #. name for bmh msgid "Kein" -msgstr "" +msgstr "Kein" #. name for bmi msgid "Bagirmi" -msgstr "" +msgstr "Bagirmi" #. name for bmj msgid "Bote-Majhi" -msgstr "" +msgstr "Bote-Majhi" #. name for bmk msgid "Ghayavi" -msgstr "" +msgstr "Ghayavi" #. name for bml msgid "Bomboli" -msgstr "" +msgstr "Bomboli" #. name for bmm msgid "Malagasy; Northern Betsimisaraka" -msgstr "" +msgstr "Malagasy; Northern Betsimisaraka" #. name for bmn msgid "Bina (Papua New Guinea)" -msgstr "" +msgstr "Bina (Papua New Guinea)" #. name for bmo msgid "Bambalang" -msgstr "" +msgstr "Bambalang" #. name for bmp msgid "Bulgebi" -msgstr "" +msgstr "Bulgebi" #. name for bmq msgid "Bomu" -msgstr "" +msgstr "Bomu" #. name for bmr msgid "Muinane" -msgstr "" +msgstr "Muinane" #. name for bms msgid "Kanuri; Bilma" -msgstr "" +msgstr "Kanuri; Bilma" #. name for bmt msgid "Biao Mon" -msgstr "" +msgstr "Biao Mon" #. name for bmu msgid "Somba-Siawari" -msgstr "" +msgstr "Somba-Siawari" #. name for bmv msgid "Bum" -msgstr "" +msgstr "Bum" #. name for bmw msgid "Bomwali" -msgstr "" +msgstr "Bomwali" #. name for bmx msgid "Baimak" -msgstr "" +msgstr "Baimak" #. name for bmy msgid "Bemba (Democratic Republic of Congo)" -msgstr "" +msgstr "Bemba (Democratic Republic of Congo)" #. name for bmz msgid "Baramu" -msgstr "" +msgstr "Baramu" #. name for bna msgid "Bonerate" -msgstr "" +msgstr "Bonerate" #. name for bnb msgid "Bookan" -msgstr "" +msgstr "Bookan" #. name for bnc msgid "Bontok" -msgstr "" +msgstr "Bontok" #. name for bnd msgid "Banda (Indonesia)" -msgstr "" +msgstr "Banda (Indonesia)" #. name for bne msgid "Bintauna" -msgstr "" +msgstr "Bintauna" #. name for bnf msgid "Masiwang" -msgstr "" +msgstr "Masiwang" #. name for bng msgid "Benga" -msgstr "" +msgstr "Benga" #. name for bni msgid "Bangi" -msgstr "" +msgstr "Bangi" #. name for bnj msgid "Tawbuid; Eastern" -msgstr "" +msgstr "Tawbuid; Eastern" #. name for bnk msgid "Bierebo" -msgstr "" +msgstr "Bierebo" #. name for bnl msgid "Boon" -msgstr "" +msgstr "Boon" #. name for bnm msgid "Batanga" -msgstr "" +msgstr "Batanga" #. name for bnn msgid "Bunun" -msgstr "" +msgstr "Bunun" #. name for bno msgid "Bantoanon" -msgstr "" +msgstr "Bantoanon" #. name for bnp msgid "Bola" -msgstr "" +msgstr "Bola" #. name for bnq msgid "Bantik" -msgstr "" +msgstr "Bantik" #. name for bnr msgid "Butmas-Tur" -msgstr "" +msgstr "Butmas-Tur" #. name for bns msgid "Bundeli" -msgstr "" +msgstr "Bundeli" #. name for bnu msgid "Bentong" -msgstr "" +msgstr "Bentong" #. name for bnv msgid "Bonerif" -msgstr "" +msgstr "Bonerif" #. name for bnw msgid "Bisis" -msgstr "" +msgstr "Bisis" #. name for bnx msgid "Bangubangu" -msgstr "" +msgstr "Bangubangu" #. name for bny msgid "Bintulu" -msgstr "" +msgstr "Bintulu" #. name for bnz msgid "Beezen" -msgstr "" +msgstr "Beezen" #. name for boa msgid "Bora" -msgstr "" +msgstr "Bora" #. name for bob msgid "Aweer" -msgstr "" +msgstr "Aweer" #. name for bod msgid "Tibetan" -msgstr "" +msgstr "Tibetan" #. name for boe msgid "Mundabli" -msgstr "" +msgstr "Mundabli" #. name for bof msgid "Bolon" -msgstr "" +msgstr "Bolon" #. name for bog msgid "Bamako Sign Language" -msgstr "" +msgstr "Bamako Sign Language" #. name for boh msgid "Boma" -msgstr "" +msgstr "Boma" #. name for boi msgid "Barbareño" -msgstr "" +msgstr "Barbareño" #. name for boj msgid "Anjam" -msgstr "" +msgstr "Anjam" #. name for bok msgid "Bonjo" -msgstr "" +msgstr "Bonjo" #. name for bol msgid "Bole" -msgstr "" +msgstr "Bole" #. name for bom msgid "Berom" -msgstr "" +msgstr "Berom" #. name for bon msgid "Bine" -msgstr "" +msgstr "Bine" #. name for boo msgid "Bozo; Tiemacèwè" -msgstr "" +msgstr "Bozo; Tiemacèwè" #. name for bop msgid "Bonkiman" -msgstr "" +msgstr "Bonkiman" #. name for boq msgid "Bogaya" -msgstr "" +msgstr "Bogaya" #. name for bor msgid "Borôro" -msgstr "" +msgstr "Borôro" #. name for bos msgid "Bosnian" -msgstr "" +msgstr "Bosnian" #. name for bot msgid "Bongo" -msgstr "" +msgstr "Bongo" #. name for bou msgid "Bondei" -msgstr "" +msgstr "Bondei" #. name for bov msgid "Tuwuli" -msgstr "" +msgstr "Tuwuli" #. name for bow msgid "Rema" -msgstr "" +msgstr "Rema" #. name for box msgid "Buamu" -msgstr "" +msgstr "Buamu" #. name for boy msgid "Bodo (Central African Republic)" -msgstr "" +msgstr "Bodo (Central African Republic)" #. name for boz msgid "Bozo; Tiéyaxo" -msgstr "" +msgstr "Bozo; Tiéyaxo" #. name for bpa msgid "Dakaka" -msgstr "" +msgstr "Dakaka" #. name for bpb msgid "Barbacoas" -msgstr "" +msgstr "Barbacoas" #. name for bpd msgid "Banda-Banda" -msgstr "" +msgstr "Banda-Banda" #. name for bpg msgid "Bonggo" -msgstr "" +msgstr "Bonggo" #. name for bph msgid "Botlikh" -msgstr "" +msgstr "Botlikh" #. name for bpi msgid "Bagupi" -msgstr "" +msgstr "Bagupi" #. name for bpj msgid "Binji" -msgstr "" +msgstr "Binji" #. name for bpk msgid "Orowe" -msgstr "" +msgstr "Orowe" #. name for bpl msgid "Broome Pearling Lugger Pidgin" -msgstr "" +msgstr "Broome Pearling Lugger Pidgin" #. name for bpm msgid "Biyom" -msgstr "" +msgstr "Biyom" #. name for bpn msgid "Dzao Min" -msgstr "" +msgstr "Dzao Min" #. name for bpo msgid "Anasi" -msgstr "" +msgstr "Anasi" #. name for bpp msgid "Kaure" -msgstr "" +msgstr "Kaure" #. name for bpq msgid "Malay; Banda" -msgstr "" +msgstr "Malay; Banda" #. name for bpr msgid "Blaan; Koronadal" -msgstr "" +msgstr "Blaan; Koronadal" #. name for bps msgid "Blaan; Sarangani" -msgstr "" +msgstr "Blaan; Sarangani" #. name for bpt msgid "Barrow Point" -msgstr "" +msgstr "Barrow Point" #. name for bpu msgid "Bongu" -msgstr "" +msgstr "Bongu" #. name for bpv msgid "Marind; Bian" -msgstr "" +msgstr "Marind; Bian" #. name for bpw msgid "Bo (Papua New Guinea)" -msgstr "" +msgstr "Bo (Papua New Guinea)" #. name for bpx msgid "Bareli; Palya" -msgstr "" +msgstr "Bareli; Palya" #. name for bpy msgid "Bishnupriya" -msgstr "" +msgstr "Bishnupriya" #. name for bpz msgid "Bilba" -msgstr "" +msgstr "Bilba" #. name for bqa msgid "Tchumbuli" -msgstr "" +msgstr "Tchumbuli" #. name for bqb msgid "Bagusa" -msgstr "" +msgstr "Bagusa" #. name for bqc msgid "Boko (Benin)" -msgstr "" +msgstr "Boko (Benin)" #. name for bqd msgid "Bung" -msgstr "" +msgstr "Bung" #. name for bqf msgid "Baga Kaloum" -msgstr "" +msgstr "Baga Kaloum" #. name for bqg msgid "Bago-Kusuntu" -msgstr "" +msgstr "Bago-Kusuntu" #. name for bqh msgid "Baima" -msgstr "" +msgstr "Baima" #. name for bqi msgid "Bakhtiari" -msgstr "" +msgstr "Bakhtiari" #. name for bqj msgid "Bandial" -msgstr "" +msgstr "Bandial" #. name for bqk msgid "Banda-Mbrès" -msgstr "" +msgstr "Banda-Mbrès" #. name for bql msgid "Bilakura" -msgstr "" +msgstr "Bilakura" #. name for bqm msgid "Wumboko" -msgstr "" +msgstr "Wumboko" #. name for bqn msgid "Bulgarian Sign Language" -msgstr "" +msgstr "Bulgarian Sign Language" #. name for bqo msgid "Balo" -msgstr "" +msgstr "Balo" #. name for bqp msgid "Busa" -msgstr "" +msgstr "Busa" #. name for bqq msgid "Biritai" -msgstr "" +msgstr "Biritai" #. name for bqr msgid "Burusu" -msgstr "" +msgstr "Burusu" #. name for bqs msgid "Bosngun" -msgstr "" +msgstr "Bosngun" #. name for bqt msgid "Bamukumbit" -msgstr "" +msgstr "Bamukumbit" #. name for bqu msgid "Boguru" -msgstr "" +msgstr "Boguru" #. name for bqv msgid "Begbere-Ejar" -msgstr "" +msgstr "Begbere-Ejar" #. name for bqw msgid "Buru (Nigeria)" -msgstr "" +msgstr "Buru (Nigeria)" #. name for bqx msgid "Baangi" -msgstr "" +msgstr "Baangi" #. name for bqy msgid "Bengkala Sign Language" -msgstr "" +msgstr "Bengkala Sign Language" #. name for bqz msgid "Bakaka" -msgstr "" +msgstr "Bakaka" #. name for bra msgid "Braj" -msgstr "" +msgstr "Braj" #. name for brb msgid "Lave" -msgstr "" +msgstr "Lave" #. name for brc msgid "Creole Dutch; Berbice" -msgstr "" +msgstr "Creole Dutch; Berbice" #. name for brd msgid "Baraamu" -msgstr "" +msgstr "Baraamu" #. name for bre msgid "Breton" -msgstr "" +msgstr "Breton" #. name for brf msgid "Bera" -msgstr "" +msgstr "Bera" #. name for brg msgid "Baure" -msgstr "" +msgstr "Baure" #. name for brh msgid "Brahui" -msgstr "" +msgstr "Brahui" #. name for bri msgid "Mokpwe" -msgstr "" +msgstr "Mokpwe" #. name for brj msgid "Bieria" -msgstr "" +msgstr "Bieria" #. name for brk msgid "Birked" -msgstr "" +msgstr "Birked" #. name for brl msgid "Birwa" -msgstr "" +msgstr "Birwa" #. name for brm msgid "Barambu" -msgstr "" +msgstr "Barambu" #. name for brn msgid "Boruca" -msgstr "" +msgstr "Boruca" #. name for bro msgid "Brokkat" -msgstr "" +msgstr "Brokkat" #. name for brp msgid "Barapasi" -msgstr "" +msgstr "Barapasi" #. name for brq msgid "Breri" -msgstr "" +msgstr "Breri" #. name for brr msgid "Birao" -msgstr "" +msgstr "Birao" #. name for brs msgid "Baras" -msgstr "" +msgstr "Baras" #. name for brt msgid "Bitare" -msgstr "" +msgstr "Bitare" #. name for bru msgid "Bru; Eastern" -msgstr "" +msgstr "Bru; Eastern" #. name for brv msgid "Bru; Western" -msgstr "" +msgstr "Bru; Western" #. name for brw msgid "Bellari" -msgstr "" +msgstr "Bellari" #. name for brx msgid "Bodo (India)" -msgstr "" +msgstr "Bodo (India)" #. name for bry msgid "Burui" -msgstr "" +msgstr "Burui" #. name for brz msgid "Bilbil" -msgstr "" +msgstr "Bilbil" #. name for bsa msgid "Abinomn" -msgstr "" +msgstr "Abinomn" #. name for bsb msgid "Bisaya; Brunei" -msgstr "" +msgstr "Bisaya; Brunei" #. name for bsc msgid "Bassari" -msgstr "" +msgstr "Bassari" #. name for bse msgid "Wushi" -msgstr "" +msgstr "Wushi" #. name for bsf msgid "Bauchi" -msgstr "" +msgstr "Bauchi" #. name for bsg msgid "Bashkardi" -msgstr "" +msgstr "Bashkardi" #. name for bsh msgid "Kati" -msgstr "" +msgstr "Kati" #. name for bsi msgid "Bassossi" -msgstr "" +msgstr "Bassossi" #. name for bsj msgid "Bangwinji" -msgstr "" +msgstr "Bangwinji" #. name for bsk msgid "Burushaski" -msgstr "" +msgstr "Burushaski" #. name for bsl msgid "Basa-Gumna" -msgstr "" +msgstr "Basa-Gumna" #. name for bsm msgid "Busami" -msgstr "" +msgstr "Busami" #. name for bsn msgid "Barasana-Eduria" -msgstr "" +msgstr "Barasana-Eduria" #. name for bso msgid "Buso" -msgstr "" +msgstr "Buso" #. name for bsp msgid "Baga Sitemu" -msgstr "" +msgstr "Baga Sitemu" #. name for bsq msgid "Bassa" -msgstr "" +msgstr "Bassa" #. name for bsr msgid "Bassa-Kontagora" -msgstr "" +msgstr "Bassa-Kontagora" #. name for bss msgid "Akoose" -msgstr "" +msgstr "Akoose" #. name for bst msgid "Basketo" -msgstr "" +msgstr "Basketo" #. name for bsu msgid "Bahonsuai" -msgstr "" +msgstr "Bahonsuai" #. name for bsv msgid "Baga Sobané" -msgstr "" +msgstr "Baga Sobané" #. name for bsw msgid "Baiso" -msgstr "" +msgstr "Baiso" #. name for bsx msgid "Yangkam" -msgstr "" +msgstr "Yangkam" #. name for bsy msgid "Bisaya; Sabah" -msgstr "" +msgstr "Bisaya; Sabah" #. name for bta msgid "Bata" -msgstr "" +msgstr "Bata" #. name for btc msgid "Bati (Cameroon)" -msgstr "" +msgstr "Bati (Cameroon)" #. name for btd msgid "Batak Dairi" -msgstr "" +msgstr "Batak Dairi" #. name for bte msgid "Gamo-Ningi" -msgstr "" +msgstr "Gamo-Ningi" #. name for btf msgid "Birgit" -msgstr "" +msgstr "Birgit" #. name for btg msgid "Bété; Gagnoa" -msgstr "" +msgstr "Bété; Gagnoa" #. name for bth msgid "Bidayuh; Biatah" -msgstr "" +msgstr "Bidayuh; Biatah" #. name for bti msgid "Burate" -msgstr "" +msgstr "Burate" #. name for btj msgid "Malay; Bacanese" -msgstr "" +msgstr "Malay; Bacanese" #. name for btl msgid "Bhatola" -msgstr "" +msgstr "Bhatola" #. name for btm msgid "Batak Mandailing" -msgstr "" +msgstr "Batak Mandailing" #. name for btn msgid "Ratagnon" -msgstr "" +msgstr "Ratagnon" #. name for bto msgid "Bikol; Rinconada" -msgstr "" +msgstr "Bikol; Rinconada" #. name for btp msgid "Budibud" -msgstr "" +msgstr "Budibud" #. name for btq msgid "Batek" -msgstr "" +msgstr "Batek" #. name for btr msgid "Baetora" -msgstr "" +msgstr "Baetora" #. name for bts msgid "Batak Simalungun" -msgstr "" +msgstr "Batak Simalungun" #. name for btt msgid "Bete-Bendi" -msgstr "" +msgstr "Bete-Bendi" #. name for btu msgid "Batu" -msgstr "" +msgstr "Batu" #. name for btv msgid "Bateri" -msgstr "" +msgstr "Bateri" #. name for btw msgid "Butuanon" -msgstr "" +msgstr "Butuanon" #. name for btx msgid "Batak Karo" -msgstr "" +msgstr "Batak Karo" #. name for bty msgid "Bobot" -msgstr "" +msgstr "Bobot" #. name for btz msgid "Batak Alas-Kluet" -msgstr "" +msgstr "Batak Alas-Kluet" #. name for bua msgid "Buriat" -msgstr "" +msgstr "Buriat" #. name for bub msgid "Bua" -msgstr "" +msgstr "Bua" #. name for buc msgid "Bushi" -msgstr "" +msgstr "Bushi" #. name for bud msgid "Ntcham" -msgstr "" +msgstr "Ntcham" #. name for bue msgid "Beothuk" -msgstr "" +msgstr "Beothuk" #. name for buf msgid "Bushoong" -msgstr "" +msgstr "Bushoong" #. name for bug msgid "Buginese" -msgstr "" +msgstr "Buginese" #. name for buh msgid "Bunu; Younuo" -msgstr "" +msgstr "Bunu; Younuo" #. name for bui msgid "Bongili" -msgstr "" +msgstr "Bongili" #. name for buj msgid "Basa-Gurmana" -msgstr "" +msgstr "Basa-Gurmana" #. name for buk msgid "Bugawac" -msgstr "" +msgstr "Bugawac" #. name for bul msgid "Bulgarian" -msgstr "" +msgstr "Bulgarian" #. name for bum msgid "Bulu (Cameroon)" -msgstr "" +msgstr "Bulu (Cameroon)" #. name for bun msgid "Sherbro" -msgstr "" +msgstr "Sherbro" #. name for buo msgid "Terei" -msgstr "" +msgstr "Terei" #. name for bup msgid "Busoa" -msgstr "" +msgstr "Busoa" #. name for buq msgid "Brem" -msgstr "" +msgstr "Brem" #. name for bus msgid "Bokobaru" -msgstr "" +msgstr "Bokobaru" #. name for but msgid "Bungain" -msgstr "" +msgstr "Bungain" #. name for buu msgid "Budu" -msgstr "" +msgstr "Budu" #. name for buv msgid "Bun" -msgstr "" +msgstr "Bun" #. name for buw msgid "Bubi" -msgstr "" +msgstr "Bubi" #. name for bux msgid "Boghom" -msgstr "" +msgstr "Boghom" #. name for buy msgid "Bullom So" -msgstr "" +msgstr "Bullom So" #. name for buz msgid "Bukwen" -msgstr "" +msgstr "Bukwen" #. name for bva msgid "Barein" -msgstr "" +msgstr "Barein" #. name for bvb msgid "Bube" -msgstr "" +msgstr "Bube" #. name for bvc msgid "Baelelea" -msgstr "" +msgstr "Baelelea" #. name for bvd msgid "Baeggu" -msgstr "" +msgstr "Baeggu" #. name for bve msgid "Malay; Berau" -msgstr "" +msgstr "Malay; Berau" #. name for bvf msgid "Boor" -msgstr "" +msgstr "Boor" #. name for bvg msgid "Bonkeng" -msgstr "" +msgstr "Bonkeng" #. name for bvh msgid "Bure" -msgstr "" +msgstr "Bure" #. name for bvi msgid "Belanda Viri" -msgstr "" +msgstr "Belanda Viri" #. name for bvj msgid "Baan" -msgstr "" +msgstr "Baan" #. name for bvk msgid "Bukat" -msgstr "" +msgstr "Bukat" #. name for bvl msgid "Bolivian Sign Language" -msgstr "" +msgstr "Bolivian Sign Language" #. name for bvm msgid "Bamunka" -msgstr "" +msgstr "Bamunka" #. name for bvn msgid "Buna" -msgstr "" +msgstr "Buna" #. name for bvo msgid "Bolgo" -msgstr "" +msgstr "Bolgo" #. name for bvq msgid "Birri" -msgstr "" +msgstr "Birri" #. name for bvr msgid "Burarra" -msgstr "" +msgstr "Burarra" #. name for bvt msgid "Bati (Indonesia)" -msgstr "" +msgstr "Bati (Indonesia)" #. name for bvu msgid "Malay; Bukit" -msgstr "" +msgstr "Malay; Bukit" #. name for bvv msgid "Baniva" -msgstr "" +msgstr "Baniva" #. name for bvw msgid "Boga" -msgstr "" +msgstr "Boga" #. name for bvx msgid "Dibole" -msgstr "" +msgstr "Dibole" #. name for bvy msgid "Baybayanon" -msgstr "" +msgstr "Baybayanon" #. name for bvz msgid "Bauzi" -msgstr "" +msgstr "Bauzi" #. name for bwa msgid "Bwatoo" -msgstr "" +msgstr "Bwatoo" #. name for bwb msgid "Namosi-Naitasiri-Serua" -msgstr "" +msgstr "Namosi-Naitasiri-Serua" #. name for bwc msgid "Bwile" -msgstr "" +msgstr "Bwile" #. name for bwd msgid "Bwaidoka" -msgstr "" +msgstr "Bwaidoka" #. name for bwe msgid "Karen; Bwe" -msgstr "" +msgstr "Karen; Bwe" #. name for bwf msgid "Boselewa" -msgstr "" +msgstr "Boselewa" #. name for bwg msgid "Barwe" -msgstr "" +msgstr "Barwe" #. name for bwh msgid "Bishuo" -msgstr "" +msgstr "Bishuo" #. name for bwi msgid "Baniwa" -msgstr "" +msgstr "Baniwa" #. name for bwj msgid "Bwamu; Láá Láá" -msgstr "" +msgstr "Bwamu; Láá Láá" #. name for bwk msgid "Bauwaki" -msgstr "" +msgstr "Bauwaki" #. name for bwl msgid "Bwela" -msgstr "" +msgstr "Bwela" #. name for bwm msgid "Biwat" -msgstr "" +msgstr "Biwat" #. name for bwn msgid "Bunu; Wunai" -msgstr "" +msgstr "Bunu; Wunai" #. name for bwo msgid "Boro (Ethiopia)" -msgstr "" +msgstr "Boro (Ethiopia)" #. name for bwp msgid "Mandobo Bawah" -msgstr "" +msgstr "Mandobo Bawah" #. name for bwq msgid "Bobo Madaré; Southern" -msgstr "" +msgstr "Bobo Madaré; Southern" #. name for bwr msgid "Bura-Pabir" -msgstr "" +msgstr "Bura-Pabir" #. name for bws msgid "Bomboma" -msgstr "" +msgstr "Bomboma" #. name for bwt msgid "Bafaw-Balong" -msgstr "" +msgstr "Bafaw-Balong" #. name for bwu msgid "Buli (Ghana)" -msgstr "" +msgstr "Buli (Ghana)" #. name for bww msgid "Bwa" -msgstr "" +msgstr "Bwa" #. name for bwx msgid "Bunu; Bu-Nao" -msgstr "" +msgstr "Bunu; Bu-Nao" #. name for bwy msgid "Bwamu; Cwi" -msgstr "" +msgstr "Bwamu; Cwi" #. name for bwz msgid "Bwisi" -msgstr "" +msgstr "Bwisi" #. name for bxa msgid "Bauro" -msgstr "" +msgstr "Bauro" #. name for bxb msgid "Bor; Belanda" -msgstr "" +msgstr "Bor; Belanda" #. name for bxc msgid "Molengue" -msgstr "" +msgstr "Molengue" #. name for bxd msgid "Pela" -msgstr "" +msgstr "Pela" #. name for bxe msgid "Birale" -msgstr "" +msgstr "Birale" #. name for bxf msgid "Bilur" -msgstr "" +msgstr "Bilur" #. name for bxg msgid "Bangala" -msgstr "" +msgstr "Bangala" #. name for bxh msgid "Buhutu" -msgstr "" +msgstr "Buhutu" #. name for bxi msgid "Pirlatapa" -msgstr "" +msgstr "Pirlatapa" #. name for bxj msgid "Bayungu" -msgstr "" +msgstr "Bayungu" #. name for bxk msgid "Bukusu" -msgstr "" +msgstr "Bukusu" #. name for bxl msgid "Jalkunan" -msgstr "" +msgstr "Jalkunan" #. name for bxm msgid "Buriat; Mongolia" -msgstr "" +msgstr "Buriat; Mongolia" #. name for bxn msgid "Burduna" -msgstr "" +msgstr "Burduna" #. name for bxo msgid "Barikanchi" -msgstr "" +msgstr "Barikanchi" #. name for bxp msgid "Bebil" -msgstr "" +msgstr "Bebil" #. name for bxq msgid "Beele" -msgstr "" +msgstr "Beele" #. name for bxr msgid "Buriat; Russia" -msgstr "" +msgstr "Buriat; Russia" #. name for bxs msgid "Busam" -msgstr "" +msgstr "Busam" #. name for bxu msgid "Buriat; China" -msgstr "" +msgstr "Buriat; China" #. name for bxv msgid "Berakou" -msgstr "" +msgstr "Berakou" #. name for bxw msgid "Bankagooma" -msgstr "" +msgstr "Bankagooma" #. name for bxx msgid "Borna (Democratic Republic of Congo)" -msgstr "" +msgstr "Borna (Democratic Republic of Congo)" #. name for bxz msgid "Binahari" -msgstr "" +msgstr "Binahari" #. name for bya msgid "Batak" -msgstr "" +msgstr "Batak" #. name for byb msgid "Bikya" -msgstr "" +msgstr "Bikya" #. name for byc msgid "Ubaghara" -msgstr "" +msgstr "Ubaghara" #. name for byd msgid "Benyadu'" -msgstr "" +msgstr "Benyadu'" #. name for bye msgid "Pouye" -msgstr "" +msgstr "Pouye" #. name for byf msgid "Bete" -msgstr "" +msgstr "Bete" #. name for byg msgid "Baygo" -msgstr "" +msgstr "Baygo" #. name for byh msgid "Bhujel" -msgstr "" +msgstr "Bhujel" #. name for byi msgid "Buyu" -msgstr "" +msgstr "Buyu" #. name for byj msgid "Bina (Nigeria)" -msgstr "" +msgstr "Bina (Nigeria)" #. name for byk msgid "Biao" -msgstr "" +msgstr "Biao" #. name for byl msgid "Bayono" -msgstr "" +msgstr "Bayono" #. name for bym msgid "Bidyara" -msgstr "" +msgstr "Bidyara" #. name for byn msgid "Bilin" -msgstr "" +msgstr "Bilin" #. name for byo msgid "Biyo" -msgstr "" +msgstr "Biyo" #. name for byp msgid "Bumaji" -msgstr "" +msgstr "Bumaji" #. name for byq msgid "Basay" -msgstr "" +msgstr "Basay" #. name for byr msgid "Baruya" -msgstr "" +msgstr "Baruya" #. name for bys msgid "Burak" -msgstr "" +msgstr "Burak" #. name for byt msgid "Berti" -msgstr "" +msgstr "Berti" #. name for byv msgid "Medumba" -msgstr "" +msgstr "Medumba" #. name for byw msgid "Belhariya" -msgstr "" +msgstr "Belhariya" #. name for byx msgid "Qaqet" -msgstr "" +msgstr "Qaqet" #. name for byy msgid "Buya" -msgstr "" +msgstr "Buya" #. name for byz msgid "Banaro" -msgstr "" +msgstr "Banaro" #. name for bza msgid "Bandi" -msgstr "" +msgstr "Bandi" #. name for bzb msgid "Andio" -msgstr "" +msgstr "Andio" #. name for bzc msgid "Malagasy; Southern Betsimisaraka" -msgstr "" +msgstr "Malagasy; Southern Betsimisaraka" #. name for bzd msgid "Bribri" -msgstr "" +msgstr "Bribri" #. name for bze msgid "Bozo; Jenaama" -msgstr "" +msgstr "Bozo; Jenaama" #. name for bzf msgid "Boikin" -msgstr "" +msgstr "Boikin" #. name for bzg msgid "Babuza" -msgstr "" +msgstr "Babuza" #. name for bzh msgid "Buang; Mapos" -msgstr "" +msgstr "Buang; Mapos" #. name for bzi msgid "Bisu" -msgstr "" +msgstr "Bisu" #. name for bzj msgid "Kriol English; Belize" -msgstr "" +msgstr "Kriol English; Belize" #. name for bzk msgid "Creole English; Nicaragua" -msgstr "" +msgstr "Creole English; Nicaragua" #. name for bzl msgid "Boano (Sulawesi)" -msgstr "" +msgstr "Boano (Sulawesi)" #. name for bzm msgid "Bolondo" -msgstr "" +msgstr "Bolondo" #. name for bzn msgid "Boano (Maluku)" -msgstr "" +msgstr "Boano (Maluku)" #. name for bzo msgid "Bozaba" -msgstr "" +msgstr "Bozaba" #. name for bzp msgid "Kemberano" -msgstr "" +msgstr "Kemberano" #. name for bzq msgid "Buli (Indonesia)" -msgstr "" +msgstr "Buli (Indonesia)" #. name for bzr msgid "Biri" -msgstr "" +msgstr "Biri" #. name for bzs msgid "Brazilian Sign Language" -msgstr "" +msgstr "Brazilian Sign Language" #. name for bzt msgid "Brithenig" -msgstr "" +msgstr "Brithenig" #. name for bzu msgid "Burmeso" -msgstr "" +msgstr "Burmeso" #. name for bzv msgid "Bebe" -msgstr "" +msgstr "Bebe" #. name for bzw msgid "Basa (Nigeria)" -msgstr "" +msgstr "Basa (Nigeria)" #. name for bzx msgid "Bozo; Kɛlɛngaxo" -msgstr "" +msgstr "Bozo; Kɛlɛngaxo" #. name for bzy msgid "Obanliku" -msgstr "" +msgstr "Obanliku" #. name for bzz msgid "Evant" -msgstr "" +msgstr "Evant" #. name for caa msgid "Chortí" -msgstr "" +msgstr "Chortí" #. name for cab msgid "Garifuna" -msgstr "" +msgstr "Garifuna" #. name for cac msgid "Chuj" -msgstr "" +msgstr "Chuj" #. name for cad msgid "Caddo" -msgstr "" +msgstr "Caddo" #. name for cae msgid "Lehar" -msgstr "" +msgstr "Lehar" #. name for caf msgid "Carrier; Southern" -msgstr "" +msgstr "Carrier; Southern" #. name for cag msgid "Nivaclé" -msgstr "" +msgstr "Nivaclé" #. name for cah msgid "Cahuarano" -msgstr "" +msgstr "Cahuarano" #. name for caj msgid "Chané" -msgstr "" +msgstr "Chané" #. name for cak msgid "Kaqchikel" -msgstr "" +msgstr "Kaqchikel" #. name for cal msgid "Carolinian" -msgstr "" +msgstr "Carolinian" #. name for cam msgid "Cemuhî" -msgstr "" +msgstr "Cemuhî" #. name for can msgid "Chambri" -msgstr "" +msgstr "Chambri" #. name for cao msgid "Chácobo" -msgstr "" +msgstr "Chácobo" #. name for cap msgid "Chipaya" -msgstr "" +msgstr "Chipaya" #. name for caq msgid "Nicobarese; Car" -msgstr "" +msgstr "Nicobarese; Car" #. name for car msgid "Carib; Galibi" -msgstr "" +msgstr "Carib; Galibi" #. name for cas msgid "Tsimané" -msgstr "" +msgstr "Tsimané" #. name for cat msgid "Catalan" -msgstr "" +msgstr "Catalan" #. name for cav msgid "Cavineña" -msgstr "" +msgstr "Cavineña" #. name for caw msgid "Callawalla" -msgstr "" +msgstr "Callawalla" #. name for cax msgid "Chiquitano" -msgstr "" +msgstr "Chiquitano" #. name for cay msgid "Cayuga" -msgstr "" +msgstr "Cayuga" #. name for caz msgid "Canichana" -msgstr "" +msgstr "Canichana" #. name for cbb msgid "Cabiyarí" -msgstr "" +msgstr "Cabiyarí" #. name for cbc msgid "Carapana" -msgstr "" +msgstr "Carapana" #. name for cbd msgid "Carijona" -msgstr "" +msgstr "Carijona" #. name for cbe msgid "Chipiajes" -msgstr "" +msgstr "Chipiajes" #. name for cbg msgid "Chimila" -msgstr "" +msgstr "Chimila" #. name for cbh msgid "Cagua" -msgstr "" +msgstr "Cagua" #. name for cbi msgid "Chachi" -msgstr "" +msgstr "Chachi" #. name for cbj msgid "Ede Cabe" -msgstr "" +msgstr "Ede Cabe" #. name for cbk msgid "Chavacano" -msgstr "" +msgstr "Chavacano" #. name for cbl msgid "Chin; Bualkhaw" -msgstr "" +msgstr "Chin; Bualkhaw" #. name for cbn msgid "Nyahkur" -msgstr "" +msgstr "Nyahkur" #. name for cbo msgid "Izora" -msgstr "" +msgstr "Izora" #. name for cbr msgid "Cashibo-Cacataibo" -msgstr "" +msgstr "Cashibo-Cacataibo" #. name for cbs msgid "Cashinahua" -msgstr "" +msgstr "Cashinahua" #. name for cbt msgid "Chayahuita" -msgstr "" +msgstr "Chayahuita" #. name for cbu msgid "Candoshi-Shapra" -msgstr "" +msgstr "Candoshi-Shapra" #. name for cbv msgid "Cacua" -msgstr "" +msgstr "Cacua" #. name for cbw msgid "Kinabalian" -msgstr "" +msgstr "Kinabalian" #. name for cby msgid "Carabayo" -msgstr "" +msgstr "Carabayo" #. name for cca msgid "Cauca" -msgstr "" +msgstr "Cauca" #. name for ccc msgid "Chamicuro" -msgstr "" +msgstr "Chamicuro" #. name for ccd msgid "Creole; Cafundo" -msgstr "" +msgstr "Creole; Cafundo" #. name for cce msgid "Chopi" -msgstr "" +msgstr "Chopi" #. name for ccg msgid "Daka; Samba" -msgstr "" +msgstr "Daka; Samba" #. name for cch msgid "Atsam" -msgstr "" +msgstr "Atsam" #. name for ccj msgid "Kasanga" -msgstr "" +msgstr "Kasanga" #. name for ccl msgid "Cutchi-Swahili" -msgstr "" +msgstr "Cutchi-Swahili" #. name for ccm msgid "Creole Malay; Malaccan" -msgstr "" +msgstr "Creole Malay; Malaccan" #. name for cco msgid "Chinantec; Comaltepec" -msgstr "" +msgstr "Chinantec; Comaltepec" #. name for ccp msgid "Chakma" -msgstr "" +msgstr "Chakma" #. name for ccq msgid "Chaungtha" -msgstr "" +msgstr "Chaungtha" #. name for ccr msgid "Cacaopera" -msgstr "" +msgstr "Cacaopera" #. name for cda msgid "Choni" -msgstr "" +msgstr "Choni" #. name for cde msgid "Chenchu" -msgstr "" +msgstr "Chenchu" #. name for cdf msgid "Chiru" -msgstr "" +msgstr "Chiru" #. name for cdg msgid "Chamari" -msgstr "" +msgstr "Chamari" #. name for cdh msgid "Chambeali" -msgstr "" +msgstr "Chambeali" #. name for cdi msgid "Chodri" -msgstr "" +msgstr "Chodri" #. name for cdj msgid "Churahi" -msgstr "" +msgstr "Churahi" #. name for cdm msgid "Chepang" -msgstr "" +msgstr "Chepang" #. name for cdn msgid "Chaudangsi" -msgstr "" +msgstr "Chaudangsi" #. name for cdo msgid "Chinese; Min Dong" -msgstr "" +msgstr "Chinese; Min Dong" #. name for cdr msgid "Cinda-Regi-Tiyal" -msgstr "" +msgstr "Cinda-Regi-Tiyal" #. name for cds msgid "Chadian Sign Language" -msgstr "" +msgstr "Chadian Sign Language" #. name for cdy msgid "Chadong" -msgstr "" +msgstr "Chadong" #. name for cdz msgid "Koda" -msgstr "" +msgstr "Koda" #. name for cea msgid "Chehalis; Lower" -msgstr "" +msgstr "Chehalis; Lower" #. name for ceb msgid "Cebuano" -msgstr "" +msgstr "Cebuano" #. name for ceg msgid "Chamacoco" -msgstr "" +msgstr "Chamacoco" #. name for cen msgid "Cen" -msgstr "" +msgstr "Cen" #. name for ces msgid "Czech" -msgstr "" +msgstr "Czech" #. name for cet msgid "Centúúm" -msgstr "" +msgstr "Centúúm" #. name for cfa msgid "Dijim-Bwilim" -msgstr "" +msgstr "Dijim-Bwilim" #. name for cfd msgid "Cara" -msgstr "" +msgstr "Cara" #. name for cfg msgid "Como Karim" -msgstr "" +msgstr "Como Karim" #. name for cfm msgid "Chin; Falam" -msgstr "" +msgstr "Chin; Falam" #. name for cga msgid "Changriwa" -msgstr "" +msgstr "Changriwa" #. name for cgc msgid "Kagayanen" -msgstr "" +msgstr "Kagayanen" #. name for cgg msgid "Chiga" -msgstr "" +msgstr "Chiga" #. name for cgk msgid "Chocangacakha" -msgstr "" +msgstr "Chocangacakha" #. name for cha msgid "Chamorro" -msgstr "" +msgstr "Chamorro" #. name for chb msgid "Chibcha" -msgstr "" +msgstr "Chibcha" #. name for chc msgid "Catawba" -msgstr "" +msgstr "Catawba" #. name for chd msgid "Chontal; Highland Oaxaca" -msgstr "" +msgstr "Chontal; Highland Oaxaca" #. name for che msgid "Chechen" -msgstr "" +msgstr "Chechen" #. name for chf msgid "Chontal; Tabasco" -msgstr "" +msgstr "Chontal; Tabasco" #. name for chg msgid "Chagatai" -msgstr "" +msgstr "Chagatai" #. name for chh msgid "Chinook" -msgstr "" +msgstr "Chinook" #. name for chj msgid "Chinantec; Ojitlán" -msgstr "" +msgstr "Chinantec; Ojitlán" #. name for chk msgid "Chuukese" -msgstr "" +msgstr "Chuukese" #. name for chl msgid "Cahuilla" -msgstr "" +msgstr "Cahuilla" #. name for chm msgid "Mari (Russia)" -msgstr "" +msgstr "Mari (Russia)" #. name for chn msgid "Chinook jargon" -msgstr "" +msgstr "Chinook jargon" #. name for cho msgid "Choctaw" -msgstr "" +msgstr "Choctaw" #. name for chp msgid "Chipewyan" -msgstr "" +msgstr "Chipewyan" #. name for chq msgid "Chinantec; Quiotepec" -msgstr "" +msgstr "Chinantec; Quiotepec" #. name for chr msgid "Cherokee" -msgstr "" +msgstr "Cherokee" #. name for cht msgid "Cholón" -msgstr "" +msgstr "Cholón" #. name for chu msgid "Slavonic; Old" -msgstr "" +msgstr "Slavonic; Old" #. name for chv msgid "Chuvash" -msgstr "" +msgstr "Chuvash" #. name for chw msgid "Chuwabu" -msgstr "" +msgstr "Chuwabu" #. name for chx msgid "Chantyal" -msgstr "" +msgstr "Chantyal" #. name for chy msgid "Cheyenne" -msgstr "" +msgstr "Cheyenne" #. name for chz msgid "Chinantec; Ozumacín" -msgstr "" +msgstr "Chinantec; Ozumacín" #. name for cia msgid "Cia-Cia" -msgstr "" +msgstr "Cia-Cia" #. name for cib msgid "Gbe; Ci" -msgstr "" +msgstr "Gbe; Ci" #. name for cic msgid "Chickasaw" -msgstr "" +msgstr "Chickasaw" #. name for cid msgid "Chimariko" -msgstr "" +msgstr "Chimariko" #. name for cie msgid "Cineni" -msgstr "" +msgstr "Cineni" #. name for cih msgid "Chinali" -msgstr "" +msgstr "Chinali" #. name for cik msgid "Kinnauri; Chitkuli" -msgstr "" +msgstr "Kinnauri; Chitkuli" #. name for cim msgid "Cimbrian" -msgstr "" +msgstr "Cimbrian" #. name for cin msgid "Cinta Larga" -msgstr "" +msgstr "Cinta Larga" #. name for cip msgid "Chiapanec" -msgstr "" +msgstr "Chiapanec" #. name for cir msgid "Tiri" -msgstr "" +msgstr "Tiri" #. name for ciw msgid "Chippewa" -msgstr "" +msgstr "Chippewa" #. name for ciy msgid "Chaima" -msgstr "" +msgstr "Chaima" #. name for cja msgid "Cham; Western" -msgstr "" +msgstr "Cham; Western" #. name for cje msgid "Chru" -msgstr "" +msgstr "Chru" #. name for cjh msgid "Chehalis; Upper" -msgstr "" +msgstr "Chehalis; Upper" #. name for cji msgid "Chamalal" -msgstr "" +msgstr "Chamalal" #. name for cjk msgid "Chokwe" -msgstr "" +msgstr "Chokwe" #. name for cjm msgid "Cham; Eastern" -msgstr "" +msgstr "Cham; Eastern" #. name for cjn msgid "Chenapian" -msgstr "" +msgstr "Chenapian" #. name for cjo msgid "Ashéninka Pajonal" -msgstr "" +msgstr "Ashéninka Pajonal" #. name for cjp msgid "Cabécar" -msgstr "" +msgstr "Cabécar" #. name for cjs msgid "Shor" -msgstr "" +msgstr "Shor" #. name for cjv msgid "Chuave" -msgstr "" +msgstr "Chuave" #. name for cjy msgid "Chinese; Jinyu" -msgstr "" +msgstr "Chinese; Jinyu" #. name for cka msgid "Chin; Khumi Awa" -msgstr "" +msgstr "Chin; Khumi Awa" #. name for ckb msgid "Kurdish; Central" -msgstr "" +msgstr "Kurdish; Central" #. name for ckh msgid "Chak" -msgstr "" +msgstr "Chak" #. name for ckl msgid "Cibak" -msgstr "" +msgstr "Cibak" #. name for cko msgid "Anufo" -msgstr "" +msgstr "Anufo" #. name for ckq msgid "Kajakse" -msgstr "" +msgstr "Kajakse" #. name for ckr msgid "Kairak" -msgstr "" +msgstr "Kairak" #. name for cks msgid "Tayo" -msgstr "" +msgstr "Tayo" #. name for ckt msgid "Chukot" -msgstr "" +msgstr "Chukot" #. name for cku msgid "Koasati" -msgstr "" +msgstr "Koasati" #. name for ckv msgid "Kavalan" -msgstr "" +msgstr "Kavalan" #. name for ckx msgid "Caka" -msgstr "" +msgstr "Caka" #. name for cky msgid "Cakfem-Mushere" -msgstr "" +msgstr "Cakfem-Mushere" #. name for ckz msgid "Cakchiquel-Quiché Mixed Language" -msgstr "" +msgstr "Cakchiquel-Quiché Mixed Language" #. name for cla msgid "Ron" -msgstr "" +msgstr "Ron" #. name for clc msgid "Chilcotin" -msgstr "" +msgstr "Chilcotin" #. name for cld msgid "Neo-Aramaic; Chaldean" -msgstr "" +msgstr "Neo-Aramaic; Chaldean" #. name for cle msgid "Chinantec; Lealao" -msgstr "" +msgstr "Chinantec; Lealao" #. name for clh msgid "Chilisso" -msgstr "" +msgstr "Chilisso" #. name for cli msgid "Chakali" -msgstr "" +msgstr "Chakali" #. name for clk msgid "Idu-Mishmi" -msgstr "" +msgstr "Idu-Mishmi" #. name for cll msgid "Chala" -msgstr "" +msgstr "Chala" #. name for clm msgid "Clallam" -msgstr "" +msgstr "Clallam" #. name for clo msgid "Chontal; Lowland Oaxaca" -msgstr "" +msgstr "Chontal; Lowland Oaxaca" #. name for clu msgid "Caluyanun" -msgstr "" +msgstr "Caluyanun" #. name for clw msgid "Chulym" -msgstr "" +msgstr "Chulym" #. name for cly msgid "Chatino; Eastern Highland" -msgstr "" +msgstr "Chatino; Eastern Highland" #. name for cma msgid "Maa" -msgstr "" +msgstr "Maa" #. name for cme msgid "Cerma" -msgstr "" +msgstr "Cerma" #. name for cmg msgid "Mongolian; Classical" -msgstr "" +msgstr "Mongolian; Classical" #. name for cmi msgid "Emberá-Chamí" -msgstr "" +msgstr "Emberá-Chamí" #. name for cml msgid "Campalagian" -msgstr "" +msgstr "Campalagian" #. name for cmm msgid "Michigamea" -msgstr "" +msgstr "Michigamea" #. name for cmn msgid "Chinese; Mandarin" -msgstr "" +msgstr "Chinese; Mandarin" #. name for cmo msgid "Mnong; Central" -msgstr "" +msgstr "Mnong; Central" #. name for cmr msgid "Chin; Mro" -msgstr "" +msgstr "Chin; Mro" #. name for cms msgid "Messapic" -msgstr "" +msgstr "Messapic" #. name for cmt msgid "Camtho" -msgstr "" +msgstr "Camtho" #. name for cna msgid "Changthang" -msgstr "" +msgstr "Changthang" #. name for cnb msgid "Chin; Chinbon" -msgstr "" +msgstr "Chin; Chinbon" #. name for cnc msgid "Côông" -msgstr "" +msgstr "Côông" #. name for cng msgid "Qiang; Northern" -msgstr "" +msgstr "Qiang; Northern" #. name for cnh msgid "Chin; Haka" -msgstr "" +msgstr "Chin; Haka" #. name for cni msgid "Asháninka" -msgstr "" +msgstr "Asháninka" #. name for cnk msgid "Chin; Khumi" -msgstr "" +msgstr "Chin; Khumi" #. name for cnl msgid "Chinantec; Lalana" -msgstr "" +msgstr "Chinantec; Lalana" #. name for cno msgid "Con" -msgstr "" +msgstr "Con" #. name for cns msgid "Asmat; Central" -msgstr "" +msgstr "Asmat; Central" #. name for cnt msgid "Chinantec; Tepetotutla" -msgstr "" +msgstr "Chinantec; Tepetotutla" #. name for cnu msgid "Chenoua" -msgstr "" +msgstr "Chenoua" #. name for cnw msgid "Chin; Ngawn" -msgstr "" +msgstr "Chin; Ngawn" #. name for cnx msgid "Cornish; Middle" -msgstr "" +msgstr "Cornish; Middle" #. name for coa msgid "Malay; Cocos Islands" -msgstr "" +msgstr "Malay; Cocos Islands" #. name for cob msgid "Chicomuceltec" -msgstr "" +msgstr "Chicomuceltec" #. name for coc msgid "Cocopa" -msgstr "" +msgstr "Cocopa" #. name for cod msgid "Cocama-Cocamilla" -msgstr "" +msgstr "Cocama-Cocamilla" #. name for coe msgid "Koreguaje" -msgstr "" +msgstr "Koreguaje" #. name for cof msgid "Colorado" -msgstr "" +msgstr "Colorado" #. name for cog msgid "Chong" -msgstr "" +msgstr "Chong" #. name for coh msgid "Chonyi-Dzihana-Kauma" -msgstr "" +msgstr "Chonyi-Dzihana-Kauma" #. name for coj msgid "Cochimi" -msgstr "" +msgstr "Cochimi" #. name for cok msgid "Cora; Santa Teresa" -msgstr "" +msgstr "Cora; Santa Teresa" #. name for col msgid "Columbia-Wenatchi" -msgstr "" +msgstr "Columbia-Wenatchi" #. name for com msgid "Comanche" -msgstr "" +msgstr "Comanche" #. name for con msgid "Cofán" -msgstr "" +msgstr "Cofán" #. name for coo msgid "Comox" -msgstr "" +msgstr "Comox" #. name for cop msgid "Coptic" -msgstr "" +msgstr "Coptic" #. name for coq msgid "Coquille" -msgstr "" +msgstr "Coquille" #. name for cor msgid "Cornish" -msgstr "" +msgstr "Cornish" #. name for cos msgid "Corsican" -msgstr "" +msgstr "Corsican" #. name for cot msgid "Caquinte" -msgstr "" +msgstr "Caquinte" #. name for cou msgid "Wamey" -msgstr "" +msgstr "Wamey" #. name for cov msgid "Cao Miao" -msgstr "" +msgstr "Cao Miao" #. name for cow msgid "Cowlitz" -msgstr "" +msgstr "Cowlitz" #. name for cox msgid "Nanti" -msgstr "" +msgstr "Nanti" #. name for coy msgid "Coyaima" -msgstr "" +msgstr "Coyaima" #. name for coz msgid "Chochotec" -msgstr "" +msgstr "Chochotec" #. name for cpa msgid "Chinantec; Palantla" -msgstr "" +msgstr "Chinantec; Palantla" #. name for cpb msgid "Ashéninka; Ucayali-Yurúa" -msgstr "" +msgstr "Ashéninka; Ucayali-Yurúa" #. name for cpc msgid "Ajyíninka Apurucayali" -msgstr "" +msgstr "Ajyíninka Apurucayali" #. name for cpg msgid "Greek; Cappadocian" -msgstr "" +msgstr "Greek; Cappadocian" #. name for cpi msgid "Pidgin English; Chinese" -msgstr "" +msgstr "Pidgin English; Chinese" #. name for cpn msgid "Cherepon" -msgstr "" +msgstr "Cherepon" #. name for cps msgid "Capiznon" -msgstr "" +msgstr "Capiznon" #. name for cpu msgid "Ashéninka; Pichis" -msgstr "" +msgstr "Ashéninka; Pichis" #. name for cpx msgid "Chinese; Pu-Xian" -msgstr "" +msgstr "Chinese; Pu-Xian" #. name for cpy msgid "Ashéninka; South Ucayali" -msgstr "" +msgstr "Ashéninka; South Ucayali" #. name for cqd msgid "Miao; Chuanqiandian Cluster" -msgstr "" +msgstr "Miao; Chuanqiandian Cluster" #. name for cqu msgid "Quechua; Chilean" -msgstr "" +msgstr "Quechua; Chilean" #. name for cra msgid "Chara" -msgstr "" +msgstr "Chara" #. name for crb msgid "Carib; Island" -msgstr "" +msgstr "Carib; Island" #. name for crc msgid "Lonwolwol" -msgstr "" +msgstr "Lonwolwol" #. name for crd msgid "Coeur d'Alene" -msgstr "" +msgstr "Coeur d'Alene" #. name for cre msgid "Cree" -msgstr "" +msgstr "Cree" #. name for crf msgid "Caramanta" -msgstr "" +msgstr "Caramanta" #. name for crg msgid "Michif" -msgstr "" +msgstr "Michif" #. name for crh msgid "Turkish; Crimean" -msgstr "" +msgstr "Turkish; Crimean" #. name for cri msgid "Sãotomense" -msgstr "" +msgstr "Sãotomense" #. name for crj msgid "Cree; Southern East" -msgstr "" +msgstr "Cree; Southern East" #. name for crk msgid "Cree; Plains" -msgstr "" +msgstr "Cree; Plains" #. name for crl msgid "Cree; Northern East" -msgstr "" +msgstr "Cree; Northern East" #. name for crm msgid "Cree; Moose" -msgstr "" +msgstr "Cree; Moose" #. name for crn msgid "Cora; El Nayar" -msgstr "" +msgstr "Cora; El Nayar" #. name for cro msgid "Crow" -msgstr "" +msgstr "Crow" #. name for crq msgid "Chorote; Iyo'wujwa" -msgstr "" +msgstr "Chorote; Iyo'wujwa" #. name for crr msgid "Algonquian; Carolina" -msgstr "" +msgstr "Algonquian; Carolina" #. name for crs msgid "Creole French; Seselwa" -msgstr "" +msgstr "Creole French; Seselwa" #. name for crt msgid "Chorote; Iyojwa'ja" -msgstr "" +msgstr "Chorote; Iyojwa'ja" #. name for crv msgid "Chaura" -msgstr "" +msgstr "Chaura" #. name for crw msgid "Chrau" -msgstr "" +msgstr "Chrau" #. name for crx msgid "Carrier" -msgstr "" +msgstr "Carrier" #. name for cry msgid "Cori" -msgstr "" +msgstr "Cori" #. name for crz msgid "Cruzeño" -msgstr "" +msgstr "Cruzeño" #. name for csa msgid "Chinantec; Chiltepec" -msgstr "" +msgstr "Chinantec; Chiltepec" #. name for csb msgid "Kashubian" -msgstr "" +msgstr "Kashubian" #. name for csc msgid "Catalan Sign Language" -msgstr "" +msgstr "Catalan Sign Language" #. name for csd msgid "Chiangmai Sign Language" -msgstr "" +msgstr "Chiangmai Sign Language" #. name for cse msgid "Czech Sign Language" -msgstr "" +msgstr "Czech Sign Language" #. name for csf msgid "Cuba Sign Language" -msgstr "" +msgstr "Cuba Sign Language" #. name for csg msgid "Chilean Sign Language" -msgstr "" +msgstr "Chilean Sign Language" #. name for csh msgid "Chin; Asho" -msgstr "" +msgstr "Chin; Asho" #. name for csi msgid "Miwok; Coast" -msgstr "" +msgstr "Miwok; Coast" #. name for csk msgid "Jola-Kasa" -msgstr "" +msgstr "Jola-Kasa" #. name for csl msgid "Chinese Sign Language" -msgstr "" +msgstr "Chinese Sign Language" #. name for csm msgid "Miwok; Central Sierra" -msgstr "" +msgstr "Miwok; Central Sierra" #. name for csn msgid "Colombian Sign Language" -msgstr "" +msgstr "Colombian Sign Language" #. name for cso msgid "Chinantec; Sochiapan" -msgstr "" +msgstr "Chinantec; Sochiapan" #. name for csq msgid "Croatia Sign Language" -msgstr "" +msgstr "Croatia Sign Language" #. name for csr msgid "Costa Rican Sign Language" -msgstr "" +msgstr "Costa Rican Sign Language" #. name for css msgid "Ohlone; Southern" -msgstr "" +msgstr "Ohlone; Southern" #. name for cst msgid "Ohlone; Northern" -msgstr "" +msgstr "Ohlone; Northern" #. name for csw msgid "Cree; Swampy" -msgstr "" +msgstr "Cree; Swampy" #. name for csy msgid "Chin; Siyin" -msgstr "" +msgstr "Chin; Siyin" #. name for csz msgid "Coos" -msgstr "" +msgstr "Coos" #. name for cta msgid "Chatino; Tataltepec" -msgstr "" +msgstr "Chatino; Tataltepec" #. name for ctc msgid "Chetco" -msgstr "" +msgstr "Chetco" #. name for ctd msgid "Chin; Tedim" -msgstr "" +msgstr "Chin; Tedim" #. name for cte msgid "Chinantec; Tepinapa" -msgstr "" +msgstr "Chinantec; Tepinapa" #. name for ctg msgid "Chittagonian" -msgstr "" +msgstr "Chittagonian" #. name for ctl msgid "Chinantec; Tlacoatzintepec" -msgstr "" +msgstr "Chinantec; Tlacoatzintepec" #. name for ctm msgid "Chitimacha" -msgstr "" +msgstr "Chitimacha" #. name for ctn msgid "Chhintange" -msgstr "" +msgstr "Chhintange" #. name for cto msgid "Emberá-Catío" -msgstr "" +msgstr "Emberá-Catío" #. name for ctp msgid "Chatino; Western Highland" -msgstr "" +msgstr "Chatino; Western Highland" #. name for cts msgid "Bicolano; Northern Catanduanes" -msgstr "" +msgstr "Bicolano; Northern Catanduanes" #. name for ctt msgid "Chetti; Wayanad" -msgstr "" +msgstr "Chetti; Wayanad" #. name for ctu msgid "Chol" -msgstr "" +msgstr "Chol" #. name for ctz msgid "Chatino; Zacatepec" -msgstr "" +msgstr "Chatino; Zacatepec" #. name for cua msgid "Cua" -msgstr "" +msgstr "Cua" #. name for cub msgid "Cubeo" -msgstr "" +msgstr "Cubeo" #. name for cuc msgid "Chinantec; Usila" -msgstr "" +msgstr "Chinantec; Usila" #. name for cug msgid "Cung" -msgstr "" +msgstr "Cung" #. name for cuh msgid "Chuka" -msgstr "" +msgstr "Chuka" #. name for cui msgid "Cuiba" -msgstr "" +msgstr "Cuiba" #. name for cuj msgid "Mashco Piro" -msgstr "" +msgstr "Mashco Piro" #. name for cuk msgid "Kuna; San Blas" -msgstr "" +msgstr "Kuna; San Blas" #. name for cul msgid "Culina" -msgstr "" +msgstr "Culina" #. name for cum msgid "Cumeral" -msgstr "" +msgstr "Cumeral" #. name for cuo msgid "Cumanagoto" -msgstr "" +msgstr "Cumanagoto" #. name for cup msgid "Cupeño" -msgstr "" +msgstr "Cupeño" #. name for cuq msgid "Cun" -msgstr "" +msgstr "Cun" #. name for cur msgid "Chhulung" -msgstr "" +msgstr "Chhulung" #. name for cut msgid "Cuicatec; Teutila" -msgstr "" +msgstr "Cuicatec; Teutila" #. name for cuu msgid "Tai Ya" -msgstr "" +msgstr "Tai Ya" #. name for cuv msgid "Cuvok" -msgstr "" +msgstr "Cuvok" #. name for cuw msgid "Chukwa" -msgstr "" +msgstr "Chukwa" #. name for cux msgid "Cuicatec; Tepeuxila" -msgstr "" +msgstr "Cuicatec; Tepeuxila" #. name for cvg msgid "Chug" -msgstr "" +msgstr "Chug" #. name for cvn msgid "Chinantec; Valle Nacional" -msgstr "" +msgstr "Chinantec; Valle Nacional" #. name for cwa msgid "Kabwa" -msgstr "" +msgstr "Kabwa" #. name for cwb msgid "Maindo" -msgstr "" +msgstr "Maindo" #. name for cwd msgid "Cree; Woods" -msgstr "" +msgstr "Cree; Woods" #. name for cwe msgid "Kwere" -msgstr "" +msgstr "Kwere" #. name for cwg msgid "Chewong" -msgstr "" +msgstr "Chewong" #. name for cwt msgid "Kuwaataay" -msgstr "" +msgstr "Kuwaataay" #. name for cya msgid "Chatino; Nopala" -msgstr "" +msgstr "Chatino; Nopala" #. name for cyb msgid "Cayubaba" -msgstr "" +msgstr "Cayubaba" #. name for cym msgid "Welsh" -msgstr "" +msgstr "Welsh" #. name for cyo msgid "Cuyonon" -msgstr "" +msgstr "Cuyonon" #. name for czh msgid "Chinese; Huizhou" -msgstr "" +msgstr "Chinese; Huizhou" #. name for czk msgid "Knaanic" -msgstr "" +msgstr "Knaanic" #. name for czn msgid "Chatino; Zenzontepec" -msgstr "" +msgstr "Chatino; Zenzontepec" #. name for czo msgid "Chinese; Min Zhong" -msgstr "" +msgstr "Chinese; Min Zhong" #. name for czt msgid "Chin; Zotung" -msgstr "" +msgstr "Chin; Zotung" #. name for daa msgid "Dangaléat" -msgstr "" +msgstr "Dangaléat" #. name for dac msgid "Dambi" -msgstr "" +msgstr "Dambi" #. name for dad msgid "Marik" -msgstr "" +msgstr "Marik" #. name for dae msgid "Duupa" -msgstr "" +msgstr "Duupa" #. name for daf msgid "Dan" -msgstr "" +msgstr "Dan" #. name for dag msgid "Dagbani" -msgstr "" +msgstr "Dagbani" #. name for dah msgid "Gwahatike" -msgstr "" +msgstr "Gwahatike" #. name for dai msgid "Day" -msgstr "" +msgstr "Day" #. name for daj msgid "Daju; Dar Fur" -msgstr "" +msgstr "Daju; Dar Fur" #. name for dak msgid "Dakota" -msgstr "" +msgstr "Dakota" #. name for dal msgid "Dahalo" -msgstr "" +msgstr "Dahalo" #. name for dam msgid "Damakawa" -msgstr "" +msgstr "Damakawa" #. name for dan msgid "Danish" -msgstr "" +msgstr "Danish" #. name for dao msgid "Chin; Daai" -msgstr "" +msgstr "Chin; Daai" #. name for dap msgid "Nisi (India)" -msgstr "" +msgstr "Nisi (India)" #. name for daq msgid "Maria; Dandami" -msgstr "" +msgstr "Maria; Dandami" #. name for dar msgid "Dargwa" -msgstr "" +msgstr "Dargwa" #. name for das msgid "Daho-Doo" -msgstr "" +msgstr "Daho-Doo" #. name for dau msgid "Daju; Dar Sila" -msgstr "" +msgstr "Daju; Dar Sila" #. name for dav msgid "Taita" -msgstr "" +msgstr "Taita" #. name for daw msgid "Davawenyo" -msgstr "" +msgstr "Davawenyo" #. name for dax msgid "Dayi" -msgstr "" +msgstr "Dayi" #. name for daz msgid "Dao" -msgstr "" +msgstr "Dao" #. name for dba msgid "Bangi Me" -msgstr "" +msgstr "Bangi Me" #. name for dbb msgid "Deno" -msgstr "" +msgstr "Deno" #. name for dbd msgid "Dadiya" -msgstr "" +msgstr "Dadiya" #. name for dbe msgid "Dabe" -msgstr "" +msgstr "Dabe" #. name for dbf msgid "Edopi" -msgstr "" +msgstr "Edopi" #. name for dbg msgid "Dogon; Dogul Dom" -msgstr "" +msgstr "Dogon; Dogul Dom" #. name for dbi msgid "Doka" -msgstr "" +msgstr "Doka" #. name for dbj msgid "Ida'an" -msgstr "" +msgstr "Ida'an" #. name for dbl msgid "Dyirbal" -msgstr "" +msgstr "Dyirbal" #. name for dbm msgid "Duguri" -msgstr "" +msgstr "Duguri" #. name for dbn msgid "Duriankere" -msgstr "" +msgstr "Duriankere" #. name for dbo msgid "Dulbu" -msgstr "" +msgstr "Dulbu" #. name for dbp msgid "Duwai" -msgstr "" +msgstr "Duwai" #. name for dbq msgid "Daba" -msgstr "" +msgstr "Daba" #. name for dbr msgid "Dabarre" -msgstr "" +msgstr "Dabarre" #. name for dbu msgid "Dogon; Bondum Dom" -msgstr "" +msgstr "Dogon; Bondum Dom" #. name for dbv msgid "Dungu" -msgstr "" +msgstr "Dungu" #. name for dby msgid "Dibiyaso" -msgstr "" +msgstr "Dibiyaso" #. name for dcc msgid "Deccan" -msgstr "" +msgstr "Deccan" #. name for dcr msgid "Negerhollands" -msgstr "" +msgstr "Negerhollands" #. name for ddd msgid "Dongotono" -msgstr "" +msgstr "Dongotono" #. name for dde msgid "Doondo" -msgstr "" +msgstr "Doondo" #. name for ddg msgid "Fataluku" -msgstr "" +msgstr "Fataluku" #. name for ddi msgid "Goodenough; West" -msgstr "" +msgstr "Goodenough; West" #. name for ddj msgid "Jaru" -msgstr "" +msgstr "Jaru" #. name for ddn msgid "Dendi (Benin)" -msgstr "" +msgstr "Dendi (Benin)" #. name for ddo msgid "Dido" -msgstr "" +msgstr "Dido" #. name for dds msgid "Dogon; Donno So" -msgstr "" +msgstr "Dogon; Donno So" #. name for ddw msgid "Dawera-Daweloor" -msgstr "" +msgstr "Dawera-Daweloor" #. name for dec msgid "Dagik" -msgstr "" +msgstr "Dagik" #. name for ded msgid "Dedua" -msgstr "" +msgstr "Dedua" #. name for dee msgid "Dewoin" -msgstr "" +msgstr "Dewoin" #. name for def msgid "Dezfuli" -msgstr "" +msgstr "Dezfuli" #. name for deg msgid "Degema" -msgstr "" +msgstr "Degema" #. name for deh msgid "Dehwari" -msgstr "" +msgstr "Dehwari" #. name for dei msgid "Demisa" -msgstr "" +msgstr "Demisa" #. name for dek msgid "Dek" -msgstr "" +msgstr "Dek" #. name for del msgid "Delaware" -msgstr "" +msgstr "Delaware" #. name for dem msgid "Dem" -msgstr "" +msgstr "Dem" #. name for den msgid "Slave (Athapascan)" -msgstr "" +msgstr "Slave (Athapascan)" #. name for dep msgid "Delaware; Pidgin" -msgstr "" +msgstr "Delaware; Pidgin" #. name for deq msgid "Dendi (Central African Republic)" -msgstr "" +msgstr "Dendi (Central African Republic)" #. name for der msgid "Deori" -msgstr "" +msgstr "Deori" #. name for des msgid "Desano" -msgstr "" +msgstr "Desano" #. name for deu msgid "German" -msgstr "" +msgstr "German" #. name for dev msgid "Domung" -msgstr "" +msgstr "Domung" #. name for dez msgid "Dengese" -msgstr "" +msgstr "Dengese" #. name for dga msgid "Dagaare; Southern" -msgstr "" +msgstr "Dagaare; Southern" #. name for dgb msgid "Dogon; Bunoge" -msgstr "" +msgstr "Dogon; Bunoge" #. name for dgc msgid "Agta; Casiguran Dumagat" -msgstr "" +msgstr "Agta; Casiguran Dumagat" #. name for dgd msgid "Dagaari Dioula" -msgstr "" +msgstr "Dagaari Dioula" #. name for dge msgid "Degenan" -msgstr "" +msgstr "Degenan" #. name for dgg msgid "Doga" -msgstr "" +msgstr "Doga" #. name for dgh msgid "Dghwede" -msgstr "" +msgstr "Dghwede" #. name for dgi msgid "Dagara; Northern" -msgstr "" +msgstr "Dagara; Northern" #. name for dgk msgid "Dagba" -msgstr "" +msgstr "Dagba" #. name for dgn msgid "Dagoman" -msgstr "" +msgstr "Dagoman" #. name for dgo msgid "Dogri (individual language)" -msgstr "" +msgstr "Dogri (individual language)" #. name for dgr msgid "Dogrib" -msgstr "" +msgstr "Dogrib" #. name for dgs msgid "Dogoso" -msgstr "" +msgstr "Dogoso" #. name for dgu msgid "Degaru" -msgstr "" +msgstr "Degaru" #. name for dgx msgid "Doghoro" -msgstr "" +msgstr "Doghoro" #. name for dgz msgid "Daga" -msgstr "" +msgstr "Daga" #. name for dhd msgid "Dhundari" -msgstr "" +msgstr "Dhundari" #. name for dhg msgid "Dhangu" -msgstr "" +msgstr "Dhangu" #. name for dhi msgid "Dhimal" -msgstr "" +msgstr "Dhimal" #. name for dhl msgid "Dhalandji" -msgstr "" +msgstr "Dhalandji" #. name for dhm msgid "Zemba" -msgstr "" +msgstr "Zemba" #. name for dhn msgid "Dhanki" -msgstr "" +msgstr "Dhanki" #. name for dho msgid "Dhodia" -msgstr "" +msgstr "Dhodia" #. name for dhr msgid "Dhargari" -msgstr "" +msgstr "Dhargari" #. name for dhs msgid "Dhaiso" -msgstr "" +msgstr "Dhaiso" #. name for dhu msgid "Dhurga" -msgstr "" +msgstr "Dhurga" #. name for dhv msgid "Dehu" -msgstr "" +msgstr "Dehu" #. name for dhw msgid "Dhanwar (Nepal)" -msgstr "" +msgstr "Dhanwar (Nepal)" #. name for dia msgid "Dia" -msgstr "" +msgstr "Dia" #. name for dib msgid "Dinka; South Central" -msgstr "" +msgstr "Dinka; South Central" #. name for dic msgid "Dida; Lakota" -msgstr "" +msgstr "Dida; Lakota" #. name for did msgid "Didinga" -msgstr "" +msgstr "Didinga" #. name for dif msgid "Dieri" -msgstr "" +msgstr "Dieri" #. name for dig msgid "Digo" -msgstr "" +msgstr "Digo" #. name for dih msgid "Kumiai" -msgstr "" +msgstr "Kumiai" #. name for dii msgid "Dimbong" -msgstr "" +msgstr "Dimbong" #. name for dij msgid "Dai" -msgstr "" +msgstr "Dai" #. name for dik msgid "Dinka; Southwestern" -msgstr "" +msgstr "Dinka; Southwestern" #. name for dil msgid "Dilling" -msgstr "" +msgstr "Dilling" #. name for dim msgid "Dime" -msgstr "" +msgstr "Dime" #. name for din msgid "Dinka" -msgstr "" +msgstr "Dinka" #. name for dio msgid "Dibo" -msgstr "" +msgstr "Dibo" #. name for dip msgid "Dinka; Northeastern" -msgstr "" +msgstr "Dinka; Northeastern" #. name for diq msgid "Dimli (individual language)" -msgstr "" +msgstr "Dimli (individual language)" #. name for dir msgid "Dirim" -msgstr "" +msgstr "Dirim" #. name for dis msgid "Dimasa" -msgstr "" +msgstr "Dimasa" #. name for dit msgid "Dirari" -msgstr "" +msgstr "Dirari" #. name for diu msgid "Diriku" -msgstr "" +msgstr "Diriku" #. name for div msgid "Dhivehi" -msgstr "" +msgstr "Dhivehi" #. name for diw msgid "Dinka; Northwestern" -msgstr "" +msgstr "Dinka; Northwestern" #. name for dix msgid "Dixon Reef" -msgstr "" +msgstr "Dixon Reef" #. name for diy msgid "Diuwe" -msgstr "" +msgstr "Diuwe" #. name for diz msgid "Ding" -msgstr "" +msgstr "Ding" #. name for djb msgid "Djinba" -msgstr "" +msgstr "Djinba" #. name for djc msgid "Daju; Dar Daju" -msgstr "" +msgstr "Daju; Dar Daju" #. name for djd msgid "Djamindjung" -msgstr "" +msgstr "Djamindjung" #. name for dje msgid "Zarma" -msgstr "" +msgstr "Zarma" #. name for djf msgid "Djangun" -msgstr "" +msgstr "Djangun" #. name for dji msgid "Djinang" -msgstr "" +msgstr "Djinang" #. name for djj msgid "Djeebbana" -msgstr "" +msgstr "Djeebbana" #. name for djk msgid "Eastern Maroon Creole" -msgstr "" +msgstr "Eastern Maroon Creole" #. name for djl msgid "Djiwarli" -msgstr "" +msgstr "Djiwarli" #. name for djm msgid "Dogon; Jamsay" -msgstr "" +msgstr "Dogon; Jamsay" #. name for djn msgid "Djauan" -msgstr "" +msgstr "Djauan" #. name for djo msgid "Jangkang" -msgstr "" +msgstr "Jangkang" #. name for djr msgid "Djambarrpuyngu" -msgstr "" +msgstr "Djambarrpuyngu" #. name for dju msgid "Kapriman" -msgstr "" +msgstr "Kapriman" #. name for djw msgid "Djawi" -msgstr "" +msgstr "Djawi" #. name for dka msgid "Dakpakha" -msgstr "" +msgstr "Dakpakha" #. name for dkk msgid "Dakka" -msgstr "" +msgstr "Dakka" #. name for dkr msgid "Kuijau" -msgstr "" +msgstr "Kuijau" #. name for dks msgid "Dinka; Southeastern" -msgstr "" +msgstr "Dinka; Southeastern" #. name for dkx msgid "Mazagway" -msgstr "" +msgstr "Mazagway" #. name for dlg msgid "Dolgan" -msgstr "" +msgstr "Dolgan" #. name for dlm msgid "Dalmatian" -msgstr "" +msgstr "Dalmatian" #. name for dln msgid "Darlong" -msgstr "" +msgstr "Darlong" #. name for dma msgid "Duma" -msgstr "" +msgstr "Duma" #. name for dmb msgid "Dogon; Mombo" -msgstr "" +msgstr "Dogon; Mombo" #. name for dmc msgid "Dimir" -msgstr "" +msgstr "Dimir" #. name for dme msgid "Dugwor" -msgstr "" +msgstr "Dugwor" #. name for dmg msgid "Kinabatangan; Upper" -msgstr "" +msgstr "Kinabatangan; Upper" #. name for dmk msgid "Domaaki" -msgstr "" +msgstr "Domaaki" #. name for dml msgid "Dameli" -msgstr "" +msgstr "Dameli" #. name for dmm msgid "Dama" -msgstr "" +msgstr "Dama" #. name for dmo msgid "Kemezung" -msgstr "" +msgstr "Kemezung" #. name for dmr msgid "Damar; East" -msgstr "" +msgstr "Damar; East" #. name for dms msgid "Dampelas" -msgstr "" +msgstr "Dampelas" #. name for dmu msgid "Dubu" -msgstr "" +msgstr "Dubu" #. name for dmv msgid "Dumpas" -msgstr "" +msgstr "Dumpas" #. name for dmx msgid "Dema" -msgstr "" +msgstr "Dema" #. name for dmy msgid "Demta" -msgstr "" +msgstr "Demta" #. name for dna msgid "Dani; Upper Grand Valley" -msgstr "" +msgstr "Dani; Upper Grand Valley" #. name for dnd msgid "Daonda" -msgstr "" +msgstr "Daonda" #. name for dne msgid "Ndendeule" -msgstr "" +msgstr "Ndendeule" #. name for dng msgid "Dungan" -msgstr "" +msgstr "Dungan" #. name for dni msgid "Dani; Lower Grand Valley" -msgstr "" +msgstr "Dani; Lower Grand Valley" #. name for dnk msgid "Dengka" -msgstr "" +msgstr "Dengka" #. name for dnn msgid "Dzùùngoo" -msgstr "" +msgstr "Dzùùngoo" #. name for dnr msgid "Danaru" -msgstr "" +msgstr "Danaru" #. name for dnt msgid "Dani; Mid Grand Valley" -msgstr "" +msgstr "Dani; Mid Grand Valley" #. name for dnu msgid "Danau" -msgstr "" +msgstr "Danau" #. name for dnw msgid "Dani; Western" -msgstr "" +msgstr "Dani; Western" #. name for dny msgid "Dení" -msgstr "" +msgstr "Dení" #. name for doa msgid "Dom" -msgstr "" +msgstr "Dom" #. name for dob msgid "Dobu" -msgstr "" +msgstr "Dobu" #. name for doc msgid "Dong; Northern" -msgstr "" +msgstr "Dong; Northern" #. name for doe msgid "Doe" -msgstr "" +msgstr "Doe" #. name for dof msgid "Domu" -msgstr "" +msgstr "Domu" #. name for doh msgid "Dong" -msgstr "" +msgstr "Dong" #. name for doi msgid "Dogri (macrolanguage)" -msgstr "" +msgstr "Dogri (macrolanguage)" #. name for dok msgid "Dondo" -msgstr "" +msgstr "Dondo" #. name for dol msgid "Doso" -msgstr "" +msgstr "Doso" #. name for don msgid "Toura (Papua New Guinea)" -msgstr "" +msgstr "Toura (Papua New Guinea)" #. name for doo msgid "Dongo" -msgstr "" +msgstr "Dongo" #. name for dop msgid "Lukpa" -msgstr "" +msgstr "Lukpa" #. name for doq msgid "Dominican Sign Language" -msgstr "" +msgstr "Dominican Sign Language" #. name for dor msgid "Dori'o" -msgstr "" +msgstr "Dori'o" #. name for dos msgid "Dogosé" -msgstr "" +msgstr "Dogosé" #. name for dot msgid "Dass" -msgstr "" +msgstr "Dass" #. name for dov msgid "Dombe" -msgstr "" +msgstr "Dombe" #. name for dow msgid "Doyayo" -msgstr "" +msgstr "Doyayo" #. name for dox msgid "Bussa" -msgstr "" +msgstr "Bussa" #. name for doy msgid "Dompo" -msgstr "" +msgstr "Dompo" #. name for doz msgid "Dorze" -msgstr "" +msgstr "Dorze" #. name for dpp msgid "Papar" -msgstr "" +msgstr "Papar" #. name for drb msgid "Dair" -msgstr "" +msgstr "Dair" #. name for drc msgid "Minderico" -msgstr "" +msgstr "Minderico" #. name for drd msgid "Darmiya" -msgstr "" +msgstr "Darmiya" #. name for dre msgid "Dolpo" -msgstr "" +msgstr "Dolpo" #. name for drg msgid "Rungus" -msgstr "" +msgstr "Rungus" #. name for dri msgid "C'lela" -msgstr "" +msgstr "C'lela" #. name for drl msgid "Darling" -msgstr "" +msgstr "Darling" #. name for drn msgid "Damar; West" -msgstr "" +msgstr "Damar; West" #. name for dro msgid "Melanau; Daro-Matu" -msgstr "" +msgstr "Melanau; Daro-Matu" #. name for drq msgid "Dura" -msgstr "" +msgstr "Dura" #. name for drr msgid "Dororo" -msgstr "" +msgstr "Dororo" #. name for drs msgid "Gedeo" -msgstr "" +msgstr "Gedeo" #. name for drt msgid "Drents" -msgstr "" +msgstr "Drents" #. name for dru msgid "Rukai" -msgstr "" +msgstr "Rukai" #. name for dry msgid "Darai" -msgstr "" +msgstr "Darai" #. name for dsb msgid "Sorbian; Lower" -msgstr "" +msgstr "Sorbian; Lower" #. name for dse msgid "Dutch Sign Language" -msgstr "" +msgstr "Dutch Sign Language" #. name for dsh msgid "Daasanach" -msgstr "" +msgstr "Daasanach" #. name for dsi msgid "Disa" -msgstr "" +msgstr "Disa" #. name for dsl msgid "Danish Sign Language" -msgstr "" +msgstr "Danish Sign Language" #. name for dsn msgid "Dusner" -msgstr "" +msgstr "Dusner" #. name for dso msgid "Desiya" -msgstr "" +msgstr "Desiya" #. name for dsq msgid "Tadaksahak" -msgstr "" +msgstr "Tadaksahak" #. name for dta msgid "Daur" -msgstr "" +msgstr "Daur" #. name for dtb msgid "Kadazan; Labuk-Kinabatangan" -msgstr "" +msgstr "Kadazan; Labuk-Kinabatangan" #. name for dtd msgid "Ditidaht" -msgstr "" +msgstr "Ditidaht" #. name for dti msgid "Dogon; Ana Tinga" -msgstr "" +msgstr "Dogon; Ana Tinga" #. name for dtk msgid "Dogon; Tene Kan" -msgstr "" +msgstr "Dogon; Tene Kan" #. name for dtm msgid "Dogon; Tomo Kan" -msgstr "" +msgstr "Dogon; Tomo Kan" #. name for dtp msgid "Dusun; Central" -msgstr "" +msgstr "Dusun; Central" #. name for dtr msgid "Lotud" -msgstr "" +msgstr "Lotud" #. name for dts msgid "Dogon; Toro So" -msgstr "" +msgstr "Dogon; Toro So" #. name for dtt msgid "Dogon; Toro Tegu" -msgstr "" +msgstr "Dogon; Toro Tegu" #. name for dtu msgid "Dogon; Tebul Ure" -msgstr "" +msgstr "Dogon; Tebul Ure" #. name for dua msgid "Duala" -msgstr "" +msgstr "Duala" #. name for dub msgid "Dubli" -msgstr "" +msgstr "Dubli" #. name for duc msgid "Duna" -msgstr "" +msgstr "Duna" #. name for dud msgid "Hun-Saare" -msgstr "" +msgstr "Hun-Saare" #. name for due msgid "Agta; Umiray Dumaget" -msgstr "" +msgstr "Agta; Umiray Dumaget" #. name for duf msgid "Dumbea" -msgstr "" +msgstr "Dumbea" #. name for dug msgid "Duruma" -msgstr "" +msgstr "Duruma" #. name for duh msgid "Dungra Bhil" -msgstr "" +msgstr "Dungra Bhil" #. name for dui msgid "Dumun" -msgstr "" +msgstr "Dumun" #. name for duj msgid "Dhuwal" -msgstr "" +msgstr "Dhuwal" #. name for duk msgid "Uyajitaya" -msgstr "" +msgstr "Uyajitaya" #. name for dul msgid "Agta; Alabat Island" -msgstr "" +msgstr "Agta; Alabat Island" #. name for dum msgid "Dutch; Middle (ca. 1050-1350)" -msgstr "" +msgstr "Dutch; Middle (ca. 1050-1350)" #. name for dun msgid "Dusun Deyah" -msgstr "" +msgstr "Dusun Deyah" #. name for duo msgid "Agta; Dupaninan" -msgstr "" +msgstr "Agta; Dupaninan" #. name for dup msgid "Duano" -msgstr "" +msgstr "Duano" #. name for duq msgid "Dusun Malang" -msgstr "" +msgstr "Dusun Malang" #. name for dur msgid "Dii" -msgstr "" +msgstr "Dii" #. name for dus msgid "Dumi" -msgstr "" +msgstr "Dumi" #. name for duu msgid "Drung" -msgstr "" +msgstr "Drung" #. name for duv msgid "Duvle" -msgstr "" +msgstr "Duvle" #. name for duw msgid "Dusun Witu" -msgstr "" +msgstr "Dusun Witu" #. name for dux msgid "Duungooma" -msgstr "" +msgstr "Duungooma" #. name for duy msgid "Agta; Dicamay" -msgstr "" +msgstr "Agta; Dicamay" #. name for duz msgid "Duli" -msgstr "" +msgstr "Duli" #. name for dva msgid "Duau" -msgstr "" +msgstr "Duau" #. name for dwa msgid "Diri" -msgstr "" +msgstr "Diri" #. name for dwl msgid "Dogon; Walo Kumbe" -msgstr "" +msgstr "Dogon; Walo Kumbe" #. name for dwr msgid "Dawro" -msgstr "" +msgstr "Dawro" #. name for dws msgid "Dutton World Speedwords" -msgstr "" +msgstr "Dutton World Speedwords" #. name for dww msgid "Dawawa" -msgstr "" +msgstr "Dawawa" #. name for dya msgid "Dyan" -msgstr "" +msgstr "Dyan" #. name for dyb msgid "Dyaberdyaber" -msgstr "" +msgstr "Dyaberdyaber" #. name for dyd msgid "Dyugun" -msgstr "" +msgstr "Dyugun" #. name for dyg msgid "Agta; Villa Viciosa" -msgstr "" +msgstr "Agta; Villa Viciosa" #. name for dyi msgid "Senoufo; Djimini" -msgstr "" +msgstr "Senoufo; Djimini" #. name for dym msgid "Dogon; Yanda Dom" -msgstr "" +msgstr "Dogon; Yanda Dom" #. name for dyn msgid "Dyangadi" -msgstr "" +msgstr "Dyangadi" #. name for dyo msgid "Jola-Fonyi" -msgstr "" +msgstr "Jola-Fonyi" #. name for dyu msgid "Dyula" -msgstr "" +msgstr "Dyula" #. name for dyy msgid "Dyaabugay" -msgstr "" +msgstr "Dyaabugay" #. name for dza msgid "Tunzu" -msgstr "" +msgstr "Tunzu" #. name for dzd msgid "Daza" -msgstr "" +msgstr "Daza" #. name for dzg msgid "Dazaga" -msgstr "" +msgstr "Dazaga" #. name for dzl msgid "Dzalakha" -msgstr "" +msgstr "Dzalakha" #. name for dzn msgid "Dzando" -msgstr "" +msgstr "Dzando" #. name for dzo msgid "Dzongkha" -msgstr "" +msgstr "Dzongkha" #. name for ebg msgid "Ebughu" -msgstr "" +msgstr "Ebughu" #. name for ebk msgid "Bontok; Eastern" -msgstr "" +msgstr "Bontok; Eastern" #. name for ebo msgid "Teke-Ebo" -msgstr "" +msgstr "Teke-Ebo" #. name for ebr msgid "Ebrié" -msgstr "" +msgstr "Ebrié" #. name for ebu msgid "Embu" diff --git a/src/calibre/constants.py b/src/calibre/constants.py index a5f41f5404..0bae1d2c86 100644 --- a/src/calibre/constants.py +++ b/src/calibre/constants.py @@ -4,7 +4,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __docformat__ = 'restructuredtext en' __appname__ = u'calibre' -numeric_version = (0, 8, 35) +numeric_version = (0, 8, 36) __version__ = u'.'.join(map(unicode, numeric_version)) __author__ = u"Kovid Goyal " diff --git a/src/calibre/db/cache.py b/src/calibre/db/cache.py index e79d496cd9..10fe0bb014 100644 --- a/src/calibre/db/cache.py +++ b/src/calibre/db/cache.py @@ -14,6 +14,7 @@ from functools import wraps, partial from calibre.db.locking import create_locks, RecordLock from calibre.db.fields import create_field from calibre.db.tables import VirtualTable +from calibre.db.lazy import FormatMetadata, FormatsList from calibre.ebooks.metadata.book.base import Metadata from calibre.utils.date import now @@ -127,14 +128,8 @@ class Cache(object): if not formats: good_formats = None else: - good_formats = [] - for f in formats: - try: - mi.format_metadata[f] = self._format_metadata(book_id, f) - except: - pass - else: - good_formats.append(f) + mi.format_metadata = FormatMetadata(self, id, formats) + good_formats = FormatsList(formats, mi.format_metadata) mi.formats = good_formats mi.has_cover = _('Yes') if self._field_for('cover', book_id, default_value=False) else '' diff --git a/src/calibre/db/lazy.py b/src/calibre/db/lazy.py new file mode 100644 index 0000000000..be9334c056 --- /dev/null +++ b/src/calibre/db/lazy.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2012, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +import weakref +from functools import wraps +from collections import MutableMapping, MutableSequence + +''' +Avoid doing stats on all files in a book when getting metadata for that book. +Speeds up calibre startup with large libraries/libraries on a network share, +with a composite custom column. +''' + +# Lazy format metadata retrieval {{{ +def resolved(f): + @wraps(f) + def wrapper(self, *args, **kwargs): + if getattr(self, '_must_resolve', True): + self._resolve() + self._must_resolve = False + return f(self, *args, **kwargs) + return wrapper + +class MutableBase(object): + + @resolved + def __str__(self): + return str(self._values) + + @resolved + def __repr__(self): + return repr(self._values) + + @resolved + def __unicode__(self): + return unicode(self._values) + + @resolved + def __len__(self): + return len(self._values) + + @resolved + def __iter__(self): + return iter(self._values) + + @resolved + def __contains__(self, key): + return key in self._values + + @resolved + def __getitem__(self, fmt): + return self._values[fmt] + + @resolved + def __setitem__(self, key, val): + self._values[key] = val + + @resolved + def __delitem__(self, key): + del self._values[key] + + +class FormatMetadata(MutableBase, MutableMapping): + + def __init__(self, db, id_, formats): + self._dbwref = weakref.ref(db) + self._id = id_ + self._formats = formats + + def _resolve(self): + db = self._dbwref() + self._values = {} + for f in self._formats: + try: + self._values[f] = db.format_metadata(self._id, f) + except: + pass + +class FormatsList(MutableBase, MutableSequence): + + def __init__(self, formats, format_metadata): + self._formats = formats + self._format_metadata = format_metadata + + def _resolve(self): + self._values = [f for f in self._formats if f in self._format_metadata] + + @resolved + def insert(self, idx, val): + self._values.insert(idx, val) + +# }}} + diff --git a/src/calibre/devices/android/driver.py b/src/calibre/devices/android/driver.py index d9a7578f6a..6222b00903 100644 --- a/src/calibre/devices/android/driver.py +++ b/src/calibre/devices/android/driver.py @@ -162,7 +162,7 @@ class ANDROID(USBMS): 'GT-I5700', 'SAMSUNG', 'DELL', 'LINUX', 'GOOGLE', 'ARCHOS', 'TELECHIP', 'HUAWEI', 'T-MOBILE', 'SEMC', 'LGE', 'NVIDIA', 'GENERIC-', 'ZTE', 'MID', 'QUALCOMM', 'PANDIGIT', 'HYSTON', - 'VIZIO', 'GOOGLE', 'FREESCAL', 'KOBO_INC', 'LENOVO'] + 'VIZIO', 'GOOGLE', 'FREESCAL', 'KOBO_INC', 'LENOVO', 'ROCKCHIP'] WINDOWS_MAIN_MEM = ['ANDROID_PHONE', 'A855', 'A853', 'INC.NEXUS_ONE', '__UMS_COMPOSITE', '_MB200', 'MASS_STORAGE', '_-_CARD', 'SGH-I897', 'GT-I9000', 'FILE-STOR_GADGET', 'SGH-T959', 'SAMSUNG_ANDROID', @@ -175,7 +175,7 @@ class ANDROID(USBMS): 'GT-S5830_CARD', 'GT-S5570_CARD', 'MB870', 'MID7015A', 'ALPANDIGITAL', 'ANDROID_MID', 'VTAB1008', 'EMX51_BBG_ANDROI', 'UMS', '.K080', 'P990', 'LTE', 'MB853', 'GT-S5660_CARD', 'A107', - 'GT-I9003_CARD', 'XT912', 'FILE-CD_GADGET'] + 'GT-I9003_CARD', 'XT912', 'FILE-CD_GADGET', 'RK29_SDK'] WINDOWS_CARD_A_MEM = ['ANDROID_PHONE', 'GT-I9000_CARD', 'SGH-I897', 'FILE-STOR_GADGET', 'SGH-T959', 'SAMSUNG_ANDROID', 'GT-P1000_CARD', 'A70S', 'A101IT', '7', 'INCREDIBLE', 'A7EB', 'SGH-T849_CARD', diff --git a/src/calibre/ebooks/chm/input.py b/src/calibre/ebooks/chm/input.py index 9aa8272ee9..f36685bd91 100644 --- a/src/calibre/ebooks/chm/input.py +++ b/src/calibre/ebooks/chm/input.py @@ -11,6 +11,7 @@ from calibre.customize.conversion import InputFormatPlugin from calibre.ptempfile import TemporaryDirectory from calibre.utils.localization import get_lang from calibre.utils.filenames import ascii_filename +from calibre.constants import filesystem_encoding class CHMInput(InputFormatPlugin): @@ -36,6 +37,8 @@ class CHMInput(InputFormatPlugin): log.debug('Processing CHM...') with TemporaryDirectory('_chm2oeb') as tdir: + if not isinstance(tdir, unicode): + tdir = tdir.decode(filesystem_encoding) html_input = plugin_for_input_format('html') for opt in html_input.options: setattr(options, opt.option.name, opt.recommended_value) diff --git a/src/calibre/ebooks/chm/metadata.py b/src/calibre/ebooks/chm/metadata.py index 26b09c7676..ea67947231 100644 --- a/src/calibre/ebooks/chm/metadata.py +++ b/src/calibre/ebooks/chm/metadata.py @@ -6,13 +6,14 @@ __license__ = 'GPL v3' __copyright__ = '2010, Kovid Goyal ' __docformat__ = 'restructuredtext en' -import re +import re, codecs from calibre.ebooks.BeautifulSoup import BeautifulSoup from calibre.ebooks.chardet import xml_to_unicode from calibre.ebooks.metadata import string_to_authors, MetaInformation from calibre.utils.logging import default_log from calibre.ptempfile import TemporaryFile +from calibre import force_unicode def _clean(s): return s.replace(u'\u00a0', u' ') @@ -138,6 +139,13 @@ def get_metadata_from_reader(rdr): resolve_entities=True)[0]) title = rdr.title + try: + x = rdr.GetEncoding() + codecs.lookup(x) + enc = x + except: + enc = 'cp1252' + title = force_unicode(title, enc) authors = _get_authors(home) mi = MetaInformation(title, authors) publisher = _get_publisher(home) diff --git a/src/calibre/ebooks/chm/reader.py b/src/calibre/ebooks/chm/reader.py index 05ec388a9b..fc7d865265 100644 --- a/src/calibre/ebooks/chm/reader.py +++ b/src/calibre/ebooks/chm/reader.py @@ -4,7 +4,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal ,' \ ' and Alex Bramley .' -import os, re +import os, re, codecs from calibre import guess_type as guess_mimetype from calibre.ebooks.BeautifulSoup import BeautifulSoup, NavigableString @@ -99,8 +99,17 @@ class CHMReader(CHMFile): def ExtractFiles(self, output_dir=os.getcwdu(), debug_dump=False): html_files = set([]) + try: + x = self.GetEncoding() + codecs.lookup(x) + enc = x + except: + enc = 'cp1252' for path in self.Contents(): - lpath = os.path.join(output_dir, path) + fpath = path + if not isinstance(path, unicode): + fpath = path.decode(enc) + lpath = os.path.join(output_dir, fpath) self._ensure_dir(lpath) try: data = self.GetFile(path) @@ -123,6 +132,7 @@ class CHMReader(CHMFile): self.log.warn('%r filename too long, skipping'%path) continue raise + if debug_dump: import shutil shutil.copytree(output_dir, os.path.join(debug_dump, 'debug_dump')) diff --git a/src/calibre/ebooks/metadata/topaz.py b/src/calibre/ebooks/metadata/topaz.py index 4db3a7b955..fab63734c5 100644 --- a/src/calibre/ebooks/metadata/topaz.py +++ b/src/calibre/ebooks/metadata/topaz.py @@ -8,6 +8,7 @@ import StringIO, sys from struct import pack from calibre.ebooks.metadata import MetaInformation +from calibre import force_unicode class StreamSlicer(object): @@ -245,7 +246,9 @@ class MetadataUpdater(object): def get_metadata(self): ''' Return MetaInformation with title, author''' self.get_original_metadata() - return MetaInformation(self.metadata['Title'], [self.metadata['Authors']]) + title = force_unicode(self.metadata['Title'], 'utf-8') + authors = force_unicode(self.metadata['Authors'], 'utf-8').split(';') + return MetaInformation(title, authors) def get_original_metadata(self): offset = self.base + self.topaz_headers['metadata']['blocks'][0]['offset'] diff --git a/src/calibre/ebooks/oeb/display/cfi.coffee b/src/calibre/ebooks/oeb/display/cfi.coffee index 66030bec91..5a6d5751a0 100644 --- a/src/calibre/ebooks/oeb/display/cfi.coffee +++ b/src/calibre/ebooks/oeb/display/cfi.coffee @@ -13,6 +13,7 @@ 3. Much more comprehensive testing/error handling 4. Properly encodes/decodes assertions 5. Handles points in the padding of elements consistently + 6. Has a utility method to calculate the CFI for the current viewport position robustly To check if this script is compatible with the current browser, call window.cfi.is_compatible() it will throw an exception if not compatible. @@ -72,7 +73,7 @@ get_current_time = (target) -> # {{{ fstr(ans) # }}} -window_scroll_pos = (win) -> # {{{ +window_scroll_pos = (win=window) -> # {{{ if typeof(win.pageXOffset) == 'number' x = win.pageXOffset y = win.pageYOffset @@ -86,7 +87,7 @@ window_scroll_pos = (win) -> # {{{ return [x, y] # }}} -viewport_to_document = (x, y, doc) -> # {{{ +viewport_to_document = (x, y, doc=window?.document) -> # {{{ until doc == window.document # We are in a frame frame = doc.defaultView.frameElement @@ -101,7 +102,7 @@ viewport_to_document = (x, y, doc) -> # {{{ return [x, y] # }}} -# Equivalent for caretRangeFromPoint for non WebKit browsers {{{ +# Convert point to character offset {{{ range_has_point = (range, x, y) -> for rect in range.getClientRects() if (rect.left <= x <= rect.right) and (rect.top <= y <= rect.bottom) @@ -157,7 +158,8 @@ class CanonicalFragmentIdentifier is_compatible(): Throws an error if the browser is not compatible with this script - at(x, y): which maps a point to a CFI, if possible + at(x, y): Maps a point to a CFI, if possible + at_current(): Returns the CFI corresponding to the current viewport scroll location scroll_to(cfi): which scrolls the browser to a point corresponding to the given cfi, and returns the x and y co-ordinates of the point. @@ -559,11 +561,73 @@ class CanonicalFragmentIdentifier null # }}} - current_cfi: () -> # {{{ + at_current: () -> # {{{ [winx, winy] = window_scroll_pos() [winw, winh] = [window.innerWidth, window.innerHeight] + max = Math.max winw = max(winw, 400) winh = max(winh, 600) + deltay = Math.floor(winh/50) + deltax = Math.floor(winw/25) + miny = max(-winy, -winh) + maxy = winh + minx = max(-winx, -winw) + maxx = winw + + dist = (p1, p2) -> + Math.sqrt(Math.pow(p1[0]-p2[0], 2), Math.pow(p1[1]-p2[1], 2)) + + get_cfi = (ox, oy) -> + try + cfi = this.at(ox, oy) + point = this.point(cfi) + catch err + cfi = null + + if point.range != null + r = point.range + rect = r.getClientRects()[0] + + x = (point.a*rect.left + (1-point.a)*rect.right) + y = (rect.top + rect.bottom)/2 + [x, y] = viewport_to_document(x, y, r.startContainer.ownerDocument) + else + node = point.node + r = node.getBoundingClientRect() + [x, y] = viewport_to_document(r.left, r.top, node.ownerDocument) + if typeof(point.x) == 'number' and node.offsetWidth + x += (point.x*node.offsetWidth)/100 + if typeof(point.y) == 'number' and node.offsetHeight + y += (point.y*node.offsetHeight)/100 + + if dist(viewport_to_document(ox, oy), [x, y]) > 50 + cfi = null + + return cfi + + x_loop = (cury) -> + for direction in [-1, 1] + delta = deltax * direction + curx = 0 + until (direction < 0 and curx < minx) or (direction > 0 and curx > maxx) + cfi = get_cfi(curx, cury) + if cfi + return cfi + curx += delta + null + + for direction in [-1, 1] + delta = deltay * direction + cury = 0 + until (direction < 0 and cury < miny) or (direction > 0 and cury > maxy) + cfi = x_loop(cury, -1) + if cfi + return cfi + cury += delta + + # TODO: Return the CFI corresponding to the tag + null + # }}} if window? diff --git a/src/calibre/ebooks/oeb/display/test-cfi/iframe.html b/src/calibre/ebooks/oeb/display/test-cfi/iframe.html index fb2f0f969c..94761560fb 100644 --- a/src/calibre/ebooks/oeb/display/test-cfi/iframe.html +++ b/src/calibre/ebooks/oeb/display/test-cfi/iframe.html @@ -23,6 +23,7 @@ indignation and dislike men who are so beguiled and demoralized by the charms of pleasure of the moment, so blinded by desire, that they cannot foresee

+

Test image

diff --git a/src/calibre/ebooks/oeb/display/test-cfi/index.html b/src/calibre/ebooks/oeb/display/test-cfi/index.html index 9ece7940a7..8398d27791 100644 --- a/src/calibre/ebooks/oeb/display/test-cfi/index.html +++ b/src/calibre/ebooks/oeb/display/test-cfi/index.html @@ -1,7 +1,7 @@ - Testing EPUB CFI + Testing cfi.coffee