diff --git a/addons/base_gengo/__init__.py b/addons/base_gengo/__init__.py index c434c6b1843..b4fd54acd21 100644 --- a/addons/base_gengo/__init__.py +++ b/addons/base_gengo/__init__.py @@ -23,4 +23,5 @@ import res_company import ir_translation import wizard import res_lang + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_gengo/gengo_sync_schedular_data.xml b/addons/base_gengo/gengo_sync_schedular_data.xml index ab78b59e0b8..2a12626713c 100644 --- a/addons/base_gengo/gengo_sync_schedular_data.xml +++ b/addons/base_gengo/gengo_sync_schedular_data.xml @@ -12,7 +12,7 @@ - + Gengo Sync Translation (Request) diff --git a/addons/base_gengo/ir_translation.py b/addons/base_gengo/ir_translation.py index 7bda5023592..297e449ecdc 100644 --- a/addons/base_gengo/ir_translation.py +++ b/addons/base_gengo/ir_translation.py @@ -29,7 +29,7 @@ class ir_translation(osv.Model): 'gengo_comment': fields.text("Comments"), 'gengo_translation': fields.boolean("Translation", help='This term has to be translated by Gengo automatically'), 'gengo_control': fields.boolean('Active'), - 'job_id':fields.char('Gengo Job Id',size=32), + 'job_id': fields.char('Gengo Job Id', size=32), } _defaults = { diff --git a/addons/base_gengo/res_company.py b/addons/base_gengo/res_company.py index 8e26f406f30..9062095bb87 100644 --- a/addons/base_gengo/res_company.py +++ b/addons/base_gengo/res_company.py @@ -34,9 +34,9 @@ class res_company(osv.Model): ('ultra', 'Ultra')], "Tier types", required=True), "gengo_comment": fields.text("comments"), "gengo_auto_approve": fields.boolean("Auto Approve Translation ?", help="Jobs are Automatically Approved by Gengo."), - "fields_ids": fields.many2many('ir.model.fields', 'fields_company_rel', 'field_id', 'model_id', 'fields'), } _defaults = { "gengo_tier": "machine", + "gengo_auto_approve": True, } diff --git a/addons/base_gengo/res_company_view.xml b/addons/base_gengo/res_company_view.xml index 3606fbf58da..60cd767b140 100644 --- a/addons/base_gengo/res_company_view.xml +++ b/addons/base_gengo/res_company_view.xml @@ -24,9 +24,6 @@ - - - diff --git a/addons/base_gengo/wizard/__init__.py b/addons/base_gengo/wizard/__init__.py index 3e6c687d9de..f661b3b8114 100644 --- a/addons/base_gengo/wizard/__init__.py +++ b/addons/base_gengo/wizard/__init__.py @@ -21,4 +21,5 @@ import gengo_update_translation import gengo_update_message + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_gengo/wizard/gengo_update_translation.py b/addons/base_gengo/wizard/gengo_update_translation.py index 0c74dcf23e2..a7deee78a60 100644 --- a/addons/base_gengo/wizard/gengo_update_translation.py +++ b/addons/base_gengo/wizard/gengo_update_translation.py @@ -21,6 +21,7 @@ from osv import osv from tools.translate import _ +import re try: from mygengo import MyGengo except ImportError: @@ -29,54 +30,31 @@ except ImportError: import logging import tools import time -from tools.translate import _ _logger = logging.getLogger(__name__) - LIMIT = 20 -LANG_MAPPING = { - 'ar': 'Arabic', - 'id': 'Indonesian', - 'nl': 'Dutch', - 'fr-ca': 'French (Canada)', - 'pl': 'Polish', - 'zh-tw': 'Chinese (Traditional)', - 'sv': 'Swedish', - 'ko': 'Korean', - 'pt': 'Portuguese (Europe)', - 'en': 'English', - 'ja': 'Japanese', - 'es': 'Spanish (Spain)', - 'zh': 'Chinese (Simplified)', - 'de': 'German', - 'fr': 'French', - 'ru': 'Russian', - 'it': 'Italian', - 'pt-br': 'Portuguese (Brazil)', -} - LANG_CODE_MAPPING = { - 'ar_SA': 'ar', - 'id_ID': 'id', - 'nl_NL': 'nl', - 'fr_CA': 'fr-ca', - 'pl': 'pl', - 'zh_TW': 'zh-tw', - 'sv_SE': 'sv', - 'ko_KR': 'ko', - 'pt_PT': 'pt', - 'en_US': 'en', - 'ja_JP': 'ja', - 'es_ES': 'es', - 'zh_CN': 'zh', - 'de_DE': 'de', - 'fr_FR': 'fr', - 'fr_BE': 'fr', - 'ru_RU': 'ru', - 'it_IT': 'it', - 'pt_BR': 'pt-br' + 'ar_SA': ('ar', 'Arabic'), + 'id_ID': ('id', 'Indonesian'), + 'nl_NL': ('nl', 'Dutch'), + 'fr_CA': ('fr-ca', 'French (Canada)'), + 'pl': ('Polish'), + 'zh_TW': ('zh-tw', 'Chinese (Traditional)'), + 'sv_SE': ('sv', 'Swedish'), + 'ko_KR': ('ko', 'Korean'), + 'pt_PT': ('pt', 'Portuguese (Europe)'), + 'en_US': ('en', 'English'), + 'ja_JP': ('ja', 'Japanese'), + 'es_ES': ('es', 'Spanish (Spain)'), + 'zh_CN': ('zh', 'Chinese (Simplified)'), + 'de_DE': ('de', 'German'), + 'fr_FR': ('fr', 'French'), + 'fr_BE': ('fr', 'French'), + 'ru_RU': ('ru', 'Russian'), + 'it_IT': ('it', 'Italian'), + 'pt_BR': ('pt-br', 'Portuguese (Brazil)') } cron_vals = { @@ -97,12 +75,12 @@ class base_update_translation(osv.osv_memory): def gengo_authentication(self, cr, uid, context=None): ''' To Send Request and Get Response from Gengo User needs Public and Private - key for that user need to signup to gengo and get public and private + key for that user need to sign up to gengo and get public and private key which is provided by gengo to authentic user ''' user = self.pool.get('res.users').browse(cr, uid, uid, context) if not user.company_id.gengo_public_key or not user.company_id.gengo_private_key: - return (False, "Invalid gengo configuration.\nEither pulic key or private key is missing.") + return (False, "Invalid gengo configuration.\n Either public key or private key is missing.") try: gengo = MyGengo( public_key=user.company_id.gengo_public_key.encode('ascii'), @@ -112,7 +90,7 @@ class base_update_translation(osv.osv_memory): gengo.getAccountStats() return (True, gengo) except Exception, e: - return (False, "Gengo Connection Error\n"+e.message) + return (False, "Gengo Connection Error\n" + e.message) def pack_jobs_request(self, cr, uid, term_ids, context): jobs = {} @@ -122,17 +100,18 @@ class base_update_translation(osv.osv_memory): if gengo_parameter_pool.company_id.gengo_auto_approve: auto_approve = 1 for term in translation_pool.browse(cr, uid, term_ids, context): - if term.src and term.src != "": - job = {'type': 'text', - 'slug': 'single::English to' + LANG_CODE_MAPPING[term.lang], - 'tier': tools.ustr(gengo_parameter_pool.company_id.gengo_tier), - 'body_src': term.src, - 'lc_src': 'en', - 'lc_tgt': LANG_CODE_MAPPING[term.lang], - 'auto_approve': auto_approve, - 'comment': gengo_parameter_pool.company_id.gengo_comment, - } - jobs.update({term.id: job}) + if term.src: + if re.search(r"\w",term.src): + job = {'type': 'text', + 'slug': 'single::English to ' + LANG_CODE_MAPPING[term.lang][1], + 'tier': tools.ustr(gengo_parameter_pool.company_id.gengo_tier), + 'body_src': term.src, + 'lc_src': 'en', + 'lc_tgt': LANG_CODE_MAPPING[term.lang][0], + 'auto_approve': auto_approve, + 'comment': gengo_parameter_pool.company_id.gengo_comment, + } + jobs.update({term.id: job}) return {'jobs': jobs} def check_lang_support(self, cr, uid, langs, context=None): @@ -150,9 +129,10 @@ class base_update_translation(osv.osv_memory): if lang_pair['opstat'] == 'ok': for g_lang in lang_pair['response']: for l in langs: - if LANG_CODE_MAPPING[l] == g_lang['lc_tgt'] and g_lang['tier'] == tier: + if LANG_CODE_MAPPING[l][0] == g_lang['lc_tgt'] and g_lang['tier'] == tier: new_langs.append(l) return list(set(new_langs)) + def _update_terms(self, cr, uid, ids, response, tier, context): translation_pool = self.pool.get('ir.translation') for jobs in response['jobs']: @@ -167,17 +147,18 @@ class base_update_translation(osv.osv_memory): def _send_translation_terms(self, cr, uid, ids, term_ids, context): """ - Lazy Polling will be perform when user or cron request for the trnalstion. + Lazy Polling will be perform when user or cron request for the translation. """ user = self.pool.get('res.users').browse(cr, uid, uid, context) flag, gengo = self.gengo_authentication(cr, uid, context) if flag: - request = self.pack_jobs_request(cr, uid, term_ids, context) - if request: + if request['jobs']: result = gengo.postTranslationJobs(jobs=request) if result['opstat'] == 'ok': self._update_terms(cr, uid, ids, result['response'], user.company_id.gengo_tier, context) + else: + _logger.info('') else: _logger.error(gengo) return True @@ -197,7 +178,7 @@ class base_update_translation(osv.osv_memory): context = {} lang_pool = self.pool.get('res.lang') super(base_update_translation, self).act_update(cr, uid, ids, context) - msg = "1. Translation file loaded succesfully.\n2. Processing Gengo Translation:\n" + msg = "1. Translation file loaded successfully.\n2. Processing Gengo Translation:\n" flag, gengo = self.gengo_authentication(cr, uid, context) if not flag: msg += gengo @@ -207,11 +188,11 @@ class base_update_translation(osv.osv_memory): lang_search = lang_pool.search(cr, uid, [('gengo_sync', '=', True), ('id', '=', lang_id[0])]) if lang_search: - msg += 'This language %s is alreay in queue for processing.' % (res.lang) + msg += 'This language %s is already in queue for processing.' % (res.lang) else: msg += "Translation for language %s is queued for processing." % (res.lang) lang_pool.write(cr, uid, lang_id, {'gengo_sync': True}) - _logger.info("Your translation request for language '%s' has been send sucessfully.", res.lang) + _logger.info("Your translation request for language '%s' has been send successfully.", res.lang) self.do_check_schedular(cr, uid, 'gengo_sync_send_request_scheduler', 'Gengo Sync Translation (Request)', '_sync_request', context) self.do_check_schedular(cr, uid, 'gengo_sync_receive_request_scheduler', 'Gengo Sync Translation (Response)', '_sync_response', context)