summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorDr. Tobias Quathamer <toddy@debian.org>2019-01-25 21:37:16 +0100
committerDr. Tobias Quathamer <toddy@debian.org>2019-01-25 21:37:16 +0100
commit46f59f8f9162c457e6fe45ae795d3e5bd5362fd1 (patch)
tree11c13697784550510cddd1d0d73c73ab8578cdbf /bin
parentf755475506073fcfd73d6e51c80a794536c7bfcf (diff)
downloadiso-codes-46f59f8f9162c457e6fe45ae795d3e5bd5362fd1.tar.gz
New upstream version 4.2upstream/4.2
Diffstat (limited to 'bin')
-rwxr-xr-xbin/iso-codes-merge.py229
1 files changed, 0 insertions, 229 deletions
diff --git a/bin/iso-codes-merge.py b/bin/iso-codes-merge.py
deleted file mode 100755
index 0168c7f4..00000000
--- a/bin/iso-codes-merge.py
+++ /dev/null
@@ -1,229 +0,0 @@
-#!/usr/bin/env python
-
-import sys
-import os
-import logging
-import tempfile
-import urllib
-import subprocess
-
-lang2Name = {'af': 'Afrikaans',
- 'am': 'Amharic',
- 'ar': 'Arabic',
- 'ast': 'Asturian',
- 'az': 'Azerbaijani',
- 'be': 'Belarusian',
- 'be@latin': 'Belarusian (Latin script)',
- 'bg': 'Bulgarian',
- 'bn': 'Bengali',
- 'bn_IN': 'Bengali (India)',
- 'bs': 'Bosnian',
- 'ca': 'Catalan',
- 'crh': 'Crimean Tatar (Crimean Turkish)',
- 'cs': 'Czech',
- 'da': 'Danish',
- 'de': 'German',
- 'el': 'Greek',
- 'en_GB': 'English (British)',
- 'en_ZA': 'English (South African)',
- 'eo': 'Esperanto',
- 'es': 'Spanish',
- 'et': 'Estonian',
- 'eu': 'Basque',
- 'fa': 'Persian',
- 'fi': 'Finnish',
- 'fr': 'French',
- 'ga': 'Irish',
- 'gl': 'Galician',
- 'gu': 'Gujarati',
- 'he': 'Hebrew',
- 'hi': 'Hindi',
- 'hr': 'Croatian',
- 'hu': 'Hungarian',
- 'hy': 'Armenian',
- 'ia': 'Interlingua',
- 'id': 'Indonesian',
- 'is': 'Icelandic',
- 'it': 'Italian',
- 'ja': 'Japanese',
- 'ka': 'Georgian',
- 'kk': 'Kazakh',
- 'kn': 'Kannada',
- 'ko': 'Korean',
- 'ku': 'Kurdish',
- 'ky': 'Kirghiz',
- 'lg': 'Luganda',
- 'lo': 'Lao',
- 'lt': 'Lithuanian',
- 'lv': 'Latvian',
- 'mk': 'Macedonian',
- 'ml': 'Malayalam',
- 'mn': 'Mongolian',
- 'mr': 'Marathi',
- 'ms': 'Malay',
- 'mt': 'Maltese',
- 'nb': 'Norwegian Bokmaal',
- 'nds': 'Low German',
- 'ne': 'Nepali',
- 'nl': 'Dutch',
- 'nn': 'Norwegian Nynorsk',
- 'pa': 'Punjabi',
- 'pl': 'Polish',
- 'ps': 'Pashto',
- 'pt': 'Portuguese',
- 'pt_BR': 'Brazilian Portuguese',
- 'ro': 'Romanian',
- 'ru': 'Russian',
- 'rw': 'Kinyarwanda',
- 'sk': 'Slovak',
- 'sl': 'Slovenian',
- 'sq': 'Albanian',
- 'sr': 'Serbian',
- 'sv': 'Swedish',
- 'sw': 'Swahili',
- 'ta': 'Tamil',
- 'te': 'Telugu',
- 'tg': 'Tajik',
- 'th': 'Thai',
- 'tr': 'Turkish',
- 'uk': 'Ukrainian',
- 'vi': 'Vietnamese',
- 'wa': 'Walloon',
- 'zh_CN': 'Chinese (simplified)',
- 'zh_HK': 'Chinese (Hong Kong)',
- 'zh_TW': 'Chinese (traditional)'}
-
-class Isocodes(object):
-
- def __init__(self, home=None):
- self.home = home or "."
- self.tmpfiles = []
-
- def _getUrl(self, domain, lang):
- return "http://translationproject.org/latest/%s/%s.po" % (domain, lang)
-
- def _msgfmt(self, fname):
- logging.info(fname)
- if not os.path.exists(fname):
- logging.info('Not Exist')
- else:
- subprocess.check_call(['msgfmt', '-v', fname])
-
- def _msgcanonicalformat(self, fname, domain):
- logging.info(fname)
- potfile = os.path.join(self.home, domain, domain+".pot")
- subprocess.check_call(['msgmerge', '--previous', '-o', fname, fname, potfile])
- subprocess.check_call(['msgattrib', '--no-obsolete', '-o', fname, fname])
- subprocess.check_call(['sed', '-i', '-e', 's/^"Project-Id-Version: iso.*/"Project-Id-Version: ' + domain + '\\\\n"/', fname])
-
- def _getOldFname(self, domain, lang):
- return os.path.join(self.home, domain, lang+".po")
-
- def merge(self, domain, lang):
- url = self._getUrl(domain, lang)
- logging.info(url)
- oldfname = self._getOldFname(domain, lang)
- newfname = self._downloadFile(url)
- self._msgcanonicalformat(newfname, domain)
- self._diff(oldfname, newfname)
- self._msgfmt(oldfname)
- self._msgfmt(newfname)
-
- res = raw_input('merge this (Y/n): ')
- if res == '' or res == 'y' or res == 'Y':
- self._doMerge(domain, lang, oldfname, newfname)
-
- def _doMerge(self, domain, lang, oldfname, newfname):
- logging.info("_doMerge: %s, %s" % (oldfname, newfname))
- os.rename(newfname, oldfname)
- subprocess.check_call(['git', 'add', oldfname])
- translator = self._findLastTranslator(oldfname)
- changelogFname = self._updateChangeLog(domain, lang, translator)
- subprocess.check_call(['git', 'add', changelogFname])
- subprocess.check_call(['git', 'diff', 'HEAD'])
- res = raw_input('commit this (Y/n): ')
- if res == '' or res == 'y' or res == 'Y':
- commitMessage = '%s: %s by %s from TP' % (domain, lang2Name[lang], translator)
- subprocess.check_call(['git', 'commit', '-m', commitMessage])
-
- def _downloadFile(self, url):
- fd, ofname = tempfile.mkstemp(dir=self.home)
- ofile = os.fdopen(fd, 'wb')
- ofile.write(urllib.urlopen(url).read())
- ofile.close()
- self.tmpfiles.append(ofname)
- return ofname
-
- def _diff(self, fname1, fname2):
- subprocess.call(['diff', '-u', fname1, fname2])
-
- def __del__(self):
- for fname in self.tmpfiles:
- logging.info(fname)
- if os.path.exists(fname):
- os.unlink(fname)
-
- def _findLastTranslator(self, fname):
- prefix ='"Last-Translator: '
- for line in file(fname):
- if line.startswith(prefix):
- line = line[len(prefix):]
- return line[:line.index('<')].strip()
- return None
-
- def _updateChangeLog(self, domain, lang, translator):
- changelogFname = os.path.join(self.home, 'ChangeLog')
- lines = file(changelogFname).readlines()
- section, rest = self._findFirstSection(lines)
- before, middle, after = self._findDomainLines(section, domain)
- self._updateChangeLog2(middle, domain, lang, translator)
- file(changelogFname, 'w').writelines(before + middle + after + rest)
- return changelogFname
-
- def _updateChangeLog2(self, lines, domain, lang, translator):
- if not lines:
- line = ' [ ISO %s translations ]\n' % domain[4:].replace('_', '-')
- lines[:] = [line, '\n']
-
- line = ' * %s by %s (TP)\n' % (lang2Name[lang], translator)
- lines[-1:-1] = [line]
-
- def _findFirstSection(self, lines):
- for i in range(1, len(lines)):
- if lines[i].startswith('iso-codes'):
- return lines[:i], lines[i:]
-
- def _findDomainLines(self, lines, domain):
- keyword = '[ ISO %s translations ]' % domain[4:].replace('_', '-')
-
- i1 = None
- i2 = None
- for i in range(len(lines)):
- line = lines[i]
- if keyword in line:
- i1 = i
- break
-
- if i1 is not None:
- for i in range(i1, len(lines)):
- line = lines[i]
- if not line.strip():
- i2 = i
- break
-
- if i1 is None:
- return lines[:-1], [], lines[-1:]
- else:
- return lines[:i1], lines[i1:i2+1], lines[i2+1:]
-
-def main():
- if len(sys.argv) != 3:
- sys.stderr.write('Usage: %s <domain> <lang>\n' % os.path.basename(sys.argv[0]))
- sys.exit(2)
- isocodes = Isocodes()
- isocodes.merge(sys.argv[1], sys.argv[2])
-
-
-if __name__ == '__main__':
- logging.basicConfig(level=logging.INFO)
- main()