diff --git a/web_translate_dialog/models/__init__.py b/web_translate_dialog/models/__init__.py index fdd41ab..4e589bc 100755 --- a/web_translate_dialog/models/__init__.py +++ b/web_translate_dialog/models/__init__.py @@ -1,4 +1,4 @@ # -*- coding: utf-8 -*- from . import translation - +from . import res_partner # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/web_translate_dialog/models/res_partner.py b/web_translate_dialog/models/res_partner.py new file mode 100644 index 0000000..4b021a3 --- /dev/null +++ b/web_translate_dialog/models/res_partner.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +from openerp import models, fields, api +import re + +class ResPartner(models.Model): + _inherit = 'res.partner' + + @api.multi + def write(self, vals): + res = super(ResPartner, self).write(vals) + if self._context.get('transpass', False): + return res + + trans = self.env['ir.translation'] + for l in self: + if 'name' in vals: + name = "res.partner,name" + trans_search = trans.search([('lang','=','th_TH'), + ('name','=',name), + ('type','=','model'), + ('res_id', '=', l.id)], limit=1) + if trans_search: + lang = self._context.get('lang', False) + trans_src = trans_search.src.replace(" ", "") + trans_value = trans_search.value.replace(" ", "") + pattern = re.compile(r"[a-zA-Z]") + char_name = re.findall(pattern, vals['name'].replace(" ", "")) + char_src = re.findall(pattern, trans_src) + char_value = re.findall(pattern, trans_value) + + # Case Thai All + if not char_src and not char_value and not char_name: + l.with_context(transpass=True, lang="en_US").write({'name':vals['name']}) + trans_search.write({ + 'value': vals['name'], + 'src': vals['name'], + }) + else: + # Case en_US update 'src' away + if lang == 'en_US': + trans_search.write({ + 'src': vals['name'], + }) + # name thai and value(old) thai >> update new value + if (not char_name and not char_value) or (char_name and char_value and char_src): + trans_search.write({ + 'value': vals['name'] + }) + elif lang == 'th_TH': + if char_name and char_value and char_src: + trans_search.write({ + 'src': vals['name'], + 'source': vals['name'], + 'value': vals['name'], + }) + return res \ No newline at end of file diff --git a/web_translate_dialog/models/translation.py b/web_translate_dialog/models/translation.py index 61ac373..a76176f 100755 --- a/web_translate_dialog/models/translation.py +++ b/web_translate_dialog/models/translation.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- from openerp.models import BaseModel from openerp import api, models, _ +import re + @api.v7 def copy_translations(self, cr, uid, old_id, new_id, context=None): @@ -29,11 +31,50 @@ def set_translation(self, model, res_id, field_list, ('name','=',name), ('type','=','model'), ('res_id', '=', res_id)]) + if trans_search and lang_code == context['lang']: trans_search.with_context(context).\ write({'value': data[field_name]}) elif trans_search and lang_code != context['lang']: trans_search.with_context(context).\ - write({'source': data[field_name]}) + write({'src': data[field_name], 'source': data[field_name]}) + + trans_search = self.search([('lang','=','th_TH'), + ('name','=',name), + ('type','=','model'), + ('res_id', '=', res_id)]) + trans_src = trans_search.src.replace(" ", "") + trans_value = trans_search.value.replace(" ", "") + pattern = re.compile(r"[a-zA-Z]") + char_name = re.findall(pattern, data[field_name].replace(" ", "")) + char_src = re.findall(pattern, trans_src) + char_value = re.findall(pattern, trans_value) + + if trans_search and context['lang'] == 'th_TH' and not char_name: + trans_search.with_context(lang="th_TH").\ + write({ + 'value': data[field_name] + }) + if trans_search and context['lang'] == 'th_TH' and not char_name and not char_src: + trans_search.with_context(lang="en_US").\ + write({ + 'src': data[field_name], + 'source': data[field_name] + }) + if trans_search and context['lang'] == 'th_TH' and char_name and char_src and char_value: + trans_search.with_context(lang="en_US").\ + write({ + 'src': data[field_name], + 'source': data[field_name], + 'value': data[field_name] + }) + if trans_search and context['lang'] == 'en_US' and char_name and char_src and char_value: + trans_search.with_context(lang="en_US").\ + write({ + 'src': data[field_name], + 'source': data[field_name], + 'value': data[field_name] + }) + return True # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/web_translate_dialog/static/src/css/base.css b/web_translate_dialog/static/src/css/base.css index 8f88484..76ceed2 100755 --- a/web_translate_dialog/static/src/css/base.css +++ b/web_translate_dialog/static/src/css/base.css @@ -1,6 +1,21 @@ +.openerp .oe_form_field_translatable > input, +.openerp .oe_form .oe_form_required .oe_translation_field > input { + # pointer-events:none !important; + # background: #E5E5E5 !important; +} + .openerp .oe_translation_field { width: 95%; } + .openerp .oe_translation_field.touched { border: 1px solid green !important; } + +.openerp .oe_form .oe_input_icon{ + margin: 3px 0 0 3px !important; +} + +.openerp .oe_form .oe_form_field_char input{ + width: calc(100% - 24px) !important; +} \ No newline at end of file