Mercurial > tryton-tools
view translate_pycountry.py @ 248:83bf42767d85 default tip
Update version in sao.js after release
issue11852
| author | Cédric Krier <ced@b2ck.com> |
|---|---|
| date | Tue, 01 Nov 2022 16:39:45 +0100 |
| parents | 3451d9a811f2 |
| children |
line wrap: on
line source
#!/usr/bin/env python3 from optparse import OptionParser from proteus import config, Model, Wizard import pycountry import gettext def main(options): config.set_trytond(database=options.database, user=options.user) Language = Model.get('ir.lang') if options.lang: codes = [options.lang] else: languages = Language.find([('translatable', '=', True)]) codes = [l.code for l in languages] translation_set = Wizard('ir.translation.set') translation_set.execute('set_') translation_clean = Wizard('ir.translation.clean') translation_clean.execute('clean') for lang in Language.find([('code', 'in', codes)]): translation_update = Wizard('ir.translation.update') translation_update.form.language = lang translation_update.execute('update') for lang in codes: for model, module, iso in [ ('country.country', 'country', 'iso3166'), ('country.subdivision', 'country', 'iso3166_2'), ('currency.currency', 'currency', 'iso4217'), ]: translate(model, module, iso, lang) def translate(model, module, iso, lang): Translation = Model.get('ir.translation') Country = Model.get(model) id2country = dict((c.id, c) for c in Country.find()) try: gnutranslation = gettext.translation(iso, pycountry.LOCALES_DIR, languages=[lang]) except IOError: return for translation in Translation.find([ ('lang', '=', lang), ('module', '=', module), ('res_id', '>', 0), ('name', '=', '%s,name' % model), ]): country = id2country[translation.res_id] name = gnutranslation.gettext(country.name) translation.value = name translation.fuzzy = False translation.save() if __name__ == '__main__': parser = OptionParser() parser.add_option('-d', '--database', dest='database') parser.add_option('-u', '--user', dest='user') parser.add_option('-l', '--language', dest='lang') parser.set_defaults(user='admin', database=None, lang=None) options, args = parser.parse_args() if args: parser.error('Wrong arguments') if not options.database: parser.error('You must define a database') main(options)
