translate: port to pythonic logging, filename in a message

It is good to know which .po file we are currently loading.
Warning: some messages moved from the 'db' logger to the 'i18n' one.

bzr revid: p_christ@hol.gr-20101123135835-k6d6r7sgif5zhb75
This commit is contained in:
P. Christeas 2010-11-23 15:58:35 +02:00
parent 81a1a310fc
commit c67f1746f4
1 changed files with 18 additions and 16 deletions

View File

@ -27,6 +27,7 @@ import itertools
import locale
import os
import re
import logging
import tarfile
import tempfile
from os.path import join
@ -220,11 +221,11 @@ def unquote(str):
# class to handle po files
class TinyPoFile(object):
def __init__(self, buffer):
self.logger = netsvc.Logger()
self.logger = logging.getLogger('i18n')
self.buffer = buffer
def warn(self, msg):
self.logger.notifyChannel("i18n", netsvc.LOG_WARNING, msg)
self.logger.warning(msg)
def __iter__(self):
self.buffer.seek(0)
@ -483,7 +484,7 @@ def in_modules(object_name, modules):
return module in modules
def trans_generate(lang, modules, dbname=None):
logger = netsvc.Logger()
logger = logging.getLogger('i18n')
if not dbname:
dbname=tools.config['db_name']
if not modules:
@ -534,12 +535,12 @@ def trans_generate(lang, modules, dbname=None):
xml_name = "%s.%s" % (module, encode(xml_name))
if not pool.get(model):
logger.notifyChannel("db", netsvc.LOG_ERROR, "Unable to find object %r" % (model,))
logger.error("Unable to find object %r", model)
continue
exists = pool.get(model).exists(cr, uid, res_id)
if not exists:
logger.notifyChannel("db", netsvc.LOG_WARNING, "Unable to find object %r with id %d" % (model, res_id))
logger.warning("Unable to find object %r with id %d", model, res_id)
continue
obj = pool.get(model).browse(cr, uid, res_id)
@ -566,7 +567,7 @@ def trans_generate(lang, modules, dbname=None):
# export fields
if not result.has_key('fields'):
logger.notifyChannel("db",netsvc.LOG_WARNING,"res has no fields: %r" % result)
logger.warning("res has no fields: %r", result)
continue
for field_name, field_def in result['fields'].iteritems():
res_name = name + ',' + field_name
@ -595,7 +596,7 @@ def trans_generate(lang, modules, dbname=None):
try:
field_name = encode(obj.name)
except AttributeError, exc:
logger.notifyChannel("db", netsvc.LOG_ERROR, "name error in %s: %s" % (xml_name,str(exc)))
logger.error("name error in %s: %s", xml_name, str(exc))
continue
objmodel = pool.get(obj.model)
if not objmodel or not field_name in objmodel._columns:
@ -643,7 +644,7 @@ def trans_generate(lang, modules, dbname=None):
for t in parse_func(d.iter()):
push_translation(module, report_type, name, 0, t)
except (IOError, etree.XMLSyntaxError):
logging.getLogger("i18n").exception("couldn't export translation for report %s %s %s", name, report_type, fname)
logger.exception("couldn't export translation for report %s %s %s", name, report_type, fname)
for field_name,field_def in obj._table._columns.items():
if field_def.translate:
@ -772,22 +773,23 @@ def trans_generate(lang, modules, dbname=None):
return out
def trans_load(db_name, filename, lang, strict=False, verbose=True, context={}):
logger = netsvc.Logger()
logger = logging.getLogger('i18n')
try:
fileobj = open(filename,'r')
logger.info("loading %s", filename)
fileformat = os.path.splitext(filename)[-1][1:].lower()
r = trans_load_data(db_name, fileobj, fileformat, lang, strict=strict, verbose=verbose, context=context)
fileobj.close()
return r
except IOError:
if verbose:
logger.notifyChannel("i18n", netsvc.LOG_ERROR, "couldn't read translation file %s" % (filename,))
logger.error("couldn't read translation file %s", filename)
return None
def trans_load_data(db_name, fileobj, fileformat, lang, strict=False, lang_name=None, verbose=True, context={}):
logger = netsvc.Logger()
logger = logging.getLogger('i18n')
if verbose:
logger.notifyChannel("i18n", netsvc.LOG_INFO, 'loading translation file for language %s' % (lang))
logger.info('loading translation file for language %s', lang)
pool = pooler.get_pool(db_name)
lang_obj = pool.get('res.lang')
trans_obj = pool.get('ir.translation')
@ -811,7 +813,7 @@ def trans_load_data(db_name, fileobj, fileformat, lang, strict=False, lang_name=
if fail:
lc = locale.getdefaultlocale()[0]
msg = 'Unable to get information for locale %s. Information from the default locale (%s) have been used.'
logger.notifyChannel('i18n', netsvc.LOG_WARNING, msg % (lang, lc))
logger.warning(msg, lang, lc)
if not lang_name:
lang_name = tools.get_languages().get(lang, lang)
@ -850,6 +852,7 @@ def trans_load_data(db_name, fileobj, fileformat, lang, strict=False, lang_name=
reader = TinyPoFile(fileobj)
f = ['type', 'name', 'res_id', 'src', 'value']
else:
logger.error('Bad file format: %s', fileformat)
raise Exception(_('Bad file format'))
# read the rest of the file
@ -928,11 +931,10 @@ def trans_load_data(db_name, fileobj, fileformat, lang, strict=False, lang_name=
cr.commit()
cr.close()
if verbose:
logger.notifyChannel("i18n", netsvc.LOG_INFO,
"translation file loaded succesfully")
logger.info("translation file loaded succesfully")
except IOError:
filename = '[lang: %s][format: %s]' % (iso_lang or 'new', fileformat)
logger.notifyChannel("i18n", netsvc.LOG_ERROR, "couldn't read translation file %s" % (filename,))
logger.exception("couldn't read translation file %s", filename)
def get_locales(lang=None):
if lang is None: