Olivier Dony (OpenERP) has proposed merging 
lp:~openerp-dev/openobject-server/trunk-scrap-translatedialog-fme into 
lp:openobject-server.

Requested reviews:
  OpenERP Core Team (openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-scrap-translatedialog-fme/+merge/122641
-- 
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-scrap-translatedialog-fme/+merge/122641
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-server/trunk-scrap-translatedialog-fme.
=== modified file 'openerp/addons/base/ir/ir.xml'
--- openerp/addons/base/ir/ir.xml	2012-08-31 12:53:36 +0000
+++ openerp/addons/base/ir/ir.xml	2012-09-04 09:30:50 +0000
@@ -1173,6 +1173,7 @@
                     <filter icon="terp-gdu-smart-failing"
                         string="Untranslated"
                         domain="['|',('value', '=', False),('value','=','')]"/>
+                    <field name="name"/>
                     <field name="lang"/>
                     <field name="src"/>
                     <field name="value"/>
@@ -1213,12 +1214,12 @@
             <field name="name">Translations</field>
             <field name="model">ir.translation</field>
             <field name="arch" type="xml">
-                <tree string="Translations">
-                    <field name="src"/>
+                <tree string="Translations" editable="bottom">
+                    <field name="src" readonly="True"/>
                     <field name="value"/>
-                    <field name="name"/>
-                    <field name="lang"/>
-                    <field name="type"/>
+                    <field name="name" readonly="True"/>
+                    <field name="lang" readonly="True"/>
+                    <field name="type" readonly="True"/>
                 </tree>
             </field>
         </record>

=== modified file 'openerp/addons/base/ir/ir_translation.py'
--- openerp/addons/base/ir/ir_translation.py	2012-08-30 14:50:00 +0000
+++ openerp/addons/base/ir/ir_translation.py	2012-09-04 09:30:50 +0000
@@ -328,6 +328,53 @@
         result = super(ir_translation, self).unlink(cursor, user, ids, context=context)
         return result
 
+    def translate_fields(self, cr, uid, model, id, field=None, context=None):
+        trans_model = self.pool.get(model)
+        domain = ['&', ('res_id', '=', id), ('name', 'ilike', model + ',')]
+        langs_ids = self.pool.get('res.lang').search(cr, uid, [], context=context)
+        langs = [lg.get('code') for lg in self.pool.get('res.lang').read(cr, uid, langs_ids, ['code'], context=context)]
+        main_lang = langs.pop(0)
+        translatable_fields = []
+        for f, info in trans_model._all_columns.items():
+            if info.column.translate:
+                if info.parent_model:
+                    domain_id = trans_model.read(cr, uid, [id], [info.parent_column], context=context)[0][info.parent_column][0]
+                    translatable_fields.append({ 'name': f, 'id': domain_id, 'model': info.parent_model })
+                    domain.insert(0, '|')
+                    domain.extend(['&', ('res_id', '=', domain_id), ('name', '=', "%s,%s" % (info.parent_model, f))])
+                else:
+                    translatable_fields.append({ 'name': f, 'id': id, 'model': model })
+        if len(langs):
+            fields = [f.get('name') for f in translatable_fields]
+            record = trans_model.read(cr, uid, [id], fields, context={ 'lang': main_lang })[0]
+            for lg in langs:
+                for f in translatable_fields:
+                    # Check if record exists, else create it (at once)
+                    sql = """INSERT INTO ir_translation (lang, src, name, type, res_id, value)
+                        SELECT %s, %s, %s, 'field', %s, %s WHERE NOT EXISTS
+                        (SELECT 1 FROM ir_translation WHERE lang=%s AND name=%s AND res_id=%s);
+                        UPDATE ir_translation SET src = %s WHERE lang=%s AND name=%s AND res_id=%s;
+                        """
+                    src = record[f['name']]
+                    name = "%s,%s" % (f['model'], f['name'])
+                    cr.execute(sql, (lg, src , name, f['id'], src, lg, name, f['id'], src, lg, name, id))
+
+        action = {
+            'name': 'Translate',
+            'view_type': 'list',
+            'view_mode': 'list',
+            'res_model': 'ir.translation',
+            'type': 'ir.actions.act_window',
+            'domain': domain,
+            'views': [(False, 'list'), (False, 'form')],
+        }
+        if field:
+            info = trans_model._all_columns[field]
+            action['context'] = {
+                'search_default_name': "%s,%s" % (info.parent_model or model, field)
+            }
+        return action
+
     def _get_import_cursor(self, cr, uid, context=None):
         """ Return a cursor-like object for fast inserting translations
         """

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to