summaryrefslogtreecommitdiff
path: root/bin/addons/base/module/wizard/base_export_language.py
diff options
context:
space:
mode:
authorNumerigraphe - Lionel Sausin <ls@numerigraphe.fr>2010-11-12 15:10:41 +0100
committerNumerigraphe - Lionel Sausin <ls@numerigraphe.fr>2010-11-12 15:10:41 +0100
commit182cf2b196da0d1f55ddfdcff62058b423e1bbc0 (patch)
tree779b50e2e54b1624ba669b4a3f56bb6407c08d49 /bin/addons/base/module/wizard/base_export_language.py
parente013734045bbaae906748a8026455bac6786568e (diff)
parentcc0d270bab0d0b7862430c3e527f7edc02d1d587 (diff)
[MERGE] sync with the trunk
bzr revid: ls@numerigraphe.fr-20101112141041-19kpvr7pzxqankqo
Diffstat (limited to 'bin/addons/base/module/wizard/base_export_language.py')
-rw-r--r--bin/addons/base/module/wizard/base_export_language.py89
1 files changed, 89 insertions, 0 deletions
diff --git a/bin/addons/base/module/wizard/base_export_language.py b/bin/addons/base/module/wizard/base_export_language.py
new file mode 100644
index 00000000000..1b43b561ac3
--- /dev/null
+++ b/bin/addons/base/module/wizard/base_export_language.py
@@ -0,0 +1,89 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import tools
+import base64
+import cStringIO
+import pooler
+from osv import fields,osv
+from tools.translate import _
+from tools.misc import get_iso_codes
+
+class base_language_export(osv.osv_memory):
+
+ def _get_languages(self, cr, uid, context):
+ lang_obj=pooler.get_pool(cr.dbname).get('res.lang')
+ ids=lang_obj.search(cr, uid, ['&', ('active', '=', True), ('translatable', '=', True),])
+ langs=lang_obj.browse(cr, uid, ids)
+ return [(lang.code, lang.name) for lang in langs]
+
+ def act_cancel(self, cr, uid, ids, context=None):
+ #self.unlink(cr, uid, ids, context)
+ return {'type':'ir.actions.act_window_close' }
+
+ def act_destroy(self, *args):
+ return {'type':'ir.actions.act_window_close' }
+
+ def act_getfile(self, cr, uid, ids, context=None):
+ this = self.browse(cr, uid, ids)[0]
+ mods = map(lambda m: m.name, this.modules) or ['all']
+ mods.sort()
+ buf=cStringIO.StringIO()
+ tools.trans_export(this.lang, mods, buf, this.format, dbname=cr.dbname)
+ if this.format == 'csv':
+ this.advice = _("Save this document to a .CSV file and open it with your favourite spreadsheet software. The file encoding is UTF-8. You have to translate the latest column before reimporting it.")
+ elif this.format == 'po':
+ if not this.lang:
+ this.format = 'pot'
+ this.advice = _("Save this document to a %s file and edit it with a specific software or a text editor. The file encoding is UTF-8.") % ('.'+this.format,)
+ elif this.format == 'tgz':
+ ext = this.lang and '.po' or '.pot'
+ this.advice = _('Save this document to a .tgz file. This archive containt UTF-8 %s files and may be uploaded to launchpad.') % (ext,)
+ filename = _('new')
+ if not this.lang and len(mods) == 1:
+ filename = mods[0]
+ if this.lang:
+ filename = get_iso_codes(this.lang)
+ this.name = "%s.%s" % (filename, this.format)
+ out=base64.encodestring(buf.getvalue())
+ buf.close()
+ return self.write(cr, uid, ids, {'state':'get', 'data':out, 'advice':this.advice, 'name':this.name}, context=context)
+
+ _name = "base.language.export"
+ _inherit = "ir.wizard.screen"
+ _columns = {
+ 'name': fields.char('Filename', 16, readonly=True),
+ 'lang': fields.selection(_get_languages, 'Language', help='To export a new language, do not select a language.'), # not required: unset = new language
+ 'format': fields.selection( ( ('csv','CSV File'), ('po','PO File'), ('tgz', 'TGZ Archive')), 'File Format', required=True),
+ 'modules': fields.many2many('ir.module.module', 'rel_modules_langexport', 'wiz_id', 'module_id', 'Modules', domain=[('state','=','installed')]),
+ 'data': fields.binary('File', readonly=True),
+ 'advice': fields.text('Advice', readonly=True),
+ 'state': fields.selection( ( ('choose','choose'), # choose language
+ ('get','get'), # get the file
+ ) ),
+ }
+ _defaults = {
+ 'state': lambda *a: 'choose',
+ 'name': lambda *a: 'lang.tar.gz'
+ }
+base_language_export()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file