[tryton-debian-vcs] tryton-server branch debian-squeeze-2.2 created. 98939b6e23bf96a07217085f4f40c8ef1ea19dde

Mathias Behrle tryton-debian-vcs at alioth.debian.org
Wed Nov 27 17:15:10 UTC 2013


The following commit has been merged in the debian-squeeze-2.2 branch:
https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi/?p=tryton/tryton-server.git;a=commitdiff;h=98939b6e23bf96a07217085f4f40c8ef1ea19dde
commit 98939b6e23bf96a07217085f4f40c8ef1ea19dde
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sat Dec 17 14:08:34 2011 +0100

    Bumping X-Python-Version to >=2.6.

diff --git a/debian/control b/debian/control
index c806bb6..7cfc491 100644
--- a/debian/control
+++ b/debian/control
@@ -11,7 +11,7 @@ Standards-Version: 3.9.1
 Homepage: http://www.tryton.org/
 Vcs-Browser: http://git.debian-maintainers.org/?p=tryton/tryton-server.git
 Vcs-Git: git://git.debian-maintainers.org/git/tryton/tryton-server.git
-X-Python-Version: >= 2.5
+X-Python-Version: >= 2.6
 
 Package: tryton-server
 Architecture: all
commit 095473a993809966d61d6ffa54b23c17595080f6
Author: Daniel Baumann <daniel at debian.org>
Date:   Sun Jul 10 15:19:18 2011 +0200

    Prefixing variables in maintainer scripts in order to ensure not to get in the way of the rest of the environment (and in anticipation of using debconf later on).

diff --git a/debian/tryton-server.postinst b/debian/tryton-server.postinst
index 91b977e..8be1c27 100644
--- a/debian/tryton-server.postinst
+++ b/debian/tryton-server.postinst
@@ -2,31 +2,31 @@
 
 set -e
 
-USER="tryton"
-CONFFILE="/etc/trytond.conf"
-LOGDIR="/var/log/tryton"
-HOMEDIR="/var/lib/tryton"
+TRYTON_USER="tryton"
+TRYTON_CONFFILE="/etc/trytond.conf"
+TRYTON_LOGDIR="/var/log/tryton"
+TRYTON_HOMEDIR="/var/lib/tryton"
 
 case "${1}" in
 	configure)
 		# Creating system user
-		adduser --home ${HOMEDIR} --no-create-home --quiet --system --group ${USER}
+		adduser --home ${TRYTON_HOMEDIR} --no-create-home --quiet --system --group ${TRYTON_USER}
 
 		# Creating home directory (also used for storage of attachments)
-		mkdir -p ${HOMEDIR}
-		chown ${USER}:${USER} ${HOMEDIR}
-		chmod 0750 ${HOMEDIR}
+		mkdir -p ${TRYTON_HOMEDIR}
+		chown ${TRYTON_USER}:${TRYTON_USER} ${TRYTON_HOMEDIR}
+		chmod 0750 ${TRYTON_HOMEDIR}
 
 		# Creating log directory
-		mkdir -p ${LOGDIR}
-		chown ${USER}:adm ${LOGDIR}
-		chmod 0750 ${LOGDIR}
+		mkdir -p ${TRYTON_LOGDIR}
+		chown ${TRYTON_USER}:adm ${TRYTON_LOGDIR}
+		chmod 0750 ${TRYTON_LOGDIR}
 
 		# Setting ownership and permissions on configuration file
 		# trytond uses internal defaults, if it cannot read the
 		# configuration file.
-		chown ${USER}:${USER} ${CONFFILE}
-		chmod 0400 ${CONFFILE}
+		chown ${TRYTON_USER}:${TRYTON_USER} ${TRYTON_CONFFILE}
+		chmod 0400 ${TRYTON_CONFFILE}
 
 		echo
 		echo "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"
diff --git a/debian/tryton-server.postrm b/debian/tryton-server.postrm
index a71d84e..65829b5 100644
--- a/debian/tryton-server.postrm
+++ b/debian/tryton-server.postrm
@@ -2,14 +2,14 @@
 
 set -e
 
-USER="tryton"
+TRYTON_USER="tryton"
 
 case "${1}" in
 	purge)
 		# Removing system user
 		if [ -x /usr/sbin/deluser ]
 		then
-			deluser --quiet --system ${USER}
+			deluser --quiet --system ${TRYTON_USER}
 		fi
 
 		# Removing log directory
commit 99b873b4a441892a32369790f6918e13e0a4f52a
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Wed May 25 00:22:00 2011 +0200

    Fixing creation of log directory for repeated installation.

diff --git a/debian/tryton-server.postinst b/debian/tryton-server.postinst
index 9fc7b42..91b977e 100644
--- a/debian/tryton-server.postinst
+++ b/debian/tryton-server.postinst
@@ -18,7 +18,7 @@ case "${1}" in
 		chmod 0750 ${HOMEDIR}
 
 		# Creating log directory
-		mkdir ${LOGDIR}
+		mkdir -p ${LOGDIR}
 		chown ${USER}:adm ${LOGDIR}
 		chmod 0750 ${LOGDIR}
 
commit fb1bb0458f43731e360472a0297b7dd5128d4328
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Thu Dec 15 14:17:13 2011 +0100

    Updating version in man page.

diff --git a/debian/manpages/trytond.1 b/debian/manpages/trytond.1
index fff7d9f..848c4ad 100644
--- a/debian/manpages/trytond.1
+++ b/debian/manpages/trytond.1
@@ -1,4 +1,4 @@
-.TH TRYTOND 1 "2010\-11\-04" "1.8" "Tryton Application Platform"
+.TH TRYTOND 1 "2011\-12\-15" "2.2" "Tryton Application Platform"
 
 .SH NAME
 trytond \- Tryton Application Platform (Server)
commit b184f7fec0a7c3a405a1ebdadfab618e2488f2b8
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon May 9 15:15:49 2011 +0200

    Improving logging to let handle server rotation of log files.
    
    - trytond now logs to its own directory, thus its TimedRotatingFileHandler
      will no more be overridden by logrotate, which caused locks under certain
      conditions.

diff --git a/debian/tryton-server.default b/debian/tryton-server.default
index 827a232..4143093 100644
--- a/debian/tryton-server.default
+++ b/debian/tryton-server.default
@@ -6,8 +6,8 @@ DAEMONUSER="tryton"
 # Specify an alternate config file (Default: /etc/trytond.conf).
 CONFIGFILE="/etc/trytond.conf"
 
-# Specify the log file (Default: /var/log/trytond.log).
-LOGFILE="/var/log/trytond.log"
+# Specify the log file (Default: /var/log/tryton/trytond.log).
+LOGFILE="/var/log/tryton/trytond.log"
 
 # Specify the verbosity of the server log (-v) (Default: not set).
 #VERBOSE="-v"
diff --git a/debian/tryton-server.init b/debian/tryton-server.init
index c64da73..01a6e2c 100644
--- a/debian/tryton-server.init
+++ b/debian/tryton-server.init
@@ -23,7 +23,7 @@ DESC="Tryton Application Platform"
 DAEMONUSER="tryton"
 PIDDIR="/var/run/${NAME}"
 PIDFILE="${PIDDIR}/${NAME}.pid"
-LOGFILE="/var/log/${NAME}.log"
+LOGFILE="/var/log/tryton/${NAME}.log"
 DEFAULTS="/etc/default/tryton-server"
 CONFIGFILE="/etc/${NAME}.conf"
 DAEMON_OPTS="--config=${CONFIGFILE} --logfile=${LOGFILE}"
diff --git a/debian/tryton-server.postinst b/debian/tryton-server.postinst
index 04c7485..9fc7b42 100644
--- a/debian/tryton-server.postinst
+++ b/debian/tryton-server.postinst
@@ -4,7 +4,7 @@ set -e
 
 USER="tryton"
 CONFFILE="/etc/trytond.conf"
-LOGFILE="/var/log/trytond.log"
+LOGDIR="/var/log/tryton"
 HOMEDIR="/var/lib/tryton"
 
 case "${1}" in
@@ -17,10 +17,10 @@ case "${1}" in
 		chown ${USER}:${USER} ${HOMEDIR}
 		chmod 0750 ${HOMEDIR}
 
-		# Creating log file
-		touch ${LOGFILE}
-		chown ${USER}:adm ${LOGFILE}
-		chmod 0640 ${LOGFILE}
+		# Creating log directory
+		mkdir ${LOGDIR}
+		chown ${USER}:adm ${LOGDIR}
+		chmod 0750 ${LOGDIR}
 
 		# Setting ownership and permissions on configuration file
 		# trytond uses internal defaults, if it cannot read the
diff --git a/debian/tryton-server.postrm b/debian/tryton-server.postrm
index 3c8aba8..a71d84e 100644
--- a/debian/tryton-server.postrm
+++ b/debian/tryton-server.postrm
@@ -12,8 +12,8 @@ case "${1}" in
 			deluser --quiet --system ${USER}
 		fi
 
-		# Removing log file
-		rm -f /var/log/trytond.log
+		# Removing log directory
+		rmdir --ignore-fail-on-non-empty /var/log/tryton
 
 		# Removing (potentially) empty directories
 		rmdir --ignore-fail-on-non-empty /var/lib/tryton
commit f99143f67e1f7fa27ca3a66f6e9843ecfa5f334a
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Nov 1 15:18:22 2011 +0100

    Adding python-polib to pydist-overrides.

diff --git a/debian/pydist-overrides b/debian/pydist-overrides
index b0e3cec..c976334 100644
--- a/debian/pydist-overrides
+++ b/debian/pydist-overrides
@@ -2,3 +2,4 @@ lxml python-lxml
 relatorio python-relatorio
 Genshi python-genshi
 python_dateutil python-dateutil
+polib python-polib
\ No newline at end of file
commit 410420bb8edd4379f44d670f246715c0a7a113ee
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Oct 31 21:03:33 2011 +0100

    Updating Depends and Suggests for version 2.2.0.

diff --git a/debian/control b/debian/control
index 11f293d..c806bb6 100644
--- a/debian/control
+++ b/debian/control
@@ -18,12 +18,14 @@ Architecture: all
 Depends:
  ${misc:Depends}, ${python:Depends}, adduser, python-dateutil, python-genshi,
  python-lxml, python-psycopg2, python-relatorio, python-simplejson,
- python-pkg-resources
+ python-polib, python-pkg-resources
 Recommends:
- logrotate, postgresql, postgresql-client, python-openoffice, python-openssl,
- python-pydot, python-tz, python-webdav, openoffice.org-core,
- openoffice.org-draw, openoffice.org-writer
-Suggests: tryton-client | tryton-neso, python-psyco, python-sphinx
+ postgresql, postgresql-client, python-openssl, python-pydot, python-tz,
+ python-webdav
+Suggests:
+ tryton-client | tryton-neso, python-psyco, python-sphinx, unoconv,
+ openoffice.org-core, openoffice.org-draw, openoffice.org-writer,
+ openoffice.org-calc
 Description: Tryton Application Platform (Server)
  Tryton is a high-level general purpose application platform written in Python
  and using PostgreSQL as database engine. It is the core base of a complete
commit a921076f24e94835b53589160a4c75681f0aba58
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Oct 31 20:43:48 2011 +0100

    Setting the data_path of trytond to the home of the tryton user (Closes: #624350).

diff --git a/debian/patches/01-debian-data-dir b/debian/patches/01-debian-data-dir
new file mode 100644
index 0000000..61ce909
--- /dev/null
+++ b/debian/patches/01-debian-data-dir
@@ -0,0 +1,13 @@
+Author: Mathias Behrle <mathiasb at m9s.biz>
+Description: Set the data path of the server to the home of the Debian tryton user.
+--- tryton-server.orig/etc/trytond.conf	2011-10-31 16:21:47.566296228 +0100
++++ tryton-server/etc/trytond.conf	2011-10-31 17:50:29.393338413 +0100
+@@ -57,7 +57,7 @@
+ #smtp_user = False
+ 
+ # Configure the path to store attachments and sqlite database
+-#data_path = /var/lib/trytond
++data_path = /var/lib/tryton
+ 
+ # Allow to run more than one instance of trytond
+ #multi_server = False
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..c83c506
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+01-debian-data-dir
commit f06b2cd5c2b56d6b00f702ee0ac89c73d7809fd7
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Oct 31 17:36:46 2011 +0100

    Updating copyright.

diff --git a/debian/copyright b/debian/copyright
index 8173320..7406007 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,30 +1,11 @@
-Upstream-Contact: Tryton project <tryton at googlegroups.com>
-Upstream-Homepage: http://downloads.tryton.org/
-Maintainer-Contact: Debian Tryton Maintainers <tryton at lists.debian-maintainers.org>
-Maintainer-Homepage: http://tryton.debian-maintainers.org/
-
 Files: *
 Copyright:
  (C) 2004-2008 Tiny SPRL
  (C) 2007-2011 Cedric Krier
  (C) 2007-2011 Bertrand Chenal
  (C) 2008-2011 B2CK SPRL
+ (C) 2011 Openlabs Technologies & Consulting (P) Ltd.
 License: GPL-3+
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU 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 General Public License for more details.
- .
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- .
- On Debian systems, the complete text of the GNU General Public License
- can be found in /usr/share/common-licenses/GPL-3 file.
 
 Files: doc/*
 Copyright:
@@ -33,27 +14,18 @@ Copyright:
  (C) 2008-2011 Ian Wilson
  (C) 2008-2011 Udo Spallek
 License: GPL-3+
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU 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 General Public License for more details.
- .
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- .
- On Debian systems, the complete text of the GNU General Public License
- can be found in /usr/share/common-licenses/GPL-3 file.
+
+Files: */icons/*
+Copyright: not applicable
+License: public-domain
 
 Files: debian/*
 Copyright:
  (C) 2009-2011 Daniel Baumann <daniel at debian.org>
  (C) 2010-2011 Mathias Behrle <mathiasb at m9s.biz>
 License: GPL-3+
+
+License: GPL-3+
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
@@ -67,5 +39,70 @@ License: GPL-3+
  You should have received a copy of the GNU General Public License
  along with this program. If not, see <http://www.gnu.org/licenses/>.
  .
- On Debian systems, the complete text of the GNU General Public License
+ The complete text of the GNU General Public License
  can be found in /usr/share/common-licenses/GPL-3 file.
+
+License: public-domain
+ The icons used are generally taken from
+ http://tango.freedesktop.org/releases/tango-icon-theme-0.8.90.tar.gz
+ .
+ Some icons were adapted by Cedric Krier 	2011
+ .
+ Upstream Authors:				2005-2009
+ .
+ Ulisse Perusin <uli.peru at gmail.com>
+ Steven Garrity <sgarrity at silverorange.com>
+ Lapo Calamandrei <calamandrei at gmail.com>
+ Ryan Collier <rcollier at novell.com>
+ Rodney Dawes <dobey at novell.com>
+ Andreas Nilsson <nisses.mail at home.se>
+ Tuomas Kuosmanen <tigert at tigert.com>
+ Garrett LeSage <garrett at novell.com>
+ Jakub Steiner <jimmac at novell.com>
+ .
+ In the preparation of the 0.8.90 release Novell took care of tracking
+ down all the contributors to get them to relicense their artwork
+ into Public Domain.
+ .
+ The COPYING file of the tarball states the following:
+ | The icons in this repository are herefore released into the Public Domain.
+ .
+ Additionally the copyright status of the files was tracked in the CVS and the
+ rdf properties of the SVGs adjusted for all files that were put into Public
+ Domain (see rdf:about and rdf:resource).  Both fields contain a link to the
+ Creative Commons Public Domain Dediciation[0] as reproduced below:
+ | Public Domain Dedication
+ |
+ | Copyright-Only Dedication (based on United States law) or Public Domain
+ | Certification
+ |
+ | The person or persons who have associated work with this document (the
+ | "Dedicator" or "Certifier") hereby either (a) certifies that, to the best
+ | of his knowledge, the work of authorship identified is in the public
+ | domain of the country from which the work is published, or (b)
+ | hereby dedicates whatever copyright the dedicators holds in the work
+ | of authorship identified below (the "Work") to the public domain. A
+ | certifier, moreover, dedicates any copyright interest he may have in
+ | the associated work, and for these purposes, is described as a
+ | "dedicator" below.
+ |
+ | A certifier has taken reasonable steps to verify the copyright
+ | status of this work. Certifier recognizes that his good faith efforts
+ | may not shield him from liability if in fact the work certified is not
+ | in the public domain.
+ |
+ | Dedicator makes this dedication for the benefit of the public at
+ | large and to the detriment of the Dedicator's heirs and successors.
+ | Dedicator intends this dedication to be an overt act of relinquishment
+ | in perpetuity of all present and future rights under copyright law,
+ | whether vested or contingent, in the Work. Dedicator understands that
+ | such relinquishment of all rights includes the relinquishment of all
+ | rights to enforce (by lawsuit or otherwise) those copyrights in the
+ | Work.
+ |
+ | Dedicator recognizes that, once placed in the public domain, the Work
+ | may be freely reproduced, distributed, transmitted, used, modified,
+ | built upon, or otherwise exploited by anyone for any purpose, commercial
+ | or non-commercial, and in any way, including by methods that have not
+ | yet been invented or conceived.
+ 0] http://creativecommons.org/licenses/publicdomain/
commit 86be658aa90b9095208a332521700771b15f3b1e
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Dec 13 18:46:35 2011 +0100

    Merging upstream version 2.2.0.

diff --git a/CHANGELOG b/CHANGELOG
index 7f31f31..4595009 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,8 +1,31 @@
-Version 2.0.2 - 2011-10-01
-* Bug fixes (see mercurial logs for details)
-
-Version 2.0.1 - 2011-05-29
+Version 2.2.0 - 2011-10-24
 * Bug fixes (see mercurial logs for details)
+* Add wizard to show views
+* Switched from .csv to .po for translations
+* Search on Many2One fields include inactive records
+* Change select on fields into Boolean
+* Change format of search_value on ir.action.act_window
+* Manage relation field access
+* Support size format in context for Binary fields
+* Use buffer for Binary fields
+* No more store Binary fields in base64
+* Remove tabpos attribute on notebook
+* Make PYSON more Pythonic
+* Add readonly on Transaction
+* Add has_returning on Cursor
+* Remove use of python code in workflow XML
+* Use SQL sequence on PostgreSQL for ir.sequence
+* Allow to specify more than one interface
+* Use unoconv for report format conversion
+* Allow to use any Opendocument as report template
+* Drop NetRPC and activate JSON-RPC by default
+* Remove ir.action.wizard_size
+* Rename expand and fill attributes into yexpand and yfill
+* Add xalign and yalign as field attributes
+* Drop support of Python 2.5
+* Remove support of Many2Many field in record XML
+* Change Pool into a Singleton
+* Remove support of zipped modules
 
 Version 2.0.0 - 2011-04-26
 * Bug fixes (see mercurial logs for details)
diff --git a/COPYRIGHT b/COPYRIGHT
index 6c994d4..231a7a9 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -2,6 +2,7 @@ Copyright (C) 2004-2008 Tiny SPRL.
 Copyright (C) 2007-2011 Cédric Krier.
 Copyright (C) 2007-2011 Bertrand Chenal.
 Copyright (C) 2008-2011 B2CK SPRL.
+Copyright (C) 2011 Openlabs Technologies & Consulting (P) Ltd.
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
diff --git a/MANIFEST.in b/MANIFEST.in
index 86683d2..d1c3ba9 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -11,7 +11,7 @@ recursive-include doc *.pot
 include etc/*
 include trytond/backend/*/init.sql
 include trytond/ir/*.xml
-include trytond/ir/*.csv
+include trytond/ir/locale/*.po
 include trytond/ir/module/*.xml
 include trytond/ir/ui/*.xml
 include trytond/ir/ui/*.rng
@@ -19,9 +19,9 @@ include trytond/ir/ui/*.rnc
 include trytond/ir/ui/icons/*.svg
 include trytond/ir/ui/icons/LICENSE
 include trytond/res/*.xml
-include trytond/res/*.csv
+include trytond/res/locale/*.po
 include trytond/test/*.xml
 include trytond/webdav/*.xml
-include trytond/webdav/*.csv
+include trytond/webdav/locale/*.po
 include trytond/workflow/*.xml
-include trytond/workflow/*.csv
+include trytond/workflow/locale/*.po
diff --git a/PKG-INFO b/PKG-INFO
index bd75fa1..1abc023 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.0
 Name: trytond
-Version: 2.0.2
+Version: 2.2.0
 Summary: Tryton server
 Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/2.0/
+Download-URL: http://downloads.tryton.org/2.2/
 Description: trytond
         =======
         
@@ -94,9 +94,11 @@ Description: trytond
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: No Input/Output (Daemon)
+Classifier: Framework :: Tryton
 Classifier: Intended Audience :: Developers
 Classifier: License :: OSI Approved :: GNU General Public License (GPL)
 Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Czech
 Classifier: Natural Language :: Dutch
 Classifier: Natural Language :: English
 Classifier: Natural Language :: French
@@ -104,7 +106,6 @@ Classifier: Natural Language :: German
 Classifier: Natural Language :: Russian
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 2.5
 Classifier: Programming Language :: Python :: 2.6
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
diff --git a/bin/trytond b/bin/trytond
index 1673bba..a55071c 100755
--- a/bin/trytond
+++ b/bin/trytond
@@ -3,19 +3,93 @@
 #this repository contains the full copyright notices and license terms.
 import sys
 import os
+import optparse
+
 DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
     '..', '..', 'trytond')))
 if os.path.isdir(DIR):
     sys.path.insert(0, os.path.dirname(DIR))
+
 import trytond
+from trytond.version import VERSION
+
+def parse_commandline():
+    options = {}
+
+    parser = optparse.OptionParser(version=VERSION)
+
+    parser.add_option("-c", "--config", dest="config",
+        help="specify config file")
+    parser.add_option('--debug', dest='debug_mode', action='store_true',
+        help='enable debug mode (start post-mortem debugger if exceptions'
+        ' occur)')
+    parser.add_option("-v", "--verbose", action="store_true",
+        dest="verbose", help="enable verbose mode")
+
+    parser.add_option("-d", "--database", dest="db_name",
+        help="specify the database name")
+    parser.add_option("-i", "--init", dest="init",
+        help="init a module (use \"all\" for all modules)")
+    parser.add_option("-u", "--update", dest="update",
+        help="update a module (use \"all\" for all modules)")
+
+    parser.add_option("--pidfile", dest="pidfile",
+        help="file where the server pid will be stored")
+    parser.add_option("--logfile", dest="logfile",
+        help="file where the server log will be stored")
+    parser.add_option("--disable-cron", dest="cron",
+        action="store_false", help="disable cron")
+
+    (opt, _) = parser.parse_args()
+
+    if opt.config:
+        options['configfile'] = opt.config
+    else:
+        # No config file speficified, it will be guessed
+        options['configfile'] = None
+
+    for arg in (
+            'verbose',
+            'debug_mode',
+            'pidfile',
+            'logfile',
+            'cron',
+            ):
+        if getattr(opt, arg) is not None:
+            options[arg] = getattr(opt, arg)
+
+    db_name = []
+    if opt.db_name:
+        for i in opt.db_name.split(','):
+            db_name.append(i)
+    options['db_name'] = db_name
+
+    init = {}
+    if opt.init:
+        for i in opt.init.split(','):
+            if i != 'test':
+                init[i] = 1
+    options['init'] = init
+
+    update = {}
+    if opt.update:
+        for i in opt.update.split(','):
+            if i != 'test':
+                update[i] = 1
+    options['update'] = update
+
+    return options
+
+
 if '--profile' in sys.argv:
     import profile
     import pstats
     import tempfile
     sys.argv.remove('--profile')
 
+    options = parse_commandline()
     statfile = tempfile.mkstemp(".stat","trytond-")[1]
-    profile.run('trytond.server.TrytonServer().run()', statfile)
+    profile.run('trytond.server.TrytonServer(options).run()', statfile)
     s = pstats.Stats(statfile)
     s.sort_stats('cumulative').print_stats()
     s.sort_stats('call').print_stats()
@@ -25,6 +99,6 @@ if '--profile' in sys.argv:
     s.print_callees()
 
     os.remove(statfile)
-
 else:
-    trytond.server.TrytonServer().run()
+    options = parse_commandline()
+    trytond.server.TrytonServer(options).run()
diff --git a/doc/conf.py b/doc/conf.py
index 1a76d5b..2fd0528 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -47,9 +47,9 @@ copyright = u'2008-2011, Bertrand Chenal, Cédric Krier, Ian Wilson, Udo Spallek
 # built documents.
 #
 # The short X.Y version.
-version = '2.0'
+version = '2.2'
 # The full version, including alpha/beta/rc tags.
-release = '2.0'
+release = '2.2'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/doc/ref/models/fields.rst b/doc/ref/models/fields.rst
index e99a788..ba7015d 100644
--- a/doc/ref/models/fields.rst
+++ b/doc/ref/models/fields.rst
@@ -77,9 +77,7 @@ If true, the field can be used as condition for a custom default value.
 
 .. attribute:: Field.select
 
-When equal to ``1``, the field appears in the search box in list view and the
-search will be optimized. When equal to ``2`` the field appears in the
-*Advanced Search* in the search box.
+If true, the content of the field will be indexed.
 
 ``on_change``
 -------------
@@ -210,8 +208,8 @@ A single line string field.
     ComboboxEntry in the client.
 
 .. warning::
-    Note that you may need to set :attribute:`Fields.loading` to ``lazy``
-    when :attribute:`Char.translate` is ``True``.
+    Note that you may need to set :attr:`Field.loading` to ``lazy``
+    when :attr:`Char.translate` is ``True``.
 ..
 
 Sha
@@ -508,7 +506,7 @@ A many-to-many relation field.
 
 Instance methods:
 
-.. method:: Many2Many.get_target(pool)
+.. method:: Many2Many.get_target()
 
     Return the target :class:`~trytond.model.Model`.
 
@@ -530,7 +528,7 @@ A one-to-one relation field.
 
 Instance methods:
 
-.. method:: One2One.get_target(pool)
+.. method:: One2One.get_target()
 
     Return the target :class:`~trytond.model.Model`.
 
diff --git a/doc/ref/models/models.rst b/doc/ref/models/models.rst
index 151576e..855ea6e 100644
--- a/doc/ref/models/models.rst
+++ b/doc/ref/models/models.rst
@@ -224,13 +224,13 @@ Instance methods:
 .. method:: ModelStorage.trigger_write_get_eligibles(ids)
 
     Return eligible record ids for write actions by triggers. This dictionary
-    is to pass to :method:`~ModelStorage.trigger_write`.
+    is to pass to :meth:`~ModelStorage.trigger_write`.
 
 .. method:: ModelStorage.trigger_write(eligibles)
 
     Trigger write actions. It will call actions defined in ``ir.trigger`` if
     ``on_write`` is set and ``condition`` was false before
-    :method:`~ModelStorage.write` and true after.
+    :meth:`~ModelStorage.write` and true after.
 
 .. method:: ModelStorage.delete(ids)
 
diff --git a/doc/ref/pyson.rst b/doc/ref/pyson.rst
index 2e30ac2..ca1051a 100644
--- a/doc/ref/pyson.rst
+++ b/doc/ref/pyson.rst
@@ -72,9 +72,7 @@ An :class:`Eval()` object represents the PYSON ``Eval()``
 statement for evaluations. When evaluated, it returns the
 value of the statement named by ``value``, if defined in the
 evaluation context, otherwise the ``default`` value (empty
-string by default). ``value`` can use the dot notation to
-access objects values in the context. Returns an instance of
-itself.
+string by default).  Returns an instance of itself.
 
 .. class:: Not(value)
 
diff --git a/doc/topics/install.rst b/doc/topics/install.rst
index e44100e..533c705 100644
--- a/doc/topics/install.rst
+++ b/doc/topics/install.rst
@@ -7,18 +7,20 @@ How to install Tryton
 Prerequisites
 =============
 
-    * Python 2.5 or later (http://www.python.org/)
+    * Python 2.6 or later (http://www.python.org/)
     * lxml 2.0 or later (http://codespeak.net/lxml/)
     * relatorio 0.2.0 or later (http://relatorio.openhex.org/)
     * python-dateutil (http://labix.org/python-dateutil)
     * simplejson (http://undefined.org/python/#simplejson)
+    * polib (https://bitbucket.org/izi/polib/wiki/Home)
     * Optional: psycopg 2 or later (http://www.initd.org/)
     * Optional: MySQL-python (http://sourceforge.net/projects/mysql-python/)
     * Optional: pywebdav 0.9.3 or later (http://code.google.com/p/pywebdav/)
     * Optional: pydot (http://code.google.com/p/pydot/)
     * Optional: pytz (http://pytz.sourceforge.net/)
-    * Optional: openoffice-python (http://pypi.python.org/pypi/openoffice-python/)
+    * Optional: unoconv http://dag.wieers.com/home-made/unoconv/)
     * Optional: sphinx (http://sphinx.pocoo.org/)
+    * Optional: simplejson (http://undefined.org/python/#simplejson)
 
 Install Tryton
 ==============
diff --git a/doc/topics/modules/index.rst b/doc/topics/modules/index.rst
index 0a0e178..c72a2eb 100644
--- a/doc/topics/modules/index.rst
+++ b/doc/topics/modules/index.rst
@@ -123,13 +123,13 @@ The following snippet gives a first idea of what an xml file looks:
               <field name="arch" type="xml">
                   <![CDATA[
                   <tree string="Parties">
-                      <field name="code" select="1"/>
-                      <field name="name" select="1"/>
-                      <field name="lang" select="2"/>
-                      <field name="vat_code" select="1"/>
-                      <field name="active" select="2" tree_invisible="1"/>
-                      <field name="vat_country" select="2" tree_invisible="1"/>
-                      <field name="vat_number" select="2" tree_invisible="1"/>
+                      <field name="code"/>
+                      <field name="name"/>
+                      <field name="lang"/>
+                      <field name="vat_code"/>
+                      <field name="active" tree_invisible="1"/>
+                      <field name="vat_country" tree_invisible="1"/>
+                      <field name="vat_number" tree_invisible="1"/>
                   </tree>
                   ]]>
               </field>
diff --git a/doc/topics/reports/index.rst b/doc/topics/reports/index.rst
index f45b8a6..7adeab0 100644
--- a/doc/topics/reports/index.rst
+++ b/doc/topics/reports/index.rst
@@ -61,7 +61,7 @@ When defining an `ir.action.report` the following attributes are available:
     * ``name``: The name of the report.
 
     * ``report_name``: The name of the report model, for example
-      my_module.my_report.  This is the name you would use with `pool.get`
+      my_module.my_report.  This is the name you would use with `Pool().get`
 
     * ``module_name``: If this report is of an existing model this is its name.
       For example my_module.my_model. Custom reports that aren't of a specific
@@ -74,6 +74,8 @@ When defining an `ir.action.report` the following attributes are available:
       example, my_module/my_style.odt. If no style is to be used this field
       will be blank.
 
+    * ``template_extension``: The template format.
+
 
 Report Usage
 ============
@@ -211,6 +213,7 @@ Then you must activate the new invoice report that exists in your new module:
     <field name="model">account.invoice</field>
     <field name="report">my_module/invoice.odt</field>
     <field name="style">module_name/header_A4.odt</field>
+    <field name="template_extension">odt</field>
   </record>
 
 Passing custom data to a report
@@ -228,7 +231,7 @@ context.  Now the invoice report will be able to access the employee object.
   class InvoiceReport(Report):
       _name = 'account.invoice'
       def parse(self, report, objects, datas, localcontext):
-          employee_obj = self.pool.get('company.employee')
+          employee_obj = Pool().get('company.employee')
           employee = False
           if Transaction().context.get('employee'):
               employee = employee_obj.browse(Transaction().context['employee'])
diff --git a/doc/topics/views/index.rst b/doc/topics/views/index.rst
index 52d7f3f..b1946d2 100644
--- a/doc/topics/views/index.rst
+++ b/doc/topics/views/index.rst
@@ -69,23 +69,31 @@ List of attributes shared by many form elements:
 
     * ``id``: A unique identifier for the tag if there is no name attribute.
 
-    .. _common-attributes-expand:
+    .. _common-attributes-yexpand:
 
-    * ``expand``: A boolean to specify if the label should expand to take up
+    * ``yexpand``: A boolean to specify if the label should expand to take up
       any extra vertical space.
 
-    .. _common-attributes-fill:
+    .. _common-attributes-yfill:
 
-    * ``fill``: A boolean to specify if the label should fill the vertical
+    * ``yfill``: A boolean to specify if the label should fill the vertical
       space allocated to it in the table cell.
 
+    .. _common-attributes-yalign:
+
+    * ``yalign``: The vertical alignment, from 0.0 to 1.0.
+
     .. _common-attributes-xexpand:
 
-    * ``xexpand``: The same as expand but for horizontal space.
+    * ``xexpand``: The same as yexpand but for horizontal space.
 
     .. _common-attributes-xfill:
 
-    * ``xfill``: The same as fill but for horizontal space.
+    * ``xfill``: The same as yfill but for horizontal space.
+
+    .. _common-attributes-xalign:
+
+    * ``xalign``: The horizontal alignment, from 0.0 to 1.0.
 
     .. _common-attributes-colspan:
 
@@ -140,20 +148,20 @@ Display static string.
     * ``name``: The name of the field whose description will be used for
       string.
 
-    * ``align``: The fraction of horizontal free space that must be put on the
-      left.  0.0 means no free space to the left.  1.0 means all free space to
-      the left.
-
     * ``id``: see common-attributes-id_.
 
-    * ``expand``: see in common-attributes-expand_.
+    * ``yexpand``: see in common-attributes-yexpand_.
+
+    * ``yfill``: see in common-attributes-yfill_.
 
-    * ``fill``: see in common-attributes-fill_.
+    * ``yalign``: see in common-attributes-yalign_.
 
     * ``xexpand``: see in common-attributes-xexpand_.
 
     * ``xfill``: see in common-attributes-xfill_.
 
+    * ``xalign``: see in common-attributes-xalign_.
+
     * ``colspan``: see in common-attributes-colspan_.
 
     * ``states``: see in common-attributes-states_.
@@ -198,9 +206,9 @@ Display a field of the object with the value of the current record.
     * ``domain``: Only for One2Many, Many2One, Many2Many fields, it defines the
       domain that must be used when searching for related records.
 
-    * ``expand``: see in common-attributes-expand_.
+    * ``yexpand``: see in common-attributes-yexpand_.
 
-    * ``fill``: see in common-attributes-fill_.
+    * ``yfill``: see in common-attributes-yfill_.
 
     * ``xexpand``: see in common-attributes-xexpand_.
 
@@ -218,9 +226,9 @@ Display an image.
     * ``name``: the name of the image. It must be the name with the extension
       of an image from ``tryton/share/pixmaps/``.
 
-    * ``expand``: see in common-attributes-expand_.
+    * ``yexpand``: see in common-attributes-yexpand_.
 
-    * ``fill``: see in common-attributes-fill_.
+    * ``yfill``: see in common-attributes-yfill_.
 
     * ``colspan``: see in common-attributes-colspan_.
 
@@ -241,9 +249,9 @@ Display a horizontal separator.
 
     * ``id``: see in common-attributes-id_.
 
-    * ``expand``: see in common-attributes-expand_.
+    * ``yexpand``: see in common-attributes-yexpand_.
 
-    * ``fill``: see in common-attributes-fill_.
+    * ``yfill``: see in common-attributes-yfill_.
 
     * ``colspan``: see in common-attributes-colspan_.
 
@@ -332,9 +340,9 @@ Create a sub-table in a cell.
 
     * ``id``: see in common-attributes-id_.
 
-    * ``expand``: see in common-attributes-expand_.
+    * ``yexpand``: see in common-attributes-yexpand_.
 
-    * ``fill``: see in common-attributes-fill_.
+    * ``yfill``: see in common-attributes-yfill_.
 
     * ``colspan``: see in common-attributes-colspan_.
 
@@ -456,11 +464,6 @@ field
 
     * ``widget``: The widget that must be used instead of the default one.
 
-    * ``select``: A number between 0 and 2. If set to 1, the field will be used
-      as main search criteria; if set to 2, the field will be used as second
-      search criteria; if set to 0, the field will not be used as search
-      criteria.
-
     * ``tree_invisible``: Boolean to display or not the column.
 
     * ``icon``: The name of the field that contains the name of the icon to
@@ -479,10 +482,10 @@ Example
 ::
 
   <tree string="Taxes" sequence="sequence">
-      <field name="name" select="1"/>
-      <field name="group" select="1"/>
-      <field name="type" select="1"/>
-      <field name="active" select="2"/>
+      <field name="name"/>
+      <field name="group"/>
+      <field name="type"/>
+      <field name="active"/>
       <field name="sequence" tree_invisible="1"/>
   </tree>
 
diff --git a/etc/trytond.conf b/etc/trytond.conf
index 90e74c0..f5f1f9b 100644
--- a/etc/trytond.conf
+++ b/etc/trytond.conf
@@ -2,31 +2,23 @@
 #this repository contains the full copyright notices and license terms.
 [options]
 
-# Configure the IP address for trytond
-# If empty, the server will listen on all available interfaces
-#interface =
-
-# Activate the netrpc protocol
-#netrpc = True
-# Configure the port for the netrpc protocol to listen
-#netport = 8070
-
-# Activate the xml-rpc protocol
-#xmlrpc = False
-# Configure the port for the xml-rpc protocol to listen
-#xmlport = 8069
+# This is the hostname used when generating tryton URI
+#hostname =
 
 # Activate the json-rpc protocol
-#jsonrpc = False
-# Configure the port for the json-rpc protocol to listen
-#jsonport = 8000
+jsonrpc = localhost:8000
+#ssl_jsonrpc = False
+
 # Configure the path of json-rpc data
 #jsondata_path = /var/www/localhost/tryton
 
+# Activate the xml-rpc protocol
+#xmlrpc = *:8069
+#ssl_xmlrpc = False
+
 # Activate the webdav protocol
-#webdav = False
-# Configure the port for the webdav protocol to listen
-#webdavport = 8080
+#webdav = *:8080
+#ssl_webdav = False
 
 # Configure the database type
 # allowed values are postgresql, sqlite, mysql
@@ -53,11 +45,6 @@
 #pidfile = False
 #logfile = False
 
-# Enable secure connection with SSL
-#secure_netrpc = False
-#secure_xmlrpc = False
-#secure_jsonrpc = False
-#secure_webdav = False
 #privatekey = server.pem
 #certificate = server.pem
 
@@ -72,9 +59,6 @@
 # Configure the path to store attachments and sqlite database
 #data_path = /var/lib/trytond
 
-# Limit the number of threads
-#max_thread = 40
-
 # Allow to run more than one instance of trytond
 #multi_server = False
 
@@ -90,3 +74,12 @@
 
 # Prevent database listing
 #prevent_dblist = False
+
+# Enable cron
+# cron = True
+
+# unoconv connection
+#unoconv = pipe,name=trytond;urp;StarOffice.ComponentContext
+
+# Number of retries on database operational error
+# retry = 5
diff --git a/proteus/__init__.py b/proteus/__init__.py
new file mode 100644
index 0000000..fae3c2d
--- /dev/null
+++ b/proteus/__init__.py
@@ -0,0 +1,820 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+'''
+A library to access Tryton's models like a client.
+'''
+__version__ = "2.1.0"
+__all__ = ['Model', 'Wizard']
+from types import NoneType
+import threading
+import datetime
+from decimal import Decimal
+import proteus.config
+from proteus.pyson import PYSONDecoder
+
+_MODELS = threading.local()
+
+class _EvalEnvironment(dict):
+    'Dictionary for evaluation'
+    def __init__(self, parent):
+        super(_EvalEnvironment, self).__init__()
+        self.parent = parent
+
+    def __getitem__(self, item):
+        if item == '_parent_' + self.parent._parent_field_name \
+                and self.parent.parent:
+            return _EvalEnvironment(self.parent.parent)
+        return self.parent._get_eval()[item]
+
+    def __getattr__(self, item):
+        return self.__getitem__(item)
+
+    def get(self, item, default=None):
+        try:
+            return self.__getattr__(item)
+        except:
+            pass
+        return super(_EvalEnvironment, self).get(item, default)
+
+    def __nonzero__(self):
+        return True
+
+    def __str__(self):
+        return str(self.parent)
+
+    __repr__ = __str__
+
+    def __contains__(self, item):
+        return item in self.parent._fields
+
+
+class FieldDescriptor(object):
+    default = None
+
+    def __init__(self, name, definition):
+        super(FieldDescriptor, self).__init__()
+        self.name = name
+        self.definition = definition
+        self.__doc__ = definition['string']
+
+    def __get__(self, instance, owner):
+        if instance.id > 0 and self.name not in instance._values:
+            instance._read(self.name)
+        return instance._values.get(self.name, self.default)
+
+    def __set__(self, instance, value):
+        if instance.id > 0 and self.name not in instance._values:
+            instance._read(self.name)
+        previous = getattr(instance, self.name)
+        instance._values[self.name] = value
+        if previous != getattr(instance, self.name):
+            instance._changed.add(self.name)
+            instance._on_change(self.name)
+            if instance._parent:
+                instance._parent._changed.add(instance._parent_field_name)
+                instance._parent._on_change(instance._parent_field_name)
+
+
+class BooleanDescriptor(FieldDescriptor):
+    default = False
+
+    def __set__(self, instance, value):
+        assert isinstance(value, bool)
+        super(BooleanDescriptor, self).__set__(instance, value)
+
+
+class CharDescriptor(FieldDescriptor):
+    default = None
+
+    def __set__(self, instance, value):
+        assert isinstance(value, basestring) or value in (None, False)
+        super(CharDescriptor, self).__set__(instance, value or '')
+
+
+class IntegerDescriptor(FieldDescriptor):
+    default = 0
+
+    def __set__(self, instance, value):
+        assert isinstance(value, (int, long))
+        super(IntegerDescriptor, self).__set__(instance, value)
+
+
+class FloatDescriptor(FieldDescriptor):
+    default = 0.0
+
+    def __set__(self, instance, value):
+        super(FloatDescriptor, self).__set__(instance, float(value))
+
+
+class NumericDescriptor(FieldDescriptor):
+    default = Decimal('0.0')
+
+    def __set__(self, instance, value):
+        assert isinstance(value, Decimal)
+        # TODO add digits validation
+        super(NumericDescriptor, self).__set__(instance, value)
+
+
+class ReferenceDescriptor(FieldDescriptor):
+    def __get__(self, instance, owner):
+        value = super(ReferenceDescriptor, self).__get__(instance, owner)
+        if isinstance(value, basestring):
+            model_name, id = value.split(',', 1)
+            if model_name:
+                relation = Model.get(model_name, instance._config)
+                value = relation(int(id))
+                instance._values[self.name] = value
+        return value
+
+    def __set__(self, instance, value):
+        assert isinstance(value, (Model, NoneType, basestring))
+        if isinstance(value, basestring):
+            assert value.startswith(',')
+        elif isinstance(value, Model):
+            assert value.id > 0 and not value._changed
+            assert value._config == instance._config
+        super(ReferenceDescriptor, self).__set__(instance, value)
+
+
+class DateDescriptor(FieldDescriptor):
+    def __get__(self, instance, owner):
+        value = super(DateDescriptor, self).__get__(instance, owner)
+        if isinstance(value, datetime.datetime):
+            value = value.date()
+            instance._values[self.name] = value
+        return value
+
+    def __set__(self, instance, value):
+        assert isinstance(value, datetime.date) or value in (None, False)
+        super(DateDescriptor, self).__set__(instance, value)
+
+
+class DateTimeDescriptor(FieldDescriptor):
+    def __set__(self, instance, value):
+        assert isinstance(value, datetime.datetime) or value in (None, False)
+        super(DateTimeDescriptor, self).__set__(instance, value)
+
+
+class Many2OneDescriptor(FieldDescriptor):
+    def __get__(self, instance, owner):
+        relation = Model.get(self.definition['relation'], instance._config)
+        value = super(Many2OneDescriptor, self).__get__(instance, owner)
+        if isinstance(value, (int, long)) and value is not False:
+            value = relation(value)
+        elif not value:
+            value = None
+        instance._values[self.name] = value
+        return value
+
+    def __set__(self, instance, value):
+        assert isinstance(value, (Model, NoneType))
+        if value:
+            assert value.id > 0 and not value._changed
+            assert value._config == instance._config
+        super(Many2OneDescriptor, self).__set__(instance, value)
+
+
+class One2OneDescriptor(Many2OneDescriptor):
+    pass
+
+
+class One2ManyDescriptor(FieldDescriptor):
+    default = []
+
+    def __get__(self, instance, owner):
+        relation = Model.get(self.definition['relation'], instance._config)
+        value = super(One2ManyDescriptor, self).__get__(instance, owner)
+        if not isinstance(value, ModelList):
+            value = ModelList((relation(id)
+                for id in value or []), instance, self.name,
+                self.definition.get('relation_field'))
+            instance._values[self.name] = value
+        return value
+
+    def __set__(self, instance, value):
+        raise AttributeError
+
+
+class Many2ManyDescriptor(One2ManyDescriptor):
+    pass
+
+
+class ValueDescriptor(object):
+    def __init__(self, name, definition):
+        super(ValueDescriptor, self).__init__()
+        self.name = name
+        self.definition = definition
+
+    def __get__(self, instance, owner):
+        return getattr(instance, self.name)
+
+
+class ReferenceValueDescriptor(ValueDescriptor):
+    def __get__(self, instance, owner):
+        value = super(ReferenceValueDescriptor, self).__get__(instance, owner)
+        if isinstance(value, Model):
+            value = '%s,%s' % (value.__class__.__name__, value.id)
+        return value or False
+
+
+class Many2OneValueDescriptor(ValueDescriptor):
+    def __get__(self, instance, owner):
+        value = super(Many2OneValueDescriptor, self).__get__(instance, owner)
+        return value and value.id or False
+
+
+class One2OneValueDescriptor(Many2OneValueDescriptor):
+    pass
+
+
+class One2ManyValueDescriptor(ValueDescriptor):
+    def __get__(self, instance, owner):
+        value = [('add', [])]
+        value_list = getattr(instance, self.name)
+        for record in value_list:
+            if record.id > 0:
+                if record._changed:
+                    value.append(('write', record.id, record._get_values(
+                        fields=record._changed)))
+                value[0][1].append(record.id)
+            else:
+                value.append(('create', record._get_values()))
+        if value_list.record_removed:
+            value.append(('unlink', [x.id for x in value_list.record_removed]))
+        if value_list.record_deleted:
+            value.append(('delete', [x.id for x in value_list.record_deleted]))
+        return value
+
+
+class Many2ManyValueDescriptor(One2ManyValueDescriptor):
+    pass
+
+
+class EvalDescriptor(object):
+    def __init__(self, name, definition):
+        super(EvalDescriptor, self).__init__()
+        self.name = name
+        self.definition = definition
+
+    def __get__(self, instance, owner):
+        return getattr(instance, self.name)
+
+
+class ReferenceEvalDescriptor(EvalDescriptor):
+    def __get__(self, instance, owner):
+        value = super(ReferenceEvalDescriptor, self).__get__(instance, owner)
+        if isinstance(value, Model):
+            value = '%s,%s' % (value.__class__.__name__, value.id)
+        return value or False
+
+
+class Many2OneEvalDescriptor(EvalDescriptor):
+    def __get__(self, instance, owner):
+        value = super(Many2OneEvalDescriptor, self).__get__(instance, owner)
+        if value:
+            return value.id
+        return False
+
+
+class One2OneEvalDescriptor(Many2OneEvalDescriptor):
+    pass
+
+
+class One2ManyEvalDescriptor(EvalDescriptor):
+    def __get__(self, instance, owner):
+        return [x.id for x in getattr(instance, self.name)]
+
+
+class Many2ManyEvalDescriptor(One2ManyEvalDescriptor):
+    pass
+
+
+class MetaModelFactory(object):
+    descriptors = {
+        'boolean': BooleanDescriptor,
+        'char': CharDescriptor,
+        'text': CharDescriptor,
+        'sha': CharDescriptor,
+        'binary': CharDescriptor,
+        'selection': CharDescriptor, # TODO implement its own descriptor
+        'integer': IntegerDescriptor,
+        'biginteger': IntegerDescriptor,
+        'float': FloatDescriptor,
+        'float_time': FloatDescriptor,
+        'numeric': NumericDescriptor,
+        'reference': ReferenceDescriptor,
+        'date': DateDescriptor,
+        'datetime': DateTimeDescriptor,
+        'many2one': Many2OneDescriptor,
+        'one2many': One2ManyDescriptor,
+        'many2many': Many2ManyDescriptor,
+        'one2one': One2OneDescriptor,
+    }
+    value_descriptors = {
+        'reference': ReferenceValueDescriptor,
+        'many2one': Many2OneValueDescriptor,
+        'one2many': One2ManyValueDescriptor,
+        'many2many': Many2ManyValueDescriptor,
+        'one2one': One2OneValueDescriptor,
+    }
+    eval_descriptors = {
+        'reference': ReferenceEvalDescriptor,
+        'many2one': Many2OneEvalDescriptor,
+        'one2many': One2ManyEvalDescriptor,
+        'many2many': Many2ManyEvalDescriptor,
+        'one2one': One2OneEvalDescriptor,
+    }
+
+    def __init__(self, model_name, config=None):
+        super(MetaModelFactory, self).__init__()
+        self.model_name = model_name
+        self.config = config or proteus.config.get_config()
+
+    def __call__(self):
+        models_key = 'c%s' % id(self.config)
+        if not hasattr(_MODELS, models_key):
+            setattr(_MODELS, models_key, {})
+        class MetaModel(type):
+            'Meta class for Model'
+            def __new__(mcs, name, bases, dict):
+                if self.model_name in getattr(_MODELS, models_key):
+                    return getattr(_MODELS, models_key)[self.model_name]
+                proxy = self.config.get_proxy(self.model_name)
+                context = self.config.context
+                name = self.model_name
+                dict['_proxy'] = proxy
+                dict['_config'] = self.config
+                dict['_fields'] = proxy.fields_get(None, context)
+                for field_name, definition in dict['_fields'].iteritems():
+                    if field_name == 'id':
+                        continue
+                    Descriptor = self.descriptors[definition['type']]
+                    dict[field_name] = Descriptor(field_name, definition)
+                    VDescriptor = self.value_descriptors.get(
+                            definition['type'], ValueDescriptor)
+                    dict['__%s_value' % field_name] = VDescriptor(
+                            field_name, definition)
+                    EDescriptor = self.eval_descriptors.get(
+                            definition['type'], EvalDescriptor)
+                    dict['__%s_eval' % field_name] = EDescriptor(
+                            field_name, definition)
+                for method in self.config.get_proxy_methods(self.model_name):
+                    setattr(mcs, method, getattr(proxy, method))
+                res = type.__new__(mcs, name, bases, dict)
+                getattr(_MODELS, models_key)[self.model_name] = res
+                return res
+            __new__.__doc__ = type.__new__.__doc__
+        return MetaModel
+
+
+class ModelList(list):
+    'List for Model'
+
+    def __init__(self, sequence=None, parent=None, parent_field_name='',
+            parent_name=''):
+        if sequence is None:
+            sequence = []
+        self.parent = parent
+        if parent:
+            assert parent_field_name
+        self.parent_field_name = parent_field_name
+        self.parent_name = parent_name
+        self.record_removed = set()
+        self.record_deleted = set()
+        result = super(ModelList, self).__init__(sequence)
+        for record in self:
+            record._parent = parent
+            record._parent_field_name = parent_field_name
+            record._parent_name = parent_name
+        return result
+    __init__.__doc__ = list.__init__.__doc__
+
+    def _changed(self):
+        'Signal change to parent'
+        if self.parent:
+            self.parent._changed.add(self.parent_field_name)
+            self.parent._on_change(self.parent_field_name)
+
+    def append(self, record):
+        assert isinstance(record, Model)
+        if self.parent:
+            assert record._config == self.parent._config
+        elif self:
+            assert record._config == self[0]._config
+        assert record._parent is None
+        assert not record._parent_field_name
+        assert not record._parent_name
+        record._parent = self.parent
+        record._parent_field_name = self.parent_field_name
+        record._parent_name = self.parent_name
+        res = super(ModelList, self).append(record)
+        self._changed()
+        return res
+    append.__doc__ = list.append.__doc__
+
+    def extend(self, iterable):
+        iterable = list(iterable)
+        config = None
+        for record in iterable:
+            assert isinstance(record, Model)
+            if self.parent:
+                assert record._config == self.parent._config
+            elif self:
+                assert record._config == self[0]._config
+            elif config:
+                assert record._config == config
+            else:
+                config = record._config
+        for record in iterable:
+            assert record._parent is None
+            assert not record._parent_field_name
+            assert not record._parent_name
+            record._parent = self.parent
+            record._parent_field_name = self.parent_field_name
+            record._parent_name = self.parent_name
+        res = super(ModelList, self).extend(iterable)
+        self._changed()
+        return res
+    extend.__doc__ = list.extend.__doc__
+
+    def insert(self, index, record):
+        raise NotImplementedError
+    insert.__doc__ = list.insert.__doc__
+
+    def pop(self, index=-1):
+        self.record_removed.add(self[index])
+        self[index]._parent = None
+        self[index]._parent_field_name = None
+        self[index]._parent_name = None
+        res = super(ModelList, self).pop(index)
+        self._changed()
+        return res
+    pop.__doc__ = list.pop.__doc__
+
+    def remove(self, record):
+        self.record_deleted.add(record)
+        record._parent = None
+        record._parent_field_name = None
+        record._parent_name = None
+        res = super(ModelList, self).remove(record)
+        self._changed()
+        return res
+    remove.__doc__ = list.remove.__doc__
+
+    def reverse(self):
+        raise NotImplementedError
+    reverse.__doc__ = list.reverse.__doc__
+
+    def sort(self):
+        raise NotImplementedError
+    sort.__doc__ = list.sort.__doc__
+
+
+class Model(object):
+    'Model class for Tryton records'
+
+    __counter = -1
+    _proxy = None
+    _config = None
+    _fields = None
+
+    def __init__(self, id=None, **kwargs):
+        super(Model, self).__init__()
+        if id:
+            assert not kwargs
+        self.__id = id or Model.__counter
+        if self.__id < 0:
+            Model.__counter -= 1
+        self._values = {} # store the values of fields
+        self._changed = set() # store the changed fields
+        self._parent = None # store the parent record
+        self._parent_field_name = '' # store the field name in parent record
+        self._parent_name = '' # store the field name to parent record
+        if self.id < 0:
+            self._default_get()
+
+        for field_name, value in kwargs.iteritems():
+            definition = self._fields[field_name]
+            if definition['type'] in ('one2many', 'many2many'):
+                relation = Model.get(definition['relation'])
+                value = [isinstance(x, (int, long)) and relation(x) or x
+                        for x in value]
+                getattr(self, field_name).extend(value)
+            else:
+                if definition['type'] == 'many2one':
+                    if (isinstance(value, (int, long)) and value is not False):
+                        relation = Model.get(definition['relation'])
+                        value = relation(value)
+                    elif value is False:
+                        value = None
+                setattr(self, field_name, value)
+    __init__.__doc__ = object.__init__.__doc__
+
+    @classmethod
+    def get(cls, name, config=None):
+        'Get a class for the named Model'
+        class Spam(Model):
+            __metaclass__ = MetaModelFactory(name, config=config)()
+        return Spam
+
+    @classmethod
+    def reset(cls, config=None, *names):
+        'Reset class definition for Models named'
+        config = config or proteus.config.get_config()
+        models_key = 'c%s' % id(config)
+        if not names:
+            setattr(_MODELS, models_key, {})
+        else:
+            models = getattr(_MODELS, models_key, {})
+            for name in names:
+                del models[name]
+
+    def __str__(self):
+        return '<%s(%d)>' % (self.__class__.__name__, self.id)
+    __str__.__doc__ = object.__str__.__doc__
+
+    def __repr__(self):
+        if self._config == proteus.config.get_config():
+            return "proteus.Model.get('%s')(%d)" % (self.__class__.__name__,
+                    self.id)
+        return "proteus.Model.get('%s', %s)(%d)" % (self.__class__.__name__,
+                repr(self._config), self.id)
+    __repr__.__doc__ = object.__repr__.__doc__
+
+    def __cmp__(self, other):
+        'Compare with other'
+        if isinstance(other, Model):
+            return cmp(self.id, other.id)
+        if isinstance(other, (bool, NoneType)):
+            return 1
+        raise NotImplementedError
+
+    @property
+    def id(self):
+        'The unique ID'
+        return self.__id
+
+    @classmethod
+    def find(cls, condition=None, offset=0, limit=None, order=None):
+        'Return records matching condition'
+        if condition is None:
+            condition = []
+        ids = cls._proxy.search(condition, offset, limit, order,
+                cls._config.context)
+        return [cls(id) for id in ids]
+
+    def reload(self):
+        'Reload record'
+        self._values = {}
+        self._changed = set()
+
+    def save(self):
+        'Save the record'
+        context = self._config.context
+        if self.id < 0:
+            values = self._get_values(fields=self._changed)
+            self.__id = self._proxy.create(values, context)
+        else:
+            if not self._changed:
+                return
+            values = self._get_values(fields=self._changed)
+            context['_timestamp'] = self._get_timestamp()
+            self._proxy.write(self.id, values, context)
+        self.reload()
+
+    def delete(self):
+        'Delete the record'
+        if self.id > 0:
+            context = self._config.context
+            context['_timestamp'] = self._get_timestamp()
+            return self._proxy.delete(self.id, context)
+        self.reload()
+        return True
+
+    def _get_values(self, fields=None):
+        'Return dictionary values'
+        if fields is None:
+            fields = self._values.keys()
+        return dict((x, getattr(self, '__%s_value' % x)) for x in fields
+                if x not in ('id', '_timestamp'))
+
+    @property
+    def _timestamp(self):
+        'Get _timestamp'
+        return self._values.get('_timestamp')
+
+    def _get_timestamp(self):
+        'Return dictionary with timestamps'
+        result = {'%s,%s' % (self.__class__.__name__, self.id):
+                self._timestamp}
+        for field, definition in self._fields.iteritems():
+            if field not in self._values:
+                continue
+            if definition['type'] in ('one2many', 'many2many'):
+                for record in getattr(self, field):
+                    result.update(record._get_timestamp())
+        return result
+
+    def _read(self, name):
+        'Read field'
+        fields = []
+        if not self._values:
+            fields = [x for x, y in self._fields.iteritems()
+                    if y['type'] not in ('one2many', 'many2many', 'binary')]
+            fields.append('_timestamp')
+        fields.append(name)
+        self._values.update(self._proxy.read(self.id, fields,
+            self._config.context))
+        for field in fields:
+            if (field in self._fields
+                    and self._fields[field]['type'] == 'float'
+                    and isinstance(self._values[field], Decimal)):
+                # XML-RPC return Decimal for double
+                self._values[field] = float(self._values[field])
+
+    def _default_get(self):
+        'Set default values'
+        fields = self._fields.keys()
+        self._default_set(self._proxy.default_get(fields, False,
+            self._config.context))
+
+    def _default_set(self, values):
+        for field, value in values.iteritems():
+            definition = self._fields[field]
+            if definition['type'] in ('one2many', 'many2many'):
+                if value and len(value) and isinstance(value[0], (int, long)):
+                    self._values[field] = value
+                    continue
+                relation = Model.get(definition['relation'], self._config)
+                records = []
+                for vals in (value or []):
+                    record = relation()
+                    record._default_set(vals)
+                    records.append(record)
+                self._values[field] = ModelList(records, self, field,
+                        definition.get('relation_field', ''))
+            else:
+                self._values[field] = value
+
+    def _get_eval(self):
+        values = dict((x, getattr(self, '__%s_eval' % x))
+                for x in self._fields if x != 'id')
+        values['id'] = self.id
+        return values
+
+    def _on_change_args(self, args):
+        res = {}
+        values = self._get_eval()
+        del values['id']
+        for field, definition in self._fields.iteritems():
+            if definition['type'] in ('one2many', 'many2many'):
+                values[field] = [x._get_eval() for x in getattr(self, field)]
+        if self._parent:
+            values['_parent_%s' % self._parent_name] = \
+                    _EvalEnvironment(self._parent)
+        for arg in args:
+            scope = values
+            for i in arg.split('.'):
+                if i not in scope:
+                    scope = False
+                    break
+                scope = scope[i]
+            res[arg] = scope
+        return res
+
+    def _on_change_set(self, field, value):
+        if self._fields[field]['type'] in ('one2many', 'many2many'):
+            if isinstance(value, (list, tuple)):
+                self._values[field] = value
+                self._changed.add(field)
+                return
+            to_remove = []
+            if value and value.get('remove'):
+                for record_id in value['remove']:
+                    for record in getattr(self, field):
+                        if record.id == record_id:
+                            to_remove.append(record)
+            for record in to_remove:
+                # remove without signal
+                list.remove(getattr(self, field), record)
+            if value and value.get('add') or value.get('update'):
+                for vals in value.get('add', []):
+                    relation = Model.get(self._fields[field]['relation'],
+                            self._config)
+                    # append without signal
+                    list.append(getattr(self, field), relation(**vals))
+                for vals in value.get('update', []):
+                    if 'id' not in vals:
+                        continue
+                    for record in getattr(self, field):
+                        if record.id == vals['id']:
+                            for i, j in vals.iteritems():
+                                record._values[i] = j
+                                record._changed.add(i)
+        else:
+            self._values[field] = value
+            self._changed.add(field)
+
+    def _on_change(self, name):
+        'Call on_change for field'
+        definition = self._fields[name]
+        if definition.get('on_change'):
+            if isinstance(definition['on_change'], basestring):
+                definition['on_change'] = PYSONDecoder().decode(
+                        definition['on_change'])
+            args = self._on_change_args(definition['on_change'])
+            context = self._config.context
+            res = getattr(self._proxy, 'on_change_%s' % name)(args, context)
+            later = {}
+            for field, value in res.iteritems():
+                if field not in self._fields:
+                    continue
+                if self._fields[field]['type'] in ('one2many', 'many2many'):
+                    later[field] = value
+                    continue
+                self._on_change_set(field, value)
+            for field, value in later.iteritems():
+                self._on_change_set(field, value)
+            if self._parent:
+                self._parent._changed.add(self._parent_field_name)
+        for field, definition in self._fields.iteritems():
+            if not definition.get('on_change_with'):
+                continue
+            if name not in definition['on_change_with']:
+                continue
+            if field == name:
+                continue
+            args = self._on_change_args(definition['on_change_with'])
+            context = self._config.context
+            res = getattr(self._proxy, 'on_change_with_%s' % field)(args,
+                    context)
+            self._on_change_set(field, res)
+
+
+class Wizard(object):
+    'Wizard class for Tryton wizards'
+
+    def __init__(self, name, models=None, config=None, context=None):
+        if models:
+            assert len(set(type(x) for x in models)) == 1
+        super(Wizard, self).__init__()
+        self.name = name
+        self.state = None
+        self.states = ['init']
+        self.form = None
+        self._config = config or proteus.config.get_config()
+        self._context = context or {}
+        self._proxy = self._config.get_proxy(name, type='wizard')
+        self.id = self._proxy.create(self._config.context)
+        if models:
+            self.datas = {
+                    'model': models[0].__class__.__name__,
+                    'id': models[0].id,
+                    'ids': [model.id for model in models]
+                    }
+        else:
+            self.datas = {}
+        self.execute('init')
+
+    def execute(self, state):
+        assert state in self.states
+
+        if 'form' not in self.datas:
+            self.datas['form'] = {}
+
+        if self.form:
+            self.datas['form'].update(self.form._get_values())
+
+        self.state = state
+        while self.state != 'end':
+            ctx = self._context.copy()
+            ctx.update(self._config.context)
+            ctx['active_id'] = self.datas.get('id')
+            ctx['active_ids'] = self.datas.get('ids')
+
+            res = self._proxy.execute(self.id, self.datas, self.state, ctx)
+            if not res:
+                break
+
+            if 'datas' in res:
+                self.datas['form'] = res['datas']
+            elif res['type'] == 'form':
+                self.datas['form'] = {}
+
+            if res['type'] == 'form':
+                self.states = [x[0] for x in res['state']]
+                # XXX set context
+                self.form = Model.get(res['object'])()
+                self.form._default_set(self.datas['form'])
+                return
+            elif res['type'] == 'action':
+                # TODO run action
+                self.state = res['state']
+            elif res['type'] == 'print':
+                # TODO run print
+                self.state = res['state']
+            elif res['type'] == 'state':
+                self.state = res['state']
+
+        if self.state == 'end':
+            self._proxy.delete(self.id, self._config.context)
diff --git a/proteus/config.py b/proteus/config.py
new file mode 100644
index 0000000..2eccfff
--- /dev/null
+++ b/proteus/config.py
@@ -0,0 +1,238 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+"""
+Configuration functions for the proteus package for Tryton.
+"""
+from __future__ import with_statement
+__all__ = ['set_trytond', 'set_xmlrpc', 'get_config']
+import xmlrpclib
+import threading
+from decimal import Decimal
+from types import NoneType
+import datetime
+import time
+
+def dump_decimal(self, value, write):
+    write("<value><double>")
+    write(str(value))
+    write("</double></value>\n")
+
+xmlrpclib.Marshaller.dispatch[Decimal] = dump_decimal
+xmlrpclib.Marshaller.dispatch[datetime.date] = \
+        lambda self, value, write: self.dump_datetime(
+                datetime.datetime.combine(value, datetime.time()), write)
+
+def _end_double(self, data):
+    self.append(Decimal(data))
+    self._value = 0
+xmlrpclib.Unmarshaller.dispatch["double"] = _end_double
+
+_CONFIG = threading.local()
+_CONFIG.current = None
+
+
+class Config(object):
+    'Config interface'
+
+    def __init__(self):
+        super(Config, self).__init__()
+        self._context = {}
+
+    @property
+    def context(self):
+        return self._context.copy()
+
+    def get_proxy(self, name):
+        raise NotImplementedError
+
+    def get_proxy_methods(self, name):
+        raise NotImplementedError
+
+
+class _TrytondMethod(object):
+
+    def __init__(self, name, model, config):
+        super(_TrytondMethod, self).__init__()
+        self._name = name
+        self._object = model
+        self._config = config
+
+    def __call__(self, *args):
+        from trytond.cache import Cache
+        from trytond.transaction import Transaction
+
+        assert self._name in self._object._rpc
+
+        with Transaction().start(self._config.database_name,
+                self._config.user) as transaction:
+            Cache.clean(self._config.database_name)
+            args = list(args)
+            context = args.pop()
+            if '_timestamp' in context:
+                transaction.timestamp = context['_timestamp']
+                del context['_timestamp']
+            transaction.context = context
+            res = getattr(self._object, self._name)(*args)
+            if self._object._rpc[self._name]:
+                transaction.cursor.commit()
+        Cache.resets(self._config.database_name)
+        return res
+
+class TrytondProxy(object):
+    'Proxy for function call for trytond'
+
+    def __init__(self, name, config, type='model'):
+        super(TrytondProxy, self).__init__()
+        self._config = config
+        self._object = config.pool.get(name, type=type)
+    __init__.__doc__ = object.__init__.__doc__
+
+    def __getattr__(self, name):
+        'Return attribute value'
+        return _TrytondMethod(name, self._object, self._config)
+
+
+class TrytondConfig(Config):
+    'Configuration for trytond'
+
+    def __init__(self, database_name=None, user='admin', database_type=None,
+            language='en_US', password='', config_file=None):
+        super(TrytondConfig, self).__init__()
+        from trytond.config import CONFIG
+        CONFIG.update_etc(config_file)
+        if database_type is not None:
+            CONFIG['db_type'] = database_type
+        from trytond.modules import register_classes
+        from trytond.pool import Pool
+        from trytond.backend import Database
+        from trytond.protocols.dispatcher import create
+        from trytond.cache import Cache
+        from trytond.transaction import Transaction
+        self.database_type = CONFIG['db_type']
+        if database_name is None:
+            if self.database_type == 'sqlite':
+                database_name = ':memory:'
+            else:
+                database_name = 'test_%s' % int(time.time())
+        self.database_name = database_name
+        self._user = user
+        self.config_file = config_file
+
+        register_classes()
+
+        database = Database().connect()
+        cursor = database.cursor()
+        try:
+            databases = database.list(cursor)
+        finally:
+            cursor.close()
+        if database_name not in databases:
+            create(database_name, CONFIG['admin_passwd'], language, password)
+
+        database_list = Pool.database_list()
+        self.pool = Pool(database_name)
+        if database_name not in database_list:
+            self.pool.init()
+
+        with Transaction().start(self.database_name, 0) as transaction:
+            Cache.clean(database_name)
+            user_obj = self.pool.get('res.user')
+            transaction.context = self.context
+            self.user = user_obj.search([
+                ('login', '=', user),
+                ], limit=1)[0]
+            with transaction.set_user(self.user):
+                self._context = user_obj.get_preferences(context_only=True)
+        Cache.resets(database_name)
+    __init__.__doc__ = object.__init__.__doc__
+
+    def __repr__(self):
+        return "proteus.config.TrytondConfig('%s', '%s', '%s', config_file=%s)"\
+                % (self.database_name, self._user, self.database_type,
+                self.config_file)
+    __repr__.__doc__ = object.__repr__.__doc__
+
+    def __eq__(self, other):
+        if not isinstance(other, TrytondConfig):
+            raise NotImplementedError
+        return (self.database_name == other.database_name
+            and self._user == other._user
+            and self.database_type == other.database_type
+            and self.config_file == other.config_file)
+
+    def __hash__(self):
+        return hash((self.database_name, self._user,
+            self.database_type, self.config_file))
+
+    def get_proxy(self, name, type='model'):
+        'Return Proxy class'
+        return TrytondProxy(name, self, type=type)
+
+    def get_proxy_methods(self, name, type='model'):
+        'Return list of methods'
+        proxy = self.get_proxy(name, type=type)
+        return [x for x in proxy._object._rpc]
+
+def set_trytond(database_name=None, user='admin', database_type=None,
+        language='en_US', password='', config_file=None):
+    'Set trytond package as backend'
+    _CONFIG.current = TrytondConfig(database_name, user, database_type,
+            language=language, password=password, config_file=config_file)
+    return _CONFIG.current
+
+
+class XmlrpcProxy(object):
+    'Proxy for function call for XML-RPC'
+
+    def __init__(self, name, config, type='model'):
+        super(XmlrpcProxy, self).__init__()
+        self._config = config
+        self._object = getattr(config.server, '%s.%s' % (type, name))
+    __init__.__doc__ = object.__init__.__doc__
+
+    def __getattr__(self, name):
+        'Return attribute value'
+        return getattr(self._object, name)
+
+class XmlrpcConfig(Config):
+    'Configuration for XML-RPC'
+
+    def __init__(self, url):
+        super(XmlrpcConfig, self).__init__()
+        self.url = url
+        self.server = xmlrpclib.ServerProxy(url, allow_none=1, use_datetime=1)
+        # TODO add user
+        self._context = self.server.model.res.user.get_preferences(True, {})
+    __init__.__doc__ = object.__init__.__doc__
+
+    def __repr__(self):
+        return "proteus.config.XmlrpcConfig('%s')" % self.url
+    __repr__.__doc__ = object.__repr__.__doc__
+
+    def __eq__(self, other):
+        if not isinstance(other, XmlrpcConfig):
+            raise NotImplementedError
+        return self.url == other.url
+
+    def __hash__(self):
+        return hash(self.url)
+
+    def get_proxy(self, name, type='model'):
+        'Return Proxy class'
+        return XmlrpcProxy(name, self, type=type)
+
+    def get_proxy_methods(self, name, type='model'):
+        'Return list of methods'
+        object_ = '%s.%s' % (type, name)
+        return [x[len(object_) + 1:]
+                for x in self.server.system.listMethods()
+                if x.startswith(object_)
+                and '.' not in x[len(object_) + 1:]]
+
+def set_xmlrpc(url):
+    'Set XML-RPC as backend'
+    _CONFIG.current = XmlrpcConfig(url)
+    return _CONFIG.current
+
+def get_config():
+    return _CONFIG.current
diff --git a/trytond/pyson.py b/proteus/pyson.py
similarity index 98%
copy from trytond/pyson.py
copy to proteus/pyson.py
index b3d375b..5eca3cb 100644
--- a/trytond/pyson.py
+++ b/proteus/pyson.py
@@ -1,5 +1,7 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
+__all__ = ['PYSONEncoder', 'PYSONDecoder', 'Eval', 'Not', 'Bool', 'And', 'Or',
+        'Equal', 'Greater', 'Less', 'If', 'Get', 'In', 'Date', 'DateTime']
 import sys
 if sys.version_info < (2, 6):
     import simplejson as json
diff --git a/proteus/tests/__init__.py b/proteus/tests/__init__.py
new file mode 100644
index 0000000..fe882b9
--- /dev/null
+++ b/proteus/tests/__init__.py
@@ -0,0 +1,26 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+import os
+import sys
+import unittest
+
+def test_suite():
+    suite = unittest.TestSuite()
+    loader = unittest.TestLoader()
+    for filename in os.listdir(os.path.dirname(__file__)):
+        if filename.startswith("test") and filename.endswith(".py"):
+            modname = "proteus.tests." + filename[:-3]
+            __import__(modname)
+            module = sys.modules[modname]
+            suite.addTests(loader.loadTestsFromModule(module))
+    return suite
+
+def main():
+    suite = test_suite()
+    runner = unittest.TextTestRunner()
+    runner.run(suite)
+
+if __name__ == '__main__':
+    sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(
+        os.path.abspath(__file__)))))
+    main()
diff --git a/proteus/tests/test_config.py b/proteus/tests/test_config.py
new file mode 100644
index 0000000..35433a3
--- /dev/null
+++ b/proteus/tests/test_config.py
@@ -0,0 +1,29 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+from unittest import TestCase
+import proteus.config
+
+
+class TestConfig(TestCase):
+
+    def setUp(self):
+        proteus.config.set_trytond(database_type='sqlite')
+
+    def test_proxy(self):
+        config = proteus.config.get_config()
+        user_proxy = config.get_proxy('res.user')
+        user_id = user_proxy.search([('login', '=', 'admin')], 0, 1, None,
+                config.context)[0]
+        self.assert_(user_id == config.user)
+
+    def test_proxy_methods(self):
+        config = proteus.config.get_config()
+        self.assert_('search' in config.get_proxy_methods('res.user'))
+
+    def test_trytond_config_eq(self):
+        config1 = proteus.config.get_config()
+        proteus.config.set_trytond(database_type='sqlite')
+        config2 = proteus.config.get_config()
+        self.assertEqual(config1, config2)
+
+        self.assertRaises(NotImplementedError, config1.__eq__, None)
diff --git a/proteus/tests/test_model.py b/proteus/tests/test_model.py
new file mode 100644
index 0000000..704722b
--- /dev/null
+++ b/proteus/tests/test_model.py
@@ -0,0 +1,317 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+from unittest import TestCase
+from proteus import config, Model
+
+
+class TestModel(TestCase):
+
+    def setUp(self):
+        config.set_trytond(database_type='sqlite')
+
+    def test_class_cache(self):
+        User1 = Model.get('res.user')
+        User2 = Model.get('res.user')
+        self.assertEqual(id(User1), id(User2))
+
+        Model.reset()
+        User3 = Model.get('res.user')
+        self.assertNotEqual(id(User1), id(User3))
+
+    def test_class_method(self):
+        User = Model.get('res.user')
+        self.assert_(len(User.search([('login', '=', 'admin')], {})))
+
+    def test_find(self):
+        User = Model.get('res.user')
+        admin = User.find([('login', '=', 'admin')])[0]
+        self.assertEqual(admin.login, 'admin')
+
+    def test_many2one(self):
+        User = Model.get('res.user')
+        admin = User.find([('login', '=', 'admin')])[0]
+        self.assert_(isinstance(admin.create_uid, User))
+        try:
+            admin.create_uid = 'test'
+            self.fail()
+        except AssertionError:
+            pass
+        admin.create_uid = admin
+        admin.create_uid = None
+
+        test = User(write_uid=False)
+
+    def test_one2many(self):
+        Group = Model.get('res.group')
+        administration = Group.find([('name', '=', 'Administration')])[0]
+        self.assert_(isinstance(administration.model_access, list))
+        self.assert_(isinstance(administration.model_access[0],
+            Model.get('ir.model.access')))
+        try:
+            administration.model_access = []
+            self.fail()
+        except AttributeError:
+            pass
+
+    def test_many2many(self):
+        User = Model.get('res.user')
+        admin = User.find([('login', '=', 'admin')])[0]
+        self.assert_(isinstance(admin.groups, list))
+        self.assert_(isinstance(admin.groups[0],
+            Model.get('res.group')))
+        try:
+            admin.groups = []
+            self.fail()
+        except AttributeError:
+            pass
+
+    # TODO test date
+
+    def test_reference(self):
+        Attachment = Model.get('ir.attachment')
+        User = Model.get('res.user')
+        admin = User.find([('login', '=', 'admin')])[0]
+        attachment = Attachment()
+        attachment.name = 'Test'
+        attachment.resource = admin
+        attachment.save()
+        self.assertEqual(attachment.resource, admin)
+
+    def test_id_counter(self):
+        User = Model.get('res.user')
+        test1 = User()
+        self.assert_(test1.id < 0)
+        test2 = User()
+        self.assert_(test2.id < 0)
+        self.assertNotEqual(test1.id, test2.id)
+
+    def test_init(self):
+        User = Model.get('res.user')
+        self.assertEqual(User(1).id, 1)
+        self.assertEqual(User(name='Foo').name, 'Foo')
+
+        Lang = Model.get('ir.lang')
+        en_US = Lang.find([('code', '=', 'en_US')])[0]
+        self.assertEqual(User(language=en_US).language, en_US)
+        self.assertEqual(User(language=en_US.id).language, en_US)
+
+        Group = Model.get('res.group')
+        groups = Group.find()
+        self.assertEqual(len(User(groups=groups).groups), len(groups))
+        self.assertEqual(len(User(groups=[x.id for x in groups]).groups),
+                len(groups))
+
+    def test_save(self):
+        User = Model.get('res.user')
+        test = User()
+        test.name = 'Test'
+        test.login = 'test'
+        test.save()
+        self.assert_(test.id > 0)
+
+        test = User(test.id)
+        self.assertEqual(test.name, 'Test')
+        self.assertEqual(test.login, 'test')
+        self.assert_(test.active)
+
+        test.signature = 'Test signature'
+        self.assertEqual(test.signature, 'Test signature')
+        test.save()
+        self.assertEqual(test.signature, 'Test signature')
+        test = User(test.id)
+        self.assertEqual(test.signature, 'Test signature')
+
+        Group = Model.get('res.group')
+        test2 = User(name='Test 2', login='test2',
+                groups=[Group(name='Test 2')])
+        test2.save()
+        self.assert_(test2.id > 0)
+        self.assertEqual(test2.name, 'Test 2')
+        self.assertEqual(test2.login, 'test2')
+
+    def test_save_many2one(self):
+        User = Model.get('res.user')
+        test = User()
+        test.name = 'Test save many2one'
+        test.login = 'test_save_many2one'
+        test.save()
+
+        Lang = Model.get('ir.lang')
+        en_US = Lang.find([('code', '=', 'en_US')])[0]
+        test.language = en_US
+        test.save()
+        self.assertEqual(test.language, en_US)
+
+        test.language = None
+        test.save()
+        self.assertFalse(test.language)
+
+    def test_save_one2many(self):
+        Group = Model.get('res.group')
+        group = Group()
+        group.name = 'Test save one2many'
+        group.save()
+
+        ModelAccess = Model.get('ir.model.access')
+        Model_ = Model.get('ir.model')
+        model_access = ModelAccess()
+        model_access.model = Model_.find([('model', '=', 'res.group')])[0]
+        model_access.perm_read = True
+        model_access.perm_write = True
+        model_access.perm_create = True
+        model_access.perm_delete = True
+
+        group.model_access.append(model_access)
+        group.save()
+        self.assertEqual(len(group.model_access), 1)
+
+        model_access_id = group.model_access[0].id
+
+        group.name = 'Test save one2many bis'
+        group.model_access[0].description = 'Test save one2many'
+        group.save()
+        self.assertEqual(group.model_access[0].description,
+                'Test save one2many')
+
+        group.model_access.pop()
+        group.save()
+        self.assertEqual(group.model_access, [])
+        self.assertEqual(len(ModelAccess.find([('id', '=', model_access_id)])),
+                1)
+
+        group.model_access.append(ModelAccess(model_access_id))
+        group.save()
+        self.assertEqual(len(group.model_access), 1)
+
+        group.model_access.remove(group.model_access[0])
+        group.save()
+        self.assertEqual(group.model_access, [])
+        self.assertEqual(len(ModelAccess.find([('id', '=', model_access_id)])),
+                0)
+
+    def test_save_many2many(self):
+        User = Model.get('res.user')
+        test = User()
+        test.name = 'Test save many2many'
+        test.login = 'test_save_many2many'
+        test.save()
+
+        Group = Model.get('res.group')
+        group = Group()
+        group.name = 'Test save many2many'
+        group.save()
+
+        test.groups.append(group)
+        test.save()
+        self.assertEqual(len(test.groups), 1)
+
+        group_id = test.groups[0].id
+
+        test.name = 'Test save many2many bis'
+        test.groups[0].name = 'Test save many2many bis'
+        test.save()
+        self.assertEqual(test.groups[0].name,
+                'Test save many2many bis')
+
+        test.groups.pop()
+        test.save()
+        self.assertEqual(test.groups, [])
+        self.assertEqual(len(Group.find([('id', '=', group_id)])), 1)
+
+        test.groups.append(Group(group_id))
+        test.save()
+        self.assertEqual(len(test.groups), 1)
+
+        test.groups.remove(test.groups[0])
+        test.save()
+        self.assertEqual(test.groups, [])
+        self.assertEqual(len(Group.find([('id', '=', group_id)])), 0)
+
+    def test_cmp(self):
+        User = Model.get('res.user')
+        test = User()
+        test.name = 'Test cmp'
+        test.login = 'test_cmp'
+        test.save()
+        admin1 = User.find([('login', '=', 'admin')])[0]
+        admin2 = User.find([('login', '=', 'admin')])[0]
+
+        self.assertEqual(admin1, admin2)
+        self.assertNotEqual(admin1, test)
+        self.assertNotEqual(admin1, None)
+        self.assertNotEqual(admin1, False)
+
+        self.failUnlessRaises(NotImplementedError, lambda: admin1 == 1)
+
+    def test_default_set(self):
+        User = Model.get('res.user')
+        Group = Model.get('res.group')
+        group_ids = [x.id for x in Group.find()]
+        test = User()
+        test._default_set({
+            'name': 'Test',
+            'groups': group_ids,
+            })
+        self.assertEqual(test.name, 'Test')
+        self.assertEqual([x.id for x in test.groups], group_ids)
+
+        test = User()
+        test._default_set({
+            'name': 'Test',
+            'groups': [
+                {
+                    'name': 'Group 1',
+                },
+                {
+                    'name': 'Group 2',
+                },
+                ],
+            })
+        self.assertEqual(test.name, 'Test')
+        self.assertEqual([x.name for x in test.groups], ['Group 1', 'Group 2'])
+
+    def test_delete(self):
+        User = Model.get('res.user')
+        test = User()
+        test.name = 'Test delete'
+        test.login = 'test delete'
+        test.save()
+        self.assert_(test.delete())
+
+    def test_on_change(self):
+        Trigger = Model.get('ir.trigger')
+
+        trigger = Trigger()
+
+        trigger.on_time = True
+        self.assertEqual(trigger.on_create, False)
+
+        trigger.on_create = True
+        self.assertEqual(trigger.on_time, False)
+
+    def test_on_change_set(self):
+        User = Model.get('res.user')
+        Group = Model.get('res.group')
+
+        test = User()
+        test._on_change_set('name', 'Test')
+        self.assertEqual(test.name, 'Test')
+        group_ids = [x.id for x in Group.find()]
+        test._on_change_set('groups', group_ids)
+        self.assertEqual([x.id for x in test.groups], group_ids)
+
+        test._on_change_set('groups', {'remove': [group_ids[0]]})
+        self.assertEqual([x.id for x in test.groups], group_ids[1:])
+
+        test._on_change_set('groups', {'add': [{
+            'name': 'Bar',
+            }]})
+        self.assert_([x for x in test.groups if x.name == 'Bar'])
+
+        test.groups.extend(Group.find())
+        group = test.groups[0]
+        test._on_change_set('groups', {'update': [{
+            'id': group.id,
+            'name': 'Foo',
+            }]})
+        self.assert_([x for x in test.groups if x.name == 'Foo'])
diff --git a/proteus/tests/test_wizard.py b/proteus/tests/test_wizard.py
new file mode 100644
index 0000000..2b824c3
--- /dev/null
+++ b/proteus/tests/test_wizard.py
@@ -0,0 +1,41 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+from unittest import TestCase
+from proteus import config, Wizard, Model
+
+
+class TestWizard(TestCase):
+
+    def setUp(self):
+        config.set_trytond(database_type='sqlite')
+
+    def test_translation_clean(self):
+        translation_clean = Wizard('ir.translation.clean')
+        self.assertEqual(translation_clean.form.__class__.__name__,
+                'ir.translation.clean.init')
+        translation_clean.execute('start')
+
+    def test_translation_export(self):
+        translation_export = Wizard('ir.translation.export')
+        translation_export.form.lang = 'en_US'
+        translation_export.form.module = 'ir'
+        translation_export.execute('start')
+        self.assert_(translation_export.form.file)
+        translation_export.execute('end')
+
+    def test_user_config(self):
+        User = Model.get('res.user')
+
+        user_config = Wizard('res.user.config')
+        user_config.execute('user')
+        user_config.form.name = 'Foo'
+        user_config.form.login = 'foo'
+        user_config.execute('add')
+        self.assertEqual(user_config.form.name, None)
+        self.assertEqual(user_config.form.login, None)
+        user_config.form.name = 'Bar'
+        user_config.form.login = 'bar'
+        user_config.execute('end')
+
+        self.assert_(User.find([('name', '=', 'Foo')]))
+        self.assertFalse(User.find([('name', '=', 'Bar')]))
diff --git a/setup.py b/setup.py
index 5bb69db..a790fe4 100644
--- a/setup.py
+++ b/setup.py
@@ -8,10 +8,6 @@ import sys
 
 execfile(os.path.join('trytond', 'version.py'))
 
-SIMPLEJSON = []
-if sys.version_info < (2, 6):
-    SIMPLEJSON = ['simplejson']
-
 def read(fname):
     return open(os.path.join(os.path.dirname(__file__), fname)).read()
 
@@ -26,25 +22,27 @@ setup(name=PACKAGE,
             VERSION.rsplit('.', 1)[0] + '/',
     packages=find_packages(exclude=['*.modules.*', 'modules.*', 'modules']),
     package_data={
+        'trytond': ['ir/ui/icons/*.svg'],
         'trytond.backend.mysql': ['init.sql'],
         'trytond.backend.postgresql': ['init.sql'],
         'trytond.backend.sqlite': ['init.sql'],
-        'trytond.ir': ['*.xml', '*.csv'],
+        'trytond.ir': ['*.xml', 'locale/*.po'],
         'trytond.ir.module': ['*.xml'],
         'trytond.ir.ui': ['*.xml', '*.rng', '*.rnc'],
-        'trytond.ir.ui.icons': ['*.svg'],
-        'trytond.res': ['*.xml', '*.csv'],
-        'trytond.webdav': ['*.xml', '*.csv'],
-        'trytond.workflow': ['*.xml', '*.csv'],
+        'trytond.res': ['*.xml', 'locale/*.po'],
+        'trytond.webdav': ['*.xml', 'locale/*.po'],
+        'trytond.workflow': ['*.xml', 'locale/*.po'],
         'trytond.test': ['*.xml'],
     },
     scripts=['bin/trytond'],
     classifiers=[
         'Development Status :: 5 - Production/Stable',
         'Environment :: No Input/Output (Daemon)',
+        'Framework :: Tryton',
         'Intended Audience :: Developers',
         'License :: OSI Approved :: GNU General Public License (GPL)',
         'Natural Language :: Bulgarian',
+        'Natural Language :: Czech',
         'Natural Language :: Dutch',
         'Natural Language :: English',
         'Natural Language :: French',
@@ -52,7 +50,6 @@ setup(name=PACKAGE,
         'Natural Language :: Russian',
         'Natural Language :: Spanish',
         'Operating System :: OS Independent',
-        'Programming Language :: Python :: 2.5',
         'Programming Language :: Python :: 2.6',
         'Programming Language :: Python :: 2.7',
         'Topic :: Software Development :: Libraries :: Application Frameworks',
@@ -63,15 +60,17 @@ setup(name=PACKAGE,
         'relatorio >= 0.2.0',
         'Genshi',
         'python-dateutil',
-    ] + SIMPLEJSON,
+        'polib',
+    ],
     extras_require={
         'PostgreSQL': ['psycopg2 >= 2.0'],
         'MySQL': ['MySQL-python'],
         'WebDAV': ['PyWebDAV >= 0.9.3'],
-        'PDF': ['openoffice-python'],
+        'unoconv': ['unoconv'],
         'SSL': ['pyOpenSSL'],
         'graphviz': ['pydot'],
         'timezone': ['pytz'],
+        'simplejson': ['simplejson'],
     },
     zip_safe=False,
     test_suite='trytond.tests',
diff --git a/trytond.egg-info/PKG-INFO b/trytond.egg-info/PKG-INFO
index bd75fa1..1abc023 100644
--- a/trytond.egg-info/PKG-INFO
+++ b/trytond.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.0
 Name: trytond
-Version: 2.0.2
+Version: 2.2.0
 Summary: Tryton server
 Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/2.0/
+Download-URL: http://downloads.tryton.org/2.2/
 Description: trytond
         =======
         
@@ -94,9 +94,11 @@ Description: trytond
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: No Input/Output (Daemon)
+Classifier: Framework :: Tryton
 Classifier: Intended Audience :: Developers
 Classifier: License :: OSI Approved :: GNU General Public License (GPL)
 Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Czech
 Classifier: Natural Language :: Dutch
 Classifier: Natural Language :: English
 Classifier: Natural Language :: French
@@ -104,7 +106,6 @@ Classifier: Natural Language :: German
 Classifier: Natural Language :: Russian
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 2.5
 Classifier: Programming Language :: Python :: 2.6
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
diff --git a/trytond.egg-info/SOURCES.txt b/trytond.egg-info/SOURCES.txt
index e3d84d9..047bed8 100644
--- a/trytond.egg-info/SOURCES.txt
+++ b/trytond.egg-info/SOURCES.txt
@@ -28,21 +28,29 @@ doc/topics/reports/index.rst
 doc/topics/views/extension.rst
 doc/topics/views/index.rst
 etc/trytond.conf
+proteus/__init__.py
+proteus/config.py
+proteus/pyson.py
+proteus/tests/__init__.py
+proteus/tests/test_config.py
+proteus/tests/test_model.py
+proteus/tests/test_wizard.py
 trytond/__init__.py
 trytond/cache.py
 trytond/config.py
 trytond/const.py
 trytond/convert.py
 trytond/error.py
+trytond/exceptions.py
 trytond/monitor.py
 trytond/pool.py
-trytond/pysocket.py
 trytond/pyson.py
 trytond/security.py
 trytond/server.py
 trytond/session.py
 trytond/test_loader.py
 trytond/transaction.py
+trytond/url.py
 trytond/version.py
 trytond.egg-info/PKG-INFO
 trytond.egg-info/SOURCES.txt
@@ -75,27 +83,20 @@ trytond/ir/action.py
 trytond/ir/action.xml
 trytond/ir/attachment.py
 trytond/ir/attachment.xml
-trytond/ir/bg_BG.csv
 trytond/ir/cache.py
 trytond/ir/cron.py
 trytond/ir/cron.xml
 trytond/ir/date.py
-trytond/ir/de_DE.csv
-trytond/ir/es_CO.csv
-trytond/ir/es_ES.csv
 trytond/ir/export.py
 trytond/ir/export.xml
-trytond/ir/fr_FR.csv
 trytond/ir/gen_time_locale.py
 trytond/ir/ir.xml
 trytond/ir/lang.py
 trytond/ir/lang.xml
 trytond/ir/model.py
 trytond/ir/model.xml
-trytond/ir/nl_NL.csv
 trytond/ir/property.py
 trytond/ir/property.xml
-trytond/ir/ru_RU.csv
 trytond/ir/rule.py
 trytond/ir/rule.xml
 trytond/ir/sequence.py
@@ -105,6 +106,14 @@ trytond/ir/translation.py
 trytond/ir/translation.xml
 trytond/ir/trigger.py
 trytond/ir/trigger.xml
+trytond/ir/locale/bg_BG.po
+trytond/ir/locale/cs_CZ.po
+trytond/ir/locale/de_DE.po
+trytond/ir/locale/es_CO.po
+trytond/ir/locale/es_ES.po
+trytond/ir/locale/fr_FR.po
+trytond/ir/locale/nl_NL.po
+trytond/ir/locale/ru_RU.po
 trytond/ir/module/__init__.py
 trytond/ir/module/module.py
 trytond/ir/module/module.xml
@@ -124,8 +133,6 @@ trytond/ir/ui/tree.rng
 trytond/ir/ui/ui.xml
 trytond/ir/ui/view.py
 trytond/ir/ui/view.xml
-trytond/ir/ui/icons/LICENSE
-trytond/ir/ui/icons/__init__.py
 trytond/ir/ui/icons/tryton-calendar.svg
 trytond/ir/ui/icons/tryton-clock.svg
 trytond/ir/ui/icons/tryton-graph.svg
@@ -169,7 +176,6 @@ trytond/protocols/common.py
 trytond/protocols/datatype.py
 trytond/protocols/dispatcher.py
 trytond/protocols/jsonrpc.py
-trytond/protocols/netrpc.py
 trytond/protocols/sslsocket.py
 trytond/protocols/webdav.py
 trytond/protocols/xmlrpc.py
@@ -177,22 +183,23 @@ trytond/report/__init__.py
 trytond/report/report.py
 trytond/res/__init__.py
 trytond/res/__tryton__.py
-trytond/res/bg_BG.csv
-trytond/res/de_DE.csv
-trytond/res/es_CO.csv
-trytond/res/es_ES.csv
-trytond/res/fr_FR.csv
 trytond/res/group.py
 trytond/res/group.xml
 trytond/res/ir.py
 trytond/res/ir.xml
-trytond/res/nl_NL.csv
 trytond/res/request.py
 trytond/res/request.xml
 trytond/res/res.xml
-trytond/res/ru_RU.csv
 trytond/res/user.py
 trytond/res/user.xml
+trytond/res/locale/bg_BG.po
+trytond/res/locale/cs_CZ.po
+trytond/res/locale/de_DE.po
+trytond/res/locale/es_CO.po
+trytond/res/locale/es_ES.po
+trytond/res/locale/fr_FR.po
+trytond/res/locale/nl_NL.po
+trytond/res/locale/ru_RU.po
 trytond/test/__init__.py
 trytond/test/__tryton__.py
 trytond/test/access.py
@@ -204,11 +211,15 @@ trytond/test/mptt.py
 trytond/test/sequence.xml
 trytond/test/test.py
 trytond/test/trigger.py
+trytond/test/wizard.py
+trytond/test/workflow.py
+trytond/test/workflow.xml
 trytond/tests/__init__.py
 trytond/tests/test_access.py
 trytond/tests/test_exportdata.py
 trytond/tests/test_fields.py
 trytond/tests/test_importdata.py
+trytond/tests/test_mixins.py
 trytond/tests/test_modelsingleton.py
 trytond/tests/test_mptt.py
 trytond/tests/test_protocols_datatype.py
@@ -217,32 +228,35 @@ trytond/tests/test_sequence.py
 trytond/tests/test_tools.py
 trytond/tests/test_trigger.py
 trytond/tests/test_tryton.py
+trytond/tests/test_workflow.py
 trytond/tools/__init__.py
 trytond/tools/datetime_strftime.py
 trytond/tools/misc.py
+trytond/tools/ordereddict.py
 trytond/tools/singleton.py
 trytond/webdav/__init__.py
 trytond/webdav/__tryton__.py
-trytond/webdav/bg_BG.csv
-trytond/webdav/de_DE.csv
-trytond/webdav/es_CO.csv
-trytond/webdav/es_ES.csv
-trytond/webdav/fr_FR.csv
-trytond/webdav/nl_NL.csv
-trytond/webdav/ru_RU.csv
 trytond/webdav/webdav.py
 trytond/webdav/webdav.xml
+trytond/webdav/locale/bg_BG.po
+trytond/webdav/locale/cs_CZ.po
+trytond/webdav/locale/de_DE.po
+trytond/webdav/locale/es_CO.po
+trytond/webdav/locale/es_ES.po
+trytond/webdav/locale/fr_FR.po
+trytond/webdav/locale/nl_NL.po
+trytond/webdav/locale/ru_RU.po
 trytond/wizard/__init__.py
 trytond/wizard/wizard.py
 trytond/workflow/__init__.py
 trytond/workflow/__tryton__.py
-trytond/workflow/bg_BG.csv
-trytond/workflow/de_DE.csv
-trytond/workflow/es_CO.csv
-trytond/workflow/es_ES.csv
-trytond/workflow/expr.py
-trytond/workflow/fr_FR.csv
-trytond/workflow/nl_NL.csv
-trytond/workflow/ru_RU.csv
 trytond/workflow/workflow.py
-trytond/workflow/workflow.xml
\ No newline at end of file
+trytond/workflow/workflow.xml
+trytond/workflow/locale/bg_BG.po
+trytond/workflow/locale/cs_CZ.po
+trytond/workflow/locale/de_DE.po
+trytond/workflow/locale/es_CO.po
+trytond/workflow/locale/es_ES.po
+trytond/workflow/locale/fr_FR.po
+trytond/workflow/locale/nl_NL.po
+trytond/workflow/locale/ru_RU.po
\ No newline at end of file
diff --git a/trytond.egg-info/requires.txt b/trytond.egg-info/requires.txt
index bedd764..267aa67 100644
--- a/trytond.egg-info/requires.txt
+++ b/trytond.egg-info/requires.txt
@@ -2,6 +2,10 @@ lxml >= 2.0
 relatorio >= 0.2.0
 Genshi
 python-dateutil
+polib
+
+[unoconv]
+unoconv
 
 [PostgreSQL]
 psycopg2 >= 2.0
@@ -9,8 +13,11 @@ psycopg2 >= 2.0
 [WebDAV]
 PyWebDAV >= 0.9.3
 
-[graphviz]
-pydot
+[simplejson]
+simplejson
+
+[MySQL]
+MySQL-python
 
 [timezone]
 pytz
@@ -18,8 +25,5 @@ pytz
 [SSL]
 pyOpenSSL
 
-[MySQL]
-MySQL-python
-
-[PDF]
-openoffice-python
\ No newline at end of file
+[graphviz]
+pydot
\ No newline at end of file
diff --git a/trytond.egg-info/top_level.txt b/trytond.egg-info/top_level.txt
index 93df119..ceba056 100644
--- a/trytond.egg-info/top_level.txt
+++ b/trytond.egg-info/top_level.txt
@@ -1 +1,2 @@
 trytond
+proteus
diff --git a/trytond/backend/database.py b/trytond/backend/database.py
index f144646..808c0d1 100644
--- a/trytond/backend/database.py
+++ b/trytond/backend/database.py
@@ -1,5 +1,6 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
+from trytond.const import CONTEXT_CACHE_SIZE, MODEL_CACHE_SIZE
 
 DatabaseIntegrityError = None
 DatabaseOperationalError = None
@@ -23,7 +24,7 @@ class DatabaseInterface(object):
         '''
         raise NotImplementedError
 
-    def cursor(self, autocommit=False):
+    def cursor(self, autocommit=False, readonly=False):
         '''
         Retreive a cursor on the database
 
@@ -103,7 +104,8 @@ class CursorInterface(object):
     IN_MAX = 1000
 
     def __init__(self):
-        self.cache = {}
+        from trytond.cache import LRUDict
+        self.cache = LRUDict(CONTEXT_CACHE_SIZE)
 
     def get_cache(self, context=None):
         '''
@@ -112,6 +114,7 @@ class CursorInterface(object):
         :param context: the context
         :return: the cache dictionary
         '''
+        from trytond.cache import LRUDict
         from trytond.transaction import Transaction
         user = Transaction().user
         if context is None:
@@ -121,7 +124,8 @@ class CursorInterface(object):
                 '_delete_records'):
             if i in cache_ctx:
                 del cache_ctx[i]
-        return self.cache.setdefault((user, repr(cache_ctx)), {})
+        return self.cache.setdefault((user, repr(cache_ctx)),
+            LRUDict(MODEL_CACHE_SIZE))
 
     def execute(self, sql, params=None):
         '''
@@ -223,3 +227,11 @@ class CursorInterface(object):
         :param value: the auto_increment value
         '''
         pass
+
+    def has_returning(self):
+        '''
+        Return True if database implements RETURNING clause in INSERT or UPDATE
+        statements.
+
+        :return: a boolean
+        '''
diff --git a/trytond/backend/mysql/database.py b/trytond/backend/mysql/database.py
index de7fc52..31b9f79 100644
--- a/trytond/backend/mysql/database.py
+++ b/trytond/backend/mysql/database.py
@@ -1,6 +1,5 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 from trytond.backend.database import DatabaseInterface, CursorInterface
 from trytond.config import CONFIG
 import MySQLdb
@@ -30,7 +29,7 @@ class Database(DatabaseInterface):
     def connect(self):
         return self
 
-    def cursor(self, autocommit=False):
+    def cursor(self, autocommit=False, readonly=False):
         conv = MySQLdb.converters.conversions.copy()
         conv[float] = lambda value, _: repr(value)
         args = {
diff --git a/trytond/backend/mysql/init.sql b/trytond/backend/mysql/init.sql
index 853775c..d2b3c86 100644
--- a/trytond/backend/mysql/init.sql
+++ b/trytond/backend/mysql/init.sql
@@ -85,10 +85,10 @@ CREATE TABLE res_group (
 ) ENGINE=InnoDB;
 
 CREATE TABLE `res_user-res_group` (
-    uid BIGINT NOT NULL,
-    gid BIGINT NOT NULL,
-    CONSTRAINT `res_user-res_group_uid_fkey` FOREIGN KEY (uid) REFERENCES res_user (id) ON DELETE CASCADE,
-    CONSTRAINT `res_user-res_group_gid_fkey` FOREIGN KEY (gid) REFERENCES res_group (id) ON DELETE CASCADE
+    `user` BIGINT NOT NULL,
+    `group` BIGINT NOT NULL,
+    CONSTRAINT `res_user-res_group_user_fkey` FOREIGN KEY (`user`) REFERENCES res_user (id) ON DELETE CASCADE,
+    CONSTRAINT `res_user-res_group_group_fkey` FOREIGN KEY (`group`) REFERENCES res_group (id) ON DELETE CASCADE
 ) ENGINE=InnoDB;
 
 CREATE TABLE wkf (
@@ -105,12 +105,12 @@ CREATE TABLE wkf_activity (
     subflow BIGINT,
     split_mode VARCHAR(255),
     join_mode VARCHAR(255),
-    kind VARCHAR(255) NOT NULL,
     name VARCHAR(255),
     signal_send VARCHAR(255),
     flow_start BOOLEAN NOT NULL,
     flow_stop BOOLEAN NOT NULL,
-    action TEXT,
+    stop_other BOOLEAN NOT NULL,
+    action VARCHAR(255),
     PRIMARY KEY(id),
     CONSTRAINT wkf_activity_workflow_fkey FOREIGN KEY (workflow) REFERENCES wkf (id) ON DELETE CASCADE,
     CONSTRAINT wkf_activity_subflow_fkey FOREIGN KEY (subflow) REFERENCES wkf (id) ON DELETE SET NULL
diff --git a/trytond/backend/mysql/table.py b/trytond/backend/mysql/table.py
index e66641f..a579ac6 100644
--- a/trytond/backend/mysql/table.py
+++ b/trytond/backend/mysql/table.py
@@ -248,6 +248,8 @@ class TableHandler(TableHandlerInterface):
             column_name = [column_name]
         index_name = (table or self.table_name) + "_" + '_'.join(column_name) \
                 + "_index"
+        # Index name length is limited to 64
+        index_name = index_name[:64]
 
         for k in column_name:
             if k in self._columns:
diff --git a/trytond/backend/postgresql/database.py b/trytond/backend/postgresql/database.py
index c432fa9..19d156e 100644
--- a/trytond/backend/postgresql/database.py
+++ b/trytond/backend/postgresql/database.py
@@ -1,12 +1,11 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 from trytond.backend.database import DatabaseInterface, CursorInterface
 from trytond.config import CONFIG
 from trytond.session import Session
 from psycopg2.pool import ThreadedConnectionPool
 from psycopg2.extensions import cursor as PsycopgCursor
-from psycopg2.extensions import ISOLATION_LEVEL_SERIALIZABLE
+from psycopg2.extensions import ISOLATION_LEVEL_REPEATABLE_READ
 from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT
 from psycopg2.extensions import register_type, register_adapter
 from psycopg2.extensions import UNICODE, AsIs
@@ -27,6 +26,7 @@ from trytond.protocols.datatype import Float
 
 RE_FROM = re.compile('.* from "?([a-zA-Z_0-9]+)"?.*$')
 RE_INTO = re.compile('.* into "?([a-zA-Z_0-9]+)"?.*$')
+RE_VERSION = re.compile(r'\S+ (\d+)\.(\d+)')
 
 
 class Database(DatabaseInterface):
@@ -35,6 +35,7 @@ class Database(DatabaseInterface):
     _connpool = None
     _list_cache = None
     _list_cache_timestamp = None
+    _version_cache = {}
 
     def __new__(cls, database_name='template1'):
         if database_name in cls._databases:
@@ -62,15 +63,19 @@ class Database(DatabaseInterface):
         self._connpool = ThreadedConnectionPool(minconn, maxconn, dsn)
         return self
 
-    def cursor(self, autocommit=False):
+    def cursor(self, autocommit=False, readonly=False):
         if self._connpool is None:
             self.connect()
         conn = self._connpool.getconn()
         if autocommit:
             conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
         else:
-            conn.set_isolation_level(ISOLATION_LEVEL_SERIALIZABLE)
-        return Cursor(self._connpool, conn, self.database_name)
+            conn.set_isolation_level(ISOLATION_LEVEL_REPEATABLE_READ)
+        cursor = Cursor(self._connpool, conn, self)
+        # TODO change for set_session
+        if readonly:
+            cursor.execute('SET TRANSACTION READ ONLY')
+        return cursor
 
     def close(self):
         if self._connpool is None:
@@ -87,6 +92,14 @@ class Database(DatabaseInterface):
         cursor.execute('DROP DATABASE "' + database_name + '"')
         Database._list_cache = None
 
+    def get_version(self, cursor):
+        if self.database_name not in self._version_cache:
+            cursor.execute('SELECT version()')
+            version, = cursor.fetchone()
+            self._version_cache[self.database_name] = tuple(map(int,
+                RE_VERSION.search(version).groups()))
+        return self._version_cache[self.database_name]
+
     @staticmethod
     def dump(database_name):
         from trytond.tools import exec_pg_command_pipe
@@ -271,12 +284,11 @@ class _Cursor(PsycopgCursor):
 
 class Cursor(CursorInterface):
 
-    def __init__(self, connpool, conn, database_name):
+    def __init__(self, connpool, conn, database):
         super(Cursor, self).__init__()
         self._connpool = connpool
         self._conn = conn
-        self.database_name = database_name
-        self.dbname = self.database_name #XXX to remove
+        self._database = database
         self.cursor = conn.cursor(cursor_factory=_Cursor)
         self.commit()
         self.sql_from_log = {}
@@ -286,6 +298,15 @@ class Cursor(CursorInterface):
             'into': 0,
         }
 
+    @property
+    def database_name(self):
+        return self._database.database_name
+
+    # TODO to remove
+    @property
+    def dbname(self):
+        return self.database_name
+
     def __getattr__(self, name):
         return getattr(self.cursor, name)
 
@@ -402,6 +423,10 @@ class Cursor(CursorInterface):
             select += ' OFFSET %d' % offset
         return select
 
+    def has_returning(self):
+        # RETURNING clause is available since PostgreSQL 8.2
+        return self._database.get_version(self) >= (8, 2)
+
 register_type(UNICODE)
 if PYDATE:
     register_type(PYDATE)
diff --git a/trytond/backend/postgresql/init.sql b/trytond/backend/postgresql/init.sql
index be4da11..bb83dbd 100644
--- a/trytond/backend/postgresql/init.sql
+++ b/trytond/backend/postgresql/init.sql
@@ -102,10 +102,10 @@ CREATE SEQUENCE "res_user-res_group_id_seq";
 
 CREATE TABLE "res_user-res_group" (
     id INTEGER DEFAULT NEXTVAL('res_user-res_group_id_seq') NOT NULL,
-    uid INTEGER NOT NULL,
-    gid INTEGER NOT NULL,
-    FOREIGN KEY (uid) REFERENCES res_user (id) ON DELETE CASCADE,
-    FOREIGN KEY (gid) REFERENCES res_group (id) ON DELETE CASCADE,
+    "user" INTEGER NOT NULL,
+    "group" INTEGER NOT NULL,
+    FOREIGN KEY ("user") REFERENCES res_user (id) ON DELETE CASCADE,
+    FOREIGN KEY ("group") REFERENCES res_group (id) ON DELETE CASCADE,
     PRIMARY KEY(id)
 );
 
@@ -127,12 +127,12 @@ CREATE TABLE wkf_activity (
     subflow INTEGER,
     split_mode VARCHAR NOT NULL,
     join_mode VARCHAR NOT NULL,
-    kind VARCHAR NOT NULL,
     name VARCHAR NOT NULL,
     signal_send VARCHAR,
     flow_start BOOLEAN NOT NULL,
     flow_stop BOOLEAN NOT NULL,
-    action TEXT,
+    stop_other BOOLEAN NOT NULL,
+    action VARCHAR,
     PRIMARY KEY(id),
     FOREIGN KEY (workflow) REFERENCES wkf (id) ON DELETE CASCADE,
     FOREIGN KEY (subflow) REFERENCES wkf (id) ON DELETE SET NULL
diff --git a/trytond/backend/postgresql/table.py b/trytond/backend/postgresql/table.py
index 04f5c3d..7486c91 100644
--- a/trytond/backend/postgresql/table.py
+++ b/trytond/backend/postgresql/table.py
@@ -32,7 +32,7 @@ class TableHandler(TableHandlerInterface):
             if not self.history:
                 self.cursor.execute('ALTER TABLE "%s" ' \
                         'ADD COLUMN id INTEGER ' \
-                            'DEFAULT nextval(\'%s\') NOT NULL' % \
+                            'DEFAULT nextval(\'"%s"\') NOT NULL' % \
                             (self.table_name, self.sequence_name))
                 self.cursor.execute('ALTER TABLE "%s" ' \
                         'ADD PRIMARY KEY(id)' % self.table_name)
@@ -43,17 +43,17 @@ class TableHandler(TableHandlerInterface):
         if self.history and not '__id' in self._columns:
             self.cursor.execute('ALTER TABLE "%s" ' \
                     'ADD COLUMN __id INTEGER ' \
-                        'DEFAULT nextval(\'%s\') NOT NULL' % \
+                        'DEFAULT nextval(\'"%s"\') NOT NULL' % \
                         (self.table_name, self.sequence_name))
             self.cursor.execute('ALTER TABLE "%s" ' \
                     'ADD PRIMARY KEY(__id)' % self.table_name)
         if self.history:
             self.cursor.execute('ALTER TABLE "%s" ' \
-                    'ALTER __id SET DEFAULT nextval(\'%s\')' % (self.table_name,
+                    'ALTER __id SET DEFAULT nextval(\'"%s"\')' % (self.table_name,
                         self.sequence_name))
         else:
             self.cursor.execute('ALTER TABLE "%s" ' \
-                    'ALTER id SET DEFAULT nextval(\'%s\')' % (self.table_name,
+                    'ALTER id SET DEFAULT nextval(\'"%s"\')' % (self.table_name,
                         self.sequence_name))
         self._update_definitions()
 
@@ -312,9 +312,13 @@ class TableHandler(TableHandlerInterface):
             column_name = [column_name]
         index_name = (table or self.table_name) + "_" + '_'.join(column_name) \
                 + "_index"
+        if self._indexes:
+            test_index_name = index_name[:max(map(len, self._indexes))]
+        else:
+            test_index_name = index_name
 
         if action == 'add':
-            if index_name in self._indexes:
+            if test_index_name in self._indexes:
                 return
             self.cursor.execute('CREATE INDEX "' + index_name + '" ' \
                                'ON "' + self.table_name + '" ( ' + \
@@ -327,7 +331,7 @@ class TableHandler(TableHandlerInterface):
                         != self.module_name:
                     return
 
-            if index_name in self._indexes:
+            if test_index_name in self._indexes:
                 self.cursor.execute('DROP INDEX "%s" ' % (index_name,))
                 self._update_definitions()
         else:
diff --git a/trytond/backend/sqlite/database.py b/trytond/backend/sqlite/database.py
index 0c4fa0a..d01d7dd 100644
--- a/trytond/backend/sqlite/database.py
+++ b/trytond/backend/sqlite/database.py
@@ -1,6 +1,5 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 from trytond.backend.database import DatabaseInterface, CursorInterface
 from trytond.config import CONFIG
 from trytond.session import Session
@@ -9,6 +8,8 @@ import re
 from decimal import Decimal
 import datetime
 import time
+import sys
+import threading
 
 _FIX_ROWCOUNT = False
 try:
@@ -88,19 +89,20 @@ def replace(text, pattern, replacement):
 
 class Database(DatabaseInterface):
 
-    _memory_database = None
+    _local = threading.local()
     _conn = None
 
     def __new__(cls, database_name=':memory:'):
-        if database_name == ':memory:' \
-                and cls._memory_database:
-            return cls._memory_database
+        if (database_name == ':memory:'
+                and hasattr(cls._local, 'memory_database')
+                and cls._local.memory_database):
+            return cls._local.memory_database
         return DatabaseInterface.__new__(cls, database_name=database_name)
 
     def __init__(self, database_name=':memory:'):
         super(Database, self).__init__(database_name=database_name)
         if database_name == ':memory:':
-            Database._memory_database = self
+            Database._local.memory_database = self
 
     def connect(self):
         if self.database_name == ':memory:':
@@ -120,7 +122,7 @@ class Database(DatabaseInterface):
             self._conn.create_function('replace', 3, replace)
         return self
 
-    def cursor(self, autocommit=False):
+    def cursor(self, autocommit=False, readonly=False):
         if self._conn is None:
             self.connect()
         if autocommit:
@@ -144,10 +146,9 @@ class Database(DatabaseInterface):
                 return
             path = os.path.join(CONFIG['data_path'],
                     database_name + '.sqlite')
-        conn = sqlite.connect(path)
-        cursor = conn.cursor()
-        cursor.close()
-        conn.close()
+        with sqlite.connect(path) as conn:
+            cursor = conn.cursor()
+            cursor.close()
 
     def drop(self, cursor, database_name):
         if database_name == ':memory:':
@@ -292,8 +293,7 @@ class Cursor(CursorInterface):
         sql = buf[:-2]
         try:
             if params:
-                res = self.cursor.execute(sql, [isinstance(x, str) and \
-                        unicode(x, 'utf-8') or x for x in  params])
+                res = self.cursor.execute(sql, params)
             else:
                 res = self.cursor.execute(sql)
         except Exception:
@@ -358,7 +358,10 @@ class Cursor(CursorInterface):
         return select
 
 sqlite.register_converter('NUMERIC', lambda val: Decimal(val))
-sqlite.register_adapter(Decimal, lambda val: buffer(str(val)))
+if sys.version_info[0] == 2:
+    sqlite.register_adapter(Decimal, lambda val: buffer(str(val)))
+else:
+    sqlite.register_adapter(Decimal, lambda val: bytes(str(val)))
 sqlite.register_adapter(Session, int)
 def adapt_datetime(val):
     return val.replace(tzinfo=None).isoformat(" ")
diff --git a/trytond/backend/sqlite/init.sql b/trytond/backend/sqlite/init.sql
index 52bbf66..e20292c 100644
--- a/trytond/backend/sqlite/init.sql
+++ b/trytond/backend/sqlite/init.sql
@@ -73,8 +73,8 @@ CREATE TABLE res_group (
 
 CREATE TABLE "res_user-res_group" (
     id INTEGER PRIMARY KEY AUTOINCREMENT,
-    uid INTEGER,
-    gid INTEGER
+    "user" INTEGER,
+    "group" INTEGER
 );
 
 CREATE TABLE wkf (
@@ -90,12 +90,12 @@ CREATE TABLE wkf_activity (
     subflow INTEGER,
     split_mode VARCHAR,
     join_mode VARCHAR,
-    kind VARCHAR,
     name VARCHAR,
     signal_send VARCHAR,
     flow_start BOOLEAN,
     flow_stop BOOLEAN,
-    action TEXT
+    stop_other BOOLEAN,
+    action VARCHAR
 );
 
 CREATE TABLE wkf_transition (
diff --git a/trytond/backend/sqlite/table.py b/trytond/backend/sqlite/table.py
index 6d942b7..2a18b03 100644
--- a/trytond/backend/sqlite/table.py
+++ b/trytond/backend/sqlite/table.py
@@ -127,7 +127,7 @@ class TableHandler(TableHandlerInterface):
             match = re.match(r'(\w+)(\((.*?)\))?', type_)
             if match:
                 typname = match.group(1).upper()
-                size = match.group(3) and int(match.group(3)) or None
+                size = match.group(3) and int(match.group(3)) or 0
             else:
                 typname = type_.upper()
                 size = -1
diff --git a/trytond/cache.py b/trytond/cache.py
index dfda7e4..005030e 100644
--- a/trytond/cache.py
+++ b/trytond/cache.py
@@ -7,6 +7,7 @@ from threading import Lock
 from trytond.transaction import Transaction
 from trytond.config import CONFIG
 from trytond.backend import Database
+from trytond.tools import OrderedDict
 
 
 class Cache(object):
@@ -167,3 +168,32 @@ class Cache(object):
             cursor.commit()
             cursor.close()
             Cache._resets_lock.release()
+
+
+class LRUDict(OrderedDict):
+    """
+    Dictionary with a size limit.
+    If size limit is reached, it will remove the first added items.
+    """
+    def __init__(self, size_limit, *args, **kwargs):
+        assert size_limit > 0
+        self.size_limit = size_limit
+        super(LRUDict, self).__init__(*args, **kwargs)
+        self._check_size_limit()
+
+    def __setitem__(self, key, value):
+        super(LRUDict, self).__setitem__(key, value)
+        self._check_size_limit()
+
+    def update(self, *args, **kwargs):
+        super(LRUDict, self).update(*args, **kwargs)
+        self._check_size_limit()
+
+    def setdefault(self, key, default=None):
+        default = super(LRUDict, self).setdefault(key, default=default)
+        self._check_size_limit()
+        return default
+
+    def _check_size_limit(self):
+        while len(self) > self.size_limit:
+            self.popitem(last=False)
diff --git a/trytond/config.py b/trytond/config.py
index 55e95b4..0cdb678 100644
--- a/trytond/config.py
+++ b/trytond/config.py
@@ -1,22 +1,37 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-import ConfigParser, optparse, os, sys
-from trytond.version import VERSION
-
+import ConfigParser, os, sys
+
+def get_hostname(netloc):
+    if '[' in netloc and ']' in netloc:
+        return netloc.split(']')[0][1:]
+    elif ':' in netloc:
+        return netloc.split(':')[0]
+    else:
+        return netloc
+
+def get_port(netloc, protocol):
+    netloc = netloc.split(']')[-1]
+    if ':' in netloc:
+        return int(netloc.split(':')[1])
+    else:
+        return {
+            'jsonrpc': 8000,
+            'xmlrpc': 8069,
+            'webdav': 8080,
+        }.get(protocol)
 
 class ConfigManager(object):
     def __init__(self, fname=None):
         self.options = {
-            'interface': '',
-            'netrpc': True,
-            'netport': 8070,
-            'xmlrpc': False,
-            'xmlport': 8069,
-            'jsonrpc': False,
-            'jsonport': 8000,
+            'hostname': None,
+            'jsonrpc': [('localhost', 8000)],
+            'ssl_jsonrpc': False,
+            'xmlrpc': [],
+            'ssl_xmlrpc': False,
             'jsondata_path': '/var/www/localhost/tryton',
-            'webdav': False,
-            'webdavport': 8080,
+            'webdav': [],
+            'ssl_webdav': False,
             'db_type': 'postgresql',
             'db_host': False,
             'db_port': False,
@@ -31,10 +46,6 @@ class ConfigManager(object):
             'debug_mode': False,
             'pidfile': None,
             'logfile': None,
-            'secure_netrpc': False,
-            'secure_xmlrpc': False,
-            'secure_jsonrpc': False,
-            'secure_webdav': False,
             'privatekey': '/etc/ssl/trytond/server.key',
             'certificate': '/etc/ssl/trytond/server.pem',
             'smtp_server': 'localhost',
@@ -44,7 +55,6 @@ class ConfigManager(object):
             'smtp_user': False,
             'smtp_password': False,
             'data_path': '/var/lib/trytond',
-            'max_thread': 40,
             'multi_server': False,
             'session_timeout': 600,
             'psyco': False,
@@ -52,46 +62,14 @@ class ConfigManager(object):
             'prevent_dblist': False,
             'init': {},
             'update': {},
+            'cron': True,
+            'unoconv': 'pipe,name=trytond;urp;StarOffice.ComponentContext',
+            'retry': 5,
         }
         self.configfile = None
 
-    def parse(self):
-        parser = optparse.OptionParser(version=VERSION)
-
-        parser.add_option("-c", "--config", dest="config",
-                help="specify config file")
-        parser.add_option('--debug', dest='debug_mode', action='store_true',
-                help='enable debug mode (start post-mortem debugger if exceptions occur)')
-        parser.add_option("-v", "--verbose", action="store_true",
-                dest="verbose", help="enable verbose mode")
-
-        parser.add_option("-d", "--database", dest="db_name",
-                help="specify the database name")
-        parser.add_option("-i", "--init", dest="init",
-                help="init a module (use \"all\" for all modules)")
-        parser.add_option("-u", "--update", dest="update",
-                help="update a module (use \"all\" for all modules)")
-
-        parser.add_option("--pidfile", dest="pidfile",
-                help="file where the server pid will be stored")
-        parser.add_option("--logfile", dest="logfile",
-                help="file where the server log will be stored")
-
-        (opt, _) = parser.parse_args()
-
-        if opt.config:
-            self.configfile = opt.config
-        else:
-            prefixdir = os.path.abspath(os.path.normpath(os.path.join(
-                os.path.dirname(sys.prefix), '..')))
-            self.configfile = os.path.join(prefixdir, 'etc', 'trytond.conf')
-            if not os.path.isfile(self.configfile):
-                configdir = os.path.abspath(os.path.normpath(os.path.join(
-                    os.path.dirname(__file__), '..')))
-                self.configfile = os.path.join(configdir, 'etc', 'trytond.conf')
-            if not os.path.isfile(self.configfile):
-                self.configfile = None
-        self.load()
+    def update_cmdline(self, cmdline_options):
+        self.options.update(cmdline_options)
 
         # Verify that we want to log or not, if not the output will go to stdout
         if self.options['logfile'] in ('None', 'False'):
@@ -102,51 +80,33 @@ class ConfigManager(object):
         if self.options['data_path'] in ('None', 'False'):
             self.options['data_path'] = False
 
-        for arg in (
-                'verbose',
-                'debug_mode',
-                'pidfile',
-                'logfile',
-                ):
-            if getattr(opt, arg) is not None:
-                self.options[arg] = getattr(opt, arg)
-
-        db_name = []
-        if opt.db_name:
-            for i in opt.db_name.split(','):
-                db_name.append(i)
-        self.options['db_name'] = db_name
-
-        init = {}
-        if opt.init:
-            for i in opt.init.split(','):
-                if i != 'test':
-                    init[i] = 1
-        self.options['init'] = init
-
-        update = {}
-        if opt.update:
-            for i in opt.update.split(','):
-                if i != 'test':
-                    update[i] = 1
-        self.options['update'] = update
+    def update_etc(self, configfile=None):
+        if configfile is None:
+            prefixdir = os.path.abspath(os.path.normpath(os.path.join(
+                os.path.dirname(sys.prefix), '..')))
+            configfile = os.path.join(prefixdir, 'etc', 'trytond.conf')
+            if not os.path.isfile(configfile):
+                configdir = os.path.abspath(os.path.normpath(os.path.join(
+                    os.path.dirname(__file__), '..')))
+                configfile = os.path.join(configdir, 'etc', 'trytond.conf')
+            if not os.path.isfile(configfile):
+                configfile = None
 
-    def load(self):
-        parser = ConfigParser.ConfigParser()
+        self.configfile = configfile
         if not self.configfile:
             return
-        fp = open(self.configfile)
-        try:
+
+        parser = ConfigParser.ConfigParser()
+        with open(self.configfile) as fp:
             parser.readfp(fp)
-        finally:
-            fp.close()
         for (name, value) in parser.items('options'):
             if value == 'True' or value == 'true':
                 value = True
             if value == 'False' or value == 'false':
                 value = False
-            if name in ('netport', 'xmlport', 'webdavport', 'jsonport'):
-                value = int(value)
+            if name in ('xmlrpc', 'jsonrpc', 'webdav'):
+                value = [(get_hostname(netloc).replace('*', ''),
+                    get_port(netloc, name)) for netloc in value.split(',')]
             self.options[name] = value
 
     def get(self, key, default=None):
diff --git a/trytond/const.py b/trytond/const.py
index 3f5ee97..b0a2006 100644
--- a/trytond/const.py
+++ b/trytond/const.py
@@ -17,3 +17,8 @@ OPERATORS = (
     '<',
     '>',
 )
+
+CONTEXT_CACHE_SIZE = 10
+MODEL_CACHE_SIZE = 200
+RECORD_CACHE_SIZE = 2000
+BROWSE_FIELD_TRESHOLD = 100
diff --git a/trytond/convert.py b/trytond/convert.py
index 03ba03d..62452ca 100644
--- a/trytond/convert.py
+++ b/trytond/convert.py
@@ -1,6 +1,5 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import time
 from xml import sax
 from decimal import Decimal
@@ -110,16 +109,7 @@ class MenuitemTagHandler:
                 values['icon'] = 'tryton-new'
 
         if values.get('groups'):
-            g_names = values['groups'].split(',')
-            groups_value = []
-            for group in g_names:
-                if group.startswith('-'):
-                    group_id = self.mh.get_id(group[1:])
-                    groups_value.append(('remove', group_id))
-                else:
-                    group_id = self.mh.get_id(group)
-                    groups_value.append(('add', group_id))
-            values['groups'] = groups_value
+            raise Exception("Please use separate records for groups")
 
         if not values.get('name'):
             if not action_name:
@@ -205,17 +195,8 @@ class RecordTagHandler:
                 search_model = self.model._columns[field_name].model_name
                 f_obj = self.mh.pool.get(search_model)
                 with Transaction().set_context(active_test=False):
-                    answer = f_obj.browse(f_obj.search(safe_eval(search_attr)))
-
-                if not answer: return
-
-                if self.model._columns[field_name]._type == 'many2many':
-                    self.values[field_name] = [
-                            ('set', [x['id'] for x in answer]),
-                        ]
-
-                elif self.model._columns[field_name]._type == 'many2one':
-                    self.values[field_name] = answer[0]['id']
+                    self.values[field_name], = \
+                            f_obj.search(safe_eval(search_attr))
 
             elif ref_attr:
                 self.values[field_name] = self.mh.get_id(ref_attr)
@@ -527,7 +508,7 @@ class TrytondXmlHandler(sax.handler.ContentHandler):
                 ref_id = ref_id[0]
             return ref_mode + ',' + str(ref_id)
         elif field_type in ['one2many', 'many2many']:
-            raise Unhandled_field()
+            raise Unhandled_field("Unhandled field %s" % key)
         else:
             return browse_record[key]
 
@@ -695,13 +676,7 @@ class TrytondXmlHandler(sax.handler.ContentHandler):
             to_update = {}
             for key in values:
 
-                try:
-                    db_field = self._clean_value(key, db_val, object_ref)
-                except Unhandled_field:
-                    logging.getLogger("convert").info(
-                        'Field %s on %s : integrity not tested.'%(key, model))
-                    to_update[key] = values[key]
-                    continue
+                db_field = self._clean_value(key, db_val, object_ref)
 
                 # if the fs value is the same has in the db, whe ignore it
                 val = values[key]
@@ -724,6 +699,16 @@ class TrytondXmlHandler(sax.handler.ContentHandler):
                 else:
                     expected_value = old_values[key]
 
+                # Migration from 2.0: Reference field change value
+                if key in object_ref._columns:
+                    field_type = object_ref._columns[key]._type
+                else:
+                    field_type = object_ref._inherit_fields[key][2]._type
+                if field_type == 'reference':
+                    if (expected_value and expected_value.endswith(',0')
+                            and not db_field):
+                        db_field = expected_value
+
                 # ... and we consider that there is an update if the
                 # expected value differs from the actual value, _and_
                 # if they are not false in a boolean context (ie None,
@@ -813,11 +798,7 @@ class TrytondXmlHandler(sax.handler.ContentHandler):
                 if not db_val:
                     db_val = object_ref.browse(db_id)
                 for key in to_update:
-                    try:
-                        values[key] = self._clean_value(
-                            key, db_val, object_ref)
-                    except Unhandled_field:
-                        continue
+                    values[key] = self._clean_value( key, db_val, object_ref)
 
             if module != self.module:
                 temp_values = old_values.copy()
@@ -904,11 +885,7 @@ class TrytondXmlHandler(sax.handler.ContentHandler):
             # in the model_data table:
             db_val = object_ref.browse(db_id)
             for key in values:
-                try:
-                    values[key] = self._clean_value(key, db_val,
-                            object_ref)
-                except Unhandled_field:
-                    continue
+                values[key] = self._clean_value(key, db_val, object_ref)
 
             for table in inherit_db_ids.keys():
                 self.modeldata_obj.create({
diff --git a/trytond/error.py b/trytond/error.py
index 1ca8e42..4ad052a 100644
--- a/trytond/error.py
+++ b/trytond/error.py
@@ -1,6 +1,8 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 from trytond.transaction import Transaction
+from trytond.pool import Pool
+from trytond.exceptions import UserError, UserWarning
 
 
 class WarningErrorMixin(object):
@@ -24,7 +26,7 @@ class WarningErrorMixin(object):
             (or tuple if error_description is not empty) instead of raising an
             exception.
         '''
-        translation_obj = self.pool.get('ir.translation')
+        translation_obj = Pool().get('ir.translation')
 
         error = self._error_messages.get(error, error)
 
@@ -67,11 +69,11 @@ class WarningErrorMixin(object):
                 except TypeError:
                     pass
             if raise_exception:
-                raise Exception('UserError', error, error_description)
+                raise UserError(error, error_description)
             else:
                 return (error, error_description)
         if raise_exception:
-            raise Exception('UserError', error)
+            raise UserError(error)
         else:
             return error
 
@@ -92,7 +94,7 @@ class WarningErrorMixin(object):
         :param warning_description_args: the arguments that will be used
             for "%"-based substitution
         '''
-        warning_obj = self.pool.get('res.user.warning')
+        warning_obj = Pool().get('res.user.warning')
         if warning_obj.check(warning_name):
             if warning_description:
                 warning, warning_description = self.raise_user_error(warning,
@@ -100,9 +102,8 @@ class WarningErrorMixin(object):
                         error_description=warning_description,
                         error_description_args=warning_description_args,
                         raise_exception=False)
-                raise Exception('UserWarning', warning_name, warning,
-                        warning_description)
+                raise UserWarning(warning_name, warning, warning_description)
             else:
                 warning = self.raise_user_error(warning,
                         error_args=warning_args, raise_exception=False)
-                raise Exception('UserWarning', warning_name, warning)
+                raise UserWarning(warning_name, warning)
diff --git a/trytond/exceptions.py b/trytond/exceptions.py
new file mode 100644
index 0000000..073170c
--- /dev/null
+++ b/trytond/exceptions.py
@@ -0,0 +1,37 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+
+class UserError(Exception):
+
+    def __init__(self, message, description=''):
+        super(UserError, self).__init__('UserError', (message, description))
+        self.message = message
+        self.description = description
+        self.code = 1
+
+
+class UserWarning(Exception):
+
+    def __init__(self, name, message, description=''):
+        super(UserWarning, self).__init__('UserWarning', (name, message,
+                description))
+        self.name = name
+        self.message = message
+        self.description = description
+        self.code = 2
+
+
+class NotLogged(Exception):
+
+    def __init__(self):
+        super(NotLogged, self).__init__('NotLogged')
+        self.code = 3
+
+
+class ConcurrencyException(Exception):
+
+    def __init__(self, message):
+        super(ConcurrencyException, self).__init__('ConcurrencyException',
+            message)
+        self.message = message
+        self.code = 4
diff --git a/trytond/ir/__tryton__.py b/trytond/ir/__tryton__.py
index 32800b5..61dd8f9 100644
--- a/trytond/ir/__tryton__.py
+++ b/trytond/ir/__tryton__.py
@@ -53,12 +53,13 @@ Fournit les concepts et l'administration des modèles, actions, séquences, loca
         'trigger.xml',
         ],
     'translation': [
-        'bg_BG.csv',
-        'de_DE.csv',
-        'es_CO.csv',
-        'es_ES.csv',
-        'fr_FR.csv',
-        'nl_NL.csv',
-        'ru_RU.csv',
+        'locale/cs_CZ.po',
+        'locale/bg_BG.po',
+        'locale/de_DE.po',
+        'locale/es_CO.po',
+        'locale/es_ES.po',
+        'locale/fr_FR.po',
+        'locale/nl_NL.po',
+        'locale/ru_RU.po',
     ],
 }
diff --git a/trytond/ir/action.py b/trytond/ir/action.py
index 6996c13..d03c4a8 100644
--- a/trytond/ir/action.py
+++ b/trytond/ir/action.py
@@ -1,6 +1,5 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import base64
 import os
 from trytond.model import ModelView, ModelSQL, ModelStorage, fields
@@ -9,6 +8,8 @@ from trytond.backend import TableHandler
 from trytond.pyson import PYSONEncoder, CONTEXT, PYSON
 from trytond.transaction import Transaction
 from trytond.cache import Cache
+from trytond.pool import Pool
+from trytond.exceptions import UserError
 
 
 class Action(ModelSQL, ModelView):
@@ -20,7 +21,7 @@ class Action(ModelSQL, ModelView):
     usage = fields.Char('Usage')
     keywords = fields.One2Many('ir.action.keyword', 'action',
             'Keywords')
-    groups = fields.Many2Many('ir.action-res.group', 'action_id', 'gid',
+    groups = fields.Many2Many('ir.action-res.group', 'action', 'group',
             'Groups')
     icon = fields.Many2One('ir.ui.icon', 'Icon')
     active = fields.Boolean('Active', select=2)
@@ -38,6 +39,7 @@ class Action(ModelSQL, ModelView):
         return True
 
     def get_action_id(self, action_id):
+        pool = Pool()
         with Transaction().set_context(active_test=False):
             if self.search([
                 ('id', '=', action_id),
@@ -49,7 +51,7 @@ class Action(ModelSQL, ModelView):
                     'ir.action.wizard',
                     'ir.action.url',
                     ):
-                action_obj = self.pool.get(action_type)
+                action_obj = pool.get(action_type)
                 action_id2 = action_obj.search([
                     ('id', '=', action_id),
                     ])
@@ -88,7 +90,8 @@ class ActionKeyword(ModelSQL, ModelView):
         })
 
     def check_wizard_model(self, ids):
-        action_wizard_obj = self.pool.get('ir.action.wizard')
+        pool = Pool()
+        action_wizard_obj = pool.get('ir.action.wizard')
         for action_keyword in self.browse(ids):
             if action_keyword.action.type == 'ir.action.wizard':
                 action_wizard_id = action_wizard_obj.search([
@@ -103,13 +106,15 @@ class ActionKeyword(ModelSQL, ModelView):
 
     def _convert_vals(self, vals):
         vals = vals.copy()
-        action_obj = self.pool.get('ir.action')
+        pool = Pool()
+        action_obj = pool.get('ir.action')
         if 'action' in vals:
             vals['action'] = action_obj.get_action_id(vals['action'])
         return vals
 
     def models_get(self):
-        model_obj = self.pool.get('ir.model')
+        pool = Pool()
+        model_obj = pool.get('ir.model')
         model_ids = model_obj.search([])
         res = []
         for model in model_obj.browse(model_ids):
@@ -117,36 +122,39 @@ class ActionKeyword(ModelSQL, ModelView):
         return res
 
     def delete(self, ids):
+        pool = Pool()
         if isinstance(ids, (int, long)):
             ids = [ids]
         for keyword in self.browse(ids):
             # Restart the cache view
             try:
-                self.pool.get(keyword.model.split(',')[0]
+                pool.get(keyword.model.split(',')[0]
                         ).fields_view_get.reset()
             except Exception:
                 pass
         return super(ActionKeyword, self).delete(ids)
 
     def create(self, vals):
+        pool = Pool()
         vals = self._convert_vals(vals)
         if 'model' in vals:
             # Restart the cache view
             try:
-                self.pool.get(vals['model'].split(',')[0]
+                pool.get(vals['model'].split(',')[0]
                         ).fields_view_get.reset()
             except Exception:
                 pass
         return super(ActionKeyword, self).create(vals)
 
     def write(self, ids, vals):
+        pool = Pool()
         vals = self._convert_vals(vals)
         if isinstance(ids, (int, long)):
             ids = [ids]
         for keyword in self.browse(ids):
             # Restart the cache view
             try:
-                self.pool.get(keyword.model.split(',')[0]
+                pool.get(keyword.model.split(',')[0]
                         ).fields_view_get.reset()
             except Exception:
                 pass
@@ -154,30 +162,32 @@ class ActionKeyword(ModelSQL, ModelView):
         for keyword in self.browse(ids):
             # Restart the cache view
             try:
-                self.pool.get(keyword.model.split(',')[0]
+                pool.get(keyword.model.split(',')[0]
                         ).fields_view_get.reset()
             except Exception:
                 pass
         return res
 
     def get_keyword(self, keyword, value):
+        pool = Pool()
         res = []
         model, model_id = value
 
         action_keyword_ids = []
-        if model_id:
+        if model_id >= 0:
             action_keyword_ids = self.search([
                 ('keyword', '=', keyword),
                 ('model', '=', model + ',' + str(model_id)),
                 ])
         action_keyword_ids.extend(self.search([
             ('keyword', '=', keyword),
-            ('model', '=', model + ',0'),
+            ('model', '=', model + ',-1'),
             ]))
-        for action_keyword in self.browse(action_keyword_ids):
+        for action_keyword_id in action_keyword_ids:
+            action_keyword = self.browse(action_keyword_id)
             try:
-                action_obj = self.pool.get(action_keyword.action.type)
-            except Exception:
+                action_obj = pool.get(action_keyword.action.type)
+            except UserError:
                 continue
             action_id = action_obj.search([
                 ('action', '=', action_keyword.action.id),
@@ -187,7 +197,7 @@ class ActionKeyword(ModelSQL, ModelView):
                     + action_obj._inherit_fields.keys())
                 columns.add('icon.rec_name')
                 if action_keyword.action.type == 'ir.action.report':
-                    to_remove = ('report_content_data', 'report_content',
+                    to_remove = ('report_content_custom', 'report_content',
                         'style_content')
                 elif action_keyword.action.type == 'ir.action.act_window':
                     to_remove = ('domain', 'context', 'search_value')
@@ -208,7 +218,7 @@ class ActionReport(ModelSQL, ModelView):
     model = fields.Char('Model')
     report_name = fields.Char('Internal Name', required=True)
     report = fields.Char('Path')
-    report_content_data = fields.Binary('Content')
+    report_content_custom = fields.Binary('Content')
     report_content = fields.Function(fields.Binary('Content'),
             'get_report_content', setter='set_report_content')
     action = fields.Many2One('ir.action', 'Action', required=True,
@@ -218,10 +228,77 @@ class ActionReport(ModelSQL, ModelView):
     style_content = fields.Function(fields.Binary('Style'),
             'get_style_content')
     direct_print = fields.Boolean('Direct Print')
-    extension = fields.Selection(
-        [('odt', 'ODT Document'),
-         ('pdf', 'PDF Document'),],
-        string='Extension', required=True)
+    template_extension = fields.Selection([
+            ('odt', 'OpenDocument Text'),
+            ('odp', 'OpenDocument Presentation'),
+            ('ods', 'OpenDocument Spreadsheet'),
+            ('odg', 'OpenDocument Graphics'),
+            ], string='Template Extension', required=True,
+        translate=False)
+    extension = fields.Selection([
+            ('', ''),
+            ('bib', 'BibTex'),
+            ('bmp', 'Windows Bitmap'),
+            ('csv', 'Text CSV'),
+            ('dbf', 'dBase'),
+            ('dif', 'Data Interchange Format'),
+            ('doc', 'Microsoft Word 97/2000/XP'),
+            ('doc6', 'Microsoft Word 6.0'),
+            ('doc95', 'Microsoft Word 95'),
+            ('docbook', 'DocBook'),
+            ('emf', 'Enhanced Metafile'),
+            ('eps', 'Encapsulated PostScript'),
+            ('gif', 'Graphics Interchange Format'),
+            ('html', 'HTML Document'),
+            ('jpg', 'Joint Photographic Experts Group'),
+            ('met', 'OS/2 Metafile'),
+            ('ooxml', 'Microsoft Office Open XML'),
+            ('pbm', 'Portable Bitmap'),
+            ('pct', 'Mac Pict'),
+            ('pdb', 'AportisDoc (Palm)'),
+            ('pdf', 'Portable Document Format'),
+            ('pgm', 'Portable Graymap'),
+            ('png', 'Portable Network Graphic'),
+            ('ppm', 'Portable Pixelmap'),
+            ('ppt', 'Microsoft PowerPoint 97/2000/XP'),
+            ('psw', 'Pocket Word'),
+            ('pwp', 'PlaceWare'),
+            ('pxl', 'Pocket Excel'),
+            ('ras', 'Sun Raster Image'),
+            ('rtf', 'Rich Text Format'),
+            ('latex', 'LaTeX 2e'),
+            ('sda', 'StarDraw 5.0 (OpenOffice.org Impress)'),
+            ('sdc', 'StarCalc 5.0'),
+            ('sdc4', 'StarCalc 4.0'),
+            ('sdc3', 'StarCalc 3.0'),
+            ('sdd', 'StarImpress 5.0'),
+            ('sdd3', 'StarDraw 3.0 (OpenOffice.org Impress)'),
+            ('sdd4', 'StarImpress 4.0'),
+            ('sdw', 'StarWriter 5.0'),
+            ('sdw4', 'StarWriter 4.0'),
+            ('sdw3', 'StarWriter 3.0'),
+            ('slk', 'SYLK'),
+            ('svg', 'Scalable Vector Graphics'),
+            ('svm', 'StarView Metafile'),
+            ('swf', 'Macromedia Flash (SWF)'),
+            ('sxc', 'OpenOffice.org 1.0 Spreadsheet'),
+            ('sxi', 'OpenOffice.org 1.0 Presentation'),
+            ('sxd', 'OpenOffice.org 1.0 Drawing'),
+            ('sxd3', 'StarDraw 3.0'),
+            ('sxd5', 'StarDraw 5.0'),
+            ('sxw', 'Open Office.org 1.0 Text Document'),
+            ('text', 'Text Encoded'),
+            ('tiff', 'Tagged Image File Format'),
+            ('txt', 'Plain Text'),
+            ('wmf', 'Windows Metafile'),
+            ('xhtml', 'XHTML Document'),
+            ('xls', 'Microsoft Excel 97/2000/XP'),
+            ('xls5', 'Microsoft Excel 5.0'),
+            ('xls95', 'Microsoft Excel 95'),
+            ('xpm', 'X PixMap'),
+            ], translate=False,
+        string='Extension', help='Leave empty for the same as template, '
+        'see unoconv documentation for compatible format')
     module = fields.Char('Module', readonly=True, select=1)
     email = fields.Char('Email')
     pyson_email = fields.Function(fields.Char('PySON Email'), 'get_pyson')
@@ -261,6 +338,26 @@ class ActionReport(ModelSQL, ModelView):
             TableHandler.dropTable(cursor, 'ir.action.report.outputformat',
                       'ir_action_report_outputformat')
 
+        # Migrate from 2.0 remove required on extension
+        table.not_null_action('extension', action='remove')
+        cursor.execute('UPDATE "' + self._table + '" '
+            'SET extension = %s '
+            'WHERE extension = %s', ('', 'odt'))
+
+        # Migration from 2.0 report_content_data renamed into
+        # report_content_custom to remove base64 encoding
+        if (table.column_exist('report_content_data')
+                and table.column_exist('report_content_custom')):
+            cursor.execute('SELECT id, report_content_data '
+                'FROM "' + self._table + '"')
+            for report_id, content in cursor.fetchall():
+                if content:
+                    content = base64.decodestring(str(content))
+                    cursor.execute('UPDATE "' + self._table + '" '
+                        'SET report_content_custom = %s '
+                        'WHERE id = %s', (content, report_id))
+            table.drop_column('report_content_data')
+
     def default_type(self):
         return 'ir.action.report'
 
@@ -270,28 +367,37 @@ class ActionReport(ModelSQL, ModelView):
     def default_direct_print(self):
         return False
 
-    def default_extension(self):
+    def default_template_extension(self):
         return 'odt'
 
+    def default_extension(self):
+        return ''
+
     def default_module(self):
         return Transaction().context.get('module') or ''
 
     def get_report_content(self, ids, name):
         res = {}
+        converter = buffer
+        default = False
+        format_ = Transaction().context.pop('%s.%s' % (self._name, name), '')
+        if format_ == 'size':
+            converter = len
+            default = 0
         for report in self.browse(ids):
-            data = report[name + '_data']
+            data = report[name + '_custom']
             if not data and report[name[:-8]]:
                 try:
-                    with file_open( report[name[:-8]].replace('/', os.sep),
+                    with file_open(report[name[:-8]].replace('/', os.sep),
                             mode='rb') as fp:
-                        data = base64.encodestring(fp.read())
+                        data = fp.read()
                 except Exception:
                     data = False
-            res[report.id] = data
+            res[report.id] = converter(data) if data else default
         return res
 
     def set_report_content(self, ids, name, value):
-        self.write(ids, {'%s_data' % name: value})
+        self.write(ids, {'%s_custom' % name: value})
 
     def get_style_content(self, ids, name):
         res = {}
@@ -299,7 +405,7 @@ class ActionReport(ModelSQL, ModelView):
             try:
                 with file_open( report.style.replace('/', os.sep),
                         mode='rb') as fp:
-                    data = base64.encodestring(fp.read())
+                    data = fp.read()
             except Exception:
                 data = False
             res[report.id] = data
@@ -369,7 +475,8 @@ class ActionReport(ModelSQL, ModelView):
         return super(ActionReport, self).write(ids, vals)
 
     def delete(self, ids):
-        action_obj = self.pool.get('ir.action')
+        pool = Pool()
+        action_obj = pool.get('ir.action')
 
         if isinstance(ids, (int, long)):
             ids = [ids]
@@ -415,15 +522,23 @@ class ActionActWindow(ModelSQL, ModelView):
             ('check_views', 'invalid_views'),
             ('check_domain', 'invalid_domain'),
             ('check_context', 'invalid_context'),
-            ('check_search_value', 'invalid_search_value'),
         ]
         self._error_messages.update({
             'invalid_views': 'Invalid views!',
-            'invalid_domain': 'Invalid domain!',
+            'invalid_domain': 'Invalid domain or search criteria!',
             'invalid_context': 'Invalid context!',
-            'invalid_search_value': 'Invalid search criteria!',
         })
 
+    def init(self, module_name):
+        cursor = Transaction().cursor
+        super(ActionActWindow, self).init(module_name)
+
+        # Migration from 2.0: new search_value format
+        cursor.execute('UPDATE "%s" '
+            'SET search_value = %%s '
+            'WHERE search_value = %%s' % self._table,
+            ('[]', '{}'))
+
     def default_type(self):
         return 'ir.action.act_window'
 
@@ -443,7 +558,7 @@ class ActionActWindow(ModelSQL, ModelView):
         return True
 
     def default_search_value(self):
-        return '{}'
+        return '[]'
 
     def check_views(self, ids):
         "Check views"
@@ -465,11 +580,13 @@ class ActionActWindow(ModelSQL, ModelView):
         return True
 
     def check_domain(self, ids):
-        "Check domain"
+        "Check domain and search_value"
         for action in self.browse(ids):
-            if action.domain:
+            for domain in (action.domain, action.search_value):
+                if not domain:
+                    continue
                 try:
-                    value = safe_eval(action.domain, CONTEXT)
+                    value = safe_eval(domain, CONTEXT)
                 except Exception:
                     return False
                 if isinstance(value, PYSON):
@@ -504,21 +621,6 @@ class ActionActWindow(ModelSQL, ModelView):
                         return False
         return True
 
-    def check_search_value(self, ids):
-        "Check search_value"
-        for action in self.browse(ids):
-            if action.search_value:
-                try:
-                    value = safe_eval(action.search_value, CONTEXT)
-                except Exception:
-                    return False
-                if isinstance(value, PYSON):
-                    if not value.types() == set([dict]):
-                        return False
-                elif not isinstance(value, dict):
-                    return False
-        return True
-
     def get_views(self, ids, name):
         res = {}
         for act in self.browse(ids):
@@ -563,7 +665,8 @@ class ActionActWindow(ModelSQL, ModelView):
         return new_id
 
     def delete(self, ids):
-        action_obj = self.pool.get('ir.action')
+        pool = Pool()
+        action_obj = pool.get('ir.action')
 
         if isinstance(ids, (int, long)):
             ids = [ids]
@@ -639,7 +742,8 @@ class ActionWizard(ModelSQL, ModelView):
         return new_id
 
     def delete(self, ids):
-        action_obj = self.pool.get('ir.action')
+        pool = Pool()
+        action_obj = pool.get('ir.action')
 
         if isinstance(ids, (int, long)):
             ids = [ids]
@@ -652,89 +756,6 @@ class ActionWizard(ModelSQL, ModelView):
 ActionWizard()
 
 
-class ActionWizardSize(ModelSQL, ModelView):
-    "Action Wizard Size"
-    _name = 'ir.action.wizard_size'
-    _description = __doc__
-    wizard = fields.Char('Wizard', required=True, select=1)
-    model = fields.Char('Model', required=True, select=1)
-    user = fields.Many2One('res.user', 'User', required=True,
-            ondelete='CASCADE', select=1)
-    width = fields.Integer('Width')
-    height = fields.Integer('Height')
-
-    def __init__(self):
-        super(ActionWizardSize, self).__init__()
-        self._rpc.update({
-            'set_size': True,
-        })
-
-    def create(self, vals):
-        res = super(ActionWizardSize, self).create(vals)
-        # Restart the cache for get_size
-        self.get_size.reset()
-        return res
-
-    def write(self, ids, vals):
-        res = super(ActionWizardSize, self).write(ids, vals)
-        # Restart the cache for get_size
-        self.get_size.reset()
-        return res
-
-    def delete(self, ids):
-        res = super(ActionWizardSize, self).delete(ids)
-        # Restart the cache for get_size
-        self.get_size.reset()
-        return res
-
-    def set_size(self, wizard, model, width, height):
-        '''
-        Set size for wizard dialog.
-        :param wizard: the wizard name
-        :param model: the model name
-        :param width: the width
-        :param height: the height
-        '''
-        ids = self.search([
-            ('user', '=', Transaction().user),
-            ('wizard', '=', wizard),
-            ('model', '=', model),
-            ])
-        if ids:
-            self.write(ids, {
-                'width': width,
-                'height': height,
-                })
-        else:
-            self.create({
-                'wizard': wizard,
-                'model': model,
-                'user': Transaction().user,
-                'width': width,
-                'height': height,
-                })
-
-    @Cache('ir.action.wizard_size.get_size')
-    def get_size(self, wizard, model):
-        '''
-        Get size for wizard dialog.
-        :param wizard: the wizard name
-        :param model: the model name
-        :return: (width, height)
-        '''
-        ids = self.search([
-            ('user', '=', Transaction().user),
-            ('wizard', '=', wizard),
-            ('model', '=', model),
-            ], limit=1)
-        if ids:
-            wizard_size = self.browse(ids[0])
-            return wizard_size.width, wizard_size.height
-        return (0, 0)
-
-ActionWizardSize()
-
-
 class ActionURL(ModelSQL, ModelView):
     "Action URL"
     _name = 'ir.action.url'
@@ -773,7 +794,8 @@ class ActionURL(ModelSQL, ModelView):
         return new_id
 
     def delete(self, ids):
-        action_obj = self.pool.get('ir.action')
+        pool = Pool()
+        action_obj = pool.get('ir.action')
 
         if isinstance(ids, (int, long)):
             ids = [ids]
diff --git a/trytond/ir/action.xml b/trytond/ir/action.xml
index 088ca1c..f92f0bd 100644
--- a/trytond/ir/action.xml
+++ b/trytond/ir/action.xml
@@ -33,7 +33,6 @@ this repository contains the full copyright notices and license terms. -->
                             </field>
                         </page>
                         <page name="groups">
-                            <separator name="groups" colspan="4"/>
                             <field name="groups" colspan="4"/>
                         </page>
                     </notebook>
@@ -47,8 +46,8 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Action">
-                    <field name="name" select="1"/>
-                    <field name="type" select="1"/>
+                    <field name="name"/>
+                    <field name="type"/>
                 </tree>
                 ]]>
             </field>
@@ -93,9 +92,11 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="icon"/>
                             <newline/>
                             <label name="report"/>
-                            <field name="report" colspan="3"/>
+                            <field name="report"/>
                             <label name="report_content"/>
                             <field name="report_content"/>
+                            <label name="template_extension"/>
+                            <field name="template_extension"/>
                             <label name="extension"/>
                             <field name="extension"/>
                             <label name="style"/>
@@ -119,7 +120,6 @@ this repository contains the full copyright notices and license terms. -->
                             </field>
                         </page>
                         <page name="groups">
-                            <separator name="groups" colspan="4"/>
                             <field name="groups" colspan="4"/>
                         </page>
                     </notebook>
@@ -133,10 +133,10 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Report xml">
-                    <field name="name" select="1"/>
+                    <field name="name"/>
                     <field name="type"/>
-                    <field name="model" select="1"/>
-                    <field name="report_name" select="2"/>
+                    <field name="model"/>
+                    <field name="report_name"/>
                 </tree>
                 ]]>
             </field>
@@ -218,7 +218,6 @@ this repository contains the full copyright notices and license terms. -->
                             </field>
                         </page>
                         <page name="groups">
-                            <separator name="groups" colspan="4"/>
                             <field name="groups" colspan="4"/>
                         </page>
                     </notebook>
@@ -232,8 +231,8 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Open Window">
-                    <field name="name" select="1"/>
-                    <field name="res_model" select="1"/>
+                    <field name="name"/>
+                    <field name="res_model"/>
                     <field name="domain"/>
                 </tree>
                 ]]>
@@ -294,7 +293,6 @@ this repository contains the full copyright notices and license terms. -->
                             </field>
                         </page>
                         <page name="groups">
-                            <separator name="groups" colspan="4"/>
                             <field name="groups" colspan="4"/>
                         </page>
                     </notebook>
@@ -308,9 +306,9 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Wizard">
-                    <field name="name" select="1"/>
+                    <field name="name"/>
                     <field name="type"/>
-                    <field name="wiz_name" select="1"/>
+                    <field name="wiz_name"/>
                 </tree>
                 ]]>
             </field>
@@ -335,63 +333,6 @@ this repository contains the full copyright notices and license terms. -->
         <menuitem parent="menu_action"
             action="act_action_wizard_form" id="menu_action_wizard"/>
 
-        <record model="ir.ui.view" id="action_wizard_size_view_form">
-            <field name="model">ir.action.wizard_size</field>
-            <field name="type">form</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <form string="Wizard Size">
-                    <label name="wizard"/>
-                    <field name="wizard"/>
-                    <label name="model"/>
-                    <field name="model"/>
-                    <label name="user"/>
-                    <field name="user"/>
-                    <newline/>
-                    <label name="width"/>
-                    <field name="width"/>
-                    <label name="height"/>
-                    <field name="height"/>
-                </form>
-                ]]>
-            </field>
-        </record>
-
-        <record model="ir.ui.view" id="action_wizard_size_view_tree">
-            <field name="model">ir.action.wizard_size</field>
-            <field name="type">tree</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <tree string="Wizard Sizes">
-                    <field name="wizard"/>
-                    <field name="model"/>
-                    <field name="user"/>
-                    <field name="width"/>
-                    <field name="height"/>
-                </tree>
-                ]]>
-            </field>
-        </record>
-        <record model="ir.action.act_window" id="act_action_wizard_size_form">
-            <field name="name">Wizard Sizes</field>
-            <field name="type">ir.action.act_window</field>
-            <field name="res_model">ir.action.wizard_size</field>
-        </record>
-        <record model="ir.action.act_window.view"
-            id="act_action_wizard_size_form_view1">
-            <field name="sequence" eval="1"/>
-            <field name="view" ref="action_wizard_size_view_tree"/>
-            <field name="act_window" ref="act_action_wizard_size_form"/>
-        </record>
-        <record model="ir.action.act_window.view"
-            id="act_action_wizard_size_form_view2">
-            <field name="sequence" eval="2"/>
-            <field name="view" ref="action_wizard_size_view_form"/>
-            <field name="act_window" ref="act_action_wizard_size_form"/>
-        </record>
-        <menuitem parent="menu_action_wizard"
-            action="act_action_wizard_size_form" id="menu_action_wizard_size"/>
-
         <record model="ir.ui.view" id="action_url_view_form">
             <field name="model">ir.action.url</field>
             <field name="type">form</field>
@@ -423,7 +364,6 @@ this repository contains the full copyright notices and license terms. -->
                             </field>
                         </page>
                         <page name="groups">
-                            <separator name="groups" colspan="4"/>
                             <field name="groups" colspan="4"/>
                         </page>
                     </notebook>
@@ -437,9 +377,9 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="URL">
-                    <field name="name" select="1"/>
+                    <field name="name"/>
                     <field name="type"/>
-                    <field name="url" select="1"/>
+                    <field name="url"/>
                 </tree>
                 ]]>
             </field>
diff --git a/trytond/ir/attachment.py b/trytond/ir/attachment.py
index 46d5df1..68650c7 100644
--- a/trytond/ir/attachment.py
+++ b/trytond/ir/attachment.py
@@ -1,18 +1,17 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import os
 try:
     import hashlib
 except ImportError:
     hashlib = None
     import md5
-import base64
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.config import CONFIG
 from trytond.backend import TableHandler
 from trytond.transaction import Transaction
-from trytond.pyson import Not, Equal, Eval
+from trytond.pyson import Eval
+from trytond.pool import Pool
 
 def firstline(description):
     try:
@@ -31,20 +30,20 @@ class Attachment(ModelSQL, ModelView):
         ('link', 'Link'),
         ], 'Type', required=True)
     data = fields.Function(fields.Binary('Data', filename='name', states={
-        'invisible': Not(Equal(Eval('type'), 'data')),
-        }, depends=['type']), 'get_data', setter='set_data')
+                'invisible': Eval('type') != 'data',
+                }, depends=['type']), 'get_data', setter='set_data')
     description = fields.Text('Description')
     summary = fields.Function(fields.Char('Summary',
         on_change_with=['description']), 'get_summary')
     resource = fields.Reference('Resource', selection='models_get', select=1)
     link = fields.Char('Link', states={
-        'invisible': Not(Equal(Eval('type'), 'link')),
-        }, depends=['type'])
+            'invisible': Eval('type') != 'link',
+            }, depends=['type'])
     digest = fields.Char('Digest', size=32)
     collision = fields.Integer('Collision')
     data_size = fields.Function(fields.Integer('Data size', states={
-        'invisible': Not(Equal(Eval('type'), 'data')),
-        }, depends=['type']), 'get_data')
+                'invisible': Eval('type') != 'data',
+                }, depends=['type']), 'get_data')
     last_modification = fields.Function(fields.DateTime('Last Modification'),
             'get_last_modification')
     last_user = fields.Function(fields.Char('Last User'),
@@ -84,7 +83,8 @@ class Attachment(ModelSQL, ModelView):
         return 0
 
     def models_get(self):
-        model_obj = self.pool.get('ir.model')
+        pool = Pool()
+        model_obj = pool.get('ir.model')
         model_ids = model_obj.search([])
         res = []
         for model in model_obj.browse(model_ids):
@@ -94,9 +94,10 @@ class Attachment(ModelSQL, ModelView):
     def get_data(self, ids, name):
         res = {}
         db_name = Transaction().cursor.dbname
+        format_ = Transaction().context.pop('%s.%s' % (self._name, name), '')
         for attachment in self.browse(ids):
             value = False
-            if name == 'data_size':
+            if name == 'data_size' or format_ == 'size':
                 value = 0
             if attachment.digest:
                 filename = attachment.digest
@@ -104,7 +105,7 @@ class Attachment(ModelSQL, ModelView):
                     filename = filename + '-' + str(attachment.collision)
                 filename = os.path.join(CONFIG['data_path'], db_name,
                         filename[0:2], filename[2:4], filename)
-                if name == 'data_size':
+                if name == 'data_size' or format_ == 'size':
                     try:
                         statinfo = os.stat(filename)
                         value = statinfo.st_size
@@ -113,7 +114,7 @@ class Attachment(ModelSQL, ModelView):
                 else:
                     try:
                         with open(filename, 'rb') as file_p:
-                            value = base64.encodestring(file_p.read())
+                            value = buffer(file_p.read())
                     except IOError:
                         pass
             res[attachment.id] = value
@@ -127,11 +128,10 @@ class Attachment(ModelSQL, ModelView):
         directory = os.path.join(CONFIG['data_path'], db_name)
         if not os.path.isdir(directory):
             os.makedirs(directory, 0770)
-        data = base64.decodestring(value)
         if hashlib:
-            digest = hashlib.md5(data).hexdigest()
+            digest = hashlib.md5(value).hexdigest()
         else:
-            digest = md5.new(data).hexdigest()
+            digest = md5.new(value).hexdigest()
         directory = os.path.join(directory, digest[0:2], digest[2:4])
         if not os.path.isdir(directory):
             os.makedirs(directory, 0770)
@@ -139,8 +139,8 @@ class Attachment(ModelSQL, ModelView):
         collision = 0
         if os.path.isfile(filename):
             with open(filename, 'rb') as file_p:
-                data2 = file_p.read()
-            if data != data2:
+                data = file_p.read()
+            if value != data:
                 cursor.execute('SELECT DISTINCT(collision) FROM ir_attachment ' \
                         'WHERE digest = %s ' \
                             'AND collision != 0 ' \
@@ -152,8 +152,8 @@ class Attachment(ModelSQL, ModelView):
                             digest + '-' + str(collision2))
                     if os.path.isfile(filename):
                         with open(filename, 'rb') as file_p:
-                            data2 = file_p.read()
-                        if data == data2:
+                            data = file_p.read()
+                        if value == data:
                             collision = collision2
                             break
                 if collision == 0:
@@ -161,10 +161,10 @@ class Attachment(ModelSQL, ModelView):
                     filename = os.path.join(directory,
                             digest + '-' + str(collision))
                     with open(filename, 'wb') as file_p:
-                        file_p.write(data)
+                        file_p.write(value)
         else:
             with open(filename, 'wb') as file_p:
-                file_p.write(data)
+                file_p.write(value)
         self.write(ids, {
             'digest': digest,
             'collision': collision,
@@ -189,7 +189,8 @@ class Attachment(ModelSQL, ModelView):
 
 
     def check_access(self, ids, mode='read'):
-        model_access_obj = self.pool.get('ir.model.access')
+        pool = Pool()
+        model_access_obj = pool.get('ir.model.access')
         if Transaction().user == 0:
             return
         if not ids:
@@ -224,7 +225,8 @@ class Attachment(ModelSQL, ModelView):
         return res
 
     def view_header_get(self, value, view_type='form'):
-        ir_model_obj = self.pool.get('ir.model')
+        pool = Pool()
+        ir_model_obj = pool.get('ir.model')
         value = super(Attachment, self).view_header_get(value,
                 view_type=view_type)
         resource = Transaction().context.get('resource')
@@ -232,7 +234,7 @@ class Attachment(ModelSQL, ModelView):
             model_name, record_id = resource.split(',', 1)
             ir_model_id, = ir_model_obj.search([('model', '=', model_name)])
             ir_model = ir_model_obj.browse(ir_model_id)
-            model_obj = self.pool.get(model_name)
+            model_obj = pool.get(model_name)
             record = model_obj.browse(int(record_id))
             value = '%s - %s - %s' % (ir_model.name, record.rec_name, value)
         return value
diff --git a/trytond/ir/attachment.xml b/trytond/ir/attachment.xml
index 8386dff..7c6d601 100644
--- a/trytond/ir/attachment.xml
+++ b/trytond/ir/attachment.xml
@@ -44,8 +44,8 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Attachments" fill="1">
-                    <field name="resource" select="1"/>
-                    <field name="name" select="1"/>
+                    <field name="resource"/>
+                    <field name="name"/>
                     <field name="data_size"/>
                     <field name="summary"/>
                     <field name="last_user"/>
diff --git a/trytond/ir/bg_BG.csv b/trytond/ir/bg_BG.csv
deleted file mode 100644
index a6ed302..0000000
--- a/trytond/ir/bg_BG.csv
+++ /dev/null
@@ -1,720 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,access_error,0,"You try to bypass an access rule!
-(Document type: %s)","Опитвате се да прескочите право за достъп!
-(Вид документ: %s)",0
-error,delete_workflow_record,0,You cannot delete a record with a running workflow.,Не може да изтривате запис от работещ работен процес.,0
-error,delete_xml_record,0,You are not allowed to delete this record.,Нямате права да изтривате този запис.,0
-error,digits_validation_record,0,"The field ""%s"" on ""%s"" has too many decimal digits.","Полето ""%s"" от ""%s"" има много десетични цифри",0
-error,domain_validation_record,0,"The value of the field ""%s"" on ""%s"" is not valid according to its domain.","Стойността на полето ""%s"" от ""%s"" не е валидно според домейна.",0
-error,foreign_model_exist,0,"Could not delete ""%s"" records because they are used on field ""%s"" of ""%s"".","Не може да изтривате записи ""%s"" защото се използват в поле ""%s"" от ""%s"".",0
-error,foreign_model_missing,0,"The value of field ""%s"" on ""%s"" doesn't exist.","Стойността на полето ""%s"" от ""%s"" не съществува.",0
-error,ir.action.act_window,0,Invalid context!,Невалиден контекст!,0
-error,ir.action.act_window,0,Invalid domain!,Невалиден домайн!,0
-error,ir.action.act_window,0,Invalid search criteria!,Невалиден критерии за търсене!,0
-error,ir.action.act_window,0,Invalid views!,Невалидни изгледи!,0
-error,ir.action.keyword,0,Wrong wizard model!,Грешен модел на помощник!,0
-error,ir.action.report,0,The internal name must be unique by module!,Вътрепното име трябва да е уникално в модула!,0
-error,ir.attachment,0,The  names of attachments must be unique by resource!,Имената на прикачените файлове трябва да са уникални по ресурс!,0
-error,ir.cron,0,Scheduled action failed,Планираното действие неуспяло,0
-error,ir.cron,0,"The following action failed to execute properly: ""%s""
- Traceback: 
-
-%s
-","Следното действие не е изпълнено успешно: ""%s""
-Информация:
-
-%s",0
-error,ir.lang,0,Invalid Grouping!,Невалидно групиране!,0
-error,ir.lang,0,The date format is not valid!,Формата на датата е невалиден!,0
-error,ir.lang,0,decimal_point and thousands_sep must be different!,десетична точка и разделител на хиляди трябва да са различни!,0
-error,ir.model,0,Module Name must be a python identifier!,Името на модула трябва да бъде python идентификатор!,0
-error,ir.model,0,The model must be unique!,Модела трябва да е уникален!,0
-error,ir.model.access,0,Only one record by model and group is allowed!,Разрешен е само един запис за модел и група!,0
-error,ir.model.access,0,You can not create this kind of document! (%s),Не може да създадете този вид документ! (%s),0
-error,ir.model.access,0,You can not delete this document! (%s),Не може да изтриете този документ! (%s),0
-error,ir.model.access,0,You can not read this document! (%s),Не може да четете този документ! (%s),0
-error,ir.model.access,0,You can not write in this document! (%s),Не може да пишете в този документ! (%s),0
-error,ir.model.data,0,"The triple (fs_id, module, model) must be unique!","Тройката (fs_id, module, model) трябва да е уникална!",0
-error,ir.model.field,0,Model Field Name must be a python identifier!,Името за поле на модел трябва да бъде python идентификатор!,0
-error,ir.model.field,0,The field name in model must be unique!,Името на полето трябва да е уникално!,0
-error,ir.model.field.access,0,Only one record by field and group is allowed!,Позволен е само един запис по поле и група!,0
-error,ir.model.field.access,0,You can not read the field! (%s.%s),Не може да прочетете полето! (%s.%s),0
-error,ir.model.field.access,0,You can not write on the field! (%s.%s),Не може да записвате полето! (%s.%s),0
-error,ir.module.module,0,"Missing dependencies %s for module ""%s""","Липсващи зависимости %s за модул ""%s""",0
-error,ir.module.module,0,The modules you are trying to uninstall depends on installed modules:,От модула който исакте да деинсталирате зависят следните инсталирани модули:,0
-error,ir.module.module,0,The name of the module must be unique!,Името на модула трябва да е уникално!,0
-error,ir.module.module,0,You can not remove a module that is installed or will be installed,Не може да изтривате модул който инсталиран или ще бъде инсталиран,0
-error,ir.module.module.dependency,0,Dependency must be unique by module!,Зависимостта трябва да е уникална за модул!,0
-error,ir.rule.group,0,Global and Default are mutually exclusive!,Глобален и По подразбиране са взаимно самоизключващи се!,0
-error,ir.sequence,0,Invalid prefix/suffix!,Невалиден префикс/суфикс!,0
-error,ir.sequence,0,Last Timestamp could not be in future!,Последния времеви маркер не може да е в бъдещето!,0
-error,ir.sequence,0,Missing sequence!,Липсва последователност!,0
-error,ir.sequence.strict,0,Invalid prefix/suffix!,Невалиден префикс/суфикс!,0
-error,ir.sequence.strict,0,Last Timestamp could not be in future!,Последния времеви маркер не може да е в бъдещето!,0
-error,ir.sequence.strict,0,Missing sequence!,Липсва последователност!,0
-error,ir.translation,0,Translation must be unique,Превода трябва да е уникален,0
-error,ir.translation,0,Translation of type 'model' must be unique!,Превод от вид 'модел' трябва да е уникален!,0
-error,ir.trigger,0,"""On Time"" and others are mutually exclusive!","""В даден момент"" и останалите са взаимно изключващи се!",0
-error,ir.trigger,0,Condition must be a python expression!,Условието трябва да е python израз!,0
-error,ir.ui.view,0,Invalid XML for View!,Невалиден XML за изглед!,0
-error,not_found_in_selection,0,Key %r not found in selection field %r,Ключа %r не е намерен в полето за избор %r,0
-error,read_error,0,"You try to read records that don't exist anymore!
-(Document type: %s)","Опитвате се да прочетете запис който вече не съществува!
-(Вид документ: %s)",0
-error,reference_syntax_error,0,Syntax error for reference %r in %s,Синтактична грешка за отпратка %r в %s,0
-error,relation_not_found,0,Relation not found: %r in %s,Не е намерена зависимост: %r в %s,0
-error,required_field,0,"The field ""%s"" on ""%s"" is required.","Полето ""%s"" от ""%s"" е задължително.",0
-error,required_validation_record,0,"The field ""%s"" on ""%s"" is required.","Полето ""%s"" от ""%s"" е задължително.",0
-error,search_function_missing,0,"Missing search function on field ""%s"".","Липсват функции за търсене върху поле ""%s"".",0
-error,size_validation_record,0,"The field ""%s"" on ""%s"" is too long.","Полето ""%s"" от ""%s"" е много дълго.",0
-error,too_many_relations_found,0,Too many relations found: %r in %s,Намерени са твърде много зависимости: %r в %s,0
-error,write_error,0,"You try to write on records that don't exist anymore!
-(Document type: %s)","Опитвате се да запишете в запис който вече не съшествува!
-(Вид документ: %s)",0
-error,write_xml_record,0,You are not allowed to modify this record.,Нямате права да променяте този запис.,0
-error,xml_id_syntax_error,0,Syntax error for XML id %r in %s,Ситактична грешка за XML id %r в %s,0
-error,xml_record_desc,0,This record is part of the base configuration.,Този запис е част от основната конфигурация.,0
-field,"ir.action,active",0,Active,Активен,0
-field,"ir.action,groups",0,Groups,Групи,0
-field,"ir.action,icon",0,Icon,Икона,0
-field,"ir.action,keywords",0,Keywords,Ключови думи,0
-field,"ir.action,name",0,Name,Име,0
-field,"ir.action,rec_name",0,Name,Име,0
-field,"ir.action,type",0,Type,Вид,0
-field,"ir.action,usage",0,Usage,Използване,0
-field,"ir.action.act_window,act_window_views",0,Views,Изгледи,0
-field,"ir.action.act_window,action",0,Action,Действие,0
-field,"ir.action.act_window,auto_refresh",0,Auto-Refresh,Самообновяване,0
-field,"ir.action.act_window,context",0,Context Value,Стойност на котекст,0
-field,"ir.action.act_window,domain",0,Domain Value,Стойност на домейн,0
-field,"ir.action.act_window,limit",0,Limit,Ограничение,0
-field,"ir.action.act_window,pyson_context",0,PySON Context,PySON контекст,0
-field,"ir.action.act_window,pyson_domain",0,PySON Domain,PySON контекст,0
-field,"ir.action.act_window,pyson_search_value",0,PySON Search Criteria,PySON критерии за търсене,0
-field,"ir.action.act_window,rec_name",0,Name,Име,0
-field,"ir.action.act_window,res_model",0,Model,Модел,0
-field,"ir.action.act_window,search_value",0,Search Criteria,Критерии за търсене,0
-field,"ir.action.act_window,view_type",0,Type of view,Вид изглед,0
-field,"ir.action.act_window,views",0,Views,Изгледи,0
-field,"ir.action.act_window,window_name",0,Window Name,Име на прозорец,0
-field,"ir.action.act_window.view,act_window",0,Action,Действие,0
-field,"ir.action.act_window.view,rec_name",0,Name,Име,0
-field,"ir.action.act_window.view,sequence",0,Sequence,Последователност,0
-field,"ir.action.act_window.view,view",0,View,Изглед,0
-field,"ir.action.keyword,action",0,Action,Действие,0
-field,"ir.action.keyword,keyword",0,Keyword,Ключова дума,0
-field,"ir.action.keyword,model",0,Model,Модел,0
-field,"ir.action.keyword,rec_name",0,Name,Име,0
-field,"ir.action.report,action",0,Action,Действие,0
-field,"ir.action.report,direct_print",0,Direct Print,Директен печат,0
-field,"ir.action.report,email",0,Email,Email,0
-field,"ir.action.report,extension",0,Extension,Разширение,0
-field,"ir.action.report,model",0,Model,Модел,0
-field,"ir.action.report,module",0,Module,Модул,0
-field,"ir.action.report,pyson_email",0,PySON Email,PySON Email,0
-field,"ir.action.report,rec_name",0,Name,Име,0
-field,"ir.action.report,report",0,Path,Път,0
-field,"ir.action.report,report_content",0,Content,Съдържание,0
-field,"ir.action.report,report_content_data",0,Content,Съдържание,0
-field,"ir.action.report,report_name",0,Internal Name,Вътрешно име,0
-field,"ir.action.report,style",0,Style,Стил,0
-field,"ir.action.report,style_content",0,Style,Стил,0
-field,"ir.action.url,action",0,Action,Действие,0
-field,"ir.action.url,rec_name",0,Name,Име,0
-field,"ir.action.url,url",0,Action Url,URL на действие,0
-field,"ir.action.wizard,action",0,Action,Действие,0
-field,"ir.action.wizard,email",0,Email,Email,0
-field,"ir.action.wizard,model",0,Model,Модел,0
-field,"ir.action.wizard,rec_name",0,Name,Име,0
-field,"ir.action.wizard,window",0,Window,Прозорец,0
-field,"ir.action.wizard,wiz_name",0,Wizard name,Име на помощник,0
-field,"ir.action.wizard_size,height",0,Height,Височина,0
-field,"ir.action.wizard_size,model",0,Model,Модел,0
-field,"ir.action.wizard_size,rec_name",0,Name,Име,0
-field,"ir.action.wizard_size,user",0,User,Потребител,0
-field,"ir.action.wizard_size,width",0,Width,Ширина,0
-field,"ir.action.wizard_size,wizard",0,Wizard,Помощник,0
-field,"ir.attachment,collision",0,Collision,Конфликт,0
-field,"ir.attachment,data",0,Data,Данни,0
-field,"ir.attachment,data_size",0,Data size,Размер на данни,0
-field,"ir.attachment,datas",0,Datas,Данни,0
-field,"ir.attachment,datas_size",0,Datas size,Размер на данните,0
-field,"ir.attachment,description",0,Description,Описание,0
-field,"ir.attachment,digest",0,Digest,Резюме,0
-field,"ir.attachment,last_modification",0,Last Modification,Последна промяна,0
-field,"ir.attachment,last_user",0,Last User,Последен потребител,0
-field,"ir.attachment,link",0,Link,Препратка,0
-field,"ir.attachment,name",0,Name,Име на прикачен файл,0
-field,"ir.attachment,rec_name",0,Name,Име,0
-field,"ir.attachment,resource",0,Resource,Ресурс,0
-field,"ir.attachment,summary",0,Summary,Обобщено,0
-field,"ir.attachment,type",0,Type,Вид,0
-field,"ir.cache,name",0,Name,Име,0
-field,"ir.cache,rec_name",0,Name,Име,0
-field,"ir.cache,timestamp",0,Timestamp,Дата,0
-field,"ir.cron,active",0,Active,Активен,0
-field,"ir.cron,args",0,Arguments,Аргументи,0
-field,"ir.cron,doall",0,Repeat missed,Повтаряне на липсващите,0
-field,"ir.cron,function",0,Function,Функция,0
-field,"ir.cron,interval_number",0,Interval Number,Номер на интервал,0
-field,"ir.cron,interval_type",0,Interval Unit,Единица за интервал,0
-field,"ir.cron,model",0,Model,Модел,0
-field,"ir.cron,name",0,Name,Име,0
-field,"ir.cron,nextcall",0,Next call date,Следващата дата на разговор,0
-field,"ir.cron,numbercall",0,Number of calls,Брой обаждания,0
-field,"ir.cron,priority",0,Priority,Важност,0
-field,"ir.cron,rec_name",0,Name,Име,0
-field,"ir.cron,request_user",0,Request User,Заявил потребител,0
-field,"ir.cron,running",0,Running,Работещ,0
-field,"ir.cron,user",0,Execution User,Изпълняващ потребител,0
-field,"ir.default,clause",0,Clause,Клауза,0
-field,"ir.default,field",0,Field,Поле,0
-field,"ir.default,model",0,Model,Модел,0
-field,"ir.default,rec_name",0,Name,Име,0
-field,"ir.default,user",0,User,Потребител,0
-field,"ir.default,value",0,Value,Стойност,0
-field,"ir.export,export_fields",0,Fields,Полета,0
-field,"ir.export,name",0,Name,Име,0
-field,"ir.export,rec_name",0,Name,Име,0
-field,"ir.export,resource",0,Resource,Ресурс,0
-field,"ir.export.line,export",0,Export,Извличане,0
-field,"ir.export.line,name",0,Name,Име,0
-field,"ir.export.line,rec_name",0,Name,Име,0
-field,"ir.lang,active",0,Active,Активен,0
-field,"ir.lang,code",0,Code,Код,0
-field,"ir.lang,date",0,Date,Дата,0
-field,"ir.lang,decimal_point",0,Decimal Separator,Десетичен разделител,0
-field,"ir.lang,direction",0,Direction,Посока,0
-field,"ir.lang,grouping",0,Grouping,Групиране,0
-field,"ir.lang,name",0,Name,Име,0
-field,"ir.lang,rec_name",0,Name,Име,0
-field,"ir.lang,thousands_sep",0,Thousands Separator,Разделител за хиляди,0
-field,"ir.lang,translatable",0,Translatable,За превод,0
-field,"ir.model,fields",0,Fields,Полета,0
-field,"ir.model,info",0,Information,Информация,0
-field,"ir.model,model",0,Model Name,Име на модел,0
-field,"ir.model,module",0,Module,Модул,0
-field,"ir.model,name",0,Model Description,Описание на модел,0
-field,"ir.model,rec_name",0,Name,Име,0
-field,"ir.model.access,description",0,Description,Описание,0
-field,"ir.model.access,group",0,Group,Група,0
-field,"ir.model.access,model",0,Model,Модел,0
-field,"ir.model.access,perm_create",0,Create Access,Права за създаване,0
-field,"ir.model.access,perm_delete",0,Delete Access,Права за изтриване,0
-field,"ir.model.access,perm_read",0,Read Access,Права за четене,0
-field,"ir.model.access,perm_write",0,Write Access,Права за писане,0
-field,"ir.model.access,rec_name",0,Name,Име,0
-field,"ir.model.data,date_init",0,Init Date,Начална дата,0
-field,"ir.model.data,date_update",0,Update Date,Дата на обновяване,0
-field,"ir.model.data,db_id",0,Resource ID,ID на ресурс,0
-field,"ir.model.data,fs_id",0,Identifier on File System,Идентификатор от файлова система,0
-field,"ir.model.data,inherit",0,Inherit,Наследяване,0
-field,"ir.model.data,model",0,Model,Модел,0
-field,"ir.model.data,module",0,Module,Модул,0
-field,"ir.model.data,noupdate",0,No Update,Без обновяване,0
-field,"ir.model.data,rec_name",0,Name,Име,0
-field,"ir.model.data,values",0,Values,Стойности,0
-field,"ir.model.field,field_description",0,Field Description,Описание на поле,0
-field,"ir.model.field,groups",0,Groups,Групи,0
-field,"ir.model.field,help",0,Help,Помощ,0
-field,"ir.model.field,model",0,Model,Модел,0
-field,"ir.model.field,module",0,Module,Модул,0
-field,"ir.model.field,name",0,Name,Име,0
-field,"ir.model.field,rec_name",0,Name,Име,0
-field,"ir.model.field,relation",0,Model Relation,Модел на връзка,0
-field,"ir.model.field,ttype",0,Field Type,Вид на поле,0
-field,"ir.model.field.access,description",0,Description,Описание,0
-field,"ir.model.field.access,field",0,Field,Поле,0
-field,"ir.model.field.access,group",0,Group,Група,0
-field,"ir.model.field.access,perm_read",0,Read Access,Права за четене,0
-field,"ir.model.field.access,perm_write",0,Write Access,Права за писане,0
-field,"ir.model.field.access,rec_name",0,Name,Име на прикачен файл,0
-field,"ir.model.print_model_graph.init,filter",0,Filter,Филтър,0
-field,"ir.model.print_model_graph.init,level",0,Level,Ниво,0
-field,"ir.module.module,author",0,Author,Автор,0
-field,"ir.module.module,dependencies",0,Dependencies,Зависимости,0
-field,"ir.module.module,description",0,Description,Описание,0
-field,"ir.module.module,name",0,Name,Име,0
-field,"ir.module.module,rec_name",0,Name,Име,0
-field,"ir.module.module,shortdesc",0,Short description,Кратко описание,0
-field,"ir.module.module,state",0,State,Състояние,0
-field,"ir.module.module,version",0,Version,Версия,0
-field,"ir.module.module,website",0,Website,Website,0
-field,"ir.module.module.config_wizard.item,name",0,Name,Име,0
-field,"ir.module.module.config_wizard.item,rec_name",0,Name,Име,0
-field,"ir.module.module.config_wizard.item,sequence",0,Sequence,Последователност,0
-field,"ir.module.module.config_wizard.item,state",0,State,Състояние,0
-field,"ir.module.module.dependency,module",0,Module,Модул,0
-field,"ir.module.module.dependency,name",0,Name,Име,0
-field,"ir.module.module.dependency,rec_name",0,Name,Име,0
-field,"ir.module.module.dependency,state",0,State,Състояние,0
-field,"ir.module.module.install_upgrade.init,module_info",0,Modules to update,Модули за обновяване,0
-field,"ir.property,field",0,Field,Поле,0
-field,"ir.property,name",0,Name,Име,0
-field,"ir.property,rec_name",0,Name,Име,0
-field,"ir.property,res",0,Resource,Ресурс,0
-field,"ir.property,value",0,Value,Стойност,0
-field,"ir.rule,field",0,Field,Поле,0
-field,"ir.rule,operand",0,Operand,Операнд,0
-field,"ir.rule,operator",0,Operator,Оператор,0
-field,"ir.rule,rec_name",0,Name,Име,0
-field,"ir.rule,rule_group",0,Group,Група,0
-field,"ir.rule.group,default_p",0,Default,По подразбиране,0
-field,"ir.rule.group,global_p",0,Global,Глобален,0
-field,"ir.rule.group,groups",0,Groups,Групи,0
-field,"ir.rule.group,model",0,Model,Модел,0
-field,"ir.rule.group,name",0,Name,Име,0
-field,"ir.rule.group,perm_create",0,Create Access,Права за създаване,0
-field,"ir.rule.group,perm_delete",0,Delete Access,Изтриване на достъп,0
-field,"ir.rule.group,perm_read",0,Read Access,Права за четене,0
-field,"ir.rule.group,perm_write",0,Write Access,Права за писане,0
-field,"ir.rule.group,rec_name",0,Name,Име,0
-field,"ir.rule.group,rules",0,Tests,Тестове,0
-field,"ir.rule.group,users",0,Users,Потребители,0
-field,"ir.sequence,active",0,Active,Активен,0
-field,"ir.sequence,code",0,Sequence Code,Вид последователност,0
-field,"ir.sequence,last_timestamp",0,Last Timestamp,Последен времеви маркер,0
-field,"ir.sequence,name",0,Sequence Name,Име на последователност,0
-field,"ir.sequence,number_increment",0,Increment Number,Стойност на увеличаване,0
-field,"ir.sequence,number_next",0,Next Number,Следващо число,0
-field,"ir.sequence,padding",0,Number padding,Фиксирана дължина (нули),0
-field,"ir.sequence,prefix",0,Prefix,Префикс,0
-field,"ir.sequence,rec_name",0,Name,Име,0
-field,"ir.sequence,suffix",0,Suffix,Суфикс,0
-field,"ir.sequence,timestamp_offset",0,Timestamp Offset,Отместване на времеви маркер,0
-field,"ir.sequence,timestamp_rounding",0,Timestamp Rounding,Закръгление на времеви маркер,0
-field,"ir.sequence,type",0,Type,Вид,0
-field,"ir.sequence.strict,active",0,Active,Активен,0
-field,"ir.sequence.strict,code",0,Sequence Code,Вид последователност,0
-field,"ir.sequence.strict,last_timestamp",0,Last Timestamp,Последен времеви маркер,0
-field,"ir.sequence.strict,name",0,Sequence Name,Име на последователност,0
-field,"ir.sequence.strict,number_increment",0,Increment Number,Стойност на увеличаване,0
-field,"ir.sequence.strict,number_next",0,Next Number,Следващо число,0
-field,"ir.sequence.strict,padding",0,Number padding,Фиксирана дължина (нули),0
-field,"ir.sequence.strict,prefix",0,Prefix,Префикс,0
-field,"ir.sequence.strict,rec_name",0,Name,Име,0
-field,"ir.sequence.strict,suffix",0,Suffix,Суфикс,0
-field,"ir.sequence.strict,timestamp_offset",0,Timestamp Offset,Отместване на времеви маркер,0
-field,"ir.sequence.strict,timestamp_rounding",0,Timestamp Rounding,Закръгление на времеви маркер,0
-field,"ir.sequence.strict,type",0,Type,Вид,0
-field,"ir.sequence.type,code",0,Sequence Code,Код на последователност,0
-field,"ir.sequence.type,name",0,Sequence Name,Име на последователност,0
-field,"ir.sequence.type,rec_name",0,Name,Име,0
-field,"ir.translation,fuzzy",0,Fuzzy,Неясен,0
-field,"ir.translation,lang",0,Language,Език,0
-field,"ir.translation,model",0,Model,Модел,0
-field,"ir.translation,module",0,Module,Модул,0
-field,"ir.translation,name",0,Field Name,Име на поле,0
-field,"ir.translation,rec_name",0,Name,Име,0
-field,"ir.translation,res_id",0,Resource ID,ID на ресурс,0
-field,"ir.translation,src",0,Source,Източник,0
-field,"ir.translation,src_md5",0,Source MD5,MD5 на източник,0
-field,"ir.translation,type",0,Type,Вид,0
-field,"ir.translation,value",0,Translation Value,Преведено значение,0
-field,"ir.translation.export.init,lang",0,Language,Език,0
-field,"ir.translation.export.init,module",0,Module,Модул,0
-field,"ir.translation.export.start,file",0,File,Файл,0
-field,"ir.translation.update.init,lang",0,Language,Език,0
-field,"ir.trigger,action_function",0,Action Function,Функция на действие,0
-field,"ir.trigger,action_model",0,Action Model,Модел на действие,0
-field,"ir.trigger,active",0,Active,Активен,0
-field,"ir.trigger,condition",0,Condition,Условие,0
-field,"ir.trigger,limit_number",0,Limit Number,Макс брой редове,0
-field,"ir.trigger,minimum_delay",0,Minimum Delay,Минимално забавяне,0
-field,"ir.trigger,model",0,Model,Модел,0
-field,"ir.trigger,name",0,Name,Име,0
-field,"ir.trigger,on_create",0,On Create,При създаване,0
-field,"ir.trigger,on_delete",0,On Delete,При изтриване,0
-field,"ir.trigger,on_time",0,On Time,В даден момент,0
-field,"ir.trigger,on_write",0,On Write,При запис,0
-field,"ir.trigger,rec_name",0,Name,Име,0
-field,"ir.trigger.log,rec_name",0,Name,Име,0
-field,"ir.trigger.log,record_id",0,Record ID,ID на запис,0
-field,"ir.trigger.log,trigger",0,Trigger,Превключвател,0
-field,"ir.ui.icon,icon",0,Icon,Икона,0
-field,"ir.ui.icon,module",0,Module,Модул,0
-field,"ir.ui.icon,name",0,Name,Име на прикачен файл,0
-field,"ir.ui.icon,path",0,SVG Path,Път към SVG файл,0
-field,"ir.ui.icon,rec_name",0,Name,Име на прикачен файл,0
-field,"ir.ui.icon,sequence",0,Sequence,Последователност,0
-field,"ir.ui.menu,action",0,Action,Действие,0
-field,"ir.ui.menu,active",0,Active,Активен,0
-field,"ir.ui.menu,childs",0,Children,Деца,0
-field,"ir.ui.menu,complete_name",0,Complete Name,Пълно име,0
-field,"ir.ui.menu,groups",0,Groups,Групи,0
-field,"ir.ui.menu,icon",0,Icon,Икона,0
-field,"ir.ui.menu,name",0,Menu,Меню,0
-field,"ir.ui.menu,parent",0,Parent Menu,Родителско меню,0
-field,"ir.ui.menu,rec_name",0,Name,Име,0
-field,"ir.ui.menu,sequence",0,Sequence,Последователност,0
-field,"ir.ui.view,arch",0,View Architecture,Архитектура на изгледа,0
-field,"ir.ui.view,domain",0,Domain,Домейн,0
-field,"ir.ui.view,field_childs",0,Children Field,Подчинено поле,0
-field,"ir.ui.view,inherit",0,Inherited View,Наследен изглед,0
-field,"ir.ui.view,model",0,Model,Модел,0
-field,"ir.ui.view,module",0,Module,Модул,0
-field,"ir.ui.view,priority",0,Priority,Важност,0
-field,"ir.ui.view,rec_name",0,Name,Име,0
-field,"ir.ui.view,type",0,View Type,Вид изглед,0
-field,"ir.ui.view_sc,name",0,Shortcut Name,Име на бърз клавиш,0
-field,"ir.ui.view_sc,rec_name",0,Name,Име,0
-field,"ir.ui.view_sc,res_id",0,Resource Ref.,Отпр. към ресурс,0
-field,"ir.ui.view_sc,resource",0,Resource Name,Име на ресурс,0
-field,"ir.ui.view_sc,sequence",0,Sequence,Последователност,0
-field,"ir.ui.view_sc,user_id",0,User Ref.,Препр. на потребител,0
-field,"ir.ui.view_tree_width,field",0,Field,Поле,0
-field,"ir.ui.view_tree_width,model",0,Model,Модел,0
-field,"ir.ui.view_tree_width,rec_name",0,Name,Име,0
-field,"ir.ui.view_tree_width,user",0,User,Потребител,0
-field,"ir.ui.view_tree_width,width",0,Width,Ширина,0
-help,"ir.action.act_window,auto_refresh",0,Add an auto-refresh on the view,Добавяне на самообновяване на изгледа,0
-help,"ir.action.act_window,limit",0,Default limit for the list view,Ограничение по подразбиране за изглед със списък,0
-help,"ir.action.act_window,search_value",0,Default search criteria for the list view,Условие за търсене по подразбиране върху изглед със списък ,0
-help,"ir.action.act_window,window_name",0,Use the action name as window name,Използване на името на действие като име на прозорец,0
-help,"ir.action.report,style",0,Define the style to apply on the report.,Задайте стила който да се приложа на тази справка.,0
-help,"ir.action.wizard,window",0,Run wizard in a new window,Стартиране на помощник в нов прозорец,0
-help,"ir.cron,numbercall",0,"Number of times the function is called,
-a negative number indicates that the function will always be called","Брой пъти на извикване на функцията,
-отрицателно число показва че фунцията ще се извиква винаги",0
-help,"ir.cron,priority",0,"0=Very Urgent
-10=Not urgent","0=Много спешно
-10=Не е спешно",0
-help,"ir.cron,request_user",0,The user who will receive requests in case of failure,Потребителя който получава заявки в случай на проблем,0
-help,"ir.cron,user",0,The user used to execute this action,Потребителя от чието име се изпълнява действието,0
-help,"ir.lang,code",0,RFC 4646 tag: http://tools.ietf.org/html/rfc4646,,0
-help,"ir.model,module",0,Module in which this model is defined,Модула в който този модел е зададен,0
-help,"ir.model.data,db_id",0,The id of the record in the database.,ID на записа в базата данни.,0
-help,"ir.model.data,fs_id",0,The id of the record as known on the file system.,ID на записа както е записан в файловата система,0
-help,"ir.model.field,module",0,Module in which this field is defined,Модул в който този модел е зададен,0
-help,"ir.model.print_model_graph.init,filter",0,Entering a Python Regular Expression will exclude matching models from the graph.,Въвеждането на регулярен израз на python ще изключи пасващия модел от диаграмата.,0
-help,"ir.rule.group,default_p",0,Add this rule to all users by default,По подразбиране добавете това правило за всички потребители,0
-help,"ir.rule.group,global_p",0,"Make the rule global 
-so every users must follow this rule","Направете правилото глобално
-така че всеки потребител да го прилага",0
-help,"ir.rule.group,rules",0,The rule is satisfied if at least one test is True,Правилото е удовлетворено ако поне един тест е успешен,0
-help,"ir.trigger,condition",0,"A Python statement evaluated with record represented by ""self""
-It triggers the action if true.","Python израз изчислен със запис представен със ""self""
-Извиква действието ако е истина.",0
-help,"ir.trigger,limit_number",0,"Limit the number of call to ""Action Function"" by records.
-0 for no limit.","Ограничаване на броя извиквания на ""Действие на фунция"" по записи.
-0 - няма ограничение",0
-help,"ir.trigger,minimum_delay",0,"Set a minimum delay in minutes between call to ""Action Function"" for the same record.
-0 for no delay.","Минимално забавяне в минути между извикването на ""Действие на функция"" за този запис.
-0 за да няма забавяне",0
-model,"ir.action,name",,Defaults,По подрабиране,0
-model,"ir.action,name",,Menus,Менюта,0
-model,"ir.action,name",0,Action,Действие,0
-model,"ir.action,name",act_action_act_window_form,Window Actions,Действия на прозорец,0
-model,"ir.action,name",act_action_form,Actions,Действия,0
-model,"ir.action,name",act_action_report_form,Reports,Справки,0
-model,"ir.action,name",act_action_url_form,URLs,URL-и,0
-model,"ir.action,name",act_action_wizard_form,Wizards,Помощници,0
-model,"ir.action,name",act_action_wizard_size_form,Wizard Sizes,Размери на помощник,0
-model,"ir.action,name",act_attachment_form,Attachments,Прикачени файлове,0
-model,"ir.action,name",act_config_wizard_item_form,Config Wizard Items,Елементи на помощника за конфигуриране,0
-model,"ir.action,name",act_cron_form,Scheduled Actions,Планирани действия,0
-model,"ir.action,name",act_export_form,Exports,Извличания,0
-model,"ir.action,name",act_icon_form,Icons,Икони,0
-model,"ir.action,name",act_lang_form,Languages,Езици,0
-model,"ir.action,name",act_menu_tree,Menu,Меню,0
-model,"ir.action,name",act_model_access_form,Models Access,Модел на достъп,0
-model,"ir.action,name",act_model_field_access_form,Fields Access,Достъп до полета,0
-model,"ir.action,name",act_model_fields_form,Fields,Полета,0
-model,"ir.action,name",act_model_form,Models,Модели,0
-model,"ir.action,name",act_module_config_wizard,Module Configuration,Конфицурация на модул,0
-model,"ir.action,name",act_module_form,Modules,Модули,0
-model,"ir.action,name",act_module_install_upgrade,Perform Pending Installation/Upgrade,Започване на изчакващите инталации/обновявания,0
-model,"ir.action,name",act_property_form,Properties,Свойства,0
-model,"ir.action,name",act_property_form_default,Default Properties,Свойства по подразбиране,0
-model,"ir.action,name",act_rule_group_form,Record Rules,Правила на запис,0
-model,"ir.action,name",act_sequence_form,Sequences,Последователности,0
-model,"ir.action,name",act_sequence_strict_form,Sequences Strict,Точни последователности,0
-model,"ir.action,name",act_sequence_type_form,Sequence Types,Видове последователности,0
-model,"ir.action,name",act_translation_clean,Clean Translations,Изчистване на преводи,0
-model,"ir.action,name",act_translation_export,Export Translations,Извличане на преводи,0
-model,"ir.action,name",act_translation_form,Translations,Преводи,0
-model,"ir.action,name",act_translation_set_report,Set Report Translations,Задаване на преводи на справки,0
-model,"ir.action,name",act_translation_update,Synchronize Translations,Синхронизиране на преводите,0
-model,"ir.action,name",act_trigger_form,Triggers,Превключватели,0
-model,"ir.action,name",act_view_form,Views,Изгледи,0
-model,"ir.action,name",act_view_sc_add,Add Shortcut,Добавяне на бърз клавиш,0
-model,"ir.action,name",act_view_sc_form,View Shortcuts,Преглед бързи клавиши,0
-model,"ir.action,name",act_view_sc_open,Open Shortcut,Отваряне на бързи клавиши,0
-model,"ir.action,name",act_view_tree_width_form,View Tree Width,Ширина на дървовиден изглед,0
-model,"ir.action,name",print_model_graph,Graph,Графика,0
-model,"ir.action,name",report_model_graph,Graph,Графика,0
-model,"ir.action.act_window,name",0,Action act window,Действие на активния прозорец,0
-model,"ir.action.act_window.view,name",0,Action act window view,Изглед на действие на активния на прозорец,0
-model,"ir.action.keyword,name",0,Action keyword,Бърз клавиш на действие,0
-model,"ir.action.report,name",0,Action report,Справка за сметка,0
-model,"ir.action.url,name",0,Action URL,URL на действие,0
-model,"ir.action.wizard,name",0,Action wizard,Помощник за действие,0
-model,"ir.action.wizard_size,name",0,Action Wizard Size,Размер на помощник на действие,0
-model,"ir.attachment,name",0,Attachment,Прикачен файл,0
-model,"ir.cache,name",0,Cache,Кеш,0
-model,"ir.cron,name",0,Cron,Планировщик,0
-model,"ir.date,name",0,Date,Дата,0
-model,"ir.default,name",0,Default,По подразбиране,0
-model,"ir.export,name",0,Export,Извличане,0
-model,"ir.export.line,name",0,Export line,Ред от извличане,0
-model,"ir.lang,name",0,Language,Език,0
-model,"ir.lang,name",lang_bg,Български,,0
-model,"ir.lang,name",lang_cs,Czech,Чешки,0
-model,"ir.lang,name",lang_de,German,Немски,0
-model,"ir.lang,name",lang_en,English,Англииски,0
-model,"ir.lang,name",lang_es,Spanish (Spain),Испански,0
-model,"ir.lang,name",lang_es_CO,Spanish (Colombia),Испански (Колумбия),0
-model,"ir.lang,name",lang_fr,French,Френски,0
-model,"ir.lang,name",lang_ru,Russian,Руски,0
-model,"ir.model,name",0,Model,Модел,0
-model,"ir.model.access,name",0,Model access,Модел на достъпа,0
-model,"ir.model.data,name",0,Model data,Модел на данни,0
-model,"ir.model.field,name",0,Model field,Поле на модел,0
-model,"ir.model.field.access,name",0,Model Field Access,Модел на достъп до поле,0
-model,"ir.model.print_model_graph.init,name",0,Print Model Graph Init,Начален печат на графика на модел,0
-model,"ir.module.module,name",0,Module,Модул,0
-model,"ir.module.module.config_wizard.first,name",0,Module Config Wizard First,Първи помощник на конфигуриране на модул,0
-model,"ir.module.module.config_wizard.item,name",0,Config wizard to run after installing module,Задаване на помощника да се стартира след инсталиране на модула,0
-model,"ir.module.module.dependency,name",0,Module dependency,Зависимости на модула,0
-model,"ir.module.module.install_upgrade.init,name",0,Module Install Upgrade Init,Начално инсталиране/обновяване на модул,0
-model,"ir.module.module.install_upgrade.start,name",0,Module Install Upgrade Start,Начало на инсталиране/обновяване на модул,0
-model,"ir.property,name",0,Property,Свойство,0
-model,"ir.rule,name",0,Rule,Правило,0
-model,"ir.rule.group,name",0,Rule group,Група правила,0
-model,"ir.sequence,name",0,Sequence,Последователност,0
-model,"ir.sequence.strict,name",0,Sequence Strict,Точна последователност,0
-model,"ir.sequence.type,name",0,Sequence type,Вид последователност,0
-model,"ir.translation,name",0,Translation,Превод,0
-model,"ir.translation.clean.init,name",0,Clean translation init,Начално изчистване на превод,0
-model,"ir.translation.clean.start,name",0,Clean translation start,Изчистване на преводи - начало,0
-model,"ir.translation.export.init,name",0,Export translation - language and module,Изчличане на превод - Език и модул,0
-model,"ir.translation.export.start,name",0,Export translation - file,Извличане на превод - файл,0
-model,"ir.translation.set_report.init,name",0,Update Report Translation,Обновяване на преводи на справки,0
-model,"ir.translation.set_report.start,name",0,Update Report Translation,Обновяване на превод на справка,0
-model,"ir.translation.update.init,name",0,Update translation - language,Обновяване на превод - език,0
-model,"ir.trigger,name",0,Trigger,Превключвател,0
-model,"ir.trigger.log,name",0,Trigger Log,Лог на превключвател,0
-model,"ir.ui.icon,name",0,Icon,Икона,0
-model,"ir.ui.menu,name",,Defaults,По подрабиране,0
-model,"ir.ui.menu,name",,Menus,Менюта,0
-model,"ir.ui.menu,name",0,UI menu,Потребителско меню,0
-model,"ir.ui.menu,name",menu_act_action,Actions,Действия,0
-model,"ir.ui.menu,name",menu_action,Actions,Действия,0
-model,"ir.ui.menu,name",menu_action_act_window,Window Actions,Действия на прозорец,0
-model,"ir.ui.menu,name",menu_action_report_form,Reports,Справки,0
-model,"ir.ui.menu,name",menu_action_url,URLs,URL-и,0
-model,"ir.ui.menu,name",menu_action_wizard,Wizards,Помощници,0
-model,"ir.ui.menu,name",menu_action_wizard_size,Wizard Sizes,Размери на помощник,0
-model,"ir.ui.menu,name",menu_administration,Administration,Администрация,0
-model,"ir.ui.menu,name",menu_attachment_form,Attachments,Прикачени файлове,0
-model,"ir.ui.menu,name",menu_config_wizard_item_form,Config Wizard Items,Елементи на помощника за конфигуриране,0
-model,"ir.ui.menu,name",menu_cron_form,Scheduled Actions,Планирани действия,0
-model,"ir.ui.menu,name",menu_export_form,Exports,Извличания,0
-model,"ir.ui.menu,name",menu_icon_form,Icons,Икони,0
-model,"ir.ui.menu,name",menu_ir_sequence_type,Sequence Types,Видове последователности,0
-model,"ir.ui.menu,name",menu_lang_form,Languages,Езици,0
-model,"ir.ui.menu,name",menu_localization,Localization,Превод,0
-model,"ir.ui.menu,name",menu_menu_tree,Menu,Меню,0
-model,"ir.ui.menu,name",menu_model_access_form,Models Access,Модел на достъп,0
-model,"ir.ui.menu,name",menu_model_field_access_form,Fields Access,Достъп до полета,0
-model,"ir.ui.menu,name",menu_model_form,Models,Модели,0
-model,"ir.ui.menu,name",menu_models,Models,Модели,0
-model,"ir.ui.menu,name",menu_module_form,Modules,Модули,0
-model,"ir.ui.menu,name",menu_module_install_upgrade,Perform Pending Installation/Upgrade,Започване на изчакващите инталации/обновявания,0
-model,"ir.ui.menu,name",menu_modules,Modules,Модули,0
-model,"ir.ui.menu,name",menu_property_form,Properties,Свойства,0
-model,"ir.ui.menu,name",menu_property_form_default,Default Properties,Свойства по подразбиране,0
-model,"ir.ui.menu,name",menu_rule_group_form,Record Rules,Правила на запис,0
-model,"ir.ui.menu,name",menu_scheduler,Scheduler,Планировщик,0
-model,"ir.ui.menu,name",menu_sequence_form,Sequences,Последователности,0
-model,"ir.ui.menu,name",menu_sequence_strict_form,Sequences Strict,Точни последователности,0
-model,"ir.ui.menu,name",menu_sequences,Sequences,Последователности,0
-model,"ir.ui.menu,name",menu_translation_clean,Clean Translations,Изчистване на преводи,0
-model,"ir.ui.menu,name",menu_translation_export,Export Translations,Извличане на преводи,0
-model,"ir.ui.menu,name",menu_translation_form,Translations,Преводи,0
-model,"ir.ui.menu,name",menu_translation_set_report,Set Report Translations,Задаване на преводи на справки,0
-model,"ir.ui.menu,name",menu_translation_update,Synchronize Translations,Синхронизиране на преводите,0
-model,"ir.ui.menu,name",menu_trigger_form,Triggers,Превключватели,0
-model,"ir.ui.menu,name",menu_ui,User Interface,Потребителски интерфейс,0
-model,"ir.ui.menu,name",menu_view,Views,Изгледи,0
-model,"ir.ui.menu,name",menu_view_sc,View Shortcuts,Преглед бързи клавиши,0
-model,"ir.ui.menu,name",menu_view_tree_width,View Tree Width,Ширина на дървовиден изглед,0
-model,"ir.ui.menu,name",model_model_fields_form,Fields,Полета,0
-model,"ir.ui.view,name",0,View,Изглед,0
-model,"ir.ui.view_sc,name",0,View shortcut,Изглед бърз клавиш,0
-model,"ir.ui.view_tree_width,name",0,View Tree Width,Ширина на дървовиден изглед,0
-selection,"ir.action.act_window,view_type",0,Board,Табло,0
-selection,"ir.action.act_window,view_type",0,Form,Форма,0
-selection,"ir.action.act_window,view_type",0,Tree,Дърво,0
-selection,"ir.action.keyword,keyword",0,Action form,Форма за действие,0
-selection,"ir.action.keyword,keyword",0,Action tree,Дърво с действия,0
-selection,"ir.action.keyword,keyword",0,Form relate,Свързана форма,0
-selection,"ir.action.keyword,keyword",0,Open Graph,Отваряне на графика,0
-selection,"ir.action.keyword,keyword",0,Open tree,Отваряне на дърво,0
-selection,"ir.action.keyword,keyword",0,Print form,Отпечатване на форма,0
-selection,"ir.action.report,extension",0,ODT Document,ODT документ,0
-selection,"ir.action.report,extension",0,PDF Document,PDF документ,0
-selection,"ir.attachment,type",0,Data,Данни,0
-selection,"ir.attachment,type",0,Link,Препратка,0
-selection,"ir.cron,interval_type",0,Days,Дни,0
-selection,"ir.cron,interval_type",0,Hours,Часове,0
-selection,"ir.cron,interval_type",0,Minutes,Минути,0
-selection,"ir.cron,interval_type",0,Months,Месеци,0
-selection,"ir.cron,interval_type",0,Weeks,Седмици,0
-selection,"ir.cron,interval_type",0,Work Days,Работни дни,0
-selection,"ir.lang,direction",0,Left-to-right,Отляво надясно,0
-selection,"ir.lang,direction",0,Right-to-left,Отдясно наляво,0
-selection,"ir.module.module,state",0,Installed,Инсталиран,0
-selection,"ir.module.module,state",0,Not Installed,Не е инсталиран,0
-selection,"ir.module.module,state",0,To be installed,За инсталиране,0
-selection,"ir.module.module,state",0,To be removed,За премахване,0
-selection,"ir.module.module,state",0,To be upgraded,За обновяване,0
-selection,"ir.module.module.config_wizard.item,state",0,Done,Приключен,0
-selection,"ir.module.module.config_wizard.item,state",0,Open,Отваряне,0
-selection,"ir.module.module.dependency,state",0,Installed,Инсталиран,0
-selection,"ir.module.module.dependency,state",0,Not Installed,Не е инсталиран,0
-selection,"ir.module.module.dependency,state",0,To be installed,За инсталиране,0
-selection,"ir.module.module.dependency,state",0,To be removed,За премахване,0
-selection,"ir.module.module.dependency,state",0,To be upgraded,За обновяване,0
-selection,"ir.module.module.dependency,state",0,Unknown,Неизвестен,0
-selection,"ir.sequence,type",0,Decimal Timestamp,Десетичен времеви маркер,0
-selection,"ir.sequence,type",0,Hexadecimal Timestamp,Шестнайсетичен времеви маркер,0
-selection,"ir.sequence,type",0,Incremental,Нарастване,0
-selection,"ir.sequence.strict,type",0,Decimal Timestamp,Десетичен времеви маркер,0
-selection,"ir.sequence.strict,type",0,Hexadecimal Timestamp,Шестнайсетичен времеви маркер,0
-selection,"ir.sequence.strict,type",0,Incremental,Нарастване,0
-selection,"ir.translation,type",0,Error,Грешка,0
-selection,"ir.translation,type",0,Field,Поле,0
-selection,"ir.translation,type",0,Help,Помощ,0
-selection,"ir.translation,type",0,Model,Модел,0
-selection,"ir.translation,type",0,ODT,ODT,0
-selection,"ir.translation,type",0,Selection,Избор,0
-selection,"ir.translation,type",0,View,Изглед,0
-selection,"ir.translation,type",0,Wizard Button,Бутон на помощник,0
-selection,"ir.ui.menu,action",0,ir.action.act_window,,0
-selection,"ir.ui.menu,action",0,ir.action.report,,0
-selection,"ir.ui.menu,action",0,ir.action.url,,0
-selection,"ir.ui.menu,action",0,ir.action.wizard,,0
-selection,"ir.ui.view,type",0,,,0
-selection,"ir.ui.view,type",0,Board,Табло,0
-selection,"ir.ui.view,type",0,Form,Форма,0
-selection,"ir.ui.view,type",0,Graph,Графика,0
-selection,"ir.ui.view,type",0,Tree,Дърво,0
-view,ir.action,0,Action,Действие,0
-view,ir.action,0,General,Основен,0
-view,ir.action,0,Keyword,Ключова дума,0
-view,ir.action,0,Keywords,Ключови думи,0
-view,ir.action.act_window,0,General,Основен,0
-view,ir.action.act_window,0,Keyword,Ключова дума,0
-view,ir.action.act_window,0,Keywords,Ключови думи,0
-view,ir.action.act_window,0,Open Window,Отваряне на прозорец,0
-view,ir.action.act_window,0,Open a Window,Отваряне на прозорец,0
-view,ir.action.act_window,0,Views,Изгледи,0
-view,ir.action.report,0,General,Основен,0
-view,ir.action.report,0,Keyword,Ключова дума,0
-view,ir.action.report,0,Keywords,Ключови думи,0
-view,ir.action.report,0,Report,Справка,0
-view,ir.action.report,0,Report xml,Xml на справка,0
-view,ir.action.url,0,General,Основен,0
-view,ir.action.url,0,Keyword,Ключова дума,0
-view,ir.action.url,0,Keywords,Ключови думи,0
-view,ir.action.url,0,URL,URL,0
-view,ir.action.wizard,0,General,Основен,0
-view,ir.action.wizard,0,Keyword,Ключова дума,0
-view,ir.action.wizard,0,Keywords,Ключови думи,0
-view,ir.action.wizard,0,Wizard,Помощник,0
-view,ir.action.wizard_size,0,Wizard Size,Размер на помощник,0
-view,ir.action.wizard_size,0,Wizard Sizes,Размери на помощник,0
-view,ir.attachment,0,Attachments,Прикачени файлове,0
-view,ir.attachment,0,Preview,Преглед,0
-view,ir.cron,0,Action to trigger,Действие за стартиране,0
-view,ir.cron,0,Scheduled Action,Планирано действие,0
-view,ir.cron,0,Scheduled Actions,Планирани действия,0
-view,ir.default,0,Default,По подразбиране,0
-view,ir.default,0,Defaults,По подрабиране,0
-view,ir.export,0,Exports,Извличания,0
-view,ir.lang,0,Date Formatting,Форматиране на дата,0
-view,ir.lang,0,Language,Език,0
-view,ir.lang,0,Languages,Езици,0
-view,ir.lang,0,Numbers Formatting,Форматиране на числа,0
-view,ir.model,0,Fields Description,Описание на полета,0
-view,ir.model,0,Model Description,Описание на модел,0
-view,ir.model.access,0,Access controls,Контрол на достъпа,0
-view,ir.model.field,0,Fields,Полета,0
-view,ir.model.field.access,0,Field Access,Достъп до поле,0
-view,ir.model.print_model_graph.init,0,Print Model Graph,Печат на графика на модел,0
-view,ir.module.module,0,Cancel Installation,Отказ от инсталалиране,0
-view,ir.module.module,0,Cancel Uninstallation,Отказ от деинсталиране,0
-view,ir.module.module,0,Cancel Upgrade,Отказ от обновяване,0
-view,ir.module.module,0,Dependencies,Зависимости,0
-view,ir.module.module,0,Mark for Installation,Отбелязване за инсталиране,0
-view,ir.module.module,0,Mark for Uninstallation (beta),Отбелязване за деинсталиране (beta),0
-view,ir.module.module,0,Mark for Upgrade,Отбелязване за обновяване,0
-view,ir.module.module,0,Module,Модул,0
-view,ir.module.module,0,Modules,Модули,0
-view,ir.module.module.config_wizard.first,0,Welcome to the module configuration wizard!,Добре дошли в помощника за конфигуриране на модула!,0
-view,ir.module.module.config_wizard.first,0,You will be able to configure your installation,Ще може да конфигурирате инсталацията си,0
-view,ir.module.module.config_wizard.first,0,depending on the modules you have installed.,в зависимост от модулите които сте инсталирали.,0
-view,ir.module.module.config_wizard.item,0,Config Wizard Items,Елементи на помощника за конфигуриране,0
-view,ir.module.module.install_upgrade.init,0,Note that this operation my take a few minutes.,Забележка: Операцията може да отнеме няколко минути,0
-view,ir.module.module.install_upgrade.init,0,System Upgrade,Обновяване на системата,0
-view,ir.module.module.install_upgrade.init,0,Your system will be upgraded.,Системата ще бъде обновена.,0
-view,ir.module.module.install_upgrade.start,0,System upgrade done,Обновяването на системата приключено,0
-view,ir.module.module.install_upgrade.start,0,The modules have been upgraded / installed !,Модулите са обновени / инсталирани !,0
-view,ir.property,0,Properties,Свойства,0
-view,ir.property,0,Property,Свойство,0
-view,ir.rule,0,Test,Тест,0
-view,ir.rule.group,0,"If there is no test defined, the rule is always satisfied if not global",Ако не указан тест правилото винаги е удовлетворено ако не е глобално,0
-view,ir.rule.group,0,Record rules,Правила на записи,0
-view,ir.rule.group,0,The rule is satisfied if at least one test is True,Правилото е удовлетворено ако поне един тест е успешен,0
-view,ir.sequence,0,${day},${ден},0
-view,ir.sequence,0,${month},${month} - месец,0
-view,ir.sequence,0,${year},${year} - година,0
-view,ir.sequence,0,Day:,Ден:,0
-view,ir.sequence,0,Incremental,Нарастване,0
-view,ir.sequence,0,"Legend (Placeholders for prefix, suffix)","Легенда (променливи за префикс, суфикс)",0
-view,ir.sequence,0,Month:,Месец:,0
-view,ir.sequence,0,Sequences,Последователности,0
-view,ir.sequence,0,Timestamp,Дата,0
-view,ir.sequence,0,Year:,Година:,0
-view,ir.sequence.type,0,Sequence Type,Вид последователност,0
-view,ir.translation,0,Translations,Преводи,0
-view,ir.translation.clean.init,0,Clean Translations,Изчистване на преводи,0
-view,ir.translation.clean.init,0,Clean Translations?,Изчистване на преводите?,0
-view,ir.translation.clean.start,0,Clean Translations,Изчистване на преводи,0
-view,ir.translation.clean.start,0,Clean Translations Succeed!,Изчистването на преводите е успешно!,0
-view,ir.translation.export.init,0,Export Translation,Извличане на превод,0
-view,ir.translation.export.start,0,Export Translation,Извличане на превод,0
-view,ir.translation.set_report.init,0,Set Report Translations,Задаване на преводи на справки,0
-view,ir.translation.set_report.init,0,Synchronize Report Translations?,Синхронизиране на преводи на справки?,0
-view,ir.translation.set_report.start,0,Set Report Translations,Задаване на преводи на справки,0
-view,ir.translation.set_report.start,0,Set Translations Succeed!,Преводите са успешно заредени!,0
-view,ir.translation.update.init,0,Synchronize Translations,Синхронизиране на преводите,0
-view,ir.trigger,0,Trigger,Превключвател,0
-view,ir.trigger,0,Triggers,Превключватели,0
-view,ir.ui.icon,0,Icon,Икона,0
-view,ir.ui.icon,0,Icons,Икони,0
-view,ir.ui.menu,0,Menu,Меню,0
-view,ir.ui.view,0,View,Изглед,0
-view,ir.ui.view_sc,0,Shortcut,Бърз клавиш,0
-view,ir.ui.view_sc,0,Shortcuts,Бързи клавиши,0
-view,ir.ui.view_tree_width,0,View Tree Width,Ширина на дървовиден изглед,0
-view,ir.ui.view_tree_width,0,Views Tree Width,Ширина на дърво с изгледи,0
-wizard_button,"ir.model.print_model_graph,init,end",0,Cancel,Отказ,0
-wizard_button,"ir.model.print_model_graph,init,print",0,Print,Печат,0
-wizard_button,"ir.module.module.config_wizard,first,end",0,Cancel,Отказ,0
-wizard_button,"ir.module.module.config_wizard,first,wizard",0,Ok,Добре,0
-wizard_button,"ir.module.module.install_upgrade,init,end",0,Cancel,Отказ,0
-wizard_button,"ir.module.module.install_upgrade,init,start",0,Start Upgrade,Започване на обновяване,0
-wizard_button,"ir.module.module.install_upgrade,start,menu",0,Ok,Добре,0
-wizard_button,"ir.translation.clean,init,end",0,Cancel,Отказ,0
-wizard_button,"ir.translation.clean,init,start",0,Start,Начало,0
-wizard_button,"ir.translation.clean,start,end",0,Ok,Добре,0
-wizard_button,"ir.translation.export,init,end",0,Cancel,Отказ,0
-wizard_button,"ir.translation.export,init,start",0,Start Export,Начало на извличане,0
-wizard_button,"ir.translation.export,start,end",0,Close,Затваряне,0
-wizard_button,"ir.translation.set_report,init,end",0,Cancel,Отказ,0
-wizard_button,"ir.translation.set_report,init,start",0,Start Update,Започване на обновление,0
-wizard_button,"ir.translation.set_report,start,end",0,Ok,Добре,0
-wizard_button,"ir.translation.update,init,end",0,Cancel,Отказ,0
-wizard_button,"ir.translation.update,init,start",0,Start Update,Започване на обновление,0
diff --git a/trytond/ir/cron.py b/trytond/ir/cron.py
index dfa81d2..99ed8d3 100644
--- a/trytond/ir/cron.py
+++ b/trytond/ir/cron.py
@@ -1,18 +1,19 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import contextlib
 import datetime
 from dateutil.relativedelta import relativedelta
 import traceback
 import sys
+import logging
 from trytond.backend import Database
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.tools import safe_eval
 from trytond.transaction import Transaction
+from trytond.pool import Pool
+from trytond.backend import TableHandler
 
 _INTERVALTYPES = {
-    'work_days': lambda interval: relativedelta(days=interval),
     'days': lambda interval: relativedelta(days=interval),
     'hours': lambda interval: relativedelta(hours=interval),
     'weeks': lambda interval: relativedelta(weeks=interval),
@@ -26,7 +27,8 @@ class Cron(ModelSQL, ModelView):
     _description = __doc__
     name = fields.Char('Name', required=True, translate=True)
     user = fields.Many2One('res.user', 'Execution User', required=True,
-                           help="The user used to execute this action")
+        domain=[('active', '=', False)],
+        help="The user used to execute this action")
     request_user = fields.Many2One(
         'res.user', 'Request User', required=True,
         help="The user who will receive requests in case of failure")
@@ -35,24 +37,20 @@ class Cron(ModelSQL, ModelView):
     interval_type = fields.Selection( [
        ('minutes', 'Minutes'),
        ('hours', 'Hours'),
-       ('work_days', 'Work Days'),
        ('days', 'Days'),
        ('weeks', 'Weeks'),
        ('months', 'Months'),
        ], 'Interval Unit')
-    numbercall = fields.Integer('Number of calls', select=1,
-       help='Number of times the function is called,\n' \
-               'a negative number indicates that the function ' \
-               'will always be called')
-    doall = fields.Boolean('Repeat missed')
-    nextcall = fields.DateTime('Next call date', required=True,
+    number_calls = fields.Integer('Number of Calls', select=1,
+       help=('Number of times the function is called, a negative '
+           'number indicates that the function will always be '
+           'called'))
+    repeat_missed = fields.Boolean('Repeat Missed')
+    next_call = fields.DateTime('Next Call', required=True,
             select=1)
     model = fields.Char('Model')
     function = fields.Char('Function')
     args = fields.Text('Arguments')
-    priority = fields.Integer('Priority',
-       help='0=Very Urgent\n10=Not urgent')
-    running = fields.Boolean('Running', readonly=True, select=1)
 
     def __init__(self):
         super(Cron, self).__init__()
@@ -62,14 +60,25 @@ class Cron(ModelSQL, ModelView):
                             "properly: \"%s\"\n Traceback: \n\n%s\n"
             })
 
-    def default_nextcall(self):
-        return datetime.datetime.now()
+    def init(self, module_name):
+        cursor = Transaction().cursor
+
+        # Migration from 2.0: rename numbercall, doall and nextcall
+        table = TableHandler(cursor, self, module_name)
+        table.column_rename('numbercall', 'number_calls')
+        table.column_rename('doall', 'repeat_missed')
+        table.column_rename('nextcall', 'next_call')
+
+        super(Cron, self).init(module_name)
 
-    def default_priority(self):
-        return 5
+        # Migration from 2.0: work_days removed
+        cursor.execute('UPDATE "%s" '
+            'SET interval_type = %%s '
+            'WHERE interval_type = %%s' % self._table,
+            ('days', 'work_days'))
 
-    def default_user(self):
-        return int(Transaction().user)
+    def default_next_call(self):
+        return datetime.datetime.now()
 
     def default_interval_number(self):
         return 1
@@ -77,120 +86,106 @@ class Cron(ModelSQL, ModelView):
     def default_interval_type(self):
         return 'months'
 
-    def default_numbercall(self):
-        return 1
+    def default_number_calls(self):
+        return -1
 
     def default_active(self):
         return True
 
-    def default_doall(self):
+    def default_repeat_missed(self):
         return True
 
-    def default_running(self):
-        return False
-
     def check_xml_record(self, ids, values):
         return True
 
+    def get_delta(self, cron):
+        '''
+        Return the relativedelta for the next call
+        '''
+        return _INTERVALTYPES[cron.interval_type](cron.interval_number)
+
+    def _get_request_values(self, cron):
+        tb_s = reduce(lambda x, y: x + y,
+                traceback.format_exception(*sys.exc_info()))
+        tb_s = tb_s.decode('utf-8', 'ignore')
+        name = self.raise_user_error('request_title',
+            raise_exception=False)
+        body = self.raise_user_error('request_body', (cron.name, tb_s),
+            raise_exception=False)
+        values = {
+            'name': name,
+            'priority': '2',
+            'act_from': cron.user.id,
+            'act_to': cron.request_user.id,
+            'body': body,
+            'date_sent': datetime.datetime.now(),
+            'references': [
+                ('create', {
+                    'reference': '%s,%s' % (self._name, cron.id),
+                }),
+            ],
+            'state': 'waiting',
+            'trigger_date': datetime.datetime.now(),
+        }
+        return values
+
     def _callback(self, cron):
+        pool = Pool()
         try:
-            args = (cron['args'] or []) and safe_eval(cron['args'])
-            obj = self.pool.get(cron['model'])
-            if not obj and hasattr(obj, cron['function']):
-                return False
-            fct = getattr(obj, cron['function'])
-            with Transaction().set_user(cron['user']):
-                fct(*args)
+            args = (cron.args or []) and safe_eval(cron.args)
+            model_obj = pool.get(cron.model)
+            with Transaction().set_user(cron.user.id):
+                getattr(model_obj, cron.function)(*args)
         except Exception, error:
             Transaction().cursor.rollback()
 
-            tb_s = ''
-            for line in traceback.format_exception(*sys.exc_info()):
-                try:
-                    line = line.encode('utf-8', 'ignore')
-                except Exception:
-                    continue
-                tb_s += line
-            try:
-                tb_s += str(error).decode('utf-8', 'ignore')
-            except Exception:
-                pass
-
-            request_obj = self.pool.get('res.request')
-            try:
-                user_obj = self.pool.get('res.user')
-                req_user = user_obj.browse(cron['request_user'])
-                language = (req_user.language.code if req_user.language
-                        else 'en_US')
-                with contextlib.nested(Transaction().set_user(cron['user']),
-                        Transaction().set_context(language=language)):
-                    rid = request_obj.create({
-                        'name': self.raise_user_error('request_title',
-                            raise_exception=False),
-                         'priority': '2',
-                         'act_from': cron['user'],
-                         'act_to': cron['request_user'],
-                         'body': self.raise_user_error('request_body',
-                             (cron['name'], tb_s), raise_exception=False),
-                         'date_sent': datetime.datetime.now(),
-                         'references': [
-                                ('create', {
-                                    'reference': "ir.cron,%s" % cron['id'],
-                                    }),
-                                ],
-                         'state': 'waiting',
-                         'trigger_date': datetime.datetime.now(),
-                         })
-                Transaction().cursor.commit()
-            except Exception:
-                Transaction().cursor.rollback()
-
-    def pool_jobs(self, db_name):
+            request_obj = pool.get('res.request')
+            req_user = cron.request_user
+            language = (req_user.language.code if req_user.language
+                    else 'en_US')
+            with contextlib.nested(Transaction().set_user(cron.user.id),
+                    Transaction().set_context(language=language)):
+                values = self._get_request_values(cron)
+                rid = request_obj.create(values)
+            Transaction().cursor.commit()
+
+    def run(self, db_name):
         now = datetime.datetime.now()
         with Transaction().start(db_name, 0) as transaction:
-            try:
-                transaction.cursor.lock(self._table)
-                transaction.cursor.execute('SELECT * FROM ir_cron '
-                        'WHERE numbercall <> 0 '
-                            'AND active '
-                            'AND nextcall <= %s '
-                            'AND NOT running '
-                            'ORDER BY priority', (datetime.datetime.now(),))
-                crons = transaction.cursor.dictfetchall()
-
-                for cron in crons:
-                    transaction.cursor.execute('UPDATE ir_cron '
-                        'SET running = %s '
-                        'WHERE id = %s', (True, cron['id']))
-                    nextcall = cron['nextcall']
-                    numbercall = cron['numbercall']
-                    done = False
-
-                    while nextcall < now and numbercall:
-                        if numbercall > 0:
-                            numbercall -= 1
-                        if not done or cron['doall']:
+            transaction.cursor.lock(self._table)
+            cron_ids = self.search([
+                ('number_calls', '!=', 0),
+                ('next_call', '<=', datetime.datetime.now()),
+            ])
+            crons = self.browse(cron_ids)
+
+            for cron in crons:
+                try:
+                    next_call = cron.next_call
+                    number_calls = cron.number_calls
+                    first = True
+                    while next_call < now and number_calls != 0:
+                        if first or cron.repeat_missed:
                             self._callback(cron)
-                        if numbercall:
-                            nextcall += _INTERVALTYPES[cron['interval_type']](
-                                    cron['interval_number'])
-                        done = True
-
-                    addsql = ''
-                    addsql_param = []
-                    if not numbercall:
-                        addsql = ', active = %s'
-                        addsql_param = [False]
-                    transaction.cursor.execute("UPDATE ir_cron "
-                        "SET nextcall = %s, "
-                            "running = %s, "
-                            "numbercall = %s" + addsql + " "
-                        "WHERE id = %s",
-                        [nextcall, False, numbercall] + addsql_param +
-                        [cron['id']])
+                        next_call += self.get_delta(cron)
+                        if number_calls > 0:
+                            number_calls -= 1
+                        first = False
+
+                    values = {
+                        'next_call': next_call,
+                        'number_calls': number_calls,
+                    }
+                    if not number_calls:
+                        values['active'] = False
+                    self.write(cron.id, values)
                     transaction.cursor.commit()
-            except Exception:
-                transaction.cursor.rollback()
-                raise
+                except Exception:
+                    transaction.cursor.rollback()
+                    tb_s = reduce(lambda x, y: x + y,
+                            traceback.format_exception(*sys.exc_info()))
+                    tb_s = tb_s.decode('utf-8', 'ignore')
+                    logger = logging.getLogger('cron')
+                    logger.error('Exception:\n%s' % tb_s)
 
 Cron()
diff --git a/trytond/ir/cron.xml b/trytond/ir/cron.xml
index ac7842a..4faa070 100644
--- a/trytond/ir/cron.xml
+++ b/trytond/ir/cron.xml
@@ -12,16 +12,14 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Scheduled Actions">
-                    <field name="nextcall"/>
-                    <field name="name" select="1"/>
-                    <field name="user" select="1"/>
-                    <field name="request_user" select="2"/>
-                    <field name="priority" select="2"/>
+                    <field name="next_call"/>
+                    <field name="name"/>
+                    <field name="user"/>
+                    <field name="request_user"/>
                     <field name="interval_number"/>
                     <field name="interval_type"/>
-                    <field name="numbercall" select="2"/>
-                    <field name="active" select="2"/>
-                    <field name="running" select="2"/>
+                    <field name="number_calls"/>
+                    <field name="active"/>
                 </tree>
                 ]]>
             </field>
@@ -31,37 +29,33 @@ this repository contains the full copyright notices and license terms. -->
             <field name="type">form</field>
             <field name="arch" type="xml">
               <![CDATA[
-                <form string="Scheduled Action" col="6">
+                <form string="Scheduled Action">
                     <label name="name"/>
                     <field name="name"/>
+                    <label name="active"/>
+                    <field name="active"/>
                     <label name="user"/>
                     <field name="user"/>
                     <label name="request_user"/>
                     <field name="request_user"/>
-                    <label name="numbercall"/>
-                    <field name="numbercall"/>
-                    <label name="priority"/>
-                    <field name="priority"/>
-                    <label name="active"/>
-                    <field name="active"/>
                     <label name="interval_number"/>
                     <field name="interval_number"/>
                     <label name="interval_type"/>
                     <field name="interval_type"/>
-                    <label name="nextcall"/>
-                    <field name="nextcall"/>
-                    <label name="doall"/>
-                    <field name="doall"/>
-                    <separator string="Action to trigger" colspan="6"
+                    <label name="number_calls"/>
+                    <field name="number_calls"/>
+                    <label name="next_call"/>
+                    <field name="next_call"/>
+                    <label name="repeat_missed"/>
+                    <field name="repeat_missed"/>
+                    <separator string="Action to trigger" colspan="4"
                         id="action_trigger"/>
                     <label name="model"/>
-                    <field name="model"  readonly="1"/>
+                    <field name="model"/>
                     <label name="function"/>
-                    <field name="function" readonly="1"/>
-                    <label name="running"/>
-                    <field name="running"/>
-                    <separator name="args" colspan="6"/>
-                    <field name="args" colspan="6" readonly="1"/>
+                    <field name="function"/>
+                    <label name="args"/>
+                    <field name="args" colspan="3" widget="char"/>
                 </form>
                 ]]>
             </field>
@@ -69,7 +63,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_cron_form">
             <field name="name">Scheduled Actions</field>
             <field name="res_model">ir.cron</field>
-            <field name="context">{'active_test': False}</field>
+            <field name="context"></field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_cron_form_view1">
diff --git a/trytond/ir/de_DE.csv b/trytond/ir/de_DE.csv
deleted file mode 100644
index 0dc5726..0000000
--- a/trytond/ir/de_DE.csv
+++ /dev/null
@@ -1,787 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,access_error,0,"You try to bypass an access rule!
-(Document type: %s)","Fehlende Zugriffsberechtigung!
-(Dokumententyp: %s)",0
-error,delete_workflow_record,0,You cannot delete a record with a running workflow.,Ein im Workflow befindlicher Datensatz kann nicht gelöscht werden!,0
-error,delete_xml_record,0,You are not allowed to delete this record.,Keine Löschberechtigung für diesen Datensatz,0
-error,digits_validation_record,0,"The field ""%s"" on ""%s"" has too many decimal digits.","Das Feld ""%s"" in ""%s"" weist zu viele Dezimalstellen auf.",0
-error,domain_validation_record,0,"The value of the field ""%s"" on ""%s"" is not valid according to its domain.","Der Wert von Feld ""%s"" in ""%s"" liegt nicht im gültigen Wertebereich (Domain)!",0
-error,domain_validation_record,0,"The value of the field ""%s"" on ""%s"" is not valid with his domain.","Der Wert von Feld ""%s"" in ""%s"" liegt nicht im gültigen Wertebereich (Domain)!",0
-error,foreign_model_exist,0,"Could not delete ""%s"" records because they are used on field ""%s"" of ""%s"".","""%s"" Datensätze konnten nicht gelöscht werden, weil sie in Feld ""%s"" in ""%s"" verwendet werden.",0
-error,foreign_model_missing,0,"The value of field ""%s"" on ""%s"" doesn't exist.","Der Wert von Feld ""%s"" in ""%s"" existiert nicht.",0
-error,ir.action.act_window,0,Invalid context!,Ungültiger Kontext!,0
-error,ir.action.act_window,0,Invalid domain!,Ungültiger Wertebereich (Domain)!,0
-error,ir.action.act_window,0,Invalid search criteria!,Ungültige Suchkriterien!,0
-error,ir.action.act_window,0,Invalid views!,Ungültige Sicht!,0
-error,ir.action.keyword,0,Wrong wizard model!,Falsches Wizardmodell!,0
-error,ir.action.report,0,The internal name must be unique by module!,Der interne Name kann pro Modul nur einmal vergeben werden!,0
-error,ir.attachment,0,The  names of attachments must be unique by resource!,Der Name für einen Anhang kann nur einmal pro Ressource vergeben werden!,0
-error,ir.cron,0,Scheduled action failed,Geplante Aktion fehlgeschlagen,0
-error,ir.cron,0,"The following action failed to execute properly: ""%s""
- Traceback: 
-
-%s
-","Die folgende Aktion konnte nicht erfolgreich durchgeführt werden: ""%s""
- Traceback:
-
-%s",0
-error,ir.lang,0,Invalid Grouping!,Ungültige Gruppierung,0
-error,ir.lang,0,The date format is not valid!,Ungültiges Datumsformat,0
-error,ir.lang,0,decimal_point and thousands_sep must be different!,Dezimalpunkt and Tausendertrennzeichen müssen unterschiedlich sein!,0
-error,ir.model,0,Module Name must be a python identifier!,Der Name eines Moduls muss ein gültiger Python-Bezeichner sein!,0
-error,ir.model,0,The model must be unique!,Das Modell kann nicht mehrfach vergeben werden!,0
-error,ir.model.access,0,Only one record by model and group is allowed!,Nur ein Datensatz pro Modell und Gruppe möglich!,0
-error,ir.model.access,0,You can not create this kind of document! (%s),Keine Berechtigung für die Erstellung dieser Dokumentenart! (%s) ,0
-error,ir.model.access,0,You can not delete this document! (%s),Keine Berechtigung für die Löschung dieses Dokuments! (%s),0
-error,ir.model.access,0,You can not read this document! (%s),Keine Leseberechtigung für dieses Dokument! (%s),0
-error,ir.model.access,0,You can not write in this document! (%s),Keine Schreibberechtigung für dieses Dokument! (%s),0
-error,ir.model.data,0,"The triple (fs_id, module, model) must be unique!","Die Dreifachkombination (fs_id, module, model)  muss eindeuitg sein (kann nicht mehrfach vergeben werden)!",0
-error,ir.model.field,0,Model Field Name must be a python identifier!,Der Feldname eines Modells muss ein gültiger Python-Bezeichner sein!,0
-error,ir.model.field,0,The field name in model must be unique!,Der Feldname in Modell kann nicht mehrfach vergeben werden!,0
-error,ir.model.field.access,0,Only one record by field and group is allowed!,Nur ein Datensatz pro Feld und Gruppe möglich!,0
-error,ir.model.field.access,0,You can not read the field! (%s.%s),Keine Leseberechtigung für das Feld (%s.%s)!,0
-error,ir.model.field.access,0,You can not write on the field! (%s.%s),Keine Schreibberechtigung für das Feld (%s.%s)!,0
-error,ir.module.module,0,"Missing dependencies %s for module ""%s""","Fehlende Abhängigkeiten %s für Modul ""%s""",0
-error,ir.module.module,0,The modules you are trying to uninstall depends on installed modules:,Die zu deinstallierenden Module hängen von installierten Module ab:,0
-error,ir.module.module,0,The name of the module must be unique!,Der Name eines Moduls kann nicht mehrfach vergeben werden,0
-error,ir.module.module,0,You can not remove a module that is installed or will be installed,Ein bereits installiertes oder für die Installation vorgemwerktes Modul kann nicht entfernt werden,0
-error,ir.module.module.dependency,0,Dependency must be unique by module!,Die Abhängigkeit eines Moduls muss eindeutig sein!,0
-error,ir.rule.group,0,Global and Default are mutually exclusive!,Global und Standard schließen sich gegenseitig aus!,0
-error,ir.sequence,0,Invalid prefix/suffix!,Ungültiger Präfix/Suffix!,0
-error,ir.sequence,0,Last Timestamp could not be in future!,Der letzte Zeitstempel darf nicht in der Zukunft liegen!,0
-error,ir.sequence,0,Missing sequence!,Fehlender Nummernkreis!,0
-error,ir.sequence.strict,0,Invalid prefix/suffix!,Präfix/Suffix ungültig!,0
-error,ir.sequence.strict,0,Last Timestamp could not be in future!,Der letzte Zeitstempel darf nicht in der Zukunft liegen!,0
-error,ir.sequence.strict,0,Missing sequence!,Fehlender Nummernkreis!,0
-error,ir.translation,0,Translation must be unique,Ãœbersetzung kann nicht mehrfach vergeben werden!,0
-error,ir.translation,0,Translation of type 'model' must be unique!,Die Übersetzung für Typ 'Modell' kann nicht mehrfach vergeben werden!,0
-error,ir.trigger,0,"""On Time"" and others are mutually exclusive!","""Zeitgesteuert"" und die restlichen Optionen schließen sich gegenseitig aus!",0
-error,ir.trigger,0,Condition must be a python expression!,Bedingung muss ein Python Ausdruck sein!,0
-error,ir.ui.view,0,Invalid XML for View!,Ungültiges XML für Ansicht!,0
-error,not_found_in_selection,0,Key %r not found in selection field %r,Schlüsselwert %r nicht gefunden in Auswahlfeld %r,0
-error,read_error,0,"You try to read records that don't exist anymore!
-(Document type: %s)","Leseversuch von nicht mehr vorhandenen Datensätzen!
-(Dokumententyp: %s)",0
-error,reference_syntax_error,0,Syntax error for reference %r in %s,Syntaxfehler für Beziehung %r in %s,0
-error,relation_not_found,0,Relation not found: %r in %s,Beziehung nicht gefunden: %r in %s,0
-error,required_field,0,"The field ""%s"" on ""%s"" is required.","Feld ""%s"" in ""%s"" ist erforderlich.",0
-error,required_validation_record,0,"The field ""%s"" on ""%s"" is required.","Feld ""%s"" in ""%s"" ist erforderlich.",0
-error,search_function_missing,0,"Missing search function on field ""%s"".","Fehlende Suchfunktion für Feld ""%s"".",0
-error,size_validation_record,0,"The field ""%s"" on ""%s"" is too long.","Der Wert von Feld ""%s"" in ""%s"" ist zu lang.",0
-error,too_many_relations_found,0,Too many relations found: %r in %s,Zu viele Beziehungen gefunden: %r in %s,0
-error,write_error,0,"You try to write on records that don't exist anymore!
-(Document type: %s)","Schreibversuch auf nicht mehr vorhandene Datensätze!
-(Dokumententyp: %s)",0
-error,write_xml_record,0,You are not allowed to modify this record.,Keine Berechtigung für die Änderung dieses Datensatzes,0
-error,xml_id_syntax_error,0,Syntax error for XML id %r in %s,Syntaxfehler für die XML id %r in %s,0
-error,xml_record_desc,0,This record is part of the base configuration.,Dieser Datensatz ist Teil der Basiskonfiguration,0
-field,"ir.action,active",0,Active,Aktiv,0
-field,"ir.action,groups",0,Groups,Gruppen,0
-field,"ir.action,icon",0,Icon,Symbol,0
-field,"ir.action,keywords",0,Keywords,Schlüsselworte,0
-field,"ir.action,name",0,Name,Name,0
-field,"ir.action,rec_name",0,Name,Name,0
-field,"ir.action,type",0,Type,Typ,0
-field,"ir.action,usage",0,Usage,Gebrauch,0
-field,"ir.action.act_window,act_window_views",0,Views,Sichten,0
-field,"ir.action.act_window,action",0,Action,Aktion,0
-field,"ir.action.act_window,auto_refresh",0,Auto-Refresh,Automatisches Auffrischen,0
-field,"ir.action.act_window,context",0,Context Value,Kontext,0
-field,"ir.action.act_window,domain",0,Domain Value,Wertebereich (Domain),0
-field,"ir.action.act_window,limit",0,Limit,Begrenzung,0
-field,"ir.action.act_window,pyson_context",0,PySON Context,PySON Kontext,0
-field,"ir.action.act_window,pyson_domain",0,PySON Domain,PySON Wertebereich (Domain),0
-field,"ir.action.act_window,pyson_search_value",0,PySON Search Criteria,PySON Suchkriterien,0
-field,"ir.action.act_window,rec_name",0,Name,Name,0
-field,"ir.action.act_window,res_model",0,Model,Modell,0
-field,"ir.action.act_window,search_value",0,Search Criteria,Suchkriterien,0
-field,"ir.action.act_window,views",0,Views,Sichten,0
-field,"ir.action.act_window,window_name",0,Window Name,Fenstername,0
-field,"ir.action.act_window.view,act_window",0,Action,Aktion,0
-field,"ir.action.act_window.view,rec_name",0,Name,Name,0
-field,"ir.action.act_window.view,sequence",0,Sequence,Reihenfolge,0
-field,"ir.action.act_window.view,view",0,View,Sicht,0
-field,"ir.action.keyword,action",0,Action,Aktion,0
-field,"ir.action.keyword,keyword",0,Keyword,Schlüsselwort,0
-field,"ir.action.keyword,model",0,Model,Modell,0
-field,"ir.action.keyword,rec_name",0,Name,Name,0
-field,"ir.action.report,action",0,Action,Aktion,0
-field,"ir.action.report,direct_print",0,Direct Print,Direktdruck,0
-field,"ir.action.report,email",0,Email,E-Mail,0
-field,"ir.action.report,extension",0,Extension,Dokumententyp,0
-field,"ir.action.report,model",0,Model,Modell,0
-field,"ir.action.report,module",0,Module,Modul,0
-field,"ir.action.report,pyson_email",0,PySON Email,PySON E-Mail,0
-field,"ir.action.report,rec_name",0,Name,Name,0
-field,"ir.action.report,report",0,Path,Pfad,0
-field,"ir.action.report,report_content",0,Content,Inhalt,0
-field,"ir.action.report,report_content_data",0,Content,Inhalt,0
-field,"ir.action.report,report_name",0,Internal Name,Interner Name,0
-field,"ir.action.report,style",0,Style,Stil,0
-field,"ir.action.report,style_content",0,Style,Stil,0
-field,"ir.action.url,action",0,Action,Aktion,0
-field,"ir.action.url,rec_name",0,Name,Name,0
-field,"ir.action.url,url",0,Action Url,URL,0
-field,"ir.action.wizard,action",0,Action,Aktion,0
-field,"ir.action.wizard,email",0,Email,E-Mail,0
-field,"ir.action.wizard,model",0,Model,Modell,0
-field,"ir.action.wizard,rec_name",0,Name,Name,0
-field,"ir.action.wizard,window",0,Window,Separates Fenster,0
-field,"ir.action.wizard,wiz_name",0,Wizard name,Wizard Name,0
-field,"ir.action.wizard_size,height",0,Height,Höhe,0
-field,"ir.action.wizard_size,model",0,Model,Modell,0
-field,"ir.action.wizard_size,rec_name",0,Name,Name,0
-field,"ir.action.wizard_size,user",0,User,Benutzer,0
-field,"ir.action.wizard_size,width",0,Width,Breite,0
-field,"ir.action.wizard_size,wizard",0,Wizard,Wizard,0
-field,"ir.attachment,collision",0,Collision,Kollision,0
-field,"ir.attachment,data",0,Data,Daten,0
-field,"ir.attachment,data_size",0,Data size,Größe,0
-field,"ir.attachment,description",0,Description,Beschreibung,0
-field,"ir.attachment,digest",0,Digest,Auszug,0
-field,"ir.attachment,last_modification",0,Last Modification,Letzte Änderung,0
-field,"ir.attachment,last_user",0,Last User,Letzter Benutzer,0
-field,"ir.attachment,link",0,Link,Verknüpfung,0
-field,"ir.attachment,name",0,Name,Name,0
-field,"ir.attachment,rec_name",0,Name,Name,0
-field,"ir.attachment,resource",0,Resource,Ressource,0
-field,"ir.attachment,summary",0,Summary,Zusammenfassung,0
-field,"ir.attachment,type",0,Type,Typ,0
-field,"ir.cache,name",0,Name,Name,0
-field,"ir.cache,rec_name",0,Name,Name,0
-field,"ir.cache,timestamp",0,Timestamp,Zeitstempel,0
-field,"ir.cron,active",0,Active,Aktiv,0
-field,"ir.cron,args",0,Arguments,Argumente,0
-field,"ir.cron,doall",0,Repeat missed,Fehlende wiederholen,0
-field,"ir.cron,function",0,Function,Funktion,0
-field,"ir.cron,interval_number",0,Interval Number,Intervallanzahl,0
-field,"ir.cron,interval_type",0,Interval Unit,Intervalleinheit,0
-field,"ir.cron,model",0,Model,Modell,0
-field,"ir.cron,name",0,Name,Name,0
-field,"ir.cron,nextcall",0,Next call date,Nächster Aufruf,0
-field,"ir.cron,numbercall",0,Number of calls,Anzahl Aufrufe,0
-field,"ir.cron,priority",0,Priority,Priorität,0
-field,"ir.cron,rec_name",0,Name,Name,0
-field,"ir.cron,request_user",0,Request User,Fehlermeldung an,0
-field,"ir.cron,running",0,Running,Wird zur Zeit ausgeführt,0
-field,"ir.cron,user",0,Execution User,Benutzer,0
-field,"ir.export,export_fields",0,Fields,Export ID,0
-field,"ir.export,name",0,Name,Name Export,0
-field,"ir.export,rec_name",0,Name,Name,0
-field,"ir.export,resource",0,Resource,Ressource,0
-field,"ir.export.line,export",0,Export,Export,0
-field,"ir.export.line,name",0,Name,Feldname,0
-field,"ir.export.line,rec_name",0,Name,Name,0
-field,"ir.lang,active",0,Active,Aktiv,0
-field,"ir.lang,code",0,Code,Code,0
-field,"ir.lang,date",0,Date,Datum,0
-field,"ir.lang,decimal_point",0,Decimal Separator,Dezimalpunkt,0
-field,"ir.lang,direction",0,Direction,Richtung,0
-field,"ir.lang,grouping",0,Grouping,Gruppierung,0
-field,"ir.lang,name",0,Name,Name,0
-field,"ir.lang,rec_name",0,Name,Name,0
-field,"ir.lang,thousands_sep",0,Thousands Separator,Tausendertrennzeichen,0
-field,"ir.lang,translatable",0,Translatable,Ãœbersetzbar,0
-field,"ir.model,fields",0,Fields,Felder,0
-field,"ir.model,info",0,Information,Information,0
-field,"ir.model,model",0,Model Name,Modellname,0
-field,"ir.model,module",0,Module,Modul,0
-field,"ir.model,name",0,Model Description,Modell Beschreibung,0
-field,"ir.model,rec_name",0,Name,Name,0
-field,"ir.model.access,description",0,Description,Beschreibung,0
-field,"ir.model.access,group",0,Group,Gruppe,0
-field,"ir.model.access,model",0,Model,Modell,0
-field,"ir.model.access,perm_create",0,Create Access,Erstellen,0
-field,"ir.model.access,perm_delete",0,Delete Access,Löschen,0
-field,"ir.model.access,perm_read",0,Read Access,Lesen,0
-field,"ir.model.access,perm_write",0,Write Access,Schreiben,0
-field,"ir.model.access,rec_name",0,Name,Name,0
-field,"ir.model.data,date_init",0,Init Date,Initialdatum,0
-field,"ir.model.data,date_update",0,Update Date,Aktualisierungsdatum,0
-field,"ir.model.data,db_id",0,Resource ID,ID Ressource,0
-field,"ir.model.data,fs_id",0,Identifier on File System,Identifikator im Dateisystem,0
-field,"ir.model.data,inherit",0,Inherit,Vererbung,0
-field,"ir.model.data,model",0,Model,Modell,0
-field,"ir.model.data,module",0,Module,Modul,0
-field,"ir.model.data,noupdate",0,No Update,Ohne Update,0
-field,"ir.model.data,rec_name",0,Name,Name,0
-field,"ir.model.data,values",0,Values,Werte,0
-field,"ir.model.field,field_description",0,Field Description,Beschreibung,0
-field,"ir.model.field,groups",0,Groups,Gruppen,0
-field,"ir.model.field,help",0,Help,Hilfe,0
-field,"ir.model.field,model",0,Model,Modell,0
-field,"ir.model.field,module",0,Module,Modul,0
-field,"ir.model.field,name",0,Name,Name,0
-field,"ir.model.field,rec_name",0,Name,Name,0
-field,"ir.model.field,relation",0,Model Relation,Beziehung Modell,0
-field,"ir.model.field,ttype",0,Field Type,Feldtyp,0
-field,"ir.model.field.access,description",0,Description,Beschreibung,0
-field,"ir.model.field.access,field",0,Field,Feld,0
-field,"ir.model.field.access,group",0,Group,Gruppe,0
-field,"ir.model.field.access,perm_read",0,Read Access,Lesen,0
-field,"ir.model.field.access,perm_write",0,Write Access,Schreiben,0
-field,"ir.model.field.access,rec_name",0,Name,Name,0
-field,"ir.model.print_model_graph.init,filter",0,Filter,Filter,0
-field,"ir.model.print_model_graph.init,level",0,Level,Ebene,0
-field,"ir.module.module,author",0,Author,Autor,0
-field,"ir.module.module,dependencies",0,Dependencies,Abhängigkeiten,0
-field,"ir.module.module,description",0,Description,Beschreibung,0
-field,"ir.module.module,name",0,Name,Name,0
-field,"ir.module.module,rec_name",0,Name,Name,0
-field,"ir.module.module,shortdesc",0,Short description,Kurzbeschreibung,0
-field,"ir.module.module,state",0,State,Status,0
-field,"ir.module.module,version",0,Version,Version,0
-field,"ir.module.module,website",0,Website,Website,0
-field,"ir.module.module.config_wizard.item,name",0,Name,Name,0
-field,"ir.module.module.config_wizard.item,rec_name",0,Name,Name,0
-field,"ir.module.module.config_wizard.item,sequence",0,Sequence,Reihenfolge,0
-field,"ir.module.module.config_wizard.item,state",0,State,Status,0
-field,"ir.module.module.dependency,module",0,Module,Modul,0
-field,"ir.module.module.dependency,name",0,Name,Name,0
-field,"ir.module.module.dependency,rec_name",0,Name,Name,0
-field,"ir.module.module.dependency,state",0,State,Status,0
-field,"ir.module.module.install_upgrade.init,module_info",0,Modules to update,Zu aktualisierende Module,0
-field,"ir.property,field",0,Field,Feld,0
-field,"ir.property,name",0,Name,Name,0
-field,"ir.property,rec_name",0,Name,Name,0
-field,"ir.property,res",0,Resource,Ressource,0
-field,"ir.property,value",0,Value,Wert,0
-field,"ir.rule,field",0,Field,Feld,0
-field,"ir.rule,operand",0,Operand,Operand,0
-field,"ir.rule,operator",0,Operator,Operator,0
-field,"ir.rule,rec_name",0,Name,Name,0
-field,"ir.rule,rule_group",0,Group,Gruppe,0
-field,"ir.rule.group,default_p",0,Default,Standard,0
-field,"ir.rule.group,global_p",0,Global,Global,0
-field,"ir.rule.group,groups",0,Groups,Gruppen,0
-field,"ir.rule.group,model",0,Model,Modell,0
-field,"ir.rule.group,name",0,Name,Name,0
-field,"ir.rule.group,perm_create",0,Create Access,Erstellen,0
-field,"ir.rule.group,perm_delete",0,Delete Access,Löschen,0
-field,"ir.rule.group,perm_read",0,Read Access,Lesen,0
-field,"ir.rule.group,perm_write",0,Write Access,Schreiben,0
-field,"ir.rule.group,rec_name",0,Name,Name,0
-field,"ir.rule.group,rules",0,Tests,Tests,0
-field,"ir.rule.group,users",0,Users,Benutzer,0
-field,"ir.sequence,active",0,Active,Aktiv,0
-field,"ir.sequence,code",0,Sequence Code,Code Nummernkreis,0
-field,"ir.sequence,last_timestamp",0,Last Timestamp,Letzter Zeitstempel,0
-field,"ir.sequence,name",0,Sequence Name,Name Nummernkreis,0
-field,"ir.sequence,number_increment",0,Increment Number,Schrittweite,0
-field,"ir.sequence,number_next",0,Next Number,Nächste Nummer,0
-field,"ir.sequence,padding",0,Number padding,Feste Länge (Vornullen),0
-field,"ir.sequence,prefix",0,Prefix,Präfix,0
-field,"ir.sequence,rec_name",0,Name,Name,0
-field,"ir.sequence,suffix",0,Suffix,Suffix,0
-field,"ir.sequence,timestamp_offset",0,Timestamp Offset,Zeitstempel Versatz,0
-field,"ir.sequence,timestamp_rounding",0,Timestamp Rounding,Zeitstempel Rundung,0
-field,"ir.sequence,type",0,Type,Typ,0
-field,"ir.sequence.strict,active",0,Active,Aktiv,0
-field,"ir.sequence.strict,code",0,Sequence Code,Code Nummernkreis,0
-field,"ir.sequence.strict,last_timestamp",0,Last Timestamp,Letzter Zeitstempel,0
-field,"ir.sequence.strict,name",0,Sequence Name,Name Nummernkreis,0
-field,"ir.sequence.strict,number_increment",0,Increment Number,Schrittweite,0
-field,"ir.sequence.strict,number_next",0,Next Number,Nächste Zahl,0
-field,"ir.sequence.strict,padding",0,Number padding,Feste Länge (Vornullen),0
-field,"ir.sequence.strict,prefix",0,Prefix,Präfix,0
-field,"ir.sequence.strict,rec_name",0,Name,Name,0
-field,"ir.sequence.strict,suffix",0,Suffix,Suffix,0
-field,"ir.sequence.strict,timestamp_offset",0,Timestamp Offset,Zeitstempel Versatz,0
-field,"ir.sequence.strict,timestamp_rounding",0,Timestamp Rounding,Zeitstempel Rundung,0
-field,"ir.sequence.strict,type",0,Type,Typ,0
-field,"ir.sequence.type,code",0,Sequence Code,Code Nummernkreis,0
-field,"ir.sequence.type,name",0,Sequence Name,Name Nummernkreis,0
-field,"ir.sequence.type,rec_name",0,Name,Name,0
-field,"ir.translation,fuzzy",0,Fuzzy,Fuzzy,0
-field,"ir.translation,lang",0,Language,Sprache,0
-field,"ir.translation,model",0,Model,Modell,0
-field,"ir.translation,module",0,Module,Modul,0
-field,"ir.translation,name",0,Field Name,Feldname,0
-field,"ir.translation,rec_name",0,Name,Name,0
-field,"ir.translation,res_id",0,Resource ID,ID Ressource,0
-field,"ir.translation,src",0,Source,Quelle,0
-field,"ir.translation,src_md5",0,Source MD5,MD5 Quelle,0
-field,"ir.translation,type",0,Type,Typ,0
-field,"ir.translation,value",0,Translation Value,Ãœbersetzung,0
-field,"ir.translation.export.init,lang",0,Language,Sprache,0
-field,"ir.translation.export.init,module",0,Module,Modul,0
-field,"ir.translation.export.start,file",0,File,Datei,0
-field,"ir.translation.update.init,lang",0,Language,Sprache,0
-field,"ir.trigger,action_function",0,Action Function,Aktion Funktion,0
-field,"ir.trigger,action_model",0,Action Model,Aktion Modell,0
-field,"ir.trigger,active",0,Active,Aktiv,0
-field,"ir.trigger,condition",0,Condition,Bedingung,0
-field,"ir.trigger,limit_number",0,Limit Number,Limit Durchläufe,0
-field,"ir.trigger,minimum_delay",0,Minimum Delay,Minimale Verzögerung,0
-field,"ir.trigger,model",0,Model,Modell,0
-field,"ir.trigger,name",0,Name,Name,0
-field,"ir.trigger,on_create",0,On Create,Bei der Erstellung,0
-field,"ir.trigger,on_delete",0,On Delete,Beim Löschen,0
-field,"ir.trigger,on_time",0,On Time,Zeitgesteuert,0
-field,"ir.trigger,on_write",0,On Write,Beim Schreiben,0
-field,"ir.trigger,rec_name",0,Name,Name,0
-field,"ir.trigger.log,rec_name",0,Name,Name,0
-field,"ir.trigger.log,record_id",0,Record ID,Datensatz ID,0
-field,"ir.trigger.log,trigger",0,Trigger,Trigger,0
-field,"ir.ui.icon,icon",0,Icon,Symbol,0
-field,"ir.ui.icon,module",0,Module,Modul,0
-field,"ir.ui.icon,name",0,Name,Name,0
-field,"ir.ui.icon,path",0,SVG Path,Pfad SVG,0
-field,"ir.ui.icon,rec_name",0,Name,Name,0
-field,"ir.ui.icon,sequence",0,Sequence,Reihenfolge,0
-field,"ir.ui.menu,action",0,Action,Aktion,0
-field,"ir.ui.menu,active",0,Active,Aktiv,0
-field,"ir.ui.menu,childs",0,Children,Untergeordnet (Menüs),0
-field,"ir.ui.menu,complete_name",0,Complete Name,Vollständiger Name,0
-field,"ir.ui.menu,groups",0,Groups,Gruppen,0
-field,"ir.ui.menu,icon",0,Icon,Icon,0
-field,"ir.ui.menu,name",0,Menu,Menü,0
-field,"ir.ui.menu,parent",0,Parent Menu,Übergeordnet (Menü),0
-field,"ir.ui.menu,rec_name",0,Name,Name,0
-field,"ir.ui.menu,sequence",0,Sequence,Reihenfolge,0
-field,"ir.ui.view,arch",0,View Architecture,Architektur Sicht,0
-field,"ir.ui.view,domain",0,Domain,Wertebereich (Domain),0
-field,"ir.ui.view,field_childs",0,Children Field,Untergeordnetes Feld,0
-field,"ir.ui.view,inherit",0,Inherited View,Vererbte Sicht,0
-field,"ir.ui.view,model",0,Model,Modell,0
-field,"ir.ui.view,module",0,Module,Modul,0
-field,"ir.ui.view,priority",0,Priority,Priorität,0
-field,"ir.ui.view,rec_name",0,Name,Name,0
-field,"ir.ui.view,type",0,View Type,Sichtentyp,0
-field,"ir.ui.view_sc,name",0,Shortcut Name,Name,0
-field,"ir.ui.view_sc,rec_name",0,Name,Name,0
-field,"ir.ui.view_sc,res_id",0,Resource Ref.,Ref. Ressource,0
-field,"ir.ui.view_sc,resource",0,Resource Name,Name Ressource,0
-field,"ir.ui.view_sc,sequence",0,Sequence,Reihenfolge,0
-field,"ir.ui.view_sc,user_id",0,User Ref.,Ref. Benutzer,0
-field,"ir.ui.view_tree_width,field",0,Field,Feld,0
-field,"ir.ui.view_tree_width,model",0,Model,Modell,0
-field,"ir.ui.view_tree_width,rec_name",0,Name,Name,0
-field,"ir.ui.view_tree_width,user",0,User,Benutzer,0
-field,"ir.ui.view_tree_width,width",0,Width,Breite,0
-help,"ir.action.act_window,auto_refresh",0,Add an auto-refresh on the view,Die Sicht wird automatisch aufgefrischt,0
-help,"ir.action.act_window,limit",0,Default limit for the list view,Standardobergrenze für die Listenanscht,0
-help,"ir.action.act_window,search_value",0,Default search criteria for the list view,Standardsuchwerte in der Listenansicht,0
-help,"ir.action.act_window,window_name",0,Use the action name as window name,Aktionsname als Fenstername benutzen,0
-help,"ir.action.report,style",0,Define the style to apply on the report.,Definiert den Stil für den Bericht,0
-help,"ir.action.wizard,window",0,Run wizard in a new window,Wizard in separatem Fenster ausführen,0
-help,"ir.cron,numbercall",0,"Number of times the function is called,
-a negative number indicates that the function will always be called","Anzahl der Funktionsaufrufe
-(eine negative Zahl bewirkt, dass die Funktion immer aufgerufen wird)",0
-help,"ir.cron,priority",0,"0=Very Urgent
-10=Not urgent","0=Sehr dringend
-10=Nicht dringend",0
-help,"ir.cron,request_user",0,The user who will receive requests in case of failure,"Der Benutzer, der bei Fehlern Anfragen erhält",0
-help,"ir.cron,user",0,The user used to execute this action,"Der Benutzer, der diese Aktion ausführt",0
-help,"ir.lang,code",0,RFC 4646 tag: http://tools.ietf.org/html/rfc4646,RFC 4646 tag: http://tools.ietf.org/html/rfc4646,0
-help,"ir.model,module",0,Module in which this model is defined,"Modul, in dem dieses Modell definiert ist",0
-help,"ir.model.data,db_id",0,The id of the record in the database.,Die ID des Datensatzes in der Datenbank,0
-help,"ir.model.data,fs_id",0,The id of the record as known on the file system.,Die ID des Datensatzes wie im Dateisystem bekannt,0
-help,"ir.model.field,module",0,Module in which this field is defined,"Modul, in dem dieses Feld definiert ist",0
-help,"ir.model.print_model_graph.init,filter",0,Entering a Python Regular Expression will exclude matching models from the graph.,"Ein Regulärer Ausdruck (Python Regular Expression) in diesem Feld wird übereinstimmende
-Modelle von der Darstellung ausschließen.",0
-help,"ir.rule.group,default_p",0,Add this rule to all users by default,Diese Regel als Standardregel für alle Benutzer festlegen,0
-help,"ir.rule.group,global_p",0,"Make the rule global 
-so every users must follow this rule","Regel global setzen
-(Regel gilt für jeden Benutzer)",0
-help,"ir.rule.group,rules",0,The rule is satisfied if at least one test is True,"Die Regel wird gültig bewertet, wenn wenigstens ein Test positiv ist (True)",0
-help,"ir.trigger,condition",0,"A Python statement evaluated with record represented by ""self""
-It triggers the action if true.","Ein Python Ausdruck, der mit dem Datensatz (repräsentiert durch ""self"") ausgewertet wird.
-Die Aktion wird getriggert, wenn der Ausdruck Wahr ist (zutrifft).",0
-help,"ir.trigger,limit_number",0,"Limit the number of call to ""Action Function"" by records.
-0 for no limit.","Begrenzung der Anzahl von Aufrufen von ""Aktion Funktion"" durch Datensätze.
-0 bedeutet kein Limit.",0
-help,"ir.trigger,minimum_delay",0,"Set a minimum delay in minutes between call to ""Action Function"" for the same record.
-0 for no delay.","Minimale Verzögerung in Minuten zwischen Aufrufen von ""Aktion Funktion"" für den selben Datensatz.
-0 bedeutet keine Verzögerung.",0
-model,"ir.action,name",0,Action,Aktion,0
-model,"ir.action,name",act_action_act_window_form,Window Actions,Fensteraktionen,0
-model,"ir.action,name",act_action_form,Actions,Aktionen,0
-model,"ir.action,name",act_action_report_form,Reports,Berichte,0
-model,"ir.action,name",act_action_url_form,URLs,URLs,0
-model,"ir.action,name",act_action_wizard_form,Wizards,Wizards,0
-model,"ir.action,name",act_action_wizard_size_form,Wizard Sizes,Wizardmaße,0
-model,"ir.action,name",act_attachment_form,Attachments,Anhänge,0
-model,"ir.action,name",act_config_wizard_item_form,Config Wizard Items,Wizardelemente konfigurieren,0
-model,"ir.action,name",act_cron_form,Scheduled Actions,Geplante Aktionen,0
-model,"ir.action,name",act_export_form,Exports,Exporte,0
-model,"ir.action,name",act_icon_form,Icons,Symbole,0
-model,"ir.action,name",act_lang_form,Languages,Sprachen,0
-model,"ir.action,name",act_menu_tree,Menu,Menü,0
-model,"ir.action,name",act_model_access_form,Models Access,Berechtigungen für Modelle,0
-model,"ir.action,name",act_model_field_access_form,Fields Access,Zugriffsberechtigung Feld,0
-model,"ir.action,name",act_model_fields_form,Fields,Felder,0
-model,"ir.action,name",act_model_form,Models,Modelle,0
-model,"ir.action,name",act_module_config_wizard,Module Configuration,Modulkonfiguration,0
-model,"ir.action,name",act_module_form,Modules,Module,0
-model,"ir.action,name",act_module_install_upgrade,Perform Pending Installation/Upgrade,Vorgemerkte Installationen / Aktualisierungen durchführen,0
-model,"ir.action,name",act_property_form,Properties,Eigenschaften,0
-model,"ir.action,name",act_property_form_default,Default Properties,Standardeigenschaften,0
-model,"ir.action,name",act_rule_group_form,Record Rules,Datensatzregeln,0
-model,"ir.action,name",act_sequence_form,Sequences,Nummernkreise,0
-model,"ir.action,name",act_sequence_strict_form,Sequences Strict,Strikte Nummernkreise,0
-model,"ir.action,name",act_sequence_type_form,Sequence Types,Typen Nummernkreise,0
-model,"ir.action,name",act_translation_clean,Clean Translations,Ãœbersetzungen bereinigen,0
-model,"ir.action,name",act_translation_export,Export Translations,Ãœbersetzungen exportieren,0
-model,"ir.action,name",act_translation_form,Translations,Ãœbersetzungen,0
-model,"ir.action,name",act_translation_set_report,Set Report Translations,Übersetzungen für Berichte aktualisieren,0
-model,"ir.action,name",act_translation_update,Synchronize Translations,Ãœbersetzungen aktualisieren,0
-model,"ir.action,name",act_trigger_form,Triggers,Trigger,0
-model,"ir.action,name",act_view_form,Views,Sichten,0
-model,"ir.action,name",act_view_sc_add,Add Shortcut,Favorit Hinzufügen,0
-model,"ir.action,name",act_view_sc_form,View Shortcuts,Favoriten,0
-model,"ir.action,name",act_view_sc_open,Open Shortcut,Favorit Öffnen,0
-model,"ir.action,name",act_view_tree_width_form,View Tree Width,Spaltenbreiten Sicht,0
-model,"ir.action,name",print_model_graph,Graph,Graphik,0
-model,"ir.action,name",report_model_graph,Graph,Graphik,0
-model,"ir.action.act_window,name",0,Action act window,Aktion aktives Fenster,0
-model,"ir.action.act_window.view,name",0,Action act window view,Aktion aktives Fenster Sicht,0
-model,"ir.action.keyword,name",0,Action keyword,Aktion Schlüsselwort,0
-model,"ir.action.report,name",0,Action report,Aktion Bericht,0
-model,"ir.action.url,name",0,Action URL,Aktion URL,0
-model,"ir.action.wizard,name",0,Action wizard,Aktion Wizard,0
-model,"ir.action.wizard_size,name",0,Action Wizard Size,Aktion Wizardmaß,0
-model,"ir.attachment,name",0,Attachment,Anhang,0
-model,"ir.cache,name",0,Cache,Cache,0
-model,"ir.cron,name",0,Cron,Cron,0
-model,"ir.date,name",0,Date,Datum,0
-model,"ir.export,name",0,Export,Export,0
-model,"ir.export.line,name",0,Export line,Export Zeile,0
-model,"ir.lang,name",0,Language,Sprache,0
-model,"ir.lang,name",lang_bg,Bulgarian,Bulgarisch,0
-model,"ir.lang,name",lang_cs,,,0
-model,"ir.lang,name",lang_cs,Czech,Tschechisch,0
-model,"ir.lang,name",lang_de,,,0
-model,"ir.lang,name",lang_de,German,Deutsch,0
-model,"ir.lang,name",lang_en,English,Englisch,0
-model,"ir.lang,name",lang_es,,,0
-model,"ir.lang,name",lang_es,Spanish (Spain),Spanisch (Spanien),0
-model,"ir.lang,name",lang_es_CO,,,0
-model,"ir.lang,name",lang_es_CO,Spanish (Colombia),Spanisch (Kolumbien),0
-model,"ir.lang,name",lang_fr,,,0
-model,"ir.lang,name",lang_fr,French,Französisch,0
-model,"ir.lang,name",lang_nl,Dutch,Niederländisch,0
-model,"ir.lang,name",lang_ru,Russian,Russisch,0
-model,"ir.model,name",0,Model,Modell,0
-model,"ir.model.access,name",0,Model access,Modell Zugriff,0
-model,"ir.model.data,name",0,Model data,Modell Daten,0
-model,"ir.model.field,name",0,Model field,Modell Feld,0
-model,"ir.model.field.access,name",0,Model Field Access,Modell Feld Zugriffsberechtigung,0
-model,"ir.model.print_model_graph.init,name",0,Print Model Graph Init,Druck Modell Graph,0
-model,"ir.module.module,name",0,Module,Module,0
-model,"ir.module.module.config_wizard.first,name",0,Module Config Wizard First,Konfigurationswizard Module Erster,0
-model,"ir.module.module.config_wizard.item,name",0,Config wizard to run after installing module,Konfigurationswizard nach Modulinstallation,0
-model,"ir.module.module.dependency,name",0,Module dependency,Modulabhängigkeit,0
-model,"ir.module.module.install_upgrade.init,name",0,Module Install Upgrade Init,Module Installation Aktualisierung Init,0
-model,"ir.module.module.install_upgrade.start,name",0,Module Install Upgrade Start,Module Installation Aktualisierung Start,0
-model,"ir.property,name",0,Property,Eigenschaft,0
-model,"ir.rule,name",0,Rule,Regel,0
-model,"ir.rule.group,name",0,Rule group,Regel Gruppe,0
-model,"ir.sequence,name",0,Sequence,Nummernkreis,0
-model,"ir.sequence.strict,name",0,Sequence Strict,Strikter Nummernkreis,0
-model,"ir.sequence.type,name",0,Sequence type,Typ Nummernkreis,0
-model,"ir.translation,name",0,Translation,Ãœbersetzung,0
-model,"ir.translation.clean.init,name",0,Clean translation init,Übersetzung Säuberung Init,0
-model,"ir.translation.clean.start,name",0,Clean translation start,Übersetzung Säuberung Start,0
-model,"ir.translation.export.init,name",0,Export translation - language and module,Export Ãœbersetzung Init,0
-model,"ir.translation.export.start,name",0,Export translation - file,Export Ãœbersetzung Start,0
-model,"ir.translation.set_report.init,name",0,Update Report Translation,Aktualisierung Ãœbersetzung Bericht,0
-model,"ir.translation.set_report.start,name",0,Update Report Translation,Aktualisierung Ãœbersetzung Bericht,0
-model,"ir.translation.update.init,name",0,Update translation - language,Aktualisierung Ãœbersetzung Init,0
-model,"ir.trigger,name",0,Trigger,Trigger,0
-model,"ir.trigger.log,name",0,Trigger Log,Trigger Protokoll,0
-model,"ir.ui.icon,name",0,Icon,Symbol,0
-model,"ir.ui.menu,name",0,UI menu,Programmoberfläche Menü,0
-model,"ir.ui.menu,name",menu_act_action,Actions,Aktionen,0
-model,"ir.ui.menu,name",menu_action,Actions,Aktionen,0
-model,"ir.ui.menu,name",menu_action_act_window,Window Actions,Fensteraktionen,0
-model,"ir.ui.menu,name",menu_action_report_form,Reports,Berichte,0
-model,"ir.ui.menu,name",menu_action_url,URLs,URLs,0
-model,"ir.ui.menu,name",menu_action_wizard,Wizards,Wizards,0
-model,"ir.ui.menu,name",menu_action_wizard_size,Wizard Sizes,Wizardmaße,0
-model,"ir.ui.menu,name",menu_administration,Administration,Systemverwaltung,0
-model,"ir.ui.menu,name",menu_attachment_form,Attachments,Anhänge,0
-model,"ir.ui.menu,name",menu_config_wizard_item_form,Config Wizard Items,Wizardelemente konfigurieren,0
-model,"ir.ui.menu,name",menu_cron_form,Scheduled Actions,Geplante Aktionen,0
-model,"ir.ui.menu,name",menu_export_form,Exports,Exporte,0
-model,"ir.ui.menu,name",menu_icon_form,Icons,Symbole,0
-model,"ir.ui.menu,name",menu_ir_sequence_type,Sequence Types,Typen Nummernkreise,0
-model,"ir.ui.menu,name",menu_lang_form,Languages,Sprachen,0
-model,"ir.ui.menu,name",menu_localization,Localization,Lokalisierung,0
-model,"ir.ui.menu,name",menu_menu_tree,Menu,Menü,0
-model,"ir.ui.menu,name",menu_model_access_form,Models Access,Berechtigungen für Modelle,0
-model,"ir.ui.menu,name",menu_model_field_access_form,Fields Access,Zugriffsberechtigungen Felder,0
-model,"ir.ui.menu,name",menu_model_form,Models,Modelle,0
-model,"ir.ui.menu,name",menu_models,Models,Modelle,0
-model,"ir.ui.menu,name",menu_module_form,Modules,Module,0
-model,"ir.ui.menu,name",menu_module_install_upgrade,Perform Pending Installation/Upgrade,Vorgemerkte Installationen / Aktualisierungen durchführen,0
-model,"ir.ui.menu,name",menu_modules,Modules,Module,0
-model,"ir.ui.menu,name",menu_property_form,Properties,Eigenschaften,0
-model,"ir.ui.menu,name",menu_property_form_default,Default Properties,Standardeigenschaften,0
-model,"ir.ui.menu,name",menu_rule_group_form,Record Rules,Datensatzregeln,0
-model,"ir.ui.menu,name",menu_scheduler,Scheduler,Zeitplaner,0
-model,"ir.ui.menu,name",menu_sequence_form,Sequences,Nummernkreise,0
-model,"ir.ui.menu,name",menu_sequence_strict_form,Sequences Strict,Strikte Nummernkreise,0
-model,"ir.ui.menu,name",menu_sequences,Sequences,Nummernkreise,0
-model,"ir.ui.menu,name",menu_translation_clean,Clean Translations,Ãœbersetzungen bereinigen,0
-model,"ir.ui.menu,name",menu_translation_export,Export Translations,Ãœbersetzungen exportieren,0
-model,"ir.ui.menu,name",menu_translation_form,Translations,Ãœbersetzungen,0
-model,"ir.ui.menu,name",menu_translation_set_report,Set Report Translations,Übersetzungen für Berichte aktualisieren,0
-model,"ir.ui.menu,name",menu_translation_update,Synchronize Translations,Ãœbersetzungen aktualisieren,0
-model,"ir.ui.menu,name",menu_trigger_form,Triggers,Trigger,0
-model,"ir.ui.menu,name",menu_ui,User Interface,Programmoberfläche,0
-model,"ir.ui.menu,name",menu_view,Views,Sichten,0
-model,"ir.ui.menu,name",menu_view_sc,View Shortcuts,Favoriten,0
-model,"ir.ui.menu,name",menu_view_tree_width,View Tree Width,Spaltenbreiten,0
-model,"ir.ui.menu,name",model_model_fields_form,Fields,Felder,0
-model,"ir.ui.view,name",0,View,Sicht,0
-model,"ir.ui.view_sc,name",0,View shortcut,Favoriten,0
-model,"ir.ui.view_tree_width,name",0,View Tree Width,Spaltenbreiten Sicht,0
-selection,"ir.action.keyword,keyword",0,Action form,Formularaktion,0
-selection,"ir.action.keyword,keyword",0,Action tree,Baumaktion,0
-selection,"ir.action.keyword,keyword",0,Form relate,Bezugsformular,0
-selection,"ir.action.keyword,keyword",0,Open Graph,Graph öffnen,0
-selection,"ir.action.keyword,keyword",0,Open tree,Baum öffnen,0
-selection,"ir.action.keyword,keyword",0,Print form,Formular drucken,0
-selection,"ir.action.report,extension",0,ODT Document,ODT Dokument,0
-selection,"ir.action.report,extension",0,PDF Document,PDF Dokument,0
-selection,"ir.attachment,type",0,Data,Daten,0
-selection,"ir.attachment,type",0,Link,Verknüpfung,0
-selection,"ir.cron,interval_type",0,Days,Tag(e),0
-selection,"ir.cron,interval_type",0,Hours,Stunde(n),0
-selection,"ir.cron,interval_type",0,Minutes,Minute(n),0
-selection,"ir.cron,interval_type",0,Months,Monat(e),0
-selection,"ir.cron,interval_type",0,Weeks,Woche(n),0
-selection,"ir.cron,interval_type",0,Work Days,Arbeitstag(e),0
-selection,"ir.lang,direction",0,Left-to-right,Links-nach-Rechts,0
-selection,"ir.lang,direction",0,Right-to-left,Rechts-nach-Links,0
-selection,"ir.module.module,state",0,Installed,Installiert,0
-selection,"ir.module.module,state",0,Not Installed,Nicht installiert,0
-selection,"ir.module.module,state",0,To be installed,Für die Installation vorgemerkt,0
-selection,"ir.module.module,state",0,To be removed,Für die Entfernung vorgemerkt,0
-selection,"ir.module.module,state",0,To be upgraded,Für die Aktualisierung vorgemerkt,0
-selection,"ir.module.module.config_wizard.item,state",0,Done,Erledigt,0
-selection,"ir.module.module.config_wizard.item,state",0,Open,Offen,0
-selection,"ir.module.module.dependency,state",0,Installed,Installiert,0
-selection,"ir.module.module.dependency,state",0,Not Installed,Nicht installiert,0
-selection,"ir.module.module.dependency,state",0,To be installed,Für die Installation vorgemerkt,0
-selection,"ir.module.module.dependency,state",0,To be removed,Für die Entfernung vorgemerkt,0
-selection,"ir.module.module.dependency,state",0,To be upgraded,Für die Aktualisierung vorgemerkt,0
-selection,"ir.module.module.dependency,state",0,Unknown,Unbekannt,0
-selection,"ir.rule,operator",0,<=,<=,0
-selection,"ir.rule,operator",0,<>,<>,0
-selection,"ir.rule,operator",0,=,=,0
-selection,"ir.rule,operator",0,>=,>=,0
-selection,"ir.rule,operator",0,child_of,untergeordnet von,0
-selection,"ir.rule,operator",0,in,in,0
-selection,"ir.sequence,type",0,Decimal Timestamp,Zeitstempel Dezimal,0
-selection,"ir.sequence,type",0,Hexadecimal Timestamp,Zeitstempel Hexadezimal,0
-selection,"ir.sequence,type",0,Incremental,Inkrementell,0
-selection,"ir.sequence.strict,type",0,Decimal Timestamp,Zeitstempel Dezimal,0
-selection,"ir.sequence.strict,type",0,Hexadecimal Timestamp,Zeitstempel Hexadezimal,0
-selection,"ir.sequence.strict,type",0,Incremental,Inkrementell,0
-selection,"ir.translation,type",0,Error,Fehler,0
-selection,"ir.translation,type",0,Field,Feld,0
-selection,"ir.translation,type",0,Help,Hilfe,0
-selection,"ir.translation,type",0,Model,Modell,0
-selection,"ir.translation,type",0,ODT,ODT,0
-selection,"ir.translation,type",0,Selection,Auswahl,0
-selection,"ir.translation,type",0,View,Sicht,0
-selection,"ir.translation,type",0,Wizard Button,Wizardknopf,0
-selection,"ir.ui.menu,action",0,ir.action.act_window,ir.action.act_window,0
-selection,"ir.ui.menu,action",0,ir.action.report,ir.action.report,0
-selection,"ir.ui.menu,action",0,ir.action.url,ir.action.url,0
-selection,"ir.ui.menu,action",0,ir.action.wizard,ir.action.wizard,0
-selection,"ir.ui.menu,icon",0,tryton-accessories,tryton-accessories,0
-selection,"ir.ui.menu,icon",0,tryton-attachment,tryton-attachment,0
-selection,"ir.ui.menu,icon",0,tryton-calculator,tryton-calculator,0
-selection,"ir.ui.menu,icon",0,tryton-calendar,tryton-calendar,0
-selection,"ir.ui.menu,icon",0,tryton-clear,tryton-clear,0
-selection,"ir.ui.menu,icon",0,tryton-clock,tryton-clock,0
-selection,"ir.ui.menu,icon",0,tryton-close,tryton-close,0
-selection,"ir.ui.menu,icon",0,tryton-connect,tryton-connect,0
-selection,"ir.ui.menu,icon",0,tryton-copy,tryton-copy,0
-selection,"ir.ui.menu,icon",0,tryton-currency,tryton-currency,0
-selection,"ir.ui.menu,icon",0,tryton-delete,tryton-delete,0
-selection,"ir.ui.menu,icon",0,tryton-development,tryton-development,0
-selection,"ir.ui.menu,icon",0,tryton-dialog-error,tryton-dialog-error,0
-selection,"ir.ui.menu,icon",0,tryton-dialog-information,tryton-dialog-information,0
-selection,"ir.ui.menu,icon",0,tryton-dialog-warning,tryton-dialog-warning,0
-selection,"ir.ui.menu,icon",0,tryton-disconnect,tryton-disconnect,0
-selection,"ir.ui.menu,icon",0,tryton-executable,tryton-executable,0
-selection,"ir.ui.menu,icon",0,tryton-find,tryton-find,0
-selection,"ir.ui.menu,icon",0,tryton-find-replace,tryton-find-replace,0
-selection,"ir.ui.menu,icon",0,tryton-folder-new,tryton-folder-new,0
-selection,"ir.ui.menu,icon",0,tryton-folder-saved-search,tryton-folder-saved-search,0
-selection,"ir.ui.menu,icon",0,tryton-fullscreen,tryton-fullscreen,0
-selection,"ir.ui.menu,icon",0,tryton-go-home,tryton-go-home,0
-selection,"ir.ui.menu,icon",0,tryton-go-jump,tryton-go-jump,0
-selection,"ir.ui.menu,icon",0,tryton-go-next,tryton-go-next,0
-selection,"ir.ui.menu,icon",0,tryton-go-previous,tryton-go-previous,0
-selection,"ir.ui.menu,icon",0,tryton-graph,tryton-graph,0
-selection,"ir.ui.menu,icon",0,tryton-help,tryton-help,0
-selection,"ir.ui.menu,icon",0,tryton-image-missing,tryton-image-missing,0
-selection,"ir.ui.menu,icon",0,tryton-information,tryton-information,0
-selection,"ir.ui.menu,icon",0,tryton-list,tryton-list,0
-selection,"ir.ui.menu,icon",0,tryton-list-add,tryton-list-add,0
-selection,"ir.ui.menu,icon",0,tryton-list-remove,tryton-list-remove,0
-selection,"ir.ui.menu,icon",0,tryton-locale,tryton-locale,0
-selection,"ir.ui.menu,icon",0,tryton-lock,tryton-lock,0
-selection,"ir.ui.menu,icon",0,tryton-log-out,tryton-log-out,0
-selection,"ir.ui.menu,icon",0,tryton-mail-message-new,tryton-mail-message-new,0
-selection,"ir.ui.menu,icon",0,tryton-new,tryton-new,0
-selection,"ir.ui.menu,icon",0,tryton-noimage,tryton-noimage,0
-selection,"ir.ui.menu,icon",0,tryton-open,tryton-open,0
-selection,"ir.ui.menu,icon",0,tryton-package,tryton-package,0
-selection,"ir.ui.menu,icon",0,tryton-preferences,tryton-preferences,0
-selection,"ir.ui.menu,icon",0,tryton-preferences-system,tryton-preferences-system,0
-selection,"ir.ui.menu,icon",0,tryton-preferences-system-session,tryton-preferences-system-session,0
-selection,"ir.ui.menu,icon",0,tryton-presentation,tryton-presentation,0
-selection,"ir.ui.menu,icon",0,tryton-print,tryton-print,0
-selection,"ir.ui.menu,icon",0,tryton-readonly,tryton-readonly,0
-selection,"ir.ui.menu,icon",0,tryton-refresh,tryton-refresh,0
-selection,"ir.ui.menu,icon",0,tryton-save,tryton-save,0
-selection,"ir.ui.menu,icon",0,tryton-save-as,tryton-save-as,0
-selection,"ir.ui.menu,icon",0,tryton-spreadsheet,tryton-spreadsheet,0
-selection,"ir.ui.menu,icon",0,tryton-start-here,tryton-start-here,0
-selection,"ir.ui.menu,icon",0,tryton-system,tryton-system,0
-selection,"ir.ui.menu,icon",0,tryton-system-file-manager,tryton-system-file-manager,0
-selection,"ir.ui.menu,icon",0,tryton-tree,tryton-tree,0
-selection,"ir.ui.menu,icon",0,tryton-users,tryton-users,0
-selection,"ir.ui.menu,icon",0,tryton-web-browser,tryton-web-browser,0
-selection,"ir.ui.view,type",0,,,0
-selection,"ir.ui.view,type",0,Board,Infoseite,0
-selection,"ir.ui.view,type",0,Form,Formular,0
-selection,"ir.ui.view,type",0,Graph,Diagramm,0
-selection,"ir.ui.view,type",0,Tree,Baum,0
-view,ir.action,0,Action,Aktion,0
-view,ir.action,0,General,Allgemein,0
-view,ir.action,0,Keyword,Schlüsselwort,0
-view,ir.action,0,Keywords,Schlüsselwörter,0
-view,ir.action.act_window,0,General,Allgemein,0
-view,ir.action.act_window,0,Keyword,Schlüsselwort,0
-view,ir.action.act_window,0,Keywords,Schlüsselwörter,0
-view,ir.action.act_window,0,Open Window,Fenster öffnen,0
-view,ir.action.act_window,0,Open a Window,Ein Fenster öffnen,0
-view,ir.action.act_window,0,Views,Sichten,0
-view,ir.action.report,0,General,Allgemein,0
-view,ir.action.report,0,Keyword,Schlüsselwort,0
-view,ir.action.report,0,Keywords,Schlüsselwörter,0
-view,ir.action.report,0,Report,Bericht,0
-view,ir.action.report,0,Report xml,XML Bericht,0
-view,ir.action.url,0,General,Allgemein,0
-view,ir.action.url,0,Keyword,Schlüsselwort,0
-view,ir.action.url,0,Keywords,Schlüsselwörter,0
-view,ir.action.url,0,URL,URL,0
-view,ir.action.wizard,0,General,Allgemein,0
-view,ir.action.wizard,0,Keyword,Schlüsselwort,0
-view,ir.action.wizard,0,Keywords,Schlüsselwörter,0
-view,ir.action.wizard,0,Wizard,Wizard,0
-view,ir.action.wizard_size,0,Wizard Size,Wizardmaß,0
-view,ir.action.wizard_size,0,Wizard Sizes,Wizardmaße,0
-view,ir.attachment,0,Attachments,Anhänge,0
-view,ir.attachment,0,Preview,Vorschau,0
-view,ir.cron,0,Action to trigger,Auszuführende Aktion,0
-view,ir.cron,0,Scheduled Action,Geplante Aktion,0
-view,ir.cron,0,Scheduled Actions,Geplante Aktionen,0
-view,ir.export,0,Exports,Exporte,0
-view,ir.lang,0,Date Formatting,Format Datum,0
-view,ir.lang,0,Language,Sprache,0
-view,ir.lang,0,Languages,Sprachen,0
-view,ir.lang,0,Numbers Formatting,Zahlenformat,0
-view,ir.model,0,Fields Description,Feld Beschreibung,0
-view,ir.model,0,Model Description,Modell Beschreibung,0
-view,ir.model.access,0,Access controls,Zugriffsberechtigungen,0
-view,ir.model.field,0,Fields,Felder,0
-view,ir.model.field.access,0,Field Access,Zugriffsberechtigung Felder,0
-view,ir.model.print_model_graph.init,0,Print Model Graph,Modellschaubild drucken,0
-view,ir.module.module,0,Cancel Installation,Vormerkung für Installation / Aktualisierung aufheben,0
-view,ir.module.module,0,Cancel Uninstallation,Deinstallation abbrechen,0
-view,ir.module.module,0,Cancel Upgrade,Vormerkung für Installation / Aktualisierung aufheben,0
-view,ir.module.module,0,Dependencies,Abhängigkeiten,0
-view,ir.module.module,0,Mark for Installation,Für die Installation vormerken,0
-view,ir.module.module,0,Mark for Uninstallation (beta),Für die Deinstallation (beta) vormerken,0
-view,ir.module.module,0,Mark for Upgrade,Für die Aktualisierung vormerken,0
-view,ir.module.module,0,Module,Modul,0
-view,ir.module.module,0,Modules,Module,0
-view,ir.module.module,0,_Dependencies,_Abhängigkeiten,0
-view,ir.module.module,0,_Module,_Module,0
-view,ir.module.module.config_wizard.first,0,Welcome to the module configuration wizard!,Willkommen bei der Modulkonfiguration!,0
-view,ir.module.module.config_wizard.first,0,You will be able to configure your installation,Sie können nun Ihr System einrichten,0
-view,ir.module.module.config_wizard.first,0,depending on the modules you have installed.,abhängig von den installierten Modulen.,0
-view,ir.module.module.config_wizard.item,0,Config Wizard Items,Wizardelemente konfigurieren,0
-view,ir.module.module.install_upgrade.init,0,Note that this operation my take a few minutes.,Dieser Vorgang kann einige Minuten dauern,0
-view,ir.module.module.install_upgrade.init,0,System Upgrade,Systemaktualisierung,0
-view,ir.module.module.install_upgrade.init,0,Your system will be upgraded.,Ihr System wird aktualisiert,0
-view,ir.module.module.install_upgrade.start,0,System upgrade done,Systemaktualisierung beendet,0
-view,ir.module.module.install_upgrade.start,0,The modules have been upgraded / installed !,Die Module wurden installiert bzw. aktualisiert!,0
-view,ir.module.module.install_upgrade.start,0,We suggest you to reload the menu tab (Ctrl+t Ctrl+r).,Das Menü sollte mit Ctl+t Ctl+r neu geladen werden.,0
-view,ir.module.module.install_upgrade.start,0,You may have to reinstall some language pack.,Evtl. müssen einige Sprachdateien erneut installiert werden.,0
-view,ir.property,0,Properties,Eigenschaften,0
-view,ir.property,0,Property,Eigenschaft,0
-view,ir.rule,0,Test,Test,0
-view,ir.rule.group,0,"If there is no test defined, the rule is always satisfied if not global","Wenn kein Test festgelegt wird, wird die Regel immer als gültig bewertet (außer global)",0
-view,ir.rule.group,0,Record rules,Datensatzregeln,0
-view,ir.rule.group,0,The rule is satisfied if at least one test is True,"Die Regel wird als gültig bewertet, wenn wenigstens ein Test positiv ist (True)",0
-view,ir.sequence,0,${day},${day},0
-view,ir.sequence,0,${month},${month},0
-view,ir.sequence,0,${year},${year},0
-view,ir.sequence,0,Day:,Tag:,0
-view,ir.sequence,0,Incremental,Inkrementell,0
-view,ir.sequence,0,"Legend (Placeholders for prefix, suffix)","Legende (Platzhalter für Präfix, Suffix)",0
-view,ir.sequence,0,"Legend (for prefix, suffix)","Legende (für Präfix, Suffix)",0
-view,ir.sequence,0,Month:,Monat:,0
-view,ir.sequence,0,Sequences,Nummernkreise,0
-view,ir.sequence,0,Timestamp,Zeitstempel,0
-view,ir.sequence,0,Year:,Jahr:,0
-view,ir.sequence.strict,0,${day},${day},0
-view,ir.sequence.strict,0,${month},${month},0
-view,ir.sequence.strict,0,${year},${year},0
-view,ir.sequence.strict,0,Day:,Tag:,0
-view,ir.sequence.strict,0,"Legend (for prefix, suffix)","Legende (für Präfix, Suffix)",0
-view,ir.sequence.strict,0,Month:,Monat:,0
-view,ir.sequence.strict,0,Sequences Strict,Strikte Nummernkreise,0
-view,ir.sequence.strict,0,Year:,Jahr:,0
-view,ir.sequence.type,0,Sequence Type,Typ Nummernkreis,0
-view,ir.translation,0,Translations,Ãœbersetzungen,0
-view,ir.translation.clean.init,0,Clean Translations,Ãœbersetzungen bereinigen,0
-view,ir.translation.clean.init,0,Clean Translations?,Ãœbersetzungen bereinigen?,0
-view,ir.translation.clean.start,0,Clean Translations,Ãœbersetzungen bereinigen,0
-view,ir.translation.clean.start,0,Clean Translations Succeed!,Bereinigung der Übersetzungen erfolgreich durchgeführt!,0
-view,ir.translation.export.init,0,Export Translation,Ãœbersetzung exportieren,0
-view,ir.translation.export.start,0,Export Translation,Ãœbersetzung exportieren,0
-view,ir.translation.set_report.init,0,Set Report Translations,Übersetzungen für Berichte aktualisieren,0
-view,ir.translation.set_report.init,0,Synchronize Report Translations?,Übersetzungen für Berichte synchronisieren?,0
-view,ir.translation.set_report.init,0,Update Report Translations?,Übersetzungen für Berichte aktualisieren?,0
-view,ir.translation.set_report.start,0,Set Report Translations,Übersetzungen für Berichte übernehmen,0
-view,ir.translation.set_report.start,0,Set Translations Succeed!,Übersetzungen erfolgreich übernommen!,0
-view,ir.translation.update.init,0,Synchronize Translations,Ãœbersetzungen synchronisieren,0
-view,ir.translation.update.init,0,Update Translations,Ãœbersetzungen aktualisieren,0
-view,ir.trigger,0,Trigger,Trigger,0
-view,ir.trigger,0,Triggers,Trigger,0
-view,ir.ui.icon,0,Icon,Symbol,0
-view,ir.ui.icon,0,Icons,Symbole,0
-view,ir.ui.menu,0,Menu,Menü,0
-view,ir.ui.view,0,View,Sicht,0
-view,ir.ui.view_sc,0,Shortcut,Favorit,0
-view,ir.ui.view_sc,0,Shortcuts,Favoriten,0
-view,ir.ui.view_tree_width,0,View Tree Width,Spaltenbreiten Sicht,0
-view,ir.ui.view_tree_width,0,Views Tree Width,Spaltenbreiten Sichten,0
-wizard_button,"ir.model.print_model_graph,init,end",0,Cancel,Abbrechen,0
-wizard_button,"ir.model.print_model_graph,init,print",0,Print,Drucken,0
-wizard_button,"ir.module.module.config_wizard,first,end",0,Cancel,Abbrechen,0
-wizard_button,"ir.module.module.config_wizard,first,wizard",0,Ok,OK,0
-wizard_button,"ir.module.module.install_upgrade,init,end",0,Cancel,Abbrechen,0
-wizard_button,"ir.module.module.install_upgrade,init,start",0,Start Upgrade,Aktualisierung starten,0
-wizard_button,"ir.module.module.install_upgrade,start,menu",0,Ok,OK,0
-wizard_button,"ir.translation.clean,init,end",0,Cancel,Abbrechen,0
-wizard_button,"ir.translation.clean,init,start",0,Start,Start,0
-wizard_button,"ir.translation.clean,start,end",0,Ok,OK,0
-wizard_button,"ir.translation.export,init,end",0,Cancel,Abbrechen,0
-wizard_button,"ir.translation.export,init,start",0,Start Export,Export starten,0
-wizard_button,"ir.translation.export,start,end",0,Close,Schließen,0
-wizard_button,"ir.translation.set_report,init,end",0,Cancel,Abbrechen,0
-wizard_button,"ir.translation.set_report,init,start",0,Start Update,Aktualisierung starten,0
-wizard_button,"ir.translation.set_report,start,end",0,Ok,OK,0
-wizard_button,"ir.translation.update,init,end",0,Cancel,Abbrechen,0
-wizard_button,"ir.translation.update,init,start",0,Start Update,Aktualisierung starten,0
diff --git a/trytond/ir/es_CO.csv b/trytond/ir/es_CO.csv
deleted file mode 100644
index 7e61db4..0000000
--- a/trytond/ir/es_CO.csv
+++ /dev/null
@@ -1,700 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,access_error,0,"You try to bypass an access rule!
-(Document type: %s)",¡Está intentando sobrepasar una regla de acceso!,0
-error,delete_workflow_record,0,You cannot delete a record with a running workflow.,No puede borrar un registro involucrado en un flujo activo.,0
-error,delete_xml_record,0,You are not allowed to delete this record.,No esta autorizado a eliminar este registro.,0
-error,digits_validation_record,0,"The field ""%s"" on ""%s"" has too many decimal digits.","El campo ""%s"" en ""%s"" tiene muchos dígitos decimales.",0
-error,domain_validation_record,0,"The value of the field ""%s"" on ""%s"" is not valid according to its domain.","El valor del campo ""%s"" en ""%s no es válido ",0
-error,foreign_model_exist,0,"Could not delete ""%s"" records because they are used on field ""%s"" of ""%s"".","No se pudo borrar ""%s"" regisros porque se usan en el campo ""%s"" de ""%s"".",0
-error,foreign_model_missing,0,"The value of field ""%s"" on ""%s"" doesn't exist.","El valor del campo ""%s"" no existe.",0
-error,ir.action.act_window,0,Invalid context!,¡Contexto inválido!,0
-error,ir.action.act_window,0,Invalid domain!,¡Dominio inválido!,0
-error,ir.action.act_window,0,Invalid search criteria!,¡Criterio de búsqueda inválido!,0
-error,ir.action.keyword,0,Wrong wizard model!,¡Modelo de asistente erróneo!,0
-error,ir.action.report,0,The internal name must be unique by module!,¡El nombre interno de los módulos debe ser único!,0
-error,ir.attachment,0,The  names of attachments must be unique by resource!,¡Los nombres por recurso de adjuntos deben ser unicos!,0
-error,ir.cron,0,Scheduled action failed,La acción agendada falló,0
-error,ir.cron,0,"The following action failed to execute properly: ""%s""
- Traceback: 
-
-%s
-","La siguiente acción no se ejecutó correctamente: ""%s""
- Traza:
-
-%s
-",0
-error,ir.lang,0,decimal_point and thousands_sep must be different!,El punto_decimal y el separador_de_miles NO pueden coincidir!,0
-error,ir.lang,0,Invalid Grouping!,Agrupamiento Inválido!,0
-error,ir.lang,0,The date format is not valid!,El formato de fecha no es válido!,0
-error,ir.model,0,Module Name must be a python identifier!,El Nombre del Módulo debe ser un identificador de Python!,0
-error,ir.model,0,The model must be unique!,El modelo debe ser único!,0
-error,ir.model.access,0,Only one record by model and group is allowed!,Sólo se permite un registro por modelo y grupo!,0
-error,ir.model.access,0,You can not create this kind of document! (%s),No puede crear esta clase de documento! (%s),0
-error,ir.model.access,0,You can not delete this document! (%s),No puede borrar este documento! (%s),0
-error,ir.model.access,0,You can not read this document! (%s),No puede leer este documento! (%s),0
-error,ir.model.access,0,You can not write in this document! (%s),No puede escribir en este documento! (%s),0
-error,ir.model.data,0,"The triple (fs_id, module, model) must be unique!","La tripla(fs_id, módulo, modelo) debe ser única!",0
-error,ir.model.field,0,Model Field Name must be a python identifier!,El campo del Nombre del Modelo debe ser un identificador de Python!,0
-error,ir.model.field,0,The field name in model must be unique!,El nombre del campo en el modelo debe ser único!,0
-error,ir.module.module,0,"Missing dependencies %s for module ""%s""","Dependencias faltantes %s para el módulo ""%s""",0
-error,ir.module.module,0,The modules you are trying to uninstall depends on installed modules:,Los módulos que está tratando de desinstalar dependen de módulos instalados:,0
-error,ir.module.module,0,The name of the module must be unique!,El nombre del módulo debe ser único!,0
-error,ir.module.module,0,You can not remove a module that is installed or will be installed,No puede eliminar un módulo que está instalado o que va a ser instalado,0
-error,ir.module.module.dependency,0,Dependency must be unique by module!,¡Las dependencias por módulo deben ser únicas!,0
-error,ir.rule.group,0,Global and Default are mutually exclusive!,Global y Predeterminado son mutuamente excluyentes!,0
-error,ir.sequence,0,Invalid prefix/suffix!,prefijo/sufijo inválidos!,0
-error,ir.sequence,0,Missing sequence!,Falta la secuencia!,0
-error,ir.sequence.strict,0,Invalid prefix/suffix!,prefijo/sufijo inválidos!,0
-error,ir.sequence.strict,0,Missing sequence!,Falta la secuencia!,0
-error,ir.translation,0,Translation must be unique,La traducción debe ser única,0
-error,ir.ui.view,0,Invalid XML for View!,XML inválido para la Vista!,0
-error,not_found_in_selection,0,Key %r not found in selection field %r,No encontró la llave %r en el campo seleccionado %r,0
-error,read_error,0,"You try to read records that don't exist anymore!
-(Document type: %s)",¡Está intentando leer registros que ya no existen!,0
-error,reference_syntax_error,0,Syntax error for reference %r in %s,Error de sintaxis para la referencia %r en %s,0
-error,relation_not_found,0,Relation not found: %r in %s,Relación no encontrada: %r en %s,0
-error,required_field,0,"The field ""%s"" on ""%s"" is required.","Se requiere el campo ""%s"" en ""%s"".",0
-error,required_validation_record,0,"The field ""%s"" on ""%s"" is required.","Se requiere el campo ""%s"" en ""%s"".",0
-error,search_function_missing,0,"Missing search function on field ""%s"".","Búsqueda faltante en el campo ""%s"".",0
-error,size_validation_record,0,"The field ""%s"" on ""%s"" is too long.","El campo ""%s"" en ""%s"" es demasiado largo.",0
-error,too_many_relations_found,0,Too many relations found: %r in %s,Muchas relaciones encontradas: %r en %s,0
-error,write_error,0,"You try to write on records that don't exist anymore!
-(Document type: %s)",¡Está tratando de escribir registros que ya no existen!,0
-error,write_xml_record,0,You are not allowed to modify this record.,No esta autorizado para modificar este registro.,0
-error,xml_id_syntax_error,0,Syntax error for XML id %r in %s,Error de sintaxis para el id XML %r en %s,0
-error,xml_record_desc,0,This record is part of the base configuration.,Este registro es parte de la configuración base.,0
-field,"ir.action,active",0,Active,Activo,0
-field,"ir.action.act_window,action",0,Action,Acción,0
-field,"ir.action.act_window,act_window_views",0,Views,Vistas,0
-field,"ir.action.act_window,auto_refresh",0,Auto-Refresh,Auto-Refrescar,0
-field,"ir.action.act_window,context",0,Context Value,Valor en Contexto,0
-field,"ir.action.act_window,domain",0,Domain Value,Valor de Dominio,0
-field,"ir.action.act_window,limit",0,Limit,Límite,0
-field,"ir.action.act_window,pyson_context",0,PySON Context,Contexto PySON,0
-field,"ir.action.act_window,pyson_domain",0,PySON Domain,Dominio de PySON,0
-field,"ir.action.act_window,pyson_search_value",0,PySON Search Criteria,Criterio de búsqueda de PySON,0
-field,"ir.action.act_window,rec_name",0,Name,Nombre,0
-field,"ir.action.act_window,res_model",0,Model,Modelo,0
-field,"ir.action.act_window,search_value",0,Search Criteria,Criterio de Búsqueda,0
-field,"ir.action.act_window.view,act_window",0,Action,Acción,0
-field,"ir.action.act_window.view,rec_name",0,Name,Nombre,0
-field,"ir.action.act_window,views",0,Views,Vistas,0
-field,"ir.action.act_window.view,sequence",0,Sequence,Secuencia,0
-field,"ir.action.act_window,view_type",0,Type of view,Tipo de Vista,0
-field,"ir.action.act_window.view,view",0,View,Vista,0
-field,"ir.action.act_window,window_name",0,Window Name,Nombre de Ventana,0
-field,"ir.action,groups",0,Groups,Grupos,0
-field,"ir.action.keyword,action",0,Action,Acción,0
-field,"ir.action.keyword,keyword",0,Keyword,Palabra Clave,0
-field,"ir.action.keyword,model",0,Model,Modelo,0
-field,"ir.action.keyword,rec_name",0,Name,Nombre,0
-field,"ir.action,keywords",0,Keywords,Palabras Clave,0
-field,"ir.action,name",0,Name,Nombre,0
-field,"ir.action,rec_name",0,Name,Nombre,0
-field,"ir.action.report,action",0,Action,Acción,0
-field,"ir.action.report,direct_print",0,Direct Print,Impresión Directa,0
-field,"ir.action.report,email",0,Email,Correo Electrónico,0
-field,"ir.action.report,extension",0,Extension,Extensión,0
-field,"ir.action.report,model",0,Model,Modelo,0
-field,"ir.action.report,module",0,Module,Módulo,0
-field,"ir.action.report,rec_name",0,Name,Nombre,0
-field,"ir.action.report,report",0,Path,Camino,0
-field,"ir.action.report,report_content",0,Content,Contenido,0
-field,"ir.action.report,report_content_data",0,Content,Contenido,0
-field,"ir.action.report,report_name",0,Internal Name,Número Interno,0
-field,"ir.action.report,style",0,Style,Estilo,0
-field,"ir.action.report,style_content",0,Style,Estilo,0
-field,"ir.action,type",0,Type,Tipo,0
-field,"ir.action.url,action",0,Action,Acción,0
-field,"ir.action.url,rec_name",0,Name,Nombre,0
-field,"ir.action.url,url",0,Action Url,Url de Acción,0
-field,"ir.action,usage",0,Usage,Uso,0
-field,"ir.action.wizard,action",0,Action,Acción,0
-field,"ir.action.wizard,email",0,Email,Correo Electrónico,0
-field,"ir.action.wizard,model",0,Model,Modelo,0
-field,"ir.action.wizard,rec_name",0,Name,Nombre,0
-field,"ir.action.wizard_size,height",0,Height,Altura,0
-field,"ir.action.wizard_size,model",0,Model,Modelo,0
-field,"ir.action.wizard_size,rec_name",0,Name,Nombre,0
-field,"ir.action.wizard_size,user",0,User,Usuario,0
-field,"ir.action.wizard_size,width",0,Width,Ancho,0
-field,"ir.action.wizard_size,wizard",0,Wizard,Asistente,0
-field,"ir.action.wizard,window",0,Window,,0
-field,"ir.action.wizard,wiz_name",0,Wizard name,Nombre del Asistente,0
-field,"ir.attachment,collision",0,Collision,Colisión,0
-field,"ir.attachment,datas",0,Datas,Datos,0
-field,"ir.attachment,datas_size",0,Datas size,Tamaño de los Datos,0
-field,"ir.attachment,description",0,Description,Descripción,0
-field,"ir.attachment,digest",0,Digest,Resumen,0
-field,"ir.attachment,link",0,Link,Enlace,0
-field,"ir.attachment,name",0,Attachment Name,Nombre de Adjunto,0
-field,"ir.attachment,rec_name",0,Name,Nombre,0
-field,"ir.attachment,resource",0,Resource,Recurso,1
-field,"ir.cache,name",0,Name,Nombre,0
-field,"ir.cache,rec_name",0,Name,Nombre,0
-field,"ir.cache,timestamp",0,Timestamp,Estampa de Tiempo,0
-field,"ir.cron,active",0,Active,Activo,0
-field,"ir.cron,args",0,Arguments,Argumentos,0
-field,"ir.cron,doall",0,Repeat missed,Fallo al repetir,0
-field,"ir.cron,function",0,Function,Función,0
-field,"ir.cron,interval_number",0,Interval Number,Número de Intervalo,0
-field,"ir.cron,interval_type",0,Interval Unit,Unidad de Intervalo,0
-field,"ir.cron,model",0,Model,Modelo,0
-field,"ir.cron,name",0,Name,Nombre,0
-field,"ir.cron,nextcall",0,Next call date,Fecha de próxima llamada,0
-field,"ir.cron,numbercall",0,Number of calls,Cantidad de llamados,0
-field,"ir.cron,priority",0,Priority,Prioridad,0
-field,"ir.cron,rec_name",0,Name,Nombre,0
-field,"ir.cron,request_user",0,Request User,Solicitante,0
-field,"ir.cron,running",0,Running,Corriendo,0
-field,"ir.cron,user",0,Execution User,Usuario que Ejecuta,0
-field,"ir.default,clause",0,Clause,Claúsula,0
-field,"ir.default,field",0,Field,Campo,0
-field,"ir.default,model",0,Model,Modelo,0
-field,"ir.default,rec_name",0,Name,Nombre,0
-field,"ir.default,user",0,User,Usuario,0
-field,"ir.default,value",0,Value,Valor,0
-field,"ir.export,export_fields",0,Fields,Campos,0
-field,"ir.export.line,export",0,Export,Exportación,0
-field,"ir.export.line,name",0,Name,Nombre,0
-field,"ir.export.line,rec_name",0,Name,Nombre,0
-field,"ir.export,name",0,Name,Nombre,0
-field,"ir.export,rec_name",0,Name,Nombre,0
-field,"ir.export,resource",0,Resource,Recurso,0
-field,"ir.lang,active",0,Active,Activo,0
-field,"ir.lang,code",0,Code,Código,0
-field,"ir.lang,date",0,Date,Fecha,0
-field,"ir.lang,decimal_point",0,Decimal Separator,Separador Decimal,0
-field,"ir.lang,direction",0,Direction,Dirección,0
-field,"ir.lang,grouping",0,Grouping,Grupo,0
-field,"ir.lang,name",0,Name,Nombre,0
-field,"ir.lang,rec_name",0,Name,Nombre,0
-field,"ir.lang,thousands_sep",0,Thousands Separator,Separador de Miles,0
-field,"ir.lang,translatable",0,Translatable,Traducible,0
-field,"ir.model.access,description",0,Description,Descripción,0
-field,"ir.model.access,group",0,Group,Grupo,0
-field,"ir.model.access,model",0,Model,Modelo,0
-field,"ir.model.access,perm_create",0,Create Access,Crear Acceso,0
-field,"ir.model.access,perm_delete",0,Delete Access,Permiso para Eliminar,0
-field,"ir.model.access,perm_read",0,Read Access,Acceso de Lectura,0
-field,"ir.model.access,perm_write",0,Write Access,Acceso de Escritura,0
-field,"ir.model.access,rec_name",0,Name,Nombre,0
-field,"ir.model.data,date_init",0,Init Date,Fecha Inicial,0
-field,"ir.model.data,date_update",0,Update Date,Fecha de Actualización,0
-field,"ir.model.data,db_id",0,Resource ID,ID del Recurso,0
-field,"ir.model.data,fs_id",0,Identifier on File System,Identificador en el Sistema de Archivos,0
-field,"ir.model.data,inherit",0,Inherit,Hereda,0
-field,"ir.model.data,model",0,Model,Modelo,0
-field,"ir.model.data,module",0,Module,Módulo,0
-field,"ir.model.data,noupdate",0,No Update,No Actualizar,0
-field,"ir.model.data,rec_name",0,Name,Nombre,0
-field,"ir.model.data,values",0,Values,Valores,0
-field,"ir.model.field,field_description",0,Field Description,Descripción del Campo,0
-field,"ir.model.field,groups",0,Groups,Grupos,0
-field,"ir.model.field,help",0,Help,Ayuda,0
-field,"ir.model.field,model",0,Model,Modelo,0
-field,"ir.model.field,module",0,Module,Módulo,0
-field,"ir.model.field,name",0,Name,Nombre,0
-field,"ir.model.field,rec_name",0,Name,Nombre,0
-field,"ir.model.field,relation",0,Model Relation,Relación con Modelo,0
-field,"ir.model,fields",0,Fields,Campos,0
-field,"ir.model.field,ttype",0,Field Type,Tipo de Campo,0
-field,"ir.model,info",0,Information,Información,0
-field,"ir.model,model",0,Model Name,Nombre del Modelo,0
-field,"ir.model,module",0,Module,Módulo,0
-field,"ir.model,name",0,Model Description,Descripción del Modelo,0
-field,"ir.model.print_model_graph.init,filter",0,Filter,Filtro,0
-field,"ir.model.print_model_graph.init,level",0,Level,Nivel,0
-field,"ir.model,rec_name",0,Name,Nombre,0
-field,"ir.module.module,author",0,Author,Autor,0
-field,"ir.module.module.config_wizard.item,name",0,Name,Nombre,0
-field,"ir.module.module.config_wizard.item,rec_name",0,Name,Nombre,0
-field,"ir.module.module.config_wizard.item,sequence",0,Sequence,Secuencia,0
-field,"ir.module.module.config_wizard.item,state",0,State,Estado,0
-field,"ir.module.module,dependencies",0,Dependencies,Dependencias,0
-field,"ir.module.module.dependency,module",0,Module,Módulo,0
-field,"ir.module.module.dependency,name",0,Name,Nombre,0
-field,"ir.module.module.dependency,rec_name",0,Name,Nombre,0
-field,"ir.module.module.dependency,state",0,State,Estado,0
-field,"ir.module.module,description",0,Description,Descripción,0
-field,"ir.module.module.install_upgrade.init,module_info",0,Modules to update,Módulos a actualizar,0
-field,"ir.module.module,name",0,Name,Nombre,0
-field,"ir.module.module,rec_name",0,Name,Nombre,0
-field,"ir.module.module,shortdesc",0,Short description,Descripción Corta,0
-field,"ir.module.module,state",0,State,Estado,0
-field,"ir.module.module,version",0,Version,Versión,0
-field,"ir.module.module,website",0,Website,Sitio Web,0
-field,"ir.property,field",0,Field,Campo,0
-field,"ir.property,name",0,Name,Nombre,0
-field,"ir.property,rec_name",0,Name,Nombre,0
-field,"ir.property,res",0,Resource,Recurso,0
-field,"ir.property,value",0,Value,Valor,0
-field,"ir.rule,field",0,Field,Campo,0
-field,"ir.rule.group,default_p",0,Default,Predeterminado,0
-field,"ir.rule.group,global_p",0,Global,Global,0
-field,"ir.rule.group,groups",0,Groups,Grupos,0
-field,"ir.rule.group,model",0,Model,Modelo,0
-field,"ir.rule.group,name",0,Name,Nombre,0
-field,"ir.rule.group,perm_create",0,Create Access,Permiso para Crear,0
-field,"ir.rule.group,perm_delete",0,Delete Access,Permiso para Eliminar,0
-field,"ir.rule.group,perm_read",0,Read Access,Permiso de Lectura,0
-field,"ir.rule.group,perm_write",0,Write Access,Permiso de Escritura,0
-field,"ir.rule.group,rec_name",0,Name,Nombre,0
-field,"ir.rule.group,rules",0,Tests,Pruebas,0
-field,"ir.rule.group,users",0,Users,Usuarios,0
-field,"ir.rule,operand",0,Operand,Operando,0
-field,"ir.rule,operator",0,Operator,Operador,0
-field,"ir.rule,rec_name",0,Name,Nombre,0
-field,"ir.rule,rule_group",0,Group,Grupo,0
-field,"ir.sequence,active",0,Active,Activo,0
-field,"ir.sequence,code",0,Sequence Type,Tipo de Secuencia,0
-field,"ir.sequence,name",0,Sequence Name,Nombre de Secuencia,0
-field,"ir.sequence,number_increment",0,Increment Number,Número de Incremento,0
-field,"ir.sequence,number_next",0,Next Number,Próximo Número,0
-field,"ir.sequence,padding",0,Number padding,Cantidad de corrimiento,0
-field,"ir.sequence,prefix",0,Prefix,Prefijo,0
-field,"ir.sequence,rec_name",0,Name,Nombre,0
-field,"ir.sequence.strict,active",0,Active,Activo,0
-field,"ir.sequence.strict,code",0,Sequence Type,Tipo de Secuencia,0
-field,"ir.sequence.strict,name",0,Sequence Name,Nombre de Secuencia,0
-field,"ir.sequence.strict,number_increment",0,Increment Number,Número de Incremento,0
-field,"ir.sequence.strict,number_next",0,Next Number,Próximo Número,0
-field,"ir.sequence.strict,padding",0,Number padding,Cantidad de corrimiento,0
-field,"ir.sequence.strict,prefix",0,Prefix,Prefijo,0
-field,"ir.sequence.strict,rec_name",0,Name,Nombre,0
-field,"ir.sequence.strict,suffix",0,Suffix,Sufijo,0
-field,"ir.sequence,suffix",0,Suffix,Sufijo,0
-field,"ir.sequence.type,code",0,Sequence Code,Secuencia,0
-field,"ir.sequence.type,name",0,Sequence Name,Nombre de Secuencia,0
-field,"ir.sequence.type,rec_name",0,Name,Nombre,0
-field,"ir.translation.export.init,lang",0,Language,Idioma,0
-field,"ir.translation.export.init,module",0,Module,Módulo,0
-field,"ir.translation.export.start,file",0,File,Archivo,0
-field,"ir.translation,fuzzy",0,Fuzzy,Por Revisar,0
-field,"ir.translation,lang",0,Language,Idioma,0
-field,"ir.translation,model",0,Model,Modelo,0
-field,"ir.translation,module",0,Module,Módulo,0
-field,"ir.translation,name",0,Field Name,Nombre del Campo,0
-field,"ir.translation,rec_name",0,Name,Nombre,0
-field,"ir.translation,res_id",0,Resource ID,ID del Recurso,0
-field,"ir.translation,src",0,Source,Fuente,0
-field,"ir.translation,type",0,Type,Tipo,0
-field,"ir.translation.update.init,lang",0,Language,Idioma,0
-field,"ir.translation,value",0,Translation Value,Valor de Traducción,0
-field,"ir.ui.menu,action",0,Action,Acción,0
-field,"ir.ui.menu,active",0,Active,Activo,0
-field,"ir.ui.menu,childs",0,Children,Hij at s,0
-field,"ir.ui.menu,complete_name",0,Complete Name,Nombre Completo,0
-field,"ir.ui.menu,groups",0,Groups,Grupos,0
-field,"ir.ui.menu,icon",0,Icon,Ícono,0
-field,"ir.ui.menu,name",0,Menu,Menú,0
-field,"ir.ui.menu,parent",0,Parent Menu,Menú Padre,0
-field,"ir.ui.menu,rec_name",0,Name,Nombre,0
-field,"ir.ui.menu,sequence",0,Sequence,Secuencia,0
-field,"ir.ui.view,arch",0,View Architecture,Ver Arquitectura,0
-field,"ir.ui.view,domain",0,Domain,Dominio,0
-field,"ir.ui.view,field_childs",0,Children Field,Campos Hijos,0
-field,"ir.ui.view,inherit",0,Inherited View,Vista heredada,0
-field,"ir.ui.view,model",0,Model,Modelo,0
-field,"ir.ui.view,module",0,Module,Módulo,0
-field,"ir.ui.view,priority",0,Priority,Prioridad,0
-field,"ir.ui.view,rec_name",0,Name,Nombre,0
-field,"ir.ui.view_sc,name",0,Shortcut Name,Nombre Corto,0
-field,"ir.ui.view_sc,rec_name",0,Name,Nombre,0
-field,"ir.ui.view_sc,res_id",0,Resource Ref.,Ref. de Recurso,0
-field,"ir.ui.view_sc,resource",0,Resource Name,Nombre del Recurso,0
-field,"ir.ui.view_sc,sequence",0,Sequence,Secuencia,0
-field,"ir.ui.view_sc,user_id",0,User Ref.,Ref. de Usuario,0
-field,"ir.ui.view_tree_width,field",0,Field,Campo,0
-field,"ir.ui.view_tree_width,model",0,Model,Modelo,0
-field,"ir.ui.view_tree_width,rec_name",0,Name,Nombre,0
-field,"ir.ui.view_tree_width,user",0,User,Usuario,0
-field,"ir.ui.view_tree_width,width",0,Width,Ancho,0
-field,"ir.ui.view,type",0,View Type,Tipo de Vista,0
-help,"ir.action.act_window,auto_refresh",0,Add an auto-refresh on the view,Adicionar un auto-refresco en la vista,0
-help,"ir.action.act_window,limit",0,Default limit for the list view,Límite predeterminado para la lista de vista,0
-help,"ir.action.act_window,search_value",0,Default search criteria for the list view,Criterio de Búsqueda predeterminado para la vista de lista,0
-help,"ir.action.act_window,window_name",0,Use the action name as window name,Usar el nombre de la acción como el nombre de la ventana,0
-help,"ir.action.report,style",0,Define the style to apply on the report.,Definir el estilo para aplicar al reporte.,0
-help,"ir.action.wizard,window",0,Run wizard in a new window,,0
-help,"ir.cron,numbercall",0,"Number of times the function is called,
-a negative number indicates that the function will always be called","Cantidad de Veces que la función ha sido llamada,
-un número negativo indica que la función siempre será llamada.",0
-help,"ir.cron,priority",0,"0=Very Urgent
-10=Not urgent",0=Muy Urgente,0
-help,"ir.cron,request_user",0,The user who will receive requests in case of failure,El usuario que recibirá la solicitud en caso de error,0
-help,"ir.cron,user",0,The user used to execute this action,El usuario que ejecuta esta acción,0
-help,"ir.lang,code",0,RFC 4646 tag: http://tools.ietf.org/html/rfc4646,RFC 4646 tag: http://tools.ietf.org/html/rfc4646,0
-help,"ir.model.data,db_id",0,The id of the record in the database.,El id del registro en la base de datos.,0
-help,"ir.model.data,fs_id",0,The id of the record as known on the file system.,El id del registro tal como lo conoce el sistema de archivos.,0
-help,"ir.model.field,module",0,Module in which this field is defined,Módulo en el que este campo fue definido,0
-help,"ir.model,module",0,Module in which this model is defined,Módulo en el que esta modelo fue definido,0
-help,"ir.model.print_model_graph.init,filter",0,Entering a Python Regular Expression will exclude matching models from the graph.,Al usar una expresión regular de Python se excluirá los modelos que coincidan de la gráfica.,0
-help,"ir.rule.group,default_p",0,Add this rule to all users by default,Añadir esta regla para todos los usuarios de forma predeterminada,0
-help,"ir.rule.group,global_p",0,"Make the rule global 
-so every users must follow this rule","Hacer global la regla
-de tal forma que todo usuario la siga",0
-help,"ir.rule.group,rules",0,The rule is satisfied if at least one test is True,La regla se satisface si por lo menos una condición es Verdadera,0
-model,"ir.action.act_window,name",0,Action act window,Ventana de acciones,0
-model,"ir.action.act_window.view,name",0,Action act window view,Vista de ventana de acción,0
-model,"ir.action.keyword,name",0,Action keyword,Palabra clave de acción,0
-model,"ir.action,name",0,Action,Acción,0
-model,"ir.action,name",act_action_form,Actions,Acciones,0
-model,"ir.action,name",act_attachment_form,Attachments,Adjuntos,0
-model,"ir.action,name",act_translation_clean,Clean Translations,Limpiar Traducciones,0
-model,"ir.action,name",act_config_wizard_item_form,Config Wizard Items,Configurar los elementos del Asistente,0
-model,"ir.action,name",act_property_form_default,Default Properties,Propiedades predeterminadas,0
-model,"ir.action,name",act_default_form,Defaults,Predeterminados,0
-model,"ir.action,name",act_export_form,Exports,Exportes,0
-model,"ir.action,name",act_translation_export,Export Translations,Exportar Traducciones,0
-model,"ir.action,name",act_model_fields_form,Fields,Campos,0
-model,"ir.action,name",report_model_graph,Graph,Gráfica,0
-model,"ir.action,name",print_model_graph,Graph,Gráfica,0
-model,"ir.action,name",act_lang_form,Languages,Idiomas,0
-model,"ir.action,name",act_menu_tree,Menu,Menú,0
-model,"ir.action,name",act_menu_form,Menus,Menús,0
-model,"ir.action,name",act_model_form,Models,Modelos,0
-model,"ir.action,name",act_model_access_form,Models Access,Acceso a los Modelos,0
-model,"ir.action,name",act_module_config_wizard,Module Configuration,Configuración de Módulo,0
-model,"ir.action,name",act_module_form,Modules,Módulos,0
-model,"ir.action,name",act_module_install_upgrade,Perform Pending Installation/Upgrade,Aplicar Instalaciones/Actualizaciones Pendientes,0
-model,"ir.action,name",act_property_form,Properties,Propiedades,0
-model,"ir.action,name",act_rule_group_form,Record Rules,Grabar reglas,0
-model,"ir.action,name",act_action_report_form,Reports,Reportes,0
-model,"ir.action,name",act_cron_form,Scheduled Actions,Acciones agendadas,0
-model,"ir.action,name",act_sequence_form,Sequences,Secuencias,0
-model,"ir.action,name",act_sequence_strict_form,Sequences Strict,Secuencias Estrictas,0
-model,"ir.action,name",act_sequence_type_form,Sequence Types,Tipos de Secuencia,0
-model,"ir.action,name",act_translation_set_report,Set Report Translations,Establecer Traducciones de Reporte,0
-model,"ir.action,name",act_translation_update,Synchronize Translations,Actualizar Traducción,0
-model,"ir.action,name",act_translation_form,Translations,Traducciones,0
-model,"ir.action,name",act_action_url_form,URLs,URLs,0
-model,"ir.action,name",act_view_form,Views,Vistas,0
-model,"ir.action,name",act_view_sc_form,View Shortcuts,Ver Atajos,0
-model,"ir.action,name",act_view_tree_width_form,View Tree Width,Ancho de Vista de Árbol,0
-model,"ir.action,name",act_action_act_window_form,Window Actions,Acciones de Ventana,0
-model,"ir.action,name",act_action_wizard_form,Wizards,Asistentes,0
-model,"ir.action,name",act_action_wizard_size_form,Wizard Sizes,Tamaños del Asistente,0
-model,"ir.action.report,name",0,Action report,Acción de reporte,0
-model,"ir.action.url,name",0,Action URL,Acción URL,0
-model,"ir.action.wizard,name",0,Action wizard,Acción de asistente,0
-model,"ir.action.wizard_size,name",0,Action Wizard Size,Tamaño de la Acción del Asistente,0
-model,"ir.attachment,name",0,Attachment,Adjunto,0
-model,"ir.cache,name",0,Cache,Caché,0
-model,"ir.cron,name",0,Cron,Cron,0
-model,"ir.date,name",0,Date,Fecha,0
-model,"ir.default,name",0,Default,Predeterminado,0
-model,"ir.export.line,name",0,Export line,Exportar línea,0
-model,"ir.export,name",0,Export,Exporte,0
-model,"ir.lang,name",lang_cs,Czech,,0
-model,"ir.lang,name",lang_en,English,,0
-model,"ir.lang,name",lang_fr,French,,0
-model,"ir.lang,name",lang_de,German,,0
-model,"ir.lang,name",0,Language,Idioma,0
-model,"ir.lang,name",lang_ru,Russian,Rus@,0
-model,"ir.lang,name",lang_es_CO,Spanish (Colombia),,0
-model,"ir.lang,name",lang_es,Spanish (Spain),,0
-model,"ir.model.access,name",0,Model access,Modelo de acceso,0
-model,"ir.model.data,name",0,Model data,Modelo de dato,0
-model,"ir.model.field,name",0,Model field,Modelo de campo,0
-model,"ir.model,name",0,Model,Modelo,0
-model,"ir.model.print_model_graph.init,name",0,Print Model Graph Init,Imprime Inicio de Modelo de Gráfica,0
-model,"ir.module.module.config_wizard.first,name",0,Module Config Wizard First,Primero configure el Módulo con el Asistente,0
-model,"ir.module.module.config_wizard.item,name",0,Config wizard to run after installing module,Configure el asistente a ejecutar después de la instalación del módulo,0
-model,"ir.module.module.dependency,name",0,Module dependency,Dependencia del módulo,0
-model,"ir.module.module.install_upgrade.init,name",0,Module Install Upgrade Init,Inicio de actualización de Instalación del Módulo,0
-model,"ir.module.module.install_upgrade.start,name",0,Module Install Upgrade Start,Comienzo de actualización de Instalación del Módulo,0
-model,"ir.module.module,name",0,Module,Módulo,0
-model,"ir.property,name",0,Property,Propiedad,0
-model,"ir.rule.group,name",0,Rule group,Regla de grupo,0
-model,"ir.rule,name",0,Rule,Regla,0
-model,"ir.sequence,name",0,Sequence,Secuencia,0
-model,"ir.sequence.strict,name",0,Sequence Strict,Secuencia Estricta,0
-model,"ir.sequence.type,name",0,Sequence type,Secuencia tipo,0
-model,"ir.translation.clean.init,name",0,Clean translation init,Inicio de limpieza de traducción,0
-model,"ir.translation.clean.start,name",0,Clean translation start,Comienzo de limpieza de traducción,0
-model,"ir.translation.export.init,name",0,Export translation - language and module,Exportar traducción - idioma y módulo,0
-model,"ir.translation.export.start,name",0,Export translation - file,Exportar traducción - archivo,0
-model,"ir.translation,name",0,Translation,Traducción,0
-model,"ir.translation.set_report.init,name",0,Update Report Translation,Actualiza Reporte de Traducción,0
-model,"ir.translation.set_report.start,name",0,Update Report Translation,Actualiza Reporte de Traducción,0
-model,"ir.translation.update.init,name",0,Update translation - language,Actualiza traducción - lenguaje,0
-model,"ir.ui.menu,name",menu_action,Actions,Acciones,0
-model,"ir.ui.menu,name",menu_act_action,Actions,Acciones,0
-model,"ir.ui.menu,name",menu_administration,Administration,Administración,0
-model,"ir.ui.menu,name",menu_attachment_form,Attachments,Adjuntos,0
-model,"ir.ui.menu,name",menu_translation_clean,Clean Translations,Limpiar Traducciones,0
-model,"ir.ui.menu,name",menu_config_wizard_item_form,Config Wizard Items,Configurar los elementos del Asistente,0
-model,"ir.ui.menu,name",menu_property_form_default,Default Properties,Propiedades predeterminadas,0
-model,"ir.ui.menu,name",menu_default_form,Defaults,Predeterminados,0
-model,"ir.ui.menu,name",menu_export_form,Exports,Exportes,0
-model,"ir.ui.menu,name",menu_translation_export,Export Translations,Exportar Traducciones,0
-model,"ir.ui.menu,name",model_model_fields_form,Fields,Campos,0
-model,"ir.ui.menu,name",menu_lang_form,Languages,Idiomas,0
-model,"ir.ui.menu,name",menu_localization,Localization,Localización,0
-model,"ir.ui.menu,name",menu_menu_form,Menus,Menús,0
-model,"ir.ui.menu,name",menu_models,Models,Modelos,0
-model,"ir.ui.menu,name",menu_model_form,Models,Modelos,0
-model,"ir.ui.menu,name",menu_model_access_form,Models Access,Acceso a los Modelos,0
-model,"ir.ui.menu,name",menu_modules,Modules,Módulos,0
-model,"ir.ui.menu,name",menu_module_form,Modules,Módulos,0
-model,"ir.ui.menu,name",menu_module_install_upgrade,Perform Pending Installation/Upgrade,Instalar / Actualizar Módulos Pendientes,0
-model,"ir.ui.menu,name",menu_property_form,Properties,Propiedades,0
-model,"ir.ui.menu,name",menu_rule_group_form,Record Rules,Grabar Reglas,0
-model,"ir.ui.menu,name",menu_action_report_form,Reports,Reportes,0
-model,"ir.ui.menu,name",menu_cron_form,Scheduled Actions,Acciones agendadas,0
-model,"ir.ui.menu,name",menu_scheduler,Scheduler,Agendador,0
-model,"ir.ui.menu,name",menu_sequences,Sequences,Secuencias,0
-model,"ir.ui.menu,name",menu_sequence_form,Sequences,Secuencias,0
-model,"ir.ui.menu,name",menu_sequence_strict_form,Sequences Strict,Secuencias Estrictas,0
-model,"ir.ui.menu,name",menu_ir_sequence_type,Sequence Types,Tipos de Secuencia,0
-model,"ir.ui.menu,name",menu_translation_set_report,Set Report Translations,Establecer Traducciones de Reporte,0
-model,"ir.ui.menu,name",menu_translation_update,Synchronize Translations,Actualizar Traducción,0
-model,"ir.ui.menu,name",menu_translation_form,Translations,Traducciones,0
-model,"ir.ui.menu,name",0,UI menu,Menú UI,0
-model,"ir.ui.menu,name",menu_action_url,URLs,URLs,0
-model,"ir.ui.menu,name",menu_ui,User Interface,Interfaz de Usuario,0
-model,"ir.ui.menu,name",menu_view,Views,Vistas,0
-model,"ir.ui.menu,name",menu_view_sc,View Shortcuts,Ver Atajos,0
-model,"ir.ui.menu,name",menu_view_tree_width,View Tree Width,Ancho de Vista de Árbol,0
-model,"ir.ui.menu,name",menu_action_act_window,Window Actions,Acciones de Ventana,0
-model,"ir.ui.menu,name",menu_action_wizard,Wizards,Asistentes,0
-model,"ir.ui.menu,name",menu_action_wizard_size,Wizard Sizes,Tamaños del Asistente,0
-model,"ir.ui.view,name",0,View,Vista,0
-model,"ir.ui.view_sc,name",0,View shortcut,Ver atajo,0
-model,"ir.ui.view_tree_width,name",0,View Tree Width,Ancho de Vista de Árbol,0
-selection,"ir.action.act_window,view_type",0,Board,Tablero,0
-selection,"ir.action.act_window,view_type",0,Form,Formulario,0
-selection,"ir.action.act_window,view_type",0,Tree,Árbol,0
-selection,"ir.action.keyword,keyword",0,Action form,Formulario de Acción,0
-selection,"ir.action.keyword,keyword",0,Action tree,Árbol de Acciones,0
-selection,"ir.action.keyword,keyword",0,Form relate,Formulario relacionado,0
-selection,"ir.action.keyword,keyword",0,Open Graph,Abrir Gráfica,0
-selection,"ir.action.keyword,keyword",0,Open tree,Desplegar árbol,0
-selection,"ir.action.keyword,keyword",0,Print form,Formulario de Impresión,0
-selection,"ir.action.report,extension",0,ODT Document,Documento ODT,0
-selection,"ir.action.report,extension",0,PDF Document,Documento PDF,0
-selection,"ir.cron,interval_type",0,Days,Días,0
-selection,"ir.cron,interval_type",0,Hours,Horas,0
-selection,"ir.cron,interval_type",0,Minutes,Minutos,0
-selection,"ir.cron,interval_type",0,Months,Meses,0
-selection,"ir.cron,interval_type",0,Weeks,Semanas,0
-selection,"ir.cron,interval_type",0,Work Days,Días de Trabajo,0
-selection,"ir.lang,direction",0,Left-to-right,De Izquierda a Derecha,0
-selection,"ir.lang,direction",0,Right-to-left,Derecha-a-izquierda,0
-selection,"ir.module.module.config_wizard.item,state",0,Done,Hecho,0
-selection,"ir.module.module.config_wizard.item,state",0,Open,Abrir,0
-selection,"ir.module.module.dependency,state",0,Installed,Instalado,0
-selection,"ir.module.module.dependency,state",0,Not Installed,No instalado,0
-selection,"ir.module.module.dependency,state",0,To be installed,Por instalar,0
-selection,"ir.module.module.dependency,state",0,To be removed,Por eliminar,0
-selection,"ir.module.module.dependency,state",0,To be upgraded,Por Actualizar,0
-selection,"ir.module.module.dependency,state",0,Unknown,Desconocido,0
-selection,"ir.module.module,state",0,Installed,Instalado,0
-selection,"ir.module.module,state",0,Not Installed,No instalado,0
-selection,"ir.module.module,state",0,To be installed,Por instalar,0
-selection,"ir.module.module,state",0,To be removed,Por eliminar,0
-selection,"ir.module.module,state",0,To be upgraded,Por Actualizar,0
-selection,"ir.rule,operator",0,<=,<=,0
-selection,"ir.rule,operator",0,<>,<>,0
-selection,"ir.rule,operator",0,=,=,0
-selection,"ir.rule,operator",0,>=,>=,0
-selection,"ir.rule,operator",0,child_of,hij at _de,0
-selection,"ir.rule,operator",0,in,en,0
-selection,"ir.translation,type",0,Error,Error,0
-selection,"ir.translation,type",0,Field,Campo,0
-selection,"ir.translation,type",0,Help,Ayuda,0
-selection,"ir.translation,type",0,Model,Modelo,0
-selection,"ir.translation,type",0,ODT,ODT,0
-selection,"ir.translation,type",0,Selection,Selección,0
-selection,"ir.translation,type",0,View,Vista,0
-selection,"ir.translation,type",0,Wizard Button,Botón del Asistente,0
-selection,"ir.ui.menu,action",0,ir.action.act_window,ir.action.act_window,0
-selection,"ir.ui.menu,action",0,ir.action.report,ir.action.report,0
-selection,"ir.ui.menu,action",0,ir.action.url,ir.action.url,0
-selection,"ir.ui.menu,action",0,ir.action.wizard,ir.action.wizard,0
-selection,"ir.ui.menu,icon",0,tryton-accessories,accesorios de Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-attachment,Adjunto de Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-calculator,Caluladora Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-calendar,Calendario Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-clear,Limpia Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-clock,Reloj Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-close,Cerrar Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-connect,Conectar Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-copy,Copiar Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-currency,Moneda Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-delete,Borrar Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-development,Desarrollo Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-dialog-error,Diálogo de Error de Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-dialog-information,Diálogo Informativo de Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-dialog-warning,Diálogo de Alerta de Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-disconnect,Desconexión de Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-executable,Ejecutable Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-find,Encontrar Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-find-replace,Encontrar Reemplazar Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-folder-new,Nuevo Directorio Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-folder-saved-search,Directorio de Búsquedas Guardadas Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-fullscreen,Pantalla Completa Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-go-home,Ir a Inicio Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-go-jump,Saltar Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-go-next,Siguiente Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-go-previous,Anterior Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-graph,Gráfica Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-help,Ayuda Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-image-missing,Imagen Faltante Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-information,Información Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-list,Lista Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-list-add,Adicionar Lista Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-list-remove,Remover Lista Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-locale,Local Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-lock,Bloquear Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-log-out,Salir Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-mail-message-new,Nuevo Mensaje de Correo Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-new,Nuevo Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-noimage,Sin Imagen Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-open,Abrir Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-package,Paquete Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-preferences,Preferencias Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-preferences-system,Sistema de Preferencias Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-preferences-system-session,Preferencias sistema sesión Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-presentation,Presentación Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-print,Imprimir Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-readonly,Sólo lectura Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-refresh,Refrescar Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-save,Guardar Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-save-as,Guardar Como Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-spreadsheet,Hoja de Cálculo Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-start-here,Comenzar Aquí Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-system,Sistema Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-system-file-manager,Sistema Manejo de Archivos Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-tree,Árbol Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-users,Usuarios Tryton,0
-selection,"ir.ui.menu,icon",0,tryton-web-browser,Navegador Web Tryton,0
-selection,"ir.ui.view,type",0,,,0
-selection,"ir.ui.view,type",0,Board,Tablero,0
-selection,"ir.ui.view,type",0,Form,Formulario,0
-selection,"ir.ui.view,type",0,Graph,Gráfico,0
-selection,"ir.ui.view,type",0,Tree,Árbol,0
-view,ir.action,0,Action,Acción,0
-view,ir.action,0,General,General,0
-view,ir.action,0,Keyword,Palabra Clave,0
-view,ir.action,0,Keywords,Palabras Clave,0
-view,ir.action.act_window,0,General,General,0
-view,ir.action.act_window,0,Keyword,Palabra Clave,0
-view,ir.action.act_window,0,Keywords,Palabras Clave,0
-view,ir.action.act_window,0,Open a Window,Abrir una Ventana,0
-view,ir.action.act_window,0,Open Window,Abrir Ventana,0
-view,ir.action.act_window,0,Views,Vistas,0
-view,ir.action.report,0,General,General,0
-view,ir.action.report,0,Keyword,Palabra Clave,0
-view,ir.action.report,0,Keywords,Palabras Clave,0
-view,ir.action.report,0,Report,Reporte,0
-view,ir.action.report,0,Report xml,Reporte xml,0
-view,ir.action.url,0,General,General,0
-view,ir.action.url,0,Keyword,Palabra Clave,0
-view,ir.action.url,0,Keywords,Palabras Clave,0
-view,ir.action.url,0,URL,URL,0
-view,ir.action.wizard,0,General,General,0
-view,ir.action.wizard,0,Keyword,Palabra Clave,0
-view,ir.action.wizard,0,Keywords,Palabras Clave,0
-view,ir.action.wizard,0,Wizard,Asistente,0
-view,ir.action.wizard_size,0,Wizard Size,Tamaño del Asistente,0
-view,ir.action.wizard_size,0,Wizard Sizes,Tamaños del Asistente,0
-view,ir.attachment,0,Attachments,Adjuntos,0
-view,ir.attachment,0,Preview,Vista previa,0
-view,ir.cron,0,Action to trigger,Acción a ejecutarse,0
-view,ir.cron,0,Scheduled Action,Acción agendada,0
-view,ir.cron,0,Scheduled Actions,Acciones agendadas,0
-view,ir.default,0,Default,Predeterminado,0
-view,ir.default,0,Defaults,Predeterminados,0
-view,ir.export,0,Exports,Exportes,0
-view,ir.lang,0,Date Formatting,Formato de Fecha,0
-view,ir.lang,0,Language,Idioma,0
-view,ir.lang,0,Languages,Idiomas,0
-view,ir.lang,0,Numbers Formatting,Formateo de número,0
-view,ir.model,0,Fields Description,Descripción de Campos,0
-view,ir.model,0,Model Description,Descripción del Modelo,0
-view,ir.model.access,0,Access controls,Controles de Acceso,0
-view,ir.model.field,0,Fields,Campos,0
-view,ir.model.print_model_graph.init,0,Print Model Graph,Imprimir Gráfica del Modelo,0
-view,ir.module.module,0,Cancel Installation,Cancelar Instalación,0
-view,ir.module.module,0,Cancel Uninstallation,Cancelar la no instalación,0
-view,ir.module.module,0,Cancel Upgrade,Cancelar actualización,0
-view,ir.module.module,0,Dependencies,Dependencias,0
-view,ir.module.module,0,Mark for Installation,Marcar para Instalación,0
-view,ir.module.module,0,Mark for Uninstallation (beta),Marcar para Desinstalar,0
-view,ir.module.module,0,Mark for Upgrade,Marcar para Actualizar,0
-view,ir.module.module,0,Module,Módulo,0
-view,ir.module.module,0,Modules,Módulos,0
-view,ir.module.module.config_wizard.first,0,depending on the modules you have installed.,dependiendo de los módulos que haya instalado.,0
-view,ir.module.module.config_wizard.first,0,Welcome to the module configuration wizard!,Bienvenido al Asistente de configuración del módulo!,0
-view,ir.module.module.config_wizard.first,0,You will be able to configure your installation,Tendrá oportunidad de configurar su instalación,0
-view,ir.module.module.config_wizard.item,0,Config Wizard Items,Configurar los elementos del Asistente,0
-view,ir.module.module.install_upgrade.init,0,Note that this operation my take a few minutes.,Tenga en cuenta que esta operación puede durar varios minutos.,0
-view,ir.module.module.install_upgrade.init,0,System Upgrade,Actualización del Sistema,0
-view,ir.module.module.install_upgrade.init,0,Your system will be upgraded.,Su sistema se actualizará,0
-view,ir.module.module.install_upgrade.start,0,System upgrade done,Actualización del Sistema finalizada,0
-view,ir.module.module.install_upgrade.start,0,The modules have been upgraded / installed !,Los módulos se actualizaron/instalaron!,0
-view,ir.module.module.install_upgrade.start,0,We suggest you to reload the menu tab (Ctrl+t Ctrl+r).,Le sugerimos recargar la barra de menú(Ctrl+t Ctrlr).,0
-view,ir.module.module.install_upgrade.start,0,You may have to reinstall some language pack.,Es posible que necesite reinstalar un paquete de idioma,0
-view,ir.property,0,Properties,Propiedades,0
-view,ir.property,0,Property,Propiedad,0
-view,ir.rule,0,Test,Prueba,0
-view,ir.rule.group,0,"If there is no test defined, the rule is always satisfied if not global","Si no hay prueba definida, la regla se aplica siempre que no sea global",0
-view,ir.rule.group,0,Record rules,Grabar Reglas,0
-view,ir.rule.group,0,The rule is satisfied if at least one test is True,La regla se satisface si por lo menos una condición es Verdadera,0
-view,ir.sequence,0,${day},${day},0
-view,ir.sequence,0,Day:,Día:,0
-view,ir.sequence,0,"Legend (for prefix, suffix)","Letras (para prefijo, sufijo)",0
-view,ir.sequence,0,"Legend (Placeholders for prefix, suffix)","Leyenda (Lugares para prefijos, sufijos)",0
-view,ir.sequence,0,${month},${month},0
-view,ir.sequence,0,Month:,Mes:,0
-view,ir.sequence,0,Sequences,Secuencias,0
-view,ir.sequence,0,${year},${year},0
-view,ir.sequence,0,Year:,Año:,0
-view,ir.sequence.strict,0,${day},${day},0
-view,ir.sequence.strict,0,Day:,Día:,0
-view,ir.sequence.strict,0,"Legend (for prefix, suffix)","Letras (para prefijo, sufijo)",0
-view,ir.sequence.strict,0,${month},${month},0
-view,ir.sequence.strict,0,Month:,Mes:,0
-view,ir.sequence.strict,0,Sequences Strict,Secuencias Estrictas,0
-view,ir.sequence.strict,0,${year},${year},0
-view,ir.sequence.strict,0,Year:,Año:,0
-view,ir.sequence.type,0,Sequence Type,Tipo de Secuencia,0
-view,ir.translation,0,Translations,Traducciones,0
-view,ir.translation.clean.init,0,Clean Translations,Limpiar Traducciones,0
-view,ir.translation.clean.init,0,Clean Translations?,¿Limpiar Traducciones?,0
-view,ir.translation.clean.start,0,Clean Translations,Limpiar Traducciones,0
-view,ir.translation.clean.start,0,Clean Translations Succeed!,Las traducciones se limpiaron!,0
-view,ir.translation.export.init,0,Export Translation,Exportar Traducción,0
-view,ir.translation.export.start,0,Export Translation,Exportar Traducción,0
-view,ir.translation.set_report.init,0,Set Report Translations,Establecer Traducciones de Reporte,0
-view,ir.translation.set_report.init,0,Synchronize Report Translations?,¿Sincronizar las traducciones de reportes?,0
-view,ir.translation.set_report.init,0,Update Report Translations?,Actualizar Traducciones de Reportes?,0
-view,ir.translation.set_report.start,0,Set Report Translations,Establecer Traducciones de Reporte,0
-view,ir.translation.set_report.start,0,Set Translations Succeed!,Establecimiento de Traducciones exitoso!,0
-view,ir.translation.update.init,0,Synchronize Translations,Sincronizar Traducciones,0
-view,ir.translation.update.init,0,Update Translations,Actualizar Traducción,0
-view,ir.ui.menu,0,Menu,Menú,0
-view,ir.ui.view,0,View,Vista,0
-view,ir.ui.view_sc,0,Shortcut,Atajo,0
-view,ir.ui.view_tree_width,0,Views Tree Width,Ancho de Vista de Árbol,0
-view,ir.ui.view_tree_width,0,View Tree Width,Ancho de Vista de Árbol,0
-wizard_button,"ir.model.print_model_graph,init,end",0,Cancel,Cancelar,0
-wizard_button,"ir.model.print_model_graph,init,print",0,Print,Imprimir,0
-wizard_button,"ir.module.module.config_wizard,first,end",0,Cancel,Cancelar,0
-wizard_button,"ir.module.module.config_wizard,first,wizard",0,Ok,Aceptar,0
-wizard_button,"ir.module.module.install_upgrade,init,end",0,Cancel,Cancelar,0
-wizard_button,"ir.module.module.install_upgrade,init,start",0,Start Upgrade,Iniciar Actualización,0
-wizard_button,"ir.module.module.install_upgrade,start,menu",0,Ok,Aceptar,0
-wizard_button,"ir.translation.clean,init,end",0,Cancel,Cancelar,0
-wizard_button,"ir.translation.clean,init,start",0,Start,Comenzar,0
-wizard_button,"ir.translation.clean,start,end",0,Ok,Aceptar,0
-wizard_button,"ir.translation.export,init,end",0,Cancel,Cancelar,0
-wizard_button,"ir.translation.export,init,start",0,Start Export,Comenzar a Exportar,0
-wizard_button,"ir.translation.export,start,end",0,Close,Cerrar,0
-wizard_button,"ir.translation.set_report,init,end",0,Cancel,Cancelar,0
-wizard_button,"ir.translation.set_report,init,start",0,Start Update,Iniciar Actualización,0
-wizard_button,"ir.translation.set_report,start,end",0,Ok,Aceptar,0
-wizard_button,"ir.translation.update,init,end",0,Cancel,Cancelar,0
-wizard_button,"ir.translation.update,init,start",0,Start Update,Iniciar Actualización,0
diff --git a/trytond/ir/es_ES.csv b/trytond/ir/es_ES.csv
deleted file mode 100644
index 62b7dd4..0000000
--- a/trytond/ir/es_ES.csv
+++ /dev/null
@@ -1,685 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,access_error,0,"You try to bypass an access rule!
-(Document type: %s)","Está intentando evitar una regla de acceso
-(Tipo de documento: %s)",0
-error,delete_workflow_record,0,You cannot delete a record with a running workflow.,No puede borrar un registro involucrado en un flujo activo.,0
-error,delete_xml_record,0,You are not allowed to delete this record.,No está autorizado a borrar este registro.,0
-error,domain_validation_record,0,"The value of the field ""%s"" on ""%s"" is not valid according to its domain.",El valor del campo «%s» en «%s» no es válido según su dominio.,0
-error,foreign_model_exist,0,"Could not delete ""%s"" records because they are used on field ""%s"" of ""%s"".",No se pudieron borrar «%s» registros porque se usan en el campo «%s» de «%s».,0
-error,foreign_model_missing,0,"The value of field ""%s"" on ""%s"" doesn't exist.",El valor del campo «%s» en «%s» no existe.,0
-error,ir.action.keyword,0,Wrong wizard model!,El modelo del asistente no es válido,0
-error,ir.action.report,0,The internal name must be unique by module!,El nombre interno de los módulos debe ser único,0
-error,ir.attachment,0,The names of attachments must be unique by record!,El nombre de los adjuntos debe ser único por cada registro,0
-error,ir.cron,0,Scheduled action failed,La acción programada ha fallado,0
-error,ir.cron,0,"The following action failed to execute properly: ""%s""
- Traceback: 
-
-%s
-","La siguiente acción no se ejecutó correctamente: «%s»
- Traza:
-
-%s
-",0
-error,ir.lang,0,decimal_point and thousands_sep must be different!,«decimal_point» y «thousands_sep» deben ser distintos,0
-error,ir.lang,0,Invalid Grouping!,El agrupamiento no es válido,0
-error,ir.lang,0,The date format is not valid!,El formato de la fecha no es válido,0
-error,ir.model,0,The model must be unique!,El modelo debe ser único,0
-error,ir.model.access,0,Only one record by model and group is allowed!,Solo se permite un registro por modelo y grupo,0
-error,ir.model.access,0,You can not create this kind of document! (%s),No puede crear este tipo de documento (%s),0
-error,ir.model.access,0,You can not delete this document! (%s),No puede borrar este documento (%s),0
-error,ir.model.access,0,You can not read this document! (%s),No puede leer este documento (%s),0
-error,ir.model.access,0,You can not write in this document! (%s),No puede escribir en este documento (%s),0
-error,ir.model.data,0,"The triple (fs_id, module, model) must be unique!","La terna (fs_id, module, model) debe ser única",0
-error,ir.model.field,0,The field name in model must be unique!,El nombre del campo en el modelo debe ser único,0
-error,ir.module.module,0,"Missing dependencies %s for module ""%s""",Faltan las dependencias %s para el módulo «%s»,0
-error,ir.module.module,0,The modules you are trying to uninstall depends on installed modules:,Los módulos que está intentando desinstalar dependen de módulos instalados:,0
-error,ir.module.module,0,The name of the module must be unique!,El nombre del módulo debe ser único,0
-error,ir.module.module,0,You can not remove a module that is installed or will be installed,No puede eliminar un módulo que está instalado o que va a ser instalado,0
-error,ir.module.module.dependency,0,Dependency must be unique by module!,Las dependencias por módulo deben ser únicas,0
-error,ir.rule.group,0,Global and Default are mutually exclusive!,«Global» y «Predeterminado» son mutuamente excluyentes,0
-error,ir.sequence,0,Invalid prefix/suffix!,prefijo/sufijo no válido,0
-error,ir.sequence,0,Missing sequence!,Falta la secuencia,0
-error,ir.sequence.strict,0,Invalid prefix/suffix!,prefijo/sufijo no válido,0
-error,ir.sequence.strict,0,Missing sequence!,Falta la secuencia,0
-error,ir.translation,0,Translation must be unique,La traducción debe ser única,0
-error,ir.ui.view,0,Invalid XML for View!,El XML de la vista no es válido,0
-error,read_error,0,"You try to read records that don't exist anymore!
-(Document type: %s)","Está intentando leer registros que ya no existen
-(Tipo de documento: %s)",0
-error,required_field,0,"The field ""%s"" on ""%s"" is required.",El campo «%s» en «%s» es necesario.,0
-error,required_validation_record,0,"The field ""%s"" on ""%s"" is required.",El campo «%s» en «%s» es necesario.,0
-error,size_validation_record,0,"The field ""%s"" on ""%s"" is too long.",El campo «%s» en «%s» es muy largo.,0
-error,write_error,0,"You try to write on records that don't exist anymore!
-(Document type: %s)","Está tratando de escribir en registros que ya no existen
-(Tipo de documento: %s)",0
-error,write_xml_record,0,You are not allowed to modify this record.,No está autorizado para modificar este registro.,0
-error,xml_record_desc,0,This record is part of the base configuration.,Este registro es parte de la configuración base.,0
-field,"ir.action,active",0,Active,Activo,0
-field,"ir.action.act_window,action",0,Action,Acción,0
-field,"ir.action.act_window,act_window_views",0,Views,Vistas,0
-field,"ir.action.act_window,auto_refresh",0,Auto-Refresh,Auto-Recargar,0
-field,"ir.action.act_window,context",0,Context Value,Valor del contexto,0
-field,"ir.action.act_window,domain",0,Domain Value,Valor del dominio,0
-field,"ir.action.act_window,limit",0,Limit,Límite,0
-field,"ir.action.act_window,rec_name",0,Name,Nombre,0
-field,"ir.action.act_window,res_model",0,Model,Modelo,0
-field,"ir.action.act_window,search_value",0,Search Criteria,Criterio de búsqueda,0
-field,"ir.action.act_window.view,act_window",0,Action,Acción,0
-field,"ir.action.act_window.view,rec_name",0,Name,Nombre,0
-field,"ir.action.act_window,views",0,Views,Vistas,0
-field,"ir.action.act_window.view,sequence",0,Sequence,Secuencia,0
-field,"ir.action.act_window,view_type",0,Type of view,Tipo de vista,0
-field,"ir.action.act_window.view,view",0,View,Vista,0
-field,"ir.action.act_window,window_name",0,Window Name,Nombre de la ventana,0
-field,"ir.action,groups",0,Groups,Grupos,0
-field,"ir.action.keyword,action",0,Action,Acción,0
-field,"ir.action.keyword,keyword",0,Keyword,Palabra clave,0
-field,"ir.action.keyword,model",0,Model,Modelo,0
-field,"ir.action.keyword,rec_name",0,Name,Nombre,0
-field,"ir.action,keywords",0,Keywords,Palabras clave,0
-field,"ir.action,name",0,Name,Nombre,0
-field,"ir.action,rec_name",0,Name,Nombre,0
-field,"ir.action.report,action",0,Action,Acción,0
-field,"ir.action.report,direct_print",0,Direct Print,Impresión directa,0
-field,"ir.action.report,email",0,Email,Correo electrónico,0
-field,"ir.action.report,extension",0,Extension,Extensión,0
-field,"ir.action.report,model",0,Model,Modelo,0
-field,"ir.action.report,module",0,Module,Módulo,0
-field,"ir.action.report,rec_name",0,Name,Nombre,0
-field,"ir.action.report,report",0,Path,Ruta,0
-field,"ir.action.report,report_content",0,Content,Contenido,0
-field,"ir.action.report,report_content_data",0,Content,Contenido,0
-field,"ir.action.report,report_name",0,Internal Name,Nombre interno,0
-field,"ir.action.report,style",0,Style,Estilo,0
-field,"ir.action.report,style_content",0,Style,Estilo,0
-field,"ir.action,type",0,Type,Tipo,0
-field,"ir.action.url,action",0,Action,Acción,0
-field,"ir.action.url,rec_name",0,Name,Nombre,0
-field,"ir.action.url,url",0,Action Url,URL de la acción,0
-field,"ir.action,usage",0,Usage,Uso,0
-field,"ir.action.wizard,action",0,Action,Acción,0
-field,"ir.action.wizard,email",0,Email,Correo electrónico,0
-field,"ir.action.wizard,model",0,Model,Modelo,0
-field,"ir.action.wizard,rec_name",0,Name,Nombre,0
-field,"ir.action.wizard_size,height",0,Height,Altura,0
-field,"ir.action.wizard_size,model",0,Model,Modelo,0
-field,"ir.action.wizard_size,rec_name",0,Name,Nombre,0
-field,"ir.action.wizard_size,user",0,User,Usuario,0
-field,"ir.action.wizard_size,width",0,Width,Ancho,0
-field,"ir.action.wizard_size,wizard",0,Wizard,Asistente,0
-field,"ir.action.wizard,window",0,Window,Ventana,0
-field,"ir.action.wizard,wiz_name",0,Wizard name,Nombre del asistente,0
-field,"ir.attachment,collision",0,Collision,Colisión,0
-field,"ir.attachment,datas",0,Datas,Datos,0
-field,"ir.attachment,datas_size",0,Datas size,Tamaño de los datos,0
-field,"ir.attachment,description",0,Description,Descripción,0
-field,"ir.attachment,digest",0,Digest,Resumen,0
-field,"ir.attachment,link",0,Link,Enlace,0
-field,"ir.attachment,name",0,Attachment Name,Nombre del adjunto,0
-field,"ir.attachment,rec_name",0,Name,Nombre,0
-field,"ir.attachment,res_id",0,Resource ID,ID del recurso,0
-field,"ir.attachment,res_model",0,Resource Model,Modelo del recurso,0
-field,"ir.cache,name",0,Name,Nombre,0
-field,"ir.cache,rec_name",0,Name,Nombre,0
-field,"ir.cache,timestamp",0,Timestamp,Marca de tiempo,0
-field,"ir.cron,active",0,Active,Activo,0
-field,"ir.cron,args",0,Arguments,Argumentos,0
-field,"ir.cron,doall",0,Repeat missed,Reintentar fallidos,0
-field,"ir.cron,function",0,Function,Función,0
-field,"ir.cron,interval_number",0,Interval Number,Número intervalo,0
-field,"ir.cron,interval_type",0,Interval Unit,Unidad intervalo,0
-field,"ir.cron,model",0,Model,Modelo,0
-field,"ir.cron,name",0,Name,Nombre,0
-field,"ir.cron,nextcall",0,Next call date,Siguiente ejecución,0
-field,"ir.cron,numbercall",0,Number of calls,Número ejecuciones,0
-field,"ir.cron,priority",0,Priority,Prioridad,0
-field,"ir.cron,rec_name",0,Name,Nombre,0
-field,"ir.cron,request_user",0,Request User,Ordenante,0
-field,"ir.cron,running",0,Running,En ejecución,0
-field,"ir.cron,user",0,Execution User,Ejecutado por,0
-field,"ir.default,clause",0,Clause,Claúsula,0
-field,"ir.default,field",0,Field,Campo,0
-field,"ir.default,model",0,Model,Modelo,0
-field,"ir.default,rec_name",0,Name,Nombre,0
-field,"ir.default,user",0,User,Usuario,0
-field,"ir.default,value",0,Value,Valor,0
-field,"ir.export,export_fields",0,Fields,Campos,0
-field,"ir.export.line,export",0,Export,Exportar,0
-field,"ir.export.line,name",0,Name,Nombre,0
-field,"ir.export.line,rec_name",0,Name,Nombre,0
-field,"ir.export,name",0,Name,Nombre,0
-field,"ir.export,rec_name",0,Name,Nombre,0
-field,"ir.export,resource",0,Resource,Recurso,0
-field,"ir.lang,active",0,Active,Activo,0
-field,"ir.lang,code",0,Code,Código,0
-field,"ir.lang,date",0,Date,Fecha,0
-field,"ir.lang,decimal_point",0,Decimal Separator,Separador decimal,0
-field,"ir.lang,direction",0,Direction,Dirección,0
-field,"ir.lang,grouping",0,Grouping,Agrupación,0
-field,"ir.lang,name",0,Name,Nombre,0
-field,"ir.lang,rec_name",0,Name,Nombre,0
-field,"ir.lang,thousands_sep",0,Thousands Separator,Separador de miles,0
-field,"ir.lang,translatable",0,Translatable,Traducible,0
-field,"ir.model.access,description",0,Description,Descripción,0
-field,"ir.model.access,group",0,Group,Grupo,0
-field,"ir.model.access,model",0,Model,Modelo,0
-field,"ir.model.access,perm_create",0,Create Access,Acceso para crear,0
-field,"ir.model.access,perm_delete",0,Delete Access,Acceso para borrar,0
-field,"ir.model.access,perm_read",0,Read Access,Acceso para leer,0
-field,"ir.model.access,perm_write",0,Write Access,Acceso para escribir,0
-field,"ir.model.access,rec_name",0,Name,Nombre,0
-field,"ir.model.data,date_init",0,Init Date,Fecha de inicio,0
-field,"ir.model.data,date_update",0,Update Date,Fecha de actualización,0
-field,"ir.model.data,db_id",0,Resource ID,ID del recurso,0
-field,"ir.model.data,fs_id",0,Identifier on File System,Identificador en el sistema de archivos,0
-field,"ir.model.data,inherit",0,Inherit,Hereda,0
-field,"ir.model.data,model",0,Model,Modelo,0
-field,"ir.model.data,module",0,Module,Módulo,0
-field,"ir.model.data,rec_name",0,Name,Nombre,0
-field,"ir.model.data,values",0,Values,Valores,0
-field,"ir.model.field,field_description",0,Field Description,Descripción del campo,0
-field,"ir.model.field,groups",0,Groups,Grupos,0
-field,"ir.model.field,help",0,Help,Ayuda,0
-field,"ir.model.field,model",0,Model,Modelo,0
-field,"ir.model.field,module",0,Module,Módulo,0
-field,"ir.model.field,name",0,Name,Nombre,0
-field,"ir.model.field,rec_name",0,Name,Nombre,0
-field,"ir.model.field,relation",0,Model Relation,Relación del modelo,0
-field,"ir.model,fields",0,Fields,Campos,0
-field,"ir.model.field,ttype",0,Field Type,Tipo de campo,0
-field,"ir.model,info",0,Information,Información,0
-field,"ir.model,model",0,Model Name,Nombre del modelo,0
-field,"ir.model,module",0,Module,Módulo,0
-field,"ir.model,name",0,Model Description,Descripción del modelo,0
-field,"ir.model.print_model_graph.init,level",0,Level,Nivel,0
-field,"ir.model,rec_name",0,Name,Nombre,0
-field,"ir.module.module,author",0,Author,Autor,0
-field,"ir.module.module.config_wizard.item,name",0,Name,Nombre,0
-field,"ir.module.module.config_wizard.item,rec_name",0,Name,Nombre,0
-field,"ir.module.module.config_wizard.item,sequence",0,Sequence,Secuencia,0
-field,"ir.module.module.config_wizard.item,state",0,State,Estado,0
-field,"ir.module.module,dependencies",0,Dependencies,Dependencias,0
-field,"ir.module.module.dependency,module",0,Module,Módulo,0
-field,"ir.module.module.dependency,name",0,Name,Nombre,0
-field,"ir.module.module.dependency,rec_name",0,Name,Nombre,0
-field,"ir.module.module.dependency,state",0,State,Estado,0
-field,"ir.module.module,description",0,Description,Descripción,0
-field,"ir.module.module.install_upgrade.init,module_info",0,Modules to update,Módulos a actualizar,0
-field,"ir.module.module,name",0,Name,Nombre,0
-field,"ir.module.module,rec_name",0,Name,Nombre,0
-field,"ir.module.module,shortdesc",0,Short description,Descripción corta,0
-field,"ir.module.module,state",0,State,Estado,0
-field,"ir.module.module,version",0,Version,Versión,0
-field,"ir.module.module,website",0,Website,Sitio web,0
-field,"ir.property,field",0,Field,Campo,0
-field,"ir.property,name",0,Name,Nombre,0
-field,"ir.property,rec_name",0,Name,Nombre,0
-field,"ir.property,res",0,Resource,Recurso,0
-field,"ir.property,value",0,Value,Valor,0
-field,"ir.rule,field",0,Field,Campo,0
-field,"ir.rule.group,default_p",0,Default,Predeterminado,0
-field,"ir.rule.group,global_p",0,Global,Global,0
-field,"ir.rule.group,groups",0,Groups,Grupos,0
-field,"ir.rule.group,model",0,Model,Modelo,0
-field,"ir.rule.group,name",0,Name,Nombre,0
-field,"ir.rule.group,perm_create",0,Create Access,Acceso para crear,0
-field,"ir.rule.group,perm_delete",0,Delete Access,Acceso para borrar,0
-field,"ir.rule.group,perm_read",0,Read Access,Acceso para leer,0
-field,"ir.rule.group,perm_write",0,Write Access,Acceso para escribir,0
-field,"ir.rule.group,rec_name",0,Name,Nombre,0
-field,"ir.rule.group,rules",0,Tests,Pruebas,0
-field,"ir.rule.group,users",0,Users,Usuarios,0
-field,"ir.rule,operand",0,Operand,Operando,0
-field,"ir.rule,operator",0,Operator,Operador,0
-field,"ir.rule,rec_name",0,Name,Nombre,0
-field,"ir.rule,rule_group",0,Group,Grupo,0
-field,"ir.sequence,active",0,Active,Activo,0
-field,"ir.sequence,code",0,Sequence Type,Tipo de la secuencia,0
-field,"ir.sequence,name",0,Sequence Name,Nombre de la secuencia,0
-field,"ir.sequence,number_increment",0,Increment Number,Cantidad a incrementar,0
-field,"ir.sequence,number_next",0,Next Number,Siguiente número,0
-field,"ir.sequence,padding",0,Number padding,Dígitos de relleno,0
-field,"ir.sequence,prefix",0,Prefix,Prefijo,0
-field,"ir.sequence,rec_name",0,Name,Nombre,0
-field,"ir.sequence.strict,active",0,Active,Activo,0
-field,"ir.sequence.strict,code",0,Sequence Type,Tipo de la secuencia,0
-field,"ir.sequence.strict,name",0,Sequence Name,Nombre de la secuencia,0
-field,"ir.sequence.strict,number_increment",0,Increment Number,Cantidad a incrementar,0
-field,"ir.sequence.strict,number_next",0,Next Number,Número siguiente,0
-field,"ir.sequence.strict,padding",0,Number padding,Dígitos de relleno,0
-field,"ir.sequence.strict,prefix",0,Prefix,Prefijo,0
-field,"ir.sequence.strict,rec_name",0,Name,Nombre,0
-field,"ir.sequence.strict,suffix",0,Suffix,Sufijo,0
-field,"ir.sequence,suffix",0,Suffix,Sufijo,0
-field,"ir.sequence.type,code",0,Sequence Code,Código de la secuencia,0
-field,"ir.sequence.type,name",0,Sequence Name,Nombre de la secuencia,0
-field,"ir.sequence.type,rec_name",0,Name,Nombre,0
-field,"ir.translation.export.init,lang",0,Language,Idioma,0
-field,"ir.translation.export.init,module",0,Module,Módulo,0
-field,"ir.translation.export.start,file",0,File,Archivo,0
-field,"ir.translation,fuzzy",0,Fuzzy,Necesita revisión,0
-field,"ir.translation,lang",0,Language,Idioma,0
-field,"ir.translation,model",0,Model,Modelo,0
-field,"ir.translation,module",0,Module,Módulo,0
-field,"ir.translation,name",0,Field Name,Nombre del campo,0
-field,"ir.translation,rec_name",0,Name,Nombre,0
-field,"ir.translation,res_id",0,Resource ID,ID del recurso,0
-field,"ir.translation,src",0,Source,Fuente,0
-field,"ir.translation,type",0,Type,Tipo,0
-field,"ir.translation.update.init,lang",0,Language,Idioma,0
-field,"ir.translation,value",0,Translation Value,Valor de la traducción,0
-field,"ir.ui.menu,action",0,Action,Acción,0
-field,"ir.ui.menu,active",0,Active,Activo,0
-field,"ir.ui.menu,childs",0,Children,Hijos,0
-field,"ir.ui.menu,complete_name",0,Complete Name,Nombre completo,0
-field,"ir.ui.menu,groups",0,Groups,Grupos,0
-field,"ir.ui.menu,icon",0,Icon,Icono,0
-field,"ir.ui.menu,name",0,Menu,Menú,0
-field,"ir.ui.menu,parent",0,Parent Menu,Menú padre,0
-field,"ir.ui.menu,rec_name",0,Name,Nombre,0
-field,"ir.ui.menu,sequence",0,Sequence,Secuencia,0
-field,"ir.ui.view,arch",0,View Architecture,Ver arquitectura,0
-field,"ir.ui.view,domain",0,Domain,Dominio,0
-field,"ir.ui.view,field_childs",0,Children Field,Campo hijos,0
-field,"ir.ui.view,inherit",0,Inherited View,Vista heredada,0
-field,"ir.ui.view,model",0,Model,Modelo,0
-field,"ir.ui.view,module",0,Module,Módulo,0
-field,"ir.ui.view,priority",0,Priority,Prioridad,0
-field,"ir.ui.view,rec_name",0,Name,Nombre,0
-field,"ir.ui.view_sc,name",0,Shortcut Name,Nombre del marcador,0
-field,"ir.ui.view_sc,rec_name",0,Name,Nombre,0
-field,"ir.ui.view_sc,res_id",0,Resource Ref.,Ref. del recurso,0
-field,"ir.ui.view_sc,resource",0,Resource Name,Nombre del recurso,0
-field,"ir.ui.view_sc,sequence",0,Sequence,Secuencia,0
-field,"ir.ui.view_sc,user_id",0,User Ref.,Ref. del usuario,0
-field,"ir.ui.view_tree_width,field",0,Field,Campo,0
-field,"ir.ui.view_tree_width,model",0,Model,Modelo,0
-field,"ir.ui.view_tree_width,rec_name",0,Name,Nombre,0
-field,"ir.ui.view_tree_width,user",0,User,Usuario,0
-field,"ir.ui.view_tree_width,width",0,Width,Ancho,0
-field,"ir.ui.view,type",0,View Type,Tipo de vista,0
-help,"ir.action.act_window,auto_refresh",0,Add an auto-refresh on the view,Añade un refresco automático a la vista,0
-help,"ir.action.act_window,limit",0,Default limit for the list view,Límite predeterminado para la vista en lista,0
-help,"ir.action.act_window,search_value",0,Default search criteria for the list view,Criterio de búsqueda predeterminado para la vista en lista,0
-help,"ir.action.act_window,window_name",0,Use the action name as window name,Usar el nombre de la acción como el nombre de la ventana,0
-help,"ir.action.report,style",0,Define the style to apply on the report.,Definir el estilo a aplicar al informe.,0
-help,"ir.action.wizard,window",0,Run wizard in a new window,Ejecutar asistente en una nueva ventana,0
-help,"ir.cron,numbercall",0,"Number of times the function is called,
-a negative number indicates that the function will always be called","Número de veces que la función se ejecuta,
-un número negativo indica que la función siempre será ejecutada.",0
-help,"ir.cron,priority",0,"0=Very Urgent
-10=Not urgent","0=Muy urgente
-10=No es urgente",0
-help,"ir.cron,request_user",0,The user who will receive requests in case of failure,El usuario que recibirá peticiones en caso de error,0
-help,"ir.cron,user",0,The user used to execute this action,El usuario que se utilizará para ejecutar esta acción,0
-help,"ir.lang,code",0,RFC 4646 tag: http://tools.ietf.org/html/rfc4646,RFC 4646 tag: http://tools.ietf.org/html/rfc4646,0
-help,"ir.model.data,db_id",0,The id of the record in the database.,El id del registro en la base de datos.,0
-help,"ir.model.data,fs_id",0,The id of the record as known on the file system.,El id del registro tal y como se conoce en el sistema de archivos.,0
-help,"ir.model.field,module",0,Module in which this field is defined,El módulo en el que este campo está definido,0
-help,"ir.model,module",0,Module in which this model is defined,El módulo en el que este modelo está definido,0
-help,"ir.rule.group,default_p",0,Add this rule to all users by default,Añadir esta regla para todos los usuarios de forma predeterminada,0
-help,"ir.rule.group,global_p",0,"Make the rule global 
-so every users must follow this rule","Hacer la regla global
-de forma que todos los usuarios deban seguirla",0
-help,"ir.rule.group,rules",0,The rule is satisfied if at least one test is True,La regla se satisface si al menos una condición es cierta,0
-model,"ir.action.act_window,name",0,Action act window,Ventana de acciones,0
-model,"ir.action.act_window.view,name",0,Action act window view,Vista de ventana de acción,0
-model,"ir.action.keyword,name",0,Action keyword,Palabra clave de acción,0
-model,"ir.action,name",0,Action,Acción,0
-model,"ir.action,name",act_action_form,Actions,Acciones,0
-model,"ir.action,name",act_attachment_form,Attachments,Adjuntos,0
-model,"ir.action,name",act_translation_clean,Clean Translations,Limpiar traducciones,0
-model,"ir.action,name",act_config_wizard_item_form,Config Wizard Items,Configurar los elementos del asistente,0
-model,"ir.action,name",act_property_form_default,Default Properties,Propiedades predeterminadas,0
-model,"ir.action,name",act_default_form,Defaults,Predeterminados,0
-model,"ir.action,name",act_export_form,Exports,Exportaciones,0
-model,"ir.action,name",act_translation_export,Export Translations,Exportar traducciones,0
-model,"ir.action,name",act_model_fields_form,Fields,Campos,0
-model,"ir.action,name",report_model_graph,Graph,Gráfico,0
-model,"ir.action,name",print_model_graph,Graph,Gráfico,0
-model,"ir.action,name",act_lang_form,Languages,Idiomas,0
-model,"ir.action,name",act_menu_tree,Menu,Menú,0
-model,"ir.action,name",act_menu_form,Menus,Menús,0
-model,"ir.action,name",act_model_form,Models,Modelos,0
-model,"ir.action,name",act_model_access_form,Models Access,Acceso a los modelos,0
-model,"ir.action,name",act_module_config_wizard,Module Configuration,Configuración del módulo,0
-model,"ir.action,name",act_module_form,Modules,Módulos,0
-model,"ir.action,name",act_module_install_upgrade,Perform Pending Installation/Upgrade,Realizar Instalaciones/Actualizaciones pendientes,0
-model,"ir.action,name",act_property_form,Properties,Propiedades,0
-model,"ir.action,name",act_rule_group_form,Record Rules,Grabar reglas,0
-model,"ir.action,name",act_action_report_form,Reports,Informes,0
-model,"ir.action,name",act_cron_form,Scheduled Actions,Acciones programadas,0
-model,"ir.action,name",act_sequence_form,Sequences,Secuencias,0
-model,"ir.action,name",act_sequence_strict_form,Sequences Strict,Secuencias estrictas,0
-model,"ir.action,name",act_sequence_type_form,Sequence Types,Tipos de secuencia,0
-model,"ir.action,name",act_translation_set_report,Set Report Translations,Extraer traducciones de los informes,0
-model,"ir.action,name",act_translation_update,Synchronize Translations,Sincronizar traducciones,0
-model,"ir.action,name",act_translation_form,Translations,Traducciones,0
-model,"ir.action,name",act_action_url_form,URLs,URLs,0
-model,"ir.action,name",act_view_form,Views,Vistas,0
-model,"ir.action,name",act_view_sc_form,View Shortcuts,Ver marcadores,0
-model,"ir.action,name",act_view_tree_width_form,View Tree Width,Ancho de la vista en árbol,0
-model,"ir.action,name",act_action_act_window_form,Window Actions,Acciones de la ventana,0
-model,"ir.action,name",act_action_wizard_form,Wizards,Asistentes,0
-model,"ir.action,name",act_action_wizard_size_form,Wizard Sizes,Tamaños de asistente,0
-model,"ir.action.report,name",0,Action report,Informe de acción,0
-model,"ir.action.url,name",0,Action URL,URL de la acción,0
-model,"ir.action.wizard,name",0,Action wizard,Asistente de la acción,0
-model,"ir.action.wizard_size,name",0,Action Wizard Size,Acción tamaño de asistente,0
-model,"ir.attachment,name",0,Attachment,Adjunto,0
-model,"ir.cache,name",0,Cache,Caché,0
-model,"ir.cron,name",0,Cron,Programador de tareas,0
-model,"ir.date,name",0,Date,Fecha,0
-model,"ir.default,name",0,Default,Predeterminado,0
-model,"ir.export.line,name",0,Export line,Exportar línea,0
-model,"ir.export,name",0,Export,Exportar,0
-model,"ir.lang,name",lang_cs,Czech,Checo,0
-model,"ir.lang,name",lang_en,English,Inglés,0
-model,"ir.lang,name",lang_fr,French,Francés,0
-model,"ir.lang,name",lang_de,German,Alemán,0
-model,"ir.lang,name",0,Language,Idioma,0
-model,"ir.lang,name",lang_es_CO,Spanish (Colombia),Español (Colombia),0
-model,"ir.lang,name",lang_es,Spanish (Spain),Español (España),0
-model,"ir.model.access,name",0,Model access,Modelo de accesos,0
-model,"ir.model.data,name",0,Model data,Modelo de datos,0
-model,"ir.model.field,name",0,Model field,Modelo de campo,0
-model,"ir.model,name",0,Model,Modelo,0
-model,"ir.model.print_model_graph.init,name",0,Print Model Graph Init,Imprimir inicio de modelo de gráfico,0
-model,"ir.module.module.config_wizard.first,name",0,Module Config Wizard First,Módulo del primer asistente de configuración,0
-model,"ir.module.module.config_wizard.item,name",0,Config wizard to run after installing module,El asistente de configuración a ejecutar después de instalar un módulo,0
-model,"ir.module.module.dependency,name",0,Module dependency,Dependencias del módulo,0
-model,"ir.module.module.install_upgrade.init,name",0,Module Install Upgrade Init,Inicialización de la actualización de instalación de módulos,0
-model,"ir.module.module.install_upgrade.start,name",0,Module Install Upgrade Start,Iniciar la instalación de actualizaciones de módulos,0
-model,"ir.module.module,name",0,Module,Módulo,0
-model,"ir.property,name",0,Property,Propiedad,0
-model,"ir.rule.group,name",0,Rule group,Regla de grupo,0
-model,"ir.rule,name",0,Rule,Regla,0
-model,"ir.sequence,name",0,Sequence,Secuencia,0
-model,"ir.sequence.strict,name",0,Sequence Strict,Secuencia estricta,0
-model,"ir.sequence.type,name",0,Sequence type,Tipo de secuencia,0
-model,"ir.translation.clean.init,name",0,Clean translation init,Inicialización de la limpieza de traducciones,0
-model,"ir.translation.clean.start,name",0,Clean translation start,Iniciar limpieza de traducciones,0
-model,"ir.translation.export.init,name",0,Export translation - language and module,Exportar traducción - idioma y módulo,0
-model,"ir.translation.export.start,name",0,Export translation - file,Exportar traducción - archivo,0
-model,"ir.translation,name",0,Translation,Traducción,0
-model,"ir.translation.set_report.init,name",0,Update Report Translation,Actualizar traducciones de informes,0
-model,"ir.translation.set_report.start,name",0,Update Report Translation,Actualizar traducciones de informes,0
-model,"ir.translation.update.init,name",0,Update translation - language,Actualiza traducción - idioma,0
-model,"ir.ui.menu,name",menu_action,Actions,Acciones,0
-model,"ir.ui.menu,name",menu_act_action,Actions,Acciones,0
-model,"ir.ui.menu,name",menu_administration,Administration,Administración,0
-model,"ir.ui.menu,name",menu_attachment_form,Attachments,Adjuntos,0
-model,"ir.ui.menu,name",menu_translation_clean,Clean Translations,Limpiar traducciones,0
-model,"ir.ui.menu,name",menu_config_wizard_item_form,Config Wizard Items,Configurar los elementos del asistente,0
-model,"ir.ui.menu,name",menu_property_form_default,Default Properties,Propiedades predeterminadas,0
-model,"ir.ui.menu,name",menu_default_form,Defaults,Predeterminados,0
-model,"ir.ui.menu,name",menu_export_form,Exports,Exportaciones,0
-model,"ir.ui.menu,name",menu_translation_export,Export Translations,Exportar traducciones,0
-model,"ir.ui.menu,name",model_model_fields_form,Fields,Campos,0
-model,"ir.ui.menu,name",menu_lang_form,Languages,Idiomas,0
-model,"ir.ui.menu,name",menu_localization,Localization,Localización,0
-model,"ir.ui.menu,name",menu_menu_form,Menus,Menús,0
-model,"ir.ui.menu,name",menu_models,Models,Modelos,0
-model,"ir.ui.menu,name",menu_model_form,Models,Modelos,0
-model,"ir.ui.menu,name",menu_model_access_form,Models Access,Acceso a los modelos,0
-model,"ir.ui.menu,name",menu_modules,Modules,Módulos,0
-model,"ir.ui.menu,name",menu_module_form,Modules,Módulos,0
-model,"ir.ui.menu,name",menu_module_install_upgrade,Perform Pending Installation/Upgrade,Realizar Instalaciones/Actualizaciones pendientes,0
-model,"ir.ui.menu,name",menu_property_form,Properties,Propiedades,0
-model,"ir.ui.menu,name",menu_rule_group_form,Record Rules,Grabar reglas,0
-model,"ir.ui.menu,name",menu_action_report_form,Reports,Informes,0
-model,"ir.ui.menu,name",menu_cron_form,Scheduled Actions,Acciones programadas,0
-model,"ir.ui.menu,name",menu_scheduler,Scheduler,Programador de tareas,0
-model,"ir.ui.menu,name",menu_sequences,Sequences,Secuencias,0
-model,"ir.ui.menu,name",menu_sequence_form,Sequences,Secuencias,0
-model,"ir.ui.menu,name",menu_sequence_strict_form,Sequences Strict,Secuencias estrictas,0
-model,"ir.ui.menu,name",menu_ir_sequence_type,Sequence Types,Tipos de secuencia,0
-model,"ir.ui.menu,name",menu_translation_set_report,Set Report Translations,Extraer traducciones de los informes,0
-model,"ir.ui.menu,name",menu_translation_update,Synchronize Translations,Sincronizar traducciones,0
-model,"ir.ui.menu,name",menu_translation_form,Translations,Traducciones,0
-model,"ir.ui.menu,name",0,UI menu,Menú UI,0
-model,"ir.ui.menu,name",menu_action_url,URLs,URLs,0
-model,"ir.ui.menu,name",menu_ui,User Interface,Interfaz de usuario,0
-model,"ir.ui.menu,name",menu_view,Views,Vistas,0
-model,"ir.ui.menu,name",menu_view_sc,View Shortcuts,Ver marcadores,0
-model,"ir.ui.menu,name",menu_view_tree_width,View Tree Width,Ancho de la vista en árbol,0
-model,"ir.ui.menu,name",menu_action_act_window,Window Actions,Acciones de la ventana,0
-model,"ir.ui.menu,name",menu_action_wizard,Wizards,Asistentes,0
-model,"ir.ui.menu,name",menu_action_wizard_size,Wizard Sizes,Tamaños de asistente,0
-model,"ir.ui.view,name",0,View,Vista,0
-model,"ir.ui.view_sc,name",0,View shortcut,Vista del marcador,0
-model,"ir.ui.view_tree_width,name",0,View Tree Width,Ancho de la vista en árbol,0
-selection,"ir.action.act_window,view_type",0,Board,Tablón,0
-selection,"ir.action.act_window,view_type",0,Form,Formulario,0
-selection,"ir.action.act_window,view_type",0,Tree,Árbol,0
-selection,"ir.action.keyword,keyword",0,Action form,Formulario de acción,0
-selection,"ir.action.keyword,keyword",0,Action tree,Árbol de acciones,0
-selection,"ir.action.keyword,keyword",0,Form relate,Formulario relacionado,0
-selection,"ir.action.keyword,keyword",0,Open Graph,Abrir gráfico,0
-selection,"ir.action.keyword,keyword",0,Open tree,Desplegar árbol,0
-selection,"ir.action.keyword,keyword",0,Print form,Imprimir formulario,0
-selection,"ir.action.report,extension",0,ODT Document,Documento ODT,0
-selection,"ir.action.report,extension",0,PDF Document,Documento PDF,0
-selection,"ir.cron,interval_type",0,Days,Días,0
-selection,"ir.cron,interval_type",0,Hours,Horas,0
-selection,"ir.cron,interval_type",0,Minutes,Minutos,0
-selection,"ir.cron,interval_type",0,Months,Meses,0
-selection,"ir.cron,interval_type",0,Weeks,Semanas,0
-selection,"ir.cron,interval_type",0,Work Days,Días de trabajo,0
-selection,"ir.lang,direction",0,Left-to-right,De izquierda a derecha,0
-selection,"ir.lang,direction",0,Right-to-left,De derecha a izquierda,0
-selection,"ir.module.module.config_wizard.item,state",0,Done,Terminado,0
-selection,"ir.module.module.config_wizard.item,state",0,Open,Abrir,0
-selection,"ir.module.module.dependency,state",0,Installed,Instalado,0
-selection,"ir.module.module.dependency,state",0,Not Installed,No instalado,0
-selection,"ir.module.module.dependency,state",0,To be installed,Pendiente de instalar,0
-selection,"ir.module.module.dependency,state",0,To be removed,Pendiente de ser eliminado,0
-selection,"ir.module.module.dependency,state",0,To be upgraded,Pendiente de ser actualizado,0
-selection,"ir.module.module.dependency,state",0,Unknown,Desconocido,0
-selection,"ir.module.module,state",0,Installed,Instalado,0
-selection,"ir.module.module,state",0,Not Installed,No instalado,0
-selection,"ir.module.module,state",0,To be installed,Pendiente de ser instalado,0
-selection,"ir.module.module,state",0,To be removed,Pendiente de ser eliminado,0
-selection,"ir.module.module,state",0,To be upgraded,Pendiente de ser actualizado,0
-selection,"ir.rule,operator",0,<=,<=,0
-selection,"ir.rule,operator",0,<>,<>,0
-selection,"ir.rule,operator",0,=,=,0
-selection,"ir.rule,operator",0,>=,>=,0
-selection,"ir.rule,operator",0,child_of,hijo_de,0
-selection,"ir.rule,operator",0,in,en,0
-selection,"ir.translation,type",0,Error,Error,0
-selection,"ir.translation,type",0,Field,Campo,0
-selection,"ir.translation,type",0,Help,Ayuda,0
-selection,"ir.translation,type",0,Model,Modelo,0
-selection,"ir.translation,type",0,ODT,ODT,0
-selection,"ir.translation,type",0,Selection,Selección,0
-selection,"ir.translation,type",0,View,Vista,0
-selection,"ir.translation,type",0,Wizard Button,Botón de asistente,0
-selection,"ir.ui.menu,action",0,ir.action.act_window,ir.action.act_window,0
-selection,"ir.ui.menu,action",0,ir.action.report,ir.action.report,0
-selection,"ir.ui.menu,action",0,ir.action.url,ir.action.url,0
-selection,"ir.ui.menu,action",0,ir.action.wizard,ir.action.wizard,0
-selection,"ir.ui.menu,icon",0,tryton-accessories,tryton-accessories,0
-selection,"ir.ui.menu,icon",0,tryton-attachment,tryton-attachment,0
-selection,"ir.ui.menu,icon",0,tryton-calculator,tryton-calculator,0
-selection,"ir.ui.menu,icon",0,tryton-calendar,tryton-calendar,0
-selection,"ir.ui.menu,icon",0,tryton-clear,tryton-clear,0
-selection,"ir.ui.menu,icon",0,tryton-clock,tryton-clock,0
-selection,"ir.ui.menu,icon",0,tryton-close,tryton-close,0
-selection,"ir.ui.menu,icon",0,tryton-connect,tryton-connect,0
-selection,"ir.ui.menu,icon",0,tryton-copy,tryton-copy,0
-selection,"ir.ui.menu,icon",0,tryton-currency,tryton-currency,0
-selection,"ir.ui.menu,icon",0,tryton-delete,tryton-delete,0
-selection,"ir.ui.menu,icon",0,tryton-development,tryton-development,0
-selection,"ir.ui.menu,icon",0,tryton-dialog-error,tryton-dialog-error,0
-selection,"ir.ui.menu,icon",0,tryton-dialog-information,tryton-dialog-information,0
-selection,"ir.ui.menu,icon",0,tryton-dialog-warning,tryton-dialog-warning,0
-selection,"ir.ui.menu,icon",0,tryton-disconnect,tryton-disconnect,0
-selection,"ir.ui.menu,icon",0,tryton-executable,tryton-executable,0
-selection,"ir.ui.menu,icon",0,tryton-find,tryton-find,0
-selection,"ir.ui.menu,icon",0,tryton-find-replace,tryton-find-replace,0
-selection,"ir.ui.menu,icon",0,tryton-folder-new,tryton-folder-new,0
-selection,"ir.ui.menu,icon",0,tryton-folder-saved-search,tryton-folder-saved-search,0
-selection,"ir.ui.menu,icon",0,tryton-fullscreen,tryton-fullscreen,0
-selection,"ir.ui.menu,icon",0,tryton-go-home,tryton-go-home,0
-selection,"ir.ui.menu,icon",0,tryton-go-jump,tryton-go-jump,0
-selection,"ir.ui.menu,icon",0,tryton-go-next,tryton-go-next,0
-selection,"ir.ui.menu,icon",0,tryton-go-previous,tryton-go-previous,0
-selection,"ir.ui.menu,icon",0,tryton-graph,tryton-graph,0
-selection,"ir.ui.menu,icon",0,tryton-help,tryton-help,0
-selection,"ir.ui.menu,icon",0,tryton-image-missing,tryton-image-missing,0
-selection,"ir.ui.menu,icon",0,tryton-information,tryton-information,0
-selection,"ir.ui.menu,icon",0,tryton-list,tryton-list,0
-selection,"ir.ui.menu,icon",0,tryton-list-add,tryton-list-add,0
-selection,"ir.ui.menu,icon",0,tryton-list-remove,tryton-list-remove,0
-selection,"ir.ui.menu,icon",0,tryton-locale,tryton-locale,0
-selection,"ir.ui.menu,icon",0,tryton-lock,tryton-lock,0
-selection,"ir.ui.menu,icon",0,tryton-log-out,tryton-log-out,0
-selection,"ir.ui.menu,icon",0,tryton-mail-message-new,tryton-mail-message-new,0
-selection,"ir.ui.menu,icon",0,tryton-new,tryton-new,0
-selection,"ir.ui.menu,icon",0,tryton-noimage,tryton-noimage,0
-selection,"ir.ui.menu,icon",0,tryton-open,tryton-open,0
-selection,"ir.ui.menu,icon",0,tryton-package,tryton-package,0
-selection,"ir.ui.menu,icon",0,tryton-preferences,tryton-preferences,0
-selection,"ir.ui.menu,icon",0,tryton-preferences-system,tryton-preferences-system,0
-selection,"ir.ui.menu,icon",0,tryton-preferences-system-session,tryton-preferences-system-session,0
-selection,"ir.ui.menu,icon",0,tryton-presentation,tryton-presentation,0
-selection,"ir.ui.menu,icon",0,tryton-print,tryton-print,0
-selection,"ir.ui.menu,icon",0,tryton-readonly,tryton-readonly,0
-selection,"ir.ui.menu,icon",0,tryton-refresh,tryton-refresh,0
-selection,"ir.ui.menu,icon",0,tryton-save,tryton-save,0
-selection,"ir.ui.menu,icon",0,tryton-save-as,tryton-save-as,0
-selection,"ir.ui.menu,icon",0,tryton-spreadsheet,tryton-spreadsheet,0
-selection,"ir.ui.menu,icon",0,tryton-start-here,tryton-start-here,0
-selection,"ir.ui.menu,icon",0,tryton-system,tryton-system,0
-selection,"ir.ui.menu,icon",0,tryton-system-file-manager,tryton-system-file-manager,0
-selection,"ir.ui.menu,icon",0,tryton-tree,tryton-tree,0
-selection,"ir.ui.menu,icon",0,tryton-users,tryton-users,0
-selection,"ir.ui.menu,icon",0,tryton-web-browser,tryton-web-browser,0
-selection,"ir.ui.view,type",0,,,0
-selection,"ir.ui.view,type",0,Board,Tablón,0
-selection,"ir.ui.view,type",0,Form,Formulario,0
-selection,"ir.ui.view,type",0,Graph,Gráfico,0
-selection,"ir.ui.view,type",0,Tree,Árbol,0
-view,ir.action,0,Action,Acción,0
-view,ir.action,0,General,General,0
-view,ir.action,0,Keyword,Palabra clave,0
-view,ir.action,0,Keywords,Palabras clave,0
-view,ir.action.act_window,0,General,General,0
-view,ir.action.act_window,0,Keyword,Palabra clave,0
-view,ir.action.act_window,0,Keywords,Palabras clave,0
-view,ir.action.act_window,0,Open a Window,Abrir una ventana,0
-view,ir.action.act_window,0,Open Window,Abrir ventana,0
-view,ir.action.act_window,0,Views,Vistas,0
-view,ir.action.report,0,General,General,0
-view,ir.action.report,0,Keyword,Palabra clave,0
-view,ir.action.report,0,Keywords,Palabras clave,0
-view,ir.action.report,0,Report,Informe,0
-view,ir.action.report,0,Report xml,Informe xml,0
-view,ir.action.url,0,General,General,0
-view,ir.action.url,0,Keyword,Palabra clave,0
-view,ir.action.url,0,Keywords,Palabras clave,0
-view,ir.action.url,0,URL,URL,0
-view,ir.action.wizard,0,General,General,0
-view,ir.action.wizard,0,Keyword,Palabra clave,0
-view,ir.action.wizard,0,Keywords,Palabras clave,0
-view,ir.action.wizard,0,Wizard,Asistente,0
-view,ir.action.wizard_size,0,Wizard Size,Tamaño del asistente,0
-view,ir.action.wizard_size,0,Wizard Sizes,Tamaños de asistente,0
-view,ir.attachment,0,Attachments,Adjuntos,0
-view,ir.cron,0,Action to trigger,Acción a disparar,0
-view,ir.cron,0,Scheduled Action,Acción programada,0
-view,ir.cron,0,Scheduled Actions,Acciones programadas,0
-view,ir.default,0,Default,Predeterminado,0
-view,ir.default,0,Defaults,Predeterminados,0
-view,ir.export,0,Exports,Exportaciones,0
-view,ir.lang,0,Date Formatting,Formato de fecha,0
-view,ir.lang,0,Language,Idioma,0
-view,ir.lang,0,Languages,Idiomas,0
-view,ir.lang,0,Numbers Formatting,Formato de números,0
-view,ir.model,0,Fields Description,Descripción de campos,0
-view,ir.model,0,Model Description,Descripción del modelo,0
-view,ir.model.access,0,Access controls,Controles de acceso,0
-view,ir.model.field,0,Fields,Campos,0
-view,ir.model.print_model_graph.init,0,Print Model Graph,Imprimir el gráfico del modelo,0
-view,ir.module.module,0,Cancel Installation,Cancelar instalación,0
-view,ir.module.module,0,Cancel Uninstallation,Cancelar desinstalación,0
-view,ir.module.module,0,Cancel Upgrade,Cancelar actualización,0
-view,ir.module.module,0,Dependencies,Dependencias,0
-view,ir.module.module,0,Mark for Installation,Marcar para instalar,0
-view,ir.module.module,0,Mark for Uninstallation (beta),Marcar para desinstalar (beta),0
-view,ir.module.module,0,Mark for Upgrade,Marcar para actualizar,0
-view,ir.module.module,0,Module,Módulo,0
-view,ir.module.module,0,Modules,Módulos,0
-view,ir.module.module.config_wizard.first,0,depending on the modules you have installed.,dependiendo de los módulos que haya instalado.,0
-view,ir.module.module.config_wizard.first,0,Welcome to the module configuration wizard!,Bienvenido al asistente de configuración del módulo,0
-view,ir.module.module.config_wizard.first,0,You will be able to configure your installation,Podrá configurar su instalación,0
-view,ir.module.module.config_wizard.item,0,Config Wizard Items,Configurar los elementos del asistente,0
-view,ir.module.module.install_upgrade.init,0,Note that this operation my take a few minutes.,Tenga en cuenta que esta operación puede durar varios minutos.,0
-view,ir.module.module.install_upgrade.init,0,System Upgrade,Actualización del sistema,0
-view,ir.module.module.install_upgrade.init,0,Your system will be upgraded.,Su sistema se actualizará.,0
-view,ir.module.module.install_upgrade.start,0,System upgrade done,Actualización del sistema terminada,0
-view,ir.module.module.install_upgrade.start,0,The modules have been upgraded / installed !,Los módulos se han actualizado / instalado,0
-view,ir.module.module.install_upgrade.start,0,We suggest you to reload the menu tab (Ctrl+t Ctrl+r).,Le sugerimos que recargue la barra del menú (Ctrl+t Ctrl+r).,0
-view,ir.module.module.install_upgrade.start,0,You may have to reinstall some language pack.,Es posible que necesite reinstalar un paquete de idioma.,0
-view,ir.property,0,Properties,Propiedades,0
-view,ir.property,0,Property,Propiedad,0
-view,ir.rule,0,Test,Prueba,0
-view,ir.rule.group,0,"If there is no test defined, the rule is always satisfied if not global","Si no hay ninguna prueba definida, la regla se aplica siempre que no sea global",0
-view,ir.rule.group,0,Record rules,Grabar reglas,0
-view,ir.rule.group,0,The rule is satisfied if at least one test is True,La regla se satisface si por lo menos una condición es verdadera,0
-view,ir.sequence,0,${day},${day},0
-view,ir.sequence,0,Day:,Día:,0
-view,ir.sequence,0,"Legend (for prefix, suffix)","Leyenda (para prefijo, sufijo)",0
-view,ir.sequence,0,"Legend (Placeholders for prefix, suffix)",Leyenda (variables para usar en prefijo y/o sufijo),0
-view,ir.sequence,0,${month},${month},0
-view,ir.sequence,0,Month:,Mes:,0
-view,ir.sequence,0,Sequences,Secuencias,0
-view,ir.sequence,0,${year},${year},0
-view,ir.sequence,0,Year:,Año:,0
-view,ir.sequence.strict,0,${day},${day},0
-view,ir.sequence.strict,0,Day:,Día:,0
-view,ir.sequence.strict,0,"Legend (for prefix, suffix)",Leyenda (variables para usar en prefijo y/o sufijo),0
-view,ir.sequence.strict,0,${month},${month},0
-view,ir.sequence.strict,0,Month:,Mes:,0
-view,ir.sequence.strict,0,Sequences Strict,Secuencias estrictas,0
-view,ir.sequence.strict,0,${year},${year},0
-view,ir.sequence.strict,0,Year:,Año:,0
-view,ir.sequence.type,0,Sequence Type,Tipo de secuencia,0
-view,ir.translation,0,Translations,Traducciones,0
-view,ir.translation.clean.init,0,Clean Translations,Limpiar Traducciones,0
-view,ir.translation.clean.init,0,Clean Translations?,¿Limpiar traducciones?,0
-view,ir.translation.clean.start,0,Clean Translations,Limpiar Traducciones,0
-view,ir.translation.clean.start,0,Clean Translations Succeed!,Las traducciones se limpiaron correctamente,0
-view,ir.translation.export.init,0,Export Translation,Exportar traducción,0
-view,ir.translation.export.start,0,Export Translation,Exportar traducción,0
-view,ir.translation.set_report.init,0,Set Report Translations,Extraer traducciones de informes,0
-view,ir.translation.set_report.init,0,Synchronize Report Translations?,¿Sincronizar las traducciones de los informes?,0
-view,ir.translation.set_report.init,0,Update Report Translations?,¿Actualizar las traducciones de los informes?,0
-view,ir.translation.set_report.start,0,Set Report Translations,Extraer traducciones de los informes,0
-view,ir.translation.set_report.start,0,Set Translations Succeed!,La extracción de las traducciones terminó correctamente,0
-view,ir.translation.update.init,0,Synchronize Translations,Sincronizar traducciones,0
-view,ir.translation.update.init,0,Update Translations,Actualizar traducciones,0
-view,ir.ui.menu,0,Menu,Menú,0
-view,ir.ui.view,0,View,Vista,0
-view,ir.ui.view_sc,0,Shortcut,Marcador,0
-view,ir.ui.view_tree_width,0,Views Tree Width,Ancho de la vista en árbol,0
-view,ir.ui.view_tree_width,0,View Tree Width,Ancho de la vista en árbol,0
-wizard_button,"ir.model.print_model_graph,init,end",0,Cancel,Cancelar,0
-wizard_button,"ir.model.print_model_graph,init,print",0,Print,Imprimir,0
-wizard_button,"ir.module.module.config_wizard,first,end",0,Cancel,Cancelar,0
-wizard_button,"ir.module.module.config_wizard,first,wizard",0,Ok,Aceptar,0
-wizard_button,"ir.module.module.install_upgrade,init,end",0,Cancel,Cancelar,0
-wizard_button,"ir.module.module.install_upgrade,init,start",0,Start Upgrade,Iniciar actualización,0
-wizard_button,"ir.module.module.install_upgrade,start,menu",0,Ok,Aceptar,0
-wizard_button,"ir.translation.clean,init,end",0,Cancel,Cancelar,0
-wizard_button,"ir.translation.clean,init,start",0,Start,Iniciar,0
-wizard_button,"ir.translation.clean,start,end",0,Ok,Aceptar,0
-wizard_button,"ir.translation.export,init,end",0,Cancel,Cancelar,0
-wizard_button,"ir.translation.export,init,start",0,Start Export,Iniciar exportación,0
-wizard_button,"ir.translation.export,start,end",0,Close,Cerrar,0
-wizard_button,"ir.translation.set_report,init,end",0,Cancel,Cancelar,0
-wizard_button,"ir.translation.set_report,init,start",0,Start Update,Iniciar actualización,0
-wizard_button,"ir.translation.set_report,start,end",0,Ok,Aceptar,0
-wizard_button,"ir.translation.update,init,end",0,Cancel,Cancelar,0
-wizard_button,"ir.translation.update,init,start",0,Start Update,Iniciar actualización,0
diff --git a/trytond/ir/export.xml b/trytond/ir/export.xml
index 89452fb..857dbe6 100644
--- a/trytond/ir/export.xml
+++ b/trytond/ir/export.xml
@@ -24,8 +24,8 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Exports">
-                    <field name="name" select="1"/>
-                    <field name="resource" select="1"/>
+                    <field name="name"/>
+                    <field name="resource"/>
                 </tree>
                 ]]>
             </field>
diff --git a/trytond/ir/fr_FR.csv b/trytond/ir/fr_FR.csv
deleted file mode 100644
index 92a62a2..0000000
--- a/trytond/ir/fr_FR.csv
+++ /dev/null
@@ -1,786 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,access_error,0,"You try to bypass an access rule!
-(Document type: %s)","Vous essayez d'enfreindre une règle d'accès
-(Type du document: %s)",0
-error,delete_workflow_record,0,You cannot delete a record with a running workflow.,Vous ne pouvez pas supprimer un enregistrement avec un workflow actif.,0
-error,delete_xml_record,0,You are not allowed to delete this record.,Vous n'êtes pas authorisé à supprimer cet enregistrement,0
-error,digits_validation_record,0,"The field ""%s"" on ""%s"" has too many decimal digits.","Le champ ""%s"" de ""%s"" à trop de décimales.",0
-error,domain_validation_record,0,"The value of the field ""%s"" on ""%s"" is not valid according to its domain.","La valeur du champ ""%s"" de ""%s"" n'est pas valide suivant son domaine.",0
-error,foreign_model_exist,0,"Could not delete ""%s"" records because they are used on field ""%s"" of ""%s"".","Impossible de supprimer les enregistrements ""%s"" car ils sont utilisé dans le champ ""%s"" de ""%s"".",0
-error,foreign_model_missing,0,"The value of field ""%s"" on ""%s"" doesn't exist.","La valeur du champ ""%s"" de ""%s"" est absente.",0
-error,ir.action.act_window,0,Invalid context!,Contexte invalide !,0
-error,ir.action.act_window,0,Invalid domain!,Domaine invalide !,0
-error,ir.action.act_window,0,Invalid search criteria!,Critère de recherche invalide !,0
-error,ir.action.act_window,0,Invalid views!,Vues invalides !,0
-error,ir.action.keyword,0,Wrong wizard model!,Mauvais modèle d'assistant,0
-error,ir.action.report,0,The internal name must be unique by module!,Le nom interne doit être unique par module !,0
-error,ir.attachment,0,The  names of attachments must be unique by resource!,Le nom des pièces jointes doivent être unique pour une même ressource !,0
-error,ir.cron,0,Scheduled action failed,L'action planifiée a échoué,0
-error,ir.cron,0,"The following action failed to execute properly: ""%s""
- Traceback: 
-
-%s
-","L'action suivante ne c'est pas exécutée correctement: ""%s""
- Traceback: 
-
-%s
-",0
-error,ir.lang,0,Invalid Grouping!,Groupement incorrect !,0
-error,ir.lang,0,The date format is not valid!,Le format de date est incorrect !,0
-error,ir.lang,0,decimal_point and thousands_sep must be different!,Le séparateur de décimale et le séparateur des centaines doivent être différents !,0
-error,ir.model,0,Module Name must be a python identifier!,Le nom d'un module doit être un identifiant Python,0
-error,ir.model,0,The model must be unique!,Le modèle doit être unique !,0
-error,ir.model.access,0,Only one record by model and group is allowed!,Un seul enregistrement par modèle et groupe est autorisé !,0
-error,ir.model.access,0,You can not create this kind of document! (%s),Vous ne pouvez pas créer ce type de document ! (%s),0
-error,ir.model.access,0,You can not delete this document! (%s),Vous ne pouvez pas supprimer ce document ! (%s),0
-error,ir.model.access,0,You can not read this document! (%s),Vous ne pouvez pas lire ce document ! (%s),0
-error,ir.model.access,0,You can not write in this document! (%s),Vous ne pouvez pas écrire dans ce document ! (%s),0
-error,ir.model.data,0,"The triple (fs_id, module, model) must be unique!","Le triplet (fs_id, module, model) doit être unique !",0
-error,ir.model.field,0,Model Field Name must be a python identifier!,Le nom du champ doit être un identifiant Python valide !,0
-error,ir.model.field,0,The field name in model must be unique!,Le nom du champ doit être unique sur le modèle !,0
-error,ir.model.field.access,0,Only one record by field and group is allowed!,Seul un enregistrement par champs et par groupe est permis !,0
-error,ir.model.field.access,0,You can not read the field! (%s.%s),Vous ne pouvez lire le champs (%s.%s) !,0
-error,ir.model.field.access,0,You can not write on the field! (%s.%s),Vous ne pouvez écrire sur le champs (%s.%s) !,0
-error,ir.module.module,0,"Missing dependencies %s for module ""%s""","Dépendences %s manquante pour le module ""%s""",0
-error,ir.module.module,0,The modules you are trying to uninstall depends on installed modules:,Les modules que vous essayez de dés-installer dépendent de modules installés :,0
-error,ir.module.module,0,The name of the module must be unique!,Le nom du module doit être unique,0
-error,ir.module.module,0,You can not remove a module that is installed or will be installed,Vous ne pouvez pas supprimer un module qui est installé ou qui le sera,0
-error,ir.module.module.dependency,0,Dependency must be unique by module!,Une dépendance doit être unique par module !,0
-error,ir.rule.group,0,Global and Default are mutually exclusive!,Global et Défaut sont exclusifs !,0
-error,ir.sequence,0,Invalid prefix/suffix!,Prefixe/suffixe non valide !,0
-error,ir.sequence,0,Last Timestamp could not be in future!,La dernière estampille ne peut être dans le futur !,0
-error,ir.sequence,0,Missing sequence!,Séquence manquante !,0
-error,ir.sequence.strict,0,Invalid prefix/suffix!,Prefixe/suffixe non valide !,0
-error,ir.sequence.strict,0,Last Timestamp could not be in future!,La dernière estampille ne peut être dans le futur !,0
-error,ir.sequence.strict,0,Missing sequence!,Séquence manquante !,0
-error,ir.translation,0,Translation must be unique,La traduction doit être unique,0
-error,ir.translation,0,Translation of type 'model' must be unique!,Une traduction du type 'modèle' dois être unique!,0
-error,ir.trigger,0,"""On Time"" and others are mutually exclusive!","""À temps"" exclus les autres type de déclencheurs !",0
-error,ir.trigger,0,Condition must be a python expression!,La condition doit être une expression Python!,0
-error,ir.ui.view,0,Invalid XML for View!,L'xml de la vue n'est pas valide !,0
-error,not_found_in_selection,0,Key %r not found in selection field %r,Clé %r non trouvée dans la sélection %r,0
-error,read_error,0,"You try to read records that don't exist anymore!
-(Document type: %s)","Vous essayez de lire un enregistrement qui n'existe plus !
-(Type du document: %s)",0
-error,reference_syntax_error,0,Syntax error for reference %r in %s,Erreur de syntaxe pour la référence %r de %r,0
-error,relation_not_found,0,Relation not found: %r in %s,Relation non trouvée : %r dans %r,0
-error,required_field,0,"The field ""%s"" on ""%s"" is required.","Le champ ""%s"" de ""%s"" est requis.",0
-error,required_validation_record,0,"The field ""%s"" on ""%s"" is required.","Le champ ""%s"" de ""%s"" est requis.",0
-error,search_function_missing,0,"Missing search function on field ""%s"".","Fonction de recherche absente pour le champ ""%s"".",0
-error,size_validation_record,0,"The field ""%s"" on ""%s"" is too long.","Le champ ""%s"" de ""%s"" est trop long",0
-error,too_many_relations_found,0,Too many relations found: %r in %s,Trop de relations pour : %r dans %s,0
-error,write_error,0,"You try to write on records that don't exist anymore!
-(Document type: %s)","Vous essayez d'écrire sur un enregistrement qui n'existe plus !
-(Type du document: %s)",0
-error,write_xml_record,0,You are not allowed to modify this record.,Vous n'êtes pas autorisé à modifier cet enregistrement.,0
-error,xml_id_syntax_error,0,Syntax error for XML id %r in %s,Erreur de syntaxe XML pour l'ID %r de %s,0
-error,xml_record_desc,0,This record is part of the base configuration.,Cet enregistrement fait partie de la configuration de base.,0
-field,"ir.action,active",0,Active,Actif,0
-field,"ir.action,groups",0,Groups,Groupes,0
-field,"ir.action,icon",0,Icon,Icône,1
-field,"ir.action,keywords",0,Keywords,Mots-clés,0
-field,"ir.action,name",0,Name,Nom,0
-field,"ir.action,rec_name",0,Name,Nom,0
-field,"ir.action,type",0,Type,Type,0
-field,"ir.action,usage",0,Usage,Utilisation,0
-field,"ir.action.act_window,act_window_views",0,Views,Vues,0
-field,"ir.action.act_window,action",0,Action,Action,0
-field,"ir.action.act_window,auto_refresh",0,Auto-Refresh,Auto-rafraîchissement,0
-field,"ir.action.act_window,context",0,Context Value,Valeur contextuelle,0
-field,"ir.action.act_window,domain",0,Domain Value,Valeur du domaine,0
-field,"ir.action.act_window,limit",0,Limit,Limite,0
-field,"ir.action.act_window,pyson_context",0,PySON Context,Contexte PySON,0
-field,"ir.action.act_window,pyson_domain",0,PySON Domain,Domaine PySON,0
-field,"ir.action.act_window,pyson_search_value",0,PySON Search Criteria,Critère de recherche PySON,0
-field,"ir.action.act_window,rec_name",0,Name,Nom,0
-field,"ir.action.act_window,res_model",0,Model,Modèle,0
-field,"ir.action.act_window,search_value",0,Search Criteria,Critères de recherche,0
-field,"ir.action.act_window,views",0,Views,Vues,0
-field,"ir.action.act_window,window_name",0,Window Name,Nom de la fenêtre,0
-field,"ir.action.act_window.view,act_window",0,Action,Action,0
-field,"ir.action.act_window.view,rec_name",0,Name,Nom,0
-field,"ir.action.act_window.view,sequence",0,Sequence,Séquence,0
-field,"ir.action.act_window.view,view",0,View,Vue,0
-field,"ir.action.keyword,action",0,Action,Action,0
-field,"ir.action.keyword,keyword",0,Keyword,Mot-clé,0
-field,"ir.action.keyword,model",0,Model,Modèle,0
-field,"ir.action.keyword,rec_name",0,Name,Nom,0
-field,"ir.action.report,action",0,Action,Action,0
-field,"ir.action.report,direct_print",0,Direct Print,Imprimer directement,0
-field,"ir.action.report,email",0,Email,E-mail,0
-field,"ir.action.report,extension",0,Extension,Extension,0
-field,"ir.action.report,model",0,Model,Modèle,0
-field,"ir.action.report,module",0,Module,Module,0
-field,"ir.action.report,pyson_email",0,PySON Email,,0
-field,"ir.action.report,rec_name",0,Name,Nom,0
-field,"ir.action.report,report",0,Path,Chemin,0
-field,"ir.action.report,report_content",0,Content,Contenu,0
-field,"ir.action.report,report_content_data",0,Content,Contenu,0
-field,"ir.action.report,report_name",0,Internal Name,Nom interne,0
-field,"ir.action.report,style",0,Style,Style,0
-field,"ir.action.report,style_content",0,Style,Style,0
-field,"ir.action.url,action",0,Action,Action,0
-field,"ir.action.url,rec_name",0,Name,Nom,0
-field,"ir.action.url,url",0,Action Url,Url,0
-field,"ir.action.wizard,action",0,Action,Action,0
-field,"ir.action.wizard,email",0,Email,E-mail,0
-field,"ir.action.wizard,model",0,Model,Modèle,0
-field,"ir.action.wizard,rec_name",0,Name,Nom,0
-field,"ir.action.wizard,window",0,Window,Onglet,0
-field,"ir.action.wizard,wiz_name",0,Wizard name,Nom de l'assistant,0
-field,"ir.action.wizard_size,height",0,Height,Hauteur,0
-field,"ir.action.wizard_size,model",0,Model,Modèle,0
-field,"ir.action.wizard_size,rec_name",0,Name,Nom,0
-field,"ir.action.wizard_size,user",0,User,Utilisateur,0
-field,"ir.action.wizard_size,width",0,Width,Largeur,0
-field,"ir.action.wizard_size,wizard",0,Wizard,Assistant,0
-field,"ir.attachment,collision",0,Collision,Collision,0
-field,"ir.attachment,data",0,Data,Données,0
-field,"ir.attachment,data_size",0,Data size,Taille des données,0
-field,"ir.attachment,description",0,Description,Description,0
-field,"ir.attachment,digest",0,Digest,Empreinte,0
-field,"ir.attachment,last_modification",0,Last Modification,Dernière modification,0
-field,"ir.attachment,last_user",0,Last User,Dernier utilisateur,0
-field,"ir.attachment,link",0,Link,Lien,0
-field,"ir.attachment,name",0,Name,Nom de la pièce jointe,0
-field,"ir.attachment,rec_name",0,Name,Nom,0
-field,"ir.attachment,resource",0,Resource,Ressource,0
-field,"ir.attachment,summary",0,Summary,Résumé,1
-field,"ir.attachment,type",0,Type,Type,1
-field,"ir.cache,name",0,Name,Nom,0
-field,"ir.cache,rec_name",0,Name,Nom,0
-field,"ir.cache,timestamp",0,Timestamp,Estampille,0
-field,"ir.cron,active",0,Active,Actif,0
-field,"ir.cron,args",0,Arguments,Arguments,0
-field,"ir.cron,doall",0,Repeat missed,Répéter les appels manqués,0
-field,"ir.cron,function",0,Function,Fonction,0
-field,"ir.cron,interval_number",0,Interval Number,Nombre d'intervalles,0
-field,"ir.cron,interval_type",0,Interval Unit,Unité d'intervalle,0
-field,"ir.cron,model",0,Model,Modèle,0
-field,"ir.cron,name",0,Name,Nom,0
-field,"ir.cron,nextcall",0,Next call date,Date d'appel suivant,0
-field,"ir.cron,numbercall",0,Number of calls,Nombre d'appels,0
-field,"ir.cron,priority",0,Priority,Priorité,0
-field,"ir.cron,rec_name",0,Name,Nom,0
-field,"ir.cron,request_user",0,Request User,Requête utilisateur,0
-field,"ir.cron,running",0,Running,En cours,0
-field,"ir.cron,user",0,Execution User,Utilisateur,0
-field,"ir.export,export_fields",0,Fields,Champs,0
-field,"ir.export,name",0,Name,Nom,0
-field,"ir.export,rec_name",0,Name,Nom,0
-field,"ir.export,resource",0,Resource,Ressource,0
-field,"ir.export.line,export",0,Export,Exportation,0
-field,"ir.export.line,name",0,Name,Nom,0
-field,"ir.export.line,rec_name",0,Name,Nom,0
-field,"ir.lang,active",0,Active,Actif,0
-field,"ir.lang,code",0,Code,Code,0
-field,"ir.lang,date",0,Date,Date,0
-field,"ir.lang,decimal_point",0,Decimal Separator,Séparateur de décimale,0
-field,"ir.lang,direction",0,Direction,Direction,0
-field,"ir.lang,grouping",0,Grouping,Groupement,0
-field,"ir.lang,name",0,Name,Nom,0
-field,"ir.lang,rec_name",0,Name,Nom,0
-field,"ir.lang,thousands_sep",0,Thousands Separator,Séparateur des centaines,0
-field,"ir.lang,translatable",0,Translatable,Traduisible,0
-field,"ir.model,fields",0,Fields,Champs,0
-field,"ir.model,info",0,Information,Information,0
-field,"ir.model,model",0,Model Name,Nom de l'objet,0
-field,"ir.model,module",0,Module,Module,0
-field,"ir.model,name",0,Model Description,Nom du modèle,0
-field,"ir.model,rec_name",0,Name,Nom,0
-field,"ir.model.access,description",0,Description,Description,0
-field,"ir.model.access,group",0,Group,Groupe,0
-field,"ir.model.access,model",0,Model,Modèle,0
-field,"ir.model.access,perm_create",0,Create Access,Accès en creation,0
-field,"ir.model.access,perm_delete",0,Delete Access,Accès en suppression,0
-field,"ir.model.access,perm_read",0,Read Access,Accès en lecture,0
-field,"ir.model.access,perm_write",0,Write Access,Accès en écriture,0
-field,"ir.model.access,rec_name",0,Name,Nom,0
-field,"ir.model.data,date_init",0,Init Date,Date d'initialisation,0
-field,"ir.model.data,date_update",0,Update Date,Date de mis à jour,0
-field,"ir.model.data,db_id",0,Resource ID,ID de la ressource,0
-field,"ir.model.data,fs_id",0,Identifier on File System,Identifiant sur le système de fichier,0
-field,"ir.model.data,inherit",0,Inherit,Hérité,0
-field,"ir.model.data,model",0,Model,Modèle,0
-field,"ir.model.data,module",0,Module,Module,0
-field,"ir.model.data,noupdate",0,No Update,Pas de mise à jour,0
-field,"ir.model.data,rec_name",0,Name,Nom,0
-field,"ir.model.data,values",0,Values,Valeurs,0
-field,"ir.model.field,field_description",0,Field Description,Champ de description,0
-field,"ir.model.field,groups",0,Groups,Groupes,0
-field,"ir.model.field,help",0,Help,Aide,0
-field,"ir.model.field,model",0,Model,Modèle,0
-field,"ir.model.field,module",0,Module,Module,0
-field,"ir.model.field,name",0,Name,Nom,0
-field,"ir.model.field,rec_name",0,Name,Nom,0
-field,"ir.model.field,relation",0,Model Relation,Relation du modèle,0
-field,"ir.model.field,ttype",0,Field Type,Champ du type,0
-field,"ir.model.field.access,description",0,Description,Description,1
-field,"ir.model.field.access,field",0,Field,Champ,1
-field,"ir.model.field.access,group",0,Group,Groupe,1
-field,"ir.model.field.access,perm_read",0,Read Access,Accès en lecture,1
-field,"ir.model.field.access,perm_write",0,Write Access,Accès en écriture,1
-field,"ir.model.field.access,rec_name",0,Name,Nom de la pièce jointe,1
-field,"ir.model.print_model_graph.init,filter",0,Filter,Filtre,0
-field,"ir.model.print_model_graph.init,level",0,Level,Niveau,0
-field,"ir.module.module,author",0,Author,Auteur,0
-field,"ir.module.module,dependencies",0,Dependencies,Dépendances,0
-field,"ir.module.module,description",0,Description,Description,0
-field,"ir.module.module,name",0,Name,Nom,0
-field,"ir.module.module,rec_name",0,Name,Nom,0
-field,"ir.module.module,shortdesc",0,Short description,Description courte,0
-field,"ir.module.module,state",0,State,État,0
-field,"ir.module.module,version",0,Version,Version,0
-field,"ir.module.module,website",0,Website,Site web,0
-field,"ir.module.module.config_wizard.item,name",0,Name,Nom,0
-field,"ir.module.module.config_wizard.item,rec_name",0,Name,Nom,0
-field,"ir.module.module.config_wizard.item,sequence",0,Sequence,Séquence,0
-field,"ir.module.module.config_wizard.item,state",0,State,État,0
-field,"ir.module.module.dependency,module",0,Module,Module,0
-field,"ir.module.module.dependency,name",0,Name,Nom,0
-field,"ir.module.module.dependency,rec_name",0,Name,Nom,0
-field,"ir.module.module.dependency,state",0,State,État,0
-field,"ir.module.module.install_upgrade.init,module_info",0,Modules to update,Modules à mettre à jours,0
-field,"ir.property,field",0,Field,Champ,0
-field,"ir.property,name",0,Name,Nom,0
-field,"ir.property,rec_name",0,Name,Nom,0
-field,"ir.property,res",0,Resource,Ressource,0
-field,"ir.property,value",0,Value,Valeur,0
-field,"ir.rule,field",0,Field,Champ,0
-field,"ir.rule,operand",0,Operand,Opérande,0
-field,"ir.rule,operator",0,Operator,Opérateur,0
-field,"ir.rule,rec_name",0,Name,Nom,0
-field,"ir.rule,rule_group",0,Group,Groupe,0
-field,"ir.rule.group,default_p",0,Default,Défaut,0
-field,"ir.rule.group,global_p",0,Global,Global,0
-field,"ir.rule.group,groups",0,Groups,Groupes,0
-field,"ir.rule.group,model",0,Model,Modèle,0
-field,"ir.rule.group,name",0,Name,Nom,0
-field,"ir.rule.group,perm_create",0,Create Access,Accès en creation,0
-field,"ir.rule.group,perm_delete",0,Delete Access,Accès en suppression,0
-field,"ir.rule.group,perm_read",0,Read Access,Accès en lecture,0
-field,"ir.rule.group,perm_write",0,Write Access,Accès en écriture,0
-field,"ir.rule.group,rec_name",0,Name,Nom,0
-field,"ir.rule.group,rules",0,Tests,Tests,0
-field,"ir.rule.group,users",0,Users,Utilisateurs,0
-field,"ir.sequence,active",0,Active,Actif,0
-field,"ir.sequence,code",0,Sequence Code,Type de séquence,0
-field,"ir.sequence,last_timestamp",0,Last Timestamp,Dernière estampille,0
-field,"ir.sequence,name",0,Sequence Name,Nom de la séquence,0
-field,"ir.sequence,number_increment",0,Increment Number,Nombre d'incrément,0
-field,"ir.sequence,number_next",0,Next Number,Numéro suivant,0
-field,"ir.sequence,padding",0,Number padding,Nombre de chiffres,0
-field,"ir.sequence,prefix",0,Prefix,Préfixe,0
-field,"ir.sequence,rec_name",0,Name,Nom,0
-field,"ir.sequence,suffix",0,Suffix,Suffixe,0
-field,"ir.sequence,timestamp_offset",0,Timestamp Offset,Décalage estampille,0
-field,"ir.sequence,timestamp_rounding",0,Timestamp Rounding,Arrondi de l'estampille,0
-field,"ir.sequence,type",0,Type,Type,0
-field,"ir.sequence.strict,active",0,Active,Actif,0
-field,"ir.sequence.strict,code",0,Sequence Code,Type de séquence,0
-field,"ir.sequence.strict,last_timestamp",0,Last Timestamp,Dernière estampille,0
-field,"ir.sequence.strict,name",0,Sequence Name,Nom,0
-field,"ir.sequence.strict,number_increment",0,Increment Number,Incrément,0
-field,"ir.sequence.strict,number_next",0,Next Number,Nombre suivant,0
-field,"ir.sequence.strict,padding",0,Number padding,Nombre de chiffes,0
-field,"ir.sequence.strict,prefix",0,Prefix,Préfixe,0
-field,"ir.sequence.strict,rec_name",0,Name,Nom,0
-field,"ir.sequence.strict,suffix",0,Suffix,Suffixe,0
-field,"ir.sequence.strict,timestamp_offset",0,Timestamp Offset,Décalage d'estampille,0
-field,"ir.sequence.strict,timestamp_rounding",0,Timestamp Rounding,Arrondi de l'estampille,0
-field,"ir.sequence.strict,type",0,Type,Type,0
-field,"ir.sequence.type,code",0,Sequence Code,Code de la séquence,0
-field,"ir.sequence.type,name",0,Sequence Name,Nom de la séquence,0
-field,"ir.sequence.type,rec_name",0,Name,Nom,0
-field,"ir.translation,fuzzy",0,Fuzzy,Floue,0
-field,"ir.translation,lang",0,Language,Langue,0
-field,"ir.translation,model",0,Model,Modèle,0
-field,"ir.translation,module",0,Module,Module,0
-field,"ir.translation,name",0,Field Name,Nom du champ,0
-field,"ir.translation,rec_name",0,Name,Nom,0
-field,"ir.translation,res_id",0,Resource ID,ID de la ressource,0
-field,"ir.translation,src",0,Source,Source,0
-field,"ir.translation,src_md5",0,Source MD5,MD5 de la source,0
-field,"ir.translation,type",0,Type,Type,0
-field,"ir.translation,value",0,Translation Value,Traduction,0
-field,"ir.translation.export.init,lang",0,Language,Langue,0
-field,"ir.translation.export.init,module",0,Module,Module,0
-field,"ir.translation.export.start,file",0,File,Fichier,0
-field,"ir.translation.update.init,lang",0,Language,Langue,0
-field,"ir.trigger,action_function",0,Action Function,Fonction de l'action,0
-field,"ir.trigger,action_model",0,Action Model,Modèle de l'action,0
-field,"ir.trigger,active",0,Active,Actif,0
-field,"ir.trigger,condition",0,Condition,Condition,0
-field,"ir.trigger,limit_number",0,Limit Number,Nombre limite,0
-field,"ir.trigger,minimum_delay",0,Minimum Delay,Délais minimal,0
-field,"ir.trigger,model",0,Model,Modèle,0
-field,"ir.trigger,name",0,Name,Nom,0
-field,"ir.trigger,on_create",0,On Create,À la création,0
-field,"ir.trigger,on_delete",0,On Delete,À la suppression,0
-field,"ir.trigger,on_time",0,On Time,À temps,0
-field,"ir.trigger,on_write",0,On Write,À l'écriture,0
-field,"ir.trigger,rec_name",0,Name,Nom,0
-field,"ir.trigger.log,rec_name",0,Name,Nom,0
-field,"ir.trigger.log,record_id",0,Record ID,ID du record,0
-field,"ir.trigger.log,trigger",0,Trigger,Déclencheur,0
-field,"ir.ui.icon,icon",0,Icon,Icône,1
-field,"ir.ui.icon,module",0,Module,Module,1
-field,"ir.ui.icon,name",0,Name,Nom de la pièce jointe,1
-field,"ir.ui.icon,path",0,SVG Path,Chemin vers le fichier SVG,0
-field,"ir.ui.icon,rec_name",0,Name,Nom de la pièce jointe,1
-field,"ir.ui.icon,sequence",0,Sequence,Séquence,1
-field,"ir.ui.menu,action",0,Action,Action,0
-field,"ir.ui.menu,active",0,Active,Actif,0
-field,"ir.ui.menu,childs",0,Children,Enfants,0
-field,"ir.ui.menu,complete_name",0,Complete Name,Nom complet,0
-field,"ir.ui.menu,groups",0,Groups,Groupes,0
-field,"ir.ui.menu,icon",0,Icon,Icône,0
-field,"ir.ui.menu,name",0,Menu,Menu,0
-field,"ir.ui.menu,parent",0,Parent Menu,Menu parent,0
-field,"ir.ui.menu,rec_name",0,Name,Nom,0
-field,"ir.ui.menu,sequence",0,Sequence,Séquence,0
-field,"ir.ui.view,arch",0,View Architecture,Architecture de la vue,0
-field,"ir.ui.view,domain",0,Domain,Domaine,0
-field,"ir.ui.view,field_childs",0,Children Field,Champs enfants,0
-field,"ir.ui.view,inherit",0,Inherited View,Vue héritée,0
-field,"ir.ui.view,model",0,Model,Modèle,0
-field,"ir.ui.view,module",0,Module,Module,0
-field,"ir.ui.view,priority",0,Priority,Priorité,0
-field,"ir.ui.view,rec_name",0,Name,Nom,0
-field,"ir.ui.view,type",0,View Type,Type de vue,0
-field,"ir.ui.view_sc,name",0,Shortcut Name,Nom du raccourcis,0
-field,"ir.ui.view_sc,rec_name",0,Name,Nom,0
-field,"ir.ui.view_sc,res_id",0,Resource Ref.,Réf. de la ressource,0
-field,"ir.ui.view_sc,resource",0,Resource Name,Nom de la ressource,0
-field,"ir.ui.view_sc,sequence",0,Sequence,Séquence,0
-field,"ir.ui.view_sc,user_id",0,User Ref.,Réf. utilisateur,0
-field,"ir.ui.view_tree_width,field",0,Field,Champ,0
-field,"ir.ui.view_tree_width,model",0,Model,Modèle,0
-field,"ir.ui.view_tree_width,rec_name",0,Name,Nom,0
-field,"ir.ui.view_tree_width,user",0,User,Utilisateur,0
-field,"ir.ui.view_tree_width,width",0,Width,Largeur,0
-help,"ir.action.act_window,auto_refresh",0,Add an auto-refresh on the view,Ajoute un auto-rafraîchissement sur la vue,0
-help,"ir.action.act_window,limit",0,Default limit for the list view,Limite par défaut pour la vue liste,0
-help,"ir.action.act_window,search_value",0,Default search criteria for the list view,Critères de recherche par défaut pour la vue liste,0
-help,"ir.action.act_window,window_name",0,Use the action name as window name,Utiliser le nom de l'action comme nom de la fenêtre,0
-help,"ir.action.report,style",0,Define the style to apply on the report.,Définit le style à appliquer sur le rapport.,0
-help,"ir.action.wizard,window",0,Run wizard in a new window,Lancer l'assistant dans un nouvel onglet,0
-help,"ir.cron,numbercall",0,"Number of times the function is called,
-a negative number indicates that the function will always be called","Nombre de fois que la fonction est appelée,
-une valeur négative indique que la fonction sera toujours appelée.",0
-help,"ir.cron,priority",0,"0=Very Urgent
-10=Not urgent","0 = Très urgent
-10 = Pas urgent",0
-help,"ir.cron,request_user",0,The user who will receive requests in case of failure,L'utilisateur qui recevra les requêtes en cas d'échec.,0
-help,"ir.cron,user",0,The user used to execute this action,L'utilisateur qui exécutera l'action.,0
-help,"ir.lang,code",0,RFC 4646 tag: http://tools.ietf.org/html/rfc4646,,0
-help,"ir.model,module",0,Module in which this model is defined,Le module dans lequel ce modèle est défini,0
-help,"ir.model.data,db_id",0,The id of the record in the database.,L'id de l'enregistrement dans la base de données,0
-help,"ir.model.data,fs_id",0,The id of the record as known on the file system.,L'id de l'enregistrement sur le système de fichier,0
-help,"ir.model.field,module",0,Module in which this field is defined,Le module dans lequel ce champ est défini,0
-help,"ir.model.print_model_graph.init,filter",0,Entering a Python Regular Expression will exclude matching models from the graph.,Expression régulière en Python qui exclura les modèles du graphe.,0
-help,"ir.rule.group,default_p",0,Add this rule to all users by default,Ajouter cette règle à tout les utilisateurs par défaut,0
-help,"ir.rule.group,global_p",0,"Make the rule global 
-so every users must follow this rule",Rend la règle globale de sorte que tout utilisateur doive la respecter,0
-help,"ir.rule.group,rules",0,The rule is satisfied if at least one test is True,La règle est satisfaite si au moins un test est vrai,0
-help,"ir.trigger,condition",0,"A Python statement evaluated with record represented by ""self""
-It triggers the action if true.","Une expression Python ou l'enregistrement est représenté par ""self"".
-Déclenche une action si vrai.",0
-help,"ir.trigger,limit_number",0,"Limit the number of call to ""Action Function"" by records.
-0 for no limit.","Limite le nombre d'appel aux ""Fonction action"" par enregistrement.
-0 signifie pas de limite.",0
-help,"ir.trigger,minimum_delay",0,"Set a minimum delay in minutes between call to ""Action Function"" for the same record.
-0 for no delay.","Défini un délais minimum en minutes entre les appels aux ""Fonctions actions"" sur un même modèle.
-0 signifie pas de délais.",0
-model,"ir.action,name",0,Action,Action,0
-model,"ir.action,name",act_action_act_window_form,Window Actions,Actions de la fenêtre,0
-model,"ir.action,name",act_action_form,Actions,Actions,0
-model,"ir.action,name",act_action_report_form,Reports,Rapports,0
-model,"ir.action,name",act_action_url_form,URLs,URLs,0
-model,"ir.action,name",act_action_wizard_form,Wizards,Assistants,0
-model,"ir.action,name",act_action_wizard_size_form,Wizard Sizes,Tailles des assistants,0
-model,"ir.action,name",act_attachment_form,Attachments,Attachements,0
-model,"ir.action,name",act_config_wizard_item_form,Config Wizard Items,Élements de l'assistant de configuration,0
-model,"ir.action,name",act_cron_form,Scheduled Actions,Actions planifiées,0
-model,"ir.action,name",act_export_form,Exports,Exports,0
-model,"ir.action,name",act_icon_form,Icons,Icônes,0
-model,"ir.action,name",act_lang_form,Languages,Langues,0
-model,"ir.action,name",act_menu_tree,Menu,Menu,0
-model,"ir.action,name",act_model_access_form,Models Access,Accès aux modèles,0
-model,"ir.action,name",act_model_field_access_form,Fields Access,Droits d'accès,0
-model,"ir.action,name",act_model_fields_form,Fields,Champs,0
-model,"ir.action,name",act_model_form,Models,Modèles,0
-model,"ir.action,name",act_module_config_wizard,Module Configuration,Configuration du module,0
-model,"ir.action,name",act_module_form,Modules,Modules,0
-model,"ir.action,name",act_module_install_upgrade,Perform Pending Installation/Upgrade,Lancer les installations/mise à jours en attente,0
-model,"ir.action,name",act_property_form,Properties,Propriétés,0
-model,"ir.action,name",act_property_form_default,Default Properties,Propriétés par défaut,0
-model,"ir.action,name",act_rule_group_form,Record Rules,Règles des enregistrements,0
-model,"ir.action,name",act_sequence_form,Sequences,Séquences,0
-model,"ir.action,name",act_sequence_strict_form,Sequences Strict,Séquences strictes,0
-model,"ir.action,name",act_sequence_type_form,Sequence Types,Types de séquences,0
-model,"ir.action,name",act_translation_clean,Clean Translations,Nettoyer les traductions,0
-model,"ir.action,name",act_translation_export,Export Translations,Exporter les traductions,0
-model,"ir.action,name",act_translation_form,Translations,Traductions,0
-model,"ir.action,name",act_translation_set_report,Set Report Translations,Mettre à jours les traductions des rapports,0
-model,"ir.action,name",act_translation_update,Synchronize Translations,Synchroniser les traductions,0
-model,"ir.action,name",act_trigger_form,Triggers,Déclencheurs,0
-model,"ir.action,name",act_view_form,Views,Vues,0
-model,"ir.action,name",act_view_sc_add,Add Shortcut,Ajouter un raccourci,0
-model,"ir.action,name",act_view_sc_form,View Shortcuts,Raccourcis,0
-model,"ir.action,name",act_view_sc_open,Open Shortcut,Ouvrir le raccourci,0
-model,"ir.action,name",act_view_tree_width_form,View Tree Width,Largeur de la vue arbre,0
-model,"ir.action,name",print_model_graph,Graph,Graphique,0
-model,"ir.action,name",report_model_graph,Graph,Graphique,0
-model,"ir.action.act_window,name",0,Action act window,Action ouvrir fenêtre,0
-model,"ir.action.act_window.view,name",0,Action act window view,Action ouvrir fenêtre vue,0
-model,"ir.action.keyword,name",0,Action keyword,Action de mots clés,0
-model,"ir.action.report,name",0,Action report,Action rapport,0
-model,"ir.action.url,name",0,Action URL,Action URL,0
-model,"ir.action.wizard,name",0,Action wizard,Action assistant,0
-model,"ir.action.wizard_size,name",0,Action Wizard Size,Action taille assistant,0
-model,"ir.attachment,name",0,Attachment,Pièce jointe,0
-model,"ir.cache,name",0,Cache,Cache,0
-model,"ir.cron,name",0,Cron,Cron,0
-model,"ir.date,name",0,Date,Date,0
-model,"ir.export,name",0,Export,Export,0
-model,"ir.export.line,name",0,Export line,Ligne d'export,0
-model,"ir.lang,name",0,Language,Langue,0
-model,"ir.lang,name",lang_bg,Bulgarian,Bulgare,0
-model,"ir.lang,name",lang_cs,Czech,Tchèque,0
-model,"ir.lang,name",lang_de,German,Allemand,0
-model,"ir.lang,name",lang_en,English,Anglais,0
-model,"ir.lang,name",lang_es,Spanish (Spain),Espagnol (Espagne),0
-model,"ir.lang,name",lang_es_CO,Spanish (Colombia),Espagnol (Colombie),0
-model,"ir.lang,name",lang_fr,French,Français,0
-model,"ir.lang,name",lang_nl,Dutch,Néerlandais,0
-model,"ir.lang,name",lang_ru,Russian,Russe,0
-model,"ir.model,name",0,Model,Modèle,0
-model,"ir.model.access,name",0,Model access,Accès au modèle,0
-model,"ir.model.data,name",0,Model data,Données de modèle,0
-model,"ir.model.field,name",0,Model field,Champ de modèle,0
-model,"ir.model.field.access,name",0,Model Field Access,Droit d'accès aux champs d'un Model,0
-model,"ir.model.print_model_graph.init,name",0,Print Model Graph Init,Imprimer le graphique de modèle - Init,0
-model,"ir.module.module,name",0,Module,Module,0
-model,"ir.module.module.config_wizard.first,name",0,Module Config Wizard First,Assistant de configuration de module - Première,0
-model,"ir.module.module.config_wizard.item,name",0,Config wizard to run after installing module,Assistant de configuration à éxécuter après l'installation de module,0
-model,"ir.module.module.dependency,name",0,Module dependency,Dépendance de module,0
-model,"ir.module.module.install_upgrade.init,name",0,Module Install Upgrade Init,Installation Mise à jour de module - Init,0
-model,"ir.module.module.install_upgrade.start,name",0,Module Install Upgrade Start,Installation Mise à jour de module - Début,0
-model,"ir.property,name",0,Property,Propriété,0
-model,"ir.rule,name",0,Rule,Règle,0
-model,"ir.rule.group,name",0,Rule group,Groupe de règle,0
-model,"ir.sequence,name",0,Sequence,Séquence,0
-model,"ir.sequence.strict,name",0,Sequence Strict,Séquence stricte,0
-model,"ir.sequence.type,name",0,Sequence type,Type de séquence,0
-model,"ir.translation,name",0,Translation,Traduction,0
-model,"ir.translation.clean.init,name",0,Clean translation init,Netoyer les traductions - Init,0
-model,"ir.translation.clean.start,name",0,Clean translation start,Netoyer les traductions - Début,0
-model,"ir.translation.export.init,name",0,Export translation - language and module,Export de traduction - langue et module,0
-model,"ir.translation.export.start,name",0,Export translation - file,Export de traduction - Fichier,0
-model,"ir.translation.set_report.init,name",0,Update Report Translation,Mise à jour des traductions de rapport,0
-model,"ir.translation.set_report.start,name",0,Update Report Translation,Mise à jour des traductions de rapport,0
-model,"ir.translation.update.init,name",0,Update translation - language,Mise à jour des traductions - Langue,0
-model,"ir.trigger,name",0,Trigger,Déclencheur,0
-model,"ir.trigger.log,name",0,Trigger Log,Journal des déclencheurs,0
-model,"ir.ui.icon,name",0,Icon,Icône,1
-model,"ir.ui.menu,name",0,UI menu,Menu de l'IU,0
-model,"ir.ui.menu,name",menu_act_action,Actions,Actions,0
-model,"ir.ui.menu,name",menu_action,Actions,Actions,0
-model,"ir.ui.menu,name",menu_action_act_window,Window Actions,Actions de la fenêtre,0
-model,"ir.ui.menu,name",menu_action_report_form,Reports,Rapports,0
-model,"ir.ui.menu,name",menu_action_url,URLs,URLs,0
-model,"ir.ui.menu,name",menu_action_wizard,Wizards,Assistants,0
-model,"ir.ui.menu,name",menu_action_wizard_size,Wizard Sizes,Tailles des assistants,0
-model,"ir.ui.menu,name",menu_administration,Administration,Administration,0
-model,"ir.ui.menu,name",menu_attachment_form,Attachments,Pièces jointes,0
-model,"ir.ui.menu,name",menu_config_wizard_item_form,Config Wizard Items,Élements de l'assistant de configuration,0
-model,"ir.ui.menu,name",menu_cron_form,Scheduled Actions,Actions planifiées,0
-model,"ir.ui.menu,name",menu_export_form,Exports,Exportations,0
-model,"ir.ui.menu,name",menu_icon_form,Icons,Icônes,0
-model,"ir.ui.menu,name",menu_ir_sequence_type,Sequence Types,Types de séquence,0
-model,"ir.ui.menu,name",menu_lang_form,Languages,Langues,0
-model,"ir.ui.menu,name",menu_localization,Localization,Localisation,0
-model,"ir.ui.menu,name",menu_menu_tree,Menu,Menu,1
-model,"ir.ui.menu,name",menu_model_access_form,Models Access,Accès au modèles,0
-model,"ir.ui.menu,name",menu_model_field_access_form,Fields Access,Droits d'accès au champs,0
-model,"ir.ui.menu,name",menu_model_form,Models,Modèles,0
-model,"ir.ui.menu,name",menu_models,Models,Modèles,0
-model,"ir.ui.menu,name",menu_module_form,Modules,Modules,0
-model,"ir.ui.menu,name",menu_module_install_upgrade,Perform Pending Installation/Upgrade,Installer \ Mettre à jour les modules,0
-model,"ir.ui.menu,name",menu_modules,Modules,Modules,0
-model,"ir.ui.menu,name",menu_property_form,Properties,Propriétés,0
-model,"ir.ui.menu,name",menu_property_form_default,Default Properties,Propriétés par default,0
-model,"ir.ui.menu,name",menu_rule_group_form,Record Rules,Règles d'enregistrement,0
-model,"ir.ui.menu,name",menu_scheduler,Scheduler,Planificateur,0
-model,"ir.ui.menu,name",menu_sequence_form,Sequences,Séquences,0
-model,"ir.ui.menu,name",menu_sequence_strict_form,Sequences Strict,Séquences strictes,0
-model,"ir.ui.menu,name",menu_sequences,Sequences,Séquence,0
-model,"ir.ui.menu,name",menu_translation_clean,Clean Translations,Nettoyer les traductions,0
-model,"ir.ui.menu,name",menu_translation_export,Export Translations,Exporter les traductions,0
-model,"ir.ui.menu,name",menu_translation_form,Translations,Traductions,0
-model,"ir.ui.menu,name",menu_translation_set_report,Set Report Translations,Mettre à jours les traductions des rapports,0
-model,"ir.ui.menu,name",menu_translation_update,Synchronize Translations,Synchroniser les traductions,0
-model,"ir.ui.menu,name",menu_trigger_form,Triggers,Déclencheurs,0
-model,"ir.ui.menu,name",menu_ui,User Interface,UI,0
-model,"ir.ui.menu,name",menu_view,Views,Vues,0
-model,"ir.ui.menu,name",menu_view_sc,View Shortcuts,Raccourcis de la vue,0
-model,"ir.ui.menu,name",menu_view_tree_width,View Tree Width,Largeur des vues arbres,0
-model,"ir.ui.menu,name",model_model_fields_form,Fields,Champs,0
-model,"ir.ui.view,name",0,View,Vue,0
-model,"ir.ui.view_sc,name",0,View shortcut,Vue raccourci,0
-model,"ir.ui.view_tree_width,name",0,View Tree Width,Largeur de vue arbre,0
-selection,"ir.action.keyword,keyword",0,Action form,Formulaire,0
-selection,"ir.action.keyword,keyword",0,Action tree,Arbre,0
-selection,"ir.action.keyword,keyword",0,Form relate,Formulaire relié,0
-selection,"ir.action.keyword,keyword",0,Open Graph,Ouvrir le graphique,0
-selection,"ir.action.keyword,keyword",0,Open tree,Ouvrir l'arbre,0
-selection,"ir.action.keyword,keyword",0,Print form,Imprimer le formulaire,0
-selection,"ir.action.report,extension",0,ODT Document,Document ODT,0
-selection,"ir.action.report,extension",0,PDF Document,Document PDF,0
-selection,"ir.attachment,type",0,Data,Données,0
-selection,"ir.attachment,type",0,Link,Lien,1
-selection,"ir.cron,interval_type",0,Days,Jours,0
-selection,"ir.cron,interval_type",0,Hours,Heures,0
-selection,"ir.cron,interval_type",0,Minutes,Minutes,0
-selection,"ir.cron,interval_type",0,Months,Mois,0
-selection,"ir.cron,interval_type",0,Weeks,Semaines,0
-selection,"ir.cron,interval_type",0,Work Days,Jours de Travail,0
-selection,"ir.lang,direction",0,Left-to-right,Gauche-à-droite,0
-selection,"ir.lang,direction",0,Right-to-left,Droite-à-gauche,0
-selection,"ir.module.module,state",0,Installed,Installé,0
-selection,"ir.module.module,state",0,Not Installed,Pas installé,0
-selection,"ir.module.module,state",0,To be installed,À être installé,0
-selection,"ir.module.module,state",0,To be removed,À être enlevé,0
-selection,"ir.module.module,state",0,To be upgraded,À être mis à jour,0
-selection,"ir.module.module.config_wizard.item,state",0,Done,Fait,0
-selection,"ir.module.module.config_wizard.item,state",0,Open,Ouvert,0
-selection,"ir.module.module.dependency,state",0,Installed,Installé,0
-selection,"ir.module.module.dependency,state",0,Not Installed,Pas installé,0
-selection,"ir.module.module.dependency,state",0,To be installed,À être installé,0
-selection,"ir.module.module.dependency,state",0,To be removed,À être enlevé,0
-selection,"ir.module.module.dependency,state",0,To be upgraded,À être mis à jour,0
-selection,"ir.module.module.dependency,state",0,Unknown,Inconnu,0
-selection,"ir.rule,operator",0,<=,<=,0
-selection,"ir.rule,operator",0,<>,<>,0
-selection,"ir.rule,operator",0,=,=,0
-selection,"ir.rule,operator",0,>=,>=,0
-selection,"ir.rule,operator",0,child_of,fils de,0
-selection,"ir.rule,operator",0,in,dans,0
-selection,"ir.sequence,type",0,Decimal Timestamp,Estampille décimale,0
-selection,"ir.sequence,type",0,Hexadecimal Timestamp,Estampille hexadécimale,0
-selection,"ir.sequence,type",0,Incremental,Incrémental,0
-selection,"ir.sequence.strict,type",0,Decimal Timestamp,Estampille décimale,0
-selection,"ir.sequence.strict,type",0,Hexadecimal Timestamp,Estampille hexadécimale,0
-selection,"ir.sequence.strict,type",0,Incremental,Incrémental,0
-selection,"ir.translation,type",0,Error,Erreur,0
-selection,"ir.translation,type",0,Field,Champ,0
-selection,"ir.translation,type",0,Help,Aide,0
-selection,"ir.translation,type",0,Model,Modèle,0
-selection,"ir.translation,type",0,ODT,ODT,0
-selection,"ir.translation,type",0,Selection,Sélection,0
-selection,"ir.translation,type",0,View,Vue,0
-selection,"ir.translation,type",0,Wizard Button,Bouton de l'assistant,0
-selection,"ir.ui.menu,action",0,ir.action.act_window,,0
-selection,"ir.ui.menu,action",0,ir.action.report,,0
-selection,"ir.ui.menu,action",0,ir.action.url,,0
-selection,"ir.ui.menu,action",0,ir.action.wizard,,0
-selection,"ir.ui.menu,icon",0,tryton-accessories,,0
-selection,"ir.ui.menu,icon",0,tryton-attachment,,0
-selection,"ir.ui.menu,icon",0,tryton-calculator,,0
-selection,"ir.ui.menu,icon",0,tryton-calendar,,0
-selection,"ir.ui.menu,icon",0,tryton-clear,,0
-selection,"ir.ui.menu,icon",0,tryton-clock,,0
-selection,"ir.ui.menu,icon",0,tryton-close,,0
-selection,"ir.ui.menu,icon",0,tryton-connect,,0
-selection,"ir.ui.menu,icon",0,tryton-copy,,0
-selection,"ir.ui.menu,icon",0,tryton-currency,,0
-selection,"ir.ui.menu,icon",0,tryton-delete,,0
-selection,"ir.ui.menu,icon",0,tryton-development,,0
-selection,"ir.ui.menu,icon",0,tryton-dialog-error,,0
-selection,"ir.ui.menu,icon",0,tryton-dialog-information,,0
-selection,"ir.ui.menu,icon",0,tryton-dialog-warning,,0
-selection,"ir.ui.menu,icon",0,tryton-disconnect,,0
-selection,"ir.ui.menu,icon",0,tryton-executable,,0
-selection,"ir.ui.menu,icon",0,tryton-find,,0
-selection,"ir.ui.menu,icon",0,tryton-find-replace,,0
-selection,"ir.ui.menu,icon",0,tryton-folder-new,,0
-selection,"ir.ui.menu,icon",0,tryton-folder-saved-search,,0
-selection,"ir.ui.menu,icon",0,tryton-fullscreen,,0
-selection,"ir.ui.menu,icon",0,tryton-go-home,,0
-selection,"ir.ui.menu,icon",0,tryton-go-jump,,0
-selection,"ir.ui.menu,icon",0,tryton-go-next,,0
-selection,"ir.ui.menu,icon",0,tryton-go-previous,,0
-selection,"ir.ui.menu,icon",0,tryton-graph,,0
-selection,"ir.ui.menu,icon",0,tryton-help,,0
-selection,"ir.ui.menu,icon",0,tryton-image-missing,,0
-selection,"ir.ui.menu,icon",0,tryton-information,,0
-selection,"ir.ui.menu,icon",0,tryton-list,,0
-selection,"ir.ui.menu,icon",0,tryton-list-add,,0
-selection,"ir.ui.menu,icon",0,tryton-list-remove,,0
-selection,"ir.ui.menu,icon",0,tryton-locale,,0
-selection,"ir.ui.menu,icon",0,tryton-lock,,0
-selection,"ir.ui.menu,icon",0,tryton-log-out,,0
-selection,"ir.ui.menu,icon",0,tryton-mail-message-new,,0
-selection,"ir.ui.menu,icon",0,tryton-new,,0
-selection,"ir.ui.menu,icon",0,tryton-noimage,,0
-selection,"ir.ui.menu,icon",0,tryton-open,,0
-selection,"ir.ui.menu,icon",0,tryton-package,,0
-selection,"ir.ui.menu,icon",0,tryton-preferences,,0
-selection,"ir.ui.menu,icon",0,tryton-preferences-system,,0
-selection,"ir.ui.menu,icon",0,tryton-preferences-system-session,,0
-selection,"ir.ui.menu,icon",0,tryton-presentation,,0
-selection,"ir.ui.menu,icon",0,tryton-print,,0
-selection,"ir.ui.menu,icon",0,tryton-readonly,,0
-selection,"ir.ui.menu,icon",0,tryton-refresh,,0
-selection,"ir.ui.menu,icon",0,tryton-save,,0
-selection,"ir.ui.menu,icon",0,tryton-save-as,,0
-selection,"ir.ui.menu,icon",0,tryton-spreadsheet,,0
-selection,"ir.ui.menu,icon",0,tryton-start-here,,0
-selection,"ir.ui.menu,icon",0,tryton-system,,0
-selection,"ir.ui.menu,icon",0,tryton-system-file-manager,,0
-selection,"ir.ui.menu,icon",0,tryton-tree,,0
-selection,"ir.ui.menu,icon",0,tryton-users,,0
-selection,"ir.ui.menu,icon",0,tryton-web-browser,,0
-selection,"ir.ui.view,type",0,,,0
-selection,"ir.ui.view,type",0,Board,Tableau,0
-selection,"ir.ui.view,type",0,Form,Formulaire,0
-selection,"ir.ui.view,type",0,Graph,Graphique,0
-selection,"ir.ui.view,type",0,Tree,Arbre,0
-view,ir.action,0,Action,Action,0
-view,ir.action,0,General,Général,0
-view,ir.action,0,Keyword,Mot-clé,0
-view,ir.action,0,Keywords,Mots-clés,0
-view,ir.action.act_window,0,General,Général,0
-view,ir.action.act_window,0,Keyword,Mot-clé,0
-view,ir.action.act_window,0,Keywords,Mots-clés,0
-view,ir.action.act_window,0,Open Window,Ouvre la fenêtre,0
-view,ir.action.act_window,0,Open a Window,Ouvrir une fenêtre,0
-view,ir.action.act_window,0,Views,Vues,0
-view,ir.action.report,0,General,Général,0
-view,ir.action.report,0,Keyword,Mot-clé,0
-view,ir.action.report,0,Keywords,Mots-clés,0
-view,ir.action.report,0,Report,Rapport,0
-view,ir.action.report,0,Report xml,Rapport xml,0
-view,ir.action.url,0,General,Général,0
-view,ir.action.url,0,Keyword,Mot-clé,0
-view,ir.action.url,0,Keywords,Mots-clés,0
-view,ir.action.url,0,URL,URL,0
-view,ir.action.wizard,0,General,Général,0
-view,ir.action.wizard,0,Keyword,Mot-clé,0
-view,ir.action.wizard,0,Keywords,Mots-clés,0
-view,ir.action.wizard,0,Wizard,Assistant,0
-view,ir.action.wizard_size,0,Wizard Size,Taille de l'assistant,0
-view,ir.action.wizard_size,0,Wizard Sizes,Tailles des assistants,0
-view,ir.attachment,0,Attachments,Pièces jointes,0
-view,ir.attachment,0,Preview,Aperçu,0
-view,ir.cron,0,Action to trigger,Action à suivre,0
-view,ir.cron,0,Scheduled Action,Action planifiée,0
-view,ir.cron,0,Scheduled Actions,Actions planifiées,0
-view,ir.export,0,Exports,Exportations,0
-view,ir.lang,0,Date Formatting,Formatage des dates,0
-view,ir.lang,0,Language,Langues,0
-view,ir.lang,0,Languages,Langues,0
-view,ir.lang,0,Numbers Formatting,Formatage des nombres,0
-view,ir.model,0,Fields Description,Champs de description,0
-view,ir.model,0,Model Description,Description du modèle,0
-view,ir.model.access,0,Access controls,Contrôles d'accès,0
-view,ir.model.field,0,Fields,Champs,0
-view,ir.model.field.access,0,Field Access,Droits d'accès au champs,0
-view,ir.model.print_model_graph.init,0,Print Model Graph,Imprimer le graphique de modèle,0
-view,ir.module.module,0,Cancel Install,Annuler l'installation,0
-view,ir.module.module,0,Cancel Installation,Annuler l'installation,0
-view,ir.module.module,0,Cancel Uninstall,Annuler la désinstallation,0
-view,ir.module.module,0,Cancel Uninstallation,Annuler la désinstallation,0
-view,ir.module.module,0,Cancel Upgrade,Annuler la mis-à-jour,0
-view,ir.module.module,0,Dependencies,Dépendances,0
-view,ir.module.module,0,Install,Installer,0
-view,ir.module.module,0,Mark for Installation,Sélectionner pour l'installation,0
-view,ir.module.module,0,Mark for Uninstallation (beta),Sélectionner pour la dés-installation,0
-view,ir.module.module,0,Mark for Upgrade,Sélectionner pour la mise à jour,0
-view,ir.module.module,0,Module,Module,0
-view,ir.module.module,0,Modules,Modules,0
-view,ir.module.module,0,Uninstall (beta),Désinstaller (béta),0
-view,ir.module.module,0,Upgrade,Mettre à jour,0
-view,ir.module.module.config_wizard.first,0,Module Configuration Wizard,Assistant de Configuration de module,0
-view,ir.module.module.config_wizard.first,0,Welcome to the module configuration wizard!,Bienvenu dans l'assistant de configuration de module !,0
-view,ir.module.module.config_wizard.first,0,You will be able to configure your installation,Vous pourrez configurer votre installation,0
-view,ir.module.module.config_wizard.first,0,depending on the modules you have installed.,en fonction des modules installé.,0
-view,ir.module.module.config_wizard.item,0,Config Wizard Items,Élements de l'assistant de configuration,0
-view,ir.module.module.install_upgrade.init,0,Note that this operation my take a few minutes.,"Attention, cette opération peut prendre plusieurs minutes.",0
-view,ir.module.module.install_upgrade.init,0,System Upgrade,Mis à jour du système,0
-view,ir.module.module.install_upgrade.init,0,Your system will be upgraded.,Votre système sera mis à jour.,0
-view,ir.module.module.install_upgrade.start,0,System upgrade done,Mis à jour du système faite,0
-view,ir.module.module.install_upgrade.start,0,The modules have been upgraded / installed !,Les modules ont été mis à jour / installés !,0
-view,ir.module.module.install_upgrade.start,0,We suggest you to reload the menu tab (Ctrl+t Ctrl+r).,Nous vous suggérons de recharger l'onglet du menu (Ctrl+t Ctrl+r),0
-view,ir.module.module.install_upgrade.start,0,You may have to reinstall some language pack.,Vous pourriez avoir à réinstaller quelque langue.,0
-view,ir.property,0,Properties,Propriétés,0
-view,ir.property,0,Property,Propriété,0
-view,ir.rule,0,Test,Test,0
-view,ir.rule.group,0,"If there is no test defined, the rule is always satisfied if not global","Si il n'y a pas de test défini, la règle est toujours satisfaite s'elle n'est pas globale",0
-view,ir.rule.group,0,Record rules,Règles d'enregistrement,0
-view,ir.rule.group,0,The rule is satisfied if at least one test is True,La règle est satisfaite si au moins un test est vrai,0
-view,ir.sequence,0,${day},,0
-view,ir.sequence,0,${month},,0
-view,ir.sequence,0,${year},,0
-view,ir.sequence,0,Day:,Jour:,0
-view,ir.sequence,0,Incremental,Incrémental,0
-view,ir.sequence,0,"Legend (Placeholders for prefix, suffix)","Légende (charactère pour le préfixe, le suffixe)",0
-view,ir.sequence,0,"Legend (for prefix, suffix)","Légende (pour préfixe, suffixe)",0
-view,ir.sequence,0,Month:,Mois :,0
-view,ir.sequence,0,Sequences,Séquences,0
-view,ir.sequence,0,Timestamp,Estampille,0
-view,ir.sequence,0,Year:,Année :,0
-view,ir.sequence.strict,0,${day},,0
-view,ir.sequence.strict,0,${month},,0
-view,ir.sequence.strict,0,${year},,0
-view,ir.sequence.strict,0,Day:,Jour,0
-view,ir.sequence.strict,0,"Legend (for prefix, suffix)",Légende (préfixe et suffixe),0
-view,ir.sequence.strict,0,Month:,Mois :,0
-view,ir.sequence.strict,0,Sequences Strict,Séquence stricte,0
-view,ir.sequence.strict,0,Year:,Année :,0
-view,ir.sequence.type,0,Sequence Type,Type de séquence,0
-view,ir.translation,0,Translations,Traductions,0
-view,ir.translation.clean.init,0,Clean Translations,Nettoyer les traductions,0
-view,ir.translation.clean.init,0,Clean Translations?,Nettoyer les traductions ?,0
-view,ir.translation.clean.start,0,Clean Translations,Nettoyer les traductions,0
-view,ir.translation.clean.start,0,Clean Translations Succeed!,Nettoyage des traductions réussi !,0
-view,ir.translation.export.init,0,Export Translation,Exporter les traductions,0
-view,ir.translation.export.start,0,Export Translation,Exporter les traductions,0
-view,ir.translation.set_report.init,0,Set Report Translations,Mettre à jours les traductions des rapports,0
-view,ir.translation.set_report.init,0,Synchronize Report Translations?,Synchroniser les tradcutions des rapports ?,0
-view,ir.translation.set_report.init,0,Update Report Translations,Mettre à jour les traductions des rapports,0
-view,ir.translation.set_report.init,0,Update Report Translations?,Mettre à jour les traductions des rapports ?,0
-view,ir.translation.set_report.start,0,Set Report Translations,Mettre à jours les traductions des rapports,0
-view,ir.translation.set_report.start,0,Set Translations Succeed!,Traductions réussies,0
-view,ir.translation.update.init,0,Synchronize Translations,Synchroniser les traductions,0
-view,ir.translation.update.init,0,Update Translations,Mettre à jour les traductions,0
-view,ir.trigger,0,Trigger,Déclencheur,0
-view,ir.trigger,0,Triggers,Déclencheurs,0
-view,ir.ui.icon,0,Icon,Icône,1
-view,ir.ui.icon,0,Icons,Icônes,0
-view,ir.ui.menu,0,Menu,Menu,0
-view,ir.ui.view,0,View,Vue,0
-view,ir.ui.view_sc,0,Shortcut,Raccourcis,0
-view,ir.ui.view_sc,0,Shortcuts,Raccourcis,0
-view,ir.ui.view_tree_width,0,View Tree Width,Largeur de vue arbre,0
-view,ir.ui.view_tree_width,0,Views Tree Width,Largeurs des vues arbres,0
-wizard_button,"ir.model.print_model_graph,init,end",0,Cancel,Annuler,0
-wizard_button,"ir.model.print_model_graph,init,print",0,Print,Imprimer,0
-wizard_button,"ir.module.module.config_wizard,first,end",0,Cancel,Annuler,0
-wizard_button,"ir.module.module.config_wizard,first,wizard",0,Ok,Ok,0
-wizard_button,"ir.module.module.install_upgrade,init,end",0,Cancel,Annuler,0
-wizard_button,"ir.module.module.install_upgrade,init,start",0,Start Upgrade,Démarrer la mis à jour,0
-wizard_button,"ir.module.module.install_upgrade,start,menu",0,Ok,Ok,0
-wizard_button,"ir.translation.clean,init,end",0,Cancel,Annuler,0
-wizard_button,"ir.translation.clean,init,start",0,Start,Départ,0
-wizard_button,"ir.translation.clean,start,end",0,Ok,Ok,0
-wizard_button,"ir.translation.export,init,end",0,Cancel,Annuler,0
-wizard_button,"ir.translation.export,init,start",0,Start Export,Démarrer l'exportation,0
-wizard_button,"ir.translation.export,start,end",0,Close,Fermer,0
-wizard_button,"ir.translation.set_report,init,end",0,Cancel,Annuler,0
-wizard_button,"ir.translation.set_report,init,start",0,Start Update,Démarrer la mise-à-Jour,0
-wizard_button,"ir.translation.set_report,start,end",0,Ok,Ok,0
-wizard_button,"ir.translation.update,init,end",0,Cancel,Annuler,0
-wizard_button,"ir.translation.update,init,start",0,Start Update,Démarrer la mise à jour,0
-wizard_button,"ir.translation.update,init,start",0,Start Upgrade,Démarrer la mise à jour,0
diff --git a/trytond/ir/gen_time_locale.py b/trytond/ir/gen_time_locale.py
index 72f8f29..2aca343 100644
--- a/trytond/ir/gen_time_locale.py
+++ b/trytond/ir/gen_time_locale.py
@@ -1,6 +1,5 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import time
 import locale
 import os
diff --git a/trytond/ir/lang.py b/trytond/ir/lang.py
index 6ce101f..70901bd 100644
--- a/trytond/ir/lang.py
+++ b/trytond/ir/lang.py
@@ -1,14 +1,19 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import time
 import datetime
+import warnings
+
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.model.cacheable import Cacheable
 from trytond.tools import safe_eval, datetime_strftime
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 from time_locale import TIME_LOCALE
+
+warnings.filterwarnings('ignore', "", ImportWarning)
 from locale import CHAR_MAX
+warnings.resetwarnings()
 
 
 class Lang(ModelSQL, ModelView, Cacheable):
@@ -57,7 +62,8 @@ class Lang(ModelSQL, ModelView, Cacheable):
         return [('name',) + clause[1:]]
 
     def read(self, ids, fields_names=None):
-        translation_obj = self.pool.get('ir.translation')
+        pool = Pool()
+        translation_obj = pool.get('ir.translation')
         res = super(Lang, self).read(ids, fields_names=fields_names)
         if (Transaction().context.get('translate_name')
                 and (not fields_names or 'name' in fields_names)):
diff --git a/trytond/ir/lang.xml b/trytond/ir/lang.xml
index 0c035c5..bfaee5d 100644
--- a/trytond/ir/lang.xml
+++ b/trytond/ir/lang.xml
@@ -79,11 +79,11 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Languages" editable="bottom">
-                    <field name="name" select="1"/>
-                    <field name="code" select="1"/>
+                    <field name="name"/>
+                    <field name="code"/>
                     <field name="direction"/>
-                    <field name="translatable" select="1"/>
-                    <field name="active" select="2"/>
+                    <field name="translatable"/>
+                    <field name="active"/>
                 </tree>
                 ]]>
             </field>
diff --git a/trytond/ir/locale/bg_BG.po b/trytond/ir/locale/bg_BG.po
new file mode 100644
index 0000000..9a41dc3
--- /dev/null
+++ b/trytond/ir/locale/bg_BG.po
@@ -0,0 +1,2787 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:access_error:0"
+msgid ""
+"You try to bypass an access rule!\n"
+"(Document type: %s)"
+msgstr ""
+"Опитвате се да прескочите право за достъп!\n"
+"(Вид документ: %s)"
+
+msgctxt "error:delete_workflow_record:0"
+msgid "You cannot delete a record with a running workflow."
+msgstr "Не може да изтривате запис от работещ работен процес."
+
+msgctxt "error:delete_xml_record:0"
+msgid "You are not allowed to delete this record."
+msgstr "Нямате права да изтривате този запис."
+
+msgctxt "error:digits_validation_record:0"
+msgid "The field \"%s\" on \"%s\" has too many decimal digits."
+msgstr "Полето \"%s\" от \"%s\" има много десетични цифри"
+
+msgctxt "error:domain_validation_record:0"
+msgid "The value of the field \"%s\" on \"%s\" is not valid according to its domain."
+msgstr "Стойността на полето \"%s\" от \"%s\" не е валидно според домейна."
+
+msgctxt "error:foreign_model_exist:0"
+msgid "Could not delete \"%s\" records because they are used on field \"%s\" of \"%s\"."
+msgstr "Не може да изтривате записи \"%s\" защото се използват в поле \"%s\" от \"%s\"."
+
+msgctxt "error:foreign_model_missing:0"
+msgid "The value of field \"%s\" on \"%s\" doesn't exist."
+msgstr "Стойността на полето \"%s\" от \"%s\" не съществува."
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid context!"
+msgstr "Невалиден контекст!"
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid domain or search criteria!"
+msgstr ""
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid views!"
+msgstr "Невалидни изгледи!"
+
+msgctxt "error:ir.action.keyword:0"
+msgid "Wrong wizard model!"
+msgstr "Грешен модел на помощник!"
+
+msgctxt "error:ir.action.report:0"
+msgid "The internal name must be unique by module!"
+msgstr "Вътрепното име трябва да е уникално в модула!"
+
+msgctxt "error:ir.attachment:0"
+msgid "The  names of attachments must be unique by resource!"
+msgstr "Имената на прикачените файлове трябва да са уникални по ресурс!"
+
+msgctxt "error:ir.cron:0"
+msgid "Scheduled action failed"
+msgstr "Планираното действие неуспяло"
+
+msgctxt "error:ir.cron:0"
+msgid ""
+"The following action failed to execute properly: \"%s\"\n"
+" Traceback: \n"
+"\n"
+"%s\n"
+msgstr ""
+"Следното действие не е изпълнено успешно: \"%s\"\n"
+"Информация:\n"
+"\n"
+"%s"
+
+msgctxt "error:ir.lang:0"
+msgid "Invalid Grouping!"
+msgstr "Невалидно групиране!"
+
+msgctxt "error:ir.lang:0"
+msgid "The date format is not valid!"
+msgstr "Формата на датата е невалиден!"
+
+msgctxt "error:ir.lang:0"
+msgid "decimal_point and thousands_sep must be different!"
+msgstr "десетична точка и разделител на хиляди трябва да са различни!"
+
+msgctxt "error:ir.model.access:0"
+msgid "Only one record by model and group is allowed!"
+msgstr "Разрешен е само един запис за модел и група!"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not create this kind of document! (%s)"
+msgstr "Не може да създадете този вид документ! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not delete this document! (%s)"
+msgstr "Не може да изтриете този документ! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not read this document! (%s)"
+msgstr "Не може да четете този документ! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not write in this document! (%s)"
+msgstr "Не може да пишете в този документ! (%s)"
+
+msgctxt "error:ir.model.data:0"
+msgid "The triple (fs_id, module, model) must be unique!"
+msgstr "Тройката (fs_id, module, model) трябва да е уникална!"
+
+msgctxt "error:ir.model.field.access:0"
+msgid "Only one record by field and group is allowed!"
+msgstr "Позволен е само един запис по поле и група!"
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not read the field! (%s.%s)"
+msgstr "Не може да прочетете полето! (%s.%s)"
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not write on the field! (%s.%s)"
+msgstr "Не може да записвате полето! (%s.%s)"
+
+msgctxt "error:ir.model.field:0"
+msgid "Model Field Name must be a python identifier!"
+msgstr "Името за поле на модел трябва да бъде python идентификатор!"
+
+msgctxt "error:ir.model.field:0"
+msgid "The field name in model must be unique!"
+msgstr "Името на полето трябва да е уникално!"
+
+msgctxt "error:ir.model:0"
+msgid "Module Name must be a python identifier!"
+msgstr "Името на модула трябва да бъде python идентификатор!"
+
+msgctxt "error:ir.model:0"
+msgid "The model must be unique!"
+msgstr "Модела трябва да е уникален!"
+
+msgctxt "error:ir.module.module.dependency:0"
+msgid "Dependency must be unique by module!"
+msgstr "Зависимостта трябва да е уникална за модул!"
+
+msgctxt "error:ir.module.module:0"
+msgid "Missing dependencies %s for module \"%s\""
+msgstr "Липсващи зависимости %s за модул \"%s\""
+
+msgctxt "error:ir.module.module:0"
+msgid "The modules you are trying to uninstall depends on installed modules:"
+msgstr ""
+"От модула който исакте да деинсталирате зависят следните инсталирани модули:"
+
+msgctxt "error:ir.module.module:0"
+msgid "The name of the module must be unique!"
+msgstr "Името на модула трябва да е уникално!"
+
+msgctxt "error:ir.module.module:0"
+msgid "You can not remove a module that is installed or will be installed"
+msgstr "Не може да изтривате модул който инсталиран или ще бъде инсталиран"
+
+msgctxt "error:ir.rule.group:0"
+msgid "Global and Default are mutually exclusive!"
+msgstr "Глобален и По подразбиране са взаимно самоизключващи се!"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Invalid prefix/suffix!"
+msgstr "Невалиден префикс/суфикс!"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Last Timestamp could not be in future!"
+msgstr "Последния времеви маркер не може да е в бъдещето!"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Missing sequence!"
+msgstr "Липсва последователност!"
+
+msgctxt "error:ir.sequence:0"
+msgid "Invalid prefix/suffix!"
+msgstr "Невалиден префикс/суфикс!"
+
+msgctxt "error:ir.sequence:0"
+msgid "Last Timestamp could not be in future!"
+msgstr "Последния времеви маркер не може да е в бъдещето!"
+
+msgctxt "error:ir.sequence:0"
+msgid "Missing sequence!"
+msgstr "Липсва последователност!"
+
+msgctxt "error:ir.translation:0"
+msgid "Translation must be unique"
+msgstr "Превода трябва да е уникален"
+
+msgctxt "error:ir.trigger:0"
+msgid "\"On Time\" and others are mutually exclusive!"
+msgstr "\"В даден момент\" и останалите са взаимно изключващи се!"
+
+msgctxt "error:ir.trigger:0"
+msgid "Condition must be a python expression!"
+msgstr "Условието трябва да е python израз!"
+
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not create recursive menu!"
+msgstr ""
+
+#, fuzzy
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not use \" / \" in name field!"
+msgstr "В името на полето не може да има \" / \"!"
+
+msgctxt "error:ir.ui.view.show:0"
+msgid "Only \"form\" view can be shown!"
+msgstr ""
+
+msgctxt "error:ir.ui.view:0"
+msgid "Invalid XML for View!"
+msgstr "Невалиден XML за изглед!"
+
+msgctxt "error:not_found_in_selection:0"
+msgid "Key %r not found in selection field %r"
+msgstr "Ключа %r не е намерен в полето за избор %r"
+
+msgctxt "error:read_error:0"
+msgid ""
+"You try to read records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr ""
+"Опитвате се да прочетете запис който вече не съществува!\n"
+"(Вид документ: %s)"
+
+msgctxt "error:reference_syntax_error:0"
+msgid "Syntax error for reference %r in %s"
+msgstr "Синтактична грешка за отпратка %r в %s"
+
+msgctxt "error:relation_not_found:0"
+msgid "Relation not found: %r in %s"
+msgstr "Не е намерена зависимост: %r в %s"
+
+msgctxt "error:required_field:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr "Полето \"%s\" от \"%s\" е задължително."
+
+msgctxt "error:required_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr "Полето \"%s\" от \"%s\" е задължително."
+
+msgctxt "error:search_function_missing:0"
+msgid "Missing search function on field \"%s\"."
+msgstr "Липсват функции за търсене върху поле \"%s\"."
+
+msgctxt "error:size_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is too long."
+msgstr "Полето \"%s\" от \"%s\" е много дълго."
+
+msgctxt "error:too_many_relations_found:0"
+msgid "Too many relations found: %r in %s"
+msgstr "Намерени са твърде много зависимости: %r в %s"
+
+msgctxt "error:write_error:0"
+msgid ""
+"You try to write on records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr ""
+"Опитвате се да запишете в запис който вече не съшествува!\n"
+"(Вид документ: %s)"
+
+msgctxt "error:write_xml_record:0"
+msgid "You are not allowed to modify this record."
+msgstr "Нямате права да променяте този запис."
+
+msgctxt "error:xml_id_syntax_error:0"
+msgid "Syntax error for XML id %r in %s"
+msgstr "Ситактична грешка за XML id %r в %s"
+
+msgctxt "error:xml_record_desc:0"
+msgid "This record is part of the base configuration."
+msgstr "Този запис е част от основната конфигурация."
+
+msgctxt "field:ir.action,active:0"
+msgid "Active"
+msgstr "Активен"
+
+msgctxt "field:ir.action,groups:0"
+msgid "Groups"
+msgstr "Групи"
+
+msgctxt "field:ir.action,icon:0"
+msgid "Icon"
+msgstr "Икона"
+
+msgctxt "field:ir.action,keywords:0"
+msgid "Keywords"
+msgstr "Ключови думи"
+
+msgctxt "field:ir.action,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.action,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.action,type:0"
+msgid "Type"
+msgstr "Вид"
+
+msgctxt "field:ir.action,usage:0"
+msgid "Usage"
+msgstr "Използване"
+
+msgctxt "field:ir.action.act_window,act_window_views:0"
+msgid "Views"
+msgstr "Изгледи"
+
+msgctxt "field:ir.action.act_window,action:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "field:ir.action.act_window,auto_refresh:0"
+msgid "Auto-Refresh"
+msgstr "Самообновяване"
+
+msgctxt "field:ir.action.act_window,context:0"
+msgid "Context Value"
+msgstr "Стойност на котекст"
+
+msgctxt "field:ir.action.act_window,domain:0"
+msgid "Domain Value"
+msgstr "Стойност на домейн"
+
+msgctxt "field:ir.action.act_window,limit:0"
+msgid "Limit"
+msgstr "Ограничение"
+
+msgctxt "field:ir.action.act_window,pyson_context:0"
+msgid "PySON Context"
+msgstr "PySON контекст"
+
+msgctxt "field:ir.action.act_window,pyson_domain:0"
+msgid "PySON Domain"
+msgstr "PySON контекст"
+
+msgctxt "field:ir.action.act_window,pyson_search_value:0"
+msgid "PySON Search Criteria"
+msgstr "PySON критерии за търсене"
+
+msgctxt "field:ir.action.act_window,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.action.act_window,res_model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:ir.action.act_window,search_value:0"
+msgid "Search Criteria"
+msgstr "Критерии за търсене"
+
+msgctxt "field:ir.action.act_window,views:0"
+msgid "Views"
+msgstr "Изгледи"
+
+msgctxt "field:ir.action.act_window,window_name:0"
+msgid "Window Name"
+msgstr "Име на прозорец"
+
+msgctxt "field:ir.action.act_window.view,act_window:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "field:ir.action.act_window.view,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.action.act_window.view,sequence:0"
+msgid "Sequence"
+msgstr "Последователност"
+
+msgctxt "field:ir.action.act_window.view,view:0"
+msgid "View"
+msgstr "Изглед"
+
+msgctxt "field:ir.action.keyword,action:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "field:ir.action.keyword,keyword:0"
+msgid "Keyword"
+msgstr "Ключова дума"
+
+msgctxt "field:ir.action.keyword,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:ir.action.keyword,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.action.report,action:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "field:ir.action.report,direct_print:0"
+msgid "Direct Print"
+msgstr "Директен печат"
+
+msgctxt "field:ir.action.report,email:0"
+msgid "Email"
+msgstr "Email"
+
+msgctxt "field:ir.action.report,extension:0"
+msgid "Extension"
+msgstr "Разширение"
+
+msgctxt "field:ir.action.report,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:ir.action.report,module:0"
+msgid "Module"
+msgstr "Модул"
+
+msgctxt "field:ir.action.report,pyson_email:0"
+msgid "PySON Email"
+msgstr "PySON Email"
+
+msgctxt "field:ir.action.report,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.action.report,report:0"
+msgid "Path"
+msgstr "Път"
+
+msgctxt "field:ir.action.report,report_content:0"
+msgid "Content"
+msgstr "Съдържание"
+
+#, fuzzy
+msgctxt "field:ir.action.report,report_content_custom:0"
+msgid "Content"
+msgstr "Съдържание"
+
+msgctxt "field:ir.action.report,report_name:0"
+msgid "Internal Name"
+msgstr "Вътрешно име"
+
+msgctxt "field:ir.action.report,style:0"
+msgid "Style"
+msgstr "Стил"
+
+msgctxt "field:ir.action.report,style_content:0"
+msgid "Style"
+msgstr "Стил"
+
+msgctxt "field:ir.action.report,template_extension:0"
+msgid "Template Extension"
+msgstr ""
+
+msgctxt "field:ir.action.url,action:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "field:ir.action.url,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.action.url,url:0"
+msgid "Action Url"
+msgstr "URL на действие"
+
+msgctxt "field:ir.action.wizard,action:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "field:ir.action.wizard,email:0"
+msgid "Email"
+msgstr "Email"
+
+msgctxt "field:ir.action.wizard,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:ir.action.wizard,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.action.wizard,window:0"
+msgid "Window"
+msgstr "Прозорец"
+
+msgctxt "field:ir.action.wizard,wiz_name:0"
+msgid "Wizard name"
+msgstr "Име на помощник"
+
+msgctxt "field:ir.attachment,collision:0"
+msgid "Collision"
+msgstr "Конфликт"
+
+msgctxt "field:ir.attachment,data:0"
+msgid "Data"
+msgstr "Данни"
+
+msgctxt "field:ir.attachment,data_size:0"
+msgid "Data size"
+msgstr "Размер на данни"
+
+msgctxt "field:ir.attachment,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:ir.attachment,digest:0"
+msgid "Digest"
+msgstr "Резюме"
+
+msgctxt "field:ir.attachment,last_modification:0"
+msgid "Last Modification"
+msgstr "Последна промяна"
+
+msgctxt "field:ir.attachment,last_user:0"
+msgid "Last User"
+msgstr "Последен потребител"
+
+msgctxt "field:ir.attachment,link:0"
+msgid "Link"
+msgstr "Препратка"
+
+msgctxt "field:ir.attachment,name:0"
+msgid "Name"
+msgstr "Име на прикачен файл"
+
+msgctxt "field:ir.attachment,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.attachment,resource:0"
+msgid "Resource"
+msgstr "Ресурс"
+
+msgctxt "field:ir.attachment,summary:0"
+msgid "Summary"
+msgstr "Обобщено"
+
+msgctxt "field:ir.attachment,type:0"
+msgid "Type"
+msgstr "Вид"
+
+msgctxt "field:ir.cache,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.cache,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.cache,timestamp:0"
+msgid "Timestamp"
+msgstr "Дата"
+
+msgctxt "field:ir.cron,active:0"
+msgid "Active"
+msgstr "Активен"
+
+msgctxt "field:ir.cron,args:0"
+msgid "Arguments"
+msgstr "Аргументи"
+
+msgctxt "field:ir.cron,function:0"
+msgid "Function"
+msgstr "Функция"
+
+msgctxt "field:ir.cron,interval_number:0"
+msgid "Interval Number"
+msgstr "Номер на интервал"
+
+msgctxt "field:ir.cron,interval_type:0"
+msgid "Interval Unit"
+msgstr "Единица за интервал"
+
+msgctxt "field:ir.cron,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:ir.cron,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.cron,next_call:0"
+msgid "Next Call"
+msgstr ""
+
+msgctxt "field:ir.cron,number_calls:0"
+msgid "Number of Calls"
+msgstr ""
+
+msgctxt "field:ir.cron,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.cron,repeat_missed:0"
+msgid "Repeat Missed"
+msgstr ""
+
+msgctxt "field:ir.cron,request_user:0"
+msgid "Request User"
+msgstr "Заявил потребител"
+
+msgctxt "field:ir.cron,user:0"
+msgid "Execution User"
+msgstr "Изпълняващ потребител"
+
+msgctxt "field:ir.export,export_fields:0"
+msgid "Fields"
+msgstr "Полета"
+
+msgctxt "field:ir.export,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.export,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.export,resource:0"
+msgid "Resource"
+msgstr "Ресурс"
+
+msgctxt "field:ir.export.line,export:0"
+msgid "Export"
+msgstr "Извличане"
+
+msgctxt "field:ir.export.line,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.export.line,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.lang,active:0"
+msgid "Active"
+msgstr "Активен"
+
+msgctxt "field:ir.lang,code:0"
+msgid "Code"
+msgstr "Код"
+
+msgctxt "field:ir.lang,date:0"
+msgid "Date"
+msgstr "Дата"
+
+msgctxt "field:ir.lang,decimal_point:0"
+msgid "Decimal Separator"
+msgstr "Десетичен разделител"
+
+msgctxt "field:ir.lang,direction:0"
+msgid "Direction"
+msgstr "Посока"
+
+msgctxt "field:ir.lang,grouping:0"
+msgid "Grouping"
+msgstr "Групиране"
+
+msgctxt "field:ir.lang,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.lang,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.lang,thousands_sep:0"
+msgid "Thousands Separator"
+msgstr "Разделител за хиляди"
+
+msgctxt "field:ir.lang,translatable:0"
+msgid "Translatable"
+msgstr "За превод"
+
+msgctxt "field:ir.model,fields:0"
+msgid "Fields"
+msgstr "Полета"
+
+msgctxt "field:ir.model,info:0"
+msgid "Information"
+msgstr "Информация"
+
+msgctxt "field:ir.model,model:0"
+msgid "Model Name"
+msgstr "Име на модел"
+
+msgctxt "field:ir.model,module:0"
+msgid "Module"
+msgstr "Модул"
+
+msgctxt "field:ir.model,name:0"
+msgid "Model Description"
+msgstr "Описание на модел"
+
+msgctxt "field:ir.model,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.model.access,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:ir.model.access,group:0"
+msgid "Group"
+msgstr "Група"
+
+msgctxt "field:ir.model.access,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:ir.model.access,perm_create:0"
+msgid "Create Access"
+msgstr "Права за създаване"
+
+msgctxt "field:ir.model.access,perm_delete:0"
+msgid "Delete Access"
+msgstr "Права за изтриване"
+
+msgctxt "field:ir.model.access,perm_read:0"
+msgid "Read Access"
+msgstr "Права за четене"
+
+msgctxt "field:ir.model.access,perm_write:0"
+msgid "Write Access"
+msgstr "Права за писане"
+
+msgctxt "field:ir.model.access,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.model.data,date_init:0"
+msgid "Init Date"
+msgstr "Начална дата"
+
+msgctxt "field:ir.model.data,date_update:0"
+msgid "Update Date"
+msgstr "Дата на обновяване"
+
+msgctxt "field:ir.model.data,db_id:0"
+msgid "Resource ID"
+msgstr "ID на ресурс"
+
+msgctxt "field:ir.model.data,fs_id:0"
+msgid "Identifier on File System"
+msgstr "Идентификатор от файлова система"
+
+msgctxt "field:ir.model.data,inherit:0"
+msgid "Inherit"
+msgstr "Наследяване"
+
+msgctxt "field:ir.model.data,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:ir.model.data,module:0"
+msgid "Module"
+msgstr "Модул"
+
+msgctxt "field:ir.model.data,noupdate:0"
+msgid "No Update"
+msgstr "Без обновяване"
+
+msgctxt "field:ir.model.data,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.model.data,values:0"
+msgid "Values"
+msgstr "Стойности"
+
+msgctxt "field:ir.model.field,field_description:0"
+msgid "Field Description"
+msgstr "Описание на поле"
+
+msgctxt "field:ir.model.field,groups:0"
+msgid "Groups"
+msgstr "Групи"
+
+msgctxt "field:ir.model.field,help:0"
+msgid "Help"
+msgstr "Помощ"
+
+msgctxt "field:ir.model.field,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:ir.model.field,module:0"
+msgid "Module"
+msgstr "Модул"
+
+msgctxt "field:ir.model.field,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.model.field,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.model.field,relation:0"
+msgid "Model Relation"
+msgstr "Модел на връзка"
+
+msgctxt "field:ir.model.field,ttype:0"
+msgid "Field Type"
+msgstr "Вид на поле"
+
+msgctxt "field:ir.model.field.access,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:ir.model.field.access,field:0"
+msgid "Field"
+msgstr "Поле"
+
+msgctxt "field:ir.model.field.access,group:0"
+msgid "Group"
+msgstr "Група"
+
+msgctxt "field:ir.model.field.access,perm_read:0"
+msgid "Read Access"
+msgstr "Права за четене"
+
+msgctxt "field:ir.model.field.access,perm_write:0"
+msgid "Write Access"
+msgstr "Права за писане"
+
+msgctxt "field:ir.model.field.access,rec_name:0"
+msgid "Name"
+msgstr "Име на прикачен файл"
+
+msgctxt "field:ir.model.print_model_graph.init,filter:0"
+msgid "Filter"
+msgstr "Филтър"
+
+msgctxt "field:ir.model.print_model_graph.init,level:0"
+msgid "Level"
+msgstr "Ниво"
+
+msgctxt "field:ir.module.module,author:0"
+msgid "Author"
+msgstr "Автор"
+
+msgctxt "field:ir.module.module,dependencies:0"
+msgid "Dependencies"
+msgstr "Зависимости"
+
+msgctxt "field:ir.module.module,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:ir.module.module,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.module.module,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.module.module,shortdesc:0"
+msgid "Short description"
+msgstr "Кратко описание"
+
+msgctxt "field:ir.module.module,state:0"
+msgid "State"
+msgstr "Състояние"
+
+msgctxt "field:ir.module.module,version:0"
+msgid "Version"
+msgstr "Версия"
+
+msgctxt "field:ir.module.module,website:0"
+msgid "Website"
+msgstr "Website"
+
+msgctxt "field:ir.module.module.config_wizard.item,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.module.module.config_wizard.item,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.module.module.config_wizard.item,sequence:0"
+msgid "Sequence"
+msgstr "Последователност"
+
+msgctxt "field:ir.module.module.config_wizard.item,state:0"
+msgid "State"
+msgstr "Състояние"
+
+msgctxt "field:ir.module.module.dependency,module:0"
+msgid "Module"
+msgstr "Модул"
+
+msgctxt "field:ir.module.module.dependency,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.module.module.dependency,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.module.module.dependency,state:0"
+msgid "State"
+msgstr "Състояние"
+
+msgctxt "field:ir.module.module.install_upgrade.init,module_info:0"
+msgid "Modules to update"
+msgstr "Модули за обновяване"
+
+msgctxt "field:ir.property,field:0"
+msgid "Field"
+msgstr "Поле"
+
+msgctxt "field:ir.property,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.property,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.property,res:0"
+msgid "Resource"
+msgstr "Ресурс"
+
+msgctxt "field:ir.property,value:0"
+msgid "Value"
+msgstr "Стойност"
+
+msgctxt "field:ir.rule,field:0"
+msgid "Field"
+msgstr "Поле"
+
+msgctxt "field:ir.rule,operand:0"
+msgid "Operand"
+msgstr "Операнд"
+
+msgctxt "field:ir.rule,operator:0"
+msgid "Operator"
+msgstr "Оператор"
+
+msgctxt "field:ir.rule,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.rule,rule_group:0"
+msgid "Group"
+msgstr "Група"
+
+msgctxt "field:ir.rule.group,default_p:0"
+msgid "Default"
+msgstr "По подразбиране"
+
+msgctxt "field:ir.rule.group,global_p:0"
+msgid "Global"
+msgstr "Глобален"
+
+msgctxt "field:ir.rule.group,groups:0"
+msgid "Groups"
+msgstr "Групи"
+
+msgctxt "field:ir.rule.group,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:ir.rule.group,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.rule.group,perm_create:0"
+msgid "Create Access"
+msgstr "Права за създаване"
+
+msgctxt "field:ir.rule.group,perm_delete:0"
+msgid "Delete Access"
+msgstr "Изтриване на достъп"
+
+msgctxt "field:ir.rule.group,perm_read:0"
+msgid "Read Access"
+msgstr "Права за четене"
+
+msgctxt "field:ir.rule.group,perm_write:0"
+msgid "Write Access"
+msgstr "Права за писане"
+
+msgctxt "field:ir.rule.group,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.rule.group,rules:0"
+msgid "Tests"
+msgstr "Тестове"
+
+msgctxt "field:ir.rule.group,users:0"
+msgid "Users"
+msgstr "Потребители"
+
+msgctxt "field:ir.sequence,active:0"
+msgid "Active"
+msgstr "Активен"
+
+msgctxt "field:ir.sequence,code:0"
+msgid "Sequence Code"
+msgstr "Вид последователност"
+
+msgctxt "field:ir.sequence,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr "Последен времеви маркер"
+
+msgctxt "field:ir.sequence,name:0"
+msgid "Sequence Name"
+msgstr "Име на последователност"
+
+msgctxt "field:ir.sequence,number_increment:0"
+msgid "Increment Number"
+msgstr "Стойност на увеличаване"
+
+msgctxt "field:ir.sequence,number_next:0"
+msgid "Next Number"
+msgstr "Следващо число"
+
+#, fuzzy
+msgctxt "field:ir.sequence,number_next_internal:0"
+msgid "Next Number"
+msgstr "Следващо число"
+
+msgctxt "field:ir.sequence,padding:0"
+msgid "Number padding"
+msgstr "Фиксирана дължина (нули)"
+
+msgctxt "field:ir.sequence,prefix:0"
+msgid "Prefix"
+msgstr "Префикс"
+
+msgctxt "field:ir.sequence,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.sequence,suffix:0"
+msgid "Suffix"
+msgstr "Суфикс"
+
+msgctxt "field:ir.sequence,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr "Отместване на времеви маркер"
+
+msgctxt "field:ir.sequence,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr "Закръгление на времеви маркер"
+
+msgctxt "field:ir.sequence,type:0"
+msgid "Type"
+msgstr "Вид"
+
+msgctxt "field:ir.sequence.strict,active:0"
+msgid "Active"
+msgstr "Активен"
+
+msgctxt "field:ir.sequence.strict,code:0"
+msgid "Sequence Code"
+msgstr "Вид последователност"
+
+msgctxt "field:ir.sequence.strict,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr "Последен времеви маркер"
+
+msgctxt "field:ir.sequence.strict,name:0"
+msgid "Sequence Name"
+msgstr "Име на последователност"
+
+msgctxt "field:ir.sequence.strict,number_increment:0"
+msgid "Increment Number"
+msgstr "Стойност на увеличаване"
+
+msgctxt "field:ir.sequence.strict,number_next:0"
+msgid "Next Number"
+msgstr "Следващо число"
+
+#, fuzzy
+msgctxt "field:ir.sequence.strict,number_next_internal:0"
+msgid "Next Number"
+msgstr "Следващо число"
+
+msgctxt "field:ir.sequence.strict,padding:0"
+msgid "Number padding"
+msgstr "Фиксирана дължина (нули)"
+
+msgctxt "field:ir.sequence.strict,prefix:0"
+msgid "Prefix"
+msgstr "Префикс"
+
+msgctxt "field:ir.sequence.strict,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.sequence.strict,suffix:0"
+msgid "Suffix"
+msgstr "Суфикс"
+
+msgctxt "field:ir.sequence.strict,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr "Отместване на времеви маркер"
+
+msgctxt "field:ir.sequence.strict,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr "Закръгление на времеви маркер"
+
+msgctxt "field:ir.sequence.strict,type:0"
+msgid "Type"
+msgstr "Вид"
+
+msgctxt "field:ir.sequence.type,code:0"
+msgid "Sequence Code"
+msgstr "Код на последователност"
+
+msgctxt "field:ir.sequence.type,name:0"
+msgid "Sequence Name"
+msgstr "Име на последователност"
+
+msgctxt "field:ir.sequence.type,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.translation,fuzzy:0"
+msgid "Fuzzy"
+msgstr "Неясен"
+
+msgctxt "field:ir.translation,lang:0"
+msgid "Language"
+msgstr "Език"
+
+msgctxt "field:ir.translation,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:ir.translation,module:0"
+msgid "Module"
+msgstr "Модул"
+
+msgctxt "field:ir.translation,name:0"
+msgid "Field Name"
+msgstr "Име на поле"
+
+msgctxt "field:ir.translation,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.translation,res_id:0"
+msgid "Resource ID"
+msgstr "ID на ресурс"
+
+msgctxt "field:ir.translation,src:0"
+msgid "Source"
+msgstr "Източник"
+
+msgctxt "field:ir.translation,src_md5:0"
+msgid "Source MD5"
+msgstr "MD5 на източник"
+
+msgctxt "field:ir.translation,type:0"
+msgid "Type"
+msgstr "Вид"
+
+msgctxt "field:ir.translation,value:0"
+msgid "Translation Value"
+msgstr "Преведено значение"
+
+msgctxt "field:ir.translation.export.init,lang:0"
+msgid "Language"
+msgstr "Език"
+
+msgctxt "field:ir.translation.export.init,module:0"
+msgid "Module"
+msgstr "Модул"
+
+msgctxt "field:ir.translation.export.start,file:0"
+msgid "File"
+msgstr "Файл"
+
+msgctxt "field:ir.translation.update.init,lang:0"
+msgid "Language"
+msgstr "Език"
+
+msgctxt "field:ir.trigger,action_function:0"
+msgid "Action Function"
+msgstr "Функция на действие"
+
+msgctxt "field:ir.trigger,action_model:0"
+msgid "Action Model"
+msgstr "Модел на действие"
+
+msgctxt "field:ir.trigger,active:0"
+msgid "Active"
+msgstr "Активен"
+
+msgctxt "field:ir.trigger,condition:0"
+msgid "Condition"
+msgstr "Условие"
+
+msgctxt "field:ir.trigger,limit_number:0"
+msgid "Limit Number"
+msgstr "Макс брой редове"
+
+msgctxt "field:ir.trigger,minimum_delay:0"
+msgid "Minimum Delay"
+msgstr "Минимално забавяне"
+
+msgctxt "field:ir.trigger,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:ir.trigger,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.trigger,on_create:0"
+msgid "On Create"
+msgstr "При създаване"
+
+msgctxt "field:ir.trigger,on_delete:0"
+msgid "On Delete"
+msgstr "При изтриване"
+
+msgctxt "field:ir.trigger,on_time:0"
+msgid "On Time"
+msgstr "В даден момент"
+
+msgctxt "field:ir.trigger,on_write:0"
+msgid "On Write"
+msgstr "При запис"
+
+msgctxt "field:ir.trigger,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.trigger.log,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.trigger.log,record_id:0"
+msgid "Record ID"
+msgstr "ID на запис"
+
+msgctxt "field:ir.trigger.log,trigger:0"
+msgid "Trigger"
+msgstr "Превключвател"
+
+msgctxt "field:ir.ui.icon,icon:0"
+msgid "Icon"
+msgstr "Икона"
+
+msgctxt "field:ir.ui.icon,module:0"
+msgid "Module"
+msgstr "Модул"
+
+msgctxt "field:ir.ui.icon,name:0"
+msgid "Name"
+msgstr "Име на прикачен файл"
+
+msgctxt "field:ir.ui.icon,path:0"
+msgid "SVG Path"
+msgstr "Път към SVG файл"
+
+msgctxt "field:ir.ui.icon,rec_name:0"
+msgid "Name"
+msgstr "Име на прикачен файл"
+
+msgctxt "field:ir.ui.icon,sequence:0"
+msgid "Sequence"
+msgstr "Последователност"
+
+msgctxt "field:ir.ui.menu,action:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "field:ir.ui.menu,active:0"
+msgid "Active"
+msgstr "Активен"
+
+msgctxt "field:ir.ui.menu,childs:0"
+msgid "Children"
+msgstr "Деца"
+
+msgctxt "field:ir.ui.menu,complete_name:0"
+msgid "Complete Name"
+msgstr "Пълно име"
+
+msgctxt "field:ir.ui.menu,groups:0"
+msgid "Groups"
+msgstr "Групи"
+
+msgctxt "field:ir.ui.menu,icon:0"
+msgid "Icon"
+msgstr "Икона"
+
+msgctxt "field:ir.ui.menu,name:0"
+msgid "Menu"
+msgstr "Меню"
+
+msgctxt "field:ir.ui.menu,parent:0"
+msgid "Parent Menu"
+msgstr "Родителско меню"
+
+msgctxt "field:ir.ui.menu,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.ui.menu,sequence:0"
+msgid "Sequence"
+msgstr "Последователност"
+
+msgctxt "field:ir.ui.view,arch:0"
+msgid "View Architecture"
+msgstr "Архитектура на изгледа"
+
+msgctxt "field:ir.ui.view,domain:0"
+msgid "Domain"
+msgstr "Домейн"
+
+msgctxt "field:ir.ui.view,field_childs:0"
+msgid "Children Field"
+msgstr "Подчинено поле"
+
+msgctxt "field:ir.ui.view,inherit:0"
+msgid "Inherited View"
+msgstr "Наследен изглед"
+
+msgctxt "field:ir.ui.view,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:ir.ui.view,module:0"
+msgid "Module"
+msgstr "Модул"
+
+msgctxt "field:ir.ui.view,priority:0"
+msgid "Priority"
+msgstr "Важност"
+
+msgctxt "field:ir.ui.view,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.ui.view,type:0"
+msgid "View Type"
+msgstr "Вид изглед"
+
+msgctxt "field:ir.ui.view_sc,name:0"
+msgid "Shortcut Name"
+msgstr "Име на бърз клавиш"
+
+msgctxt "field:ir.ui.view_sc,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.ui.view_sc,res_id:0"
+msgid "Resource Ref."
+msgstr "Отпр. към ресурс"
+
+msgctxt "field:ir.ui.view_sc,resource:0"
+msgid "Resource Name"
+msgstr "Име на ресурс"
+
+msgctxt "field:ir.ui.view_sc,sequence:0"
+msgid "Sequence"
+msgstr "Последователност"
+
+msgctxt "field:ir.ui.view_sc,user_id:0"
+msgid "User Ref."
+msgstr "Препр. на потребител"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,child_name:0"
+msgid "Child Name"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,domain:0"
+msgid "Domain"
+msgstr "Домейн"
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,nodes:0"
+msgid "Expanded Nodes"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,rec_name:0"
+msgid "Name"
+msgstr "Име на прикачен файл"
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,user:0"
+msgid "User"
+msgstr "Потребител"
+
+msgctxt "field:ir.ui.view_tree_width,field:0"
+msgid "Field"
+msgstr "Поле"
+
+msgctxt "field:ir.ui.view_tree_width,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:ir.ui.view_tree_width,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.ui.view_tree_width,user:0"
+msgid "User"
+msgstr "Потребител"
+
+msgctxt "field:ir.ui.view_tree_width,width:0"
+msgid "Width"
+msgstr "Ширина"
+
+msgctxt "help:ir.action.act_window,auto_refresh:0"
+msgid "Add an auto-refresh on the view"
+msgstr "Добавяне на самообновяване на изгледа"
+
+msgctxt "help:ir.action.act_window,limit:0"
+msgid "Default limit for the list view"
+msgstr "Ограничение по подразбиране за изглед със списък"
+
+msgctxt "help:ir.action.act_window,search_value:0"
+msgid "Default search criteria for the list view"
+msgstr "Условие за търсене по подразбиране върху изглед със списък "
+
+msgctxt "help:ir.action.act_window,window_name:0"
+msgid "Use the action name as window name"
+msgstr "Използване на името на действие като име на прозорец"
+
+msgctxt "help:ir.action.report,extension:0"
+msgid ""
+"Leave empty for the same as template, see unoconv documentation for "
+"compatible format"
+msgstr ""
+
+msgctxt "help:ir.action.report,style:0"
+msgid "Define the style to apply on the report."
+msgstr "Задайте стила който да се приложа на тази справка."
+
+msgctxt "help:ir.action.wizard,window:0"
+msgid "Run wizard in a new window"
+msgstr "Стартиране на помощник в нов прозорец"
+
+msgctxt "help:ir.cron,number_calls:0"
+msgid ""
+"Number of times the function is called, a negative number indicates that the"
+" function will always be called"
+msgstr ""
+
+msgctxt "help:ir.cron,request_user:0"
+msgid "The user who will receive requests in case of failure"
+msgstr "Потребителя който получава заявки в случай на проблем"
+
+msgctxt "help:ir.cron,user:0"
+msgid "The user used to execute this action"
+msgstr "Потребителя от чието име се изпълнява действието"
+
+msgctxt "help:ir.lang,code:0"
+msgid "RFC 4646 tag: http://tools.ietf.org/html/rfc4646"
+msgstr ""
+
+msgctxt "help:ir.model,module:0"
+msgid "Module in which this model is defined"
+msgstr "Модула в който този модел е зададен"
+
+msgctxt "help:ir.model.data,db_id:0"
+msgid "The id of the record in the database."
+msgstr "ID на записа в базата данни."
+
+msgctxt "help:ir.model.data,fs_id:0"
+msgid "The id of the record as known on the file system."
+msgstr "ID на записа както е записан в файловата система"
+
+msgctxt "help:ir.model.field,module:0"
+msgid "Module in which this field is defined"
+msgstr "Модул в който този модел е зададен"
+
+msgctxt "help:ir.model.print_model_graph.init,filter:0"
+msgid ""
+"Entering a Python Regular Expression will exclude matching models from the "
+"graph."
+msgstr ""
+"Въвеждането на регулярен израз на python ще изключи пасващия модел от "
+"диаграмата."
+
+msgctxt "help:ir.rule.group,default_p:0"
+msgid "Add this rule to all users by default"
+msgstr "По подразбиране добавете това правило за всички потребители"
+
+msgctxt "help:ir.rule.group,global_p:0"
+msgid ""
+"Make the rule global \n"
+"so every users must follow this rule"
+msgstr ""
+"Направете правилото глобално\n"
+"така че всеки потребител да го прилага"
+
+msgctxt "help:ir.rule.group,rules:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr "Правилото е удовлетворено ако поне един тест е успешен"
+
+msgctxt "help:ir.trigger,condition:0"
+msgid ""
+"A Python statement evaluated with record represented by \"self\"\n"
+"It triggers the action if true."
+msgstr ""
+"Python израз изчислен със запис представен със \"self\"\n"
+"Извиква действието ако е истина."
+
+msgctxt "help:ir.trigger,limit_number:0"
+msgid ""
+"Limit the number of call to \"Action Function\" by records.\n"
+"0 for no limit."
+msgstr ""
+"Ограничаване на броя извиквания на \"Действие на фунция\" по записи.\n"
+"0 - няма ограничение"
+
+msgctxt "help:ir.trigger,minimum_delay:0"
+msgid ""
+"Set a minimum delay in minutes between call to \"Action Function\" for the same record.\n"
+"0 for no delay."
+msgstr ""
+"Минимално забавяне в минути между извикването на \"Действие на функция\" за този запис.\n"
+"0 за да няма забавяне"
+
+msgctxt "model:ir.action,name:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "model:ir.action,name:act_action_act_window_form"
+msgid "Window Actions"
+msgstr "Действия на прозорец"
+
+msgctxt "model:ir.action,name:act_action_form"
+msgid "Actions"
+msgstr "Действия"
+
+msgctxt "model:ir.action,name:act_action_report_form"
+msgid "Reports"
+msgstr "Справки"
+
+msgctxt "model:ir.action,name:act_action_url_form"
+msgid "URLs"
+msgstr "URL-и"
+
+msgctxt "model:ir.action,name:act_action_wizard_form"
+msgid "Wizards"
+msgstr "Помощници"
+
+msgctxt "model:ir.action,name:act_attachment_form"
+msgid "Attachments"
+msgstr "Прикачени файлове"
+
+msgctxt "model:ir.action,name:act_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr "Елементи на помощника за конфигуриране"
+
+msgctxt "model:ir.action,name:act_cron_form"
+msgid "Scheduled Actions"
+msgstr "Планирани действия"
+
+msgctxt "model:ir.action,name:act_export_form"
+msgid "Exports"
+msgstr "Извличания"
+
+msgctxt "model:ir.action,name:act_icon_form"
+msgid "Icons"
+msgstr "Икони"
+
+msgctxt "model:ir.action,name:act_lang_form"
+msgid "Languages"
+msgstr "Езици"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_menu_list"
+msgid "Menu"
+msgstr "Меню"
+
+msgctxt "model:ir.action,name:act_menu_tree"
+msgid "Menu"
+msgstr "Меню"
+
+msgctxt "model:ir.action,name:act_model_access_form"
+msgid "Models Access"
+msgstr "Модел на достъп"
+
+msgctxt "model:ir.action,name:act_model_field_access_form"
+msgid "Fields Access"
+msgstr "Достъп до полета"
+
+msgctxt "model:ir.action,name:act_model_fields_form"
+msgid "Fields"
+msgstr "Полета"
+
+msgctxt "model:ir.action,name:act_model_form"
+msgid "Models"
+msgstr "Модели"
+
+msgctxt "model:ir.action,name:act_module_config_wizard"
+msgid "Module Configuration"
+msgstr "Конфицурация на модул"
+
+msgctxt "model:ir.action,name:act_module_form"
+msgid "Modules"
+msgstr "Модули"
+
+msgctxt "model:ir.action,name:act_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr "Започване на изчакващите инталации/обновявания"
+
+msgctxt "model:ir.action,name:act_property_form"
+msgid "Properties"
+msgstr "Свойства"
+
+msgctxt "model:ir.action,name:act_property_form_default"
+msgid "Default Properties"
+msgstr "Свойства по подразбиране"
+
+msgctxt "model:ir.action,name:act_rule_group_form"
+msgid "Record Rules"
+msgstr "Правила на запис"
+
+msgctxt "model:ir.action,name:act_sequence_form"
+msgid "Sequences"
+msgstr "Последователности"
+
+msgctxt "model:ir.action,name:act_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr "Точни последователности"
+
+msgctxt "model:ir.action,name:act_sequence_type_form"
+msgid "Sequence Types"
+msgstr "Видове последователности"
+
+msgctxt "model:ir.action,name:act_translation_clean"
+msgid "Clean Translations"
+msgstr "Изчистване на преводи"
+
+msgctxt "model:ir.action,name:act_translation_export"
+msgid "Export Translations"
+msgstr "Извличане на преводи"
+
+msgctxt "model:ir.action,name:act_translation_form"
+msgid "Translations"
+msgstr "Преводи"
+
+msgctxt "model:ir.action,name:act_translation_set_report"
+msgid "Set Report Translations"
+msgstr "Задаване на преводи на справки"
+
+msgctxt "model:ir.action,name:act_translation_update"
+msgid "Synchronize Translations"
+msgstr "Синхронизиране на преводите"
+
+msgctxt "model:ir.action,name:act_trigger_form"
+msgid "Triggers"
+msgstr "Превключватели"
+
+msgctxt "model:ir.action,name:act_view_form"
+msgid "Views"
+msgstr "Изгледи"
+
+msgctxt "model:ir.action,name:act_view_sc_add"
+msgid "Add Shortcut"
+msgstr "Добавяне на бърз клавиш"
+
+msgctxt "model:ir.action,name:act_view_sc_form"
+msgid "View Shortcuts"
+msgstr "Преглед бързи клавиши"
+
+msgctxt "model:ir.action,name:act_view_sc_open"
+msgid "Open Shortcut"
+msgstr "Отваряне на бързи клавиши"
+
+msgctxt "model:ir.action,name:act_view_show"
+msgid "Show View"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_tree_width_form"
+msgid "View Tree Width"
+msgstr "Ширина на дървовиден изглед"
+
+msgctxt "model:ir.action,name:print_model_graph"
+msgid "Graph"
+msgstr "Графика"
+
+msgctxt "model:ir.action,name:report_model_graph"
+msgid "Graph"
+msgstr "Графика"
+
+msgctxt "model:ir.action.act_window,name:0"
+msgid "Action act window"
+msgstr "Действие на активния прозорец"
+
+msgctxt "model:ir.action.act_window.view,name:0"
+msgid "Action act window view"
+msgstr "Изглед на действие на активния на прозорец"
+
+msgctxt "model:ir.action.keyword,name:0"
+msgid "Action keyword"
+msgstr "Бърз клавиш на действие"
+
+msgctxt "model:ir.action.report,name:0"
+msgid "Action report"
+msgstr "Справка за сметка"
+
+msgctxt "model:ir.action.url,name:0"
+msgid "Action URL"
+msgstr "URL на действие"
+
+msgctxt "model:ir.action.wizard,name:0"
+msgid "Action wizard"
+msgstr "Помощник за действие"
+
+msgctxt "model:ir.attachment,name:0"
+msgid "Attachment"
+msgstr "Прикачен файл"
+
+msgctxt "model:ir.cache,name:0"
+msgid "Cache"
+msgstr "Кеш"
+
+msgctxt "model:ir.cron,name:0"
+msgid "Cron"
+msgstr "Планировщик"
+
+msgctxt "model:ir.date,name:0"
+msgid "Date"
+msgstr "Дата"
+
+msgctxt "model:ir.export,name:0"
+msgid "Export"
+msgstr "Извличане"
+
+msgctxt "model:ir.export.line,name:0"
+msgid "Export line"
+msgstr "Ред от извличане"
+
+msgctxt "model:ir.lang,name:0"
+msgid "Language"
+msgstr "Език"
+
+msgctxt "model:ir.lang,name:lang_bg"
+msgid "Bulgarian"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_cs"
+msgid "Czech"
+msgstr "Чешки"
+
+msgctxt "model:ir.lang,name:lang_de"
+msgid "German"
+msgstr "Немски"
+
+msgctxt "model:ir.lang,name:lang_en"
+msgid "English"
+msgstr "Англииски"
+
+msgctxt "model:ir.lang,name:lang_es"
+msgid "Spanish (Spain)"
+msgstr "Испански"
+
+msgctxt "model:ir.lang,name:lang_es_CO"
+msgid "Spanish (Colombia)"
+msgstr "Испански (Колумбия)"
+
+msgctxt "model:ir.lang,name:lang_fr"
+msgid "French"
+msgstr "Френски"
+
+msgctxt "model:ir.lang,name:lang_nl"
+msgid "Dutch"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_ru"
+msgid "Russian"
+msgstr "Руски"
+
+msgctxt "model:ir.model,name:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "model:ir.model.access,name:0"
+msgid "Model access"
+msgstr "Модел на достъпа"
+
+msgctxt "model:ir.model.data,name:0"
+msgid "Model data"
+msgstr "Модел на данни"
+
+msgctxt "model:ir.model.field,name:0"
+msgid "Model field"
+msgstr "Поле на модел"
+
+msgctxt "model:ir.model.field.access,name:0"
+msgid "Model Field Access"
+msgstr "Модел на достъп до поле"
+
+msgctxt "model:ir.model.print_model_graph.init,name:0"
+msgid "Print Model Graph Init"
+msgstr "Начален печат на графика на модел"
+
+msgctxt "model:ir.module.module,name:0"
+msgid "Module"
+msgstr "Модул"
+
+msgctxt "model:ir.module.module.config_wizard.first,name:0"
+msgid "Module Config Wizard First"
+msgstr "Първи помощник на конфигуриране на модул"
+
+msgctxt "model:ir.module.module.config_wizard.item,name:0"
+msgid "Config wizard to run after installing module"
+msgstr "Задаване на помощника да се стартира след инсталиране на модула"
+
+msgctxt "model:ir.module.module.dependency,name:0"
+msgid "Module dependency"
+msgstr "Зависимости на модула"
+
+msgctxt "model:ir.module.module.install_upgrade.init,name:0"
+msgid "Module Install Upgrade Init"
+msgstr "Начално инсталиране/обновяване на модул"
+
+msgctxt "model:ir.module.module.install_upgrade.start,name:0"
+msgid "Module Install Upgrade Start"
+msgstr "Начало на инсталиране/обновяване на модул"
+
+msgctxt "model:ir.property,name:0"
+msgid "Property"
+msgstr "Свойство"
+
+msgctxt "model:ir.rule,name:0"
+msgid "Rule"
+msgstr "Правило"
+
+msgctxt "model:ir.rule.group,name:0"
+msgid "Rule group"
+msgstr "Група правила"
+
+msgctxt "model:ir.sequence,name:0"
+msgid "Sequence"
+msgstr "Последователност"
+
+msgctxt "model:ir.sequence.strict,name:0"
+msgid "Sequence Strict"
+msgstr "Точна последователност"
+
+msgctxt "model:ir.sequence.type,name:0"
+msgid "Sequence type"
+msgstr "Вид последователност"
+
+msgctxt "model:ir.translation,name:0"
+msgid "Translation"
+msgstr "Превод"
+
+msgctxt "model:ir.translation.clean.init,name:0"
+msgid "Clean translation init"
+msgstr "Начално изчистване на превод"
+
+msgctxt "model:ir.translation.clean.start,name:0"
+msgid "Clean translation start"
+msgstr "Изчистване на преводи - начало"
+
+msgctxt "model:ir.translation.export.init,name:0"
+msgid "Export translation - language and module"
+msgstr "Изчличане на превод - Език и модул"
+
+msgctxt "model:ir.translation.export.start,name:0"
+msgid "Export translation - file"
+msgstr "Извличане на превод - файл"
+
+msgctxt "model:ir.translation.set_report.init,name:0"
+msgid "Update Report Translation"
+msgstr "Обновяване на преводи на справки"
+
+msgctxt "model:ir.translation.set_report.start,name:0"
+msgid "Update Report Translation"
+msgstr "Обновяване на превод на справка"
+
+msgctxt "model:ir.translation.update.init,name:0"
+msgid "Update translation - language"
+msgstr "Обновяване на превод - език"
+
+msgctxt "model:ir.trigger,name:0"
+msgid "Trigger"
+msgstr "Превключвател"
+
+msgctxt "model:ir.trigger.log,name:0"
+msgid "Trigger Log"
+msgstr "Лог на превключвател"
+
+msgctxt "model:ir.ui.icon,name:0"
+msgid "Icon"
+msgstr "Икона"
+
+msgctxt "model:ir.ui.menu,name:0"
+msgid "UI menu"
+msgstr "Потребителско меню"
+
+msgctxt "model:ir.ui.menu,name:menu_act_action"
+msgid "Actions"
+msgstr "Действия"
+
+msgctxt "model:ir.ui.menu,name:menu_action"
+msgid "Actions"
+msgstr "Действия"
+
+msgctxt "model:ir.ui.menu,name:menu_action_act_window"
+msgid "Window Actions"
+msgstr "Действия на прозорец"
+
+msgctxt "model:ir.ui.menu,name:menu_action_report_form"
+msgid "Reports"
+msgstr "Справки"
+
+msgctxt "model:ir.ui.menu,name:menu_action_url"
+msgid "URLs"
+msgstr "URL-и"
+
+msgctxt "model:ir.ui.menu,name:menu_action_wizard"
+msgid "Wizards"
+msgstr "Помощници"
+
+msgctxt "model:ir.ui.menu,name:menu_administration"
+msgid "Administration"
+msgstr "Администрация"
+
+msgctxt "model:ir.ui.menu,name:menu_attachment_form"
+msgid "Attachments"
+msgstr "Прикачени файлове"
+
+msgctxt "model:ir.ui.menu,name:menu_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr "Елементи на помощника за конфигуриране"
+
+msgctxt "model:ir.ui.menu,name:menu_cron_form"
+msgid "Scheduled Actions"
+msgstr "Планирани действия"
+
+msgctxt "model:ir.ui.menu,name:menu_export_form"
+msgid "Exports"
+msgstr "Извличания"
+
+msgctxt "model:ir.ui.menu,name:menu_icon_form"
+msgid "Icons"
+msgstr "Икони"
+
+msgctxt "model:ir.ui.menu,name:menu_ir_sequence_type"
+msgid "Sequence Types"
+msgstr "Видове последователности"
+
+msgctxt "model:ir.ui.menu,name:menu_lang_form"
+msgid "Languages"
+msgstr "Езици"
+
+msgctxt "model:ir.ui.menu,name:menu_localization"
+msgid "Localization"
+msgstr "Превод"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_menu_list"
+msgid "Menu"
+msgstr "Меню"
+
+msgctxt "model:ir.ui.menu,name:menu_model_access_form"
+msgid "Models Access"
+msgstr "Модел на достъп"
+
+msgctxt "model:ir.ui.menu,name:menu_model_field_access_form"
+msgid "Fields Access"
+msgstr "Достъп до полета"
+
+msgctxt "model:ir.ui.menu,name:menu_model_form"
+msgid "Models"
+msgstr "Модели"
+
+msgctxt "model:ir.ui.menu,name:menu_models"
+msgid "Models"
+msgstr "Модели"
+
+msgctxt "model:ir.ui.menu,name:menu_module_form"
+msgid "Modules"
+msgstr "Модули"
+
+msgctxt "model:ir.ui.menu,name:menu_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr "Започване на изчакващите инталации/обновявания"
+
+msgctxt "model:ir.ui.menu,name:menu_modules"
+msgid "Modules"
+msgstr "Модули"
+
+msgctxt "model:ir.ui.menu,name:menu_property_form"
+msgid "Properties"
+msgstr "Свойства"
+
+msgctxt "model:ir.ui.menu,name:menu_property_form_default"
+msgid "Default Properties"
+msgstr "Свойства по подразбиране"
+
+msgctxt "model:ir.ui.menu,name:menu_rule_group_form"
+msgid "Record Rules"
+msgstr "Правила на запис"
+
+msgctxt "model:ir.ui.menu,name:menu_scheduler"
+msgid "Scheduler"
+msgstr "Планировщик"
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_form"
+msgid "Sequences"
+msgstr "Последователности"
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr "Точни последователности"
+
+msgctxt "model:ir.ui.menu,name:menu_sequences"
+msgid "Sequences"
+msgstr "Последователности"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_clean"
+msgid "Clean Translations"
+msgstr "Изчистване на преводи"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_export"
+msgid "Export Translations"
+msgstr "Извличане на преводи"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_form"
+msgid "Translations"
+msgstr "Преводи"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_set_report"
+msgid "Set Report Translations"
+msgstr "Задаване на преводи на справки"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_update"
+msgid "Synchronize Translations"
+msgstr "Синхронизиране на преводите"
+
+msgctxt "model:ir.ui.menu,name:menu_trigger_form"
+msgid "Triggers"
+msgstr "Превключватели"
+
+msgctxt "model:ir.ui.menu,name:menu_ui"
+msgid "User Interface"
+msgstr "Потребителски интерфейс"
+
+msgctxt "model:ir.ui.menu,name:menu_view"
+msgid "Views"
+msgstr "Изгледи"
+
+msgctxt "model:ir.ui.menu,name:menu_view_sc"
+msgid "View Shortcuts"
+msgstr "Преглед бързи клавиши"
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_width"
+msgid "View Tree Width"
+msgstr "Ширина на дървовиден изглед"
+
+msgctxt "model:ir.ui.menu,name:model_model_fields_form"
+msgid "Fields"
+msgstr "Полета"
+
+msgctxt "model:ir.ui.view,name:0"
+msgid "View"
+msgstr "Изглед"
+
+msgctxt "model:ir.ui.view.show.init,name:0"
+msgid "ir.ui.view.show.init"
+msgstr ""
+
+msgctxt "model:ir.ui.view_sc,name:0"
+msgid "View shortcut"
+msgstr "Изглед бърз клавиш"
+
+msgctxt "model:ir.ui.view_tree_expanded_state,name:0"
+msgid "ir.ui.view_tree_expanded_state"
+msgstr ""
+
+msgctxt "model:ir.ui.view_tree_width,name:0"
+msgid "View Tree Width"
+msgstr "Ширина на дървовиден изглед"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action form"
+msgstr "Форма за действие"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action tree"
+msgstr "Дърво с действия"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Form relate"
+msgstr "Свързана форма"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open Graph"
+msgstr "Отваряне на графика"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open tree"
+msgstr "Отваряне на дърво"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Print form"
+msgstr "Отпечатване на форма"
+
+msgctxt "selection:ir.attachment,type:0"
+msgid "Data"
+msgstr "Данни"
+
+msgctxt "selection:ir.attachment,type:0"
+msgid "Link"
+msgstr "Препратка"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Days"
+msgstr "Дни"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Hours"
+msgstr "Часове"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Minutes"
+msgstr "Минути"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Months"
+msgstr "Месеци"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Weeks"
+msgstr "Седмици"
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Left-to-right"
+msgstr "Отляво надясно"
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Right-to-left"
+msgstr "Отдясно наляво"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Installed"
+msgstr "Инсталиран"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Not Installed"
+msgstr "Не е инсталиран"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be installed"
+msgstr "За инсталиране"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be removed"
+msgstr "За премахване"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be upgraded"
+msgstr "За обновяване"
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Done"
+msgstr "Приключен"
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Open"
+msgstr "Отваряне"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Installed"
+msgstr "Инсталиран"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Not Installed"
+msgstr "Не е инсталиран"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be installed"
+msgstr "За инсталиране"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be removed"
+msgstr "За премахване"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be upgraded"
+msgstr "За обновяване"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Unknown"
+msgstr "Неизвестен"
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Decimal Timestamp"
+msgstr "Десетичен времеви маркер"
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr "Шестнайсетичен времеви маркер"
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Incremental"
+msgstr "Нарастване"
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Decimal Timestamp"
+msgstr "Десетичен времеви маркер"
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr "Шестнайсетичен времеви маркер"
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Incremental"
+msgstr "Нарастване"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Error"
+msgstr "Грешка"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Field"
+msgstr "Поле"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Help"
+msgstr "Помощ"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "ODT"
+msgstr "ODT"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Selection"
+msgstr "Избор"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "View"
+msgstr "Изглед"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Wizard Button"
+msgstr "Бутон на помощник"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.act_window"
+msgstr ""
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.report"
+msgstr ""
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.url"
+msgstr ""
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.wizard"
+msgstr ""
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid ""
+msgstr ""
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Board"
+msgstr "Табло"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Form"
+msgstr "Форма"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Graph"
+msgstr "Графика"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Tree"
+msgstr "Дърво"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "General"
+msgstr "Основен"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keyword"
+msgstr "Ключова дума"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keywords"
+msgstr "Ключови думи"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open Window"
+msgstr "Отваряне на прозорец"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open a Window"
+msgstr "Отваряне на прозорец"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Views"
+msgstr "Изгледи"
+
+msgctxt "view:ir.action.report:0"
+msgid "General"
+msgstr "Основен"
+
+msgctxt "view:ir.action.report:0"
+msgid "Keyword"
+msgstr "Ключова дума"
+
+msgctxt "view:ir.action.report:0"
+msgid "Keywords"
+msgstr "Ключови думи"
+
+msgctxt "view:ir.action.report:0"
+msgid "Report"
+msgstr "Справка"
+
+msgctxt "view:ir.action.report:0"
+msgid "Report xml"
+msgstr "Xml на справка"
+
+msgctxt "view:ir.action.url:0"
+msgid "General"
+msgstr "Основен"
+
+msgctxt "view:ir.action.url:0"
+msgid "Keyword"
+msgstr "Ключова дума"
+
+msgctxt "view:ir.action.url:0"
+msgid "Keywords"
+msgstr "Ключови думи"
+
+msgctxt "view:ir.action.url:0"
+msgid "URL"
+msgstr "URL"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "General"
+msgstr "Основен"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keyword"
+msgstr "Ключова дума"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keywords"
+msgstr "Ключови думи"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Wizard"
+msgstr "Помощник"
+
+msgctxt "view:ir.action:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "view:ir.action:0"
+msgid "General"
+msgstr "Основен"
+
+msgctxt "view:ir.action:0"
+msgid "Keyword"
+msgstr "Ключова дума"
+
+msgctxt "view:ir.action:0"
+msgid "Keywords"
+msgstr "Ключови думи"
+
+msgctxt "view:ir.attachment:0"
+msgid "Attachments"
+msgstr "Прикачени файлове"
+
+msgctxt "view:ir.attachment:0"
+msgid "Preview"
+msgstr "Преглед"
+
+msgctxt "view:ir.cron:0"
+msgid "Action to trigger"
+msgstr "Действие за стартиране"
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Action"
+msgstr "Планирано действие"
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Actions"
+msgstr "Планирани действия"
+
+msgctxt "view:ir.export:0"
+msgid "Exports"
+msgstr "Извличания"
+
+msgctxt "view:ir.lang:0"
+msgid "Date Formatting"
+msgstr "Форматиране на дата"
+
+msgctxt "view:ir.lang:0"
+msgid "Language"
+msgstr "Език"
+
+msgctxt "view:ir.lang:0"
+msgid "Languages"
+msgstr "Езици"
+
+msgctxt "view:ir.lang:0"
+msgid "Numbers Formatting"
+msgstr "Форматиране на числа"
+
+msgctxt "view:ir.model.access:0"
+msgid "Access controls"
+msgstr "Контрол на достъпа"
+
+msgctxt "view:ir.model.field.access:0"
+msgid "Field Access"
+msgstr "Достъп до поле"
+
+msgctxt "view:ir.model.field:0"
+msgid "Fields"
+msgstr "Полета"
+
+msgctxt "view:ir.model.print_model_graph.init:0"
+msgid "Print Model Graph"
+msgstr "Печат на графика на модел"
+
+msgctxt "view:ir.model:0"
+msgid "Fields Description"
+msgstr "Описание на полета"
+
+msgctxt "view:ir.model:0"
+msgid "Model Description"
+msgstr "Описание на модел"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "Welcome to the module configuration wizard!"
+msgstr "Добре дошли в помощника за конфигуриране на модула!"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "You will be able to configure your installation"
+msgstr "Ще може да конфигурирате инсталацията си"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid ""
+"You will be able to configure your installation depending on the modules you"
+" have installed."
+msgstr ""
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "depending on the modules you have installed."
+msgstr "в зависимост от модулите които сте инсталирали."
+
+msgctxt "view:ir.module.module.config_wizard.item:0"
+msgid "Config Wizard Items"
+msgstr "Елементи на помощника за конфигуриране"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Note that this operation my take a few minutes."
+msgstr "Забележка: Операцията може да отнеме няколко минути"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "System Upgrade"
+msgstr "Обновяване на системата"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Your system will be upgraded."
+msgstr "Системата ще бъде обновена."
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "System upgrade done"
+msgstr "Обновяването на системата приключено"
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "The modules have been upgraded / installed !"
+msgstr "Модулите са обновени / инсталирани !"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr "Отказ от инсталалиране"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr "Отказ от деинсталиране"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr "Отказ от обновяване"
+
+msgctxt "view:ir.module.module:0"
+msgid "Dependencies"
+msgstr "Зависимости"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr "Отбелязване за инсталиране"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr "Отбелязване за деинсталиране (beta)"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr "Отбелязване за обновяване"
+
+msgctxt "view:ir.module.module:0"
+msgid "Module"
+msgstr "Модул"
+
+msgctxt "view:ir.module.module:0"
+msgid "Modules"
+msgstr "Модули"
+
+msgctxt "view:ir.property:0"
+msgid "Properties"
+msgstr "Свойства"
+
+msgctxt "view:ir.property:0"
+msgid "Property"
+msgstr "Свойство"
+
+msgctxt "view:ir.rule.group:0"
+msgid ""
+"If there is no test defined, the rule is always satisfied if not global"
+msgstr "Ако не указан тест правилото винаги е удовлетворено ако не е глобално"
+
+msgctxt "view:ir.rule.group:0"
+msgid "Record rules"
+msgstr "Правила на записи"
+
+msgctxt "view:ir.rule.group:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr "Правилото е удовлетворено ако поне един тест е успешен"
+
+msgctxt "view:ir.rule:0"
+msgid "Test"
+msgstr "Тест"
+
+msgctxt "view:ir.sequence.type:0"
+msgid "Sequence Type"
+msgstr "Вид последователност"
+
+msgctxt "view:ir.sequence:0"
+msgid "${day}"
+msgstr "${ден}"
+
+msgctxt "view:ir.sequence:0"
+msgid "${month}"
+msgstr "${month} - месец"
+
+msgctxt "view:ir.sequence:0"
+msgid "${year}"
+msgstr "${year} - година"
+
+msgctxt "view:ir.sequence:0"
+msgid "Day:"
+msgstr "Ден:"
+
+msgctxt "view:ir.sequence:0"
+msgid "Incremental"
+msgstr "Нарастване"
+
+msgctxt "view:ir.sequence:0"
+msgid "Legend (Placeholders for prefix, suffix)"
+msgstr "Легенда (променливи за префикс, суфикс)"
+
+msgctxt "view:ir.sequence:0"
+msgid "Month:"
+msgstr "Месец:"
+
+msgctxt "view:ir.sequence:0"
+msgid "Sequences"
+msgstr "Последователности"
+
+msgctxt "view:ir.sequence:0"
+msgid "Timestamp"
+msgstr "Дата"
+
+msgctxt "view:ir.sequence:0"
+msgid "Year:"
+msgstr "Година:"
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations"
+msgstr "Изчистване на преводи"
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations?"
+msgstr "Изчистване на преводите?"
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations"
+msgstr "Изчистване на преводи"
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations Succeed!"
+msgstr "Изчистването на преводите е успешно!"
+
+msgctxt "view:ir.translation.export.init:0"
+msgid "Export Translation"
+msgstr "Извличане на превод"
+
+msgctxt "view:ir.translation.export.start:0"
+msgid "Export Translation"
+msgstr "Извличане на превод"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Set Report Translations"
+msgstr "Задаване на преводи на справки"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Synchronize Report Translations?"
+msgstr "Синхронизиране на преводи на справки?"
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Report Translations"
+msgstr "Задаване на преводи на справки"
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Translations Succeed!"
+msgstr "Преводите са успешно заредени!"
+
+msgctxt "view:ir.translation.update.init:0"
+msgid "Synchronize Translations"
+msgstr "Синхронизиране на преводите"
+
+msgctxt "view:ir.translation:0"
+msgid "Translations"
+msgstr "Преводи"
+
+msgctxt "view:ir.trigger:0"
+msgid "Trigger"
+msgstr "Превключвател"
+
+msgctxt "view:ir.trigger:0"
+msgid "Triggers"
+msgstr "Превключватели"
+
+msgctxt "view:ir.ui.icon:0"
+msgid "Icon"
+msgstr "Икона"
+
+msgctxt "view:ir.ui.icon:0"
+msgid "Icons"
+msgstr "Икони"
+
+msgctxt "view:ir.ui.menu:0"
+msgid "Menu"
+msgstr "Меню"
+
+msgctxt "view:ir.ui.view:0"
+msgid "View"
+msgstr "Изглед"
+
+msgctxt "view:ir.ui.view:0"
+msgid "_Show"
+msgstr ""
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcut"
+msgstr "Бърз клавиш"
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcuts"
+msgstr "Бързи клавиши"
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "View Tree Expanded State"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "Views Tree Expanded State"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "View Tree Width"
+msgstr "Ширина на дървовиден изглед"
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "Views Tree Width"
+msgstr "Ширина на дърво с изгледи"
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,end:0"
+msgid "Cancel"
+msgstr "Отказ"
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,print:0"
+msgid "Print"
+msgstr "Печат"
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,end:0"
+msgid "Cancel"
+msgstr "Отказ"
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,wizard:0"
+msgid "Ok"
+msgstr "Добре"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,end:0"
+msgid "Cancel"
+msgstr "Отказ"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,start:0"
+msgid "Start Upgrade"
+msgstr "Започване на обновяване"
+
+#, fuzzy
+msgctxt "wizard_button:ir.module.module.install_upgrade,start,config:0"
+msgid "Ok"
+msgstr "Добре"
+
+msgctxt "wizard_button:ir.translation.clean,init,end:0"
+msgid "Cancel"
+msgstr "Отказ"
+
+msgctxt "wizard_button:ir.translation.clean,init,start:0"
+msgid "Start"
+msgstr "Начало"
+
+msgctxt "wizard_button:ir.translation.clean,start,end:0"
+msgid "Ok"
+msgstr "Добре"
+
+msgctxt "wizard_button:ir.translation.export,init,end:0"
+msgid "Cancel"
+msgstr "Отказ"
+
+msgctxt "wizard_button:ir.translation.export,init,start:0"
+msgid "Start Export"
+msgstr "Начало на извличане"
+
+msgctxt "wizard_button:ir.translation.export,start,end:0"
+msgid "Close"
+msgstr "Затваряне"
+
+msgctxt "wizard_button:ir.translation.set_report,init,end:0"
+msgid "Cancel"
+msgstr "Отказ"
+
+msgctxt "wizard_button:ir.translation.set_report,init,start:0"
+msgid "Start Update"
+msgstr "Започване на обновление"
+
+msgctxt "wizard_button:ir.translation.set_report,start,end:0"
+msgid "Ok"
+msgstr "Добре"
+
+msgctxt "wizard_button:ir.translation.update,init,end:0"
+msgid "Cancel"
+msgstr "Отказ"
+
+msgctxt "wizard_button:ir.translation.update,init,start:0"
+msgid "Start Update"
+msgstr "Започване на обновление"
+
+#, fuzzy
+msgctxt "wizard_button:ir.ui.view.show,init,end:0"
+msgid "Close"
+msgstr "Затваряне"
diff --git a/trytond/ir/locale/cs_CZ.po b/trytond/ir/locale/cs_CZ.po
new file mode 100644
index 0000000..ccc14b8
--- /dev/null
+++ b/trytond/ir/locale/cs_CZ.po
@@ -0,0 +1,2742 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:access_error:0"
+msgid ""
+"You try to bypass an access rule!\n"
+"(Document type: %s)"
+msgstr ""
+
+msgctxt "error:delete_workflow_record:0"
+msgid "You cannot delete a record with a running workflow."
+msgstr ""
+
+msgctxt "error:delete_xml_record:0"
+msgid "You are not allowed to delete this record."
+msgstr ""
+
+msgctxt "error:digits_validation_record:0"
+msgid "The field \"%s\" on \"%s\" has too many decimal digits."
+msgstr ""
+
+msgctxt "error:domain_validation_record:0"
+msgid "The value of the field \"%s\" on \"%s\" is not valid according to its domain."
+msgstr ""
+
+msgctxt "error:foreign_model_exist:0"
+msgid "Could not delete \"%s\" records because they are used on field \"%s\" of \"%s\"."
+msgstr ""
+
+msgctxt "error:foreign_model_missing:0"
+msgid "The value of field \"%s\" on \"%s\" doesn't exist."
+msgstr ""
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid context!"
+msgstr ""
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid domain or search criteria!"
+msgstr ""
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid views!"
+msgstr ""
+
+msgctxt "error:ir.action.keyword:0"
+msgid "Wrong wizard model!"
+msgstr ""
+
+msgctxt "error:ir.action.report:0"
+msgid "The internal name must be unique by module!"
+msgstr ""
+
+msgctxt "error:ir.attachment:0"
+msgid "The  names of attachments must be unique by resource!"
+msgstr ""
+
+msgctxt "error:ir.cron:0"
+msgid "Scheduled action failed"
+msgstr ""
+
+msgctxt "error:ir.cron:0"
+msgid ""
+"The following action failed to execute properly: \"%s\"\n"
+" Traceback: \n"
+"\n"
+"%s\n"
+msgstr ""
+
+msgctxt "error:ir.lang:0"
+msgid "Invalid Grouping!"
+msgstr ""
+
+msgctxt "error:ir.lang:0"
+msgid "The date format is not valid!"
+msgstr ""
+
+msgctxt "error:ir.lang:0"
+msgid "decimal_point and thousands_sep must be different!"
+msgstr ""
+
+msgctxt "error:ir.model.access:0"
+msgid "Only one record by model and group is allowed!"
+msgstr ""
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not create this kind of document! (%s)"
+msgstr ""
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not delete this document! (%s)"
+msgstr ""
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not read this document! (%s)"
+msgstr ""
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not write in this document! (%s)"
+msgstr ""
+
+msgctxt "error:ir.model.data:0"
+msgid "The triple (fs_id, module, model) must be unique!"
+msgstr ""
+
+msgctxt "error:ir.model.field.access:0"
+msgid "Only one record by field and group is allowed!"
+msgstr ""
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not read the field! (%s.%s)"
+msgstr ""
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not write on the field! (%s.%s)"
+msgstr ""
+
+msgctxt "error:ir.model.field:0"
+msgid "Model Field Name must be a python identifier!"
+msgstr ""
+
+msgctxt "error:ir.model.field:0"
+msgid "The field name in model must be unique!"
+msgstr ""
+
+msgctxt "error:ir.model:0"
+msgid "Module Name must be a python identifier!"
+msgstr ""
+
+msgctxt "error:ir.model:0"
+msgid "The model must be unique!"
+msgstr ""
+
+msgctxt "error:ir.module.module.dependency:0"
+msgid "Dependency must be unique by module!"
+msgstr ""
+
+msgctxt "error:ir.module.module:0"
+msgid "Missing dependencies %s for module \"%s\""
+msgstr ""
+
+msgctxt "error:ir.module.module:0"
+msgid "The modules you are trying to uninstall depends on installed modules:"
+msgstr ""
+
+msgctxt "error:ir.module.module:0"
+msgid "The name of the module must be unique!"
+msgstr ""
+
+msgctxt "error:ir.module.module:0"
+msgid "You can not remove a module that is installed or will be installed"
+msgstr ""
+
+msgctxt "error:ir.rule.group:0"
+msgid "Global and Default are mutually exclusive!"
+msgstr ""
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Invalid prefix/suffix!"
+msgstr ""
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Last Timestamp could not be in future!"
+msgstr ""
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Missing sequence!"
+msgstr ""
+
+msgctxt "error:ir.sequence:0"
+msgid "Invalid prefix/suffix!"
+msgstr ""
+
+msgctxt "error:ir.sequence:0"
+msgid "Last Timestamp could not be in future!"
+msgstr ""
+
+msgctxt "error:ir.sequence:0"
+msgid "Missing sequence!"
+msgstr ""
+
+msgctxt "error:ir.translation:0"
+msgid "Translation must be unique"
+msgstr ""
+
+msgctxt "error:ir.trigger:0"
+msgid "\"On Time\" and others are mutually exclusive!"
+msgstr ""
+
+msgctxt "error:ir.trigger:0"
+msgid "Condition must be a python expression!"
+msgstr ""
+
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not create recursive menu!"
+msgstr ""
+
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not use \" / \" in name field!"
+msgstr ""
+
+msgctxt "error:ir.ui.view.show:0"
+msgid "Only \"form\" view can be shown!"
+msgstr ""
+
+msgctxt "error:ir.ui.view:0"
+msgid "Invalid XML for View!"
+msgstr ""
+
+msgctxt "error:not_found_in_selection:0"
+msgid "Key %r not found in selection field %r"
+msgstr ""
+
+msgctxt "error:read_error:0"
+msgid ""
+"You try to read records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr ""
+
+msgctxt "error:reference_syntax_error:0"
+msgid "Syntax error for reference %r in %s"
+msgstr ""
+
+msgctxt "error:relation_not_found:0"
+msgid "Relation not found: %r in %s"
+msgstr ""
+
+msgctxt "error:required_field:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr ""
+
+msgctxt "error:required_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr ""
+
+msgctxt "error:search_function_missing:0"
+msgid "Missing search function on field \"%s\"."
+msgstr ""
+
+msgctxt "error:size_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is too long."
+msgstr ""
+
+msgctxt "error:too_many_relations_found:0"
+msgid "Too many relations found: %r in %s"
+msgstr ""
+
+msgctxt "error:write_error:0"
+msgid ""
+"You try to write on records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr ""
+
+msgctxt "error:write_xml_record:0"
+msgid "You are not allowed to modify this record."
+msgstr ""
+
+msgctxt "error:xml_id_syntax_error:0"
+msgid "Syntax error for XML id %r in %s"
+msgstr ""
+
+msgctxt "error:xml_record_desc:0"
+msgid "This record is part of the base configuration."
+msgstr ""
+
+msgctxt "field:ir.action,active:0"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:ir.action,groups:0"
+msgid "Groups"
+msgstr ""
+
+msgctxt "field:ir.action,icon:0"
+msgid "Icon"
+msgstr ""
+
+msgctxt "field:ir.action,keywords:0"
+msgid "Keywords"
+msgstr ""
+
+msgctxt "field:ir.action,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.action,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.action,type:0"
+msgid "Type"
+msgstr ""
+
+msgctxt "field:ir.action,usage:0"
+msgid "Usage"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,act_window_views:0"
+msgid "Views"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,action:0"
+msgid "Action"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,auto_refresh:0"
+msgid "Auto-Refresh"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,context:0"
+msgid "Context Value"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,domain:0"
+msgid "Domain Value"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,limit:0"
+msgid "Limit"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,pyson_context:0"
+msgid "PySON Context"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,pyson_domain:0"
+msgid "PySON Domain"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,pyson_search_value:0"
+msgid "PySON Search Criteria"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,res_model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,search_value:0"
+msgid "Search Criteria"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,views:0"
+msgid "Views"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,window_name:0"
+msgid "Window Name"
+msgstr ""
+
+msgctxt "field:ir.action.act_window.view,act_window:0"
+msgid "Action"
+msgstr ""
+
+msgctxt "field:ir.action.act_window.view,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.action.act_window.view,sequence:0"
+msgid "Sequence"
+msgstr ""
+
+msgctxt "field:ir.action.act_window.view,view:0"
+msgid "View"
+msgstr ""
+
+msgctxt "field:ir.action.keyword,action:0"
+msgid "Action"
+msgstr ""
+
+msgctxt "field:ir.action.keyword,keyword:0"
+msgid "Keyword"
+msgstr ""
+
+msgctxt "field:ir.action.keyword,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:ir.action.keyword,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.action.report,action:0"
+msgid "Action"
+msgstr ""
+
+msgctxt "field:ir.action.report,direct_print:0"
+msgid "Direct Print"
+msgstr ""
+
+msgctxt "field:ir.action.report,email:0"
+msgid "Email"
+msgstr ""
+
+msgctxt "field:ir.action.report,extension:0"
+msgid "Extension"
+msgstr ""
+
+msgctxt "field:ir.action.report,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:ir.action.report,module:0"
+msgid "Module"
+msgstr ""
+
+msgctxt "field:ir.action.report,pyson_email:0"
+msgid "PySON Email"
+msgstr ""
+
+msgctxt "field:ir.action.report,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.action.report,report:0"
+msgid "Path"
+msgstr ""
+
+msgctxt "field:ir.action.report,report_content:0"
+msgid "Content"
+msgstr ""
+
+msgctxt "field:ir.action.report,report_content_custom:0"
+msgid "Content"
+msgstr ""
+
+msgctxt "field:ir.action.report,report_name:0"
+msgid "Internal Name"
+msgstr ""
+
+msgctxt "field:ir.action.report,style:0"
+msgid "Style"
+msgstr ""
+
+msgctxt "field:ir.action.report,style_content:0"
+msgid "Style"
+msgstr ""
+
+msgctxt "field:ir.action.report,template_extension:0"
+msgid "Template Extension"
+msgstr ""
+
+msgctxt "field:ir.action.url,action:0"
+msgid "Action"
+msgstr ""
+
+msgctxt "field:ir.action.url,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.action.url,url:0"
+msgid "Action Url"
+msgstr ""
+
+msgctxt "field:ir.action.wizard,action:0"
+msgid "Action"
+msgstr ""
+
+msgctxt "field:ir.action.wizard,email:0"
+msgid "Email"
+msgstr ""
+
+msgctxt "field:ir.action.wizard,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:ir.action.wizard,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.action.wizard,window:0"
+msgid "Window"
+msgstr ""
+
+msgctxt "field:ir.action.wizard,wiz_name:0"
+msgid "Wizard name"
+msgstr ""
+
+msgctxt "field:ir.attachment,collision:0"
+msgid "Collision"
+msgstr ""
+
+msgctxt "field:ir.attachment,data:0"
+msgid "Data"
+msgstr ""
+
+msgctxt "field:ir.attachment,data_size:0"
+msgid "Data size"
+msgstr ""
+
+msgctxt "field:ir.attachment,description:0"
+msgid "Description"
+msgstr ""
+
+msgctxt "field:ir.attachment,digest:0"
+msgid "Digest"
+msgstr ""
+
+msgctxt "field:ir.attachment,last_modification:0"
+msgid "Last Modification"
+msgstr ""
+
+msgctxt "field:ir.attachment,last_user:0"
+msgid "Last User"
+msgstr ""
+
+msgctxt "field:ir.attachment,link:0"
+msgid "Link"
+msgstr ""
+
+msgctxt "field:ir.attachment,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.attachment,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.attachment,resource:0"
+msgid "Resource"
+msgstr ""
+
+msgctxt "field:ir.attachment,summary:0"
+msgid "Summary"
+msgstr ""
+
+msgctxt "field:ir.attachment,type:0"
+msgid "Type"
+msgstr ""
+
+msgctxt "field:ir.cache,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.cache,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.cache,timestamp:0"
+msgid "Timestamp"
+msgstr ""
+
+msgctxt "field:ir.cron,active:0"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:ir.cron,args:0"
+msgid "Arguments"
+msgstr ""
+
+msgctxt "field:ir.cron,function:0"
+msgid "Function"
+msgstr ""
+
+msgctxt "field:ir.cron,interval_number:0"
+msgid "Interval Number"
+msgstr ""
+
+msgctxt "field:ir.cron,interval_type:0"
+msgid "Interval Unit"
+msgstr ""
+
+msgctxt "field:ir.cron,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:ir.cron,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.cron,next_call:0"
+msgid "Next Call"
+msgstr ""
+
+msgctxt "field:ir.cron,number_calls:0"
+msgid "Number of Calls"
+msgstr ""
+
+msgctxt "field:ir.cron,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.cron,repeat_missed:0"
+msgid "Repeat Missed"
+msgstr ""
+
+msgctxt "field:ir.cron,request_user:0"
+msgid "Request User"
+msgstr ""
+
+msgctxt "field:ir.cron,user:0"
+msgid "Execution User"
+msgstr ""
+
+msgctxt "field:ir.export,export_fields:0"
+msgid "Fields"
+msgstr ""
+
+msgctxt "field:ir.export,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.export,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.export,resource:0"
+msgid "Resource"
+msgstr ""
+
+msgctxt "field:ir.export.line,export:0"
+msgid "Export"
+msgstr ""
+
+msgctxt "field:ir.export.line,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.export.line,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.lang,active:0"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:ir.lang,code:0"
+msgid "Code"
+msgstr ""
+
+msgctxt "field:ir.lang,date:0"
+msgid "Date"
+msgstr ""
+
+msgctxt "field:ir.lang,decimal_point:0"
+msgid "Decimal Separator"
+msgstr ""
+
+msgctxt "field:ir.lang,direction:0"
+msgid "Direction"
+msgstr ""
+
+msgctxt "field:ir.lang,grouping:0"
+msgid "Grouping"
+msgstr ""
+
+msgctxt "field:ir.lang,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.lang,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.lang,thousands_sep:0"
+msgid "Thousands Separator"
+msgstr ""
+
+msgctxt "field:ir.lang,translatable:0"
+msgid "Translatable"
+msgstr ""
+
+msgctxt "field:ir.model,fields:0"
+msgid "Fields"
+msgstr ""
+
+msgctxt "field:ir.model,info:0"
+msgid "Information"
+msgstr ""
+
+msgctxt "field:ir.model,model:0"
+msgid "Model Name"
+msgstr ""
+
+msgctxt "field:ir.model,module:0"
+msgid "Module"
+msgstr ""
+
+msgctxt "field:ir.model,name:0"
+msgid "Model Description"
+msgstr ""
+
+msgctxt "field:ir.model,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.model.access,description:0"
+msgid "Description"
+msgstr ""
+
+msgctxt "field:ir.model.access,group:0"
+msgid "Group"
+msgstr ""
+
+msgctxt "field:ir.model.access,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:ir.model.access,perm_create:0"
+msgid "Create Access"
+msgstr ""
+
+msgctxt "field:ir.model.access,perm_delete:0"
+msgid "Delete Access"
+msgstr ""
+
+msgctxt "field:ir.model.access,perm_read:0"
+msgid "Read Access"
+msgstr ""
+
+msgctxt "field:ir.model.access,perm_write:0"
+msgid "Write Access"
+msgstr ""
+
+msgctxt "field:ir.model.access,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.model.data,date_init:0"
+msgid "Init Date"
+msgstr ""
+
+msgctxt "field:ir.model.data,date_update:0"
+msgid "Update Date"
+msgstr ""
+
+msgctxt "field:ir.model.data,db_id:0"
+msgid "Resource ID"
+msgstr ""
+
+msgctxt "field:ir.model.data,fs_id:0"
+msgid "Identifier on File System"
+msgstr ""
+
+msgctxt "field:ir.model.data,inherit:0"
+msgid "Inherit"
+msgstr ""
+
+msgctxt "field:ir.model.data,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:ir.model.data,module:0"
+msgid "Module"
+msgstr ""
+
+msgctxt "field:ir.model.data,noupdate:0"
+msgid "No Update"
+msgstr ""
+
+msgctxt "field:ir.model.data,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.model.data,values:0"
+msgid "Values"
+msgstr ""
+
+msgctxt "field:ir.model.field,field_description:0"
+msgid "Field Description"
+msgstr ""
+
+msgctxt "field:ir.model.field,groups:0"
+msgid "Groups"
+msgstr ""
+
+msgctxt "field:ir.model.field,help:0"
+msgid "Help"
+msgstr ""
+
+msgctxt "field:ir.model.field,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:ir.model.field,module:0"
+msgid "Module"
+msgstr ""
+
+msgctxt "field:ir.model.field,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.model.field,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.model.field,relation:0"
+msgid "Model Relation"
+msgstr ""
+
+msgctxt "field:ir.model.field,ttype:0"
+msgid "Field Type"
+msgstr ""
+
+msgctxt "field:ir.model.field.access,description:0"
+msgid "Description"
+msgstr ""
+
+msgctxt "field:ir.model.field.access,field:0"
+msgid "Field"
+msgstr ""
+
+msgctxt "field:ir.model.field.access,group:0"
+msgid "Group"
+msgstr ""
+
+msgctxt "field:ir.model.field.access,perm_read:0"
+msgid "Read Access"
+msgstr ""
+
+msgctxt "field:ir.model.field.access,perm_write:0"
+msgid "Write Access"
+msgstr ""
+
+msgctxt "field:ir.model.field.access,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.model.print_model_graph.init,filter:0"
+msgid "Filter"
+msgstr ""
+
+msgctxt "field:ir.model.print_model_graph.init,level:0"
+msgid "Level"
+msgstr ""
+
+msgctxt "field:ir.module.module,author:0"
+msgid "Author"
+msgstr ""
+
+msgctxt "field:ir.module.module,dependencies:0"
+msgid "Dependencies"
+msgstr ""
+
+msgctxt "field:ir.module.module,description:0"
+msgid "Description"
+msgstr ""
+
+msgctxt "field:ir.module.module,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.module.module,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.module.module,shortdesc:0"
+msgid "Short description"
+msgstr ""
+
+msgctxt "field:ir.module.module,state:0"
+msgid "State"
+msgstr ""
+
+msgctxt "field:ir.module.module,version:0"
+msgid "Version"
+msgstr ""
+
+msgctxt "field:ir.module.module,website:0"
+msgid "Website"
+msgstr ""
+
+msgctxt "field:ir.module.module.config_wizard.item,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.module.module.config_wizard.item,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.module.module.config_wizard.item,sequence:0"
+msgid "Sequence"
+msgstr ""
+
+msgctxt "field:ir.module.module.config_wizard.item,state:0"
+msgid "State"
+msgstr ""
+
+msgctxt "field:ir.module.module.dependency,module:0"
+msgid "Module"
+msgstr ""
+
+msgctxt "field:ir.module.module.dependency,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.module.module.dependency,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.module.module.dependency,state:0"
+msgid "State"
+msgstr ""
+
+msgctxt "field:ir.module.module.install_upgrade.init,module_info:0"
+msgid "Modules to update"
+msgstr ""
+
+msgctxt "field:ir.property,field:0"
+msgid "Field"
+msgstr ""
+
+msgctxt "field:ir.property,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.property,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.property,res:0"
+msgid "Resource"
+msgstr ""
+
+msgctxt "field:ir.property,value:0"
+msgid "Value"
+msgstr ""
+
+msgctxt "field:ir.rule,field:0"
+msgid "Field"
+msgstr ""
+
+msgctxt "field:ir.rule,operand:0"
+msgid "Operand"
+msgstr ""
+
+msgctxt "field:ir.rule,operator:0"
+msgid "Operator"
+msgstr ""
+
+msgctxt "field:ir.rule,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.rule,rule_group:0"
+msgid "Group"
+msgstr ""
+
+msgctxt "field:ir.rule.group,default_p:0"
+msgid "Default"
+msgstr ""
+
+msgctxt "field:ir.rule.group,global_p:0"
+msgid "Global"
+msgstr ""
+
+msgctxt "field:ir.rule.group,groups:0"
+msgid "Groups"
+msgstr ""
+
+msgctxt "field:ir.rule.group,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:ir.rule.group,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.rule.group,perm_create:0"
+msgid "Create Access"
+msgstr ""
+
+msgctxt "field:ir.rule.group,perm_delete:0"
+msgid "Delete Access"
+msgstr ""
+
+msgctxt "field:ir.rule.group,perm_read:0"
+msgid "Read Access"
+msgstr ""
+
+msgctxt "field:ir.rule.group,perm_write:0"
+msgid "Write Access"
+msgstr ""
+
+msgctxt "field:ir.rule.group,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.rule.group,rules:0"
+msgid "Tests"
+msgstr ""
+
+msgctxt "field:ir.rule.group,users:0"
+msgid "Users"
+msgstr ""
+
+msgctxt "field:ir.sequence,active:0"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:ir.sequence,code:0"
+msgid "Sequence Code"
+msgstr ""
+
+msgctxt "field:ir.sequence,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr ""
+
+msgctxt "field:ir.sequence,name:0"
+msgid "Sequence Name"
+msgstr ""
+
+msgctxt "field:ir.sequence,number_increment:0"
+msgid "Increment Number"
+msgstr ""
+
+msgctxt "field:ir.sequence,number_next:0"
+msgid "Next Number"
+msgstr ""
+
+msgctxt "field:ir.sequence,number_next_internal:0"
+msgid "Next Number"
+msgstr ""
+
+msgctxt "field:ir.sequence,padding:0"
+msgid "Number padding"
+msgstr ""
+
+msgctxt "field:ir.sequence,prefix:0"
+msgid "Prefix"
+msgstr ""
+
+msgctxt "field:ir.sequence,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.sequence,suffix:0"
+msgid "Suffix"
+msgstr ""
+
+msgctxt "field:ir.sequence,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr ""
+
+msgctxt "field:ir.sequence,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr ""
+
+msgctxt "field:ir.sequence,type:0"
+msgid "Type"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,active:0"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,code:0"
+msgid "Sequence Code"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,name:0"
+msgid "Sequence Name"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,number_increment:0"
+msgid "Increment Number"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,number_next:0"
+msgid "Next Number"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,number_next_internal:0"
+msgid "Next Number"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,padding:0"
+msgid "Number padding"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,prefix:0"
+msgid "Prefix"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,suffix:0"
+msgid "Suffix"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,type:0"
+msgid "Type"
+msgstr ""
+
+msgctxt "field:ir.sequence.type,code:0"
+msgid "Sequence Code"
+msgstr ""
+
+msgctxt "field:ir.sequence.type,name:0"
+msgid "Sequence Name"
+msgstr ""
+
+msgctxt "field:ir.sequence.type,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.translation,fuzzy:0"
+msgid "Fuzzy"
+msgstr ""
+
+msgctxt "field:ir.translation,lang:0"
+msgid "Language"
+msgstr ""
+
+msgctxt "field:ir.translation,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:ir.translation,module:0"
+msgid "Module"
+msgstr ""
+
+msgctxt "field:ir.translation,name:0"
+msgid "Field Name"
+msgstr ""
+
+msgctxt "field:ir.translation,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.translation,res_id:0"
+msgid "Resource ID"
+msgstr ""
+
+msgctxt "field:ir.translation,src:0"
+msgid "Source"
+msgstr ""
+
+msgctxt "field:ir.translation,src_md5:0"
+msgid "Source MD5"
+msgstr ""
+
+msgctxt "field:ir.translation,type:0"
+msgid "Type"
+msgstr ""
+
+msgctxt "field:ir.translation,value:0"
+msgid "Translation Value"
+msgstr ""
+
+msgctxt "field:ir.translation.export.init,lang:0"
+msgid "Language"
+msgstr ""
+
+msgctxt "field:ir.translation.export.init,module:0"
+msgid "Module"
+msgstr ""
+
+msgctxt "field:ir.translation.export.start,file:0"
+msgid "File"
+msgstr ""
+
+msgctxt "field:ir.translation.update.init,lang:0"
+msgid "Language"
+msgstr ""
+
+msgctxt "field:ir.trigger,action_function:0"
+msgid "Action Function"
+msgstr ""
+
+msgctxt "field:ir.trigger,action_model:0"
+msgid "Action Model"
+msgstr ""
+
+msgctxt "field:ir.trigger,active:0"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:ir.trigger,condition:0"
+msgid "Condition"
+msgstr ""
+
+msgctxt "field:ir.trigger,limit_number:0"
+msgid "Limit Number"
+msgstr ""
+
+msgctxt "field:ir.trigger,minimum_delay:0"
+msgid "Minimum Delay"
+msgstr ""
+
+msgctxt "field:ir.trigger,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:ir.trigger,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.trigger,on_create:0"
+msgid "On Create"
+msgstr ""
+
+msgctxt "field:ir.trigger,on_delete:0"
+msgid "On Delete"
+msgstr ""
+
+msgctxt "field:ir.trigger,on_time:0"
+msgid "On Time"
+msgstr ""
+
+msgctxt "field:ir.trigger,on_write:0"
+msgid "On Write"
+msgstr ""
+
+msgctxt "field:ir.trigger,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.trigger.log,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.trigger.log,record_id:0"
+msgid "Record ID"
+msgstr ""
+
+msgctxt "field:ir.trigger.log,trigger:0"
+msgid "Trigger"
+msgstr ""
+
+msgctxt "field:ir.ui.icon,icon:0"
+msgid "Icon"
+msgstr ""
+
+msgctxt "field:ir.ui.icon,module:0"
+msgid "Module"
+msgstr ""
+
+msgctxt "field:ir.ui.icon,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.ui.icon,path:0"
+msgid "SVG Path"
+msgstr ""
+
+msgctxt "field:ir.ui.icon,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.ui.icon,sequence:0"
+msgid "Sequence"
+msgstr ""
+
+msgctxt "field:ir.ui.menu,action:0"
+msgid "Action"
+msgstr ""
+
+msgctxt "field:ir.ui.menu,active:0"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:ir.ui.menu,childs:0"
+msgid "Children"
+msgstr ""
+
+msgctxt "field:ir.ui.menu,complete_name:0"
+msgid "Complete Name"
+msgstr ""
+
+msgctxt "field:ir.ui.menu,groups:0"
+msgid "Groups"
+msgstr ""
+
+msgctxt "field:ir.ui.menu,icon:0"
+msgid "Icon"
+msgstr ""
+
+msgctxt "field:ir.ui.menu,name:0"
+msgid "Menu"
+msgstr ""
+
+msgctxt "field:ir.ui.menu,parent:0"
+msgid "Parent Menu"
+msgstr ""
+
+msgctxt "field:ir.ui.menu,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.ui.menu,sequence:0"
+msgid "Sequence"
+msgstr ""
+
+msgctxt "field:ir.ui.view,arch:0"
+msgid "View Architecture"
+msgstr ""
+
+msgctxt "field:ir.ui.view,domain:0"
+msgid "Domain"
+msgstr ""
+
+msgctxt "field:ir.ui.view,field_childs:0"
+msgid "Children Field"
+msgstr ""
+
+msgctxt "field:ir.ui.view,inherit:0"
+msgid "Inherited View"
+msgstr ""
+
+msgctxt "field:ir.ui.view,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:ir.ui.view,module:0"
+msgid "Module"
+msgstr ""
+
+msgctxt "field:ir.ui.view,priority:0"
+msgid "Priority"
+msgstr ""
+
+msgctxt "field:ir.ui.view,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.ui.view,type:0"
+msgid "View Type"
+msgstr ""
+
+msgctxt "field:ir.ui.view_sc,name:0"
+msgid "Shortcut Name"
+msgstr ""
+
+msgctxt "field:ir.ui.view_sc,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.ui.view_sc,res_id:0"
+msgid "Resource Ref."
+msgstr ""
+
+msgctxt "field:ir.ui.view_sc,resource:0"
+msgid "Resource Name"
+msgstr ""
+
+msgctxt "field:ir.ui.view_sc,sequence:0"
+msgid "Sequence"
+msgstr ""
+
+msgctxt "field:ir.ui.view_sc,user_id:0"
+msgid "User Ref."
+msgstr ""
+
+msgctxt "field:ir.ui.view_tree_expanded_state,child_name:0"
+msgid "Child Name"
+msgstr ""
+
+msgctxt "field:ir.ui.view_tree_expanded_state,domain:0"
+msgid "Domain"
+msgstr ""
+
+msgctxt "field:ir.ui.view_tree_expanded_state,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:ir.ui.view_tree_expanded_state,nodes:0"
+msgid "Expanded Nodes"
+msgstr ""
+
+msgctxt "field:ir.ui.view_tree_expanded_state,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.ui.view_tree_expanded_state,user:0"
+msgid "User"
+msgstr ""
+
+msgctxt "field:ir.ui.view_tree_width,field:0"
+msgid "Field"
+msgstr ""
+
+msgctxt "field:ir.ui.view_tree_width,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:ir.ui.view_tree_width,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.ui.view_tree_width,user:0"
+msgid "User"
+msgstr ""
+
+msgctxt "field:ir.ui.view_tree_width,width:0"
+msgid "Width"
+msgstr ""
+
+msgctxt "help:ir.action.act_window,auto_refresh:0"
+msgid "Add an auto-refresh on the view"
+msgstr ""
+
+msgctxt "help:ir.action.act_window,limit:0"
+msgid "Default limit for the list view"
+msgstr ""
+
+msgctxt "help:ir.action.act_window,search_value:0"
+msgid "Default search criteria for the list view"
+msgstr ""
+
+msgctxt "help:ir.action.act_window,window_name:0"
+msgid "Use the action name as window name"
+msgstr ""
+
+msgctxt "help:ir.action.report,extension:0"
+msgid ""
+"Leave empty for the same as template, see unoconv documentation for "
+"compatible format"
+msgstr ""
+
+msgctxt "help:ir.action.report,style:0"
+msgid "Define the style to apply on the report."
+msgstr ""
+
+msgctxt "help:ir.action.wizard,window:0"
+msgid "Run wizard in a new window"
+msgstr ""
+
+msgctxt "help:ir.cron,number_calls:0"
+msgid ""
+"Number of times the function is called, a negative number indicates that the"
+" function will always be called"
+msgstr ""
+
+msgctxt "help:ir.cron,request_user:0"
+msgid "The user who will receive requests in case of failure"
+msgstr ""
+
+msgctxt "help:ir.cron,user:0"
+msgid "The user used to execute this action"
+msgstr ""
+
+msgctxt "help:ir.lang,code:0"
+msgid "RFC 4646 tag: http://tools.ietf.org/html/rfc4646"
+msgstr ""
+
+msgctxt "help:ir.model,module:0"
+msgid "Module in which this model is defined"
+msgstr ""
+
+msgctxt "help:ir.model.data,db_id:0"
+msgid "The id of the record in the database."
+msgstr ""
+
+msgctxt "help:ir.model.data,fs_id:0"
+msgid "The id of the record as known on the file system."
+msgstr ""
+
+msgctxt "help:ir.model.field,module:0"
+msgid "Module in which this field is defined"
+msgstr ""
+
+msgctxt "help:ir.model.print_model_graph.init,filter:0"
+msgid ""
+"Entering a Python Regular Expression will exclude matching models from the "
+"graph."
+msgstr ""
+
+msgctxt "help:ir.rule.group,default_p:0"
+msgid "Add this rule to all users by default"
+msgstr ""
+
+msgctxt "help:ir.rule.group,global_p:0"
+msgid ""
+"Make the rule global \n"
+"so every users must follow this rule"
+msgstr ""
+
+msgctxt "help:ir.rule.group,rules:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr ""
+
+msgctxt "help:ir.trigger,condition:0"
+msgid ""
+"A Python statement evaluated with record represented by \"self\"\n"
+"It triggers the action if true."
+msgstr ""
+
+msgctxt "help:ir.trigger,limit_number:0"
+msgid ""
+"Limit the number of call to \"Action Function\" by records.\n"
+"0 for no limit."
+msgstr ""
+
+msgctxt "help:ir.trigger,minimum_delay:0"
+msgid ""
+"Set a minimum delay in minutes between call to \"Action Function\" for the same record.\n"
+"0 for no delay."
+msgstr ""
+
+msgctxt "model:ir.action,name:0"
+msgid "Action"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_action_act_window_form"
+msgid "Window Actions"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_action_form"
+msgid "Actions"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_action_report_form"
+msgid "Reports"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_action_url_form"
+msgid "URLs"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_action_wizard_form"
+msgid "Wizards"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_attachment_form"
+msgid "Attachments"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_cron_form"
+msgid "Scheduled Actions"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_export_form"
+msgid "Exports"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_icon_form"
+msgid "Icons"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_lang_form"
+msgid "Languages"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_menu_list"
+msgid "Menu"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_menu_tree"
+msgid "Menu"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_model_access_form"
+msgid "Models Access"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_model_field_access_form"
+msgid "Fields Access"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_model_fields_form"
+msgid "Fields"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_model_form"
+msgid "Models"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_module_config_wizard"
+msgid "Module Configuration"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_module_form"
+msgid "Modules"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_property_form"
+msgid "Properties"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_property_form_default"
+msgid "Default Properties"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_rule_group_form"
+msgid "Record Rules"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_sequence_form"
+msgid "Sequences"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_sequence_type_form"
+msgid "Sequence Types"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_translation_clean"
+msgid "Clean Translations"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_translation_export"
+msgid "Export Translations"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_translation_form"
+msgid "Translations"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_translation_set_report"
+msgid "Set Report Translations"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_translation_update"
+msgid "Synchronize Translations"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_trigger_form"
+msgid "Triggers"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_form"
+msgid "Views"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_sc_add"
+msgid "Add Shortcut"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_sc_form"
+msgid "View Shortcuts"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_sc_open"
+msgid "Open Shortcut"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_show"
+msgid "Show View"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_tree_width_form"
+msgid "View Tree Width"
+msgstr ""
+
+msgctxt "model:ir.action,name:print_model_graph"
+msgid "Graph"
+msgstr ""
+
+msgctxt "model:ir.action,name:report_model_graph"
+msgid "Graph"
+msgstr ""
+
+msgctxt "model:ir.action.act_window,name:0"
+msgid "Action act window"
+msgstr ""
+
+msgctxt "model:ir.action.act_window.view,name:0"
+msgid "Action act window view"
+msgstr ""
+
+msgctxt "model:ir.action.keyword,name:0"
+msgid "Action keyword"
+msgstr ""
+
+msgctxt "model:ir.action.report,name:0"
+msgid "Action report"
+msgstr ""
+
+msgctxt "model:ir.action.url,name:0"
+msgid "Action URL"
+msgstr ""
+
+msgctxt "model:ir.action.wizard,name:0"
+msgid "Action wizard"
+msgstr ""
+
+msgctxt "model:ir.attachment,name:0"
+msgid "Attachment"
+msgstr ""
+
+msgctxt "model:ir.cache,name:0"
+msgid "Cache"
+msgstr ""
+
+msgctxt "model:ir.cron,name:0"
+msgid "Cron"
+msgstr ""
+
+msgctxt "model:ir.date,name:0"
+msgid "Date"
+msgstr ""
+
+msgctxt "model:ir.export,name:0"
+msgid "Export"
+msgstr ""
+
+msgctxt "model:ir.export.line,name:0"
+msgid "Export line"
+msgstr ""
+
+msgctxt "model:ir.lang,name:0"
+msgid "Language"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_bg"
+msgid "Bulgarian"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_cs"
+msgid "Czech"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_de"
+msgid "German"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_en"
+msgid "English"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_es"
+msgid "Spanish (Spain)"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_es_CO"
+msgid "Spanish (Colombia)"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_fr"
+msgid "French"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_nl"
+msgid "Dutch"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_ru"
+msgid "Russian"
+msgstr ""
+
+msgctxt "model:ir.model,name:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "model:ir.model.access,name:0"
+msgid "Model access"
+msgstr ""
+
+msgctxt "model:ir.model.data,name:0"
+msgid "Model data"
+msgstr ""
+
+msgctxt "model:ir.model.field,name:0"
+msgid "Model field"
+msgstr ""
+
+msgctxt "model:ir.model.field.access,name:0"
+msgid "Model Field Access"
+msgstr ""
+
+msgctxt "model:ir.model.print_model_graph.init,name:0"
+msgid "Print Model Graph Init"
+msgstr ""
+
+msgctxt "model:ir.module.module,name:0"
+msgid "Module"
+msgstr ""
+
+msgctxt "model:ir.module.module.config_wizard.first,name:0"
+msgid "Module Config Wizard First"
+msgstr ""
+
+msgctxt "model:ir.module.module.config_wizard.item,name:0"
+msgid "Config wizard to run after installing module"
+msgstr ""
+
+msgctxt "model:ir.module.module.dependency,name:0"
+msgid "Module dependency"
+msgstr ""
+
+msgctxt "model:ir.module.module.install_upgrade.init,name:0"
+msgid "Module Install Upgrade Init"
+msgstr ""
+
+msgctxt "model:ir.module.module.install_upgrade.start,name:0"
+msgid "Module Install Upgrade Start"
+msgstr ""
+
+msgctxt "model:ir.property,name:0"
+msgid "Property"
+msgstr ""
+
+msgctxt "model:ir.rule,name:0"
+msgid "Rule"
+msgstr ""
+
+msgctxt "model:ir.rule.group,name:0"
+msgid "Rule group"
+msgstr ""
+
+msgctxt "model:ir.sequence,name:0"
+msgid "Sequence"
+msgstr ""
+
+msgctxt "model:ir.sequence.strict,name:0"
+msgid "Sequence Strict"
+msgstr ""
+
+msgctxt "model:ir.sequence.type,name:0"
+msgid "Sequence type"
+msgstr ""
+
+msgctxt "model:ir.translation,name:0"
+msgid "Translation"
+msgstr ""
+
+msgctxt "model:ir.translation.clean.init,name:0"
+msgid "Clean translation init"
+msgstr ""
+
+msgctxt "model:ir.translation.clean.start,name:0"
+msgid "Clean translation start"
+msgstr ""
+
+msgctxt "model:ir.translation.export.init,name:0"
+msgid "Export translation - language and module"
+msgstr ""
+
+msgctxt "model:ir.translation.export.start,name:0"
+msgid "Export translation - file"
+msgstr ""
+
+msgctxt "model:ir.translation.set_report.init,name:0"
+msgid "Update Report Translation"
+msgstr ""
+
+msgctxt "model:ir.translation.set_report.start,name:0"
+msgid "Update Report Translation"
+msgstr ""
+
+msgctxt "model:ir.translation.update.init,name:0"
+msgid "Update translation - language"
+msgstr ""
+
+msgctxt "model:ir.trigger,name:0"
+msgid "Trigger"
+msgstr ""
+
+msgctxt "model:ir.trigger.log,name:0"
+msgid "Trigger Log"
+msgstr ""
+
+msgctxt "model:ir.ui.icon,name:0"
+msgid "Icon"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:0"
+msgid "UI menu"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_act_action"
+msgid "Actions"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_action"
+msgid "Actions"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_action_act_window"
+msgid "Window Actions"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_action_report_form"
+msgid "Reports"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_action_url"
+msgid "URLs"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_action_wizard"
+msgid "Wizards"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_administration"
+msgid "Administration"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_attachment_form"
+msgid "Attachments"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_cron_form"
+msgid "Scheduled Actions"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_export_form"
+msgid "Exports"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_icon_form"
+msgid "Icons"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_ir_sequence_type"
+msgid "Sequence Types"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_lang_form"
+msgid "Languages"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_localization"
+msgid "Localization"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_menu_list"
+msgid "Menu"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_model_access_form"
+msgid "Models Access"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_model_field_access_form"
+msgid "Fields Access"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_model_form"
+msgid "Models"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_models"
+msgid "Models"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_module_form"
+msgid "Modules"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_modules"
+msgid "Modules"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_property_form"
+msgid "Properties"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_property_form_default"
+msgid "Default Properties"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_rule_group_form"
+msgid "Record Rules"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_scheduler"
+msgid "Scheduler"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_form"
+msgid "Sequences"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_sequences"
+msgid "Sequences"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_translation_clean"
+msgid "Clean Translations"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_translation_export"
+msgid "Export Translations"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_translation_form"
+msgid "Translations"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_translation_set_report"
+msgid "Set Report Translations"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_translation_update"
+msgid "Synchronize Translations"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_trigger_form"
+msgid "Triggers"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_ui"
+msgid "User Interface"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_view"
+msgid "Views"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_view_sc"
+msgid "View Shortcuts"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_width"
+msgid "View Tree Width"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:model_model_fields_form"
+msgid "Fields"
+msgstr ""
+
+msgctxt "model:ir.ui.view,name:0"
+msgid "View"
+msgstr ""
+
+msgctxt "model:ir.ui.view.show.init,name:0"
+msgid "ir.ui.view.show.init"
+msgstr ""
+
+msgctxt "model:ir.ui.view_sc,name:0"
+msgid "View shortcut"
+msgstr ""
+
+msgctxt "model:ir.ui.view_tree_expanded_state,name:0"
+msgid "ir.ui.view_tree_expanded_state"
+msgstr ""
+
+msgctxt "model:ir.ui.view_tree_width,name:0"
+msgid "View Tree Width"
+msgstr ""
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action form"
+msgstr ""
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action tree"
+msgstr ""
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Form relate"
+msgstr ""
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open Graph"
+msgstr ""
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open tree"
+msgstr ""
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Print form"
+msgstr ""
+
+msgctxt "selection:ir.attachment,type:0"
+msgid "Data"
+msgstr ""
+
+msgctxt "selection:ir.attachment,type:0"
+msgid "Link"
+msgstr ""
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Days"
+msgstr ""
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Hours"
+msgstr ""
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Minutes"
+msgstr ""
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Months"
+msgstr ""
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Weeks"
+msgstr ""
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Left-to-right"
+msgstr ""
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Right-to-left"
+msgstr ""
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Installed"
+msgstr ""
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Not Installed"
+msgstr ""
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be installed"
+msgstr ""
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be removed"
+msgstr ""
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be upgraded"
+msgstr ""
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Done"
+msgstr ""
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Open"
+msgstr ""
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Installed"
+msgstr ""
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Not Installed"
+msgstr ""
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be installed"
+msgstr ""
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be removed"
+msgstr ""
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be upgraded"
+msgstr ""
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Unknown"
+msgstr ""
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Decimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Incremental"
+msgstr ""
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Decimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Incremental"
+msgstr ""
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Error"
+msgstr ""
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Field"
+msgstr ""
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Help"
+msgstr ""
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "selection:ir.translation,type:0"
+msgid "ODT"
+msgstr ""
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Selection"
+msgstr ""
+
+msgctxt "selection:ir.translation,type:0"
+msgid "View"
+msgstr ""
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Wizard Button"
+msgstr ""
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.act_window"
+msgstr ""
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.report"
+msgstr ""
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.url"
+msgstr ""
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.wizard"
+msgstr ""
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid ""
+msgstr ""
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Board"
+msgstr ""
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Form"
+msgstr ""
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Graph"
+msgstr ""
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Tree"
+msgstr ""
+
+msgctxt "view:ir.action.act_window:0"
+msgid "General"
+msgstr ""
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keyword"
+msgstr ""
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keywords"
+msgstr ""
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open Window"
+msgstr ""
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open a Window"
+msgstr ""
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Views"
+msgstr ""
+
+msgctxt "view:ir.action.report:0"
+msgid "General"
+msgstr ""
+
+msgctxt "view:ir.action.report:0"
+msgid "Keyword"
+msgstr ""
+
+msgctxt "view:ir.action.report:0"
+msgid "Keywords"
+msgstr ""
+
+msgctxt "view:ir.action.report:0"
+msgid "Report"
+msgstr ""
+
+msgctxt "view:ir.action.report:0"
+msgid "Report xml"
+msgstr ""
+
+msgctxt "view:ir.action.url:0"
+msgid "General"
+msgstr ""
+
+msgctxt "view:ir.action.url:0"
+msgid "Keyword"
+msgstr ""
+
+msgctxt "view:ir.action.url:0"
+msgid "Keywords"
+msgstr ""
+
+msgctxt "view:ir.action.url:0"
+msgid "URL"
+msgstr ""
+
+msgctxt "view:ir.action.wizard:0"
+msgid "General"
+msgstr ""
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keyword"
+msgstr ""
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keywords"
+msgstr ""
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Wizard"
+msgstr ""
+
+msgctxt "view:ir.action:0"
+msgid "Action"
+msgstr ""
+
+msgctxt "view:ir.action:0"
+msgid "General"
+msgstr ""
+
+msgctxt "view:ir.action:0"
+msgid "Keyword"
+msgstr ""
+
+msgctxt "view:ir.action:0"
+msgid "Keywords"
+msgstr ""
+
+msgctxt "view:ir.attachment:0"
+msgid "Attachments"
+msgstr ""
+
+msgctxt "view:ir.cron:0"
+msgid "Action to trigger"
+msgstr ""
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Action"
+msgstr ""
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Actions"
+msgstr ""
+
+msgctxt "view:ir.export:0"
+msgid "Exports"
+msgstr ""
+
+msgctxt "view:ir.lang:0"
+msgid "Date Formatting"
+msgstr ""
+
+msgctxt "view:ir.lang:0"
+msgid "Language"
+msgstr ""
+
+msgctxt "view:ir.lang:0"
+msgid "Languages"
+msgstr ""
+
+msgctxt "view:ir.lang:0"
+msgid "Numbers Formatting"
+msgstr ""
+
+msgctxt "view:ir.model.access:0"
+msgid "Access controls"
+msgstr ""
+
+msgctxt "view:ir.model.field.access:0"
+msgid "Field Access"
+msgstr ""
+
+msgctxt "view:ir.model.field:0"
+msgid "Fields"
+msgstr ""
+
+msgctxt "view:ir.model.print_model_graph.init:0"
+msgid "Print Model Graph"
+msgstr ""
+
+msgctxt "view:ir.model:0"
+msgid "Fields Description"
+msgstr ""
+
+msgctxt "view:ir.model:0"
+msgid "Model Description"
+msgstr ""
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "Welcome to the module configuration wizard!"
+msgstr ""
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid ""
+"You will be able to configure your installation depending on the modules you"
+" have installed."
+msgstr ""
+
+msgctxt "view:ir.module.module.config_wizard.item:0"
+msgid "Config Wizard Items"
+msgstr ""
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Note that this operation my take a few minutes."
+msgstr ""
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "System Upgrade"
+msgstr ""
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Your system will be upgraded."
+msgstr ""
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "System upgrade done"
+msgstr ""
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "The modules have been upgraded / installed !"
+msgstr ""
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr ""
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr ""
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr ""
+
+msgctxt "view:ir.module.module:0"
+msgid "Dependencies"
+msgstr ""
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr ""
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr ""
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr ""
+
+msgctxt "view:ir.module.module:0"
+msgid "Module"
+msgstr ""
+
+msgctxt "view:ir.module.module:0"
+msgid "Modules"
+msgstr ""
+
+msgctxt "view:ir.property:0"
+msgid "Properties"
+msgstr ""
+
+msgctxt "view:ir.property:0"
+msgid "Property"
+msgstr ""
+
+msgctxt "view:ir.rule.group:0"
+msgid ""
+"If there is no test defined, the rule is always satisfied if not global"
+msgstr ""
+
+msgctxt "view:ir.rule.group:0"
+msgid "Record rules"
+msgstr ""
+
+msgctxt "view:ir.rule.group:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr ""
+
+msgctxt "view:ir.rule:0"
+msgid "Test"
+msgstr ""
+
+msgctxt "view:ir.sequence.type:0"
+msgid "Sequence Type"
+msgstr ""
+
+msgctxt "view:ir.sequence:0"
+msgid "${day}"
+msgstr ""
+
+msgctxt "view:ir.sequence:0"
+msgid "${month}"
+msgstr ""
+
+msgctxt "view:ir.sequence:0"
+msgid "${year}"
+msgstr ""
+
+msgctxt "view:ir.sequence:0"
+msgid "Day:"
+msgstr ""
+
+msgctxt "view:ir.sequence:0"
+msgid "Incremental"
+msgstr ""
+
+msgctxt "view:ir.sequence:0"
+msgid "Legend (Placeholders for prefix, suffix)"
+msgstr ""
+
+msgctxt "view:ir.sequence:0"
+msgid "Month:"
+msgstr ""
+
+msgctxt "view:ir.sequence:0"
+msgid "Sequences"
+msgstr ""
+
+msgctxt "view:ir.sequence:0"
+msgid "Timestamp"
+msgstr ""
+
+msgctxt "view:ir.sequence:0"
+msgid "Year:"
+msgstr ""
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations"
+msgstr ""
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations?"
+msgstr ""
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations"
+msgstr ""
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations Succeed!"
+msgstr ""
+
+msgctxt "view:ir.translation.export.init:0"
+msgid "Export Translation"
+msgstr ""
+
+msgctxt "view:ir.translation.export.start:0"
+msgid "Export Translation"
+msgstr ""
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Set Report Translations"
+msgstr ""
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Synchronize Report Translations?"
+msgstr ""
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Report Translations"
+msgstr ""
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Translations Succeed!"
+msgstr ""
+
+msgctxt "view:ir.translation.update.init:0"
+msgid "Synchronize Translations"
+msgstr ""
+
+msgctxt "view:ir.translation:0"
+msgid "Translations"
+msgstr ""
+
+msgctxt "view:ir.trigger:0"
+msgid "Trigger"
+msgstr ""
+
+msgctxt "view:ir.trigger:0"
+msgid "Triggers"
+msgstr ""
+
+msgctxt "view:ir.ui.icon:0"
+msgid "Icon"
+msgstr ""
+
+msgctxt "view:ir.ui.icon:0"
+msgid "Icons"
+msgstr ""
+
+msgctxt "view:ir.ui.menu:0"
+msgid "Menu"
+msgstr ""
+
+msgctxt "view:ir.ui.view:0"
+msgid "View"
+msgstr ""
+
+msgctxt "view:ir.ui.view:0"
+msgid "_Show"
+msgstr ""
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcut"
+msgstr ""
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcuts"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "View Tree Expanded State"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "Views Tree Expanded State"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "View Tree Width"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "Views Tree Width"
+msgstr ""
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,end:0"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,print:0"
+msgid "Print"
+msgstr ""
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,end:0"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,wizard:0"
+msgid "Ok"
+msgstr ""
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,end:0"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,start:0"
+msgid "Start Upgrade"
+msgstr ""
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,start,config:0"
+msgid "Ok"
+msgstr ""
+
+msgctxt "wizard_button:ir.translation.clean,init,end:0"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:ir.translation.clean,init,start:0"
+msgid "Start"
+msgstr ""
+
+msgctxt "wizard_button:ir.translation.clean,start,end:0"
+msgid "Ok"
+msgstr ""
+
+msgctxt "wizard_button:ir.translation.export,init,end:0"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:ir.translation.export,init,start:0"
+msgid "Start Export"
+msgstr ""
+
+msgctxt "wizard_button:ir.translation.export,start,end:0"
+msgid "Close"
+msgstr ""
+
+msgctxt "wizard_button:ir.translation.set_report,init,end:0"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:ir.translation.set_report,init,start:0"
+msgid "Start Update"
+msgstr ""
+
+msgctxt "wizard_button:ir.translation.set_report,start,end:0"
+msgid "Ok"
+msgstr ""
+
+msgctxt "wizard_button:ir.translation.update,init,end:0"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:ir.translation.update,init,start:0"
+msgid "Start Update"
+msgstr ""
+
+msgctxt "wizard_button:ir.ui.view.show,init,end:0"
+msgid "Close"
+msgstr ""
diff --git a/trytond/ir/locale/de_DE.po b/trytond/ir/locale/de_DE.po
new file mode 100644
index 0000000..1897ee0
--- /dev/null
+++ b/trytond/ir/locale/de_DE.po
@@ -0,0 +1,2860 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:access_error:0"
+msgid ""
+"You try to bypass an access rule!\n"
+"(Document type: %s)"
+msgstr ""
+"Fehlende Zugriffsberechtigung!\n"
+"(Dokumententyp: %s)"
+
+msgctxt "error:delete_workflow_record:0"
+msgid "You cannot delete a record with a running workflow."
+msgstr "Ein im Workflow befindlicher Datensatz kann nicht gelöscht werden!"
+
+msgctxt "error:delete_xml_record:0"
+msgid "You are not allowed to delete this record."
+msgstr "Keine Löschberechtigung für diesen Datensatz"
+
+msgctxt "error:digits_validation_record:0"
+msgid "The field \"%s\" on \"%s\" has too many decimal digits."
+msgstr "Das Feld \"%s\" in \"%s\" weist zu viele Dezimalstellen auf."
+
+msgctxt "error:domain_validation_record:0"
+msgid "The value of the field \"%s\" on \"%s\" is not valid according to its domain."
+msgstr ""
+"Der Wert von Feld \"%s\" in \"%s\" liegt nicht im gültigen Wertebereich "
+"(Domain)!"
+
+msgctxt "error:domain_validation_record:0"
+msgid "The value of the field \"%s\" on \"%s\" is not valid with his domain."
+msgstr ""
+"Der Wert von Feld \"%s\" in \"%s\" liegt nicht im gültigen Wertebereich "
+"(Domain)!"
+
+msgctxt "error:foreign_model_exist:0"
+msgid "Could not delete \"%s\" records because they are used on field \"%s\" of \"%s\"."
+msgstr ""
+"\"%s\" Datensätze konnten nicht gelöscht werden, weil sie in Feld \"%s\" in "
+"\"%s\" verwendet werden."
+
+msgctxt "error:foreign_model_missing:0"
+msgid "The value of field \"%s\" on \"%s\" doesn't exist."
+msgstr "Der Wert von Feld \"%s\" in \"%s\" existiert nicht."
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid context!"
+msgstr "Ungültiger Kontext!"
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid domain or search criteria!"
+msgstr "Wertebereich (Domain) oder Suchkriterien ungültig!"
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid views!"
+msgstr "Ungültige Sicht!"
+
+msgctxt "error:ir.action.keyword:0"
+msgid "Wrong wizard model!"
+msgstr "Falsches Wizardmodell!"
+
+msgctxt "error:ir.action.report:0"
+msgid "The internal name must be unique by module!"
+msgstr "Der interne Name kann pro Modul nur einmal vergeben werden!"
+
+msgctxt "error:ir.attachment:0"
+msgid "The  names of attachments must be unique by resource!"
+msgstr ""
+"Der Name für einen Anhang kann nur einmal pro Ressource vergeben werden!"
+
+msgctxt "error:ir.cron:0"
+msgid "Scheduled action failed"
+msgstr "Geplante Aktion fehlgeschlagen"
+
+msgctxt "error:ir.cron:0"
+msgid ""
+"The following action failed to execute properly: \"%s\"\n"
+" Traceback: \n"
+"\n"
+"%s\n"
+msgstr ""
+"Die folgende Aktion konnte nicht erfolgreich durchgeführt werden: \"%s\"\n"
+" Traceback:\n"
+"\n"
+"%s"
+
+msgctxt "error:ir.lang:0"
+msgid "Invalid Grouping!"
+msgstr "Ungültige Gruppierung"
+
+msgctxt "error:ir.lang:0"
+msgid "The date format is not valid!"
+msgstr "Ungültiges Datumsformat"
+
+msgctxt "error:ir.lang:0"
+msgid "decimal_point and thousands_sep must be different!"
+msgstr "Dezimalpunkt and Tausendertrennzeichen müssen unterschiedlich sein!"
+
+msgctxt "error:ir.model.access:0"
+msgid "Only one record by model and group is allowed!"
+msgstr "Nur ein Datensatz pro Modell und Gruppe möglich!"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not create this kind of document! (%s)"
+msgstr "Keine Berechtigung für die Erstellung dieser Dokumentenart! (%s) "
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not delete this document! (%s)"
+msgstr "Keine Berechtigung für die Löschung dieses Dokuments! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not read this document! (%s)"
+msgstr "Keine Leseberechtigung für dieses Dokument! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not write in this document! (%s)"
+msgstr "Keine Schreibberechtigung für dieses Dokument! (%s)"
+
+msgctxt "error:ir.model.data:0"
+msgid "The triple (fs_id, module, model) must be unique!"
+msgstr ""
+"Die Dreifachkombination (fs_id, module, model)  muss eindeuitg sein (kann "
+"nicht mehrfach vergeben werden)!"
+
+msgctxt "error:ir.model.field.access:0"
+msgid "Only one record by field and group is allowed!"
+msgstr "Nur ein Datensatz pro Feld und Gruppe möglich!"
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not read the field! (%s.%s)"
+msgstr "Keine Leseberechtigung für das Feld (%s.%s)!"
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not write on the field! (%s.%s)"
+msgstr "Keine Schreibberechtigung für das Feld (%s.%s)!"
+
+msgctxt "error:ir.model.field:0"
+msgid "Model Field Name must be a python identifier!"
+msgstr "Der Feldname eines Modells muss ein gültiger Python-Bezeichner sein!"
+
+msgctxt "error:ir.model.field:0"
+msgid "The field name in model must be unique!"
+msgstr "Der Feldname in Modell kann nicht mehrfach vergeben werden!"
+
+msgctxt "error:ir.model:0"
+msgid "Module Name must be a python identifier!"
+msgstr "Der Name eines Moduls muss ein gültiger Python-Bezeichner sein!"
+
+msgctxt "error:ir.model:0"
+msgid "The model must be unique!"
+msgstr "Das Modell kann nicht mehrfach vergeben werden!"
+
+msgctxt "error:ir.module.module.dependency:0"
+msgid "Dependency must be unique by module!"
+msgstr "Die Abhängigkeit eines Moduls muss eindeutig sein!"
+
+msgctxt "error:ir.module.module:0"
+msgid "Missing dependencies %s for module \"%s\""
+msgstr "Fehlende Abhängigkeiten %s für Modul \"%s\""
+
+msgctxt "error:ir.module.module:0"
+msgid "The modules you are trying to uninstall depends on installed modules:"
+msgstr "Die zu deinstallierenden Module hängen von installierten Module ab:"
+
+msgctxt "error:ir.module.module:0"
+msgid "The name of the module must be unique!"
+msgstr "Der Name eines Moduls kann nicht mehrfach vergeben werden"
+
+msgctxt "error:ir.module.module:0"
+msgid "You can not remove a module that is installed or will be installed"
+msgstr ""
+"Ein bereits installiertes oder für die Installation vorgemwerktes Modul kann"
+" nicht entfernt werden"
+
+msgctxt "error:ir.rule.group:0"
+msgid "Global and Default are mutually exclusive!"
+msgstr "Global und Standard schließen sich gegenseitig aus!"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Invalid prefix/suffix!"
+msgstr "Präfix/Suffix ungültig!"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Last Timestamp could not be in future!"
+msgstr "Der letzte Zeitstempel darf nicht in der Zukunft liegen!"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Missing sequence!"
+msgstr "Fehlender Nummernkreis!"
+
+msgctxt "error:ir.sequence:0"
+msgid "Invalid prefix/suffix!"
+msgstr "Ungültiger Präfix/Suffix!"
+
+msgctxt "error:ir.sequence:0"
+msgid "Last Timestamp could not be in future!"
+msgstr "Der letzte Zeitstempel darf nicht in der Zukunft liegen!"
+
+msgctxt "error:ir.sequence:0"
+msgid "Missing sequence!"
+msgstr "Fehlender Nummernkreis!"
+
+msgctxt "error:ir.translation:0"
+msgid "Translation must be unique"
+msgstr "Ãœbersetzung kann nicht mehrfach vergeben werden!"
+
+msgctxt "error:ir.trigger:0"
+msgid "\"On Time\" and others are mutually exclusive!"
+msgstr ""
+"\"Zeitgesteuert\" und die restlichen Optionen schließen sich gegenseitig "
+"aus!"
+
+msgctxt "error:ir.trigger:0"
+msgid "Condition must be a python expression!"
+msgstr "Bedingung muss ein Python Ausdruck sein!"
+
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not create recursive menu!"
+msgstr "Menüs können nicht rekursiv eingerichtet werden!"
+
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not use \" / \" in name field!"
+msgstr "In dem Namensfeld kann \" / \" nicht verwendet werden!"
+
+msgctxt "error:ir.ui.view.show:0"
+msgid "Only \"form\" view can be shown!"
+msgstr "Es können nur  \"Formular\"-Sichten angezeigt werden!"
+
+msgctxt "error:ir.ui.view:0"
+msgid "Invalid XML for View!"
+msgstr "Ungültiges XML für Ansicht!"
+
+msgctxt "error:not_found_in_selection:0"
+msgid "Key %r not found in selection field %r"
+msgstr "Schlüsselwert %r nicht gefunden in Auswahlfeld %r"
+
+msgctxt "error:read_error:0"
+msgid ""
+"You try to read records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr ""
+"Leseversuch von nicht mehr vorhandenen Datensätzen!\n"
+"(Dokumententyp: %s)"
+
+msgctxt "error:reference_syntax_error:0"
+msgid "Syntax error for reference %r in %s"
+msgstr "Syntaxfehler für Beziehung %r in %s"
+
+msgctxt "error:relation_not_found:0"
+msgid "Relation not found: %r in %s"
+msgstr "Beziehung nicht gefunden: %r in %s"
+
+msgctxt "error:required_field:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr "Feld \"%s\" in \"%s\" ist erforderlich."
+
+msgctxt "error:required_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr "Feld \"%s\" in \"%s\" ist erforderlich."
+
+msgctxt "error:search_function_missing:0"
+msgid "Missing search function on field \"%s\"."
+msgstr "Fehlende Suchfunktion für Feld \"%s\"."
+
+msgctxt "error:size_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is too long."
+msgstr "Der Wert von Feld \"%s\" in \"%s\" ist zu lang."
+
+msgctxt "error:too_many_relations_found:0"
+msgid "Too many relations found: %r in %s"
+msgstr "Zu viele Beziehungen gefunden: %r in %s"
+
+msgctxt "error:write_error:0"
+msgid ""
+"You try to write on records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr ""
+"Schreibversuch auf nicht mehr vorhandene Datensätze!\n"
+"(Dokumententyp: %s)"
+
+msgctxt "error:write_xml_record:0"
+msgid "You are not allowed to modify this record."
+msgstr "Keine Berechtigung für die Änderung dieses Datensatzes"
+
+msgctxt "error:xml_id_syntax_error:0"
+msgid "Syntax error for XML id %r in %s"
+msgstr "Syntaxfehler für die XML id %r in %s"
+
+msgctxt "error:xml_record_desc:0"
+msgid "This record is part of the base configuration."
+msgstr "Dieser Datensatz ist Teil der Basiskonfiguration"
+
+msgctxt "field:ir.action,active:0"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:ir.action,groups:0"
+msgid "Groups"
+msgstr "Gruppen"
+
+msgctxt "field:ir.action,icon:0"
+msgid "Icon"
+msgstr "Symbol"
+
+msgctxt "field:ir.action,keywords:0"
+msgid "Keywords"
+msgstr "Schlüsselworte"
+
+msgctxt "field:ir.action,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.action,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.action,type:0"
+msgid "Type"
+msgstr "Typ"
+
+msgctxt "field:ir.action,usage:0"
+msgid "Usage"
+msgstr "Gebrauch"
+
+msgctxt "field:ir.action.act_window,act_window_views:0"
+msgid "Views"
+msgstr "Sichten"
+
+msgctxt "field:ir.action.act_window,action:0"
+msgid "Action"
+msgstr "Aktion"
+
+msgctxt "field:ir.action.act_window,auto_refresh:0"
+msgid "Auto-Refresh"
+msgstr "Automatisches Auffrischen"
+
+msgctxt "field:ir.action.act_window,context:0"
+msgid "Context Value"
+msgstr "Kontext"
+
+msgctxt "field:ir.action.act_window,domain:0"
+msgid "Domain Value"
+msgstr "Wertebereich (Domain)"
+
+msgctxt "field:ir.action.act_window,limit:0"
+msgid "Limit"
+msgstr "Begrenzung"
+
+msgctxt "field:ir.action.act_window,pyson_context:0"
+msgid "PySON Context"
+msgstr "PySON Kontext"
+
+msgctxt "field:ir.action.act_window,pyson_domain:0"
+msgid "PySON Domain"
+msgstr "PySON Wertebereich (Domain)"
+
+msgctxt "field:ir.action.act_window,pyson_search_value:0"
+msgid "PySON Search Criteria"
+msgstr "PySON Suchkriterien"
+
+msgctxt "field:ir.action.act_window,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.action.act_window,res_model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:ir.action.act_window,search_value:0"
+msgid "Search Criteria"
+msgstr "Suchkriterien"
+
+msgctxt "field:ir.action.act_window,views:0"
+msgid "Views"
+msgstr "Sichten"
+
+msgctxt "field:ir.action.act_window,window_name:0"
+msgid "Window Name"
+msgstr "Fenstername"
+
+msgctxt "field:ir.action.act_window.view,act_window:0"
+msgid "Action"
+msgstr "Aktion"
+
+msgctxt "field:ir.action.act_window.view,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.action.act_window.view,sequence:0"
+msgid "Sequence"
+msgstr "Reihenfolge"
+
+msgctxt "field:ir.action.act_window.view,view:0"
+msgid "View"
+msgstr "Sicht"
+
+msgctxt "field:ir.action.keyword,action:0"
+msgid "Action"
+msgstr "Aktion"
+
+msgctxt "field:ir.action.keyword,keyword:0"
+msgid "Keyword"
+msgstr "Schlüsselwort"
+
+msgctxt "field:ir.action.keyword,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:ir.action.keyword,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.action.report,action:0"
+msgid "Action"
+msgstr "Aktion"
+
+msgctxt "field:ir.action.report,direct_print:0"
+msgid "Direct Print"
+msgstr "Direktdruck"
+
+msgctxt "field:ir.action.report,email:0"
+msgid "Email"
+msgstr "E-Mail"
+
+msgctxt "field:ir.action.report,extension:0"
+msgid "Extension"
+msgstr "Dokumententyp"
+
+msgctxt "field:ir.action.report,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:ir.action.report,module:0"
+msgid "Module"
+msgstr "Modul"
+
+msgctxt "field:ir.action.report,pyson_email:0"
+msgid "PySON Email"
+msgstr "PySON E-Mail"
+
+msgctxt "field:ir.action.report,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.action.report,report:0"
+msgid "Path"
+msgstr "Pfad"
+
+msgctxt "field:ir.action.report,report_content:0"
+msgid "Content"
+msgstr "Inhalt"
+
+msgctxt "field:ir.action.report,report_content_custom:0"
+msgid "Content"
+msgstr "Inhalt"
+
+msgctxt "field:ir.action.report,report_name:0"
+msgid "Internal Name"
+msgstr "Interner Name"
+
+msgctxt "field:ir.action.report,style:0"
+msgid "Style"
+msgstr "Stil"
+
+msgctxt "field:ir.action.report,style_content:0"
+msgid "Style"
+msgstr "Stil"
+
+msgctxt "field:ir.action.report,template_extension:0"
+msgid "Template Extension"
+msgstr "Erweiterung Vorlage"
+
+msgctxt "field:ir.action.url,action:0"
+msgid "Action"
+msgstr "Aktion"
+
+msgctxt "field:ir.action.url,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.action.url,url:0"
+msgid "Action Url"
+msgstr "URL"
+
+msgctxt "field:ir.action.wizard,action:0"
+msgid "Action"
+msgstr "Aktion"
+
+msgctxt "field:ir.action.wizard,email:0"
+msgid "Email"
+msgstr "E-Mail"
+
+msgctxt "field:ir.action.wizard,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:ir.action.wizard,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.action.wizard,window:0"
+msgid "Window"
+msgstr "Separates Fenster"
+
+msgctxt "field:ir.action.wizard,wiz_name:0"
+msgid "Wizard name"
+msgstr "Wizard Name"
+
+msgctxt "field:ir.attachment,collision:0"
+msgid "Collision"
+msgstr "Kollision"
+
+msgctxt "field:ir.attachment,data:0"
+msgid "Data"
+msgstr "Daten"
+
+msgctxt "field:ir.attachment,data_size:0"
+msgid "Data size"
+msgstr "Größe"
+
+msgctxt "field:ir.attachment,description:0"
+msgid "Description"
+msgstr "Beschreibung"
+
+msgctxt "field:ir.attachment,digest:0"
+msgid "Digest"
+msgstr "Auszug"
+
+msgctxt "field:ir.attachment,last_modification:0"
+msgid "Last Modification"
+msgstr "Letzte Änderung"
+
+msgctxt "field:ir.attachment,last_user:0"
+msgid "Last User"
+msgstr "Letzter Benutzer"
+
+msgctxt "field:ir.attachment,link:0"
+msgid "Link"
+msgstr "Verknüpfung"
+
+msgctxt "field:ir.attachment,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.attachment,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.attachment,resource:0"
+msgid "Resource"
+msgstr "Ressource"
+
+msgctxt "field:ir.attachment,summary:0"
+msgid "Summary"
+msgstr "Zusammenfassung"
+
+msgctxt "field:ir.attachment,type:0"
+msgid "Type"
+msgstr "Typ"
+
+msgctxt "field:ir.cache,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.cache,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.cache,timestamp:0"
+msgid "Timestamp"
+msgstr "Zeitstempel"
+
+msgctxt "field:ir.cron,active:0"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:ir.cron,args:0"
+msgid "Arguments"
+msgstr "Argumente"
+
+msgctxt "field:ir.cron,function:0"
+msgid "Function"
+msgstr "Funktion"
+
+msgctxt "field:ir.cron,interval_number:0"
+msgid "Interval Number"
+msgstr "Intervallanzahl"
+
+msgctxt "field:ir.cron,interval_type:0"
+msgid "Interval Unit"
+msgstr "Intervalleinheit"
+
+msgctxt "field:ir.cron,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:ir.cron,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.cron,next_call:0"
+msgid "Next Call"
+msgstr "Nächster Aufruf"
+
+msgctxt "field:ir.cron,number_calls:0"
+msgid "Number of Calls"
+msgstr "Anzahl Aufrufe"
+
+msgctxt "field:ir.cron,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.cron,repeat_missed:0"
+msgid "Repeat Missed"
+msgstr "Ausgelassene wiederholen"
+
+msgctxt "field:ir.cron,request_user:0"
+msgid "Request User"
+msgstr "Fehlermeldung an"
+
+msgctxt "field:ir.cron,user:0"
+msgid "Execution User"
+msgstr "Benutzer"
+
+msgctxt "field:ir.export,export_fields:0"
+msgid "Fields"
+msgstr "Export ID"
+
+msgctxt "field:ir.export,name:0"
+msgid "Name"
+msgstr "Name Export"
+
+msgctxt "field:ir.export,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.export,resource:0"
+msgid "Resource"
+msgstr "Ressource"
+
+msgctxt "field:ir.export.line,export:0"
+msgid "Export"
+msgstr "Export"
+
+msgctxt "field:ir.export.line,name:0"
+msgid "Name"
+msgstr "Feldname"
+
+msgctxt "field:ir.export.line,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.lang,active:0"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:ir.lang,code:0"
+msgid "Code"
+msgstr "Code"
+
+msgctxt "field:ir.lang,date:0"
+msgid "Date"
+msgstr "Datum"
+
+msgctxt "field:ir.lang,decimal_point:0"
+msgid "Decimal Separator"
+msgstr "Dezimalpunkt"
+
+msgctxt "field:ir.lang,direction:0"
+msgid "Direction"
+msgstr "Richtung"
+
+msgctxt "field:ir.lang,grouping:0"
+msgid "Grouping"
+msgstr "Gruppierung"
+
+msgctxt "field:ir.lang,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.lang,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.lang,thousands_sep:0"
+msgid "Thousands Separator"
+msgstr "Tausendertrennzeichen"
+
+msgctxt "field:ir.lang,translatable:0"
+msgid "Translatable"
+msgstr "Ãœbersetzbar"
+
+msgctxt "field:ir.model,fields:0"
+msgid "Fields"
+msgstr "Felder"
+
+msgctxt "field:ir.model,info:0"
+msgid "Information"
+msgstr "Information"
+
+msgctxt "field:ir.model,model:0"
+msgid "Model Name"
+msgstr "Modellname"
+
+msgctxt "field:ir.model,module:0"
+msgid "Module"
+msgstr "Modul"
+
+msgctxt "field:ir.model,name:0"
+msgid "Model Description"
+msgstr "Modell Beschreibung"
+
+msgctxt "field:ir.model,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.model.access,description:0"
+msgid "Description"
+msgstr "Beschreibung"
+
+msgctxt "field:ir.model.access,group:0"
+msgid "Group"
+msgstr "Gruppe"
+
+msgctxt "field:ir.model.access,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:ir.model.access,perm_create:0"
+msgid "Create Access"
+msgstr "Erstellen"
+
+msgctxt "field:ir.model.access,perm_delete:0"
+msgid "Delete Access"
+msgstr "Löschen"
+
+msgctxt "field:ir.model.access,perm_read:0"
+msgid "Read Access"
+msgstr "Lesen"
+
+msgctxt "field:ir.model.access,perm_write:0"
+msgid "Write Access"
+msgstr "Schreiben"
+
+msgctxt "field:ir.model.access,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.model.data,date_init:0"
+msgid "Init Date"
+msgstr "Initialdatum"
+
+msgctxt "field:ir.model.data,date_update:0"
+msgid "Update Date"
+msgstr "Aktualisierungsdatum"
+
+msgctxt "field:ir.model.data,db_id:0"
+msgid "Resource ID"
+msgstr "ID Ressource"
+
+msgctxt "field:ir.model.data,fs_id:0"
+msgid "Identifier on File System"
+msgstr "Identifikator im Dateisystem"
+
+msgctxt "field:ir.model.data,inherit:0"
+msgid "Inherit"
+msgstr "Vererbung"
+
+msgctxt "field:ir.model.data,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:ir.model.data,module:0"
+msgid "Module"
+msgstr "Modul"
+
+msgctxt "field:ir.model.data,noupdate:0"
+msgid "No Update"
+msgstr "Ohne Update"
+
+msgctxt "field:ir.model.data,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.model.data,values:0"
+msgid "Values"
+msgstr "Werte"
+
+msgctxt "field:ir.model.field,field_description:0"
+msgid "Field Description"
+msgstr "Beschreibung"
+
+msgctxt "field:ir.model.field,groups:0"
+msgid "Groups"
+msgstr "Gruppen"
+
+msgctxt "field:ir.model.field,help:0"
+msgid "Help"
+msgstr "Hilfe"
+
+msgctxt "field:ir.model.field,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:ir.model.field,module:0"
+msgid "Module"
+msgstr "Modul"
+
+msgctxt "field:ir.model.field,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.model.field,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.model.field,relation:0"
+msgid "Model Relation"
+msgstr "Beziehung Modell"
+
+msgctxt "field:ir.model.field,ttype:0"
+msgid "Field Type"
+msgstr "Feldtyp"
+
+msgctxt "field:ir.model.field.access,description:0"
+msgid "Description"
+msgstr "Beschreibung"
+
+msgctxt "field:ir.model.field.access,field:0"
+msgid "Field"
+msgstr "Feld"
+
+msgctxt "field:ir.model.field.access,group:0"
+msgid "Group"
+msgstr "Gruppe"
+
+msgctxt "field:ir.model.field.access,perm_read:0"
+msgid "Read Access"
+msgstr "Lesen"
+
+msgctxt "field:ir.model.field.access,perm_write:0"
+msgid "Write Access"
+msgstr "Schreiben"
+
+msgctxt "field:ir.model.field.access,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.model.print_model_graph.init,filter:0"
+msgid "Filter"
+msgstr "Filter"
+
+msgctxt "field:ir.model.print_model_graph.init,level:0"
+msgid "Level"
+msgstr "Ebene"
+
+msgctxt "field:ir.module.module,author:0"
+msgid "Author"
+msgstr "Autor"
+
+msgctxt "field:ir.module.module,dependencies:0"
+msgid "Dependencies"
+msgstr "Abhängigkeiten"
+
+msgctxt "field:ir.module.module,description:0"
+msgid "Description"
+msgstr "Beschreibung"
+
+msgctxt "field:ir.module.module,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.module.module,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.module.module,shortdesc:0"
+msgid "Short description"
+msgstr "Kurzbeschreibung"
+
+msgctxt "field:ir.module.module,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:ir.module.module,version:0"
+msgid "Version"
+msgstr "Version"
+
+msgctxt "field:ir.module.module,website:0"
+msgid "Website"
+msgstr "Website"
+
+msgctxt "field:ir.module.module.config_wizard.item,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.module.module.config_wizard.item,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.module.module.config_wizard.item,sequence:0"
+msgid "Sequence"
+msgstr "Reihenfolge"
+
+msgctxt "field:ir.module.module.config_wizard.item,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:ir.module.module.dependency,module:0"
+msgid "Module"
+msgstr "Modul"
+
+msgctxt "field:ir.module.module.dependency,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.module.module.dependency,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.module.module.dependency,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:ir.module.module.install_upgrade.init,module_info:0"
+msgid "Modules to update"
+msgstr "Zu aktualisierende Module"
+
+msgctxt "field:ir.property,field:0"
+msgid "Field"
+msgstr "Feld"
+
+msgctxt "field:ir.property,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.property,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.property,res:0"
+msgid "Resource"
+msgstr "Ressource"
+
+msgctxt "field:ir.property,value:0"
+msgid "Value"
+msgstr "Wert"
+
+msgctxt "field:ir.rule,field:0"
+msgid "Field"
+msgstr "Feld"
+
+msgctxt "field:ir.rule,operand:0"
+msgid "Operand"
+msgstr "Operand"
+
+msgctxt "field:ir.rule,operator:0"
+msgid "Operator"
+msgstr "Operator"
+
+msgctxt "field:ir.rule,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.rule,rule_group:0"
+msgid "Group"
+msgstr "Gruppe"
+
+msgctxt "field:ir.rule.group,default_p:0"
+msgid "Default"
+msgstr "Standard"
+
+msgctxt "field:ir.rule.group,global_p:0"
+msgid "Global"
+msgstr "Global"
+
+msgctxt "field:ir.rule.group,groups:0"
+msgid "Groups"
+msgstr "Gruppen"
+
+msgctxt "field:ir.rule.group,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:ir.rule.group,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.rule.group,perm_create:0"
+msgid "Create Access"
+msgstr "Erstellen"
+
+msgctxt "field:ir.rule.group,perm_delete:0"
+msgid "Delete Access"
+msgstr "Löschen"
+
+msgctxt "field:ir.rule.group,perm_read:0"
+msgid "Read Access"
+msgstr "Lesen"
+
+msgctxt "field:ir.rule.group,perm_write:0"
+msgid "Write Access"
+msgstr "Schreiben"
+
+msgctxt "field:ir.rule.group,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.rule.group,rules:0"
+msgid "Tests"
+msgstr "Tests"
+
+msgctxt "field:ir.rule.group,users:0"
+msgid "Users"
+msgstr "Benutzer"
+
+msgctxt "field:ir.sequence,active:0"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:ir.sequence,code:0"
+msgid "Sequence Code"
+msgstr "Code Nummernkreis"
+
+msgctxt "field:ir.sequence,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr "Letzter Zeitstempel"
+
+msgctxt "field:ir.sequence,name:0"
+msgid "Sequence Name"
+msgstr "Name Nummernkreis"
+
+msgctxt "field:ir.sequence,number_increment:0"
+msgid "Increment Number"
+msgstr "Schrittweite"
+
+msgctxt "field:ir.sequence,number_next:0"
+msgid "Next Number"
+msgstr "Nächste Nummer"
+
+msgctxt "field:ir.sequence,number_next_internal:0"
+msgid "Next Number"
+msgstr "Nächste Zahl"
+
+msgctxt "field:ir.sequence,padding:0"
+msgid "Number padding"
+msgstr "Feste Länge (Vornullen)"
+
+msgctxt "field:ir.sequence,prefix:0"
+msgid "Prefix"
+msgstr "Präfix"
+
+msgctxt "field:ir.sequence,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.sequence,suffix:0"
+msgid "Suffix"
+msgstr "Suffix"
+
+msgctxt "field:ir.sequence,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr "Zeitstempel Versatz"
+
+msgctxt "field:ir.sequence,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr "Zeitstempel Rundung"
+
+msgctxt "field:ir.sequence,type:0"
+msgid "Type"
+msgstr "Typ"
+
+msgctxt "field:ir.sequence.strict,active:0"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:ir.sequence.strict,code:0"
+msgid "Sequence Code"
+msgstr "Code Nummernkreis"
+
+msgctxt "field:ir.sequence.strict,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr "Letzter Zeitstempel"
+
+msgctxt "field:ir.sequence.strict,name:0"
+msgid "Sequence Name"
+msgstr "Name Nummernkreis"
+
+msgctxt "field:ir.sequence.strict,number_increment:0"
+msgid "Increment Number"
+msgstr "Schrittweite"
+
+msgctxt "field:ir.sequence.strict,number_next:0"
+msgid "Next Number"
+msgstr "Nächste Zahl"
+
+msgctxt "field:ir.sequence.strict,number_next_internal:0"
+msgid "Next Number"
+msgstr "Nächste Zahl"
+
+msgctxt "field:ir.sequence.strict,padding:0"
+msgid "Number padding"
+msgstr "Feste Länge (Vornullen)"
+
+msgctxt "field:ir.sequence.strict,prefix:0"
+msgid "Prefix"
+msgstr "Präfix"
+
+msgctxt "field:ir.sequence.strict,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.sequence.strict,suffix:0"
+msgid "Suffix"
+msgstr "Suffix"
+
+msgctxt "field:ir.sequence.strict,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr "Zeitstempel Versatz"
+
+msgctxt "field:ir.sequence.strict,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr "Zeitstempel Rundung"
+
+msgctxt "field:ir.sequence.strict,type:0"
+msgid "Type"
+msgstr "Typ"
+
+msgctxt "field:ir.sequence.type,code:0"
+msgid "Sequence Code"
+msgstr "Code Nummernkreis"
+
+msgctxt "field:ir.sequence.type,name:0"
+msgid "Sequence Name"
+msgstr "Name Nummernkreis"
+
+msgctxt "field:ir.sequence.type,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.translation,fuzzy:0"
+msgid "Fuzzy"
+msgstr "Fuzzy"
+
+msgctxt "field:ir.translation,lang:0"
+msgid "Language"
+msgstr "Sprache"
+
+msgctxt "field:ir.translation,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:ir.translation,module:0"
+msgid "Module"
+msgstr "Modul"
+
+msgctxt "field:ir.translation,name:0"
+msgid "Field Name"
+msgstr "Feldname"
+
+msgctxt "field:ir.translation,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.translation,res_id:0"
+msgid "Resource ID"
+msgstr "ID Ressource"
+
+msgctxt "field:ir.translation,src:0"
+msgid "Source"
+msgstr "Quelle"
+
+msgctxt "field:ir.translation,src_md5:0"
+msgid "Source MD5"
+msgstr "MD5 Quelle"
+
+msgctxt "field:ir.translation,type:0"
+msgid "Type"
+msgstr "Typ"
+
+msgctxt "field:ir.translation,value:0"
+msgid "Translation Value"
+msgstr "Ãœbersetzung"
+
+msgctxt "field:ir.translation.export.init,lang:0"
+msgid "Language"
+msgstr "Sprache"
+
+msgctxt "field:ir.translation.export.init,module:0"
+msgid "Module"
+msgstr "Modul"
+
+msgctxt "field:ir.translation.export.start,file:0"
+msgid "File"
+msgstr "Datei"
+
+msgctxt "field:ir.translation.update.init,lang:0"
+msgid "Language"
+msgstr "Sprache"
+
+msgctxt "field:ir.trigger,action_function:0"
+msgid "Action Function"
+msgstr "Aktion Funktion"
+
+msgctxt "field:ir.trigger,action_model:0"
+msgid "Action Model"
+msgstr "Aktion Modell"
+
+msgctxt "field:ir.trigger,active:0"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:ir.trigger,condition:0"
+msgid "Condition"
+msgstr "Bedingung"
+
+msgctxt "field:ir.trigger,limit_number:0"
+msgid "Limit Number"
+msgstr "Limit Durchläufe"
+
+msgctxt "field:ir.trigger,minimum_delay:0"
+msgid "Minimum Delay"
+msgstr "Minimale Verzögerung"
+
+msgctxt "field:ir.trigger,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:ir.trigger,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.trigger,on_create:0"
+msgid "On Create"
+msgstr "Bei der Erstellung"
+
+msgctxt "field:ir.trigger,on_delete:0"
+msgid "On Delete"
+msgstr "Beim Löschen"
+
+msgctxt "field:ir.trigger,on_time:0"
+msgid "On Time"
+msgstr "Zeitgesteuert"
+
+msgctxt "field:ir.trigger,on_write:0"
+msgid "On Write"
+msgstr "Beim Schreiben"
+
+msgctxt "field:ir.trigger,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.trigger.log,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.trigger.log,record_id:0"
+msgid "Record ID"
+msgstr "Datensatz ID"
+
+msgctxt "field:ir.trigger.log,trigger:0"
+msgid "Trigger"
+msgstr "Trigger"
+
+msgctxt "field:ir.ui.icon,icon:0"
+msgid "Icon"
+msgstr "Symbol"
+
+msgctxt "field:ir.ui.icon,module:0"
+msgid "Module"
+msgstr "Modul"
+
+msgctxt "field:ir.ui.icon,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.ui.icon,path:0"
+msgid "SVG Path"
+msgstr "Pfad"
+
+msgctxt "field:ir.ui.icon,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.ui.icon,sequence:0"
+msgid "Sequence"
+msgstr "Reihenfolge"
+
+msgctxt "field:ir.ui.menu,action:0"
+msgid "Action"
+msgstr "Aktion"
+
+msgctxt "field:ir.ui.menu,active:0"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:ir.ui.menu,childs:0"
+msgid "Children"
+msgstr "Untergeordnet (Menüs)"
+
+msgctxt "field:ir.ui.menu,complete_name:0"
+msgid "Complete Name"
+msgstr "Vollständiger Name"
+
+msgctxt "field:ir.ui.menu,groups:0"
+msgid "Groups"
+msgstr "Gruppen"
+
+msgctxt "field:ir.ui.menu,icon:0"
+msgid "Icon"
+msgstr "Icon"
+
+msgctxt "field:ir.ui.menu,name:0"
+msgid "Menu"
+msgstr "Menü"
+
+msgctxt "field:ir.ui.menu,parent:0"
+msgid "Parent Menu"
+msgstr "Übergeordnet (Menü)"
+
+msgctxt "field:ir.ui.menu,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.ui.menu,sequence:0"
+msgid "Sequence"
+msgstr "Reihenfolge"
+
+msgctxt "field:ir.ui.view,arch:0"
+msgid "View Architecture"
+msgstr "Architektur Sicht"
+
+msgctxt "field:ir.ui.view,domain:0"
+msgid "Domain"
+msgstr "Wertebereich (Domain)"
+
+msgctxt "field:ir.ui.view,field_childs:0"
+msgid "Children Field"
+msgstr "Untergeordnetes Feld"
+
+msgctxt "field:ir.ui.view,inherit:0"
+msgid "Inherited View"
+msgstr "Vererbte Sicht"
+
+msgctxt "field:ir.ui.view,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:ir.ui.view,module:0"
+msgid "Module"
+msgstr "Modul"
+
+msgctxt "field:ir.ui.view,priority:0"
+msgid "Priority"
+msgstr "Priorität"
+
+msgctxt "field:ir.ui.view,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.ui.view,type:0"
+msgid "View Type"
+msgstr "Sichtentyp"
+
+msgctxt "field:ir.ui.view_sc,name:0"
+msgid "Shortcut Name"
+msgstr "Name"
+
+msgctxt "field:ir.ui.view_sc,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.ui.view_sc,res_id:0"
+msgid "Resource Ref."
+msgstr "Ref. Ressource"
+
+msgctxt "field:ir.ui.view_sc,resource:0"
+msgid "Resource Name"
+msgstr "Name Ressource"
+
+msgctxt "field:ir.ui.view_sc,sequence:0"
+msgid "Sequence"
+msgstr "Reihenfolge"
+
+msgctxt "field:ir.ui.view_sc,user_id:0"
+msgid "User Ref."
+msgstr "Ref. Benutzer"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,child_name:0"
+msgid "Child Name"
+msgstr "Name untergeordneter Eintrag"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,domain:0"
+msgid "Domain"
+msgstr "Wertebereich (Domain)"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,nodes:0"
+msgid "Expanded Nodes"
+msgstr "Aufgeklappte Knoten"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,user:0"
+msgid "User"
+msgstr "Benutzer"
+
+msgctxt "field:ir.ui.view_tree_width,field:0"
+msgid "Field"
+msgstr "Feld"
+
+msgctxt "field:ir.ui.view_tree_width,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:ir.ui.view_tree_width,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.ui.view_tree_width,user:0"
+msgid "User"
+msgstr "Benutzer"
+
+msgctxt "field:ir.ui.view_tree_width,width:0"
+msgid "Width"
+msgstr "Breite"
+
+msgctxt "help:ir.action.act_window,auto_refresh:0"
+msgid "Add an auto-refresh on the view"
+msgstr "Die Sicht wird automatisch aufgefrischt"
+
+msgctxt "help:ir.action.act_window,limit:0"
+msgid "Default limit for the list view"
+msgstr "Standardobergrenze für die Listenanscht"
+
+msgctxt "help:ir.action.act_window,search_value:0"
+msgid "Default search criteria for the list view"
+msgstr "Standardsuchwerte in der Listenansicht"
+
+msgctxt "help:ir.action.act_window,window_name:0"
+msgid "Use the action name as window name"
+msgstr "Aktionsname als Fenstername benutzen"
+
+msgctxt "help:ir.action.report,extension:0"
+msgid ""
+"Leave empty for the same as template, see unoconv documentation for "
+"compatible format"
+msgstr ""
+"Leer lassen für das selbe Format wie in 'Erweiterung Vorlage', s. unoconv-"
+"Dokumentation für kompatible Formate"
+
+msgctxt "help:ir.action.report,style:0"
+msgid "Define the style to apply on the report."
+msgstr "Definiert den Stil für den Bericht"
+
+msgctxt "help:ir.action.wizard,window:0"
+msgid "Run wizard in a new window"
+msgstr "Wizard in separatem Fenster ausführen"
+
+msgctxt "help:ir.cron,number_calls:0"
+msgid ""
+"Number of times the function is called, a negative number indicates that the"
+" function will always be called"
+msgstr ""
+"Anzahl der Funktionsaufrufe\\n\n"
+"(Eine negative Zahl bewirkt, dass die Funktion immer aufgerufen wird.)"
+
+msgctxt "help:ir.cron,request_user:0"
+msgid "The user who will receive requests in case of failure"
+msgstr "Der Benutzer, der bei Fehlern Anfragen erhält"
+
+msgctxt "help:ir.cron,user:0"
+msgid "The user used to execute this action"
+msgstr "Der Benutzer, der diese Aktion ausführt"
+
+msgctxt "help:ir.lang,code:0"
+msgid "RFC 4646 tag: http://tools.ietf.org/html/rfc4646"
+msgstr "RFC 4646 tag: http://tools.ietf.org/html/rfc4646"
+
+msgctxt "help:ir.model,module:0"
+msgid "Module in which this model is defined"
+msgstr "Modul, in dem dieses Modell definiert ist"
+
+msgctxt "help:ir.model.data,db_id:0"
+msgid "The id of the record in the database."
+msgstr "Die ID des Datensatzes in der Datenbank"
+
+msgctxt "help:ir.model.data,fs_id:0"
+msgid "The id of the record as known on the file system."
+msgstr "Die ID des Datensatzes wie im Dateisystem bekannt"
+
+msgctxt "help:ir.model.field,module:0"
+msgid "Module in which this field is defined"
+msgstr "Modul, in dem dieses Feld definiert ist"
+
+msgctxt "help:ir.model.print_model_graph.init,filter:0"
+msgid ""
+"Entering a Python Regular Expression will exclude matching models from the "
+"graph."
+msgstr ""
+"Ein Regulärer Ausdruck (Python Regular Expression) in diesem Feld wird übereinstimmende\n"
+"Modelle von der Darstellung ausschließen."
+
+msgctxt "help:ir.rule.group,default_p:0"
+msgid "Add this rule to all users by default"
+msgstr "Diese Regel als Standardregel für alle Benutzer festlegen"
+
+msgctxt "help:ir.rule.group,global_p:0"
+msgid ""
+"Make the rule global \n"
+"so every users must follow this rule"
+msgstr ""
+"Regel global setzen\n"
+"(Regel gilt für jeden Benutzer)"
+
+msgctxt "help:ir.rule.group,rules:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr ""
+"Die Regel wird gültig bewertet, wenn wenigstens ein Test positiv ist (True)"
+
+msgctxt "help:ir.trigger,condition:0"
+msgid ""
+"A Python statement evaluated with record represented by \"self\"\n"
+"It triggers the action if true."
+msgstr ""
+"Ein Python Ausdruck, der mit dem Datensatz (repräsentiert durch \"self\") ausgewertet wird.\n"
+"Die Aktion wird getriggert, wenn der Ausdruck Wahr ist (zutrifft)."
+
+msgctxt "help:ir.trigger,limit_number:0"
+msgid ""
+"Limit the number of call to \"Action Function\" by records.\n"
+"0 for no limit."
+msgstr ""
+"Begrenzung der Anzahl von Aufrufen von \"Aktion Funktion\" durch Datensätze.\n"
+"0 bedeutet kein Limit."
+
+msgctxt "help:ir.trigger,minimum_delay:0"
+msgid ""
+"Set a minimum delay in minutes between call to \"Action Function\" for the same record.\n"
+"0 for no delay."
+msgstr ""
+"Minimale Verzögerung in Minuten zwischen Aufrufen von \"Aktion Funktion\" für den selben Datensatz.\n"
+"0 bedeutet keine Verzögerung."
+
+msgctxt "model:ir.action,name:0"
+msgid "Action"
+msgstr "Aktion"
+
+msgctxt "model:ir.action,name:act_action_act_window_form"
+msgid "Window Actions"
+msgstr "Fensteraktionen"
+
+msgctxt "model:ir.action,name:act_action_form"
+msgid "Actions"
+msgstr "Aktionen"
+
+msgctxt "model:ir.action,name:act_action_report_form"
+msgid "Reports"
+msgstr "Berichte"
+
+msgctxt "model:ir.action,name:act_action_url_form"
+msgid "URLs"
+msgstr "URLs"
+
+msgctxt "model:ir.action,name:act_action_wizard_form"
+msgid "Wizards"
+msgstr "Wizards"
+
+msgctxt "model:ir.action,name:act_attachment_form"
+msgid "Attachments"
+msgstr "Anhänge"
+
+msgctxt "model:ir.action,name:act_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr "Wizardelemente konfigurieren"
+
+msgctxt "model:ir.action,name:act_cron_form"
+msgid "Scheduled Actions"
+msgstr "Geplante Aktionen"
+
+msgctxt "model:ir.action,name:act_export_form"
+msgid "Exports"
+msgstr "Exporte"
+
+msgctxt "model:ir.action,name:act_icon_form"
+msgid "Icons"
+msgstr "Symbole"
+
+msgctxt "model:ir.action,name:act_lang_form"
+msgid "Languages"
+msgstr "Sprachen"
+
+msgctxt "model:ir.action,name:act_menu_list"
+msgid "Menu"
+msgstr "Menü"
+
+msgctxt "model:ir.action,name:act_menu_tree"
+msgid "Menu"
+msgstr "Menü"
+
+msgctxt "model:ir.action,name:act_model_access_form"
+msgid "Models Access"
+msgstr "Berechtigungen für Modelle"
+
+msgctxt "model:ir.action,name:act_model_field_access_form"
+msgid "Fields Access"
+msgstr "Zugriffsberechtigung Feld"
+
+msgctxt "model:ir.action,name:act_model_fields_form"
+msgid "Fields"
+msgstr "Felder"
+
+msgctxt "model:ir.action,name:act_model_form"
+msgid "Models"
+msgstr "Modelle"
+
+msgctxt "model:ir.action,name:act_module_config_wizard"
+msgid "Module Configuration"
+msgstr "Modulkonfiguration"
+
+msgctxt "model:ir.action,name:act_module_form"
+msgid "Modules"
+msgstr "Module"
+
+msgctxt "model:ir.action,name:act_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr "Vorgemerkte Installationen / Aktualisierungen durchführen"
+
+msgctxt "model:ir.action,name:act_property_form"
+msgid "Properties"
+msgstr "Eigenschaften"
+
+msgctxt "model:ir.action,name:act_property_form_default"
+msgid "Default Properties"
+msgstr "Standardeigenschaften"
+
+msgctxt "model:ir.action,name:act_rule_group_form"
+msgid "Record Rules"
+msgstr "Datensatzregeln"
+
+msgctxt "model:ir.action,name:act_sequence_form"
+msgid "Sequences"
+msgstr "Nummernkreise"
+
+msgctxt "model:ir.action,name:act_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr "Strikte Nummernkreise"
+
+msgctxt "model:ir.action,name:act_sequence_type_form"
+msgid "Sequence Types"
+msgstr "Typen Nummernkreise"
+
+msgctxt "model:ir.action,name:act_translation_clean"
+msgid "Clean Translations"
+msgstr "Ãœbersetzungen bereinigen"
+
+msgctxt "model:ir.action,name:act_translation_export"
+msgid "Export Translations"
+msgstr "Ãœbersetzungen exportieren"
+
+msgctxt "model:ir.action,name:act_translation_form"
+msgid "Translations"
+msgstr "Ãœbersetzungen"
+
+msgctxt "model:ir.action,name:act_translation_set_report"
+msgid "Set Report Translations"
+msgstr "Übersetzungen für Berichte aktualisieren"
+
+msgctxt "model:ir.action,name:act_translation_update"
+msgid "Synchronize Translations"
+msgstr "Ãœbersetzungen aktualisieren"
+
+msgctxt "model:ir.action,name:act_trigger_form"
+msgid "Triggers"
+msgstr "Trigger"
+
+msgctxt "model:ir.action,name:act_view_form"
+msgid "Views"
+msgstr "Sichten"
+
+msgctxt "model:ir.action,name:act_view_sc_add"
+msgid "Add Shortcut"
+msgstr "Favorit Hinzufügen"
+
+msgctxt "model:ir.action,name:act_view_sc_form"
+msgid "View Shortcuts"
+msgstr "Favoriten"
+
+msgctxt "model:ir.action,name:act_view_sc_open"
+msgid "Open Shortcut"
+msgstr "Favorit Öffnen"
+
+msgctxt "model:ir.action,name:act_view_show"
+msgid "Show View"
+msgstr "Sicht anzeigen"
+
+msgctxt "model:ir.action,name:act_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr "Menüansicht"
+
+msgctxt "model:ir.action,name:act_view_tree_width_form"
+msgid "View Tree Width"
+msgstr "Spaltenbreiten Sicht"
+
+msgctxt "model:ir.action,name:print_model_graph"
+msgid "Graph"
+msgstr "Graphik"
+
+msgctxt "model:ir.action,name:report_model_graph"
+msgid "Graph"
+msgstr "Graphik"
+
+msgctxt "model:ir.action.act_window,name:0"
+msgid "Action act window"
+msgstr "Aktion aktives Fenster"
+
+msgctxt "model:ir.action.act_window.view,name:0"
+msgid "Action act window view"
+msgstr "Aktion aktives Fenster Sicht"
+
+msgctxt "model:ir.action.keyword,name:0"
+msgid "Action keyword"
+msgstr "Aktion Schlüsselwort"
+
+msgctxt "model:ir.action.report,name:0"
+msgid "Action report"
+msgstr "Aktion Bericht"
+
+msgctxt "model:ir.action.url,name:0"
+msgid "Action URL"
+msgstr "Aktion URL"
+
+msgctxt "model:ir.action.wizard,name:0"
+msgid "Action wizard"
+msgstr "Aktion Wizard"
+
+msgctxt "model:ir.attachment,name:0"
+msgid "Attachment"
+msgstr "Anhang"
+
+msgctxt "model:ir.cache,name:0"
+msgid "Cache"
+msgstr "Cache"
+
+msgctxt "model:ir.cron,name:0"
+msgid "Cron"
+msgstr "Cron"
+
+msgctxt "model:ir.date,name:0"
+msgid "Date"
+msgstr "Datum"
+
+msgctxt "model:ir.export,name:0"
+msgid "Export"
+msgstr "Export"
+
+msgctxt "model:ir.export.line,name:0"
+msgid "Export line"
+msgstr "Export Zeile"
+
+msgctxt "model:ir.lang,name:0"
+msgid "Language"
+msgstr "Sprache"
+
+msgctxt "model:ir.lang,name:lang_bg"
+msgid "Bulgarian"
+msgstr "Bulgarisch"
+
+msgctxt "model:ir.lang,name:lang_cs"
+msgid "Czech"
+msgstr "Tschechisch"
+
+msgctxt "model:ir.lang,name:lang_de"
+msgid "German"
+msgstr "Deutsch"
+
+msgctxt "model:ir.lang,name:lang_en"
+msgid "English"
+msgstr "Englisch"
+
+msgctxt "model:ir.lang,name:lang_es"
+msgid "Spanish (Spain)"
+msgstr "Spanisch (Spanien)"
+
+msgctxt "model:ir.lang,name:lang_es_CO"
+msgid "Spanish (Colombia)"
+msgstr "Spanisch (Kolumbien)"
+
+msgctxt "model:ir.lang,name:lang_fr"
+msgid "French"
+msgstr "Französisch"
+
+msgctxt "model:ir.lang,name:lang_nl"
+msgid "Dutch"
+msgstr "Niederländisch"
+
+msgctxt "model:ir.lang,name:lang_ru"
+msgid "Russian"
+msgstr "Russisch"
+
+msgctxt "model:ir.model,name:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "model:ir.model.access,name:0"
+msgid "Model access"
+msgstr "Modell Zugriff"
+
+msgctxt "model:ir.model.data,name:0"
+msgid "Model data"
+msgstr "Modell Daten"
+
+msgctxt "model:ir.model.field,name:0"
+msgid "Model field"
+msgstr "Modell Feld"
+
+msgctxt "model:ir.model.field.access,name:0"
+msgid "Model Field Access"
+msgstr "Modell Feld Zugriffsberechtigung"
+
+msgctxt "model:ir.model.print_model_graph.init,name:0"
+msgid "Print Model Graph Init"
+msgstr "Druck Modell Graph Init"
+
+msgctxt "model:ir.module.module,name:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "model:ir.module.module.config_wizard.first,name:0"
+msgid "Module Config Wizard First"
+msgstr "Konfigurationswizard Module Erster"
+
+msgctxt "model:ir.module.module.config_wizard.item,name:0"
+msgid "Config wizard to run after installing module"
+msgstr "Konfigurationswizard nach Modulinstallation"
+
+msgctxt "model:ir.module.module.dependency,name:0"
+msgid "Module dependency"
+msgstr "Modulabhängigkeit"
+
+msgctxt "model:ir.module.module.install_upgrade.init,name:0"
+msgid "Module Install Upgrade Init"
+msgstr "Module Installation Aktualisierung Init"
+
+msgctxt "model:ir.module.module.install_upgrade.start,name:0"
+msgid "Module Install Upgrade Start"
+msgstr "Module Installation Aktualisierung Start"
+
+msgctxt "model:ir.property,name:0"
+msgid "Property"
+msgstr "Eigenschaft"
+
+msgctxt "model:ir.rule,name:0"
+msgid "Rule"
+msgstr "Regel"
+
+msgctxt "model:ir.rule.group,name:0"
+msgid "Rule group"
+msgstr "Regel Gruppe"
+
+msgctxt "model:ir.sequence,name:0"
+msgid "Sequence"
+msgstr "Nummernkreis"
+
+msgctxt "model:ir.sequence.strict,name:0"
+msgid "Sequence Strict"
+msgstr "Strikter Nummernkreis"
+
+msgctxt "model:ir.sequence.type,name:0"
+msgid "Sequence type"
+msgstr "Typ Nummernkreis"
+
+msgctxt "model:ir.translation,name:0"
+msgid "Translation"
+msgstr "Ãœbersetzung"
+
+msgctxt "model:ir.translation.clean.init,name:0"
+msgid "Clean translation init"
+msgstr "Übersetzung Säuberung Init"
+
+msgctxt "model:ir.translation.clean.start,name:0"
+msgid "Clean translation start"
+msgstr "Übersetzung Säuberung Start"
+
+msgctxt "model:ir.translation.export.init,name:0"
+msgid "Export translation - language and module"
+msgstr "Export Ãœbersetzung Init"
+
+msgctxt "model:ir.translation.export.start,name:0"
+msgid "Export translation - file"
+msgstr "Export Ãœbersetzung Start"
+
+msgctxt "model:ir.translation.set_report.init,name:0"
+msgid "Update Report Translation"
+msgstr "Aktualisierung Ãœbersetzung Bericht"
+
+msgctxt "model:ir.translation.set_report.start,name:0"
+msgid "Update Report Translation"
+msgstr "Aktualisierung Ãœbersetzung Bericht"
+
+msgctxt "model:ir.translation.update.init,name:0"
+msgid "Update translation - language"
+msgstr "Aktualisierung Ãœbersetzung Init"
+
+msgctxt "model:ir.trigger,name:0"
+msgid "Trigger"
+msgstr "Trigger"
+
+msgctxt "model:ir.trigger.log,name:0"
+msgid "Trigger Log"
+msgstr "Trigger Protokoll"
+
+msgctxt "model:ir.ui.icon,name:0"
+msgid "Icon"
+msgstr "Symbol"
+
+msgctxt "model:ir.ui.menu,name:0"
+msgid "UI menu"
+msgstr "Programmoberfläche Menü"
+
+msgctxt "model:ir.ui.menu,name:menu_act_action"
+msgid "Actions"
+msgstr "Aktionen"
+
+msgctxt "model:ir.ui.menu,name:menu_action"
+msgid "Actions"
+msgstr "Aktionen"
+
+msgctxt "model:ir.ui.menu,name:menu_action_act_window"
+msgid "Window Actions"
+msgstr "Fensteraktionen"
+
+msgctxt "model:ir.ui.menu,name:menu_action_report_form"
+msgid "Reports"
+msgstr "Berichte"
+
+msgctxt "model:ir.ui.menu,name:menu_action_url"
+msgid "URLs"
+msgstr "URLs"
+
+msgctxt "model:ir.ui.menu,name:menu_action_wizard"
+msgid "Wizards"
+msgstr "Wizards"
+
+msgctxt "model:ir.ui.menu,name:menu_administration"
+msgid "Administration"
+msgstr "Systemverwaltung"
+
+msgctxt "model:ir.ui.menu,name:menu_attachment_form"
+msgid "Attachments"
+msgstr "Anhänge"
+
+msgctxt "model:ir.ui.menu,name:menu_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr "Wizardelemente konfigurieren"
+
+msgctxt "model:ir.ui.menu,name:menu_cron_form"
+msgid "Scheduled Actions"
+msgstr "Geplante Aktionen"
+
+msgctxt "model:ir.ui.menu,name:menu_export_form"
+msgid "Exports"
+msgstr "Exporte"
+
+msgctxt "model:ir.ui.menu,name:menu_icon_form"
+msgid "Icons"
+msgstr "Symbole"
+
+msgctxt "model:ir.ui.menu,name:menu_ir_sequence_type"
+msgid "Sequence Types"
+msgstr "Typen Nummernkreise"
+
+msgctxt "model:ir.ui.menu,name:menu_lang_form"
+msgid "Languages"
+msgstr "Sprachen"
+
+msgctxt "model:ir.ui.menu,name:menu_localization"
+msgid "Localization"
+msgstr "Lokalisierung"
+
+msgctxt "model:ir.ui.menu,name:menu_menu_list"
+msgid "Menu"
+msgstr "Menü"
+
+msgctxt "model:ir.ui.menu,name:menu_model_access_form"
+msgid "Models Access"
+msgstr "Berechtigungen für Modelle"
+
+msgctxt "model:ir.ui.menu,name:menu_model_field_access_form"
+msgid "Fields Access"
+msgstr "Zugriffsberechtigungen Felder"
+
+msgctxt "model:ir.ui.menu,name:menu_model_form"
+msgid "Models"
+msgstr "Modelle"
+
+msgctxt "model:ir.ui.menu,name:menu_models"
+msgid "Models"
+msgstr "Modelle"
+
+msgctxt "model:ir.ui.menu,name:menu_module_form"
+msgid "Modules"
+msgstr "Module"
+
+msgctxt "model:ir.ui.menu,name:menu_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr "Vorgemerkte Installationen / Aktualisierungen durchführen"
+
+msgctxt "model:ir.ui.menu,name:menu_modules"
+msgid "Modules"
+msgstr "Module"
+
+msgctxt "model:ir.ui.menu,name:menu_property_form"
+msgid "Properties"
+msgstr "Eigenschaften"
+
+msgctxt "model:ir.ui.menu,name:menu_property_form_default"
+msgid "Default Properties"
+msgstr "Standardeigenschaften"
+
+msgctxt "model:ir.ui.menu,name:menu_rule_group_form"
+msgid "Record Rules"
+msgstr "Datensatzregeln"
+
+msgctxt "model:ir.ui.menu,name:menu_scheduler"
+msgid "Scheduler"
+msgstr "Zeitplaner"
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_form"
+msgid "Sequences"
+msgstr "Nummernkreise"
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr "Strikte Nummernkreise"
+
+msgctxt "model:ir.ui.menu,name:menu_sequences"
+msgid "Sequences"
+msgstr "Nummernkreise"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_clean"
+msgid "Clean Translations"
+msgstr "Ãœbersetzungen bereinigen"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_export"
+msgid "Export Translations"
+msgstr "Ãœbersetzungen exportieren"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_form"
+msgid "Translations"
+msgstr "Ãœbersetzungen"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_set_report"
+msgid "Set Report Translations"
+msgstr "Übersetzungen für Berichte aktualisieren"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_update"
+msgid "Synchronize Translations"
+msgstr "Ãœbersetzungen aktualisieren"
+
+msgctxt "model:ir.ui.menu,name:menu_trigger_form"
+msgid "Triggers"
+msgstr "Trigger"
+
+msgctxt "model:ir.ui.menu,name:menu_ui"
+msgid "User Interface"
+msgstr "Programmoberfläche"
+
+msgctxt "model:ir.ui.menu,name:menu_view"
+msgid "Views"
+msgstr "Sichten"
+
+msgctxt "model:ir.ui.menu,name:menu_view_sc"
+msgid "View Shortcuts"
+msgstr "Favoriten"
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr "Menüansicht"
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_width"
+msgid "View Tree Width"
+msgstr "Spaltenbreiten"
+
+msgctxt "model:ir.ui.menu,name:model_model_fields_form"
+msgid "Fields"
+msgstr "Felder"
+
+msgctxt "model:ir.ui.view,name:0"
+msgid "View"
+msgstr "Sicht"
+
+msgctxt "model:ir.ui.view.show.init,name:0"
+msgid "ir.ui.view.show.init"
+msgstr ""
+
+msgctxt "model:ir.ui.view_sc,name:0"
+msgid "View shortcut"
+msgstr "Favoriten"
+
+msgctxt "model:ir.ui.view_tree_expanded_state,name:0"
+msgid "ir.ui.view_tree_expanded_state"
+msgstr ""
+
+msgctxt "model:ir.ui.view_tree_width,name:0"
+msgid "View Tree Width"
+msgstr "Spaltenbreiten Sicht"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action form"
+msgstr "Formularaktion"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action tree"
+msgstr "Baumaktion"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Form relate"
+msgstr "Bezugsformular"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open Graph"
+msgstr "Graph öffnen"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open tree"
+msgstr "Baum öffnen"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Print form"
+msgstr "Formular drucken"
+
+msgctxt "selection:ir.attachment,type:0"
+msgid "Data"
+msgstr "Daten"
+
+msgctxt "selection:ir.attachment,type:0"
+msgid "Link"
+msgstr "Verknüpfung"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Days"
+msgstr "Tag(e)"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Hours"
+msgstr "Stunde(n)"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Minutes"
+msgstr "Minute(n)"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Months"
+msgstr "Monat(e)"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Weeks"
+msgstr "Woche(n)"
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Left-to-right"
+msgstr "Links-nach-Rechts"
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Right-to-left"
+msgstr "Rechts-nach-Links"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Installed"
+msgstr "Installiert"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Not Installed"
+msgstr "Nicht installiert"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be installed"
+msgstr "Für die Installation vorgemerkt"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be removed"
+msgstr "Für die Entfernung vorgemerkt"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be upgraded"
+msgstr "Für die Aktualisierung vorgemerkt"
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Done"
+msgstr "Erledigt"
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Open"
+msgstr "Offen"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Installed"
+msgstr "Installiert"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Not Installed"
+msgstr "Nicht installiert"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be installed"
+msgstr "Für die Installation vorgemerkt"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be removed"
+msgstr "Für die Entfernung vorgemerkt"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be upgraded"
+msgstr "Für die Aktualisierung vorgemerkt"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Unknown"
+msgstr "Unbekannt"
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Decimal Timestamp"
+msgstr "Zeitstempel Dezimal"
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr "Zeitstempel Hexadezimal"
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Incremental"
+msgstr "Inkrementell"
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Decimal Timestamp"
+msgstr "Zeitstempel Dezimal"
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr "Zeitstempel Hexadezimal"
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Incremental"
+msgstr "Inkrementell"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Error"
+msgstr "Fehler"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Field"
+msgstr "Feld"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Help"
+msgstr "Hilfe"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "ODT"
+msgstr "ODT"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Selection"
+msgstr "Auswahl"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "View"
+msgstr "Sicht"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Wizard Button"
+msgstr "Wizardknopf"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.act_window"
+msgstr "ir.action.act_window"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.report"
+msgstr "ir.action.report"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.url"
+msgstr "ir.action.url"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.wizard"
+msgstr "ir.action.wizard"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid ""
+msgstr ""
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Board"
+msgstr "Infoseite"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Form"
+msgstr "Formular"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Graph"
+msgstr "Diagramm"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Tree"
+msgstr "Baum"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "General"
+msgstr "Allgemein"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keyword"
+msgstr "Schlüsselwort"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keywords"
+msgstr "Schlüsselwörter"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open Window"
+msgstr "Fenster öffnen"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open a Window"
+msgstr "Ein Fenster öffnen"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Views"
+msgstr "Sichten"
+
+msgctxt "view:ir.action.report:0"
+msgid "General"
+msgstr "Allgemein"
+
+msgctxt "view:ir.action.report:0"
+msgid "Keyword"
+msgstr "Schlüsselwort"
+
+msgctxt "view:ir.action.report:0"
+msgid "Keywords"
+msgstr "Schlüsselwörter"
+
+msgctxt "view:ir.action.report:0"
+msgid "Report"
+msgstr "Bericht"
+
+msgctxt "view:ir.action.report:0"
+msgid "Report xml"
+msgstr "XML Bericht"
+
+msgctxt "view:ir.action.url:0"
+msgid "General"
+msgstr "Allgemein"
+
+msgctxt "view:ir.action.url:0"
+msgid "Keyword"
+msgstr "Schlüsselwort"
+
+msgctxt "view:ir.action.url:0"
+msgid "Keywords"
+msgstr "Schlüsselwörter"
+
+msgctxt "view:ir.action.url:0"
+msgid "URL"
+msgstr "URL"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "General"
+msgstr "Allgemein"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keyword"
+msgstr "Schlüsselwort"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keywords"
+msgstr "Schlüsselwörter"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Wizard"
+msgstr "Wizard"
+
+msgctxt "view:ir.action:0"
+msgid "Action"
+msgstr "Aktion"
+
+msgctxt "view:ir.action:0"
+msgid "General"
+msgstr "Allgemein"
+
+msgctxt "view:ir.action:0"
+msgid "Keyword"
+msgstr "Schlüsselwort"
+
+msgctxt "view:ir.action:0"
+msgid "Keywords"
+msgstr "Schlüsselwörter"
+
+msgctxt "view:ir.attachment:0"
+msgid "Attachments"
+msgstr "Anhänge"
+
+msgctxt "view:ir.attachment:0"
+msgid "Preview"
+msgstr "Vorschau"
+
+msgctxt "view:ir.cron:0"
+msgid "Action to trigger"
+msgstr "Auszuführende Aktion"
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Action"
+msgstr "Geplante Aktion"
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Actions"
+msgstr "Geplante Aktionen"
+
+msgctxt "view:ir.export:0"
+msgid "Exports"
+msgstr "Exporte"
+
+msgctxt "view:ir.lang:0"
+msgid "Date Formatting"
+msgstr "Format Datum"
+
+msgctxt "view:ir.lang:0"
+msgid "Language"
+msgstr "Sprache"
+
+msgctxt "view:ir.lang:0"
+msgid "Languages"
+msgstr "Sprachen"
+
+msgctxt "view:ir.lang:0"
+msgid "Numbers Formatting"
+msgstr "Zahlenformat"
+
+msgctxt "view:ir.model.access:0"
+msgid "Access controls"
+msgstr "Zugriffsberechtigungen"
+
+msgctxt "view:ir.model.field.access:0"
+msgid "Field Access"
+msgstr "Zugriffsberechtigung Felder"
+
+msgctxt "view:ir.model.field:0"
+msgid "Fields"
+msgstr "Felder"
+
+msgctxt "view:ir.model.print_model_graph.init:0"
+msgid "Print Model Graph"
+msgstr "Modellschaubild drucken"
+
+msgctxt "view:ir.model:0"
+msgid "Fields Description"
+msgstr "Feld Beschreibung"
+
+msgctxt "view:ir.model:0"
+msgid "Model Description"
+msgstr "Modell Beschreibung"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "Welcome to the module configuration wizard!"
+msgstr "Willkommen bei der Modulkonfiguration!"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "You will be able to configure your installation"
+msgstr "Sie können nun Ihr System einrichten"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid ""
+"You will be able to configure your installation depending on the modules you"
+" have installed."
+msgstr "Sie können jetzt die neu installierten Module einrichten."
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "depending on the modules you have installed."
+msgstr "abhängig von den installierten Modulen."
+
+msgctxt "view:ir.module.module.config_wizard.item:0"
+msgid "Config Wizard Items"
+msgstr "Wizardelemente konfigurieren"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Note that this operation my take a few minutes."
+msgstr "Dieser Vorgang kann einige Minuten dauern"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "System Upgrade"
+msgstr "Systemaktualisierung"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Your system will be upgraded."
+msgstr "Ihr System wird aktualisiert"
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "System upgrade done"
+msgstr "Systemaktualisierung beendet"
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "The modules have been upgraded / installed !"
+msgstr "Die Module wurden installiert bzw. aktualisiert!"
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "We suggest you to reload the menu tab (Ctrl+t Ctrl+r)."
+msgstr "Das Menü sollte mit Ctl+t Ctl+r neu geladen werden."
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "You may have to reinstall some language pack."
+msgstr "Evtl. müssen einige Sprachdateien erneut installiert werden."
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr "Vormerkung für Installation / Aktualisierung aufheben"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr "Deinstallation abbrechen"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr "Vormerkung für Installation / Aktualisierung aufheben"
+
+msgctxt "view:ir.module.module:0"
+msgid "Dependencies"
+msgstr "Abhängigkeiten"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr "Für die Installation vormerken"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr "Für die Deinstallation (beta) vormerken"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr "Für die Aktualisierung vormerken"
+
+msgctxt "view:ir.module.module:0"
+msgid "Module"
+msgstr "Modul"
+
+msgctxt "view:ir.module.module:0"
+msgid "Modules"
+msgstr "Module"
+
+msgctxt "view:ir.module.module:0"
+msgid "_Dependencies"
+msgstr "_Abhängigkeiten"
+
+msgctxt "view:ir.module.module:0"
+msgid "_Module"
+msgstr "_Module"
+
+msgctxt "view:ir.property:0"
+msgid "Properties"
+msgstr "Eigenschaften"
+
+msgctxt "view:ir.property:0"
+msgid "Property"
+msgstr "Eigenschaft"
+
+msgctxt "view:ir.rule.group:0"
+msgid ""
+"If there is no test defined, the rule is always satisfied if not global"
+msgstr ""
+"Wenn kein Test festgelegt wird, wird die Regel immer als gültig bewertet "
+"(außer global)"
+
+msgctxt "view:ir.rule.group:0"
+msgid "Record rules"
+msgstr "Datensatzregeln"
+
+msgctxt "view:ir.rule.group:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr ""
+"Die Regel wird als gültig bewertet, wenn wenigstens ein Test positiv ist "
+"(True)"
+
+msgctxt "view:ir.rule:0"
+msgid "Test"
+msgstr "Test"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "${day}"
+msgstr "${day}"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "${month}"
+msgstr "${month}"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "${year}"
+msgstr "${year}"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Day:"
+msgstr "Tag:"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Legend (for prefix, suffix)"
+msgstr "Legende (für Präfix, Suffix)"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Month:"
+msgstr "Monat:"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Sequences Strict"
+msgstr "Strikte Nummernkreise"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Year:"
+msgstr "Jahr:"
+
+msgctxt "view:ir.sequence.type:0"
+msgid "Sequence Type"
+msgstr "Typ Nummernkreis"
+
+msgctxt "view:ir.sequence:0"
+msgid "${day}"
+msgstr "${day}"
+
+msgctxt "view:ir.sequence:0"
+msgid "${month}"
+msgstr "${month}"
+
+msgctxt "view:ir.sequence:0"
+msgid "${year}"
+msgstr "${year}"
+
+msgctxt "view:ir.sequence:0"
+msgid "Day:"
+msgstr "Tag:"
+
+msgctxt "view:ir.sequence:0"
+msgid "Incremental"
+msgstr "Inkrementell"
+
+msgctxt "view:ir.sequence:0"
+msgid "Legend (Placeholders for prefix, suffix)"
+msgstr "Legende (Platzhalter für Präfix, Suffix)"
+
+msgctxt "view:ir.sequence:0"
+msgid "Legend (for prefix, suffix)"
+msgstr "Legende (für Präfix, Suffix)"
+
+msgctxt "view:ir.sequence:0"
+msgid "Month:"
+msgstr "Monat:"
+
+msgctxt "view:ir.sequence:0"
+msgid "Sequences"
+msgstr "Nummernkreise"
+
+msgctxt "view:ir.sequence:0"
+msgid "Timestamp"
+msgstr "Zeitstempel"
+
+msgctxt "view:ir.sequence:0"
+msgid "Year:"
+msgstr "Jahr:"
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations"
+msgstr "Ãœbersetzungen bereinigen"
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations?"
+msgstr "Ãœbersetzungen bereinigen?"
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations"
+msgstr "Ãœbersetzungen bereinigen"
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations Succeed!"
+msgstr "Bereinigung der Übersetzungen erfolgreich durchgeführt!"
+
+msgctxt "view:ir.translation.export.init:0"
+msgid "Export Translation"
+msgstr "Ãœbersetzung exportieren"
+
+msgctxt "view:ir.translation.export.start:0"
+msgid "Export Translation"
+msgstr "Ãœbersetzung exportieren"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Set Report Translations"
+msgstr "Übersetzungen für Berichte aktualisieren"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Synchronize Report Translations?"
+msgstr "Übersetzungen für Berichte synchronisieren?"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Update Report Translations?"
+msgstr "Übersetzungen für Berichte aktualisieren?"
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Report Translations"
+msgstr "Übersetzungen für Berichte übernehmen"
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Translations Succeed!"
+msgstr "Übersetzungen erfolgreich übernommen!"
+
+msgctxt "view:ir.translation.update.init:0"
+msgid "Synchronize Translations"
+msgstr "Ãœbersetzungen synchronisieren"
+
+msgctxt "view:ir.translation.update.init:0"
+msgid "Update Translations"
+msgstr "Ãœbersetzungen aktualisieren"
+
+msgctxt "view:ir.translation:0"
+msgid "Translations"
+msgstr "Ãœbersetzungen"
+
+msgctxt "view:ir.trigger:0"
+msgid "Trigger"
+msgstr "Trigger"
+
+msgctxt "view:ir.trigger:0"
+msgid "Triggers"
+msgstr "Trigger"
+
+msgctxt "view:ir.ui.icon:0"
+msgid "Icon"
+msgstr "Symbol"
+
+msgctxt "view:ir.ui.icon:0"
+msgid "Icons"
+msgstr "Symbole"
+
+msgctxt "view:ir.ui.menu:0"
+msgid "Menu"
+msgstr "Menü"
+
+msgctxt "view:ir.ui.view:0"
+msgid "View"
+msgstr "Sicht"
+
+msgctxt "view:ir.ui.view:0"
+msgid "_Show"
+msgstr "_Anzeigen"
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcut"
+msgstr "Favorit"
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcuts"
+msgstr "Favoriten"
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "View Tree Expanded State"
+msgstr "Baumansicht aufgeklappt"
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "Views Tree Expanded State"
+msgstr "Baumansichten aufgeklappt"
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "View Tree Width"
+msgstr "Spaltenbreiten Sicht"
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "Views Tree Width"
+msgstr "Spaltenbreiten Sichten"
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,end:0"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,print:0"
+msgid "Print"
+msgstr "Drucken"
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,end:0"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,wizard:0"
+msgid "Ok"
+msgstr "OK"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,end:0"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,start:0"
+msgid "Start Upgrade"
+msgstr "Aktualisierung starten"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,start,config:0"
+msgid "Ok"
+msgstr "OK"
+
+msgctxt "wizard_button:ir.translation.clean,init,end:0"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:ir.translation.clean,init,start:0"
+msgid "Start"
+msgstr "Start"
+
+msgctxt "wizard_button:ir.translation.clean,start,end:0"
+msgid "Ok"
+msgstr "OK"
+
+msgctxt "wizard_button:ir.translation.export,init,end:0"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:ir.translation.export,init,start:0"
+msgid "Start Export"
+msgstr "Export starten"
+
+msgctxt "wizard_button:ir.translation.export,start,end:0"
+msgid "Close"
+msgstr "Schließen"
+
+msgctxt "wizard_button:ir.translation.set_report,init,end:0"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:ir.translation.set_report,init,start:0"
+msgid "Start Update"
+msgstr "Aktualisierung starten"
+
+msgctxt "wizard_button:ir.translation.set_report,start,end:0"
+msgid "Ok"
+msgstr "OK"
+
+msgctxt "wizard_button:ir.translation.update,init,end:0"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:ir.translation.update,init,start:0"
+msgid "Start Update"
+msgstr "Aktualisierung starten"
+
+msgctxt "wizard_button:ir.ui.view.show,init,end:0"
+msgid "Close"
+msgstr "Schließen"
diff --git a/trytond/ir/locale/es_CO.po b/trytond/ir/locale/es_CO.po
new file mode 100644
index 0000000..c48cb48
--- /dev/null
+++ b/trytond/ir/locale/es_CO.po
@@ -0,0 +1,2860 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:access_error:0"
+msgid ""
+"You try to bypass an access rule!\n"
+"(Document type: %s)"
+msgstr "¡Está intentando sobrepasar una regla de acceso!"
+
+msgctxt "error:delete_workflow_record:0"
+msgid "You cannot delete a record with a running workflow."
+msgstr "No puede borrar un registro involucrado en un flujo activo."
+
+msgctxt "error:delete_xml_record:0"
+msgid "You are not allowed to delete this record."
+msgstr "No esta autorizado a eliminar este registro."
+
+msgctxt "error:digits_validation_record:0"
+msgid "The field \"%s\" on \"%s\" has too many decimal digits."
+msgstr "El campo \"%s\" en \"%s\" tiene muchos dígitos decimales."
+
+msgctxt "error:domain_validation_record:0"
+msgid "The value of the field \"%s\" on \"%s\" is not valid according to its domain."
+msgstr "El valor del campo \"%s\" en \"%s no es válido "
+
+msgctxt "error:foreign_model_exist:0"
+msgid "Could not delete \"%s\" records because they are used on field \"%s\" of \"%s\"."
+msgstr "No se pudo borrar \"%s\" regisros porque se usan en el campo \"%s\" de \"%s\"."
+
+msgctxt "error:foreign_model_missing:0"
+msgid "The value of field \"%s\" on \"%s\" doesn't exist."
+msgstr "El valor del campo \"%s\" no existe."
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid context!"
+msgstr "¡Contexto inválido!"
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid domain or search criteria!"
+msgstr ""
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid views!"
+msgstr ""
+
+msgctxt "error:ir.action.keyword:0"
+msgid "Wrong wizard model!"
+msgstr "¡Modelo de asistente erróneo!"
+
+msgctxt "error:ir.action.report:0"
+msgid "The internal name must be unique by module!"
+msgstr "¡El nombre interno de los módulos debe ser único!"
+
+msgctxt "error:ir.attachment:0"
+msgid "The  names of attachments must be unique by resource!"
+msgstr "¡Los nombres por recurso de adjuntos deben ser unicos!"
+
+msgctxt "error:ir.cron:0"
+msgid "Scheduled action failed"
+msgstr "La acción agendada falló"
+
+msgctxt "error:ir.cron:0"
+msgid ""
+"The following action failed to execute properly: \"%s\"\n"
+" Traceback: \n"
+"\n"
+"%s\n"
+msgstr ""
+"La siguiente acción no se ejecutó correctamente: \"%s\"\n"
+" Traza:\n"
+"\n"
+"%s\n"
+
+msgctxt "error:ir.lang:0"
+msgid "Invalid Grouping!"
+msgstr "Agrupamiento Inválido!"
+
+msgctxt "error:ir.lang:0"
+msgid "The date format is not valid!"
+msgstr "El formato de fecha no es válido!"
+
+msgctxt "error:ir.lang:0"
+msgid "decimal_point and thousands_sep must be different!"
+msgstr "El punto_decimal y el separador_de_miles NO pueden coincidir!"
+
+msgctxt "error:ir.model.access:0"
+msgid "Only one record by model and group is allowed!"
+msgstr "Sólo se permite un registro por modelo y grupo!"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not create this kind of document! (%s)"
+msgstr "No puede crear esta clase de documento! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not delete this document! (%s)"
+msgstr "No puede borrar este documento! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not read this document! (%s)"
+msgstr "No puede leer este documento! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not write in this document! (%s)"
+msgstr "No puede escribir en este documento! (%s)"
+
+msgctxt "error:ir.model.data:0"
+msgid "The triple (fs_id, module, model) must be unique!"
+msgstr "La tripla(fs_id, módulo, modelo) debe ser única!"
+
+msgctxt "error:ir.model.field.access:0"
+msgid "Only one record by field and group is allowed!"
+msgstr ""
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not read the field! (%s.%s)"
+msgstr ""
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not write on the field! (%s.%s)"
+msgstr ""
+
+msgctxt "error:ir.model.field:0"
+msgid "Model Field Name must be a python identifier!"
+msgstr "El campo del Nombre del Modelo debe ser un identificador de Python!"
+
+msgctxt "error:ir.model.field:0"
+msgid "The field name in model must be unique!"
+msgstr "El nombre del campo en el modelo debe ser único!"
+
+msgctxt "error:ir.model:0"
+msgid "Module Name must be a python identifier!"
+msgstr "El Nombre del Módulo debe ser un identificador de Python!"
+
+msgctxt "error:ir.model:0"
+msgid "The model must be unique!"
+msgstr "El modelo debe ser único!"
+
+msgctxt "error:ir.module.module.dependency:0"
+msgid "Dependency must be unique by module!"
+msgstr "¡Las dependencias por módulo deben ser únicas!"
+
+msgctxt "error:ir.module.module:0"
+msgid "Missing dependencies %s for module \"%s\""
+msgstr "Dependencias faltantes %s para el módulo \"%s\""
+
+msgctxt "error:ir.module.module:0"
+msgid "The modules you are trying to uninstall depends on installed modules:"
+msgstr ""
+"Los módulos que está tratando de desinstalar dependen de módulos instalados:"
+
+msgctxt "error:ir.module.module:0"
+msgid "The name of the module must be unique!"
+msgstr "El nombre del módulo debe ser único!"
+
+msgctxt "error:ir.module.module:0"
+msgid "You can not remove a module that is installed or will be installed"
+msgstr ""
+"No puede eliminar un módulo que está instalado o que va a ser instalado"
+
+msgctxt "error:ir.rule.group:0"
+msgid "Global and Default are mutually exclusive!"
+msgstr "Global y Predeterminado son mutuamente excluyentes!"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Invalid prefix/suffix!"
+msgstr "prefijo/sufijo inválidos!"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Last Timestamp could not be in future!"
+msgstr ""
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Missing sequence!"
+msgstr "Falta la secuencia!"
+
+msgctxt "error:ir.sequence:0"
+msgid "Invalid prefix/suffix!"
+msgstr "prefijo/sufijo inválidos!"
+
+msgctxt "error:ir.sequence:0"
+msgid "Last Timestamp could not be in future!"
+msgstr ""
+
+msgctxt "error:ir.sequence:0"
+msgid "Missing sequence!"
+msgstr "Falta la secuencia!"
+
+msgctxt "error:ir.translation:0"
+msgid "Translation must be unique"
+msgstr "La traducción debe ser única"
+
+msgctxt "error:ir.trigger:0"
+msgid "\"On Time\" and others are mutually exclusive!"
+msgstr ""
+
+msgctxt "error:ir.trigger:0"
+msgid "Condition must be a python expression!"
+msgstr ""
+
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not create recursive menu!"
+msgstr ""
+
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not use \" / \" in name field!"
+msgstr ""
+
+msgctxt "error:ir.ui.view.show:0"
+msgid "Only \"form\" view can be shown!"
+msgstr ""
+
+msgctxt "error:ir.ui.view:0"
+msgid "Invalid XML for View!"
+msgstr "XML inválido para la Vista!"
+
+msgctxt "error:not_found_in_selection:0"
+msgid "Key %r not found in selection field %r"
+msgstr "No encontró la llave %r en el campo seleccionado %r"
+
+msgctxt "error:read_error:0"
+msgid ""
+"You try to read records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr "¡Está intentando leer registros que ya no existen!"
+
+msgctxt "error:reference_syntax_error:0"
+msgid "Syntax error for reference %r in %s"
+msgstr "Error de sintaxis para la referencia %r en %s"
+
+msgctxt "error:relation_not_found:0"
+msgid "Relation not found: %r in %s"
+msgstr "Relación no encontrada: %r en %s"
+
+msgctxt "error:required_field:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr "Se requiere el campo \"%s\" en \"%s\"."
+
+msgctxt "error:required_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr "Se requiere el campo \"%s\" en \"%s\"."
+
+msgctxt "error:search_function_missing:0"
+msgid "Missing search function on field \"%s\"."
+msgstr "Búsqueda faltante en el campo \"%s\"."
+
+msgctxt "error:size_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is too long."
+msgstr "El campo \"%s\" en \"%s\" es demasiado largo."
+
+msgctxt "error:too_many_relations_found:0"
+msgid "Too many relations found: %r in %s"
+msgstr "Muchas relaciones encontradas: %r en %s"
+
+msgctxt "error:write_error:0"
+msgid ""
+"You try to write on records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr "¡Está tratando de escribir registros que ya no existen!"
+
+msgctxt "error:write_xml_record:0"
+msgid "You are not allowed to modify this record."
+msgstr "No esta autorizado para modificar este registro."
+
+msgctxt "error:xml_id_syntax_error:0"
+msgid "Syntax error for XML id %r in %s"
+msgstr "Error de sintaxis para el id XML %r en %s"
+
+msgctxt "error:xml_record_desc:0"
+msgid "This record is part of the base configuration."
+msgstr "Este registro es parte de la configuración base."
+
+msgctxt "field:ir.action,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:ir.action,groups:0"
+msgid "Groups"
+msgstr "Grupos"
+
+#, fuzzy
+msgctxt "field:ir.action,icon:0"
+msgid "Icon"
+msgstr "Ícono"
+
+msgctxt "field:ir.action,keywords:0"
+msgid "Keywords"
+msgstr "Palabras Clave"
+
+msgctxt "field:ir.action,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:ir.action,usage:0"
+msgid "Usage"
+msgstr "Uso"
+
+msgctxt "field:ir.action.act_window,act_window_views:0"
+msgid "Views"
+msgstr "Vistas"
+
+msgctxt "field:ir.action.act_window,action:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "field:ir.action.act_window,auto_refresh:0"
+msgid "Auto-Refresh"
+msgstr "Auto-Refrescar"
+
+msgctxt "field:ir.action.act_window,context:0"
+msgid "Context Value"
+msgstr "Valor en Contexto"
+
+msgctxt "field:ir.action.act_window,domain:0"
+msgid "Domain Value"
+msgstr "Valor de Dominio"
+
+msgctxt "field:ir.action.act_window,limit:0"
+msgid "Limit"
+msgstr "Límite"
+
+msgctxt "field:ir.action.act_window,pyson_context:0"
+msgid "PySON Context"
+msgstr "Contexto PySON"
+
+msgctxt "field:ir.action.act_window,pyson_domain:0"
+msgid "PySON Domain"
+msgstr "Dominio de PySON"
+
+msgctxt "field:ir.action.act_window,pyson_search_value:0"
+msgid "PySON Search Criteria"
+msgstr "Criterio de búsqueda de PySON"
+
+msgctxt "field:ir.action.act_window,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action.act_window,res_model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.action.act_window,search_value:0"
+msgid "Search Criteria"
+msgstr "Criterio de Búsqueda"
+
+msgctxt "field:ir.action.act_window,views:0"
+msgid "Views"
+msgstr "Vistas"
+
+msgctxt "field:ir.action.act_window,window_name:0"
+msgid "Window Name"
+msgstr "Nombre de Ventana"
+
+msgctxt "field:ir.action.act_window.view,act_window:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "field:ir.action.act_window.view,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action.act_window.view,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:ir.action.act_window.view,view:0"
+msgid "View"
+msgstr "Vista"
+
+msgctxt "field:ir.action.keyword,action:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "field:ir.action.keyword,keyword:0"
+msgid "Keyword"
+msgstr "Palabra Clave"
+
+msgctxt "field:ir.action.keyword,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.action.keyword,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action.report,action:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "field:ir.action.report,direct_print:0"
+msgid "Direct Print"
+msgstr "Impresión Directa"
+
+msgctxt "field:ir.action.report,email:0"
+msgid "Email"
+msgstr "Correo Electrónico"
+
+msgctxt "field:ir.action.report,extension:0"
+msgid "Extension"
+msgstr "Extensión"
+
+msgctxt "field:ir.action.report,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.action.report,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.action.report,pyson_email:0"
+msgid "PySON Email"
+msgstr ""
+
+msgctxt "field:ir.action.report,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action.report,report:0"
+msgid "Path"
+msgstr "Camino"
+
+msgctxt "field:ir.action.report,report_content:0"
+msgid "Content"
+msgstr "Contenido"
+
+#, fuzzy
+msgctxt "field:ir.action.report,report_content_custom:0"
+msgid "Content"
+msgstr "Contenido"
+
+msgctxt "field:ir.action.report,report_name:0"
+msgid "Internal Name"
+msgstr "Número Interno"
+
+msgctxt "field:ir.action.report,style:0"
+msgid "Style"
+msgstr "Estilo"
+
+msgctxt "field:ir.action.report,style_content:0"
+msgid "Style"
+msgstr "Estilo"
+
+msgctxt "field:ir.action.report,template_extension:0"
+msgid "Template Extension"
+msgstr ""
+
+msgctxt "field:ir.action.url,action:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "field:ir.action.url,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action.url,url:0"
+msgid "Action Url"
+msgstr "Url de Acción"
+
+msgctxt "field:ir.action.wizard,action:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "field:ir.action.wizard,email:0"
+msgid "Email"
+msgstr "Correo Electrónico"
+
+msgctxt "field:ir.action.wizard,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.action.wizard,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action.wizard,window:0"
+msgid "Window"
+msgstr ""
+
+msgctxt "field:ir.action.wizard,wiz_name:0"
+msgid "Wizard name"
+msgstr "Nombre del Asistente"
+
+msgctxt "field:ir.attachment,collision:0"
+msgid "Collision"
+msgstr "Colisión"
+
+msgctxt "field:ir.attachment,data:0"
+msgid "Data"
+msgstr ""
+
+msgctxt "field:ir.attachment,data_size:0"
+msgid "Data size"
+msgstr ""
+
+msgctxt "field:ir.attachment,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:ir.attachment,digest:0"
+msgid "Digest"
+msgstr "Resumen"
+
+msgctxt "field:ir.attachment,last_modification:0"
+msgid "Last Modification"
+msgstr ""
+
+msgctxt "field:ir.attachment,last_user:0"
+msgid "Last User"
+msgstr ""
+
+msgctxt "field:ir.attachment,link:0"
+msgid "Link"
+msgstr "Enlace"
+
+#, fuzzy
+msgctxt "field:ir.attachment,name:0"
+msgid "Name"
+msgstr "Nombre de Adjunto"
+
+msgctxt "field:ir.attachment,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+#, fuzzy
+msgctxt "field:ir.attachment,resource:0"
+msgid "Resource"
+msgstr "Recurso"
+
+#, fuzzy
+msgctxt "field:ir.attachment,summary:0"
+msgid "Summary"
+msgstr "Resumen"
+
+#, fuzzy
+msgctxt "field:ir.attachment,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:ir.cache,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.cache,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.cache,timestamp:0"
+msgid "Timestamp"
+msgstr "Estampa de Tiempo"
+
+msgctxt "field:ir.cron,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:ir.cron,args:0"
+msgid "Arguments"
+msgstr "Argumentos"
+
+msgctxt "field:ir.cron,function:0"
+msgid "Function"
+msgstr "Función"
+
+msgctxt "field:ir.cron,interval_number:0"
+msgid "Interval Number"
+msgstr "Número de Intervalo"
+
+msgctxt "field:ir.cron,interval_type:0"
+msgid "Interval Unit"
+msgstr "Unidad de Intervalo"
+
+msgctxt "field:ir.cron,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.cron,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.cron,next_call:0"
+msgid "Next Call"
+msgstr ""
+
+msgctxt "field:ir.cron,number_calls:0"
+msgid "Number of Calls"
+msgstr ""
+
+msgctxt "field:ir.cron,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.cron,repeat_missed:0"
+msgid "Repeat Missed"
+msgstr ""
+
+msgctxt "field:ir.cron,request_user:0"
+msgid "Request User"
+msgstr "Solicitante"
+
+msgctxt "field:ir.cron,user:0"
+msgid "Execution User"
+msgstr "Usuario que Ejecuta"
+
+msgctxt "field:ir.export,export_fields:0"
+msgid "Fields"
+msgstr "Campos"
+
+msgctxt "field:ir.export,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.export,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.export,resource:0"
+msgid "Resource"
+msgstr "Recurso"
+
+msgctxt "field:ir.export.line,export:0"
+msgid "Export"
+msgstr "Exportación"
+
+msgctxt "field:ir.export.line,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.export.line,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.lang,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:ir.lang,code:0"
+msgid "Code"
+msgstr "Código"
+
+msgctxt "field:ir.lang,date:0"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:ir.lang,decimal_point:0"
+msgid "Decimal Separator"
+msgstr "Separador Decimal"
+
+msgctxt "field:ir.lang,direction:0"
+msgid "Direction"
+msgstr "Dirección"
+
+msgctxt "field:ir.lang,grouping:0"
+msgid "Grouping"
+msgstr "Grupo"
+
+msgctxt "field:ir.lang,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.lang,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.lang,thousands_sep:0"
+msgid "Thousands Separator"
+msgstr "Separador de Miles"
+
+msgctxt "field:ir.lang,translatable:0"
+msgid "Translatable"
+msgstr "Traducible"
+
+msgctxt "field:ir.model,fields:0"
+msgid "Fields"
+msgstr "Campos"
+
+msgctxt "field:ir.model,info:0"
+msgid "Information"
+msgstr "Información"
+
+msgctxt "field:ir.model,model:0"
+msgid "Model Name"
+msgstr "Nombre del Modelo"
+
+msgctxt "field:ir.model,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.model,name:0"
+msgid "Model Description"
+msgstr "Descripción del Modelo"
+
+msgctxt "field:ir.model,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.model.access,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:ir.model.access,group:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "field:ir.model.access,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.model.access,perm_create:0"
+msgid "Create Access"
+msgstr "Crear Acceso"
+
+msgctxt "field:ir.model.access,perm_delete:0"
+msgid "Delete Access"
+msgstr "Permiso para Eliminar"
+
+msgctxt "field:ir.model.access,perm_read:0"
+msgid "Read Access"
+msgstr "Acceso de Lectura"
+
+msgctxt "field:ir.model.access,perm_write:0"
+msgid "Write Access"
+msgstr "Acceso de Escritura"
+
+msgctxt "field:ir.model.access,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.model.data,date_init:0"
+msgid "Init Date"
+msgstr "Fecha Inicial"
+
+msgctxt "field:ir.model.data,date_update:0"
+msgid "Update Date"
+msgstr "Fecha de Actualización"
+
+msgctxt "field:ir.model.data,db_id:0"
+msgid "Resource ID"
+msgstr "ID del Recurso"
+
+msgctxt "field:ir.model.data,fs_id:0"
+msgid "Identifier on File System"
+msgstr "Identificador en el Sistema de Archivos"
+
+msgctxt "field:ir.model.data,inherit:0"
+msgid "Inherit"
+msgstr "Hereda"
+
+msgctxt "field:ir.model.data,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.model.data,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.model.data,noupdate:0"
+msgid "No Update"
+msgstr "No Actualizar"
+
+msgctxt "field:ir.model.data,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.model.data,values:0"
+msgid "Values"
+msgstr "Valores"
+
+msgctxt "field:ir.model.field,field_description:0"
+msgid "Field Description"
+msgstr "Descripción del Campo"
+
+msgctxt "field:ir.model.field,groups:0"
+msgid "Groups"
+msgstr "Grupos"
+
+msgctxt "field:ir.model.field,help:0"
+msgid "Help"
+msgstr "Ayuda"
+
+msgctxt "field:ir.model.field,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.model.field,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.model.field,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.model.field,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.model.field,relation:0"
+msgid "Model Relation"
+msgstr "Relación con Modelo"
+
+msgctxt "field:ir.model.field,ttype:0"
+msgid "Field Type"
+msgstr "Tipo de Campo"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,field:0"
+msgid "Field"
+msgstr "Campo"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,group:0"
+msgid "Group"
+msgstr "Grupo"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,perm_read:0"
+msgid "Read Access"
+msgstr "Permiso de Lectura"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,perm_write:0"
+msgid "Write Access"
+msgstr "Permiso de Escritura"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,rec_name:0"
+msgid "Name"
+msgstr "Nombre de Contacto"
+
+msgctxt "field:ir.model.print_model_graph.init,filter:0"
+msgid "Filter"
+msgstr "Filtro"
+
+msgctxt "field:ir.model.print_model_graph.init,level:0"
+msgid "Level"
+msgstr "Nivel"
+
+msgctxt "field:ir.module.module,author:0"
+msgid "Author"
+msgstr "Autor"
+
+msgctxt "field:ir.module.module,dependencies:0"
+msgid "Dependencies"
+msgstr "Dependencias"
+
+msgctxt "field:ir.module.module,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:ir.module.module,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.module.module,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.module.module,shortdesc:0"
+msgid "Short description"
+msgstr "Descripción Corta"
+
+msgctxt "field:ir.module.module,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:ir.module.module,version:0"
+msgid "Version"
+msgstr "Versión"
+
+msgctxt "field:ir.module.module,website:0"
+msgid "Website"
+msgstr "Sitio Web"
+
+msgctxt "field:ir.module.module.config_wizard.item,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.module.module.config_wizard.item,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.module.module.config_wizard.item,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:ir.module.module.config_wizard.item,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:ir.module.module.dependency,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.module.module.dependency,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.module.module.dependency,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.module.module.dependency,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:ir.module.module.install_upgrade.init,module_info:0"
+msgid "Modules to update"
+msgstr "Módulos a actualizar"
+
+msgctxt "field:ir.property,field:0"
+msgid "Field"
+msgstr "Campo"
+
+msgctxt "field:ir.property,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.property,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.property,res:0"
+msgid "Resource"
+msgstr "Recurso"
+
+msgctxt "field:ir.property,value:0"
+msgid "Value"
+msgstr "Valor"
+
+msgctxt "field:ir.rule,field:0"
+msgid "Field"
+msgstr "Campo"
+
+msgctxt "field:ir.rule,operand:0"
+msgid "Operand"
+msgstr "Operando"
+
+msgctxt "field:ir.rule,operator:0"
+msgid "Operator"
+msgstr "Operador"
+
+msgctxt "field:ir.rule,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.rule,rule_group:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "field:ir.rule.group,default_p:0"
+msgid "Default"
+msgstr "Predeterminado"
+
+msgctxt "field:ir.rule.group,global_p:0"
+msgid "Global"
+msgstr "Global"
+
+msgctxt "field:ir.rule.group,groups:0"
+msgid "Groups"
+msgstr "Grupos"
+
+msgctxt "field:ir.rule.group,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.rule.group,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.rule.group,perm_create:0"
+msgid "Create Access"
+msgstr "Permiso para Crear"
+
+msgctxt "field:ir.rule.group,perm_delete:0"
+msgid "Delete Access"
+msgstr "Permiso para Eliminar"
+
+msgctxt "field:ir.rule.group,perm_read:0"
+msgid "Read Access"
+msgstr "Permiso de Lectura"
+
+msgctxt "field:ir.rule.group,perm_write:0"
+msgid "Write Access"
+msgstr "Permiso de Escritura"
+
+msgctxt "field:ir.rule.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.rule.group,rules:0"
+msgid "Tests"
+msgstr "Pruebas"
+
+msgctxt "field:ir.rule.group,users:0"
+msgid "Users"
+msgstr "Usuarios"
+
+msgctxt "field:ir.sequence,active:0"
+msgid "Active"
+msgstr "Activo"
+
+#, fuzzy
+msgctxt "field:ir.sequence,code:0"
+msgid "Sequence Code"
+msgstr "Tipo de Secuencia"
+
+msgctxt "field:ir.sequence,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr ""
+
+msgctxt "field:ir.sequence,name:0"
+msgid "Sequence Name"
+msgstr "Nombre de Secuencia"
+
+msgctxt "field:ir.sequence,number_increment:0"
+msgid "Increment Number"
+msgstr "Número de Incremento"
+
+msgctxt "field:ir.sequence,number_next:0"
+msgid "Next Number"
+msgstr "Próximo Número"
+
+#, fuzzy
+msgctxt "field:ir.sequence,number_next_internal:0"
+msgid "Next Number"
+msgstr "Próximo Número"
+
+msgctxt "field:ir.sequence,padding:0"
+msgid "Number padding"
+msgstr "Cantidad de corrimiento"
+
+msgctxt "field:ir.sequence,prefix:0"
+msgid "Prefix"
+msgstr "Prefijo"
+
+msgctxt "field:ir.sequence,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.sequence,suffix:0"
+msgid "Suffix"
+msgstr "Sufijo"
+
+msgctxt "field:ir.sequence,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr ""
+
+msgctxt "field:ir.sequence,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.sequence,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:ir.sequence.strict,active:0"
+msgid "Active"
+msgstr "Activo"
+
+#, fuzzy
+msgctxt "field:ir.sequence.strict,code:0"
+msgid "Sequence Code"
+msgstr "Tipo de Secuencia"
+
+msgctxt "field:ir.sequence.strict,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,name:0"
+msgid "Sequence Name"
+msgstr "Nombre de Secuencia"
+
+msgctxt "field:ir.sequence.strict,number_increment:0"
+msgid "Increment Number"
+msgstr "Número de Incremento"
+
+msgctxt "field:ir.sequence.strict,number_next:0"
+msgid "Next Number"
+msgstr "Próximo Número"
+
+#, fuzzy
+msgctxt "field:ir.sequence.strict,number_next_internal:0"
+msgid "Next Number"
+msgstr "Próximo Número"
+
+msgctxt "field:ir.sequence.strict,padding:0"
+msgid "Number padding"
+msgstr "Cantidad de corrimiento"
+
+msgctxt "field:ir.sequence.strict,prefix:0"
+msgid "Prefix"
+msgstr "Prefijo"
+
+msgctxt "field:ir.sequence.strict,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.sequence.strict,suffix:0"
+msgid "Suffix"
+msgstr "Sufijo"
+
+msgctxt "field:ir.sequence.strict,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.sequence.strict,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:ir.sequence.type,code:0"
+msgid "Sequence Code"
+msgstr "Secuencia"
+
+msgctxt "field:ir.sequence.type,name:0"
+msgid "Sequence Name"
+msgstr "Nombre de Secuencia"
+
+msgctxt "field:ir.sequence.type,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.translation,fuzzy:0"
+msgid "Fuzzy"
+msgstr "Por Revisar"
+
+msgctxt "field:ir.translation,lang:0"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "field:ir.translation,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.translation,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.translation,name:0"
+msgid "Field Name"
+msgstr "Nombre del Campo"
+
+msgctxt "field:ir.translation,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.translation,res_id:0"
+msgid "Resource ID"
+msgstr "ID del Recurso"
+
+msgctxt "field:ir.translation,src:0"
+msgid "Source"
+msgstr "Fuente"
+
+msgctxt "field:ir.translation,src_md5:0"
+msgid "Source MD5"
+msgstr ""
+
+msgctxt "field:ir.translation,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:ir.translation,value:0"
+msgid "Translation Value"
+msgstr "Valor de Traducción"
+
+msgctxt "field:ir.translation.export.init,lang:0"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "field:ir.translation.export.init,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.translation.export.start,file:0"
+msgid "File"
+msgstr "Archivo"
+
+msgctxt "field:ir.translation.update.init,lang:0"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "field:ir.trigger,action_function:0"
+msgid "Action Function"
+msgstr ""
+
+msgctxt "field:ir.trigger,action_model:0"
+msgid "Action Model"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.trigger,active:0"
+msgid "Active"
+msgstr "Activo"
+
+#, fuzzy
+msgctxt "field:ir.trigger,condition:0"
+msgid "Condition"
+msgstr "Condición"
+
+msgctxt "field:ir.trigger,limit_number:0"
+msgid "Limit Number"
+msgstr ""
+
+msgctxt "field:ir.trigger,minimum_delay:0"
+msgid "Minimum Delay"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.trigger,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+#, fuzzy
+msgctxt "field:ir.trigger,name:0"
+msgid "Name"
+msgstr "Nombre de Contacto"
+
+#, fuzzy
+msgctxt "field:ir.trigger,on_create:0"
+msgid "On Create"
+msgstr "Al Crear"
+
+msgctxt "field:ir.trigger,on_delete:0"
+msgid "On Delete"
+msgstr ""
+
+msgctxt "field:ir.trigger,on_time:0"
+msgid "On Time"
+msgstr ""
+
+msgctxt "field:ir.trigger,on_write:0"
+msgid "On Write"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.trigger,rec_name:0"
+msgid "Name"
+msgstr "Nombre de Contacto"
+
+#, fuzzy
+msgctxt "field:ir.trigger.log,rec_name:0"
+msgid "Name"
+msgstr "Nombre de Contacto"
+
+msgctxt "field:ir.trigger.log,record_id:0"
+msgid "Record ID"
+msgstr ""
+
+msgctxt "field:ir.trigger.log,trigger:0"
+msgid "Trigger"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,icon:0"
+msgid "Icon"
+msgstr "Ícono"
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,name:0"
+msgid "Name"
+msgstr "Nombre de Contacto"
+
+msgctxt "field:ir.ui.icon,path:0"
+msgid "SVG Path"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,rec_name:0"
+msgid "Name"
+msgstr "Nombre de Contacto"
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:ir.ui.menu,action:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "field:ir.ui.menu,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:ir.ui.menu,childs:0"
+msgid "Children"
+msgstr "Hij at s"
+
+msgctxt "field:ir.ui.menu,complete_name:0"
+msgid "Complete Name"
+msgstr "Nombre Completo"
+
+msgctxt "field:ir.ui.menu,groups:0"
+msgid "Groups"
+msgstr "Grupos"
+
+msgctxt "field:ir.ui.menu,icon:0"
+msgid "Icon"
+msgstr "Ícono"
+
+msgctxt "field:ir.ui.menu,name:0"
+msgid "Menu"
+msgstr "Menú"
+
+msgctxt "field:ir.ui.menu,parent:0"
+msgid "Parent Menu"
+msgstr "Menú Padre"
+
+msgctxt "field:ir.ui.menu,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.ui.menu,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:ir.ui.view,arch:0"
+msgid "View Architecture"
+msgstr "Ver Arquitectura"
+
+msgctxt "field:ir.ui.view,domain:0"
+msgid "Domain"
+msgstr "Dominio"
+
+msgctxt "field:ir.ui.view,field_childs:0"
+msgid "Children Field"
+msgstr "Campos Hijos"
+
+msgctxt "field:ir.ui.view,inherit:0"
+msgid "Inherited View"
+msgstr "Vista heredada"
+
+msgctxt "field:ir.ui.view,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.ui.view,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.ui.view,priority:0"
+msgid "Priority"
+msgstr "Prioridad"
+
+msgctxt "field:ir.ui.view,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.ui.view,type:0"
+msgid "View Type"
+msgstr "Tipo de Vista"
+
+msgctxt "field:ir.ui.view_sc,name:0"
+msgid "Shortcut Name"
+msgstr "Nombre Corto"
+
+msgctxt "field:ir.ui.view_sc,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.ui.view_sc,res_id:0"
+msgid "Resource Ref."
+msgstr "Ref. de Recurso"
+
+msgctxt "field:ir.ui.view_sc,resource:0"
+msgid "Resource Name"
+msgstr "Nombre del Recurso"
+
+msgctxt "field:ir.ui.view_sc,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:ir.ui.view_sc,user_id:0"
+msgid "User Ref."
+msgstr "Ref. de Usuario"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,child_name:0"
+msgid "Child Name"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,domain:0"
+msgid "Domain"
+msgstr "Dominio"
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,nodes:0"
+msgid "Expanded Nodes"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,rec_name:0"
+msgid "Name"
+msgstr "Nombre de Contacto"
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,user:0"
+msgid "User"
+msgstr "Usuario"
+
+msgctxt "field:ir.ui.view_tree_width,field:0"
+msgid "Field"
+msgstr "Campo"
+
+msgctxt "field:ir.ui.view_tree_width,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.ui.view_tree_width,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.ui.view_tree_width,user:0"
+msgid "User"
+msgstr "Usuario"
+
+msgctxt "field:ir.ui.view_tree_width,width:0"
+msgid "Width"
+msgstr "Ancho"
+
+msgctxt "help:ir.action.act_window,auto_refresh:0"
+msgid "Add an auto-refresh on the view"
+msgstr "Adicionar un auto-refresco en la vista"
+
+msgctxt "help:ir.action.act_window,limit:0"
+msgid "Default limit for the list view"
+msgstr "Límite predeterminado para la lista de vista"
+
+msgctxt "help:ir.action.act_window,search_value:0"
+msgid "Default search criteria for the list view"
+msgstr "Criterio de Búsqueda predeterminado para la vista de lista"
+
+msgctxt "help:ir.action.act_window,window_name:0"
+msgid "Use the action name as window name"
+msgstr "Usar el nombre de la acción como el nombre de la ventana"
+
+msgctxt "help:ir.action.report,extension:0"
+msgid ""
+"Leave empty for the same as template, see unoconv documentation for "
+"compatible format"
+msgstr ""
+
+msgctxt "help:ir.action.report,style:0"
+msgid "Define the style to apply on the report."
+msgstr "Definir el estilo para aplicar al reporte."
+
+msgctxt "help:ir.action.wizard,window:0"
+msgid "Run wizard in a new window"
+msgstr ""
+
+msgctxt "help:ir.cron,number_calls:0"
+msgid ""
+"Number of times the function is called, a negative number indicates that the"
+" function will always be called"
+msgstr ""
+
+msgctxt "help:ir.cron,request_user:0"
+msgid "The user who will receive requests in case of failure"
+msgstr "El usuario que recibirá la solicitud en caso de error"
+
+msgctxt "help:ir.cron,user:0"
+msgid "The user used to execute this action"
+msgstr "El usuario que ejecuta esta acción"
+
+msgctxt "help:ir.lang,code:0"
+msgid "RFC 4646 tag: http://tools.ietf.org/html/rfc4646"
+msgstr "RFC 4646 tag: http://tools.ietf.org/html/rfc4646"
+
+msgctxt "help:ir.model,module:0"
+msgid "Module in which this model is defined"
+msgstr "Módulo en el que esta modelo fue definido"
+
+msgctxt "help:ir.model.data,db_id:0"
+msgid "The id of the record in the database."
+msgstr "El id del registro en la base de datos."
+
+msgctxt "help:ir.model.data,fs_id:0"
+msgid "The id of the record as known on the file system."
+msgstr "El id del registro tal como lo conoce el sistema de archivos."
+
+msgctxt "help:ir.model.field,module:0"
+msgid "Module in which this field is defined"
+msgstr "Módulo en el que este campo fue definido"
+
+msgctxt "help:ir.model.print_model_graph.init,filter:0"
+msgid ""
+"Entering a Python Regular Expression will exclude matching models from the "
+"graph."
+msgstr ""
+"Al usar una expresión regular de Python se excluirá los modelos que "
+"coincidan de la gráfica."
+
+msgctxt "help:ir.rule.group,default_p:0"
+msgid "Add this rule to all users by default"
+msgstr "Añadir esta regla para todos los usuarios de forma predeterminada"
+
+msgctxt "help:ir.rule.group,global_p:0"
+msgid ""
+"Make the rule global \n"
+"so every users must follow this rule"
+msgstr ""
+"Hacer global la regla\n"
+"de tal forma que todo usuario la siga"
+
+msgctxt "help:ir.rule.group,rules:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr "La regla se satisface si por lo menos una condición es Verdadera"
+
+msgctxt "help:ir.trigger,condition:0"
+msgid ""
+"A Python statement evaluated with record represented by \"self\"\n"
+"It triggers the action if true."
+msgstr ""
+
+msgctxt "help:ir.trigger,limit_number:0"
+msgid ""
+"Limit the number of call to \"Action Function\" by records.\n"
+"0 for no limit."
+msgstr ""
+
+msgctxt "help:ir.trigger,minimum_delay:0"
+msgid ""
+"Set a minimum delay in minutes between call to \"Action Function\" for the same record.\n"
+"0 for no delay."
+msgstr ""
+
+msgctxt "model:ir.action,name:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "model:ir.action,name:act_action_act_window_form"
+msgid "Window Actions"
+msgstr "Acciones de Ventana"
+
+msgctxt "model:ir.action,name:act_action_form"
+msgid "Actions"
+msgstr "Acciones"
+
+msgctxt "model:ir.action,name:act_action_report_form"
+msgid "Reports"
+msgstr "Reportes"
+
+msgctxt "model:ir.action,name:act_action_url_form"
+msgid "URLs"
+msgstr "URLs"
+
+msgctxt "model:ir.action,name:act_action_wizard_form"
+msgid "Wizards"
+msgstr "Asistentes"
+
+msgctxt "model:ir.action,name:act_attachment_form"
+msgid "Attachments"
+msgstr "Adjuntos"
+
+msgctxt "model:ir.action,name:act_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr "Configurar los elementos del Asistente"
+
+msgctxt "model:ir.action,name:act_cron_form"
+msgid "Scheduled Actions"
+msgstr "Acciones agendadas"
+
+msgctxt "model:ir.action,name:act_export_form"
+msgid "Exports"
+msgstr "Exportes"
+
+msgctxt "model:ir.action,name:act_icon_form"
+msgid "Icons"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_lang_form"
+msgid "Languages"
+msgstr "Idiomas"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_menu_list"
+msgid "Menu"
+msgstr "Menú"
+
+msgctxt "model:ir.action,name:act_menu_tree"
+msgid "Menu"
+msgstr "Menú"
+
+msgctxt "model:ir.action,name:act_model_access_form"
+msgid "Models Access"
+msgstr "Acceso a los Modelos"
+
+msgctxt "model:ir.action,name:act_model_field_access_form"
+msgid "Fields Access"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_model_fields_form"
+msgid "Fields"
+msgstr "Campos"
+
+msgctxt "model:ir.action,name:act_model_form"
+msgid "Models"
+msgstr "Modelos"
+
+msgctxt "model:ir.action,name:act_module_config_wizard"
+msgid "Module Configuration"
+msgstr "Configuración de Módulo"
+
+msgctxt "model:ir.action,name:act_module_form"
+msgid "Modules"
+msgstr "Módulos"
+
+msgctxt "model:ir.action,name:act_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr "Aplicar Instalaciones/Actualizaciones Pendientes"
+
+msgctxt "model:ir.action,name:act_property_form"
+msgid "Properties"
+msgstr "Propiedades"
+
+msgctxt "model:ir.action,name:act_property_form_default"
+msgid "Default Properties"
+msgstr "Propiedades predeterminadas"
+
+msgctxt "model:ir.action,name:act_rule_group_form"
+msgid "Record Rules"
+msgstr "Grabar reglas"
+
+msgctxt "model:ir.action,name:act_sequence_form"
+msgid "Sequences"
+msgstr "Secuencias"
+
+msgctxt "model:ir.action,name:act_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr "Secuencias Estrictas"
+
+msgctxt "model:ir.action,name:act_sequence_type_form"
+msgid "Sequence Types"
+msgstr "Tipos de Secuencia"
+
+msgctxt "model:ir.action,name:act_translation_clean"
+msgid "Clean Translations"
+msgstr "Limpiar Traducciones"
+
+msgctxt "model:ir.action,name:act_translation_export"
+msgid "Export Translations"
+msgstr "Exportar Traducciones"
+
+msgctxt "model:ir.action,name:act_translation_form"
+msgid "Translations"
+msgstr "Traducciones"
+
+msgctxt "model:ir.action,name:act_translation_set_report"
+msgid "Set Report Translations"
+msgstr "Establecer Traducciones de Reporte"
+
+msgctxt "model:ir.action,name:act_translation_update"
+msgid "Synchronize Translations"
+msgstr "Actualizar Traducción"
+
+msgctxt "model:ir.action,name:act_trigger_form"
+msgid "Triggers"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_form"
+msgid "Views"
+msgstr "Vistas"
+
+msgctxt "model:ir.action,name:act_view_sc_add"
+msgid "Add Shortcut"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_sc_form"
+msgid "View Shortcuts"
+msgstr "Ver Atajos"
+
+msgctxt "model:ir.action,name:act_view_sc_open"
+msgid "Open Shortcut"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_show"
+msgid "Show View"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_tree_width_form"
+msgid "View Tree Width"
+msgstr "Ancho de Vista de Árbol"
+
+msgctxt "model:ir.action,name:print_model_graph"
+msgid "Graph"
+msgstr "Gráfica"
+
+msgctxt "model:ir.action,name:report_model_graph"
+msgid "Graph"
+msgstr "Gráfica"
+
+msgctxt "model:ir.action.act_window,name:0"
+msgid "Action act window"
+msgstr "Ventana de acciones"
+
+msgctxt "model:ir.action.act_window.view,name:0"
+msgid "Action act window view"
+msgstr "Vista de ventana de acción"
+
+msgctxt "model:ir.action.keyword,name:0"
+msgid "Action keyword"
+msgstr "Palabra clave de acción"
+
+msgctxt "model:ir.action.report,name:0"
+msgid "Action report"
+msgstr "Acción de reporte"
+
+msgctxt "model:ir.action.url,name:0"
+msgid "Action URL"
+msgstr "Acción URL"
+
+msgctxt "model:ir.action.wizard,name:0"
+msgid "Action wizard"
+msgstr "Acción de asistente"
+
+msgctxt "model:ir.attachment,name:0"
+msgid "Attachment"
+msgstr "Adjunto"
+
+msgctxt "model:ir.cache,name:0"
+msgid "Cache"
+msgstr "Caché"
+
+msgctxt "model:ir.cron,name:0"
+msgid "Cron"
+msgstr "Cron"
+
+msgctxt "model:ir.date,name:0"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "model:ir.export,name:0"
+msgid "Export"
+msgstr "Exporte"
+
+msgctxt "model:ir.export.line,name:0"
+msgid "Export line"
+msgstr "Exportar línea"
+
+msgctxt "model:ir.lang,name:0"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "model:ir.lang,name:lang_bg"
+msgid "Bulgarian"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_cs"
+msgid "Czech"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_de"
+msgid "German"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_en"
+msgid "English"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_es"
+msgid "Spanish (Spain)"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_es_CO"
+msgid "Spanish (Colombia)"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_fr"
+msgid "French"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_nl"
+msgid "Dutch"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_ru"
+msgid "Russian"
+msgstr "Rus@"
+
+msgctxt "model:ir.model,name:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "model:ir.model.access,name:0"
+msgid "Model access"
+msgstr "Modelo de acceso"
+
+msgctxt "model:ir.model.data,name:0"
+msgid "Model data"
+msgstr "Modelo de dato"
+
+msgctxt "model:ir.model.field,name:0"
+msgid "Model field"
+msgstr "Modelo de campo"
+
+msgctxt "model:ir.model.field.access,name:0"
+msgid "Model Field Access"
+msgstr ""
+
+msgctxt "model:ir.model.print_model_graph.init,name:0"
+msgid "Print Model Graph Init"
+msgstr "Imprime Inicio de Modelo de Gráfica"
+
+msgctxt "model:ir.module.module,name:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "model:ir.module.module.config_wizard.first,name:0"
+msgid "Module Config Wizard First"
+msgstr "Primero configure el Módulo con el Asistente"
+
+msgctxt "model:ir.module.module.config_wizard.item,name:0"
+msgid "Config wizard to run after installing module"
+msgstr ""
+"Configure el asistente a ejecutar después de la instalación del módulo"
+
+msgctxt "model:ir.module.module.dependency,name:0"
+msgid "Module dependency"
+msgstr "Dependencia del módulo"
+
+msgctxt "model:ir.module.module.install_upgrade.init,name:0"
+msgid "Module Install Upgrade Init"
+msgstr "Inicio de actualización de Instalación del Módulo"
+
+msgctxt "model:ir.module.module.install_upgrade.start,name:0"
+msgid "Module Install Upgrade Start"
+msgstr "Comienzo de actualización de Instalación del Módulo"
+
+msgctxt "model:ir.property,name:0"
+msgid "Property"
+msgstr "Propiedad"
+
+msgctxt "model:ir.rule,name:0"
+msgid "Rule"
+msgstr "Regla"
+
+msgctxt "model:ir.rule.group,name:0"
+msgid "Rule group"
+msgstr "Regla de grupo"
+
+msgctxt "model:ir.sequence,name:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "model:ir.sequence.strict,name:0"
+msgid "Sequence Strict"
+msgstr "Secuencia Estricta"
+
+msgctxt "model:ir.sequence.type,name:0"
+msgid "Sequence type"
+msgstr "Secuencia tipo"
+
+msgctxt "model:ir.translation,name:0"
+msgid "Translation"
+msgstr "Traducción"
+
+msgctxt "model:ir.translation.clean.init,name:0"
+msgid "Clean translation init"
+msgstr "Inicio de limpieza de traducción"
+
+msgctxt "model:ir.translation.clean.start,name:0"
+msgid "Clean translation start"
+msgstr "Comienzo de limpieza de traducción"
+
+msgctxt "model:ir.translation.export.init,name:0"
+msgid "Export translation - language and module"
+msgstr "Exportar traducción - idioma y módulo"
+
+msgctxt "model:ir.translation.export.start,name:0"
+msgid "Export translation - file"
+msgstr "Exportar traducción - archivo"
+
+msgctxt "model:ir.translation.set_report.init,name:0"
+msgid "Update Report Translation"
+msgstr "Actualiza Reporte de Traducción"
+
+msgctxt "model:ir.translation.set_report.start,name:0"
+msgid "Update Report Translation"
+msgstr "Actualiza Reporte de Traducción"
+
+msgctxt "model:ir.translation.update.init,name:0"
+msgid "Update translation - language"
+msgstr "Actualiza traducción - lenguaje"
+
+msgctxt "model:ir.trigger,name:0"
+msgid "Trigger"
+msgstr ""
+
+msgctxt "model:ir.trigger.log,name:0"
+msgid "Trigger Log"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:ir.ui.icon,name:0"
+msgid "Icon"
+msgstr "Ícono"
+
+msgctxt "model:ir.ui.menu,name:0"
+msgid "UI menu"
+msgstr "Menú UI"
+
+msgctxt "model:ir.ui.menu,name:menu_act_action"
+msgid "Actions"
+msgstr "Acciones"
+
+msgctxt "model:ir.ui.menu,name:menu_action"
+msgid "Actions"
+msgstr "Acciones"
+
+msgctxt "model:ir.ui.menu,name:menu_action_act_window"
+msgid "Window Actions"
+msgstr "Acciones de Ventana"
+
+msgctxt "model:ir.ui.menu,name:menu_action_report_form"
+msgid "Reports"
+msgstr "Reportes"
+
+msgctxt "model:ir.ui.menu,name:menu_action_url"
+msgid "URLs"
+msgstr "URLs"
+
+msgctxt "model:ir.ui.menu,name:menu_action_wizard"
+msgid "Wizards"
+msgstr "Asistentes"
+
+msgctxt "model:ir.ui.menu,name:menu_administration"
+msgid "Administration"
+msgstr "Administración"
+
+msgctxt "model:ir.ui.menu,name:menu_attachment_form"
+msgid "Attachments"
+msgstr "Adjuntos"
+
+msgctxt "model:ir.ui.menu,name:menu_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr "Configurar los elementos del Asistente"
+
+msgctxt "model:ir.ui.menu,name:menu_cron_form"
+msgid "Scheduled Actions"
+msgstr "Acciones agendadas"
+
+msgctxt "model:ir.ui.menu,name:menu_export_form"
+msgid "Exports"
+msgstr "Exportes"
+
+msgctxt "model:ir.ui.menu,name:menu_icon_form"
+msgid "Icons"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_ir_sequence_type"
+msgid "Sequence Types"
+msgstr "Tipos de Secuencia"
+
+msgctxt "model:ir.ui.menu,name:menu_lang_form"
+msgid "Languages"
+msgstr "Idiomas"
+
+msgctxt "model:ir.ui.menu,name:menu_localization"
+msgid "Localization"
+msgstr "Localización"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_menu_list"
+msgid "Menu"
+msgstr "Menú"
+
+msgctxt "model:ir.ui.menu,name:menu_model_access_form"
+msgid "Models Access"
+msgstr "Acceso a los Modelos"
+
+msgctxt "model:ir.ui.menu,name:menu_model_field_access_form"
+msgid "Fields Access"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_model_form"
+msgid "Models"
+msgstr "Modelos"
+
+msgctxt "model:ir.ui.menu,name:menu_models"
+msgid "Models"
+msgstr "Modelos"
+
+msgctxt "model:ir.ui.menu,name:menu_module_form"
+msgid "Modules"
+msgstr "Módulos"
+
+msgctxt "model:ir.ui.menu,name:menu_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr "Instalar / Actualizar Módulos Pendientes"
+
+msgctxt "model:ir.ui.menu,name:menu_modules"
+msgid "Modules"
+msgstr "Módulos"
+
+msgctxt "model:ir.ui.menu,name:menu_property_form"
+msgid "Properties"
+msgstr "Propiedades"
+
+msgctxt "model:ir.ui.menu,name:menu_property_form_default"
+msgid "Default Properties"
+msgstr "Propiedades predeterminadas"
+
+msgctxt "model:ir.ui.menu,name:menu_rule_group_form"
+msgid "Record Rules"
+msgstr "Grabar Reglas"
+
+msgctxt "model:ir.ui.menu,name:menu_scheduler"
+msgid "Scheduler"
+msgstr "Agendador"
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_form"
+msgid "Sequences"
+msgstr "Secuencias"
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr "Secuencias Estrictas"
+
+msgctxt "model:ir.ui.menu,name:menu_sequences"
+msgid "Sequences"
+msgstr "Secuencias"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_clean"
+msgid "Clean Translations"
+msgstr "Limpiar Traducciones"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_export"
+msgid "Export Translations"
+msgstr "Exportar Traducciones"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_form"
+msgid "Translations"
+msgstr "Traducciones"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_set_report"
+msgid "Set Report Translations"
+msgstr "Establecer Traducciones de Reporte"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_update"
+msgid "Synchronize Translations"
+msgstr "Actualizar Traducción"
+
+msgctxt "model:ir.ui.menu,name:menu_trigger_form"
+msgid "Triggers"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_ui"
+msgid "User Interface"
+msgstr "Interfaz de Usuario"
+
+msgctxt "model:ir.ui.menu,name:menu_view"
+msgid "Views"
+msgstr "Vistas"
+
+msgctxt "model:ir.ui.menu,name:menu_view_sc"
+msgid "View Shortcuts"
+msgstr "Ver Atajos"
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_width"
+msgid "View Tree Width"
+msgstr "Ancho de Vista de Árbol"
+
+msgctxt "model:ir.ui.menu,name:model_model_fields_form"
+msgid "Fields"
+msgstr "Campos"
+
+msgctxt "model:ir.ui.view,name:0"
+msgid "View"
+msgstr "Vista"
+
+msgctxt "model:ir.ui.view.show.init,name:0"
+msgid "ir.ui.view.show.init"
+msgstr ""
+
+msgctxt "model:ir.ui.view_sc,name:0"
+msgid "View shortcut"
+msgstr "Ver atajo"
+
+msgctxt "model:ir.ui.view_tree_expanded_state,name:0"
+msgid "ir.ui.view_tree_expanded_state"
+msgstr ""
+
+msgctxt "model:ir.ui.view_tree_width,name:0"
+msgid "View Tree Width"
+msgstr "Ancho de Vista de Árbol"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action form"
+msgstr "Formulario de Acción"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action tree"
+msgstr "Árbol de Acciones"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Form relate"
+msgstr "Formulario relacionado"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open Graph"
+msgstr "Abrir Gráfica"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open tree"
+msgstr "Desplegar árbol"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Print form"
+msgstr "Formulario de Impresión"
+
+msgctxt "selection:ir.attachment,type:0"
+msgid "Data"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:ir.attachment,type:0"
+msgid "Link"
+msgstr "Enlace"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Days"
+msgstr "Días"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Hours"
+msgstr "Horas"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Minutes"
+msgstr "Minutos"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Months"
+msgstr "Meses"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Weeks"
+msgstr "Semanas"
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Left-to-right"
+msgstr "De Izquierda a Derecha"
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Right-to-left"
+msgstr "Derecha-a-izquierda"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Installed"
+msgstr "Instalado"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Not Installed"
+msgstr "No instalado"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be installed"
+msgstr "Por instalar"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be removed"
+msgstr "Por eliminar"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be upgraded"
+msgstr "Por Actualizar"
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Done"
+msgstr "Hecho"
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Open"
+msgstr "Abrir"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Installed"
+msgstr "Instalado"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Not Installed"
+msgstr "No instalado"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be installed"
+msgstr "Por instalar"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be removed"
+msgstr "Por eliminar"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be upgraded"
+msgstr "Por Actualizar"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Unknown"
+msgstr "Desconocido"
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Decimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Incremental"
+msgstr ""
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Decimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Incremental"
+msgstr ""
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Error"
+msgstr "Error"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Field"
+msgstr "Campo"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Help"
+msgstr "Ayuda"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "ODT"
+msgstr "ODT"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Selection"
+msgstr "Selección"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "View"
+msgstr "Vista"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Wizard Button"
+msgstr "Botón del Asistente"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.act_window"
+msgstr "ir.action.act_window"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.report"
+msgstr "ir.action.report"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.url"
+msgstr "ir.action.url"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.wizard"
+msgstr "ir.action.wizard"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid ""
+msgstr ""
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Board"
+msgstr "Tablero"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Form"
+msgstr "Formulario"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Graph"
+msgstr "Gráfico"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Tree"
+msgstr "Árbol"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keyword"
+msgstr "Palabra Clave"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keywords"
+msgstr "Palabras Clave"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open Window"
+msgstr "Abrir Ventana"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open a Window"
+msgstr "Abrir una Ventana"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Views"
+msgstr "Vistas"
+
+msgctxt "view:ir.action.report:0"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:ir.action.report:0"
+msgid "Keyword"
+msgstr "Palabra Clave"
+
+msgctxt "view:ir.action.report:0"
+msgid "Keywords"
+msgstr "Palabras Clave"
+
+msgctxt "view:ir.action.report:0"
+msgid "Report"
+msgstr "Reporte"
+
+msgctxt "view:ir.action.report:0"
+msgid "Report xml"
+msgstr "Reporte xml"
+
+msgctxt "view:ir.action.url:0"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:ir.action.url:0"
+msgid "Keyword"
+msgstr "Palabra Clave"
+
+msgctxt "view:ir.action.url:0"
+msgid "Keywords"
+msgstr "Palabras Clave"
+
+msgctxt "view:ir.action.url:0"
+msgid "URL"
+msgstr "URL"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keyword"
+msgstr "Palabra Clave"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keywords"
+msgstr "Palabras Clave"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Wizard"
+msgstr "Asistente"
+
+msgctxt "view:ir.action:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "view:ir.action:0"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:ir.action:0"
+msgid "Keyword"
+msgstr "Palabra Clave"
+
+msgctxt "view:ir.action:0"
+msgid "Keywords"
+msgstr "Palabras Clave"
+
+msgctxt "view:ir.attachment:0"
+msgid "Attachments"
+msgstr "Adjuntos"
+
+msgctxt "view:ir.attachment:0"
+msgid "Preview"
+msgstr "Vista previa"
+
+msgctxt "view:ir.cron:0"
+msgid "Action to trigger"
+msgstr "Acción a ejecutarse"
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Action"
+msgstr "Acción agendada"
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Actions"
+msgstr "Acciones agendadas"
+
+msgctxt "view:ir.export:0"
+msgid "Exports"
+msgstr "Exportes"
+
+msgctxt "view:ir.lang:0"
+msgid "Date Formatting"
+msgstr "Formato de Fecha"
+
+msgctxt "view:ir.lang:0"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "view:ir.lang:0"
+msgid "Languages"
+msgstr "Idiomas"
+
+msgctxt "view:ir.lang:0"
+msgid "Numbers Formatting"
+msgstr "Formateo de número"
+
+msgctxt "view:ir.model.access:0"
+msgid "Access controls"
+msgstr "Controles de Acceso"
+
+msgctxt "view:ir.model.field.access:0"
+msgid "Field Access"
+msgstr ""
+
+msgctxt "view:ir.model.field:0"
+msgid "Fields"
+msgstr "Campos"
+
+msgctxt "view:ir.model.print_model_graph.init:0"
+msgid "Print Model Graph"
+msgstr "Imprimir Gráfica del Modelo"
+
+msgctxt "view:ir.model:0"
+msgid "Fields Description"
+msgstr "Descripción de Campos"
+
+msgctxt "view:ir.model:0"
+msgid "Model Description"
+msgstr "Descripción del Modelo"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "Welcome to the module configuration wizard!"
+msgstr "Bienvenido al Asistente de configuración del módulo!"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "You will be able to configure your installation"
+msgstr "Tendrá oportunidad de configurar su instalación"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid ""
+"You will be able to configure your installation depending on the modules you"
+" have installed."
+msgstr ""
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "depending on the modules you have installed."
+msgstr "dependiendo de los módulos que haya instalado."
+
+msgctxt "view:ir.module.module.config_wizard.item:0"
+msgid "Config Wizard Items"
+msgstr "Configurar los elementos del Asistente"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Note that this operation my take a few minutes."
+msgstr "Tenga en cuenta que esta operación puede durar varios minutos."
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "System Upgrade"
+msgstr "Actualización del Sistema"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Your system will be upgraded."
+msgstr "Su sistema se actualizará"
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "System upgrade done"
+msgstr "Actualización del Sistema finalizada"
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "The modules have been upgraded / installed !"
+msgstr "Los módulos se actualizaron/instalaron!"
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "We suggest you to reload the menu tab (Ctrl+t Ctrl+r)."
+msgstr "Le sugerimos recargar la barra de menú(Ctrl+t Ctrlr)."
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "You may have to reinstall some language pack."
+msgstr "Es posible que necesite reinstalar un paquete de idioma"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr "Cancelar Instalación"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr "Cancelar la no instalación"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr "Cancelar actualización"
+
+msgctxt "view:ir.module.module:0"
+msgid "Dependencies"
+msgstr "Dependencias"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr "Marcar para Instalación"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr "Marcar para Desinstalar"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr "Marcar para Actualizar"
+
+msgctxt "view:ir.module.module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "view:ir.module.module:0"
+msgid "Modules"
+msgstr "Módulos"
+
+msgctxt "view:ir.property:0"
+msgid "Properties"
+msgstr "Propiedades"
+
+msgctxt "view:ir.property:0"
+msgid "Property"
+msgstr "Propiedad"
+
+msgctxt "view:ir.rule.group:0"
+msgid ""
+"If there is no test defined, the rule is always satisfied if not global"
+msgstr ""
+"Si no hay prueba definida, la regla se aplica siempre que no sea global"
+
+msgctxt "view:ir.rule.group:0"
+msgid "Record rules"
+msgstr "Grabar Reglas"
+
+msgctxt "view:ir.rule.group:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr "La regla se satisface si por lo menos una condición es Verdadera"
+
+msgctxt "view:ir.rule:0"
+msgid "Test"
+msgstr "Prueba"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "${day}"
+msgstr "${day}"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "${month}"
+msgstr "${month}"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "${year}"
+msgstr "${year}"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Day:"
+msgstr "Día:"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Legend (for prefix, suffix)"
+msgstr "Letras (para prefijo, sufijo)"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Month:"
+msgstr "Mes:"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Sequences Strict"
+msgstr "Secuencias Estrictas"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Year:"
+msgstr "Año:"
+
+msgctxt "view:ir.sequence.type:0"
+msgid "Sequence Type"
+msgstr "Tipo de Secuencia"
+
+msgctxt "view:ir.sequence:0"
+msgid "${day}"
+msgstr "${day}"
+
+msgctxt "view:ir.sequence:0"
+msgid "${month}"
+msgstr "${month}"
+
+msgctxt "view:ir.sequence:0"
+msgid "${year}"
+msgstr "${year}"
+
+msgctxt "view:ir.sequence:0"
+msgid "Day:"
+msgstr "Día:"
+
+msgctxt "view:ir.sequence:0"
+msgid "Incremental"
+msgstr ""
+
+msgctxt "view:ir.sequence:0"
+msgid "Legend (Placeholders for prefix, suffix)"
+msgstr "Leyenda (Lugares para prefijos, sufijos)"
+
+msgctxt "view:ir.sequence:0"
+msgid "Legend (for prefix, suffix)"
+msgstr "Letras (para prefijo, sufijo)"
+
+msgctxt "view:ir.sequence:0"
+msgid "Month:"
+msgstr "Mes:"
+
+msgctxt "view:ir.sequence:0"
+msgid "Sequences"
+msgstr "Secuencias"
+
+#, fuzzy
+msgctxt "view:ir.sequence:0"
+msgid "Timestamp"
+msgstr "Estampa de Tiempo"
+
+msgctxt "view:ir.sequence:0"
+msgid "Year:"
+msgstr "Año:"
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations"
+msgstr "Limpiar Traducciones"
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations?"
+msgstr "¿Limpiar Traducciones?"
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations"
+msgstr "Limpiar Traducciones"
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations Succeed!"
+msgstr "Las traducciones se limpiaron!"
+
+msgctxt "view:ir.translation.export.init:0"
+msgid "Export Translation"
+msgstr "Exportar Traducción"
+
+msgctxt "view:ir.translation.export.start:0"
+msgid "Export Translation"
+msgstr "Exportar Traducción"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Set Report Translations"
+msgstr "Establecer Traducciones de Reporte"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Synchronize Report Translations?"
+msgstr "¿Sincronizar las traducciones de reportes?"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Update Report Translations?"
+msgstr "Actualizar Traducciones de Reportes?"
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Report Translations"
+msgstr "Establecer Traducciones de Reporte"
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Translations Succeed!"
+msgstr "Establecimiento de Traducciones exitoso!"
+
+msgctxt "view:ir.translation.update.init:0"
+msgid "Synchronize Translations"
+msgstr "Sincronizar Traducciones"
+
+msgctxt "view:ir.translation.update.init:0"
+msgid "Update Translations"
+msgstr "Actualizar Traducción"
+
+msgctxt "view:ir.translation:0"
+msgid "Translations"
+msgstr "Traducciones"
+
+msgctxt "view:ir.trigger:0"
+msgid "Trigger"
+msgstr ""
+
+msgctxt "view:ir.trigger:0"
+msgid "Triggers"
+msgstr ""
+
+#, fuzzy
+msgctxt "view:ir.ui.icon:0"
+msgid "Icon"
+msgstr "Ícono"
+
+msgctxt "view:ir.ui.icon:0"
+msgid "Icons"
+msgstr ""
+
+msgctxt "view:ir.ui.menu:0"
+msgid "Menu"
+msgstr "Menú"
+
+msgctxt "view:ir.ui.view:0"
+msgid "View"
+msgstr "Vista"
+
+msgctxt "view:ir.ui.view:0"
+msgid "_Show"
+msgstr ""
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcut"
+msgstr "Atajo"
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcuts"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "View Tree Expanded State"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "Views Tree Expanded State"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "View Tree Width"
+msgstr "Ancho de Vista de Árbol"
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "Views Tree Width"
+msgstr "Ancho de Vista de Árbol"
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,print:0"
+msgid "Print"
+msgstr "Imprimir"
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,wizard:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,start:0"
+msgid "Start Upgrade"
+msgstr "Iniciar Actualización"
+
+#, fuzzy
+msgctxt "wizard_button:ir.module.module.install_upgrade,start,config:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:ir.translation.clean,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:ir.translation.clean,init,start:0"
+msgid "Start"
+msgstr "Comenzar"
+
+msgctxt "wizard_button:ir.translation.clean,start,end:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:ir.translation.export,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:ir.translation.export,init,start:0"
+msgid "Start Export"
+msgstr "Comenzar a Exportar"
+
+msgctxt "wizard_button:ir.translation.export,start,end:0"
+msgid "Close"
+msgstr "Cerrar"
+
+msgctxt "wizard_button:ir.translation.set_report,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:ir.translation.set_report,init,start:0"
+msgid "Start Update"
+msgstr "Iniciar Actualización"
+
+msgctxt "wizard_button:ir.translation.set_report,start,end:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:ir.translation.update,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:ir.translation.update,init,start:0"
+msgid "Start Update"
+msgstr "Iniciar Actualización"
+
+#, fuzzy
+msgctxt "wizard_button:ir.ui.view.show,init,end:0"
+msgid "Close"
+msgstr "Cerrar"
diff --git a/trytond/ir/locale/es_ES.po b/trytond/ir/locale/es_ES.po
new file mode 100644
index 0000000..98e5511
--- /dev/null
+++ b/trytond/ir/locale/es_ES.po
@@ -0,0 +1,2863 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:access_error:0"
+msgid ""
+"You try to bypass an access rule!\n"
+"(Document type: %s)"
+msgstr ""
+"Está intentando evitar una regla de acceso\n"
+"(Tipo de documento: %s)"
+
+msgctxt "error:delete_workflow_record:0"
+msgid "You cannot delete a record with a running workflow."
+msgstr "No puede borrar un registro involucrado en un flujo activo."
+
+msgctxt "error:delete_xml_record:0"
+msgid "You are not allowed to delete this record."
+msgstr "No está autorizado a borrar este registro."
+
+msgctxt "error:digits_validation_record:0"
+msgid "The field \"%s\" on \"%s\" has too many decimal digits."
+msgstr ""
+
+msgctxt "error:domain_validation_record:0"
+msgid "The value of the field \"%s\" on \"%s\" is not valid according to its domain."
+msgstr "El valor del campo «%s» en «%s» no es válido según su dominio."
+
+msgctxt "error:foreign_model_exist:0"
+msgid "Could not delete \"%s\" records because they are used on field \"%s\" of \"%s\"."
+msgstr ""
+"No se pudieron borrar «%s» registros porque se usan en el campo «%s» de "
+"«%s»."
+
+msgctxt "error:foreign_model_missing:0"
+msgid "The value of field \"%s\" on \"%s\" doesn't exist."
+msgstr "El valor del campo «%s» en «%s» no existe."
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid context!"
+msgstr ""
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid domain or search criteria!"
+msgstr ""
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid views!"
+msgstr ""
+
+msgctxt "error:ir.action.keyword:0"
+msgid "Wrong wizard model!"
+msgstr "El modelo del asistente no es válido"
+
+msgctxt "error:ir.action.report:0"
+msgid "The internal name must be unique by module!"
+msgstr "El nombre interno de los módulos debe ser único"
+
+msgctxt "error:ir.attachment:0"
+msgid "The  names of attachments must be unique by resource!"
+msgstr ""
+
+msgctxt "error:ir.cron:0"
+msgid "Scheduled action failed"
+msgstr "La acción programada ha fallado"
+
+msgctxt "error:ir.cron:0"
+msgid ""
+"The following action failed to execute properly: \"%s\"\n"
+" Traceback: \n"
+"\n"
+"%s\n"
+msgstr ""
+"La siguiente acción no se ejecutó correctamente: «%s»\n"
+" Traza:\n"
+"\n"
+"%s\n"
+
+msgctxt "error:ir.lang:0"
+msgid "Invalid Grouping!"
+msgstr "El agrupamiento no es válido"
+
+msgctxt "error:ir.lang:0"
+msgid "The date format is not valid!"
+msgstr "El formato de la fecha no es válido"
+
+msgctxt "error:ir.lang:0"
+msgid "decimal_point and thousands_sep must be different!"
+msgstr "«decimal_point» y «thousands_sep» deben ser distintos"
+
+msgctxt "error:ir.model.access:0"
+msgid "Only one record by model and group is allowed!"
+msgstr "Solo se permite un registro por modelo y grupo"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not create this kind of document! (%s)"
+msgstr "No puede crear este tipo de documento (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not delete this document! (%s)"
+msgstr "No puede borrar este documento (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not read this document! (%s)"
+msgstr "No puede leer este documento (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not write in this document! (%s)"
+msgstr "No puede escribir en este documento (%s)"
+
+msgctxt "error:ir.model.data:0"
+msgid "The triple (fs_id, module, model) must be unique!"
+msgstr "La terna (fs_id, module, model) debe ser única"
+
+msgctxt "error:ir.model.field.access:0"
+msgid "Only one record by field and group is allowed!"
+msgstr ""
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not read the field! (%s.%s)"
+msgstr ""
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not write on the field! (%s.%s)"
+msgstr ""
+
+msgctxt "error:ir.model.field:0"
+msgid "Model Field Name must be a python identifier!"
+msgstr ""
+
+msgctxt "error:ir.model.field:0"
+msgid "The field name in model must be unique!"
+msgstr "El nombre del campo en el modelo debe ser único"
+
+msgctxt "error:ir.model:0"
+msgid "Module Name must be a python identifier!"
+msgstr ""
+
+msgctxt "error:ir.model:0"
+msgid "The model must be unique!"
+msgstr "El modelo debe ser único"
+
+msgctxt "error:ir.module.module.dependency:0"
+msgid "Dependency must be unique by module!"
+msgstr "Las dependencias por módulo deben ser únicas"
+
+msgctxt "error:ir.module.module:0"
+msgid "Missing dependencies %s for module \"%s\""
+msgstr "Faltan las dependencias %s para el módulo «%s»"
+
+msgctxt "error:ir.module.module:0"
+msgid "The modules you are trying to uninstall depends on installed modules:"
+msgstr ""
+"Los módulos que está intentando desinstalar dependen de módulos instalados:"
+
+msgctxt "error:ir.module.module:0"
+msgid "The name of the module must be unique!"
+msgstr "El nombre del módulo debe ser único"
+
+msgctxt "error:ir.module.module:0"
+msgid "You can not remove a module that is installed or will be installed"
+msgstr ""
+"No puede eliminar un módulo que está instalado o que va a ser instalado"
+
+msgctxt "error:ir.rule.group:0"
+msgid "Global and Default are mutually exclusive!"
+msgstr "«Global» y «Predeterminado» son mutuamente excluyentes"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Invalid prefix/suffix!"
+msgstr "prefijo/sufijo no válido"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Last Timestamp could not be in future!"
+msgstr ""
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Missing sequence!"
+msgstr "Falta la secuencia"
+
+msgctxt "error:ir.sequence:0"
+msgid "Invalid prefix/suffix!"
+msgstr "prefijo/sufijo no válido"
+
+msgctxt "error:ir.sequence:0"
+msgid "Last Timestamp could not be in future!"
+msgstr ""
+
+msgctxt "error:ir.sequence:0"
+msgid "Missing sequence!"
+msgstr "Falta la secuencia"
+
+msgctxt "error:ir.translation:0"
+msgid "Translation must be unique"
+msgstr "La traducción debe ser única"
+
+msgctxt "error:ir.trigger:0"
+msgid "\"On Time\" and others are mutually exclusive!"
+msgstr ""
+
+msgctxt "error:ir.trigger:0"
+msgid "Condition must be a python expression!"
+msgstr ""
+
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not create recursive menu!"
+msgstr ""
+
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not use \" / \" in name field!"
+msgstr ""
+
+msgctxt "error:ir.ui.view.show:0"
+msgid "Only \"form\" view can be shown!"
+msgstr ""
+
+msgctxt "error:ir.ui.view:0"
+msgid "Invalid XML for View!"
+msgstr "El XML de la vista no es válido"
+
+msgctxt "error:not_found_in_selection:0"
+msgid "Key %r not found in selection field %r"
+msgstr ""
+
+msgctxt "error:read_error:0"
+msgid ""
+"You try to read records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr ""
+"Está intentando leer registros que ya no existen\n"
+"(Tipo de documento: %s)"
+
+msgctxt "error:reference_syntax_error:0"
+msgid "Syntax error for reference %r in %s"
+msgstr ""
+
+msgctxt "error:relation_not_found:0"
+msgid "Relation not found: %r in %s"
+msgstr ""
+
+msgctxt "error:required_field:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr "El campo «%s» en «%s» es necesario."
+
+msgctxt "error:required_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr "El campo «%s» en «%s» es necesario."
+
+msgctxt "error:search_function_missing:0"
+msgid "Missing search function on field \"%s\"."
+msgstr ""
+
+msgctxt "error:size_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is too long."
+msgstr "El campo «%s» en «%s» es muy largo."
+
+msgctxt "error:too_many_relations_found:0"
+msgid "Too many relations found: %r in %s"
+msgstr ""
+
+msgctxt "error:write_error:0"
+msgid ""
+"You try to write on records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr ""
+"Está tratando de escribir en registros que ya no existen\n"
+"(Tipo de documento: %s)"
+
+msgctxt "error:write_xml_record:0"
+msgid "You are not allowed to modify this record."
+msgstr "No está autorizado para modificar este registro."
+
+msgctxt "error:xml_id_syntax_error:0"
+msgid "Syntax error for XML id %r in %s"
+msgstr ""
+
+msgctxt "error:xml_record_desc:0"
+msgid "This record is part of the base configuration."
+msgstr "Este registro es parte de la configuración base."
+
+msgctxt "field:ir.action,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:ir.action,groups:0"
+msgid "Groups"
+msgstr "Grupos"
+
+#, fuzzy
+msgctxt "field:ir.action,icon:0"
+msgid "Icon"
+msgstr "Icono"
+
+msgctxt "field:ir.action,keywords:0"
+msgid "Keywords"
+msgstr "Palabras clave"
+
+msgctxt "field:ir.action,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:ir.action,usage:0"
+msgid "Usage"
+msgstr "Uso"
+
+msgctxt "field:ir.action.act_window,act_window_views:0"
+msgid "Views"
+msgstr "Vistas"
+
+msgctxt "field:ir.action.act_window,action:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "field:ir.action.act_window,auto_refresh:0"
+msgid "Auto-Refresh"
+msgstr "Auto-Recargar"
+
+msgctxt "field:ir.action.act_window,context:0"
+msgid "Context Value"
+msgstr "Valor del contexto"
+
+msgctxt "field:ir.action.act_window,domain:0"
+msgid "Domain Value"
+msgstr "Valor del dominio"
+
+msgctxt "field:ir.action.act_window,limit:0"
+msgid "Limit"
+msgstr "Límite"
+
+msgctxt "field:ir.action.act_window,pyson_context:0"
+msgid "PySON Context"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,pyson_domain:0"
+msgid "PySON Domain"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,pyson_search_value:0"
+msgid "PySON Search Criteria"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action.act_window,res_model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.action.act_window,search_value:0"
+msgid "Search Criteria"
+msgstr "Criterio de búsqueda"
+
+msgctxt "field:ir.action.act_window,views:0"
+msgid "Views"
+msgstr "Vistas"
+
+msgctxt "field:ir.action.act_window,window_name:0"
+msgid "Window Name"
+msgstr "Nombre de la ventana"
+
+msgctxt "field:ir.action.act_window.view,act_window:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "field:ir.action.act_window.view,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action.act_window.view,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:ir.action.act_window.view,view:0"
+msgid "View"
+msgstr "Vista"
+
+msgctxt "field:ir.action.keyword,action:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "field:ir.action.keyword,keyword:0"
+msgid "Keyword"
+msgstr "Palabra clave"
+
+msgctxt "field:ir.action.keyword,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.action.keyword,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action.report,action:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "field:ir.action.report,direct_print:0"
+msgid "Direct Print"
+msgstr "Impresión directa"
+
+msgctxt "field:ir.action.report,email:0"
+msgid "Email"
+msgstr "Correo electrónico"
+
+msgctxt "field:ir.action.report,extension:0"
+msgid "Extension"
+msgstr "Extensión"
+
+msgctxt "field:ir.action.report,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.action.report,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.action.report,pyson_email:0"
+msgid "PySON Email"
+msgstr ""
+
+msgctxt "field:ir.action.report,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action.report,report:0"
+msgid "Path"
+msgstr "Ruta"
+
+msgctxt "field:ir.action.report,report_content:0"
+msgid "Content"
+msgstr "Contenido"
+
+#, fuzzy
+msgctxt "field:ir.action.report,report_content_custom:0"
+msgid "Content"
+msgstr "Contenido"
+
+msgctxt "field:ir.action.report,report_name:0"
+msgid "Internal Name"
+msgstr "Nombre interno"
+
+msgctxt "field:ir.action.report,style:0"
+msgid "Style"
+msgstr "Estilo"
+
+msgctxt "field:ir.action.report,style_content:0"
+msgid "Style"
+msgstr "Estilo"
+
+msgctxt "field:ir.action.report,template_extension:0"
+msgid "Template Extension"
+msgstr ""
+
+msgctxt "field:ir.action.url,action:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "field:ir.action.url,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action.url,url:0"
+msgid "Action Url"
+msgstr "URL de la acción"
+
+msgctxt "field:ir.action.wizard,action:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "field:ir.action.wizard,email:0"
+msgid "Email"
+msgstr "Correo electrónico"
+
+msgctxt "field:ir.action.wizard,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.action.wizard,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.action.wizard,window:0"
+msgid "Window"
+msgstr "Ventana"
+
+msgctxt "field:ir.action.wizard,wiz_name:0"
+msgid "Wizard name"
+msgstr "Nombre del asistente"
+
+msgctxt "field:ir.attachment,collision:0"
+msgid "Collision"
+msgstr "Colisión"
+
+msgctxt "field:ir.attachment,data:0"
+msgid "Data"
+msgstr ""
+
+msgctxt "field:ir.attachment,data_size:0"
+msgid "Data size"
+msgstr ""
+
+msgctxt "field:ir.attachment,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:ir.attachment,digest:0"
+msgid "Digest"
+msgstr "Resumen"
+
+msgctxt "field:ir.attachment,last_modification:0"
+msgid "Last Modification"
+msgstr ""
+
+msgctxt "field:ir.attachment,last_user:0"
+msgid "Last User"
+msgstr ""
+
+msgctxt "field:ir.attachment,link:0"
+msgid "Link"
+msgstr "Enlace"
+
+#, fuzzy
+msgctxt "field:ir.attachment,name:0"
+msgid "Name"
+msgstr "Nombre del adjunto"
+
+msgctxt "field:ir.attachment,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+#, fuzzy
+msgctxt "field:ir.attachment,resource:0"
+msgid "Resource"
+msgstr "Recurso"
+
+#, fuzzy
+msgctxt "field:ir.attachment,summary:0"
+msgid "Summary"
+msgstr "Resumen"
+
+#, fuzzy
+msgctxt "field:ir.attachment,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:ir.cache,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.cache,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.cache,timestamp:0"
+msgid "Timestamp"
+msgstr "Marca de tiempo"
+
+msgctxt "field:ir.cron,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:ir.cron,args:0"
+msgid "Arguments"
+msgstr "Argumentos"
+
+msgctxt "field:ir.cron,function:0"
+msgid "Function"
+msgstr "Función"
+
+msgctxt "field:ir.cron,interval_number:0"
+msgid "Interval Number"
+msgstr "Número intervalo"
+
+msgctxt "field:ir.cron,interval_type:0"
+msgid "Interval Unit"
+msgstr "Unidad intervalo"
+
+msgctxt "field:ir.cron,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.cron,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.cron,next_call:0"
+msgid "Next Call"
+msgstr ""
+
+msgctxt "field:ir.cron,number_calls:0"
+msgid "Number of Calls"
+msgstr ""
+
+msgctxt "field:ir.cron,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.cron,repeat_missed:0"
+msgid "Repeat Missed"
+msgstr ""
+
+msgctxt "field:ir.cron,request_user:0"
+msgid "Request User"
+msgstr "Ordenante"
+
+msgctxt "field:ir.cron,user:0"
+msgid "Execution User"
+msgstr "Ejecutado por"
+
+msgctxt "field:ir.export,export_fields:0"
+msgid "Fields"
+msgstr "Campos"
+
+msgctxt "field:ir.export,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.export,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.export,resource:0"
+msgid "Resource"
+msgstr "Recurso"
+
+msgctxt "field:ir.export.line,export:0"
+msgid "Export"
+msgstr "Exportar"
+
+msgctxt "field:ir.export.line,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.export.line,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.lang,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:ir.lang,code:0"
+msgid "Code"
+msgstr "Código"
+
+msgctxt "field:ir.lang,date:0"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:ir.lang,decimal_point:0"
+msgid "Decimal Separator"
+msgstr "Separador decimal"
+
+msgctxt "field:ir.lang,direction:0"
+msgid "Direction"
+msgstr "Dirección"
+
+msgctxt "field:ir.lang,grouping:0"
+msgid "Grouping"
+msgstr "Agrupación"
+
+msgctxt "field:ir.lang,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.lang,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.lang,thousands_sep:0"
+msgid "Thousands Separator"
+msgstr "Separador de miles"
+
+msgctxt "field:ir.lang,translatable:0"
+msgid "Translatable"
+msgstr "Traducible"
+
+msgctxt "field:ir.model,fields:0"
+msgid "Fields"
+msgstr "Campos"
+
+msgctxt "field:ir.model,info:0"
+msgid "Information"
+msgstr "Información"
+
+msgctxt "field:ir.model,model:0"
+msgid "Model Name"
+msgstr "Nombre del modelo"
+
+msgctxt "field:ir.model,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.model,name:0"
+msgid "Model Description"
+msgstr "Descripción del modelo"
+
+msgctxt "field:ir.model,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.model.access,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:ir.model.access,group:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "field:ir.model.access,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.model.access,perm_create:0"
+msgid "Create Access"
+msgstr "Acceso para crear"
+
+msgctxt "field:ir.model.access,perm_delete:0"
+msgid "Delete Access"
+msgstr "Acceso para borrar"
+
+msgctxt "field:ir.model.access,perm_read:0"
+msgid "Read Access"
+msgstr "Acceso para leer"
+
+msgctxt "field:ir.model.access,perm_write:0"
+msgid "Write Access"
+msgstr "Acceso para escribir"
+
+msgctxt "field:ir.model.access,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.model.data,date_init:0"
+msgid "Init Date"
+msgstr "Fecha de inicio"
+
+msgctxt "field:ir.model.data,date_update:0"
+msgid "Update Date"
+msgstr "Fecha de actualización"
+
+msgctxt "field:ir.model.data,db_id:0"
+msgid "Resource ID"
+msgstr "ID del recurso"
+
+msgctxt "field:ir.model.data,fs_id:0"
+msgid "Identifier on File System"
+msgstr "Identificador en el sistema de archivos"
+
+msgctxt "field:ir.model.data,inherit:0"
+msgid "Inherit"
+msgstr "Hereda"
+
+msgctxt "field:ir.model.data,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.model.data,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.model.data,noupdate:0"
+msgid "No Update"
+msgstr ""
+
+msgctxt "field:ir.model.data,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.model.data,values:0"
+msgid "Values"
+msgstr "Valores"
+
+msgctxt "field:ir.model.field,field_description:0"
+msgid "Field Description"
+msgstr "Descripción del campo"
+
+msgctxt "field:ir.model.field,groups:0"
+msgid "Groups"
+msgstr "Grupos"
+
+msgctxt "field:ir.model.field,help:0"
+msgid "Help"
+msgstr "Ayuda"
+
+msgctxt "field:ir.model.field,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.model.field,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.model.field,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.model.field,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.model.field,relation:0"
+msgid "Model Relation"
+msgstr "Relación del modelo"
+
+msgctxt "field:ir.model.field,ttype:0"
+msgid "Field Type"
+msgstr "Tipo de campo"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,field:0"
+msgid "Field"
+msgstr "Campo"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,group:0"
+msgid "Group"
+msgstr "Grupo"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,perm_read:0"
+msgid "Read Access"
+msgstr "Acceso para leer"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,perm_write:0"
+msgid "Write Access"
+msgstr "Acceso para escribir"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,rec_name:0"
+msgid "Name"
+msgstr "Nombre del campo"
+
+msgctxt "field:ir.model.print_model_graph.init,filter:0"
+msgid "Filter"
+msgstr ""
+
+msgctxt "field:ir.model.print_model_graph.init,level:0"
+msgid "Level"
+msgstr "Nivel"
+
+msgctxt "field:ir.module.module,author:0"
+msgid "Author"
+msgstr "Autor"
+
+msgctxt "field:ir.module.module,dependencies:0"
+msgid "Dependencies"
+msgstr "Dependencias"
+
+msgctxt "field:ir.module.module,description:0"
+msgid "Description"
+msgstr "Descripción"
+
+msgctxt "field:ir.module.module,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.module.module,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.module.module,shortdesc:0"
+msgid "Short description"
+msgstr "Descripción corta"
+
+msgctxt "field:ir.module.module,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:ir.module.module,version:0"
+msgid "Version"
+msgstr "Versión"
+
+msgctxt "field:ir.module.module,website:0"
+msgid "Website"
+msgstr "Sitio web"
+
+msgctxt "field:ir.module.module.config_wizard.item,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.module.module.config_wizard.item,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.module.module.config_wizard.item,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:ir.module.module.config_wizard.item,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:ir.module.module.dependency,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.module.module.dependency,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.module.module.dependency,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.module.module.dependency,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:ir.module.module.install_upgrade.init,module_info:0"
+msgid "Modules to update"
+msgstr "Módulos a actualizar"
+
+msgctxt "field:ir.property,field:0"
+msgid "Field"
+msgstr "Campo"
+
+msgctxt "field:ir.property,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.property,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.property,res:0"
+msgid "Resource"
+msgstr "Recurso"
+
+msgctxt "field:ir.property,value:0"
+msgid "Value"
+msgstr "Valor"
+
+msgctxt "field:ir.rule,field:0"
+msgid "Field"
+msgstr "Campo"
+
+msgctxt "field:ir.rule,operand:0"
+msgid "Operand"
+msgstr "Operando"
+
+msgctxt "field:ir.rule,operator:0"
+msgid "Operator"
+msgstr "Operador"
+
+msgctxt "field:ir.rule,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.rule,rule_group:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "field:ir.rule.group,default_p:0"
+msgid "Default"
+msgstr "Predeterminado"
+
+msgctxt "field:ir.rule.group,global_p:0"
+msgid "Global"
+msgstr "Global"
+
+msgctxt "field:ir.rule.group,groups:0"
+msgid "Groups"
+msgstr "Grupos"
+
+msgctxt "field:ir.rule.group,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.rule.group,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.rule.group,perm_create:0"
+msgid "Create Access"
+msgstr "Acceso para crear"
+
+msgctxt "field:ir.rule.group,perm_delete:0"
+msgid "Delete Access"
+msgstr "Acceso para borrar"
+
+msgctxt "field:ir.rule.group,perm_read:0"
+msgid "Read Access"
+msgstr "Acceso para leer"
+
+msgctxt "field:ir.rule.group,perm_write:0"
+msgid "Write Access"
+msgstr "Acceso para escribir"
+
+msgctxt "field:ir.rule.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.rule.group,rules:0"
+msgid "Tests"
+msgstr "Pruebas"
+
+msgctxt "field:ir.rule.group,users:0"
+msgid "Users"
+msgstr "Usuarios"
+
+msgctxt "field:ir.sequence,active:0"
+msgid "Active"
+msgstr "Activo"
+
+#, fuzzy
+msgctxt "field:ir.sequence,code:0"
+msgid "Sequence Code"
+msgstr "Tipo de la secuencia"
+
+msgctxt "field:ir.sequence,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr ""
+
+msgctxt "field:ir.sequence,name:0"
+msgid "Sequence Name"
+msgstr "Nombre de la secuencia"
+
+msgctxt "field:ir.sequence,number_increment:0"
+msgid "Increment Number"
+msgstr "Cantidad a incrementar"
+
+msgctxt "field:ir.sequence,number_next:0"
+msgid "Next Number"
+msgstr "Siguiente número"
+
+#, fuzzy
+msgctxt "field:ir.sequence,number_next_internal:0"
+msgid "Next Number"
+msgstr "Siguiente número"
+
+msgctxt "field:ir.sequence,padding:0"
+msgid "Number padding"
+msgstr "Dígitos de relleno"
+
+msgctxt "field:ir.sequence,prefix:0"
+msgid "Prefix"
+msgstr "Prefijo"
+
+msgctxt "field:ir.sequence,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.sequence,suffix:0"
+msgid "Suffix"
+msgstr "Sufijo"
+
+msgctxt "field:ir.sequence,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr ""
+
+msgctxt "field:ir.sequence,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.sequence,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:ir.sequence.strict,active:0"
+msgid "Active"
+msgstr "Activo"
+
+#, fuzzy
+msgctxt "field:ir.sequence.strict,code:0"
+msgid "Sequence Code"
+msgstr "Tipo de la secuencia"
+
+msgctxt "field:ir.sequence.strict,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,name:0"
+msgid "Sequence Name"
+msgstr "Nombre de la secuencia"
+
+msgctxt "field:ir.sequence.strict,number_increment:0"
+msgid "Increment Number"
+msgstr "Cantidad a incrementar"
+
+msgctxt "field:ir.sequence.strict,number_next:0"
+msgid "Next Number"
+msgstr "Número siguiente"
+
+#, fuzzy
+msgctxt "field:ir.sequence.strict,number_next_internal:0"
+msgid "Next Number"
+msgstr "Siguiente número"
+
+msgctxt "field:ir.sequence.strict,padding:0"
+msgid "Number padding"
+msgstr "Dígitos de relleno"
+
+msgctxt "field:ir.sequence.strict,prefix:0"
+msgid "Prefix"
+msgstr "Prefijo"
+
+msgctxt "field:ir.sequence.strict,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.sequence.strict,suffix:0"
+msgid "Suffix"
+msgstr "Sufijo"
+
+msgctxt "field:ir.sequence.strict,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.sequence.strict,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:ir.sequence.type,code:0"
+msgid "Sequence Code"
+msgstr "Código de la secuencia"
+
+msgctxt "field:ir.sequence.type,name:0"
+msgid "Sequence Name"
+msgstr "Nombre de la secuencia"
+
+msgctxt "field:ir.sequence.type,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.translation,fuzzy:0"
+msgid "Fuzzy"
+msgstr "Necesita revisión"
+
+msgctxt "field:ir.translation,lang:0"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "field:ir.translation,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.translation,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.translation,name:0"
+msgid "Field Name"
+msgstr "Nombre del campo"
+
+msgctxt "field:ir.translation,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.translation,res_id:0"
+msgid "Resource ID"
+msgstr "ID del recurso"
+
+msgctxt "field:ir.translation,src:0"
+msgid "Source"
+msgstr "Fuente"
+
+msgctxt "field:ir.translation,src_md5:0"
+msgid "Source MD5"
+msgstr ""
+
+msgctxt "field:ir.translation,type:0"
+msgid "Type"
+msgstr "Tipo"
+
+msgctxt "field:ir.translation,value:0"
+msgid "Translation Value"
+msgstr "Valor de la traducción"
+
+msgctxt "field:ir.translation.export.init,lang:0"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "field:ir.translation.export.init,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.translation.export.start,file:0"
+msgid "File"
+msgstr "Archivo"
+
+msgctxt "field:ir.translation.update.init,lang:0"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "field:ir.trigger,action_function:0"
+msgid "Action Function"
+msgstr ""
+
+msgctxt "field:ir.trigger,action_model:0"
+msgid "Action Model"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.trigger,active:0"
+msgid "Active"
+msgstr "Activo"
+
+#, fuzzy
+msgctxt "field:ir.trigger,condition:0"
+msgid "Condition"
+msgstr "Condición"
+
+msgctxt "field:ir.trigger,limit_number:0"
+msgid "Limit Number"
+msgstr ""
+
+msgctxt "field:ir.trigger,minimum_delay:0"
+msgid "Minimum Delay"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.trigger,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+#, fuzzy
+msgctxt "field:ir.trigger,name:0"
+msgid "Name"
+msgstr "Nombre del campo"
+
+#, fuzzy
+msgctxt "field:ir.trigger,on_create:0"
+msgid "On Create"
+msgstr "Al ser creado"
+
+msgctxt "field:ir.trigger,on_delete:0"
+msgid "On Delete"
+msgstr ""
+
+msgctxt "field:ir.trigger,on_time:0"
+msgid "On Time"
+msgstr ""
+
+msgctxt "field:ir.trigger,on_write:0"
+msgid "On Write"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.trigger,rec_name:0"
+msgid "Name"
+msgstr "Nombre del campo"
+
+#, fuzzy
+msgctxt "field:ir.trigger.log,rec_name:0"
+msgid "Name"
+msgstr "Nombre del campo"
+
+msgctxt "field:ir.trigger.log,record_id:0"
+msgid "Record ID"
+msgstr ""
+
+msgctxt "field:ir.trigger.log,trigger:0"
+msgid "Trigger"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,icon:0"
+msgid "Icon"
+msgstr "Icono"
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,name:0"
+msgid "Name"
+msgstr "Nombre del campo"
+
+msgctxt "field:ir.ui.icon,path:0"
+msgid "SVG Path"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,rec_name:0"
+msgid "Name"
+msgstr "Nombre del campo"
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:ir.ui.menu,action:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "field:ir.ui.menu,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:ir.ui.menu,childs:0"
+msgid "Children"
+msgstr "Hijos"
+
+msgctxt "field:ir.ui.menu,complete_name:0"
+msgid "Complete Name"
+msgstr "Nombre completo"
+
+msgctxt "field:ir.ui.menu,groups:0"
+msgid "Groups"
+msgstr "Grupos"
+
+msgctxt "field:ir.ui.menu,icon:0"
+msgid "Icon"
+msgstr "Icono"
+
+msgctxt "field:ir.ui.menu,name:0"
+msgid "Menu"
+msgstr "Menú"
+
+msgctxt "field:ir.ui.menu,parent:0"
+msgid "Parent Menu"
+msgstr "Menú padre"
+
+msgctxt "field:ir.ui.menu,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.ui.menu,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:ir.ui.view,arch:0"
+msgid "View Architecture"
+msgstr "Ver arquitectura"
+
+msgctxt "field:ir.ui.view,domain:0"
+msgid "Domain"
+msgstr "Dominio"
+
+msgctxt "field:ir.ui.view,field_childs:0"
+msgid "Children Field"
+msgstr "Campo hijos"
+
+msgctxt "field:ir.ui.view,inherit:0"
+msgid "Inherited View"
+msgstr "Vista heredada"
+
+msgctxt "field:ir.ui.view,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.ui.view,module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "field:ir.ui.view,priority:0"
+msgid "Priority"
+msgstr "Prioridad"
+
+msgctxt "field:ir.ui.view,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.ui.view,type:0"
+msgid "View Type"
+msgstr "Tipo de vista"
+
+msgctxt "field:ir.ui.view_sc,name:0"
+msgid "Shortcut Name"
+msgstr "Nombre del marcador"
+
+msgctxt "field:ir.ui.view_sc,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.ui.view_sc,res_id:0"
+msgid "Resource Ref."
+msgstr "Ref. del recurso"
+
+msgctxt "field:ir.ui.view_sc,resource:0"
+msgid "Resource Name"
+msgstr "Nombre del recurso"
+
+msgctxt "field:ir.ui.view_sc,sequence:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "field:ir.ui.view_sc,user_id:0"
+msgid "User Ref."
+msgstr "Ref. del usuario"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,child_name:0"
+msgid "Child Name"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,domain:0"
+msgid "Domain"
+msgstr "Dominio"
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,nodes:0"
+msgid "Expanded Nodes"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,rec_name:0"
+msgid "Name"
+msgstr "Nombre del campo"
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,user:0"
+msgid "User"
+msgstr "Usuario"
+
+msgctxt "field:ir.ui.view_tree_width,field:0"
+msgid "Field"
+msgstr "Campo"
+
+msgctxt "field:ir.ui.view_tree_width,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:ir.ui.view_tree_width,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.ui.view_tree_width,user:0"
+msgid "User"
+msgstr "Usuario"
+
+msgctxt "field:ir.ui.view_tree_width,width:0"
+msgid "Width"
+msgstr "Ancho"
+
+msgctxt "help:ir.action.act_window,auto_refresh:0"
+msgid "Add an auto-refresh on the view"
+msgstr "Añade un refresco automático a la vista"
+
+msgctxt "help:ir.action.act_window,limit:0"
+msgid "Default limit for the list view"
+msgstr "Límite predeterminado para la vista en lista"
+
+msgctxt "help:ir.action.act_window,search_value:0"
+msgid "Default search criteria for the list view"
+msgstr "Criterio de búsqueda predeterminado para la vista en lista"
+
+msgctxt "help:ir.action.act_window,window_name:0"
+msgid "Use the action name as window name"
+msgstr "Usar el nombre de la acción como el nombre de la ventana"
+
+msgctxt "help:ir.action.report,extension:0"
+msgid ""
+"Leave empty for the same as template, see unoconv documentation for "
+"compatible format"
+msgstr ""
+
+msgctxt "help:ir.action.report,style:0"
+msgid "Define the style to apply on the report."
+msgstr "Definir el estilo a aplicar al informe."
+
+msgctxt "help:ir.action.wizard,window:0"
+msgid "Run wizard in a new window"
+msgstr "Ejecutar asistente en una nueva ventana"
+
+msgctxt "help:ir.cron,number_calls:0"
+msgid ""
+"Number of times the function is called, a negative number indicates that the"
+" function will always be called"
+msgstr ""
+
+msgctxt "help:ir.cron,request_user:0"
+msgid "The user who will receive requests in case of failure"
+msgstr "El usuario que recibirá peticiones en caso de error"
+
+msgctxt "help:ir.cron,user:0"
+msgid "The user used to execute this action"
+msgstr "El usuario que se utilizará para ejecutar esta acción"
+
+msgctxt "help:ir.lang,code:0"
+msgid "RFC 4646 tag: http://tools.ietf.org/html/rfc4646"
+msgstr "RFC 4646 tag: http://tools.ietf.org/html/rfc4646"
+
+msgctxt "help:ir.model,module:0"
+msgid "Module in which this model is defined"
+msgstr "El módulo en el que este modelo está definido"
+
+msgctxt "help:ir.model.data,db_id:0"
+msgid "The id of the record in the database."
+msgstr "El id del registro en la base de datos."
+
+msgctxt "help:ir.model.data,fs_id:0"
+msgid "The id of the record as known on the file system."
+msgstr "El id del registro tal y como se conoce en el sistema de archivos."
+
+msgctxt "help:ir.model.field,module:0"
+msgid "Module in which this field is defined"
+msgstr "El módulo en el que este campo está definido"
+
+msgctxt "help:ir.model.print_model_graph.init,filter:0"
+msgid ""
+"Entering a Python Regular Expression will exclude matching models from the "
+"graph."
+msgstr ""
+
+msgctxt "help:ir.rule.group,default_p:0"
+msgid "Add this rule to all users by default"
+msgstr "Añadir esta regla para todos los usuarios de forma predeterminada"
+
+msgctxt "help:ir.rule.group,global_p:0"
+msgid ""
+"Make the rule global \n"
+"so every users must follow this rule"
+msgstr ""
+"Hacer la regla global\n"
+"de forma que todos los usuarios deban seguirla"
+
+msgctxt "help:ir.rule.group,rules:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr "La regla se satisface si al menos una condición es cierta"
+
+msgctxt "help:ir.trigger,condition:0"
+msgid ""
+"A Python statement evaluated with record represented by \"self\"\n"
+"It triggers the action if true."
+msgstr ""
+
+msgctxt "help:ir.trigger,limit_number:0"
+msgid ""
+"Limit the number of call to \"Action Function\" by records.\n"
+"0 for no limit."
+msgstr ""
+
+msgctxt "help:ir.trigger,minimum_delay:0"
+msgid ""
+"Set a minimum delay in minutes between call to \"Action Function\" for the same record.\n"
+"0 for no delay."
+msgstr ""
+
+msgctxt "model:ir.action,name:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "model:ir.action,name:act_action_act_window_form"
+msgid "Window Actions"
+msgstr "Acciones de la ventana"
+
+msgctxt "model:ir.action,name:act_action_form"
+msgid "Actions"
+msgstr "Acciones"
+
+msgctxt "model:ir.action,name:act_action_report_form"
+msgid "Reports"
+msgstr "Informes"
+
+msgctxt "model:ir.action,name:act_action_url_form"
+msgid "URLs"
+msgstr "URLs"
+
+msgctxt "model:ir.action,name:act_action_wizard_form"
+msgid "Wizards"
+msgstr "Asistentes"
+
+msgctxt "model:ir.action,name:act_attachment_form"
+msgid "Attachments"
+msgstr "Adjuntos"
+
+msgctxt "model:ir.action,name:act_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr "Configurar los elementos del asistente"
+
+msgctxt "model:ir.action,name:act_cron_form"
+msgid "Scheduled Actions"
+msgstr "Acciones programadas"
+
+msgctxt "model:ir.action,name:act_export_form"
+msgid "Exports"
+msgstr "Exportaciones"
+
+msgctxt "model:ir.action,name:act_icon_form"
+msgid "Icons"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_lang_form"
+msgid "Languages"
+msgstr "Idiomas"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_menu_list"
+msgid "Menu"
+msgstr "Menú"
+
+msgctxt "model:ir.action,name:act_menu_tree"
+msgid "Menu"
+msgstr "Menú"
+
+msgctxt "model:ir.action,name:act_model_access_form"
+msgid "Models Access"
+msgstr "Acceso a los modelos"
+
+msgctxt "model:ir.action,name:act_model_field_access_form"
+msgid "Fields Access"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_model_fields_form"
+msgid "Fields"
+msgstr "Campos"
+
+msgctxt "model:ir.action,name:act_model_form"
+msgid "Models"
+msgstr "Modelos"
+
+msgctxt "model:ir.action,name:act_module_config_wizard"
+msgid "Module Configuration"
+msgstr "Configuración del módulo"
+
+msgctxt "model:ir.action,name:act_module_form"
+msgid "Modules"
+msgstr "Módulos"
+
+msgctxt "model:ir.action,name:act_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr "Realizar Instalaciones/Actualizaciones pendientes"
+
+msgctxt "model:ir.action,name:act_property_form"
+msgid "Properties"
+msgstr "Propiedades"
+
+msgctxt "model:ir.action,name:act_property_form_default"
+msgid "Default Properties"
+msgstr "Propiedades predeterminadas"
+
+msgctxt "model:ir.action,name:act_rule_group_form"
+msgid "Record Rules"
+msgstr "Grabar reglas"
+
+msgctxt "model:ir.action,name:act_sequence_form"
+msgid "Sequences"
+msgstr "Secuencias"
+
+msgctxt "model:ir.action,name:act_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr "Secuencias estrictas"
+
+msgctxt "model:ir.action,name:act_sequence_type_form"
+msgid "Sequence Types"
+msgstr "Tipos de secuencia"
+
+msgctxt "model:ir.action,name:act_translation_clean"
+msgid "Clean Translations"
+msgstr "Limpiar traducciones"
+
+msgctxt "model:ir.action,name:act_translation_export"
+msgid "Export Translations"
+msgstr "Exportar traducciones"
+
+msgctxt "model:ir.action,name:act_translation_form"
+msgid "Translations"
+msgstr "Traducciones"
+
+msgctxt "model:ir.action,name:act_translation_set_report"
+msgid "Set Report Translations"
+msgstr "Extraer traducciones de los informes"
+
+msgctxt "model:ir.action,name:act_translation_update"
+msgid "Synchronize Translations"
+msgstr "Sincronizar traducciones"
+
+msgctxt "model:ir.action,name:act_trigger_form"
+msgid "Triggers"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_form"
+msgid "Views"
+msgstr "Vistas"
+
+msgctxt "model:ir.action,name:act_view_sc_add"
+msgid "Add Shortcut"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_sc_form"
+msgid "View Shortcuts"
+msgstr "Ver marcadores"
+
+msgctxt "model:ir.action,name:act_view_sc_open"
+msgid "Open Shortcut"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_show"
+msgid "Show View"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_tree_width_form"
+msgid "View Tree Width"
+msgstr "Ancho de la vista en árbol"
+
+msgctxt "model:ir.action,name:print_model_graph"
+msgid "Graph"
+msgstr "Gráfico"
+
+msgctxt "model:ir.action,name:report_model_graph"
+msgid "Graph"
+msgstr "Gráfico"
+
+msgctxt "model:ir.action.act_window,name:0"
+msgid "Action act window"
+msgstr "Ventana de acciones"
+
+msgctxt "model:ir.action.act_window.view,name:0"
+msgid "Action act window view"
+msgstr "Vista de ventana de acción"
+
+msgctxt "model:ir.action.keyword,name:0"
+msgid "Action keyword"
+msgstr "Palabra clave de acción"
+
+msgctxt "model:ir.action.report,name:0"
+msgid "Action report"
+msgstr "Informe de acción"
+
+msgctxt "model:ir.action.url,name:0"
+msgid "Action URL"
+msgstr "URL de la acción"
+
+msgctxt "model:ir.action.wizard,name:0"
+msgid "Action wizard"
+msgstr "Asistente de la acción"
+
+msgctxt "model:ir.attachment,name:0"
+msgid "Attachment"
+msgstr "Adjunto"
+
+msgctxt "model:ir.cache,name:0"
+msgid "Cache"
+msgstr "Caché"
+
+msgctxt "model:ir.cron,name:0"
+msgid "Cron"
+msgstr "Programador de tareas"
+
+msgctxt "model:ir.date,name:0"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "model:ir.export,name:0"
+msgid "Export"
+msgstr "Exportar"
+
+msgctxt "model:ir.export.line,name:0"
+msgid "Export line"
+msgstr "Exportar línea"
+
+msgctxt "model:ir.lang,name:0"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "model:ir.lang,name:lang_bg"
+msgid "Bulgarian"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_cs"
+msgid "Czech"
+msgstr "Checo"
+
+msgctxt "model:ir.lang,name:lang_de"
+msgid "German"
+msgstr "Alemán"
+
+msgctxt "model:ir.lang,name:lang_en"
+msgid "English"
+msgstr "Inglés"
+
+msgctxt "model:ir.lang,name:lang_es"
+msgid "Spanish (Spain)"
+msgstr "Español (España)"
+
+msgctxt "model:ir.lang,name:lang_es_CO"
+msgid "Spanish (Colombia)"
+msgstr "Español (Colombia)"
+
+msgctxt "model:ir.lang,name:lang_fr"
+msgid "French"
+msgstr "Francés"
+
+msgctxt "model:ir.lang,name:lang_nl"
+msgid "Dutch"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_ru"
+msgid "Russian"
+msgstr ""
+
+msgctxt "model:ir.model,name:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "model:ir.model.access,name:0"
+msgid "Model access"
+msgstr "Modelo de accesos"
+
+msgctxt "model:ir.model.data,name:0"
+msgid "Model data"
+msgstr "Modelo de datos"
+
+msgctxt "model:ir.model.field,name:0"
+msgid "Model field"
+msgstr "Modelo de campo"
+
+msgctxt "model:ir.model.field.access,name:0"
+msgid "Model Field Access"
+msgstr ""
+
+msgctxt "model:ir.model.print_model_graph.init,name:0"
+msgid "Print Model Graph Init"
+msgstr "Imprimir inicio de modelo de gráfico"
+
+msgctxt "model:ir.module.module,name:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "model:ir.module.module.config_wizard.first,name:0"
+msgid "Module Config Wizard First"
+msgstr "Módulo del primer asistente de configuración"
+
+msgctxt "model:ir.module.module.config_wizard.item,name:0"
+msgid "Config wizard to run after installing module"
+msgstr ""
+"El asistente de configuración a ejecutar después de instalar un módulo"
+
+msgctxt "model:ir.module.module.dependency,name:0"
+msgid "Module dependency"
+msgstr "Dependencias del módulo"
+
+msgctxt "model:ir.module.module.install_upgrade.init,name:0"
+msgid "Module Install Upgrade Init"
+msgstr "Inicialización de la actualización de instalación de módulos"
+
+msgctxt "model:ir.module.module.install_upgrade.start,name:0"
+msgid "Module Install Upgrade Start"
+msgstr "Iniciar la instalación de actualizaciones de módulos"
+
+msgctxt "model:ir.property,name:0"
+msgid "Property"
+msgstr "Propiedad"
+
+msgctxt "model:ir.rule,name:0"
+msgid "Rule"
+msgstr "Regla"
+
+msgctxt "model:ir.rule.group,name:0"
+msgid "Rule group"
+msgstr "Regla de grupo"
+
+msgctxt "model:ir.sequence,name:0"
+msgid "Sequence"
+msgstr "Secuencia"
+
+msgctxt "model:ir.sequence.strict,name:0"
+msgid "Sequence Strict"
+msgstr "Secuencia estricta"
+
+msgctxt "model:ir.sequence.type,name:0"
+msgid "Sequence type"
+msgstr "Tipo de secuencia"
+
+msgctxt "model:ir.translation,name:0"
+msgid "Translation"
+msgstr "Traducción"
+
+msgctxt "model:ir.translation.clean.init,name:0"
+msgid "Clean translation init"
+msgstr "Inicialización de la limpieza de traducciones"
+
+msgctxt "model:ir.translation.clean.start,name:0"
+msgid "Clean translation start"
+msgstr "Iniciar limpieza de traducciones"
+
+msgctxt "model:ir.translation.export.init,name:0"
+msgid "Export translation - language and module"
+msgstr "Exportar traducción - idioma y módulo"
+
+msgctxt "model:ir.translation.export.start,name:0"
+msgid "Export translation - file"
+msgstr "Exportar traducción - archivo"
+
+msgctxt "model:ir.translation.set_report.init,name:0"
+msgid "Update Report Translation"
+msgstr "Actualizar traducciones de informes"
+
+msgctxt "model:ir.translation.set_report.start,name:0"
+msgid "Update Report Translation"
+msgstr "Actualizar traducciones de informes"
+
+msgctxt "model:ir.translation.update.init,name:0"
+msgid "Update translation - language"
+msgstr "Actualiza traducción - idioma"
+
+msgctxt "model:ir.trigger,name:0"
+msgid "Trigger"
+msgstr ""
+
+msgctxt "model:ir.trigger.log,name:0"
+msgid "Trigger Log"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:ir.ui.icon,name:0"
+msgid "Icon"
+msgstr "Icono"
+
+msgctxt "model:ir.ui.menu,name:0"
+msgid "UI menu"
+msgstr "Menú UI"
+
+msgctxt "model:ir.ui.menu,name:menu_act_action"
+msgid "Actions"
+msgstr "Acciones"
+
+msgctxt "model:ir.ui.menu,name:menu_action"
+msgid "Actions"
+msgstr "Acciones"
+
+msgctxt "model:ir.ui.menu,name:menu_action_act_window"
+msgid "Window Actions"
+msgstr "Acciones de la ventana"
+
+msgctxt "model:ir.ui.menu,name:menu_action_report_form"
+msgid "Reports"
+msgstr "Informes"
+
+msgctxt "model:ir.ui.menu,name:menu_action_url"
+msgid "URLs"
+msgstr "URLs"
+
+msgctxt "model:ir.ui.menu,name:menu_action_wizard"
+msgid "Wizards"
+msgstr "Asistentes"
+
+msgctxt "model:ir.ui.menu,name:menu_administration"
+msgid "Administration"
+msgstr "Administración"
+
+msgctxt "model:ir.ui.menu,name:menu_attachment_form"
+msgid "Attachments"
+msgstr "Adjuntos"
+
+msgctxt "model:ir.ui.menu,name:menu_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr "Configurar los elementos del asistente"
+
+msgctxt "model:ir.ui.menu,name:menu_cron_form"
+msgid "Scheduled Actions"
+msgstr "Acciones programadas"
+
+msgctxt "model:ir.ui.menu,name:menu_export_form"
+msgid "Exports"
+msgstr "Exportaciones"
+
+msgctxt "model:ir.ui.menu,name:menu_icon_form"
+msgid "Icons"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_ir_sequence_type"
+msgid "Sequence Types"
+msgstr "Tipos de secuencia"
+
+msgctxt "model:ir.ui.menu,name:menu_lang_form"
+msgid "Languages"
+msgstr "Idiomas"
+
+msgctxt "model:ir.ui.menu,name:menu_localization"
+msgid "Localization"
+msgstr "Localización"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_menu_list"
+msgid "Menu"
+msgstr "Menú"
+
+msgctxt "model:ir.ui.menu,name:menu_model_access_form"
+msgid "Models Access"
+msgstr "Acceso a los modelos"
+
+msgctxt "model:ir.ui.menu,name:menu_model_field_access_form"
+msgid "Fields Access"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_model_form"
+msgid "Models"
+msgstr "Modelos"
+
+msgctxt "model:ir.ui.menu,name:menu_models"
+msgid "Models"
+msgstr "Modelos"
+
+msgctxt "model:ir.ui.menu,name:menu_module_form"
+msgid "Modules"
+msgstr "Módulos"
+
+msgctxt "model:ir.ui.menu,name:menu_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr "Realizar Instalaciones/Actualizaciones pendientes"
+
+msgctxt "model:ir.ui.menu,name:menu_modules"
+msgid "Modules"
+msgstr "Módulos"
+
+msgctxt "model:ir.ui.menu,name:menu_property_form"
+msgid "Properties"
+msgstr "Propiedades"
+
+msgctxt "model:ir.ui.menu,name:menu_property_form_default"
+msgid "Default Properties"
+msgstr "Propiedades predeterminadas"
+
+msgctxt "model:ir.ui.menu,name:menu_rule_group_form"
+msgid "Record Rules"
+msgstr "Grabar reglas"
+
+msgctxt "model:ir.ui.menu,name:menu_scheduler"
+msgid "Scheduler"
+msgstr "Programador de tareas"
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_form"
+msgid "Sequences"
+msgstr "Secuencias"
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr "Secuencias estrictas"
+
+msgctxt "model:ir.ui.menu,name:menu_sequences"
+msgid "Sequences"
+msgstr "Secuencias"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_clean"
+msgid "Clean Translations"
+msgstr "Limpiar traducciones"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_export"
+msgid "Export Translations"
+msgstr "Exportar traducciones"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_form"
+msgid "Translations"
+msgstr "Traducciones"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_set_report"
+msgid "Set Report Translations"
+msgstr "Extraer traducciones de los informes"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_update"
+msgid "Synchronize Translations"
+msgstr "Sincronizar traducciones"
+
+msgctxt "model:ir.ui.menu,name:menu_trigger_form"
+msgid "Triggers"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_ui"
+msgid "User Interface"
+msgstr "Interfaz de usuario"
+
+msgctxt "model:ir.ui.menu,name:menu_view"
+msgid "Views"
+msgstr "Vistas"
+
+msgctxt "model:ir.ui.menu,name:menu_view_sc"
+msgid "View Shortcuts"
+msgstr "Ver marcadores"
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_width"
+msgid "View Tree Width"
+msgstr "Ancho de la vista en árbol"
+
+msgctxt "model:ir.ui.menu,name:model_model_fields_form"
+msgid "Fields"
+msgstr "Campos"
+
+msgctxt "model:ir.ui.view,name:0"
+msgid "View"
+msgstr "Vista"
+
+msgctxt "model:ir.ui.view.show.init,name:0"
+msgid "ir.ui.view.show.init"
+msgstr ""
+
+msgctxt "model:ir.ui.view_sc,name:0"
+msgid "View shortcut"
+msgstr "Vista del marcador"
+
+msgctxt "model:ir.ui.view_tree_expanded_state,name:0"
+msgid "ir.ui.view_tree_expanded_state"
+msgstr ""
+
+msgctxt "model:ir.ui.view_tree_width,name:0"
+msgid "View Tree Width"
+msgstr "Ancho de la vista en árbol"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action form"
+msgstr "Formulario de acción"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action tree"
+msgstr "Árbol de acciones"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Form relate"
+msgstr "Formulario relacionado"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open Graph"
+msgstr "Abrir gráfico"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open tree"
+msgstr "Desplegar árbol"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Print form"
+msgstr "Imprimir formulario"
+
+msgctxt "selection:ir.attachment,type:0"
+msgid "Data"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:ir.attachment,type:0"
+msgid "Link"
+msgstr "Enlace"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Days"
+msgstr "Días"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Hours"
+msgstr "Horas"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Minutes"
+msgstr "Minutos"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Months"
+msgstr "Meses"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Weeks"
+msgstr "Semanas"
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Left-to-right"
+msgstr "De izquierda a derecha"
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Right-to-left"
+msgstr "De derecha a izquierda"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Installed"
+msgstr "Instalado"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Not Installed"
+msgstr "No instalado"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be installed"
+msgstr "Pendiente de ser instalado"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be removed"
+msgstr "Pendiente de ser eliminado"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be upgraded"
+msgstr "Pendiente de ser actualizado"
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Done"
+msgstr "Terminado"
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Open"
+msgstr "Abrir"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Installed"
+msgstr "Instalado"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Not Installed"
+msgstr "No instalado"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be installed"
+msgstr "Pendiente de instalar"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be removed"
+msgstr "Pendiente de ser eliminado"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be upgraded"
+msgstr "Pendiente de ser actualizado"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Unknown"
+msgstr "Desconocido"
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Decimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Incremental"
+msgstr ""
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Decimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Incremental"
+msgstr ""
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Error"
+msgstr "Error"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Field"
+msgstr "Campo"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Help"
+msgstr "Ayuda"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "ODT"
+msgstr "ODT"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Selection"
+msgstr "Selección"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "View"
+msgstr "Vista"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Wizard Button"
+msgstr "Botón de asistente"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.act_window"
+msgstr "ir.action.act_window"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.report"
+msgstr "ir.action.report"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.url"
+msgstr "ir.action.url"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.wizard"
+msgstr "ir.action.wizard"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid ""
+msgstr ""
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Board"
+msgstr "Tablón"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Form"
+msgstr "Formulario"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Graph"
+msgstr "Gráfico"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Tree"
+msgstr "Árbol"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keyword"
+msgstr "Palabra clave"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keywords"
+msgstr "Palabras clave"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open Window"
+msgstr "Abrir ventana"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open a Window"
+msgstr "Abrir una ventana"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Views"
+msgstr "Vistas"
+
+msgctxt "view:ir.action.report:0"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:ir.action.report:0"
+msgid "Keyword"
+msgstr "Palabra clave"
+
+msgctxt "view:ir.action.report:0"
+msgid "Keywords"
+msgstr "Palabras clave"
+
+msgctxt "view:ir.action.report:0"
+msgid "Report"
+msgstr "Informe"
+
+msgctxt "view:ir.action.report:0"
+msgid "Report xml"
+msgstr "Informe xml"
+
+msgctxt "view:ir.action.url:0"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:ir.action.url:0"
+msgid "Keyword"
+msgstr "Palabra clave"
+
+msgctxt "view:ir.action.url:0"
+msgid "Keywords"
+msgstr "Palabras clave"
+
+msgctxt "view:ir.action.url:0"
+msgid "URL"
+msgstr "URL"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keyword"
+msgstr "Palabra clave"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keywords"
+msgstr "Palabras clave"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Wizard"
+msgstr "Asistente"
+
+msgctxt "view:ir.action:0"
+msgid "Action"
+msgstr "Acción"
+
+msgctxt "view:ir.action:0"
+msgid "General"
+msgstr "General"
+
+msgctxt "view:ir.action:0"
+msgid "Keyword"
+msgstr "Palabra clave"
+
+msgctxt "view:ir.action:0"
+msgid "Keywords"
+msgstr "Palabras clave"
+
+msgctxt "view:ir.attachment:0"
+msgid "Attachments"
+msgstr "Adjuntos"
+
+msgctxt "view:ir.cron:0"
+msgid "Action to trigger"
+msgstr "Acción a disparar"
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Action"
+msgstr "Acción programada"
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Actions"
+msgstr "Acciones programadas"
+
+msgctxt "view:ir.export:0"
+msgid "Exports"
+msgstr "Exportaciones"
+
+msgctxt "view:ir.lang:0"
+msgid "Date Formatting"
+msgstr "Formato de fecha"
+
+msgctxt "view:ir.lang:0"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "view:ir.lang:0"
+msgid "Languages"
+msgstr "Idiomas"
+
+msgctxt "view:ir.lang:0"
+msgid "Numbers Formatting"
+msgstr "Formato de números"
+
+msgctxt "view:ir.model.access:0"
+msgid "Access controls"
+msgstr "Controles de acceso"
+
+msgctxt "view:ir.model.field.access:0"
+msgid "Field Access"
+msgstr ""
+
+msgctxt "view:ir.model.field:0"
+msgid "Fields"
+msgstr "Campos"
+
+msgctxt "view:ir.model.print_model_graph.init:0"
+msgid "Print Model Graph"
+msgstr "Imprimir el gráfico del modelo"
+
+msgctxt "view:ir.model:0"
+msgid "Fields Description"
+msgstr "Descripción de campos"
+
+msgctxt "view:ir.model:0"
+msgid "Model Description"
+msgstr "Descripción del modelo"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "Welcome to the module configuration wizard!"
+msgstr "Bienvenido al asistente de configuración del módulo"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "You will be able to configure your installation"
+msgstr "Podrá configurar su instalación"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid ""
+"You will be able to configure your installation depending on the modules you"
+" have installed."
+msgstr ""
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "depending on the modules you have installed."
+msgstr "dependiendo de los módulos que haya instalado."
+
+msgctxt "view:ir.module.module.config_wizard.item:0"
+msgid "Config Wizard Items"
+msgstr "Configurar los elementos del asistente"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Note that this operation my take a few minutes."
+msgstr "Tenga en cuenta que esta operación puede durar varios minutos."
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "System Upgrade"
+msgstr "Actualización del sistema"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Your system will be upgraded."
+msgstr "Su sistema se actualizará."
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "System upgrade done"
+msgstr "Actualización del sistema terminada"
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "The modules have been upgraded / installed !"
+msgstr "Los módulos se han actualizado / instalado"
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "We suggest you to reload the menu tab (Ctrl+t Ctrl+r)."
+msgstr "Le sugerimos que recargue la barra del menú (Ctrl+t Ctrl+r)."
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "You may have to reinstall some language pack."
+msgstr "Es posible que necesite reinstalar un paquete de idioma."
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr "Cancelar instalación"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr "Cancelar desinstalación"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr "Cancelar actualización"
+
+msgctxt "view:ir.module.module:0"
+msgid "Dependencies"
+msgstr "Dependencias"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr "Marcar para instalar"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr "Marcar para desinstalar (beta)"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr "Marcar para actualizar"
+
+msgctxt "view:ir.module.module:0"
+msgid "Module"
+msgstr "Módulo"
+
+msgctxt "view:ir.module.module:0"
+msgid "Modules"
+msgstr "Módulos"
+
+msgctxt "view:ir.property:0"
+msgid "Properties"
+msgstr "Propiedades"
+
+msgctxt "view:ir.property:0"
+msgid "Property"
+msgstr "Propiedad"
+
+msgctxt "view:ir.rule.group:0"
+msgid ""
+"If there is no test defined, the rule is always satisfied if not global"
+msgstr ""
+"Si no hay ninguna prueba definida, la regla se aplica siempre que no sea "
+"global"
+
+msgctxt "view:ir.rule.group:0"
+msgid "Record rules"
+msgstr "Grabar reglas"
+
+msgctxt "view:ir.rule.group:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr "La regla se satisface si por lo menos una condición es verdadera"
+
+msgctxt "view:ir.rule:0"
+msgid "Test"
+msgstr "Prueba"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "${day}"
+msgstr "${day}"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "${month}"
+msgstr "${month}"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "${year}"
+msgstr "${year}"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Day:"
+msgstr "Día:"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Legend (for prefix, suffix)"
+msgstr "Leyenda (variables para usar en prefijo y/o sufijo)"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Month:"
+msgstr "Mes:"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Sequences Strict"
+msgstr "Secuencias estrictas"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Year:"
+msgstr "Año:"
+
+msgctxt "view:ir.sequence.type:0"
+msgid "Sequence Type"
+msgstr "Tipo de secuencia"
+
+msgctxt "view:ir.sequence:0"
+msgid "${day}"
+msgstr "${day}"
+
+msgctxt "view:ir.sequence:0"
+msgid "${month}"
+msgstr "${month}"
+
+msgctxt "view:ir.sequence:0"
+msgid "${year}"
+msgstr "${year}"
+
+msgctxt "view:ir.sequence:0"
+msgid "Day:"
+msgstr "Día:"
+
+msgctxt "view:ir.sequence:0"
+msgid "Incremental"
+msgstr ""
+
+msgctxt "view:ir.sequence:0"
+msgid "Legend (Placeholders for prefix, suffix)"
+msgstr "Leyenda (variables para usar en prefijo y/o sufijo)"
+
+msgctxt "view:ir.sequence:0"
+msgid "Legend (for prefix, suffix)"
+msgstr "Leyenda (para prefijo, sufijo)"
+
+msgctxt "view:ir.sequence:0"
+msgid "Month:"
+msgstr "Mes:"
+
+msgctxt "view:ir.sequence:0"
+msgid "Sequences"
+msgstr "Secuencias"
+
+#, fuzzy
+msgctxt "view:ir.sequence:0"
+msgid "Timestamp"
+msgstr "Marca de tiempo"
+
+msgctxt "view:ir.sequence:0"
+msgid "Year:"
+msgstr "Año:"
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations"
+msgstr "Limpiar Traducciones"
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations?"
+msgstr "¿Limpiar traducciones?"
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations"
+msgstr "Limpiar Traducciones"
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations Succeed!"
+msgstr "Las traducciones se limpiaron correctamente"
+
+msgctxt "view:ir.translation.export.init:0"
+msgid "Export Translation"
+msgstr "Exportar traducción"
+
+msgctxt "view:ir.translation.export.start:0"
+msgid "Export Translation"
+msgstr "Exportar traducción"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Set Report Translations"
+msgstr "Extraer traducciones de informes"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Synchronize Report Translations?"
+msgstr "¿Sincronizar las traducciones de los informes?"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Update Report Translations?"
+msgstr "¿Actualizar las traducciones de los informes?"
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Report Translations"
+msgstr "Extraer traducciones de los informes"
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Translations Succeed!"
+msgstr "La extracción de las traducciones terminó correctamente"
+
+msgctxt "view:ir.translation.update.init:0"
+msgid "Synchronize Translations"
+msgstr "Sincronizar traducciones"
+
+msgctxt "view:ir.translation.update.init:0"
+msgid "Update Translations"
+msgstr "Actualizar traducciones"
+
+msgctxt "view:ir.translation:0"
+msgid "Translations"
+msgstr "Traducciones"
+
+msgctxt "view:ir.trigger:0"
+msgid "Trigger"
+msgstr ""
+
+msgctxt "view:ir.trigger:0"
+msgid "Triggers"
+msgstr ""
+
+#, fuzzy
+msgctxt "view:ir.ui.icon:0"
+msgid "Icon"
+msgstr "Icono"
+
+msgctxt "view:ir.ui.icon:0"
+msgid "Icons"
+msgstr ""
+
+msgctxt "view:ir.ui.menu:0"
+msgid "Menu"
+msgstr "Menú"
+
+msgctxt "view:ir.ui.view:0"
+msgid "View"
+msgstr "Vista"
+
+msgctxt "view:ir.ui.view:0"
+msgid "_Show"
+msgstr ""
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcut"
+msgstr "Marcador"
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcuts"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "View Tree Expanded State"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "Views Tree Expanded State"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "View Tree Width"
+msgstr "Ancho de la vista en árbol"
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "Views Tree Width"
+msgstr "Ancho de la vista en árbol"
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,print:0"
+msgid "Print"
+msgstr "Imprimir"
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,wizard:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,start:0"
+msgid "Start Upgrade"
+msgstr "Iniciar actualización"
+
+#, fuzzy
+msgctxt "wizard_button:ir.module.module.install_upgrade,start,config:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:ir.translation.clean,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:ir.translation.clean,init,start:0"
+msgid "Start"
+msgstr "Iniciar"
+
+msgctxt "wizard_button:ir.translation.clean,start,end:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:ir.translation.export,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:ir.translation.export,init,start:0"
+msgid "Start Export"
+msgstr "Iniciar exportación"
+
+msgctxt "wizard_button:ir.translation.export,start,end:0"
+msgid "Close"
+msgstr "Cerrar"
+
+msgctxt "wizard_button:ir.translation.set_report,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:ir.translation.set_report,init,start:0"
+msgid "Start Update"
+msgstr "Iniciar actualización"
+
+msgctxt "wizard_button:ir.translation.set_report,start,end:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:ir.translation.update,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:ir.translation.update,init,start:0"
+msgid "Start Update"
+msgstr "Iniciar actualización"
+
+#, fuzzy
+msgctxt "wizard_button:ir.ui.view.show,init,end:0"
+msgid "Close"
+msgstr "Cerrar"
diff --git a/trytond/ir/locale/fr_FR.po b/trytond/ir/locale/fr_FR.po
new file mode 100644
index 0000000..bb67458
--- /dev/null
+++ b/trytond/ir/locale/fr_FR.po
@@ -0,0 +1,2868 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:access_error:0"
+msgid ""
+"You try to bypass an access rule!\n"
+"(Document type: %s)"
+msgstr ""
+"Vous essayez d'enfreindre une règle d'accès\n"
+"(Type du document: %s)"
+
+msgctxt "error:delete_workflow_record:0"
+msgid "You cannot delete a record with a running workflow."
+msgstr ""
+"Vous ne pouvez pas supprimer un enregistrement avec un workflow actif."
+
+msgctxt "error:delete_xml_record:0"
+msgid "You are not allowed to delete this record."
+msgstr "Vous n'êtes pas authorisé à supprimer cet enregistrement"
+
+msgctxt "error:digits_validation_record:0"
+msgid "The field \"%s\" on \"%s\" has too many decimal digits."
+msgstr "Le champ \"%s\" de \"%s\" à trop de décimales."
+
+msgctxt "error:domain_validation_record:0"
+msgid "The value of the field \"%s\" on \"%s\" is not valid according to its domain."
+msgstr "La valeur du champ \"%s\" de \"%s\" n'est pas valide suivant son domaine."
+
+msgctxt "error:foreign_model_exist:0"
+msgid "Could not delete \"%s\" records because they are used on field \"%s\" of \"%s\"."
+msgstr ""
+"Impossible de supprimer les enregistrements \"%s\" car ils sont utilisé dans"
+" le champ \"%s\" de \"%s\"."
+
+msgctxt "error:foreign_model_missing:0"
+msgid "The value of field \"%s\" on \"%s\" doesn't exist."
+msgstr "La valeur du champ \"%s\" de \"%s\" est absente."
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid context!"
+msgstr "Contexte invalide !"
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid domain or search criteria!"
+msgstr "Domain ou critère de recherche invalide"
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid views!"
+msgstr "Vues invalides !"
+
+msgctxt "error:ir.action.keyword:0"
+msgid "Wrong wizard model!"
+msgstr "Mauvais modèle d'assistant"
+
+msgctxt "error:ir.action.report:0"
+msgid "The internal name must be unique by module!"
+msgstr "Le nom interne doit être unique par module !"
+
+msgctxt "error:ir.attachment:0"
+msgid "The  names of attachments must be unique by resource!"
+msgstr ""
+"Le nom des pièces jointes doivent être unique pour une même ressource !"
+
+msgctxt "error:ir.cron:0"
+msgid "Scheduled action failed"
+msgstr "L'action planifiée a échoué"
+
+msgctxt "error:ir.cron:0"
+msgid ""
+"The following action failed to execute properly: \"%s\"\n"
+" Traceback: \n"
+"\n"
+"%s\n"
+msgstr ""
+"L'action suivante ne c'est pas exécutée correctement: \"%s\"\n"
+" Traceback: \n"
+"\n"
+"%s\n"
+
+msgctxt "error:ir.lang:0"
+msgid "Invalid Grouping!"
+msgstr "Groupement incorrect !"
+
+msgctxt "error:ir.lang:0"
+msgid "The date format is not valid!"
+msgstr "Le format de date est incorrect !"
+
+msgctxt "error:ir.lang:0"
+msgid "decimal_point and thousands_sep must be different!"
+msgstr ""
+"Le séparateur de décimale et le séparateur des centaines doivent être "
+"différents !"
+
+msgctxt "error:ir.model.access:0"
+msgid "Only one record by model and group is allowed!"
+msgstr "Un seul enregistrement par modèle et groupe est autorisé !"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not create this kind of document! (%s)"
+msgstr "Vous ne pouvez pas créer ce type de document ! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not delete this document! (%s)"
+msgstr "Vous ne pouvez pas supprimer ce document ! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not read this document! (%s)"
+msgstr "Vous ne pouvez pas lire ce document ! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not write in this document! (%s)"
+msgstr "Vous ne pouvez pas écrire dans ce document ! (%s)"
+
+msgctxt "error:ir.model.data:0"
+msgid "The triple (fs_id, module, model) must be unique!"
+msgstr "Le triplet (fs_id, module, model) doit être unique !"
+
+msgctxt "error:ir.model.field.access:0"
+msgid "Only one record by field and group is allowed!"
+msgstr "Seul un enregistrement par champs et par groupe est permis !"
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not read the field! (%s.%s)"
+msgstr "Vous ne pouvez lire le champs (%s.%s) !"
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not write on the field! (%s.%s)"
+msgstr "Vous ne pouvez écrire sur le champs (%s.%s) !"
+
+msgctxt "error:ir.model.field:0"
+msgid "Model Field Name must be a python identifier!"
+msgstr "Le nom du champ doit être un identifiant Python valide !"
+
+msgctxt "error:ir.model.field:0"
+msgid "The field name in model must be unique!"
+msgstr "Le nom du champ doit être unique sur le modèle !"
+
+msgctxt "error:ir.model:0"
+msgid "Module Name must be a python identifier!"
+msgstr "Le nom d'un module doit être un identifiant Python"
+
+msgctxt "error:ir.model:0"
+msgid "The model must be unique!"
+msgstr "Le modèle doit être unique !"
+
+msgctxt "error:ir.module.module.dependency:0"
+msgid "Dependency must be unique by module!"
+msgstr "Une dépendance doit être unique par module !"
+
+msgctxt "error:ir.module.module:0"
+msgid "Missing dependencies %s for module \"%s\""
+msgstr "Dépendences %s manquante pour le module \"%s\""
+
+msgctxt "error:ir.module.module:0"
+msgid "The modules you are trying to uninstall depends on installed modules:"
+msgstr ""
+"Les modules que vous essayez de dés-installer dépendent de modules installés"
+" :"
+
+msgctxt "error:ir.module.module:0"
+msgid "The name of the module must be unique!"
+msgstr "Le nom du module doit être unique"
+
+msgctxt "error:ir.module.module:0"
+msgid "You can not remove a module that is installed or will be installed"
+msgstr ""
+"Vous ne pouvez pas supprimer un module qui est installé ou qui le sera"
+
+msgctxt "error:ir.rule.group:0"
+msgid "Global and Default are mutually exclusive!"
+msgstr "Global et Défaut sont exclusifs !"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Invalid prefix/suffix!"
+msgstr "Prefixe/suffixe non valide !"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Last Timestamp could not be in future!"
+msgstr "La dernière estampille ne peut être dans le futur !"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Missing sequence!"
+msgstr "Séquence manquante !"
+
+msgctxt "error:ir.sequence:0"
+msgid "Invalid prefix/suffix!"
+msgstr "Prefixe/suffixe non valide !"
+
+msgctxt "error:ir.sequence:0"
+msgid "Last Timestamp could not be in future!"
+msgstr "La dernière estampille ne peut être dans le futur !"
+
+msgctxt "error:ir.sequence:0"
+msgid "Missing sequence!"
+msgstr "Séquence manquante !"
+
+msgctxt "error:ir.translation:0"
+msgid "Translation must be unique"
+msgstr "La traduction doit être unique"
+
+msgctxt "error:ir.trigger:0"
+msgid "\"On Time\" and others are mutually exclusive!"
+msgstr "\"À temps\" exclus les autres type de déclencheurs !"
+
+msgctxt "error:ir.trigger:0"
+msgid "Condition must be a python expression!"
+msgstr "La condition doit être une expression Python!"
+
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not create recursive menu!"
+msgstr "Vous ne pouvez pas créer de menus récursives !"
+
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not use \" / \" in name field!"
+msgstr "Vous ne pouvez pas utiliser \" / \" dans le champ nom !"
+
+msgctxt "error:ir.ui.view.show:0"
+msgid "Only \"form\" view can be shown!"
+msgstr "Seulement les vues \"formulaire\" peuvent être montrées !"
+
+msgctxt "error:ir.ui.view:0"
+msgid "Invalid XML for View!"
+msgstr "L'xml de la vue n'est pas valide !"
+
+msgctxt "error:not_found_in_selection:0"
+msgid "Key %r not found in selection field %r"
+msgstr "Clé %r non trouvée dans la sélection %r"
+
+msgctxt "error:read_error:0"
+msgid ""
+"You try to read records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr ""
+"Vous essayez de lire un enregistrement qui n'existe plus !\n"
+"(Type du document: %s)"
+
+msgctxt "error:reference_syntax_error:0"
+msgid "Syntax error for reference %r in %s"
+msgstr "Erreur de syntaxe pour la référence %r de %r"
+
+msgctxt "error:relation_not_found:0"
+msgid "Relation not found: %r in %s"
+msgstr "Relation non trouvée : %r dans %r"
+
+msgctxt "error:required_field:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr "Le champ \"%s\" de \"%s\" est requis."
+
+msgctxt "error:required_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr "Le champ \"%s\" de \"%s\" est requis."
+
+msgctxt "error:search_function_missing:0"
+msgid "Missing search function on field \"%s\"."
+msgstr "Fonction de recherche absente pour le champ \"%s\"."
+
+msgctxt "error:size_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is too long."
+msgstr "Le champ \"%s\" de \"%s\" est trop long"
+
+msgctxt "error:too_many_relations_found:0"
+msgid "Too many relations found: %r in %s"
+msgstr "Trop de relations pour : %r dans %s"
+
+msgctxt "error:write_error:0"
+msgid ""
+"You try to write on records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr ""
+"Vous essayez d'écrire sur un enregistrement qui n'existe plus !\n"
+"(Type du document: %s)"
+
+msgctxt "error:write_xml_record:0"
+msgid "You are not allowed to modify this record."
+msgstr "Vous n'êtes pas autorisé à modifier cet enregistrement."
+
+msgctxt "error:xml_id_syntax_error:0"
+msgid "Syntax error for XML id %r in %s"
+msgstr "Erreur de syntaxe XML pour l'ID %r de %s"
+
+msgctxt "error:xml_record_desc:0"
+msgid "This record is part of the base configuration."
+msgstr "Cet enregistrement fait partie de la configuration de base."
+
+msgctxt "field:ir.action,active:0"
+msgid "Active"
+msgstr "Actif"
+
+msgctxt "field:ir.action,groups:0"
+msgid "Groups"
+msgstr "Groupes"
+
+msgctxt "field:ir.action,icon:0"
+msgid "Icon"
+msgstr "Icône"
+
+msgctxt "field:ir.action,keywords:0"
+msgid "Keywords"
+msgstr "Mots-clés"
+
+msgctxt "field:ir.action,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.action,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.action,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:ir.action,usage:0"
+msgid "Usage"
+msgstr "Utilisation"
+
+msgctxt "field:ir.action.act_window,act_window_views:0"
+msgid "Views"
+msgstr "Vues"
+
+msgctxt "field:ir.action.act_window,action:0"
+msgid "Action"
+msgstr "Action"
+
+msgctxt "field:ir.action.act_window,auto_refresh:0"
+msgid "Auto-Refresh"
+msgstr "Auto-rafraîchissement"
+
+msgctxt "field:ir.action.act_window,context:0"
+msgid "Context Value"
+msgstr "Valeur contextuelle"
+
+msgctxt "field:ir.action.act_window,domain:0"
+msgid "Domain Value"
+msgstr "Valeur du domaine"
+
+msgctxt "field:ir.action.act_window,limit:0"
+msgid "Limit"
+msgstr "Limite"
+
+msgctxt "field:ir.action.act_window,pyson_context:0"
+msgid "PySON Context"
+msgstr "Contexte PySON"
+
+msgctxt "field:ir.action.act_window,pyson_domain:0"
+msgid "PySON Domain"
+msgstr "Domaine PySON"
+
+msgctxt "field:ir.action.act_window,pyson_search_value:0"
+msgid "PySON Search Criteria"
+msgstr "Critère de recherche PySON"
+
+msgctxt "field:ir.action.act_window,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.action.act_window,res_model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:ir.action.act_window,search_value:0"
+msgid "Search Criteria"
+msgstr "Critères de recherche"
+
+msgctxt "field:ir.action.act_window,views:0"
+msgid "Views"
+msgstr "Vues"
+
+msgctxt "field:ir.action.act_window,window_name:0"
+msgid "Window Name"
+msgstr "Nom de la fenêtre"
+
+msgctxt "field:ir.action.act_window.view,act_window:0"
+msgid "Action"
+msgstr "Action"
+
+msgctxt "field:ir.action.act_window.view,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.action.act_window.view,sequence:0"
+msgid "Sequence"
+msgstr "Séquence"
+
+msgctxt "field:ir.action.act_window.view,view:0"
+msgid "View"
+msgstr "Vue"
+
+msgctxt "field:ir.action.keyword,action:0"
+msgid "Action"
+msgstr "Action"
+
+msgctxt "field:ir.action.keyword,keyword:0"
+msgid "Keyword"
+msgstr "Mot-clé"
+
+msgctxt "field:ir.action.keyword,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:ir.action.keyword,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.action.report,action:0"
+msgid "Action"
+msgstr "Action"
+
+msgctxt "field:ir.action.report,direct_print:0"
+msgid "Direct Print"
+msgstr "Imprimer directement"
+
+msgctxt "field:ir.action.report,email:0"
+msgid "Email"
+msgstr "E-mail"
+
+msgctxt "field:ir.action.report,extension:0"
+msgid "Extension"
+msgstr "Extension"
+
+msgctxt "field:ir.action.report,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:ir.action.report,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.action.report,pyson_email:0"
+msgid "PySON Email"
+msgstr "Email PySON"
+
+msgctxt "field:ir.action.report,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.action.report,report:0"
+msgid "Path"
+msgstr "Chemin"
+
+msgctxt "field:ir.action.report,report_content:0"
+msgid "Content"
+msgstr "Contenu"
+
+msgctxt "field:ir.action.report,report_content_custom:0"
+msgid "Content"
+msgstr "Contenu"
+
+msgctxt "field:ir.action.report,report_name:0"
+msgid "Internal Name"
+msgstr "Nom interne"
+
+msgctxt "field:ir.action.report,style:0"
+msgid "Style"
+msgstr "Style"
+
+msgctxt "field:ir.action.report,style_content:0"
+msgid "Style"
+msgstr "Style"
+
+msgctxt "field:ir.action.report,template_extension:0"
+msgid "Template Extension"
+msgstr "Extension du modèle"
+
+msgctxt "field:ir.action.url,action:0"
+msgid "Action"
+msgstr "Action"
+
+msgctxt "field:ir.action.url,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.action.url,url:0"
+msgid "Action Url"
+msgstr "Url"
+
+msgctxt "field:ir.action.wizard,action:0"
+msgid "Action"
+msgstr "Action"
+
+msgctxt "field:ir.action.wizard,email:0"
+msgid "Email"
+msgstr "E-mail"
+
+msgctxt "field:ir.action.wizard,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:ir.action.wizard,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.action.wizard,window:0"
+msgid "Window"
+msgstr "Onglet"
+
+msgctxt "field:ir.action.wizard,wiz_name:0"
+msgid "Wizard name"
+msgstr "Nom de l'assistant"
+
+msgctxt "field:ir.attachment,collision:0"
+msgid "Collision"
+msgstr "Collision"
+
+msgctxt "field:ir.attachment,data:0"
+msgid "Data"
+msgstr "Données"
+
+msgctxt "field:ir.attachment,data_size:0"
+msgid "Data size"
+msgstr "Taille des données"
+
+msgctxt "field:ir.attachment,description:0"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "field:ir.attachment,digest:0"
+msgid "Digest"
+msgstr "Empreinte"
+
+msgctxt "field:ir.attachment,last_modification:0"
+msgid "Last Modification"
+msgstr "Dernière modification"
+
+msgctxt "field:ir.attachment,last_user:0"
+msgid "Last User"
+msgstr "Dernier utilisateur"
+
+msgctxt "field:ir.attachment,link:0"
+msgid "Link"
+msgstr "Lien"
+
+msgctxt "field:ir.attachment,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.attachment,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.attachment,resource:0"
+msgid "Resource"
+msgstr "Ressource"
+
+msgctxt "field:ir.attachment,summary:0"
+msgid "Summary"
+msgstr "Résumé"
+
+msgctxt "field:ir.attachment,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:ir.cache,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.cache,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.cache,timestamp:0"
+msgid "Timestamp"
+msgstr "Estampille"
+
+msgctxt "field:ir.cron,active:0"
+msgid "Active"
+msgstr "Actif"
+
+msgctxt "field:ir.cron,args:0"
+msgid "Arguments"
+msgstr "Arguments"
+
+msgctxt "field:ir.cron,function:0"
+msgid "Function"
+msgstr "Fonction"
+
+msgctxt "field:ir.cron,interval_number:0"
+msgid "Interval Number"
+msgstr "Nombre d'intervalles"
+
+msgctxt "field:ir.cron,interval_type:0"
+msgid "Interval Unit"
+msgstr "Unité d'intervalle"
+
+msgctxt "field:ir.cron,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:ir.cron,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.cron,next_call:0"
+msgid "Next Call"
+msgstr "Appel suivant"
+
+msgctxt "field:ir.cron,number_calls:0"
+msgid "Number of Calls"
+msgstr "Nombre d'appels"
+
+msgctxt "field:ir.cron,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.cron,repeat_missed:0"
+msgid "Repeat Missed"
+msgstr "Répéter les manqués"
+
+msgctxt "field:ir.cron,request_user:0"
+msgid "Request User"
+msgstr "Demande utilisateur"
+
+msgctxt "field:ir.cron,user:0"
+msgid "Execution User"
+msgstr "Utilisateur"
+
+msgctxt "field:ir.export,export_fields:0"
+msgid "Fields"
+msgstr "Champs"
+
+msgctxt "field:ir.export,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.export,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.export,resource:0"
+msgid "Resource"
+msgstr "Ressource"
+
+msgctxt "field:ir.export.line,export:0"
+msgid "Export"
+msgstr "Exportation"
+
+msgctxt "field:ir.export.line,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.export.line,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.lang,active:0"
+msgid "Active"
+msgstr "Actif"
+
+msgctxt "field:ir.lang,code:0"
+msgid "Code"
+msgstr "Code"
+
+msgctxt "field:ir.lang,date:0"
+msgid "Date"
+msgstr "Date"
+
+msgctxt "field:ir.lang,decimal_point:0"
+msgid "Decimal Separator"
+msgstr "Séparateur de décimale"
+
+msgctxt "field:ir.lang,direction:0"
+msgid "Direction"
+msgstr "Direction"
+
+msgctxt "field:ir.lang,grouping:0"
+msgid "Grouping"
+msgstr "Groupement"
+
+msgctxt "field:ir.lang,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.lang,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.lang,thousands_sep:0"
+msgid "Thousands Separator"
+msgstr "Séparateur des centaines"
+
+msgctxt "field:ir.lang,translatable:0"
+msgid "Translatable"
+msgstr "Traduisible"
+
+msgctxt "field:ir.model,fields:0"
+msgid "Fields"
+msgstr "Champs"
+
+msgctxt "field:ir.model,info:0"
+msgid "Information"
+msgstr "Information"
+
+msgctxt "field:ir.model,model:0"
+msgid "Model Name"
+msgstr "Nom de l'objet"
+
+msgctxt "field:ir.model,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.model,name:0"
+msgid "Model Description"
+msgstr "Nom du modèle"
+
+msgctxt "field:ir.model,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.model.access,description:0"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "field:ir.model.access,group:0"
+msgid "Group"
+msgstr "Groupe"
+
+msgctxt "field:ir.model.access,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:ir.model.access,perm_create:0"
+msgid "Create Access"
+msgstr "Accès en creation"
+
+msgctxt "field:ir.model.access,perm_delete:0"
+msgid "Delete Access"
+msgstr "Accès en suppression"
+
+msgctxt "field:ir.model.access,perm_read:0"
+msgid "Read Access"
+msgstr "Accès en lecture"
+
+msgctxt "field:ir.model.access,perm_write:0"
+msgid "Write Access"
+msgstr "Accès en écriture"
+
+msgctxt "field:ir.model.access,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.model.data,date_init:0"
+msgid "Init Date"
+msgstr "Date d'initialisation"
+
+msgctxt "field:ir.model.data,date_update:0"
+msgid "Update Date"
+msgstr "Date de mis à jour"
+
+msgctxt "field:ir.model.data,db_id:0"
+msgid "Resource ID"
+msgstr "ID de la ressource"
+
+msgctxt "field:ir.model.data,fs_id:0"
+msgid "Identifier on File System"
+msgstr "Identifiant sur le système de fichier"
+
+msgctxt "field:ir.model.data,inherit:0"
+msgid "Inherit"
+msgstr "Hérité"
+
+msgctxt "field:ir.model.data,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:ir.model.data,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.model.data,noupdate:0"
+msgid "No Update"
+msgstr "Pas de mise à jour"
+
+msgctxt "field:ir.model.data,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.model.data,values:0"
+msgid "Values"
+msgstr "Valeurs"
+
+msgctxt "field:ir.model.field,field_description:0"
+msgid "Field Description"
+msgstr "Champ de description"
+
+msgctxt "field:ir.model.field,groups:0"
+msgid "Groups"
+msgstr "Groupes"
+
+msgctxt "field:ir.model.field,help:0"
+msgid "Help"
+msgstr "Aide"
+
+msgctxt "field:ir.model.field,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:ir.model.field,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.model.field,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.model.field,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.model.field,relation:0"
+msgid "Model Relation"
+msgstr "Relation du modèle"
+
+msgctxt "field:ir.model.field,ttype:0"
+msgid "Field Type"
+msgstr "Champ du type"
+
+msgctxt "field:ir.model.field.access,description:0"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "field:ir.model.field.access,field:0"
+msgid "Field"
+msgstr "Champ"
+
+msgctxt "field:ir.model.field.access,group:0"
+msgid "Group"
+msgstr "Groupe"
+
+msgctxt "field:ir.model.field.access,perm_read:0"
+msgid "Read Access"
+msgstr "Accès en lecture"
+
+msgctxt "field:ir.model.field.access,perm_write:0"
+msgid "Write Access"
+msgstr "Accès en écriture"
+
+msgctxt "field:ir.model.field.access,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.model.print_model_graph.init,filter:0"
+msgid "Filter"
+msgstr "Filtre"
+
+msgctxt "field:ir.model.print_model_graph.init,level:0"
+msgid "Level"
+msgstr "Niveau"
+
+msgctxt "field:ir.module.module,author:0"
+msgid "Author"
+msgstr "Auteur"
+
+msgctxt "field:ir.module.module,dependencies:0"
+msgid "Dependencies"
+msgstr "Dépendances"
+
+msgctxt "field:ir.module.module,description:0"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "field:ir.module.module,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.module.module,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.module.module,shortdesc:0"
+msgid "Short description"
+msgstr "Description courte"
+
+msgctxt "field:ir.module.module,state:0"
+msgid "State"
+msgstr "État"
+
+msgctxt "field:ir.module.module,version:0"
+msgid "Version"
+msgstr "Version"
+
+msgctxt "field:ir.module.module,website:0"
+msgid "Website"
+msgstr "Site web"
+
+msgctxt "field:ir.module.module.config_wizard.item,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.module.module.config_wizard.item,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.module.module.config_wizard.item,sequence:0"
+msgid "Sequence"
+msgstr "Séquence"
+
+msgctxt "field:ir.module.module.config_wizard.item,state:0"
+msgid "State"
+msgstr "État"
+
+msgctxt "field:ir.module.module.dependency,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.module.module.dependency,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.module.module.dependency,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.module.module.dependency,state:0"
+msgid "State"
+msgstr "État"
+
+msgctxt "field:ir.module.module.install_upgrade.init,module_info:0"
+msgid "Modules to update"
+msgstr "Modules à mettre à jours"
+
+msgctxt "field:ir.property,field:0"
+msgid "Field"
+msgstr "Champ"
+
+msgctxt "field:ir.property,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.property,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.property,res:0"
+msgid "Resource"
+msgstr "Ressource"
+
+msgctxt "field:ir.property,value:0"
+msgid "Value"
+msgstr "Valeur"
+
+msgctxt "field:ir.rule,field:0"
+msgid "Field"
+msgstr "Champ"
+
+msgctxt "field:ir.rule,operand:0"
+msgid "Operand"
+msgstr "Opérande"
+
+msgctxt "field:ir.rule,operator:0"
+msgid "Operator"
+msgstr "Opérateur"
+
+msgctxt "field:ir.rule,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.rule,rule_group:0"
+msgid "Group"
+msgstr "Groupe"
+
+msgctxt "field:ir.rule.group,default_p:0"
+msgid "Default"
+msgstr "Défaut"
+
+msgctxt "field:ir.rule.group,global_p:0"
+msgid "Global"
+msgstr "Global"
+
+msgctxt "field:ir.rule.group,groups:0"
+msgid "Groups"
+msgstr "Groupes"
+
+msgctxt "field:ir.rule.group,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:ir.rule.group,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.rule.group,perm_create:0"
+msgid "Create Access"
+msgstr "Accès en creation"
+
+msgctxt "field:ir.rule.group,perm_delete:0"
+msgid "Delete Access"
+msgstr "Accès en suppression"
+
+msgctxt "field:ir.rule.group,perm_read:0"
+msgid "Read Access"
+msgstr "Accès en lecture"
+
+msgctxt "field:ir.rule.group,perm_write:0"
+msgid "Write Access"
+msgstr "Accès en écriture"
+
+msgctxt "field:ir.rule.group,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.rule.group,rules:0"
+msgid "Tests"
+msgstr "Tests"
+
+msgctxt "field:ir.rule.group,users:0"
+msgid "Users"
+msgstr "Utilisateurs"
+
+msgctxt "field:ir.sequence,active:0"
+msgid "Active"
+msgstr "Actif"
+
+msgctxt "field:ir.sequence,code:0"
+msgid "Sequence Code"
+msgstr "Type de séquence"
+
+msgctxt "field:ir.sequence,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr "Dernière estampille"
+
+msgctxt "field:ir.sequence,name:0"
+msgid "Sequence Name"
+msgstr "Nom de la séquence"
+
+msgctxt "field:ir.sequence,number_increment:0"
+msgid "Increment Number"
+msgstr "Nombre d'incrément"
+
+msgctxt "field:ir.sequence,number_next:0"
+msgid "Next Number"
+msgstr "Numéro suivant"
+
+msgctxt "field:ir.sequence,number_next_internal:0"
+msgid "Next Number"
+msgstr "Numéro suivant"
+
+msgctxt "field:ir.sequence,padding:0"
+msgid "Number padding"
+msgstr "Nombre de chiffres"
+
+msgctxt "field:ir.sequence,prefix:0"
+msgid "Prefix"
+msgstr "Préfixe"
+
+msgctxt "field:ir.sequence,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.sequence,suffix:0"
+msgid "Suffix"
+msgstr "Suffixe"
+
+msgctxt "field:ir.sequence,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr "Décalage estampille"
+
+msgctxt "field:ir.sequence,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr "Arrondi de l'estampille"
+
+msgctxt "field:ir.sequence,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:ir.sequence.strict,active:0"
+msgid "Active"
+msgstr "Actif"
+
+msgctxt "field:ir.sequence.strict,code:0"
+msgid "Sequence Code"
+msgstr "Type de séquence"
+
+msgctxt "field:ir.sequence.strict,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr "Dernière estampille"
+
+msgctxt "field:ir.sequence.strict,name:0"
+msgid "Sequence Name"
+msgstr "Nom"
+
+msgctxt "field:ir.sequence.strict,number_increment:0"
+msgid "Increment Number"
+msgstr "Incrément"
+
+msgctxt "field:ir.sequence.strict,number_next:0"
+msgid "Next Number"
+msgstr "Nombre suivant"
+
+msgctxt "field:ir.sequence.strict,number_next_internal:0"
+msgid "Next Number"
+msgstr "Numéro suivant"
+
+msgctxt "field:ir.sequence.strict,padding:0"
+msgid "Number padding"
+msgstr "Nombre de chiffes"
+
+msgctxt "field:ir.sequence.strict,prefix:0"
+msgid "Prefix"
+msgstr "Préfixe"
+
+msgctxt "field:ir.sequence.strict,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.sequence.strict,suffix:0"
+msgid "Suffix"
+msgstr "Suffixe"
+
+msgctxt "field:ir.sequence.strict,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr "Décalage d'estampille"
+
+msgctxt "field:ir.sequence.strict,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr "Arrondi de l'estampille"
+
+msgctxt "field:ir.sequence.strict,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:ir.sequence.type,code:0"
+msgid "Sequence Code"
+msgstr "Code de la séquence"
+
+msgctxt "field:ir.sequence.type,name:0"
+msgid "Sequence Name"
+msgstr "Nom de la séquence"
+
+msgctxt "field:ir.sequence.type,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.translation,fuzzy:0"
+msgid "Fuzzy"
+msgstr "Floue"
+
+msgctxt "field:ir.translation,lang:0"
+msgid "Language"
+msgstr "Langue"
+
+msgctxt "field:ir.translation,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:ir.translation,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.translation,name:0"
+msgid "Field Name"
+msgstr "Nom du champ"
+
+msgctxt "field:ir.translation,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.translation,res_id:0"
+msgid "Resource ID"
+msgstr "ID de la ressource"
+
+msgctxt "field:ir.translation,src:0"
+msgid "Source"
+msgstr "Source"
+
+msgctxt "field:ir.translation,src_md5:0"
+msgid "Source MD5"
+msgstr "MD5 de la source"
+
+msgctxt "field:ir.translation,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:ir.translation,value:0"
+msgid "Translation Value"
+msgstr "Traduction"
+
+msgctxt "field:ir.translation.export.init,lang:0"
+msgid "Language"
+msgstr "Langue"
+
+msgctxt "field:ir.translation.export.init,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.translation.export.start,file:0"
+msgid "File"
+msgstr "Fichier"
+
+msgctxt "field:ir.translation.update.init,lang:0"
+msgid "Language"
+msgstr "Langue"
+
+msgctxt "field:ir.trigger,action_function:0"
+msgid "Action Function"
+msgstr "Fonction de l'action"
+
+msgctxt "field:ir.trigger,action_model:0"
+msgid "Action Model"
+msgstr "Modèle de l'action"
+
+msgctxt "field:ir.trigger,active:0"
+msgid "Active"
+msgstr "Actif"
+
+msgctxt "field:ir.trigger,condition:0"
+msgid "Condition"
+msgstr "Condition"
+
+msgctxt "field:ir.trigger,limit_number:0"
+msgid "Limit Number"
+msgstr "Nombre limite"
+
+msgctxt "field:ir.trigger,minimum_delay:0"
+msgid "Minimum Delay"
+msgstr "Délais minimal"
+
+msgctxt "field:ir.trigger,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:ir.trigger,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.trigger,on_create:0"
+msgid "On Create"
+msgstr "À la création"
+
+msgctxt "field:ir.trigger,on_delete:0"
+msgid "On Delete"
+msgstr "À la suppression"
+
+msgctxt "field:ir.trigger,on_time:0"
+msgid "On Time"
+msgstr "À temps"
+
+msgctxt "field:ir.trigger,on_write:0"
+msgid "On Write"
+msgstr "À l'écriture"
+
+msgctxt "field:ir.trigger,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.trigger.log,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.trigger.log,record_id:0"
+msgid "Record ID"
+msgstr "ID du record"
+
+msgctxt "field:ir.trigger.log,trigger:0"
+msgid "Trigger"
+msgstr "Déclencheur"
+
+msgctxt "field:ir.ui.icon,icon:0"
+msgid "Icon"
+msgstr "Icône"
+
+msgctxt "field:ir.ui.icon,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.ui.icon,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.ui.icon,path:0"
+msgid "SVG Path"
+msgstr "Chemin vers le fichier SVG"
+
+msgctxt "field:ir.ui.icon,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.ui.icon,sequence:0"
+msgid "Sequence"
+msgstr "Séquence"
+
+msgctxt "field:ir.ui.menu,action:0"
+msgid "Action"
+msgstr "Action"
+
+msgctxt "field:ir.ui.menu,active:0"
+msgid "Active"
+msgstr "Actif"
+
+msgctxt "field:ir.ui.menu,childs:0"
+msgid "Children"
+msgstr "Enfants"
+
+msgctxt "field:ir.ui.menu,complete_name:0"
+msgid "Complete Name"
+msgstr "Nom complet"
+
+msgctxt "field:ir.ui.menu,groups:0"
+msgid "Groups"
+msgstr "Groupes"
+
+msgctxt "field:ir.ui.menu,icon:0"
+msgid "Icon"
+msgstr "Icône"
+
+msgctxt "field:ir.ui.menu,name:0"
+msgid "Menu"
+msgstr "Menu"
+
+msgctxt "field:ir.ui.menu,parent:0"
+msgid "Parent Menu"
+msgstr "Menu parent"
+
+msgctxt "field:ir.ui.menu,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.ui.menu,sequence:0"
+msgid "Sequence"
+msgstr "Séquence"
+
+msgctxt "field:ir.ui.view,arch:0"
+msgid "View Architecture"
+msgstr "Architecture de la vue"
+
+msgctxt "field:ir.ui.view,domain:0"
+msgid "Domain"
+msgstr "Domaine"
+
+msgctxt "field:ir.ui.view,field_childs:0"
+msgid "Children Field"
+msgstr "Champs enfants"
+
+msgctxt "field:ir.ui.view,inherit:0"
+msgid "Inherited View"
+msgstr "Vue héritée"
+
+msgctxt "field:ir.ui.view,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:ir.ui.view,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.ui.view,priority:0"
+msgid "Priority"
+msgstr "Priorité"
+
+msgctxt "field:ir.ui.view,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.ui.view,type:0"
+msgid "View Type"
+msgstr "Type de vue"
+
+msgctxt "field:ir.ui.view_sc,name:0"
+msgid "Shortcut Name"
+msgstr "Nom du raccourcis"
+
+msgctxt "field:ir.ui.view_sc,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.ui.view_sc,res_id:0"
+msgid "Resource Ref."
+msgstr "Réf. de la ressource"
+
+msgctxt "field:ir.ui.view_sc,resource:0"
+msgid "Resource Name"
+msgstr "Nom de la ressource"
+
+msgctxt "field:ir.ui.view_sc,sequence:0"
+msgid "Sequence"
+msgstr "Séquence"
+
+msgctxt "field:ir.ui.view_sc,user_id:0"
+msgid "User Ref."
+msgstr "Réf. utilisateur"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,child_name:0"
+msgid "Child Name"
+msgstr "Nom de l'enfant"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,domain:0"
+msgid "Domain"
+msgstr "Domaine"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,nodes:0"
+msgid "Expanded Nodes"
+msgstr "Nœuds développés"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,user:0"
+msgid "User"
+msgstr "Utilisateur"
+
+msgctxt "field:ir.ui.view_tree_width,field:0"
+msgid "Field"
+msgstr "Champ"
+
+msgctxt "field:ir.ui.view_tree_width,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:ir.ui.view_tree_width,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.ui.view_tree_width,user:0"
+msgid "User"
+msgstr "Utilisateur"
+
+msgctxt "field:ir.ui.view_tree_width,width:0"
+msgid "Width"
+msgstr "Largeur"
+
+msgctxt "help:ir.action.act_window,auto_refresh:0"
+msgid "Add an auto-refresh on the view"
+msgstr "Ajoute un auto-rafraîchissement sur la vue"
+
+msgctxt "help:ir.action.act_window,limit:0"
+msgid "Default limit for the list view"
+msgstr "Limite par défaut pour la vue liste"
+
+msgctxt "help:ir.action.act_window,search_value:0"
+msgid "Default search criteria for the list view"
+msgstr "Critères de recherche par défaut pour la vue liste"
+
+msgctxt "help:ir.action.act_window,window_name:0"
+msgid "Use the action name as window name"
+msgstr "Utiliser le nom de l'action comme nom de la fenêtre"
+
+msgctxt "help:ir.action.report,extension:0"
+msgid ""
+"Leave empty for the same as template, see unoconv documentation for "
+"compatible format"
+msgstr ""
+"Laisser vide pour la même que le modèle, voir la documentation d'unoconv "
+"pour la compatibilité de format."
+
+msgctxt "help:ir.action.report,style:0"
+msgid "Define the style to apply on the report."
+msgstr "Définit le style à appliquer sur le rapport."
+
+msgctxt "help:ir.action.wizard,window:0"
+msgid "Run wizard in a new window"
+msgstr "Lancer l'assistant dans un nouvel onglet"
+
+msgctxt "help:ir.cron,number_calls:0"
+msgid ""
+"Number of times the function is called, a negative number indicates that the"
+" function will always be called"
+msgstr ""
+"Le nombre de fois que la fonction est appelée, un nombre négatif indique que"
+" la fonction sera toujours appelée"
+
+msgctxt "help:ir.cron,request_user:0"
+msgid "The user who will receive requests in case of failure"
+msgstr "L'utilisateur qui recevra les requêtes en cas d'échec."
+
+msgctxt "help:ir.cron,user:0"
+msgid "The user used to execute this action"
+msgstr "L'utilisateur qui exécutera l'action."
+
+msgctxt "help:ir.lang,code:0"
+msgid "RFC 4646 tag: http://tools.ietf.org/html/rfc4646"
+msgstr "RFC 4646 tag: http://tools.ietf.org/html/rfc4646"
+
+msgctxt "help:ir.model,module:0"
+msgid "Module in which this model is defined"
+msgstr "Le module dans lequel ce modèle est défini"
+
+msgctxt "help:ir.model.data,db_id:0"
+msgid "The id of the record in the database."
+msgstr "L'id de l'enregistrement dans la base de données"
+
+msgctxt "help:ir.model.data,fs_id:0"
+msgid "The id of the record as known on the file system."
+msgstr "L'id de l'enregistrement sur le système de fichier"
+
+msgctxt "help:ir.model.field,module:0"
+msgid "Module in which this field is defined"
+msgstr "Le module dans lequel ce champ est défini"
+
+msgctxt "help:ir.model.print_model_graph.init,filter:0"
+msgid ""
+"Entering a Python Regular Expression will exclude matching models from the "
+"graph."
+msgstr "Expression régulière en Python qui exclura les modèles du graphe."
+
+msgctxt "help:ir.rule.group,default_p:0"
+msgid "Add this rule to all users by default"
+msgstr "Ajouter cette règle à tout les utilisateurs par défaut"
+
+msgctxt "help:ir.rule.group,global_p:0"
+msgid ""
+"Make the rule global \n"
+"so every users must follow this rule"
+msgstr ""
+"Rend la règle globale de sorte que tout utilisateur doive la respecter"
+
+msgctxt "help:ir.rule.group,rules:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr "La règle est satisfaite si au moins un test est vrai"
+
+msgctxt "help:ir.trigger,condition:0"
+msgid ""
+"A Python statement evaluated with record represented by \"self\"\n"
+"It triggers the action if true."
+msgstr ""
+"Une expression Python ou l'enregistrement est représenté par \"self\".\n"
+"Déclenche une action si vrai."
+
+msgctxt "help:ir.trigger,limit_number:0"
+msgid ""
+"Limit the number of call to \"Action Function\" by records.\n"
+"0 for no limit."
+msgstr ""
+"Limite le nombre d'appel aux \"Fonction action\" par enregistrement.\n"
+"0 signifie pas de limite."
+
+msgctxt "help:ir.trigger,minimum_delay:0"
+msgid ""
+"Set a minimum delay in minutes between call to \"Action Function\" for the same record.\n"
+"0 for no delay."
+msgstr ""
+"Défini un délais minimum en minutes entre les appels aux \"Fonctions actions\" sur un même modèle.\n"
+"0 signifie pas de délais."
+
+msgctxt "model:ir.action,name:0"
+msgid "Action"
+msgstr "Action"
+
+msgctxt "model:ir.action,name:act_action_act_window_form"
+msgid "Window Actions"
+msgstr "Actions de la fenêtre"
+
+msgctxt "model:ir.action,name:act_action_form"
+msgid "Actions"
+msgstr "Actions"
+
+msgctxt "model:ir.action,name:act_action_report_form"
+msgid "Reports"
+msgstr "Rapports"
+
+msgctxt "model:ir.action,name:act_action_url_form"
+msgid "URLs"
+msgstr "URLs"
+
+msgctxt "model:ir.action,name:act_action_wizard_form"
+msgid "Wizards"
+msgstr "Assistants"
+
+msgctxt "model:ir.action,name:act_attachment_form"
+msgid "Attachments"
+msgstr "Attachements"
+
+msgctxt "model:ir.action,name:act_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr "Élements de l'assistant de configuration"
+
+msgctxt "model:ir.action,name:act_cron_form"
+msgid "Scheduled Actions"
+msgstr "Actions planifiées"
+
+msgctxt "model:ir.action,name:act_export_form"
+msgid "Exports"
+msgstr "Exports"
+
+msgctxt "model:ir.action,name:act_icon_form"
+msgid "Icons"
+msgstr "Icônes"
+
+msgctxt "model:ir.action,name:act_lang_form"
+msgid "Languages"
+msgstr "Langues"
+
+msgctxt "model:ir.action,name:act_menu_list"
+msgid "Menu"
+msgstr "Menu"
+
+msgctxt "model:ir.action,name:act_menu_tree"
+msgid "Menu"
+msgstr "Menu"
+
+msgctxt "model:ir.action,name:act_model_access_form"
+msgid "Models Access"
+msgstr "Accès aux modèles"
+
+msgctxt "model:ir.action,name:act_model_field_access_form"
+msgid "Fields Access"
+msgstr "Droits d'accès"
+
+msgctxt "model:ir.action,name:act_model_fields_form"
+msgid "Fields"
+msgstr "Champs"
+
+msgctxt "model:ir.action,name:act_model_form"
+msgid "Models"
+msgstr "Modèles"
+
+msgctxt "model:ir.action,name:act_module_config_wizard"
+msgid "Module Configuration"
+msgstr "Configuration du module"
+
+msgctxt "model:ir.action,name:act_module_form"
+msgid "Modules"
+msgstr "Modules"
+
+msgctxt "model:ir.action,name:act_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr "Lancer les installations/mise à jours en attente"
+
+msgctxt "model:ir.action,name:act_property_form"
+msgid "Properties"
+msgstr "Propriétés"
+
+msgctxt "model:ir.action,name:act_property_form_default"
+msgid "Default Properties"
+msgstr "Propriétés par défaut"
+
+msgctxt "model:ir.action,name:act_rule_group_form"
+msgid "Record Rules"
+msgstr "Règles des enregistrements"
+
+msgctxt "model:ir.action,name:act_sequence_form"
+msgid "Sequences"
+msgstr "Séquences"
+
+msgctxt "model:ir.action,name:act_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr "Séquences strictes"
+
+msgctxt "model:ir.action,name:act_sequence_type_form"
+msgid "Sequence Types"
+msgstr "Types de séquences"
+
+msgctxt "model:ir.action,name:act_translation_clean"
+msgid "Clean Translations"
+msgstr "Nettoyer les traductions"
+
+msgctxt "model:ir.action,name:act_translation_export"
+msgid "Export Translations"
+msgstr "Exporter les traductions"
+
+msgctxt "model:ir.action,name:act_translation_form"
+msgid "Translations"
+msgstr "Traductions"
+
+msgctxt "model:ir.action,name:act_translation_set_report"
+msgid "Set Report Translations"
+msgstr "Mettre à jours les traductions des rapports"
+
+msgctxt "model:ir.action,name:act_translation_update"
+msgid "Synchronize Translations"
+msgstr "Synchroniser les traductions"
+
+msgctxt "model:ir.action,name:act_trigger_form"
+msgid "Triggers"
+msgstr "Déclencheurs"
+
+msgctxt "model:ir.action,name:act_view_form"
+msgid "Views"
+msgstr "Vues"
+
+msgctxt "model:ir.action,name:act_view_sc_add"
+msgid "Add Shortcut"
+msgstr "Ajouter un raccourci"
+
+msgctxt "model:ir.action,name:act_view_sc_form"
+msgid "View Shortcuts"
+msgstr "Raccourcis"
+
+msgctxt "model:ir.action,name:act_view_sc_open"
+msgid "Open Shortcut"
+msgstr "Ouvrir le raccourci"
+
+msgctxt "model:ir.action,name:act_view_show"
+msgid "Show View"
+msgstr "Montrer la vue"
+
+msgctxt "model:ir.action,name:act_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr "État d'arbre développé"
+
+msgctxt "model:ir.action,name:act_view_tree_width_form"
+msgid "View Tree Width"
+msgstr "Largeur de la vue arbre"
+
+msgctxt "model:ir.action,name:print_model_graph"
+msgid "Graph"
+msgstr "Graphique"
+
+msgctxt "model:ir.action,name:report_model_graph"
+msgid "Graph"
+msgstr "Graphique"
+
+msgctxt "model:ir.action.act_window,name:0"
+msgid "Action act window"
+msgstr "Action ouvrir fenêtre"
+
+msgctxt "model:ir.action.act_window.view,name:0"
+msgid "Action act window view"
+msgstr "Action ouvrir fenêtre vue"
+
+msgctxt "model:ir.action.keyword,name:0"
+msgid "Action keyword"
+msgstr "Action de mots clés"
+
+msgctxt "model:ir.action.report,name:0"
+msgid "Action report"
+msgstr "Action rapport"
+
+msgctxt "model:ir.action.url,name:0"
+msgid "Action URL"
+msgstr "Action URL"
+
+msgctxt "model:ir.action.wizard,name:0"
+msgid "Action wizard"
+msgstr "Action assistant"
+
+msgctxt "model:ir.attachment,name:0"
+msgid "Attachment"
+msgstr "Pièce jointe"
+
+msgctxt "model:ir.cache,name:0"
+msgid "Cache"
+msgstr "Cache"
+
+msgctxt "model:ir.cron,name:0"
+msgid "Cron"
+msgstr "Cron"
+
+msgctxt "model:ir.date,name:0"
+msgid "Date"
+msgstr "Date"
+
+msgctxt "model:ir.export,name:0"
+msgid "Export"
+msgstr "Export"
+
+msgctxt "model:ir.export.line,name:0"
+msgid "Export line"
+msgstr "Ligne d'export"
+
+msgctxt "model:ir.lang,name:0"
+msgid "Language"
+msgstr "Langue"
+
+msgctxt "model:ir.lang,name:lang_bg"
+msgid "Bulgarian"
+msgstr "Bulgare"
+
+msgctxt "model:ir.lang,name:lang_cs"
+msgid "Czech"
+msgstr "Tchèque"
+
+msgctxt "model:ir.lang,name:lang_de"
+msgid "German"
+msgstr "Allemand"
+
+msgctxt "model:ir.lang,name:lang_en"
+msgid "English"
+msgstr "Anglais"
+
+msgctxt "model:ir.lang,name:lang_es"
+msgid "Spanish (Spain)"
+msgstr "Espagnol (Espagne)"
+
+msgctxt "model:ir.lang,name:lang_es_CO"
+msgid "Spanish (Colombia)"
+msgstr "Espagnol (Colombie)"
+
+msgctxt "model:ir.lang,name:lang_fr"
+msgid "French"
+msgstr "Français"
+
+msgctxt "model:ir.lang,name:lang_nl"
+msgid "Dutch"
+msgstr "Néerlandais"
+
+msgctxt "model:ir.lang,name:lang_ru"
+msgid "Russian"
+msgstr "Russe"
+
+msgctxt "model:ir.model,name:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "model:ir.model.access,name:0"
+msgid "Model access"
+msgstr "Accès au modèle"
+
+msgctxt "model:ir.model.data,name:0"
+msgid "Model data"
+msgstr "Données de modèle"
+
+msgctxt "model:ir.model.field,name:0"
+msgid "Model field"
+msgstr "Champ de modèle"
+
+msgctxt "model:ir.model.field.access,name:0"
+msgid "Model Field Access"
+msgstr "Droit d'accès aux champs d'un Model"
+
+msgctxt "model:ir.model.print_model_graph.init,name:0"
+msgid "Print Model Graph Init"
+msgstr "Imprimer le graphique de modèle - Init"
+
+msgctxt "model:ir.module.module,name:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "model:ir.module.module.config_wizard.first,name:0"
+msgid "Module Config Wizard First"
+msgstr "Assistant de configuration de module - Première"
+
+msgctxt "model:ir.module.module.config_wizard.item,name:0"
+msgid "Config wizard to run after installing module"
+msgstr "Assistant de configuration à éxécuter après l'installation de module"
+
+msgctxt "model:ir.module.module.dependency,name:0"
+msgid "Module dependency"
+msgstr "Dépendance de module"
+
+msgctxt "model:ir.module.module.install_upgrade.init,name:0"
+msgid "Module Install Upgrade Init"
+msgstr "Installation Mise à jour de module - Init"
+
+msgctxt "model:ir.module.module.install_upgrade.start,name:0"
+msgid "Module Install Upgrade Start"
+msgstr "Installation Mise à jour de module - Début"
+
+msgctxt "model:ir.property,name:0"
+msgid "Property"
+msgstr "Propriété"
+
+msgctxt "model:ir.rule,name:0"
+msgid "Rule"
+msgstr "Règle"
+
+msgctxt "model:ir.rule.group,name:0"
+msgid "Rule group"
+msgstr "Groupe de règle"
+
+msgctxt "model:ir.sequence,name:0"
+msgid "Sequence"
+msgstr "Séquence"
+
+msgctxt "model:ir.sequence.strict,name:0"
+msgid "Sequence Strict"
+msgstr "Séquence stricte"
+
+msgctxt "model:ir.sequence.type,name:0"
+msgid "Sequence type"
+msgstr "Type de séquence"
+
+msgctxt "model:ir.translation,name:0"
+msgid "Translation"
+msgstr "Traduction"
+
+msgctxt "model:ir.translation.clean.init,name:0"
+msgid "Clean translation init"
+msgstr "Netoyer les traductions - Init"
+
+msgctxt "model:ir.translation.clean.start,name:0"
+msgid "Clean translation start"
+msgstr "Netoyer les traductions - Début"
+
+msgctxt "model:ir.translation.export.init,name:0"
+msgid "Export translation - language and module"
+msgstr "Export de traduction - langue et module"
+
+msgctxt "model:ir.translation.export.start,name:0"
+msgid "Export translation - file"
+msgstr "Export de traduction - Fichier"
+
+msgctxt "model:ir.translation.set_report.init,name:0"
+msgid "Update Report Translation"
+msgstr "Mise à jour des traductions de rapport"
+
+msgctxt "model:ir.translation.set_report.start,name:0"
+msgid "Update Report Translation"
+msgstr "Mise à jour des traductions de rapport"
+
+msgctxt "model:ir.translation.update.init,name:0"
+msgid "Update translation - language"
+msgstr "Mise à jour des traductions - Langue"
+
+msgctxt "model:ir.trigger,name:0"
+msgid "Trigger"
+msgstr "Déclencheur"
+
+msgctxt "model:ir.trigger.log,name:0"
+msgid "Trigger Log"
+msgstr "Journal des déclencheurs"
+
+msgctxt "model:ir.ui.icon,name:0"
+msgid "Icon"
+msgstr "Icône"
+
+msgctxt "model:ir.ui.menu,name:0"
+msgid "UI menu"
+msgstr "Menu de l'IU"
+
+msgctxt "model:ir.ui.menu,name:menu_act_action"
+msgid "Actions"
+msgstr "Actions"
+
+msgctxt "model:ir.ui.menu,name:menu_action"
+msgid "Actions"
+msgstr "Actions"
+
+msgctxt "model:ir.ui.menu,name:menu_action_act_window"
+msgid "Window Actions"
+msgstr "Actions de la fenêtre"
+
+msgctxt "model:ir.ui.menu,name:menu_action_report_form"
+msgid "Reports"
+msgstr "Rapports"
+
+msgctxt "model:ir.ui.menu,name:menu_action_url"
+msgid "URLs"
+msgstr "URLs"
+
+msgctxt "model:ir.ui.menu,name:menu_action_wizard"
+msgid "Wizards"
+msgstr "Assistants"
+
+msgctxt "model:ir.ui.menu,name:menu_administration"
+msgid "Administration"
+msgstr "Administration"
+
+msgctxt "model:ir.ui.menu,name:menu_attachment_form"
+msgid "Attachments"
+msgstr "Pièces jointes"
+
+msgctxt "model:ir.ui.menu,name:menu_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr "Élements de l'assistant de configuration"
+
+msgctxt "model:ir.ui.menu,name:menu_cron_form"
+msgid "Scheduled Actions"
+msgstr "Actions planifiées"
+
+msgctxt "model:ir.ui.menu,name:menu_export_form"
+msgid "Exports"
+msgstr "Exportations"
+
+msgctxt "model:ir.ui.menu,name:menu_icon_form"
+msgid "Icons"
+msgstr "Icônes"
+
+msgctxt "model:ir.ui.menu,name:menu_ir_sequence_type"
+msgid "Sequence Types"
+msgstr "Types de séquence"
+
+msgctxt "model:ir.ui.menu,name:menu_lang_form"
+msgid "Languages"
+msgstr "Langues"
+
+msgctxt "model:ir.ui.menu,name:menu_localization"
+msgid "Localization"
+msgstr "Localisation"
+
+msgctxt "model:ir.ui.menu,name:menu_menu_list"
+msgid "Menu"
+msgstr "Menu"
+
+msgctxt "model:ir.ui.menu,name:menu_model_access_form"
+msgid "Models Access"
+msgstr "Accès au modèles"
+
+msgctxt "model:ir.ui.menu,name:menu_model_field_access_form"
+msgid "Fields Access"
+msgstr "Droits d'accès au champs"
+
+msgctxt "model:ir.ui.menu,name:menu_model_form"
+msgid "Models"
+msgstr "Modèles"
+
+msgctxt "model:ir.ui.menu,name:menu_models"
+msgid "Models"
+msgstr "Modèles"
+
+msgctxt "model:ir.ui.menu,name:menu_module_form"
+msgid "Modules"
+msgstr "Modules"
+
+msgctxt "model:ir.ui.menu,name:menu_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr "Installer \\ Mettre à jour les modules"
+
+msgctxt "model:ir.ui.menu,name:menu_modules"
+msgid "Modules"
+msgstr "Modules"
+
+msgctxt "model:ir.ui.menu,name:menu_property_form"
+msgid "Properties"
+msgstr "Propriétés"
+
+msgctxt "model:ir.ui.menu,name:menu_property_form_default"
+msgid "Default Properties"
+msgstr "Propriétés par default"
+
+msgctxt "model:ir.ui.menu,name:menu_rule_group_form"
+msgid "Record Rules"
+msgstr "Règles d'enregistrement"
+
+msgctxt "model:ir.ui.menu,name:menu_scheduler"
+msgid "Scheduler"
+msgstr "Planificateur"
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_form"
+msgid "Sequences"
+msgstr "Séquences"
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr "Séquences strictes"
+
+msgctxt "model:ir.ui.menu,name:menu_sequences"
+msgid "Sequences"
+msgstr "Séquence"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_clean"
+msgid "Clean Translations"
+msgstr "Nettoyer les traductions"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_export"
+msgid "Export Translations"
+msgstr "Exporter les traductions"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_form"
+msgid "Translations"
+msgstr "Traductions"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_set_report"
+msgid "Set Report Translations"
+msgstr "Mettre à jours les traductions des rapports"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_update"
+msgid "Synchronize Translations"
+msgstr "Synchroniser les traductions"
+
+msgctxt "model:ir.ui.menu,name:menu_trigger_form"
+msgid "Triggers"
+msgstr "Déclencheurs"
+
+msgctxt "model:ir.ui.menu,name:menu_ui"
+msgid "User Interface"
+msgstr "UI"
+
+msgctxt "model:ir.ui.menu,name:menu_view"
+msgid "Views"
+msgstr "Vues"
+
+msgctxt "model:ir.ui.menu,name:menu_view_sc"
+msgid "View Shortcuts"
+msgstr "Raccourcis de la vue"
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr "État d'arbre développé"
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_width"
+msgid "View Tree Width"
+msgstr "Largeur des vues arbres"
+
+msgctxt "model:ir.ui.menu,name:model_model_fields_form"
+msgid "Fields"
+msgstr "Champs"
+
+msgctxt "model:ir.ui.view,name:0"
+msgid "View"
+msgstr "Vue"
+
+msgctxt "model:ir.ui.view.show.init,name:0"
+msgid "ir.ui.view.show.init"
+msgstr ""
+
+msgctxt "model:ir.ui.view_sc,name:0"
+msgid "View shortcut"
+msgstr "Vue raccourci"
+
+msgctxt "model:ir.ui.view_tree_expanded_state,name:0"
+msgid "ir.ui.view_tree_expanded_state"
+msgstr ""
+
+msgctxt "model:ir.ui.view_tree_width,name:0"
+msgid "View Tree Width"
+msgstr "Largeur de vue arbre"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action form"
+msgstr "Formulaire"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action tree"
+msgstr "Arbre"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Form relate"
+msgstr "Formulaire relié"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open Graph"
+msgstr "Ouvrir le graphique"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open tree"
+msgstr "Ouvrir l'arbre"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Print form"
+msgstr "Imprimer le formulaire"
+
+msgctxt "selection:ir.attachment,type:0"
+msgid "Data"
+msgstr "Données"
+
+msgctxt "selection:ir.attachment,type:0"
+msgid "Link"
+msgstr "Lien"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Days"
+msgstr "Jours"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Hours"
+msgstr "Heures"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Minutes"
+msgstr "Minutes"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Months"
+msgstr "Mois"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Weeks"
+msgstr "Semaines"
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Left-to-right"
+msgstr "Gauche-à-droite"
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Right-to-left"
+msgstr "Droite-à-gauche"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Installed"
+msgstr "Installé"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Not Installed"
+msgstr "Pas installé"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be installed"
+msgstr "À être installé"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be removed"
+msgstr "À être enlevé"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be upgraded"
+msgstr "À être mis à jour"
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Done"
+msgstr "Fait"
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Open"
+msgstr "Ouvert"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Installed"
+msgstr "Installé"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Not Installed"
+msgstr "Pas installé"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be installed"
+msgstr "À être installé"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be removed"
+msgstr "À être enlevé"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be upgraded"
+msgstr "À être mis à jour"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Unknown"
+msgstr "Inconnu"
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Decimal Timestamp"
+msgstr "Estampille décimale"
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr "Estampille hexadécimale"
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Incremental"
+msgstr "Incrémental"
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Decimal Timestamp"
+msgstr "Estampille décimale"
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr "Estampille hexadécimale"
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Incremental"
+msgstr "Incrémental"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Error"
+msgstr "Erreur"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Field"
+msgstr "Champ"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Help"
+msgstr "Aide"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "ODT"
+msgstr "ODT"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Selection"
+msgstr "Sélection"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "View"
+msgstr "Vue"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Wizard Button"
+msgstr "Bouton de l'assistant"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.act_window"
+msgstr ""
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.report"
+msgstr ""
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.url"
+msgstr ""
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.wizard"
+msgstr ""
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid ""
+msgstr ""
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Board"
+msgstr "Tableau"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Form"
+msgstr "Formulaire"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Graph"
+msgstr "Graphique"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Tree"
+msgstr "Arbre"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "General"
+msgstr "Général"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keyword"
+msgstr "Mot-clé"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keywords"
+msgstr "Mots-clés"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open Window"
+msgstr "Ouvre la fenêtre"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open a Window"
+msgstr "Ouvrir une fenêtre"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Views"
+msgstr "Vues"
+
+msgctxt "view:ir.action.report:0"
+msgid "General"
+msgstr "Général"
+
+msgctxt "view:ir.action.report:0"
+msgid "Keyword"
+msgstr "Mot-clé"
+
+msgctxt "view:ir.action.report:0"
+msgid "Keywords"
+msgstr "Mots-clés"
+
+msgctxt "view:ir.action.report:0"
+msgid "Report"
+msgstr "Rapport"
+
+msgctxt "view:ir.action.report:0"
+msgid "Report xml"
+msgstr "Rapport xml"
+
+msgctxt "view:ir.action.url:0"
+msgid "General"
+msgstr "Général"
+
+msgctxt "view:ir.action.url:0"
+msgid "Keyword"
+msgstr "Mot-clé"
+
+msgctxt "view:ir.action.url:0"
+msgid "Keywords"
+msgstr "Mots-clés"
+
+msgctxt "view:ir.action.url:0"
+msgid "URL"
+msgstr "URL"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "General"
+msgstr "Général"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keyword"
+msgstr "Mot-clé"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keywords"
+msgstr "Mots-clés"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Wizard"
+msgstr "Assistant"
+
+msgctxt "view:ir.action:0"
+msgid "Action"
+msgstr "Action"
+
+msgctxt "view:ir.action:0"
+msgid "General"
+msgstr "Général"
+
+msgctxt "view:ir.action:0"
+msgid "Keyword"
+msgstr "Mot-clé"
+
+msgctxt "view:ir.action:0"
+msgid "Keywords"
+msgstr "Mots-clés"
+
+msgctxt "view:ir.attachment:0"
+msgid "Attachments"
+msgstr "Pièces jointes"
+
+msgctxt "view:ir.attachment:0"
+msgid "Preview"
+msgstr "Aperçu"
+
+msgctxt "view:ir.cron:0"
+msgid "Action to trigger"
+msgstr "Action à déclencher"
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Action"
+msgstr "Action planifiée"
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Actions"
+msgstr "Actions planifiées"
+
+msgctxt "view:ir.export:0"
+msgid "Exports"
+msgstr "Exportations"
+
+msgctxt "view:ir.lang:0"
+msgid "Date Formatting"
+msgstr "Formatage des dates"
+
+msgctxt "view:ir.lang:0"
+msgid "Language"
+msgstr "Langues"
+
+msgctxt "view:ir.lang:0"
+msgid "Languages"
+msgstr "Langues"
+
+msgctxt "view:ir.lang:0"
+msgid "Numbers Formatting"
+msgstr "Formatage des nombres"
+
+msgctxt "view:ir.model.access:0"
+msgid "Access controls"
+msgstr "Contrôles d'accès"
+
+msgctxt "view:ir.model.field.access:0"
+msgid "Field Access"
+msgstr "Droits d'accès au champs"
+
+msgctxt "view:ir.model.field:0"
+msgid "Fields"
+msgstr "Champs"
+
+msgctxt "view:ir.model.print_model_graph.init:0"
+msgid "Print Model Graph"
+msgstr "Imprimer le graphique de modèle"
+
+msgctxt "view:ir.model:0"
+msgid "Fields Description"
+msgstr "Champs de description"
+
+msgctxt "view:ir.model:0"
+msgid "Model Description"
+msgstr "Description du modèle"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "Module Configuration Wizard"
+msgstr "Assistant de Configuration de module"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "Welcome to the module configuration wizard!"
+msgstr "Bienvenu dans l'assistant de configuration de module !"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "You will be able to configure your installation"
+msgstr "Vous pourrez configurer votre installation"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid ""
+"You will be able to configure your installation depending on the modules you"
+" have installed."
+msgstr ""
+"Vous pourrez configurer votre installation en fonction des modules que vous "
+"avez installez."
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "depending on the modules you have installed."
+msgstr "en fonction des modules installé."
+
+msgctxt "view:ir.module.module.config_wizard.item:0"
+msgid "Config Wizard Items"
+msgstr "Élements de l'assistant de configuration"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Note that this operation my take a few minutes."
+msgstr "Attention, cette opération peut prendre plusieurs minutes."
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "System Upgrade"
+msgstr "Mis à jour du système"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Your system will be upgraded."
+msgstr "Votre système sera mis à jour."
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "System upgrade done"
+msgstr "Mis à jour du système faite"
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "The modules have been upgraded / installed !"
+msgstr "Les modules ont été mis à jour / installés !"
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "We suggest you to reload the menu tab (Ctrl+t Ctrl+r)."
+msgstr "Nous vous suggérons de recharger l'onglet du menu (Ctrl+t Ctrl+r)"
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "You may have to reinstall some language pack."
+msgstr "Vous pourriez avoir à réinstaller quelque langue."
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Install"
+msgstr "Annuler l'installation"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr "Annuler l'installation"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstall"
+msgstr "Annuler la désinstallation"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr "Annuler la désinstallation"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr "Annuler la mis-à-jour"
+
+msgctxt "view:ir.module.module:0"
+msgid "Dependencies"
+msgstr "Dépendances"
+
+msgctxt "view:ir.module.module:0"
+msgid "Install"
+msgstr "Installer"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr "Sélectionner pour l'installation"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr "Sélectionner pour la dés-installation"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr "Sélectionner pour la mise à jour"
+
+msgctxt "view:ir.module.module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "view:ir.module.module:0"
+msgid "Modules"
+msgstr "Modules"
+
+msgctxt "view:ir.module.module:0"
+msgid "Uninstall (beta)"
+msgstr "Désinstaller (béta)"
+
+msgctxt "view:ir.module.module:0"
+msgid "Upgrade"
+msgstr "Mettre à jour"
+
+msgctxt "view:ir.property:0"
+msgid "Properties"
+msgstr "Propriétés"
+
+msgctxt "view:ir.property:0"
+msgid "Property"
+msgstr "Propriété"
+
+msgctxt "view:ir.rule.group:0"
+msgid ""
+"If there is no test defined, the rule is always satisfied if not global"
+msgstr ""
+"Si il n'y a pas de test défini, la règle est toujours satisfaite s'elle "
+"n'est pas globale"
+
+msgctxt "view:ir.rule.group:0"
+msgid "Record rules"
+msgstr "Règles d'enregistrement"
+
+msgctxt "view:ir.rule.group:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr "La règle est satisfaite si au moins un test est vrai"
+
+msgctxt "view:ir.rule:0"
+msgid "Test"
+msgstr "Test"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "${day}"
+msgstr "${day}"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "${month}"
+msgstr "${month}"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "${year}"
+msgstr "${year}"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Day:"
+msgstr "Jour"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Legend (for prefix, suffix)"
+msgstr "Légende (préfixe et suffixe)"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Month:"
+msgstr "Mois :"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Sequences Strict"
+msgstr "Séquence stricte"
+
+msgctxt "view:ir.sequence.strict:0"
+msgid "Year:"
+msgstr "Année :"
+
+msgctxt "view:ir.sequence.type:0"
+msgid "Sequence Type"
+msgstr "Type de séquence"
+
+msgctxt "view:ir.sequence:0"
+msgid "${day}"
+msgstr "${day}"
+
+msgctxt "view:ir.sequence:0"
+msgid "${month}"
+msgstr "${month}"
+
+msgctxt "view:ir.sequence:0"
+msgid "${year}"
+msgstr "${year}"
+
+msgctxt "view:ir.sequence:0"
+msgid "Day:"
+msgstr "Jour:"
+
+msgctxt "view:ir.sequence:0"
+msgid "Incremental"
+msgstr "Incrémental"
+
+msgctxt "view:ir.sequence:0"
+msgid "Legend (Placeholders for prefix, suffix)"
+msgstr "Légende (charactère pour le préfixe, le suffixe)"
+
+msgctxt "view:ir.sequence:0"
+msgid "Legend (for prefix, suffix)"
+msgstr "Légende (pour préfixe, suffixe)"
+
+msgctxt "view:ir.sequence:0"
+msgid "Month:"
+msgstr "Mois :"
+
+msgctxt "view:ir.sequence:0"
+msgid "Sequences"
+msgstr "Séquences"
+
+msgctxt "view:ir.sequence:0"
+msgid "Timestamp"
+msgstr "Estampille"
+
+msgctxt "view:ir.sequence:0"
+msgid "Year:"
+msgstr "Année :"
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations"
+msgstr "Nettoyer les traductions"
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations?"
+msgstr "Nettoyer les traductions ?"
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations"
+msgstr "Nettoyer les traductions"
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations Succeed!"
+msgstr "Nettoyage des traductions réussi !"
+
+msgctxt "view:ir.translation.export.init:0"
+msgid "Export Translation"
+msgstr "Exporter les traductions"
+
+msgctxt "view:ir.translation.export.start:0"
+msgid "Export Translation"
+msgstr "Exporter les traductions"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Set Report Translations"
+msgstr "Mettre à jours les traductions des rapports"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Synchronize Report Translations?"
+msgstr "Synchroniser les tradcutions des rapports ?"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Update Report Translations"
+msgstr "Mettre à jour les traductions des rapports"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Update Report Translations?"
+msgstr "Mettre à jour les traductions des rapports ?"
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Report Translations"
+msgstr "Mettre à jours les traductions des rapports"
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Translations Succeed!"
+msgstr "Traductions réussies"
+
+msgctxt "view:ir.translation.update.init:0"
+msgid "Synchronize Translations"
+msgstr "Synchroniser les traductions"
+
+msgctxt "view:ir.translation.update.init:0"
+msgid "Update Translations"
+msgstr "Mettre à jour les traductions"
+
+msgctxt "view:ir.translation:0"
+msgid "Translations"
+msgstr "Traductions"
+
+msgctxt "view:ir.trigger:0"
+msgid "Trigger"
+msgstr "Déclencheur"
+
+msgctxt "view:ir.trigger:0"
+msgid "Triggers"
+msgstr "Déclencheurs"
+
+msgctxt "view:ir.ui.icon:0"
+msgid "Icon"
+msgstr "Icône"
+
+msgctxt "view:ir.ui.icon:0"
+msgid "Icons"
+msgstr "Icônes"
+
+msgctxt "view:ir.ui.menu:0"
+msgid "Menu"
+msgstr "Menu"
+
+msgctxt "view:ir.ui.view:0"
+msgid "View"
+msgstr "Vue"
+
+msgctxt "view:ir.ui.view:0"
+msgid "_Show"
+msgstr "_Montrer"
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcut"
+msgstr "Raccourcis"
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcuts"
+msgstr "Raccourcis"
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "View Tree Expanded State"
+msgstr "État des vues arbres développées"
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "Views Tree Expanded State"
+msgstr "État des vues arbres développées"
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "View Tree Width"
+msgstr "Largeur de vue arbre"
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "Views Tree Width"
+msgstr "Largeurs des vues arbres"
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,end:0"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,print:0"
+msgid "Print"
+msgstr "Imprimer"
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,end:0"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,wizard:0"
+msgid "Ok"
+msgstr "Ok"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,end:0"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,start:0"
+msgid "Start Upgrade"
+msgstr "Démarrer la mis à jour"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,start,config:0"
+msgid "Ok"
+msgstr "Ok"
+
+msgctxt "wizard_button:ir.translation.clean,init,end:0"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:ir.translation.clean,init,start:0"
+msgid "Start"
+msgstr "Départ"
+
+msgctxt "wizard_button:ir.translation.clean,start,end:0"
+msgid "Ok"
+msgstr "Ok"
+
+msgctxt "wizard_button:ir.translation.export,init,end:0"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:ir.translation.export,init,start:0"
+msgid "Start Export"
+msgstr "Démarrer l'exportation"
+
+msgctxt "wizard_button:ir.translation.export,start,end:0"
+msgid "Close"
+msgstr "Fermer"
+
+msgctxt "wizard_button:ir.translation.set_report,init,end:0"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:ir.translation.set_report,init,start:0"
+msgid "Start Update"
+msgstr "Démarrer la mise-à-Jour"
+
+msgctxt "wizard_button:ir.translation.set_report,start,end:0"
+msgid "Ok"
+msgstr "Ok"
+
+msgctxt "wizard_button:ir.translation.update,init,end:0"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:ir.translation.update,init,start:0"
+msgid "Start Update"
+msgstr "Démarrer la mise à jour"
+
+msgctxt "wizard_button:ir.ui.view.show,init,end:0"
+msgid "Close"
+msgstr "Fermer"
diff --git a/trytond/ir/locale/nl_NL.po b/trytond/ir/locale/nl_NL.po
new file mode 100644
index 0000000..1389721
--- /dev/null
+++ b/trytond/ir/locale/nl_NL.po
@@ -0,0 +1,2806 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:access_error:0"
+msgid ""
+"You try to bypass an access rule!\n"
+"(Document type: %s)"
+msgstr ""
+"U probeert een toegangsregel te omzeilen!\n"
+"(Document type: %s)"
+
+msgctxt "error:delete_workflow_record:0"
+msgid "You cannot delete a record with a running workflow."
+msgstr "U kunt een item in een actieve werkgang niet verwijderen."
+
+msgctxt "error:delete_xml_record:0"
+msgid "You are not allowed to delete this record."
+msgstr "Het is u niet toegestaan dit item te verwijderen."
+
+msgctxt "error:digits_validation_record:0"
+msgid "The field \"%s\" on \"%s\" has too many decimal digits."
+msgstr "Het veld \"%s\" in \"%s\" heeft te veel decimalen."
+
+msgctxt "error:domain_validation_record:0"
+msgid "The value of the field \"%s\" on \"%s\" is not valid according to its domain."
+msgstr "De waarde van het veld \"%s\" in \"%s\" is niet geldig binnen zijn domein."
+
+msgctxt "error:foreign_model_exist:0"
+msgid "Could not delete \"%s\" records because they are used on field \"%s\" of \"%s\"."
+msgstr ""
+"Kon items \"%s\" niet verwijderen omdat ze in gebruik waren in veld \"%s\" "
+"van \"%s\"."
+
+msgctxt "error:foreign_model_missing:0"
+msgid "The value of field \"%s\" on \"%s\" doesn't exist."
+msgstr "De waarde van veld \"%s\" in \"%s\" bestaat niet."
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid context!"
+msgstr "Ongeldig verband!"
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid domain or search criteria!"
+msgstr ""
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid views!"
+msgstr ""
+
+msgctxt "error:ir.action.keyword:0"
+msgid "Wrong wizard model!"
+msgstr "Verkeerde assistent model!"
+
+msgctxt "error:ir.action.report:0"
+msgid "The internal name must be unique by module!"
+msgstr "De interne naam moet uniek zijn per module!"
+
+msgctxt "error:ir.attachment:0"
+msgid "The  names of attachments must be unique by resource!"
+msgstr "De namen van de bijlagen moeten uniek zijn per bron!"
+
+msgctxt "error:ir.cron:0"
+msgid "Scheduled action failed"
+msgstr "Geplande actie mislukt"
+
+msgctxt "error:ir.cron:0"
+msgid ""
+"The following action failed to execute properly: \"%s\"\n"
+" Traceback: \n"
+"\n"
+"%s\n"
+msgstr ""
+"Deze aktie is niet goed uitgevoerd: \"%s\"\n"
+"Spoor:\n"
+"\n"
+"%s"
+
+msgctxt "error:ir.lang:0"
+msgid "Invalid Grouping!"
+msgstr "Ongeldigegroep"
+
+msgctxt "error:ir.lang:0"
+msgid "The date format is not valid!"
+msgstr "Datum samenstelling is niet geldig!"
+
+msgctxt "error:ir.lang:0"
+msgid "decimal_point and thousands_sep must be different!"
+msgstr "Decimaal teken en duizendtal teken moet verschillend zijn!"
+
+msgctxt "error:ir.model.access:0"
+msgid "Only one record by model and group is allowed!"
+msgstr "Slechts één item per model en groep is toegestaan!"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not create this kind of document! (%s)"
+msgstr "U kunt dit type document niet aanmaken! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not delete this document! (%s)"
+msgstr "U kunt dit document niet verwijderen! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not read this document! (%s)"
+msgstr "U kunt dit document openen! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not write in this document! (%s)"
+msgstr "U kunt dit document niet muteren! (%s)"
+
+msgctxt "error:ir.model.data:0"
+msgid "The triple (fs_id, module, model) must be unique!"
+msgstr "Het drietal (fs_id, module, model) moet uniek zijn!"
+
+msgctxt "error:ir.model.field.access:0"
+msgid "Only one record by field and group is allowed!"
+msgstr ""
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not read the field! (%s.%s)"
+msgstr ""
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not write on the field! (%s.%s)"
+msgstr ""
+
+msgctxt "error:ir.model.field:0"
+msgid "Model Field Name must be a python identifier!"
+msgstr "Model veldnaam moet een python variabele zijn!"
+
+msgctxt "error:ir.model.field:0"
+msgid "The field name in model must be unique!"
+msgstr "De veldnaam in het model moet uniek zijn!"
+
+msgctxt "error:ir.model:0"
+msgid "Module Name must be a python identifier!"
+msgstr "Module naam moet een python variabele zijn!"
+
+msgctxt "error:ir.model:0"
+msgid "The model must be unique!"
+msgstr "Het model moet uniek zijn!"
+
+msgctxt "error:ir.module.module.dependency:0"
+msgid "Dependency must be unique by module!"
+msgstr "Afhankelijkheid moet uniek zijn per module!"
+
+msgctxt "error:ir.module.module:0"
+msgid "Missing dependencies %s for module \"%s\""
+msgstr "Afhankelijkheid %s ontbreekt voor module \"%s\""
+
+msgctxt "error:ir.module.module:0"
+msgid "The modules you are trying to uninstall depends on installed modules:"
+msgstr ""
+"De module die u wilt verwijderen is afhankelijk van geïnstalleerde modules:"
+
+msgctxt "error:ir.module.module:0"
+msgid "The name of the module must be unique!"
+msgstr "De naam van de module moet uniek zijn!"
+
+msgctxt "error:ir.module.module:0"
+msgid "You can not remove a module that is installed or will be installed"
+msgstr "U kunt een module niet verwijderen als die geïnstalleerd is of wordt."
+
+msgctxt "error:ir.rule.group:0"
+msgid "Global and Default are mutually exclusive!"
+msgstr "Globaal en standaard sluiten elkaar uit!"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Invalid prefix/suffix!"
+msgstr "Ongeldig voorvoegsel / toevoeging"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Last Timestamp could not be in future!"
+msgstr "Laatste tijdmarkering kan niet in de toekomst zijn!"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Missing sequence!"
+msgstr "Reeks ontbreekt!"
+
+msgctxt "error:ir.sequence:0"
+msgid "Invalid prefix/suffix!"
+msgstr "Ongeldig voorvoegsel / toevoeging"
+
+msgctxt "error:ir.sequence:0"
+msgid "Last Timestamp could not be in future!"
+msgstr "Laatste tijdmarkering kan niet in de toekomst zijn!"
+
+msgctxt "error:ir.sequence:0"
+msgid "Missing sequence!"
+msgstr "Reeks ontbreekt!"
+
+msgctxt "error:ir.translation:0"
+msgid "Translation must be unique"
+msgstr "Vertaling moet uniek zijn!"
+
+msgctxt "error:ir.trigger:0"
+msgid "\"On Time\" and others are mutually exclusive!"
+msgstr "\"Op tijd\" en anderen sluiten elkaar uit!"
+
+msgctxt "error:ir.trigger:0"
+msgid "Condition must be a python expression!"
+msgstr "Voorwaarde moet een python formule zijn!"
+
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not create recursive menu!"
+msgstr ""
+
+#, fuzzy
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not use \" / \" in name field!"
+msgstr "Het \"/\" teken mag niet gebruikt worden in een naam veld!"
+
+msgctxt "error:ir.ui.view.show:0"
+msgid "Only \"form\" view can be shown!"
+msgstr ""
+
+msgctxt "error:ir.ui.view:0"
+msgid "Invalid XML for View!"
+msgstr "Ongeldig XML code in aanzicht!"
+
+msgctxt "error:not_found_in_selection:0"
+msgid "Key %r not found in selection field %r"
+msgstr "Sleutel %r niet gevonden in selectie veld %r"
+
+msgctxt "error:read_error:0"
+msgid ""
+"You try to read records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr ""
+"U probeert items te lezen die niet meer bestaan!\n"
+"(Document type: %s)"
+
+msgctxt "error:reference_syntax_error:0"
+msgid "Syntax error for reference %r in %s"
+msgstr "Foutieve verwijzing voor %r in %s"
+
+msgctxt "error:relation_not_found:0"
+msgid "Relation not found: %r in %s"
+msgstr "Relatie niet gevonden: %r in %s"
+
+msgctxt "error:required_field:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr "Het veld \"%s\" in \"%s\" is vereist."
+
+msgctxt "error:required_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr "Het veld \"%s\" in \"%s\" is vereist."
+
+msgctxt "error:search_function_missing:0"
+msgid "Missing search function on field \"%s\"."
+msgstr "Zoekfunctie ontbreekt voor veld \" %s\"."
+
+msgctxt "error:size_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is too long."
+msgstr "Veld \"%s\" op \"%s\" is te lang."
+
+msgctxt "error:too_many_relations_found:0"
+msgid "Too many relations found: %r in %s"
+msgstr "Te veel relaties gevonden: %r in %s"
+
+msgctxt "error:write_error:0"
+msgid ""
+"You try to write on records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr ""
+"U probeert items te muteren die niet meer bestaan!\n"
+"(Document type: %s)"
+
+msgctxt "error:write_xml_record:0"
+msgid "You are not allowed to modify this record."
+msgstr "Het is u niet toegestaan dit item te muteren."
+
+msgctxt "error:xml_id_syntax_error:0"
+msgid "Syntax error for XML id %r in %s"
+msgstr "Foutieve verwijzing voor XML id %r in %s"
+
+msgctxt "error:xml_record_desc:0"
+msgid "This record is part of the base configuration."
+msgstr "Dit item is onderdeel van de basis configuratie."
+
+msgctxt "field:ir.action,active:0"
+msgid "Active"
+msgstr "Actief"
+
+msgctxt "field:ir.action,groups:0"
+msgid "Groups"
+msgstr "Groepen"
+
+#, fuzzy
+msgctxt "field:ir.action,icon:0"
+msgid "Icon"
+msgstr "Icoon"
+
+msgctxt "field:ir.action,keywords:0"
+msgid "Keywords"
+msgstr "Trefwoorden"
+
+msgctxt "field:ir.action,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.action,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.action,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:ir.action,usage:0"
+msgid "Usage"
+msgstr "Gebruik"
+
+msgctxt "field:ir.action.act_window,act_window_views:0"
+msgid "Views"
+msgstr "Aanzichten"
+
+msgctxt "field:ir.action.act_window,action:0"
+msgid "Action"
+msgstr "Actie"
+
+msgctxt "field:ir.action.act_window,auto_refresh:0"
+msgid "Auto-Refresh"
+msgstr "Automatisch verversen"
+
+msgctxt "field:ir.action.act_window,context:0"
+msgid "Context Value"
+msgstr "Samenhang waarde"
+
+msgctxt "field:ir.action.act_window,domain:0"
+msgid "Domain Value"
+msgstr "Domein waarde"
+
+msgctxt "field:ir.action.act_window,limit:0"
+msgid "Limit"
+msgstr "Begrenzing"
+
+msgctxt "field:ir.action.act_window,pyson_context:0"
+msgid "PySON Context"
+msgstr "PySON verband"
+
+msgctxt "field:ir.action.act_window,pyson_domain:0"
+msgid "PySON Domain"
+msgstr "PySON domein"
+
+msgctxt "field:ir.action.act_window,pyson_search_value:0"
+msgid "PySON Search Criteria"
+msgstr "PySON zoekargument"
+
+msgctxt "field:ir.action.act_window,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.action.act_window,res_model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:ir.action.act_window,search_value:0"
+msgid "Search Criteria"
+msgstr "Zoekargumenten"
+
+msgctxt "field:ir.action.act_window,views:0"
+msgid "Views"
+msgstr "Aanzichten"
+
+msgctxt "field:ir.action.act_window,window_name:0"
+msgid "Window Name"
+msgstr "Aanzicht naam"
+
+msgctxt "field:ir.action.act_window.view,act_window:0"
+msgid "Action"
+msgstr "Actie"
+
+msgctxt "field:ir.action.act_window.view,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.action.act_window.view,sequence:0"
+msgid "Sequence"
+msgstr "Reeks"
+
+msgctxt "field:ir.action.act_window.view,view:0"
+msgid "View"
+msgstr "Overzicht"
+
+msgctxt "field:ir.action.keyword,action:0"
+msgid "Action"
+msgstr "Actie"
+
+msgctxt "field:ir.action.keyword,keyword:0"
+msgid "Keyword"
+msgstr "Trefwoord"
+
+msgctxt "field:ir.action.keyword,model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:ir.action.keyword,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.action.report,action:0"
+msgid "Action"
+msgstr "Actie"
+
+msgctxt "field:ir.action.report,direct_print:0"
+msgid "Direct Print"
+msgstr "Direct afdrukken"
+
+msgctxt "field:ir.action.report,email:0"
+msgid "Email"
+msgstr "E-mail"
+
+msgctxt "field:ir.action.report,extension:0"
+msgid "Extension"
+msgstr "Uitbreiding"
+
+msgctxt "field:ir.action.report,model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:ir.action.report,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.action.report,pyson_email:0"
+msgid "PySON Email"
+msgstr ""
+
+msgctxt "field:ir.action.report,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.action.report,report:0"
+msgid "Path"
+msgstr "Pad"
+
+msgctxt "field:ir.action.report,report_content:0"
+msgid "Content"
+msgstr "Inhoud"
+
+#, fuzzy
+msgctxt "field:ir.action.report,report_content_custom:0"
+msgid "Content"
+msgstr "Inhoud"
+
+msgctxt "field:ir.action.report,report_name:0"
+msgid "Internal Name"
+msgstr "Interne naam"
+
+msgctxt "field:ir.action.report,style:0"
+msgid "Style"
+msgstr "Stijl"
+
+msgctxt "field:ir.action.report,style_content:0"
+msgid "Style"
+msgstr "Stijl"
+
+msgctxt "field:ir.action.report,template_extension:0"
+msgid "Template Extension"
+msgstr ""
+
+msgctxt "field:ir.action.url,action:0"
+msgid "Action"
+msgstr "Actie"
+
+msgctxt "field:ir.action.url,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.action.url,url:0"
+msgid "Action Url"
+msgstr "Actie URL"
+
+msgctxt "field:ir.action.wizard,action:0"
+msgid "Action"
+msgstr "Actie"
+
+msgctxt "field:ir.action.wizard,email:0"
+msgid "Email"
+msgstr "E-mail"
+
+msgctxt "field:ir.action.wizard,model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:ir.action.wizard,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.action.wizard,window:0"
+msgid "Window"
+msgstr "Scherm"
+
+msgctxt "field:ir.action.wizard,wiz_name:0"
+msgid "Wizard name"
+msgstr "Assistent naam"
+
+msgctxt "field:ir.attachment,collision:0"
+msgid "Collision"
+msgstr "Botsing"
+
+msgctxt "field:ir.attachment,data:0"
+msgid "Data"
+msgstr ""
+
+msgctxt "field:ir.attachment,data_size:0"
+msgid "Data size"
+msgstr ""
+
+msgctxt "field:ir.attachment,description:0"
+msgid "Description"
+msgstr "Omschrijving"
+
+msgctxt "field:ir.attachment,digest:0"
+msgid "Digest"
+msgstr "Verwerken"
+
+msgctxt "field:ir.attachment,last_modification:0"
+msgid "Last Modification"
+msgstr ""
+
+msgctxt "field:ir.attachment,last_user:0"
+msgid "Last User"
+msgstr ""
+
+msgctxt "field:ir.attachment,link:0"
+msgid "Link"
+msgstr "Verbinding"
+
+#, fuzzy
+msgctxt "field:ir.attachment,name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+msgctxt "field:ir.attachment,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.attachment,resource:0"
+msgid "Resource"
+msgstr "Middel"
+
+msgctxt "field:ir.attachment,summary:0"
+msgid "Summary"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.attachment,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:ir.cache,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.cache,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.cache,timestamp:0"
+msgid "Timestamp"
+msgstr "Tijdmarkering"
+
+msgctxt "field:ir.cron,active:0"
+msgid "Active"
+msgstr "Actief"
+
+msgctxt "field:ir.cron,args:0"
+msgid "Arguments"
+msgstr "Argumenten"
+
+msgctxt "field:ir.cron,function:0"
+msgid "Function"
+msgstr "Functie"
+
+msgctxt "field:ir.cron,interval_number:0"
+msgid "Interval Number"
+msgstr "Interval nummer"
+
+msgctxt "field:ir.cron,interval_type:0"
+msgid "Interval Unit"
+msgstr "Interval eenheid"
+
+msgctxt "field:ir.cron,model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:ir.cron,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.cron,next_call:0"
+msgid "Next Call"
+msgstr ""
+
+msgctxt "field:ir.cron,number_calls:0"
+msgid "Number of Calls"
+msgstr ""
+
+msgctxt "field:ir.cron,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.cron,repeat_missed:0"
+msgid "Repeat Missed"
+msgstr ""
+
+msgctxt "field:ir.cron,request_user:0"
+msgid "Request User"
+msgstr "Verzoek gebruiker"
+
+msgctxt "field:ir.cron,user:0"
+msgid "Execution User"
+msgstr "Uitvoerende gebruiker"
+
+msgctxt "field:ir.export,export_fields:0"
+msgid "Fields"
+msgstr "Velden"
+
+msgctxt "field:ir.export,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.export,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.export,resource:0"
+msgid "Resource"
+msgstr "Middel"
+
+msgctxt "field:ir.export.line,export:0"
+msgid "Export"
+msgstr "Exporteren"
+
+msgctxt "field:ir.export.line,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.export.line,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.lang,active:0"
+msgid "Active"
+msgstr "Actief"
+
+msgctxt "field:ir.lang,code:0"
+msgid "Code"
+msgstr "Code"
+
+msgctxt "field:ir.lang,date:0"
+msgid "Date"
+msgstr "Datum"
+
+msgctxt "field:ir.lang,decimal_point:0"
+msgid "Decimal Separator"
+msgstr "Decimaalteken"
+
+msgctxt "field:ir.lang,direction:0"
+msgid "Direction"
+msgstr "Richting"
+
+msgctxt "field:ir.lang,grouping:0"
+msgid "Grouping"
+msgstr "Groeperen"
+
+msgctxt "field:ir.lang,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.lang,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.lang,thousands_sep:0"
+msgid "Thousands Separator"
+msgstr "Duizendtal teken"
+
+msgctxt "field:ir.lang,translatable:0"
+msgid "Translatable"
+msgstr "Vertaalbaar"
+
+msgctxt "field:ir.model,fields:0"
+msgid "Fields"
+msgstr "Velden"
+
+msgctxt "field:ir.model,info:0"
+msgid "Information"
+msgstr "Informatie"
+
+msgctxt "field:ir.model,model:0"
+msgid "Model Name"
+msgstr "Naam module"
+
+msgctxt "field:ir.model,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.model,name:0"
+msgid "Model Description"
+msgstr "Model omschrijving"
+
+msgctxt "field:ir.model,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.model.access,description:0"
+msgid "Description"
+msgstr "Omschrijving"
+
+msgctxt "field:ir.model.access,group:0"
+msgid "Group"
+msgstr "Groep"
+
+msgctxt "field:ir.model.access,model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:ir.model.access,perm_create:0"
+msgid "Create Access"
+msgstr "Mag aanmaken"
+
+msgctxt "field:ir.model.access,perm_delete:0"
+msgid "Delete Access"
+msgstr "Toegang verwijderen"
+
+msgctxt "field:ir.model.access,perm_read:0"
+msgid "Read Access"
+msgstr "Leesrecht"
+
+msgctxt "field:ir.model.access,perm_write:0"
+msgid "Write Access"
+msgstr "Schrijfrecht"
+
+msgctxt "field:ir.model.access,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.model.data,date_init:0"
+msgid "Init Date"
+msgstr "Datum aanmaken"
+
+msgctxt "field:ir.model.data,date_update:0"
+msgid "Update Date"
+msgstr "Datum bijgewerkt"
+
+msgctxt "field:ir.model.data,db_id:0"
+msgid "Resource ID"
+msgstr "Middel ID"
+
+msgctxt "field:ir.model.data,fs_id:0"
+msgid "Identifier on File System"
+msgstr "Kenmerk voor bestandssysteem"
+
+msgctxt "field:ir.model.data,inherit:0"
+msgid "Inherit"
+msgstr "Erven"
+
+msgctxt "field:ir.model.data,model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:ir.model.data,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.model.data,noupdate:0"
+msgid "No Update"
+msgstr "Niet bij te werken"
+
+msgctxt "field:ir.model.data,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.model.data,values:0"
+msgid "Values"
+msgstr "Waarden"
+
+msgctxt "field:ir.model.field,field_description:0"
+msgid "Field Description"
+msgstr "Veld omschrijving"
+
+msgctxt "field:ir.model.field,groups:0"
+msgid "Groups"
+msgstr "Groepen"
+
+msgctxt "field:ir.model.field,help:0"
+msgid "Help"
+msgstr "Help"
+
+msgctxt "field:ir.model.field,model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:ir.model.field,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.model.field,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.model.field,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.model.field,relation:0"
+msgid "Model Relation"
+msgstr "Model relatie"
+
+msgctxt "field:ir.model.field,ttype:0"
+msgid "Field Type"
+msgstr "Veld type"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,description:0"
+msgid "Description"
+msgstr "Specificatie"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,field:0"
+msgid "Field"
+msgstr "Veld"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,group:0"
+msgid "Group"
+msgstr "Groep"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,perm_read:0"
+msgid "Read Access"
+msgstr "Leesrecht"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,perm_write:0"
+msgid "Write Access"
+msgstr "Schrijfrecht"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+msgctxt "field:ir.model.print_model_graph.init,filter:0"
+msgid "Filter"
+msgstr "Filter"
+
+msgctxt "field:ir.model.print_model_graph.init,level:0"
+msgid "Level"
+msgstr "Niveau"
+
+msgctxt "field:ir.module.module,author:0"
+msgid "Author"
+msgstr "Auteur"
+
+msgctxt "field:ir.module.module,dependencies:0"
+msgid "Dependencies"
+msgstr "Afhankelijkheden"
+
+msgctxt "field:ir.module.module,description:0"
+msgid "Description"
+msgstr "Omschrijving"
+
+msgctxt "field:ir.module.module,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.module.module,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.module.module,shortdesc:0"
+msgid "Short description"
+msgstr "Korte omschrijving"
+
+msgctxt "field:ir.module.module,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:ir.module.module,version:0"
+msgid "Version"
+msgstr "Versie"
+
+msgctxt "field:ir.module.module,website:0"
+msgid "Website"
+msgstr "Website"
+
+msgctxt "field:ir.module.module.config_wizard.item,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.module.module.config_wizard.item,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.module.module.config_wizard.item,sequence:0"
+msgid "Sequence"
+msgstr "Reeks"
+
+msgctxt "field:ir.module.module.config_wizard.item,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:ir.module.module.dependency,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.module.module.dependency,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.module.module.dependency,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.module.module.dependency,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:ir.module.module.install_upgrade.init,module_info:0"
+msgid "Modules to update"
+msgstr "Modules om bij te werken"
+
+msgctxt "field:ir.property,field:0"
+msgid "Field"
+msgstr "Veld"
+
+msgctxt "field:ir.property,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.property,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.property,res:0"
+msgid "Resource"
+msgstr "Middel"
+
+msgctxt "field:ir.property,value:0"
+msgid "Value"
+msgstr "Waarde"
+
+msgctxt "field:ir.rule,field:0"
+msgid "Field"
+msgstr "Veld"
+
+msgctxt "field:ir.rule,operand:0"
+msgid "Operand"
+msgstr "Invoerwaarde"
+
+msgctxt "field:ir.rule,operator:0"
+msgid "Operator"
+msgstr "Bewerker"
+
+msgctxt "field:ir.rule,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.rule,rule_group:0"
+msgid "Group"
+msgstr "Groep"
+
+msgctxt "field:ir.rule.group,default_p:0"
+msgid "Default"
+msgstr "Standaard"
+
+msgctxt "field:ir.rule.group,global_p:0"
+msgid "Global"
+msgstr "Globaal"
+
+msgctxt "field:ir.rule.group,groups:0"
+msgid "Groups"
+msgstr "Groepen"
+
+msgctxt "field:ir.rule.group,model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:ir.rule.group,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.rule.group,perm_create:0"
+msgid "Create Access"
+msgstr "Mag aanmaken"
+
+msgctxt "field:ir.rule.group,perm_delete:0"
+msgid "Delete Access"
+msgstr "Toegang verwijderen"
+
+msgctxt "field:ir.rule.group,perm_read:0"
+msgid "Read Access"
+msgstr "Leesrecht"
+
+msgctxt "field:ir.rule.group,perm_write:0"
+msgid "Write Access"
+msgstr "Schrijfrecht"
+
+msgctxt "field:ir.rule.group,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.rule.group,rules:0"
+msgid "Tests"
+msgstr "Testen"
+
+msgctxt "field:ir.rule.group,users:0"
+msgid "Users"
+msgstr "Gebruikers"
+
+msgctxt "field:ir.sequence,active:0"
+msgid "Active"
+msgstr "Actief"
+
+msgctxt "field:ir.sequence,code:0"
+msgid "Sequence Code"
+msgstr "Reeks code"
+
+msgctxt "field:ir.sequence,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr "Laatste tijdmarkering"
+
+msgctxt "field:ir.sequence,name:0"
+msgid "Sequence Name"
+msgstr "Reeks naam"
+
+msgctxt "field:ir.sequence,number_increment:0"
+msgid "Increment Number"
+msgstr "Oplopende stap"
+
+msgctxt "field:ir.sequence,number_next:0"
+msgid "Next Number"
+msgstr "Volgende nummer"
+
+#, fuzzy
+msgctxt "field:ir.sequence,number_next_internal:0"
+msgid "Next Number"
+msgstr "Volgende nummer"
+
+msgctxt "field:ir.sequence,padding:0"
+msgid "Number padding"
+msgstr "Voorloopnullen"
+
+msgctxt "field:ir.sequence,prefix:0"
+msgid "Prefix"
+msgstr "Voorvoegsel"
+
+msgctxt "field:ir.sequence,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.sequence,suffix:0"
+msgid "Suffix"
+msgstr "Toevoeging"
+
+msgctxt "field:ir.sequence,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr "Tijdmarkering verschuiving"
+
+msgctxt "field:ir.sequence,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr "Tijdmarkering afronding"
+
+msgctxt "field:ir.sequence,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:ir.sequence.strict,active:0"
+msgid "Active"
+msgstr "Actief"
+
+msgctxt "field:ir.sequence.strict,code:0"
+msgid "Sequence Code"
+msgstr "Reeks code"
+
+msgctxt "field:ir.sequence.strict,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr "Laatste tijdmarkering"
+
+msgctxt "field:ir.sequence.strict,name:0"
+msgid "Sequence Name"
+msgstr "Reeks naam"
+
+msgctxt "field:ir.sequence.strict,number_increment:0"
+msgid "Increment Number"
+msgstr "Oplopende stap"
+
+msgctxt "field:ir.sequence.strict,number_next:0"
+msgid "Next Number"
+msgstr "Volgende nummer"
+
+#, fuzzy
+msgctxt "field:ir.sequence.strict,number_next_internal:0"
+msgid "Next Number"
+msgstr "Volgende nummer"
+
+msgctxt "field:ir.sequence.strict,padding:0"
+msgid "Number padding"
+msgstr "Voorloopnullen"
+
+msgctxt "field:ir.sequence.strict,prefix:0"
+msgid "Prefix"
+msgstr "Voorvoegsel"
+
+msgctxt "field:ir.sequence.strict,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.sequence.strict,suffix:0"
+msgid "Suffix"
+msgstr "Toevoeging"
+
+msgctxt "field:ir.sequence.strict,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr "Tijdmarkering verschuiving"
+
+msgctxt "field:ir.sequence.strict,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr "Tijdmarkering afronding"
+
+msgctxt "field:ir.sequence.strict,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:ir.sequence.type,code:0"
+msgid "Sequence Code"
+msgstr "Reeks code"
+
+msgctxt "field:ir.sequence.type,name:0"
+msgid "Sequence Name"
+msgstr "Reeks naam"
+
+msgctxt "field:ir.sequence.type,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.translation,fuzzy:0"
+msgid "Fuzzy"
+msgstr "Onzeker"
+
+msgctxt "field:ir.translation,lang:0"
+msgid "Language"
+msgstr "Taal"
+
+msgctxt "field:ir.translation,model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:ir.translation,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.translation,name:0"
+msgid "Field Name"
+msgstr "Veldnaam"
+
+msgctxt "field:ir.translation,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.translation,res_id:0"
+msgid "Resource ID"
+msgstr "Middel ID"
+
+msgctxt "field:ir.translation,src:0"
+msgid "Source"
+msgstr "Bron"
+
+msgctxt "field:ir.translation,src_md5:0"
+msgid "Source MD5"
+msgstr ""
+
+msgctxt "field:ir.translation,type:0"
+msgid "Type"
+msgstr "Type"
+
+msgctxt "field:ir.translation,value:0"
+msgid "Translation Value"
+msgstr "Vertaling"
+
+msgctxt "field:ir.translation.export.init,lang:0"
+msgid "Language"
+msgstr "Taal"
+
+msgctxt "field:ir.translation.export.init,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.translation.export.start,file:0"
+msgid "File"
+msgstr "Bestand"
+
+msgctxt "field:ir.translation.update.init,lang:0"
+msgid "Language"
+msgstr "Taal"
+
+msgctxt "field:ir.trigger,action_function:0"
+msgid "Action Function"
+msgstr "Actiefunctie"
+
+msgctxt "field:ir.trigger,action_model:0"
+msgid "Action Model"
+msgstr "Actie model"
+
+msgctxt "field:ir.trigger,active:0"
+msgid "Active"
+msgstr "Actief"
+
+msgctxt "field:ir.trigger,condition:0"
+msgid "Condition"
+msgstr "Voorwaarde"
+
+msgctxt "field:ir.trigger,limit_number:0"
+msgid "Limit Number"
+msgstr "Begrenzing nummer"
+
+msgctxt "field:ir.trigger,minimum_delay:0"
+msgid "Minimum Delay"
+msgstr "Minimum vertraging"
+
+msgctxt "field:ir.trigger,model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:ir.trigger,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.trigger,on_create:0"
+msgid "On Create"
+msgstr "Bij aanmaken"
+
+msgctxt "field:ir.trigger,on_delete:0"
+msgid "On Delete"
+msgstr "Bij verwijderen"
+
+msgctxt "field:ir.trigger,on_time:0"
+msgid "On Time"
+msgstr "Op tijd"
+
+msgctxt "field:ir.trigger,on_write:0"
+msgid "On Write"
+msgstr "Bij muteren"
+
+msgctxt "field:ir.trigger,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.trigger.log,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.trigger.log,record_id:0"
+msgid "Record ID"
+msgstr "Item ID"
+
+msgctxt "field:ir.trigger.log,trigger:0"
+msgid "Trigger"
+msgstr "Starter"
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,icon:0"
+msgid "Icon"
+msgstr "Icoon"
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,module:0"
+msgid "Module"
+msgstr "Module"
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+msgctxt "field:ir.ui.icon,path:0"
+msgid "SVG Path"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,sequence:0"
+msgid "Sequence"
+msgstr "Reeks"
+
+msgctxt "field:ir.ui.menu,action:0"
+msgid "Action"
+msgstr "Actie"
+
+msgctxt "field:ir.ui.menu,active:0"
+msgid "Active"
+msgstr "Actief"
+
+msgctxt "field:ir.ui.menu,childs:0"
+msgid "Children"
+msgstr "Onderliggende niveaus"
+
+msgctxt "field:ir.ui.menu,complete_name:0"
+msgid "Complete Name"
+msgstr "Volledige naam"
+
+msgctxt "field:ir.ui.menu,groups:0"
+msgid "Groups"
+msgstr "Groepen"
+
+msgctxt "field:ir.ui.menu,icon:0"
+msgid "Icon"
+msgstr "Icoon"
+
+msgctxt "field:ir.ui.menu,name:0"
+msgid "Menu"
+msgstr "Menu"
+
+msgctxt "field:ir.ui.menu,parent:0"
+msgid "Parent Menu"
+msgstr "Hoofdmenu"
+
+msgctxt "field:ir.ui.menu,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.ui.menu,sequence:0"
+msgid "Sequence"
+msgstr "Reeks"
+
+msgctxt "field:ir.ui.view,arch:0"
+msgid "View Architecture"
+msgstr "Bekijk opbouw"
+
+msgctxt "field:ir.ui.view,domain:0"
+msgid "Domain"
+msgstr "Domein"
+
+msgctxt "field:ir.ui.view,field_childs:0"
+msgid "Children Field"
+msgstr "Veld onderliggende niveaus"
+
+msgctxt "field:ir.ui.view,inherit:0"
+msgid "Inherited View"
+msgstr "Aanzicht overnemen"
+
+msgctxt "field:ir.ui.view,model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:ir.ui.view,module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "field:ir.ui.view,priority:0"
+msgid "Priority"
+msgstr "Prioriteit"
+
+msgctxt "field:ir.ui.view,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.ui.view,type:0"
+msgid "View Type"
+msgstr "Aanzicht type"
+
+msgctxt "field:ir.ui.view_sc,name:0"
+msgid "Shortcut Name"
+msgstr "Sneltoets naam"
+
+msgctxt "field:ir.ui.view_sc,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.ui.view_sc,res_id:0"
+msgid "Resource Ref."
+msgstr "Middelreferentie"
+
+msgctxt "field:ir.ui.view_sc,resource:0"
+msgid "Resource Name"
+msgstr "Middelnaam"
+
+msgctxt "field:ir.ui.view_sc,sequence:0"
+msgid "Sequence"
+msgstr "Reeks"
+
+msgctxt "field:ir.ui.view_sc,user_id:0"
+msgid "User Ref."
+msgstr "Referentie gebruiker"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,child_name:0"
+msgid "Child Name"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,domain:0"
+msgid "Domain"
+msgstr "Domein"
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,nodes:0"
+msgid "Expanded Nodes"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,user:0"
+msgid "User"
+msgstr "Gebruiker"
+
+msgctxt "field:ir.ui.view_tree_width,field:0"
+msgid "Field"
+msgstr "Veld"
+
+msgctxt "field:ir.ui.view_tree_width,model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:ir.ui.view_tree_width,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:ir.ui.view_tree_width,user:0"
+msgid "User"
+msgstr "Gebruiker"
+
+msgctxt "field:ir.ui.view_tree_width,width:0"
+msgid "Width"
+msgstr "Breedte"
+
+msgctxt "help:ir.action.act_window,auto_refresh:0"
+msgid "Add an auto-refresh on the view"
+msgstr "Voegt automatisch verversen toe"
+
+msgctxt "help:ir.action.act_window,limit:0"
+msgid "Default limit for the list view"
+msgstr "Standaard begrenzing voor dit aanzicht"
+
+msgctxt "help:ir.action.act_window,search_value:0"
+msgid "Default search criteria for the list view"
+msgstr "Standaard zoekopdracht voor lijst"
+
+msgctxt "help:ir.action.act_window,window_name:0"
+msgid "Use the action name as window name"
+msgstr "Gebruik de naam van de actie als schermnaam"
+
+msgctxt "help:ir.action.report,extension:0"
+msgid ""
+"Leave empty for the same as template, see unoconv documentation for "
+"compatible format"
+msgstr ""
+
+msgctxt "help:ir.action.report,style:0"
+msgid "Define the style to apply on the report."
+msgstr "Definieer de toe te passen stijl voor dit verslag."
+
+msgctxt "help:ir.action.wizard,window:0"
+msgid "Run wizard in a new window"
+msgstr "Start assistent in nieuw venster"
+
+msgctxt "help:ir.cron,number_calls:0"
+msgid ""
+"Number of times the function is called, a negative number indicates that the"
+" function will always be called"
+msgstr ""
+
+msgctxt "help:ir.cron,request_user:0"
+msgid "The user who will receive requests in case of failure"
+msgstr "De gebruiker die de verzoeken krijgt in geval van falen"
+
+msgctxt "help:ir.cron,user:0"
+msgid "The user used to execute this action"
+msgstr "De gebruiker die gebruikt wordt voor deze actie"
+
+msgctxt "help:ir.lang,code:0"
+msgid "RFC 4646 tag: http://tools.ietf.org/html/rfc4646"
+msgstr ""
+
+msgctxt "help:ir.model,module:0"
+msgid "Module in which this model is defined"
+msgstr "Module waarin dit veld is gedefinieerd"
+
+msgctxt "help:ir.model.data,db_id:0"
+msgid "The id of the record in the database."
+msgstr "Het ID van het item in de database."
+
+msgctxt "help:ir.model.data,fs_id:0"
+msgid "The id of the record as known on the file system."
+msgstr "Het ID van het item zoals bekend in het bestandssysteem."
+
+msgctxt "help:ir.model.field,module:0"
+msgid "Module in which this field is defined"
+msgstr "Module waarin dit veld is gedefinieerd"
+
+msgctxt "help:ir.model.print_model_graph.init,filter:0"
+msgid ""
+"Entering a Python Regular Expression will exclude matching models from the "
+"graph."
+msgstr ""
+"Invoering van een geldige Python formule zal overeenkomende modellen "
+"uitsluiten van de grafiek."
+
+msgctxt "help:ir.rule.group,default_p:0"
+msgid "Add this rule to all users by default"
+msgstr "Voeg deze regel standaard toe bij alle gebruikers"
+
+msgctxt "help:ir.rule.group,global_p:0"
+msgid ""
+"Make the rule global \n"
+"so every users must follow this rule"
+msgstr "Maak de regel globaal"
+
+msgctxt "help:ir.rule.group,rules:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr "De regel is waar als tenminste aan één voorwaarde wordt voldaan"
+
+msgctxt "help:ir.trigger,condition:0"
+msgid ""
+"A Python statement evaluated with record represented by \"self\"\n"
+"It triggers the action if true."
+msgstr ""
+"Een Python uitdrukking gekoppeld aan item \"self\"\n"
+"Het start de actie als het waar is."
+
+msgctxt "help:ir.trigger,limit_number:0"
+msgid ""
+"Limit the number of call to \"Action Function\" by records.\n"
+"0 for no limit."
+msgstr ""
+"Beperk het aantal aanroepen van \"Uitvoerende functie\" door items.\n"
+"Gebruik 0 voor geen beperking."
+
+#, fuzzy
+msgctxt "help:ir.trigger,minimum_delay:0"
+msgid ""
+"Set a minimum delay in minutes between call to \"Action Function\" for the same record.\n"
+"0 for no delay."
+msgstr ""
+"Stelt de minimum vertraging in tussen afzonderlijke aanroepen van \"Uitvoerende functie\" door hetzelfde item.\n"
+"Gebruik 0 voor geen vertraging."
+
+msgctxt "model:ir.action,name:0"
+msgid "Action"
+msgstr "Actie"
+
+msgctxt "model:ir.action,name:act_action_act_window_form"
+msgid "Window Actions"
+msgstr "Schermacties"
+
+msgctxt "model:ir.action,name:act_action_form"
+msgid "Actions"
+msgstr "Acties"
+
+msgctxt "model:ir.action,name:act_action_report_form"
+msgid "Reports"
+msgstr "Rapportage"
+
+msgctxt "model:ir.action,name:act_action_url_form"
+msgid "URLs"
+msgstr "URL's\n"
+
+msgctxt "model:ir.action,name:act_action_wizard_form"
+msgid "Wizards"
+msgstr "Assistenten"
+
+msgctxt "model:ir.action,name:act_attachment_form"
+msgid "Attachments"
+msgstr "Bijlagen"
+
+msgctxt "model:ir.action,name:act_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr "Conf. assistent items"
+
+msgctxt "model:ir.action,name:act_cron_form"
+msgid "Scheduled Actions"
+msgstr "Geplande acties"
+
+msgctxt "model:ir.action,name:act_export_form"
+msgid "Exports"
+msgstr "Export"
+
+msgctxt "model:ir.action,name:act_icon_form"
+msgid "Icons"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_lang_form"
+msgid "Languages"
+msgstr "Talen"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_menu_list"
+msgid "Menu"
+msgstr "Menu"
+
+msgctxt "model:ir.action,name:act_menu_tree"
+msgid "Menu"
+msgstr "Menu"
+
+msgctxt "model:ir.action,name:act_model_access_form"
+msgid "Models Access"
+msgstr "Toegang tot modellen"
+
+msgctxt "model:ir.action,name:act_model_field_access_form"
+msgid "Fields Access"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_model_fields_form"
+msgid "Fields"
+msgstr "Velden"
+
+msgctxt "model:ir.action,name:act_model_form"
+msgid "Models"
+msgstr "Modellen"
+
+msgctxt "model:ir.action,name:act_module_config_wizard"
+msgid "Module Configuration"
+msgstr "Module configuratie"
+
+msgctxt "model:ir.action,name:act_module_form"
+msgid "Modules"
+msgstr "Modulen"
+
+msgctxt "model:ir.action,name:act_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr "Voer installatie / bijwerken uit"
+
+msgctxt "model:ir.action,name:act_property_form"
+msgid "Properties"
+msgstr "Eigenschappen"
+
+msgctxt "model:ir.action,name:act_property_form_default"
+msgid "Default Properties"
+msgstr "Standaard eigenschappen"
+
+msgctxt "model:ir.action,name:act_rule_group_form"
+msgid "Record Rules"
+msgstr "Item regels"
+
+msgctxt "model:ir.action,name:act_sequence_form"
+msgid "Sequences"
+msgstr "Reeksen"
+
+msgctxt "model:ir.action,name:act_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr "Vaste reeksen"
+
+msgctxt "model:ir.action,name:act_sequence_type_form"
+msgid "Sequence Types"
+msgstr "Reeks typen"
+
+msgctxt "model:ir.action,name:act_translation_clean"
+msgid "Clean Translations"
+msgstr "Vertalingen opschonen"
+
+msgctxt "model:ir.action,name:act_translation_export"
+msgid "Export Translations"
+msgstr "Vertalingen exporteren"
+
+msgctxt "model:ir.action,name:act_translation_form"
+msgid "Translations"
+msgstr "Vertalingen"
+
+msgctxt "model:ir.action,name:act_translation_set_report"
+msgid "Set Report Translations"
+msgstr "Vertaling rapport instellen"
+
+msgctxt "model:ir.action,name:act_translation_update"
+msgid "Synchronize Translations"
+msgstr "Vertaling synchroniseren"
+
+msgctxt "model:ir.action,name:act_trigger_form"
+msgid "Triggers"
+msgstr "Starters"
+
+msgctxt "model:ir.action,name:act_view_form"
+msgid "Views"
+msgstr "Aanzichten"
+
+msgctxt "model:ir.action,name:act_view_sc_add"
+msgid "Add Shortcut"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_sc_form"
+msgid "View Shortcuts"
+msgstr "Bekijk sneltoetsen"
+
+msgctxt "model:ir.action,name:act_view_sc_open"
+msgid "Open Shortcut"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_show"
+msgid "Show View"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_tree_width_form"
+msgid "View Tree Width"
+msgstr "Aanzicht boomstructuurbreedte"
+
+msgctxt "model:ir.action,name:print_model_graph"
+msgid "Graph"
+msgstr "Grafiek"
+
+msgctxt "model:ir.action,name:report_model_graph"
+msgid "Graph"
+msgstr "Grafiek"
+
+msgctxt "model:ir.action.act_window,name:0"
+msgid "Action act window"
+msgstr "Actie uitvoerend scherm"
+
+msgctxt "model:ir.action.act_window.view,name:0"
+msgid "Action act window view"
+msgstr "Actie uitvoerend schermaanzicht"
+
+msgctxt "model:ir.action.keyword,name:0"
+msgid "Action keyword"
+msgstr "Actietrefwoord"
+
+msgctxt "model:ir.action.report,name:0"
+msgid "Action report"
+msgstr "Actie rapport"
+
+msgctxt "model:ir.action.url,name:0"
+msgid "Action URL"
+msgstr "Actie URL"
+
+msgctxt "model:ir.action.wizard,name:0"
+msgid "Action wizard"
+msgstr "Actie assistent"
+
+msgctxt "model:ir.attachment,name:0"
+msgid "Attachment"
+msgstr "Bijlage"
+
+msgctxt "model:ir.cache,name:0"
+msgid "Cache"
+msgstr "Tijdelijk geheugen"
+
+msgctxt "model:ir.cron,name:0"
+msgid "Cron"
+msgstr "Cyclische opdracht"
+
+msgctxt "model:ir.date,name:0"
+msgid "Date"
+msgstr "Datum"
+
+msgctxt "model:ir.export,name:0"
+msgid "Export"
+msgstr "Exporteren"
+
+msgctxt "model:ir.export.line,name:0"
+msgid "Export line"
+msgstr "Exporterregel"
+
+msgctxt "model:ir.lang,name:0"
+msgid "Language"
+msgstr "Taal"
+
+msgctxt "model:ir.lang,name:lang_bg"
+msgid "Bulgarian"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_cs"
+msgid "Czech"
+msgstr "Tsjechisch"
+
+msgctxt "model:ir.lang,name:lang_de"
+msgid "German"
+msgstr "Duits"
+
+msgctxt "model:ir.lang,name:lang_en"
+msgid "English"
+msgstr "Engels"
+
+msgctxt "model:ir.lang,name:lang_es"
+msgid "Spanish (Spain)"
+msgstr "Spaans (Spanje)"
+
+msgctxt "model:ir.lang,name:lang_es_CO"
+msgid "Spanish (Colombia)"
+msgstr "Spaans (Colombia)"
+
+msgctxt "model:ir.lang,name:lang_fr"
+msgid "French"
+msgstr "Frans"
+
+msgctxt "model:ir.lang,name:lang_nl"
+msgid "Dutch"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_ru"
+msgid "Russian"
+msgstr "Russisch"
+
+msgctxt "model:ir.model,name:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "model:ir.model.access,name:0"
+msgid "Model access"
+msgstr "Toegang tot model"
+
+msgctxt "model:ir.model.data,name:0"
+msgid "Model data"
+msgstr "Model gegevens"
+
+msgctxt "model:ir.model.field,name:0"
+msgid "Model field"
+msgstr "Model veld"
+
+msgctxt "model:ir.model.field.access,name:0"
+msgid "Model Field Access"
+msgstr ""
+
+msgctxt "model:ir.model.print_model_graph.init,name:0"
+msgid "Print Model Graph Init"
+msgstr "Grafiek gaan afdrukken"
+
+msgctxt "model:ir.module.module,name:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "model:ir.module.module.config_wizard.first,name:0"
+msgid "Module Config Wizard First"
+msgstr "Module EHBC"
+
+msgctxt "model:ir.module.module.config_wizard.item,name:0"
+msgid "Config wizard to run after installing module"
+msgstr "Configuratie assistent die start na installatie van de module"
+
+msgctxt "model:ir.module.module.dependency,name:0"
+msgid "Module dependency"
+msgstr "Module afhankelijkheid"
+
+msgctxt "model:ir.module.module.install_upgrade.init,name:0"
+msgid "Module Install Upgrade Init"
+msgstr "Module gaan bijwerken"
+
+msgctxt "model:ir.module.module.install_upgrade.start,name:0"
+msgid "Module Install Upgrade Start"
+msgstr "Start module gaan bijwerken"
+
+msgctxt "model:ir.property,name:0"
+msgid "Property"
+msgstr "Eigenschap"
+
+msgctxt "model:ir.rule,name:0"
+msgid "Rule"
+msgstr "Regel"
+
+msgctxt "model:ir.rule.group,name:0"
+msgid "Rule group"
+msgstr "Regelgroep"
+
+msgctxt "model:ir.sequence,name:0"
+msgid "Sequence"
+msgstr "Reeks"
+
+msgctxt "model:ir.sequence.strict,name:0"
+msgid "Sequence Strict"
+msgstr "Vaste reeks"
+
+msgctxt "model:ir.sequence.type,name:0"
+msgid "Sequence type"
+msgstr "Reeks type"
+
+msgctxt "model:ir.translation,name:0"
+msgid "Translation"
+msgstr "Vertaling"
+
+msgctxt "model:ir.translation.clean.init,name:0"
+msgid "Clean translation init"
+msgstr "Vertalingen gaan opschonen"
+
+msgctxt "model:ir.translation.clean.start,name:0"
+msgid "Clean translation start"
+msgstr "Start vertalingen opschonen"
+
+msgctxt "model:ir.translation.export.init,name:0"
+msgid "Export translation - language and module"
+msgstr "Vertaling exporteren - taal en module"
+
+msgctxt "model:ir.translation.export.start,name:0"
+msgid "Export translation - file"
+msgstr "Vertaling exporteren - bestand"
+
+msgctxt "model:ir.translation.set_report.init,name:0"
+msgid "Update Report Translation"
+msgstr "Vertaling rapport bijwerken"
+
+msgctxt "model:ir.translation.set_report.start,name:0"
+msgid "Update Report Translation"
+msgstr "Vertaling rapport bijwerken"
+
+msgctxt "model:ir.translation.update.init,name:0"
+msgid "Update translation - language"
+msgstr "Vertaling rapport bijwerken"
+
+msgctxt "model:ir.trigger,name:0"
+msgid "Trigger"
+msgstr "Starter"
+
+msgctxt "model:ir.trigger.log,name:0"
+msgid "Trigger Log"
+msgstr "Starter logboek"
+
+#, fuzzy
+msgctxt "model:ir.ui.icon,name:0"
+msgid "Icon"
+msgstr "Icoon"
+
+msgctxt "model:ir.ui.menu,name:0"
+msgid "UI menu"
+msgstr "Gebruiker menu"
+
+msgctxt "model:ir.ui.menu,name:menu_act_action"
+msgid "Actions"
+msgstr "Acties"
+
+msgctxt "model:ir.ui.menu,name:menu_action"
+msgid "Actions"
+msgstr "Acties"
+
+msgctxt "model:ir.ui.menu,name:menu_action_act_window"
+msgid "Window Actions"
+msgstr "Schermacties"
+
+msgctxt "model:ir.ui.menu,name:menu_action_report_form"
+msgid "Reports"
+msgstr "Rapportage"
+
+msgctxt "model:ir.ui.menu,name:menu_action_url"
+msgid "URLs"
+msgstr "URL's"
+
+msgctxt "model:ir.ui.menu,name:menu_action_wizard"
+msgid "Wizards"
+msgstr "Assistenten"
+
+msgctxt "model:ir.ui.menu,name:menu_administration"
+msgid "Administration"
+msgstr "Systeembeheer"
+
+msgctxt "model:ir.ui.menu,name:menu_attachment_form"
+msgid "Attachments"
+msgstr "Bijlagen"
+
+msgctxt "model:ir.ui.menu,name:menu_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr "Conf. assistent items"
+
+msgctxt "model:ir.ui.menu,name:menu_cron_form"
+msgid "Scheduled Actions"
+msgstr "Geplande acties"
+
+msgctxt "model:ir.ui.menu,name:menu_export_form"
+msgid "Exports"
+msgstr "Export"
+
+msgctxt "model:ir.ui.menu,name:menu_icon_form"
+msgid "Icons"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_ir_sequence_type"
+msgid "Sequence Types"
+msgstr "Reeks typen"
+
+msgctxt "model:ir.ui.menu,name:menu_lang_form"
+msgid "Languages"
+msgstr "Talen"
+
+msgctxt "model:ir.ui.menu,name:menu_localization"
+msgid "Localization"
+msgstr "Lokalisatie"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_menu_list"
+msgid "Menu"
+msgstr "Menu"
+
+msgctxt "model:ir.ui.menu,name:menu_model_access_form"
+msgid "Models Access"
+msgstr "Toegang tot modellen"
+
+msgctxt "model:ir.ui.menu,name:menu_model_field_access_form"
+msgid "Fields Access"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_model_form"
+msgid "Models"
+msgstr "Modellen"
+
+msgctxt "model:ir.ui.menu,name:menu_models"
+msgid "Models"
+msgstr "Modellen"
+
+msgctxt "model:ir.ui.menu,name:menu_module_form"
+msgid "Modules"
+msgstr "Modulen"
+
+msgctxt "model:ir.ui.menu,name:menu_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr "Voer installatie / bijwerken uit"
+
+msgctxt "model:ir.ui.menu,name:menu_modules"
+msgid "Modules"
+msgstr "Modulen"
+
+msgctxt "model:ir.ui.menu,name:menu_property_form"
+msgid "Properties"
+msgstr "Eigenschappen"
+
+msgctxt "model:ir.ui.menu,name:menu_property_form_default"
+msgid "Default Properties"
+msgstr "Standaard eigenschappen"
+
+msgctxt "model:ir.ui.menu,name:menu_rule_group_form"
+msgid "Record Rules"
+msgstr "Item regels"
+
+msgctxt "model:ir.ui.menu,name:menu_scheduler"
+msgid "Scheduler"
+msgstr "Planner"
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_form"
+msgid "Sequences"
+msgstr "Reeksen"
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr "Vaste reeksen"
+
+msgctxt "model:ir.ui.menu,name:menu_sequences"
+msgid "Sequences"
+msgstr "Reeksen"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_clean"
+msgid "Clean Translations"
+msgstr "Vertalingen opschonen"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_export"
+msgid "Export Translations"
+msgstr "Vertalingen exporteren"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_form"
+msgid "Translations"
+msgstr "Vertalingen"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_set_report"
+msgid "Set Report Translations"
+msgstr "Vertaling rapport instellen"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_update"
+msgid "Synchronize Translations"
+msgstr "Vertaling synchroniseren"
+
+msgctxt "model:ir.ui.menu,name:menu_trigger_form"
+msgid "Triggers"
+msgstr "Starters"
+
+msgctxt "model:ir.ui.menu,name:menu_ui"
+msgid "User Interface"
+msgstr "Gebruikers omgeving"
+
+msgctxt "model:ir.ui.menu,name:menu_view"
+msgid "Views"
+msgstr "Aanzichten"
+
+msgctxt "model:ir.ui.menu,name:menu_view_sc"
+msgid "View Shortcuts"
+msgstr "Bekijk sneltoetsen"
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_width"
+msgid "View Tree Width"
+msgstr "Aanzicht boomstructuurbreedte"
+
+msgctxt "model:ir.ui.menu,name:model_model_fields_form"
+msgid "Fields"
+msgstr "Velden"
+
+msgctxt "model:ir.ui.view,name:0"
+msgid "View"
+msgstr "Overzicht"
+
+msgctxt "model:ir.ui.view.show.init,name:0"
+msgid "ir.ui.view.show.init"
+msgstr ""
+
+msgctxt "model:ir.ui.view_sc,name:0"
+msgid "View shortcut"
+msgstr "Bekijk sneltoets"
+
+msgctxt "model:ir.ui.view_tree_expanded_state,name:0"
+msgid "ir.ui.view_tree_expanded_state"
+msgstr ""
+
+msgctxt "model:ir.ui.view_tree_width,name:0"
+msgid "View Tree Width"
+msgstr "Aanzicht boomstructuurbreedte"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action form"
+msgstr "Actieformulier"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action tree"
+msgstr "Actie boomstructuur"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Form relate"
+msgstr "Formulier relatie"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open Graph"
+msgstr "Open een grafiek"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open tree"
+msgstr "Open boomstructuur"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Print form"
+msgstr "Formulier afdrukken"
+
+msgctxt "selection:ir.attachment,type:0"
+msgid "Data"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:ir.attachment,type:0"
+msgid "Link"
+msgstr "Verbinding"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Days"
+msgstr "Dagen"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Hours"
+msgstr "Uren"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Minutes"
+msgstr "Minuten"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Months"
+msgstr "Maanden"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Weeks"
+msgstr "Weken"
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Left-to-right"
+msgstr "Van links naar rechts"
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Right-to-left"
+msgstr "Van rechts naar links"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Installed"
+msgstr "Geïnstalleerd"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Not Installed"
+msgstr "Niet geïnstalleerd"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be installed"
+msgstr "Te installeren"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be removed"
+msgstr "Te verwijderen"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be upgraded"
+msgstr "Bij te werken"
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Done"
+msgstr "Klaar"
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Open"
+msgstr "Open"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Installed"
+msgstr "Geïnstalleerd"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Not Installed"
+msgstr "Niet geïnstalleerd"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be installed"
+msgstr "Te installeren"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be removed"
+msgstr "Te verwijderen"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be upgraded"
+msgstr "Bij te werken"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Unknown"
+msgstr "Onbekend"
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Decimal Timestamp"
+msgstr "Tijdmarkering"
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr "Hexadecimale tijdmarkering"
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Incremental"
+msgstr "Oplopend"
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Decimal Timestamp"
+msgstr "Tijdmarkering"
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr "Hexadecimale tijdmarkering"
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Incremental"
+msgstr "Oplopend"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Error"
+msgstr "Fout"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Field"
+msgstr "Veld"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Help"
+msgstr "Help"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "ODT"
+msgstr "ODT"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Selection"
+msgstr "Selectie"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "View"
+msgstr "Aanzicht"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Wizard Button"
+msgstr "Assistent knop"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.act_window"
+msgstr ""
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.report"
+msgstr ""
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.url"
+msgstr ""
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.wizard"
+msgstr ""
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid ""
+msgstr ""
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Board"
+msgstr "Bord"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Form"
+msgstr "Formulier"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Graph"
+msgstr "Grafiek"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Tree"
+msgstr "Boomstructuur"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "General"
+msgstr "Algemeen"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keyword"
+msgstr "Trefwoord"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keywords"
+msgstr "Trefwoorden"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open Window"
+msgstr "Open scherm"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open a Window"
+msgstr "Open een scherm"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Views"
+msgstr "Aanzichten"
+
+msgctxt "view:ir.action.report:0"
+msgid "General"
+msgstr "Algemeen"
+
+msgctxt "view:ir.action.report:0"
+msgid "Keyword"
+msgstr "Trefwoord"
+
+msgctxt "view:ir.action.report:0"
+msgid "Keywords"
+msgstr "Trefwoorden"
+
+msgctxt "view:ir.action.report:0"
+msgid "Report"
+msgstr "Verslag"
+
+msgctxt "view:ir.action.report:0"
+msgid "Report xml"
+msgstr "Rapportage xml"
+
+msgctxt "view:ir.action.url:0"
+msgid "General"
+msgstr "Algemeen"
+
+msgctxt "view:ir.action.url:0"
+msgid "Keyword"
+msgstr "Trefwoord"
+
+msgctxt "view:ir.action.url:0"
+msgid "Keywords"
+msgstr "Trefwoorden"
+
+msgctxt "view:ir.action.url:0"
+msgid "URL"
+msgstr "URL"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "General"
+msgstr "Algemeen"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keyword"
+msgstr "Trefwoord"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keywords"
+msgstr "Trefwoorden"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Wizard"
+msgstr "Assistent"
+
+msgctxt "view:ir.action:0"
+msgid "Action"
+msgstr "Actie"
+
+msgctxt "view:ir.action:0"
+msgid "General"
+msgstr "Algemeen"
+
+msgctxt "view:ir.action:0"
+msgid "Keyword"
+msgstr "Trefwoord"
+
+msgctxt "view:ir.action:0"
+msgid "Keywords"
+msgstr "Trefwoorden"
+
+msgctxt "view:ir.attachment:0"
+msgid "Attachments"
+msgstr "Bijlagen"
+
+msgctxt "view:ir.attachment:0"
+msgid "Preview"
+msgstr "Voorbeeld"
+
+msgctxt "view:ir.cron:0"
+msgid "Action to trigger"
+msgstr "Actie om uit te voeren"
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Action"
+msgstr "Geplande actie"
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Actions"
+msgstr "Geplande acties"
+
+msgctxt "view:ir.export:0"
+msgid "Exports"
+msgstr "Export"
+
+msgctxt "view:ir.lang:0"
+msgid "Date Formatting"
+msgstr "Datum format"
+
+msgctxt "view:ir.lang:0"
+msgid "Language"
+msgstr "Taal"
+
+msgctxt "view:ir.lang:0"
+msgid "Languages"
+msgstr "Talen"
+
+msgctxt "view:ir.lang:0"
+msgid "Numbers Formatting"
+msgstr "Getal weergave"
+
+msgctxt "view:ir.model.access:0"
+msgid "Access controls"
+msgstr "Toegangcontrole"
+
+msgctxt "view:ir.model.field.access:0"
+msgid "Field Access"
+msgstr ""
+
+msgctxt "view:ir.model.field:0"
+msgid "Fields"
+msgstr "Velden"
+
+msgctxt "view:ir.model.print_model_graph.init:0"
+msgid "Print Model Graph"
+msgstr "Grafiek afdrukken"
+
+msgctxt "view:ir.model:0"
+msgid "Fields Description"
+msgstr "Veld omschrijving"
+
+msgctxt "view:ir.model:0"
+msgid "Model Description"
+msgstr "Model omschrijving"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "Welcome to the module configuration wizard!"
+msgstr "Welkom bij de module configuratie assistent!"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "You will be able to configure your installation"
+msgstr "U kunt uw installatie instellingen maken"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid ""
+"You will be able to configure your installation depending on the modules you"
+" have installed."
+msgstr ""
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "depending on the modules you have installed."
+msgstr "afhankelijk van de geïnstalleerde modules."
+
+msgctxt "view:ir.module.module.config_wizard.item:0"
+msgid "Config Wizard Items"
+msgstr "Configuratie assistent items"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Note that this operation my take a few minutes."
+msgstr "Let op; deze handeling kan een paar minuten duren."
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "System Upgrade"
+msgstr "Systeem opwaarderen"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Your system will be upgraded."
+msgstr "Uw systeem wordt opgewaardeerd."
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "System upgrade done"
+msgstr "Systeem opwaarderen klaar"
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "The modules have been upgraded / installed !"
+msgstr "De modules zijn bijgewerkt / geïnstalleerd!"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr "Installatie annuleren"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr "Verwijderen ongedaan maken"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr "Bijwerken annuleren"
+
+msgctxt "view:ir.module.module:0"
+msgid "Dependencies"
+msgstr "Afhankelijkheden"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr "Selecteer voor installatie"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr "Selecteer voor verwijderen (beta)"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr "Selecteer voor bijwerken"
+
+msgctxt "view:ir.module.module:0"
+msgid "Module"
+msgstr "Module"
+
+msgctxt "view:ir.module.module:0"
+msgid "Modules"
+msgstr "Modulen"
+
+msgctxt "view:ir.property:0"
+msgid "Properties"
+msgstr "Eigenschappen"
+
+msgctxt "view:ir.property:0"
+msgid "Property"
+msgstr "Eigenschap"
+
+msgctxt "view:ir.rule.group:0"
+msgid ""
+"If there is no test defined, the rule is always satisfied if not global"
+msgstr ""
+"Als er geen test is gedefinieerd is de regel altijd waar mits niet globaal"
+
+msgctxt "view:ir.rule.group:0"
+msgid "Record rules"
+msgstr "Item regels"
+
+msgctxt "view:ir.rule.group:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr "De regel is waar als tenminste aan één voorwaarde wordt voldaan"
+
+msgctxt "view:ir.rule:0"
+msgid "Test"
+msgstr "Test"
+
+msgctxt "view:ir.sequence.type:0"
+msgid "Sequence Type"
+msgstr "Reeks type"
+
+msgctxt "view:ir.sequence:0"
+msgid "${day}"
+msgstr "${dag}"
+
+msgctxt "view:ir.sequence:0"
+msgid "${month}"
+msgstr "${maand}"
+
+msgctxt "view:ir.sequence:0"
+msgid "${year}"
+msgstr "${jaar}"
+
+msgctxt "view:ir.sequence:0"
+msgid "Day:"
+msgstr "Dag:"
+
+msgctxt "view:ir.sequence:0"
+msgid "Incremental"
+msgstr "Oplopend"
+
+msgctxt "view:ir.sequence:0"
+msgid "Legend (Placeholders for prefix, suffix)"
+msgstr "Legenda (sjabloon voor voorvoegsel, toevoeging)"
+
+msgctxt "view:ir.sequence:0"
+msgid "Month:"
+msgstr "Maand:"
+
+msgctxt "view:ir.sequence:0"
+msgid "Sequences"
+msgstr "Reeksen"
+
+msgctxt "view:ir.sequence:0"
+msgid "Timestamp"
+msgstr "Tijdmarkering"
+
+msgctxt "view:ir.sequence:0"
+msgid "Year:"
+msgstr "Jaar:"
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations"
+msgstr "Vertalingen opschonen"
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations?"
+msgstr "Vertalingen opschonen?"
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations"
+msgstr "Vertalingen opschonen"
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations Succeed!"
+msgstr "Vertalingen opschonen gelukt!"
+
+msgctxt "view:ir.translation.export.init:0"
+msgid "Export Translation"
+msgstr "Vertaling exporteren"
+
+msgctxt "view:ir.translation.export.start:0"
+msgid "Export Translation"
+msgstr "Vertaling exporteren"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Set Report Translations"
+msgstr "Vertaling rapport instellen"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Synchronize Report Translations?"
+msgstr "Synchoniseer rapport vertalingen?"
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Report Translations"
+msgstr "Vertaling rapport instellen"
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Translations Succeed!"
+msgstr "Vertaling instellen gelukt!"
+
+msgctxt "view:ir.translation.update.init:0"
+msgid "Synchronize Translations"
+msgstr "Vertaling synchroniseren"
+
+msgctxt "view:ir.translation:0"
+msgid "Translations"
+msgstr "Vertalingen"
+
+msgctxt "view:ir.trigger:0"
+msgid "Trigger"
+msgstr "Starter"
+
+msgctxt "view:ir.trigger:0"
+msgid "Triggers"
+msgstr "Starters"
+
+#, fuzzy
+msgctxt "view:ir.ui.icon:0"
+msgid "Icon"
+msgstr "Icoon"
+
+msgctxt "view:ir.ui.icon:0"
+msgid "Icons"
+msgstr ""
+
+msgctxt "view:ir.ui.menu:0"
+msgid "Menu"
+msgstr "Menu"
+
+msgctxt "view:ir.ui.view:0"
+msgid "View"
+msgstr "Overzicht"
+
+msgctxt "view:ir.ui.view:0"
+msgid "_Show"
+msgstr ""
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcut"
+msgstr "Sneltoets"
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcuts"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "View Tree Expanded State"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "Views Tree Expanded State"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "View Tree Width"
+msgstr "Aanzicht boomstructuurbreedte"
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "Views Tree Width"
+msgstr "Aanzichten boomstructuurbreedte"
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,end:0"
+msgid "Cancel"
+msgstr "Annuleren"
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,print:0"
+msgid "Print"
+msgstr "Afdrukken"
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,end:0"
+msgid "Cancel"
+msgstr "Annuleren"
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,wizard:0"
+msgid "Ok"
+msgstr "Oké"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,end:0"
+msgid "Cancel"
+msgstr "Annuleren"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,start:0"
+msgid "Start Upgrade"
+msgstr "Start opwaarderen"
+
+#, fuzzy
+msgctxt "wizard_button:ir.module.module.install_upgrade,start,config:0"
+msgid "Ok"
+msgstr "Oké"
+
+msgctxt "wizard_button:ir.translation.clean,init,end:0"
+msgid "Cancel"
+msgstr "Annuleren"
+
+msgctxt "wizard_button:ir.translation.clean,init,start:0"
+msgid "Start"
+msgstr "Start"
+
+msgctxt "wizard_button:ir.translation.clean,start,end:0"
+msgid "Ok"
+msgstr "Oké"
+
+msgctxt "wizard_button:ir.translation.export,init,end:0"
+msgid "Cancel"
+msgstr "Annuleren"
+
+msgctxt "wizard_button:ir.translation.export,init,start:0"
+msgid "Start Export"
+msgstr "Start exporteren"
+
+msgctxt "wizard_button:ir.translation.export,start,end:0"
+msgid "Close"
+msgstr "Sluiten"
+
+msgctxt "wizard_button:ir.translation.set_report,init,end:0"
+msgid "Cancel"
+msgstr "Annuleren"
+
+msgctxt "wizard_button:ir.translation.set_report,init,start:0"
+msgid "Start Update"
+msgstr "Start bijwerken"
+
+msgctxt "wizard_button:ir.translation.set_report,start,end:0"
+msgid "Ok"
+msgstr "Oké"
+
+msgctxt "wizard_button:ir.translation.update,init,end:0"
+msgid "Cancel"
+msgstr "Annuleren"
+
+msgctxt "wizard_button:ir.translation.update,init,start:0"
+msgid "Start Update"
+msgstr "Start bijwerken"
+
+#, fuzzy
+msgctxt "wizard_button:ir.ui.view.show,init,end:0"
+msgid "Close"
+msgstr "Sluiten"
diff --git a/trytond/ir/locale/ru_RU.po b/trytond/ir/locale/ru_RU.po
new file mode 100644
index 0000000..9c11499
--- /dev/null
+++ b/trytond/ir/locale/ru_RU.po
@@ -0,0 +1,2809 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:access_error:0"
+msgid ""
+"You try to bypass an access rule!\n"
+"(Document type: %s)"
+msgstr ""
+"Вы пытаетесь нарушить правила доступа!\n"
+"(Модель: %s)"
+
+msgctxt "error:delete_workflow_record:0"
+msgid "You cannot delete a record with a running workflow."
+msgstr "Вы не можете удалять записи с запущенным рабочим процессом."
+
+msgctxt "error:delete_xml_record:0"
+msgid "You are not allowed to delete this record."
+msgstr "Вы не можете удалить эту запись."
+
+msgctxt "error:digits_validation_record:0"
+msgid "The field \"%s\" on \"%s\" has too many decimal digits."
+msgstr ""
+
+msgctxt "error:domain_validation_record:0"
+msgid "The value of the field \"%s\" on \"%s\" is not valid according to its domain."
+msgstr ""
+"Значение поля \"%s\" в таблице \"%s\" не действует в соответствии с его "
+"домена."
+
+msgctxt "error:foreign_model_exist:0"
+msgid "Could not delete \"%s\" records because they are used on field \"%s\" of \"%s\"."
+msgstr ""
+"Не могу удалить \"%s\" записей, поскольку они используются в поле \"%s\" из "
+"таблицы \"%s\"."
+
+msgctxt "error:foreign_model_missing:0"
+msgid "The value of field \"%s\" on \"%s\" doesn't exist."
+msgstr "Значение поля \"%s\" в таблице \"%s\" отсутствует."
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid context!"
+msgstr ""
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid domain or search criteria!"
+msgstr ""
+
+msgctxt "error:ir.action.act_window:0"
+msgid "Invalid views!"
+msgstr ""
+
+msgctxt "error:ir.action.keyword:0"
+msgid "Wrong wizard model!"
+msgstr "Неправильный шаблон мастера"
+
+msgctxt "error:ir.action.report:0"
+msgid "The internal name must be unique by module!"
+msgstr "Наименование модуля должно быть уникальным!"
+
+msgctxt "error:ir.attachment:0"
+msgid "The  names of attachments must be unique by resource!"
+msgstr ""
+
+msgctxt "error:ir.cron:0"
+msgid "Scheduled action failed"
+msgstr "Запланированное действие не удалось выполнить"
+
+msgctxt "error:ir.cron:0"
+msgid ""
+"The following action failed to execute properly: \"%s\"\n"
+" Traceback: \n"
+"\n"
+"%s\n"
+msgstr ""
+"Следующие действия не возможно выполнить должным образом: \"%s\"\n"
+" Отладочное сообщение:\n"
+"\n"
+"%s\n"
+
+msgctxt "error:ir.lang:0"
+msgid "Invalid Grouping!"
+msgstr "Неверное Группировка!"
+
+msgctxt "error:ir.lang:0"
+msgid "The date format is not valid!"
+msgstr "Неправильный формат даты!"
+
+msgctxt "error:ir.lang:0"
+msgid "decimal_point and thousands_sep must be different!"
+msgstr "Десятичный разделитель и Разделитель тысяч должны быть разными!"
+
+msgctxt "error:ir.model.access:0"
+msgid "Only one record by model and group is allowed!"
+msgstr "Разрешается только одна запись от модели и группы!"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not create this kind of document! (%s)"
+msgstr "Вы не можете создать такой документ! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not delete this document! (%s)"
+msgstr "Вы не можете удалить этот документ! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not read this document! (%s)"
+msgstr "Вы не можете прочитать этот документ! (%s)"
+
+msgctxt "error:ir.model.access:0"
+msgid "You can not write in this document! (%s)"
+msgstr "Вы не можете сохранить этот документ! (%s)"
+
+msgctxt "error:ir.model.data:0"
+msgid "The triple (fs_id, module, model) must be unique!"
+msgstr "(fs_id, модуль, модель) должен быть уникальным!"
+
+msgctxt "error:ir.model.field.access:0"
+msgid "Only one record by field and group is allowed!"
+msgstr ""
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not read the field! (%s.%s)"
+msgstr ""
+
+msgctxt "error:ir.model.field.access:0"
+msgid "You can not write on the field! (%s.%s)"
+msgstr ""
+
+msgctxt "error:ir.model.field:0"
+msgid "Model Field Name must be a python identifier!"
+msgstr ""
+
+msgctxt "error:ir.model.field:0"
+msgid "The field name in model must be unique!"
+msgstr "Наименование поля в шаблоне должно быть уникальным!"
+
+msgctxt "error:ir.model:0"
+msgid "Module Name must be a python identifier!"
+msgstr ""
+
+msgctxt "error:ir.model:0"
+msgid "The model must be unique!"
+msgstr "Модель должна быть уникальным!"
+
+msgctxt "error:ir.module.module.dependency:0"
+msgid "Dependency must be unique by module!"
+msgstr "Зависимость должно быть уникальным модулем!"
+
+msgctxt "error:ir.module.module:0"
+msgid "Missing dependencies %s for module \"%s\""
+msgstr "Отсутствует(ют) модуль(и) %s для модуля \"%s\""
+
+msgctxt "error:ir.module.module:0"
+msgid "The modules you are trying to uninstall depends on installed modules:"
+msgstr ""
+"От модулей, которые вы пытаетесь удалить, зависят установленные модули:"
+
+msgctxt "error:ir.module.module:0"
+msgid "The name of the module must be unique!"
+msgstr "Наименование модуля должно быть уникальным"
+
+msgctxt "error:ir.module.module:0"
+msgid "You can not remove a module that is installed or will be installed"
+msgstr "Вы не можете удалить модуль, который установлен или будет установлен"
+
+msgctxt "error:ir.rule.group:0"
+msgid "Global and Default are mutually exclusive!"
+msgstr "Глобальные и по умолчанию являются взаимоисключающими!"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Invalid prefix/suffix!"
+msgstr "Ошибка в префиксе/суффиксе!"
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Last Timestamp could not be in future!"
+msgstr ""
+
+msgctxt "error:ir.sequence.strict:0"
+msgid "Missing sequence!"
+msgstr "Ошибка в нумерации"
+
+msgctxt "error:ir.sequence:0"
+msgid "Invalid prefix/suffix!"
+msgstr "Ошибка в префиксе/суффиксе!"
+
+msgctxt "error:ir.sequence:0"
+msgid "Last Timestamp could not be in future!"
+msgstr ""
+
+msgctxt "error:ir.sequence:0"
+msgid "Missing sequence!"
+msgstr "Ошибка в нумерации"
+
+msgctxt "error:ir.translation:0"
+msgid "Translation must be unique"
+msgstr "Перевод должен быть уникальным"
+
+msgctxt "error:ir.trigger:0"
+msgid "\"On Time\" and others are mutually exclusive!"
+msgstr ""
+
+msgctxt "error:ir.trigger:0"
+msgid "Condition must be a python expression!"
+msgstr ""
+
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not create recursive menu!"
+msgstr ""
+
+msgctxt "error:ir.ui.menu:0"
+msgid "You can not use \" / \" in name field!"
+msgstr ""
+
+msgctxt "error:ir.ui.view.show:0"
+msgid "Only \"form\" view can be shown!"
+msgstr ""
+
+msgctxt "error:ir.ui.view:0"
+msgid "Invalid XML for View!"
+msgstr "Ошибка в XML просмотре"
+
+msgctxt "error:not_found_in_selection:0"
+msgid "Key %r not found in selection field %r"
+msgstr ""
+
+msgctxt "error:read_error:0"
+msgid ""
+"You try to read records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr ""
+"Вы пытаетесь прочитать записи, которые не существуют!\n"
+"(Модель:%s)"
+
+msgctxt "error:reference_syntax_error:0"
+msgid "Syntax error for reference %r in %s"
+msgstr ""
+
+msgctxt "error:relation_not_found:0"
+msgid "Relation not found: %r in %s"
+msgstr ""
+
+msgctxt "error:required_field:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr "Поле \"%s\" на \"%s\" необходимо."
+
+msgctxt "error:required_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is required."
+msgstr "Поле \"%s\" на \"%s\" необходимо."
+
+msgctxt "error:search_function_missing:0"
+msgid "Missing search function on field \"%s\"."
+msgstr ""
+
+msgctxt "error:size_validation_record:0"
+msgid "The field \"%s\" on \"%s\" is too long."
+msgstr "Поле \"%s\" в таблице \"%s\" слишком длинное."
+
+msgctxt "error:too_many_relations_found:0"
+msgid "Too many relations found: %r in %s"
+msgstr ""
+
+msgctxt "error:write_error:0"
+msgid ""
+"You try to write on records that don't exist anymore!\n"
+"(Document type: %s)"
+msgstr ""
+"Вы пытаетесь записать данные, которые больше не существуют!\n"
+"(Модель:%s)"
+
+msgctxt "error:write_xml_record:0"
+msgid "You are not allowed to modify this record."
+msgstr "Вы не можете изменить эту запись."
+
+msgctxt "error:xml_id_syntax_error:0"
+msgid "Syntax error for XML id %r in %s"
+msgstr ""
+
+msgctxt "error:xml_record_desc:0"
+msgid "This record is part of the base configuration."
+msgstr "Эта запись является частью базовой конфигурации."
+
+msgctxt "field:ir.action,active:0"
+msgid "Active"
+msgstr "Действительнный"
+
+msgctxt "field:ir.action,groups:0"
+msgid "Groups"
+msgstr "Группы"
+
+#, fuzzy
+msgctxt "field:ir.action,icon:0"
+msgid "Icon"
+msgstr "Иконка"
+
+msgctxt "field:ir.action,keywords:0"
+msgid "Keywords"
+msgstr "Ключевые слова"
+
+msgctxt "field:ir.action,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.action,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.action,type:0"
+msgid "Type"
+msgstr "Тип"
+
+msgctxt "field:ir.action,usage:0"
+msgid "Usage"
+msgstr "Использования"
+
+msgctxt "field:ir.action.act_window,act_window_views:0"
+msgid "Views"
+msgstr "Виды"
+
+msgctxt "field:ir.action.act_window,action:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "field:ir.action.act_window,auto_refresh:0"
+msgid "Auto-Refresh"
+msgstr "Авто-Обновление"
+
+msgctxt "field:ir.action.act_window,context:0"
+msgid "Context Value"
+msgstr "Значение контекста"
+
+msgctxt "field:ir.action.act_window,domain:0"
+msgid "Domain Value"
+msgstr "Значение обслати выборки"
+
+msgctxt "field:ir.action.act_window,limit:0"
+msgid "Limit"
+msgstr "Лимит"
+
+msgctxt "field:ir.action.act_window,pyson_context:0"
+msgid "PySON Context"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,pyson_domain:0"
+msgid "PySON Domain"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,pyson_search_value:0"
+msgid "PySON Search Criteria"
+msgstr ""
+
+msgctxt "field:ir.action.act_window,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.action.act_window,res_model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:ir.action.act_window,search_value:0"
+msgid "Search Criteria"
+msgstr "Критерии поиска"
+
+msgctxt "field:ir.action.act_window,views:0"
+msgid "Views"
+msgstr "Виды"
+
+msgctxt "field:ir.action.act_window,window_name:0"
+msgid "Window Name"
+msgstr "Наименование окна"
+
+msgctxt "field:ir.action.act_window.view,act_window:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "field:ir.action.act_window.view,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.action.act_window.view,sequence:0"
+msgid "Sequence"
+msgstr "Последовательность"
+
+msgctxt "field:ir.action.act_window.view,view:0"
+msgid "View"
+msgstr "Просмотр"
+
+msgctxt "field:ir.action.keyword,action:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "field:ir.action.keyword,keyword:0"
+msgid "Keyword"
+msgstr "Ключевое слово"
+
+msgctxt "field:ir.action.keyword,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:ir.action.keyword,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.action.report,action:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "field:ir.action.report,direct_print:0"
+msgid "Direct Print"
+msgstr "прямая печать"
+
+msgctxt "field:ir.action.report,email:0"
+msgid "Email"
+msgstr "Эл.почта"
+
+msgctxt "field:ir.action.report,extension:0"
+msgid "Extension"
+msgstr "Расширение"
+
+msgctxt "field:ir.action.report,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:ir.action.report,module:0"
+msgid "Module"
+msgstr "Модуль"
+
+msgctxt "field:ir.action.report,pyson_email:0"
+msgid "PySON Email"
+msgstr ""
+
+msgctxt "field:ir.action.report,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.action.report,report:0"
+msgid "Path"
+msgstr "Путь"
+
+msgctxt "field:ir.action.report,report_content:0"
+msgid "Content"
+msgstr "Содержание"
+
+#, fuzzy
+msgctxt "field:ir.action.report,report_content_custom:0"
+msgid "Content"
+msgstr "Содержание"
+
+msgctxt "field:ir.action.report,report_name:0"
+msgid "Internal Name"
+msgstr "Внутреннее наименование"
+
+msgctxt "field:ir.action.report,style:0"
+msgid "Style"
+msgstr "Стиль"
+
+msgctxt "field:ir.action.report,style_content:0"
+msgid "Style"
+msgstr "Стиль"
+
+msgctxt "field:ir.action.report,template_extension:0"
+msgid "Template Extension"
+msgstr ""
+
+msgctxt "field:ir.action.url,action:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "field:ir.action.url,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.action.url,url:0"
+msgid "Action Url"
+msgstr "Действие URL"
+
+msgctxt "field:ir.action.wizard,action:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "field:ir.action.wizard,email:0"
+msgid "Email"
+msgstr "Эл.почта"
+
+msgctxt "field:ir.action.wizard,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:ir.action.wizard,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.action.wizard,window:0"
+msgid "Window"
+msgstr "Окно"
+
+msgctxt "field:ir.action.wizard,wiz_name:0"
+msgid "Wizard name"
+msgstr "Наименование мастера"
+
+msgctxt "field:ir.attachment,collision:0"
+msgid "Collision"
+msgstr "Колизия"
+
+msgctxt "field:ir.attachment,data:0"
+msgid "Data"
+msgstr ""
+
+msgctxt "field:ir.attachment,data_size:0"
+msgid "Data size"
+msgstr ""
+
+msgctxt "field:ir.attachment,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:ir.attachment,digest:0"
+msgid "Digest"
+msgstr "Резюме"
+
+msgctxt "field:ir.attachment,last_modification:0"
+msgid "Last Modification"
+msgstr ""
+
+msgctxt "field:ir.attachment,last_user:0"
+msgid "Last User"
+msgstr ""
+
+msgctxt "field:ir.attachment,link:0"
+msgid "Link"
+msgstr "Ссылка"
+
+#, fuzzy
+msgctxt "field:ir.attachment,name:0"
+msgid "Name"
+msgstr "Имя вложения"
+
+msgctxt "field:ir.attachment,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:ir.attachment,resource:0"
+msgid "Resource"
+msgstr "Ресурс"
+
+#, fuzzy
+msgctxt "field:ir.attachment,summary:0"
+msgid "Summary"
+msgstr "Резюме"
+
+#, fuzzy
+msgctxt "field:ir.attachment,type:0"
+msgid "Type"
+msgstr "Тип"
+
+msgctxt "field:ir.cache,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.cache,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.cache,timestamp:0"
+msgid "Timestamp"
+msgstr "Время"
+
+msgctxt "field:ir.cron,active:0"
+msgid "Active"
+msgstr "Действительнный"
+
+msgctxt "field:ir.cron,args:0"
+msgid "Arguments"
+msgstr "Аргументы"
+
+msgctxt "field:ir.cron,function:0"
+msgid "Function"
+msgstr "Функция"
+
+msgctxt "field:ir.cron,interval_number:0"
+msgid "Interval Number"
+msgstr "Внутренний номер"
+
+msgctxt "field:ir.cron,interval_type:0"
+msgid "Interval Unit"
+msgstr "Внутренния единица"
+
+msgctxt "field:ir.cron,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:ir.cron,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.cron,next_call:0"
+msgid "Next Call"
+msgstr ""
+
+msgctxt "field:ir.cron,number_calls:0"
+msgid "Number of Calls"
+msgstr ""
+
+msgctxt "field:ir.cron,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.cron,repeat_missed:0"
+msgid "Repeat Missed"
+msgstr ""
+
+msgctxt "field:ir.cron,request_user:0"
+msgid "Request User"
+msgstr "Запрос пользователя"
+
+msgctxt "field:ir.cron,user:0"
+msgid "Execution User"
+msgstr "От имени пользователя"
+
+msgctxt "field:ir.export,export_fields:0"
+msgid "Fields"
+msgstr "Поля"
+
+msgctxt "field:ir.export,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.export,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.export,resource:0"
+msgid "Resource"
+msgstr "Ресурс"
+
+msgctxt "field:ir.export.line,export:0"
+msgid "Export"
+msgstr "Экспорт"
+
+msgctxt "field:ir.export.line,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.export.line,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.lang,active:0"
+msgid "Active"
+msgstr "Действительнный"
+
+msgctxt "field:ir.lang,code:0"
+msgid "Code"
+msgstr "Код отгрузки"
+
+msgctxt "field:ir.lang,date:0"
+msgid "Date"
+msgstr "Дата"
+
+msgctxt "field:ir.lang,decimal_point:0"
+msgid "Decimal Separator"
+msgstr "Разделитель десятичных чисел"
+
+msgctxt "field:ir.lang,direction:0"
+msgid "Direction"
+msgstr "Направление"
+
+msgctxt "field:ir.lang,grouping:0"
+msgid "Grouping"
+msgstr "Группировка"
+
+msgctxt "field:ir.lang,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.lang,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.lang,thousands_sep:0"
+msgid "Thousands Separator"
+msgstr "Разделитель тысяч"
+
+msgctxt "field:ir.lang,translatable:0"
+msgid "Translatable"
+msgstr "Переводимый"
+
+msgctxt "field:ir.model,fields:0"
+msgid "Fields"
+msgstr "Поля"
+
+msgctxt "field:ir.model,info:0"
+msgid "Information"
+msgstr "Информация"
+
+msgctxt "field:ir.model,model:0"
+msgid "Model Name"
+msgstr "Наименование шаблона"
+
+msgctxt "field:ir.model,module:0"
+msgid "Module"
+msgstr "Модуль"
+
+msgctxt "field:ir.model,name:0"
+msgid "Model Description"
+msgstr "Описание шаблона"
+
+msgctxt "field:ir.model,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.model.access,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:ir.model.access,group:0"
+msgid "Group"
+msgstr "Группа"
+
+msgctxt "field:ir.model.access,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:ir.model.access,perm_create:0"
+msgid "Create Access"
+msgstr "Добавление"
+
+msgctxt "field:ir.model.access,perm_delete:0"
+msgid "Delete Access"
+msgstr "Удаление"
+
+msgctxt "field:ir.model.access,perm_read:0"
+msgid "Read Access"
+msgstr "Чтение"
+
+msgctxt "field:ir.model.access,perm_write:0"
+msgid "Write Access"
+msgstr "Запись"
+
+msgctxt "field:ir.model.access,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.model.data,date_init:0"
+msgid "Init Date"
+msgstr "Дата уставки"
+
+msgctxt "field:ir.model.data,date_update:0"
+msgid "Update Date"
+msgstr "Дата обновления"
+
+msgctxt "field:ir.model.data,db_id:0"
+msgid "Resource ID"
+msgstr "Ресурс ID"
+
+msgctxt "field:ir.model.data,fs_id:0"
+msgid "Identifier on File System"
+msgstr "Идентификатор в файловой системе"
+
+msgctxt "field:ir.model.data,inherit:0"
+msgid "Inherit"
+msgstr "Наследование"
+
+msgctxt "field:ir.model.data,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:ir.model.data,module:0"
+msgid "Module"
+msgstr "Модуль"
+
+msgctxt "field:ir.model.data,noupdate:0"
+msgid "No Update"
+msgstr ""
+
+msgctxt "field:ir.model.data,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.model.data,values:0"
+msgid "Values"
+msgstr "Значения"
+
+msgctxt "field:ir.model.field,field_description:0"
+msgid "Field Description"
+msgstr "Описание поля"
+
+msgctxt "field:ir.model.field,groups:0"
+msgid "Groups"
+msgstr "Группы"
+
+msgctxt "field:ir.model.field,help:0"
+msgid "Help"
+msgstr "Помощь"
+
+msgctxt "field:ir.model.field,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:ir.model.field,module:0"
+msgid "Module"
+msgstr "Модуль"
+
+msgctxt "field:ir.model.field,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.model.field,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.model.field,relation:0"
+msgid "Model Relation"
+msgstr "Связь шаблона"
+
+msgctxt "field:ir.model.field,ttype:0"
+msgid "Field Type"
+msgstr "Тип поля"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,description:0"
+msgid "Description"
+msgstr "Описание"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,field:0"
+msgid "Field"
+msgstr "Поле"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,group:0"
+msgid "Group"
+msgstr "Группы"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,perm_read:0"
+msgid "Read Access"
+msgstr "Чтение"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,perm_write:0"
+msgid "Write Access"
+msgstr "Запись"
+
+#, fuzzy
+msgctxt "field:ir.model.field.access,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.model.print_model_graph.init,filter:0"
+msgid "Filter"
+msgstr ""
+
+msgctxt "field:ir.model.print_model_graph.init,level:0"
+msgid "Level"
+msgstr "Уровень"
+
+msgctxt "field:ir.module.module,author:0"
+msgid "Author"
+msgstr "Автор"
+
+msgctxt "field:ir.module.module,dependencies:0"
+msgid "Dependencies"
+msgstr "Зависимые"
+
+msgctxt "field:ir.module.module,description:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "field:ir.module.module,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.module.module,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.module.module,shortdesc:0"
+msgid "Short description"
+msgstr "Краткое описание"
+
+msgctxt "field:ir.module.module,state:0"
+msgid "State"
+msgstr "Состояние"
+
+msgctxt "field:ir.module.module,version:0"
+msgid "Version"
+msgstr "Версия"
+
+msgctxt "field:ir.module.module,website:0"
+msgid "Website"
+msgstr "Сайт"
+
+msgctxt "field:ir.module.module.config_wizard.item,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.module.module.config_wizard.item,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.module.module.config_wizard.item,sequence:0"
+msgid "Sequence"
+msgstr "Последовательность"
+
+msgctxt "field:ir.module.module.config_wizard.item,state:0"
+msgid "State"
+msgstr "Состояние"
+
+msgctxt "field:ir.module.module.dependency,module:0"
+msgid "Module"
+msgstr "Модуль"
+
+msgctxt "field:ir.module.module.dependency,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.module.module.dependency,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.module.module.dependency,state:0"
+msgid "State"
+msgstr "Состояние"
+
+msgctxt "field:ir.module.module.install_upgrade.init,module_info:0"
+msgid "Modules to update"
+msgstr "Модули для обновления"
+
+msgctxt "field:ir.property,field:0"
+msgid "Field"
+msgstr "Поле"
+
+msgctxt "field:ir.property,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.property,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.property,res:0"
+msgid "Resource"
+msgstr "Ресурс"
+
+msgctxt "field:ir.property,value:0"
+msgid "Value"
+msgstr "Значение"
+
+msgctxt "field:ir.rule,field:0"
+msgid "Field"
+msgstr "Поле"
+
+msgctxt "field:ir.rule,operand:0"
+msgid "Operand"
+msgstr "Операнд"
+
+msgctxt "field:ir.rule,operator:0"
+msgid "Operator"
+msgstr "Оператор"
+
+msgctxt "field:ir.rule,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.rule,rule_group:0"
+msgid "Group"
+msgstr "Группа"
+
+msgctxt "field:ir.rule.group,default_p:0"
+msgid "Default"
+msgstr "По умолчанию"
+
+msgctxt "field:ir.rule.group,global_p:0"
+msgid "Global"
+msgstr "Общий"
+
+msgctxt "field:ir.rule.group,groups:0"
+msgid "Groups"
+msgstr "Группы"
+
+msgctxt "field:ir.rule.group,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:ir.rule.group,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.rule.group,perm_create:0"
+msgid "Create Access"
+msgstr "Добавление"
+
+msgctxt "field:ir.rule.group,perm_delete:0"
+msgid "Delete Access"
+msgstr "Удаление"
+
+msgctxt "field:ir.rule.group,perm_read:0"
+msgid "Read Access"
+msgstr "Чтение"
+
+msgctxt "field:ir.rule.group,perm_write:0"
+msgid "Write Access"
+msgstr "Запись"
+
+msgctxt "field:ir.rule.group,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.rule.group,rules:0"
+msgid "Tests"
+msgstr "Тесты"
+
+msgctxt "field:ir.rule.group,users:0"
+msgid "Users"
+msgstr "Пользователи"
+
+msgctxt "field:ir.sequence,active:0"
+msgid "Active"
+msgstr "Действительнный"
+
+#, fuzzy
+msgctxt "field:ir.sequence,code:0"
+msgid "Sequence Code"
+msgstr "Тип последовательности"
+
+msgctxt "field:ir.sequence,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr ""
+
+msgctxt "field:ir.sequence,name:0"
+msgid "Sequence Name"
+msgstr "Наименование последовательности"
+
+msgctxt "field:ir.sequence,number_increment:0"
+msgid "Increment Number"
+msgstr "Коэфициент увеличения"
+
+msgctxt "field:ir.sequence,number_next:0"
+msgid "Next Number"
+msgstr "Следующий номер"
+
+#, fuzzy
+msgctxt "field:ir.sequence,number_next_internal:0"
+msgid "Next Number"
+msgstr "Следующий номер"
+
+msgctxt "field:ir.sequence,padding:0"
+msgid "Number padding"
+msgstr "Кол-во дополнения"
+
+msgctxt "field:ir.sequence,prefix:0"
+msgid "Prefix"
+msgstr "Префикс"
+
+msgctxt "field:ir.sequence,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.sequence,suffix:0"
+msgid "Suffix"
+msgstr "Суффикс"
+
+msgctxt "field:ir.sequence,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr ""
+
+msgctxt "field:ir.sequence,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.sequence,type:0"
+msgid "Type"
+msgstr "Тип"
+
+msgctxt "field:ir.sequence.strict,active:0"
+msgid "Active"
+msgstr "Действительнный"
+
+#, fuzzy
+msgctxt "field:ir.sequence.strict,code:0"
+msgid "Sequence Code"
+msgstr "Тип последовательности"
+
+msgctxt "field:ir.sequence.strict,last_timestamp:0"
+msgid "Last Timestamp"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,name:0"
+msgid "Sequence Name"
+msgstr "Наименование последовательности"
+
+msgctxt "field:ir.sequence.strict,number_increment:0"
+msgid "Increment Number"
+msgstr "Коэфициент увеличения"
+
+msgctxt "field:ir.sequence.strict,number_next:0"
+msgid "Next Number"
+msgstr "Следующий номер"
+
+#, fuzzy
+msgctxt "field:ir.sequence.strict,number_next_internal:0"
+msgid "Next Number"
+msgstr "Следующий номер"
+
+msgctxt "field:ir.sequence.strict,padding:0"
+msgid "Number padding"
+msgstr "Кол-во дополнения"
+
+msgctxt "field:ir.sequence.strict,prefix:0"
+msgid "Prefix"
+msgstr "Префикс"
+
+msgctxt "field:ir.sequence.strict,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.sequence.strict,suffix:0"
+msgid "Suffix"
+msgstr "Суффикс"
+
+msgctxt "field:ir.sequence.strict,timestamp_offset:0"
+msgid "Timestamp Offset"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,timestamp_rounding:0"
+msgid "Timestamp Rounding"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.sequence.strict,type:0"
+msgid "Type"
+msgstr "Тип"
+
+msgctxt "field:ir.sequence.type,code:0"
+msgid "Sequence Code"
+msgstr "Код последовательности"
+
+msgctxt "field:ir.sequence.type,name:0"
+msgid "Sequence Name"
+msgstr "Наименование последовательности"
+
+msgctxt "field:ir.sequence.type,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.translation,fuzzy:0"
+msgid "Fuzzy"
+msgstr "Нечеткие"
+
+msgctxt "field:ir.translation,lang:0"
+msgid "Language"
+msgstr "Язык"
+
+msgctxt "field:ir.translation,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:ir.translation,module:0"
+msgid "Module"
+msgstr "Модуль"
+
+msgctxt "field:ir.translation,name:0"
+msgid "Field Name"
+msgstr "Название поля"
+
+msgctxt "field:ir.translation,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.translation,res_id:0"
+msgid "Resource ID"
+msgstr "Ресурс ID"
+
+msgctxt "field:ir.translation,src:0"
+msgid "Source"
+msgstr "Исходный текст"
+
+msgctxt "field:ir.translation,src_md5:0"
+msgid "Source MD5"
+msgstr ""
+
+msgctxt "field:ir.translation,type:0"
+msgid "Type"
+msgstr "Тип"
+
+msgctxt "field:ir.translation,value:0"
+msgid "Translation Value"
+msgstr "Значение перевода"
+
+msgctxt "field:ir.translation.export.init,lang:0"
+msgid "Language"
+msgstr "Язык"
+
+msgctxt "field:ir.translation.export.init,module:0"
+msgid "Module"
+msgstr "Модуль"
+
+msgctxt "field:ir.translation.export.start,file:0"
+msgid "File"
+msgstr "Файл"
+
+msgctxt "field:ir.translation.update.init,lang:0"
+msgid "Language"
+msgstr "Язык"
+
+msgctxt "field:ir.trigger,action_function:0"
+msgid "Action Function"
+msgstr ""
+
+msgctxt "field:ir.trigger,action_model:0"
+msgid "Action Model"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.trigger,active:0"
+msgid "Active"
+msgstr "Действительный"
+
+#, fuzzy
+msgctxt "field:ir.trigger,condition:0"
+msgid "Condition"
+msgstr "Состояние"
+
+msgctxt "field:ir.trigger,limit_number:0"
+msgid "Limit Number"
+msgstr ""
+
+msgctxt "field:ir.trigger,minimum_delay:0"
+msgid "Minimum Delay"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.trigger,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+#, fuzzy
+msgctxt "field:ir.trigger,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:ir.trigger,on_create:0"
+msgid "On Create"
+msgstr "Создать"
+
+msgctxt "field:ir.trigger,on_delete:0"
+msgid "On Delete"
+msgstr ""
+
+msgctxt "field:ir.trigger,on_time:0"
+msgid "On Time"
+msgstr ""
+
+msgctxt "field:ir.trigger,on_write:0"
+msgid "On Write"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.trigger,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:ir.trigger.log,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.trigger.log,record_id:0"
+msgid "Record ID"
+msgstr ""
+
+msgctxt "field:ir.trigger.log,trigger:0"
+msgid "Trigger"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,icon:0"
+msgid "Icon"
+msgstr "Иконка"
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,module:0"
+msgid "Module"
+msgstr "Модуль"
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.ui.icon,path:0"
+msgid "SVG Path"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:ir.ui.icon,sequence:0"
+msgid "Sequence"
+msgstr "Последовательность"
+
+msgctxt "field:ir.ui.menu,action:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "field:ir.ui.menu,active:0"
+msgid "Active"
+msgstr "Действительнный"
+
+msgctxt "field:ir.ui.menu,childs:0"
+msgid "Children"
+msgstr "Подчиненый"
+
+msgctxt "field:ir.ui.menu,complete_name:0"
+msgid "Complete Name"
+msgstr "Полное название"
+
+msgctxt "field:ir.ui.menu,groups:0"
+msgid "Groups"
+msgstr "Группы"
+
+msgctxt "field:ir.ui.menu,icon:0"
+msgid "Icon"
+msgstr "Иконка"
+
+msgctxt "field:ir.ui.menu,name:0"
+msgid "Menu"
+msgstr "Меню"
+
+msgctxt "field:ir.ui.menu,parent:0"
+msgid "Parent Menu"
+msgstr "Основное меню"
+
+msgctxt "field:ir.ui.menu,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.ui.menu,sequence:0"
+msgid "Sequence"
+msgstr "Последовательность"
+
+msgctxt "field:ir.ui.view,arch:0"
+msgid "View Architecture"
+msgstr "Арихитуктура вида"
+
+msgctxt "field:ir.ui.view,domain:0"
+msgid "Domain"
+msgstr "Область"
+
+msgctxt "field:ir.ui.view,field_childs:0"
+msgid "Children Field"
+msgstr "Подчиненое поле"
+
+msgctxt "field:ir.ui.view,inherit:0"
+msgid "Inherited View"
+msgstr "Наследованный вид"
+
+msgctxt "field:ir.ui.view,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:ir.ui.view,module:0"
+msgid "Module"
+msgstr "Модуль"
+
+msgctxt "field:ir.ui.view,priority:0"
+msgid "Priority"
+msgstr "Приоритет"
+
+msgctxt "field:ir.ui.view,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.ui.view,type:0"
+msgid "View Type"
+msgstr "Тип вида"
+
+msgctxt "field:ir.ui.view_sc,name:0"
+msgid "Shortcut Name"
+msgstr "Краткое наименование"
+
+msgctxt "field:ir.ui.view_sc,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.ui.view_sc,res_id:0"
+msgid "Resource Ref."
+msgstr "Ссылка на ресурс"
+
+msgctxt "field:ir.ui.view_sc,resource:0"
+msgid "Resource Name"
+msgstr "Наименование ресурса"
+
+msgctxt "field:ir.ui.view_sc,sequence:0"
+msgid "Sequence"
+msgstr "Последовательность"
+
+msgctxt "field:ir.ui.view_sc,user_id:0"
+msgid "User Ref."
+msgstr "Ссылка на пользователя"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,child_name:0"
+msgid "Child Name"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,domain:0"
+msgid "Domain"
+msgstr "Область"
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:ir.ui.view_tree_expanded_state,nodes:0"
+msgid "Expanded Nodes"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:ir.ui.view_tree_expanded_state,user:0"
+msgid "User"
+msgstr "Пользователь"
+
+msgctxt "field:ir.ui.view_tree_width,field:0"
+msgid "Field"
+msgstr "Поле"
+
+msgctxt "field:ir.ui.view_tree_width,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:ir.ui.view_tree_width,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.ui.view_tree_width,user:0"
+msgid "User"
+msgstr "Пользователь"
+
+msgctxt "field:ir.ui.view_tree_width,width:0"
+msgid "Width"
+msgstr "Ширина"
+
+msgctxt "help:ir.action.act_window,auto_refresh:0"
+msgid "Add an auto-refresh on the view"
+msgstr "Добавить авто-обновление в просмотр"
+
+msgctxt "help:ir.action.act_window,limit:0"
+msgid "Default limit for the list view"
+msgstr "По умолчанию кол-во записей в списке"
+
+msgctxt "help:ir.action.act_window,search_value:0"
+msgid "Default search criteria for the list view"
+msgstr "По умолчанию критерии поиска в списке"
+
+msgctxt "help:ir.action.act_window,window_name:0"
+msgid "Use the action name as window name"
+msgstr "Использовать наименование действия как наименование окна"
+
+msgctxt "help:ir.action.report,extension:0"
+msgid ""
+"Leave empty for the same as template, see unoconv documentation for "
+"compatible format"
+msgstr ""
+
+msgctxt "help:ir.action.report,style:0"
+msgid "Define the style to apply on the report."
+msgstr "Определить стиль для применения по этому отчету."
+
+msgctxt "help:ir.action.wizard,window:0"
+msgid "Run wizard in a new window"
+msgstr "Запустить мастера в новом окне"
+
+msgctxt "help:ir.cron,number_calls:0"
+msgid ""
+"Number of times the function is called, a negative number indicates that the"
+" function will always be called"
+msgstr ""
+
+msgctxt "help:ir.cron,request_user:0"
+msgid "The user who will receive requests in case of failure"
+msgstr "Пользователь, который будет получать запросы в случае ошибки"
+
+msgctxt "help:ir.cron,user:0"
+msgid "The user used to execute this action"
+msgstr "Пользователь, для выполнения этого действия"
+
+msgctxt "help:ir.lang,code:0"
+msgid "RFC 4646 tag: http://tools.ietf.org/html/rfc4646"
+msgstr ""
+
+msgctxt "help:ir.model,module:0"
+msgid "Module in which this model is defined"
+msgstr "Модуль, в котором эти модели определяются"
+
+msgctxt "help:ir.model.data,db_id:0"
+msgid "The id of the record in the database."
+msgstr "Идентификатор записи в базе данных."
+
+msgctxt "help:ir.model.data,fs_id:0"
+msgid "The id of the record as known on the file system."
+msgstr "Идентификатор записи как известно, в файловой системе."
+
+msgctxt "help:ir.model.field,module:0"
+msgid "Module in which this field is defined"
+msgstr "Модуль, в котором это поле определяется"
+
+msgctxt "help:ir.model.print_model_graph.init,filter:0"
+msgid ""
+"Entering a Python Regular Expression will exclude matching models from the "
+"graph."
+msgstr ""
+
+msgctxt "help:ir.rule.group,default_p:0"
+msgid "Add this rule to all users by default"
+msgstr "Добавить это правило для всех пользователей по умолчанию"
+
+msgctxt "help:ir.rule.group,global_p:0"
+msgid ""
+"Make the rule global \n"
+"so every users must follow this rule"
+msgstr "Сделать правило общим"
+
+msgctxt "help:ir.rule.group,rules:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr "Это правило выполняется, если по крайней мере одно правило истинно"
+
+msgctxt "help:ir.trigger,condition:0"
+msgid ""
+"A Python statement evaluated with record represented by \"self\"\n"
+"It triggers the action if true."
+msgstr ""
+
+msgctxt "help:ir.trigger,limit_number:0"
+msgid ""
+"Limit the number of call to \"Action Function\" by records.\n"
+"0 for no limit."
+msgstr ""
+
+msgctxt "help:ir.trigger,minimum_delay:0"
+msgid ""
+"Set a minimum delay in minutes between call to \"Action Function\" for the same record.\n"
+"0 for no delay."
+msgstr ""
+
+msgctxt "model:ir.action,name:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "model:ir.action,name:act_action_act_window_form"
+msgid "Window Actions"
+msgstr "Действия окна"
+
+msgctxt "model:ir.action,name:act_action_form"
+msgid "Actions"
+msgstr "Действия"
+
+msgctxt "model:ir.action,name:act_action_report_form"
+msgid "Reports"
+msgstr "Отчеты"
+
+msgctxt "model:ir.action,name:act_action_url_form"
+msgid "URLs"
+msgstr "Ссылки"
+
+msgctxt "model:ir.action,name:act_action_wizard_form"
+msgid "Wizards"
+msgstr "Мастера"
+
+msgctxt "model:ir.action,name:act_attachment_form"
+msgid "Attachments"
+msgstr "Вложения"
+
+msgctxt "model:ir.action,name:act_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr "Мастер конфигурации"
+
+msgctxt "model:ir.action,name:act_cron_form"
+msgid "Scheduled Actions"
+msgstr "Запланированные действия"
+
+msgctxt "model:ir.action,name:act_export_form"
+msgid "Exports"
+msgstr "Экспортировать"
+
+msgctxt "model:ir.action,name:act_icon_form"
+msgid "Icons"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_lang_form"
+msgid "Languages"
+msgstr "Языки"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_menu_list"
+msgid "Menu"
+msgstr "Меню"
+
+msgctxt "model:ir.action,name:act_menu_tree"
+msgid "Menu"
+msgstr "Меню"
+
+msgctxt "model:ir.action,name:act_model_access_form"
+msgid "Models Access"
+msgstr "Шаблон доступа"
+
+msgctxt "model:ir.action,name:act_model_field_access_form"
+msgid "Fields Access"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_model_fields_form"
+msgid "Fields"
+msgstr "Поля"
+
+msgctxt "model:ir.action,name:act_model_form"
+msgid "Models"
+msgstr "Шаблоны"
+
+msgctxt "model:ir.action,name:act_module_config_wizard"
+msgid "Module Configuration"
+msgstr "Конфигурация модуля"
+
+msgctxt "model:ir.action,name:act_module_form"
+msgid "Modules"
+msgstr "Модули"
+
+msgctxt "model:ir.action,name:act_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr "Установить / Обновить"
+
+msgctxt "model:ir.action,name:act_property_form"
+msgid "Properties"
+msgstr "Свойства"
+
+msgctxt "model:ir.action,name:act_property_form_default"
+msgid "Default Properties"
+msgstr "Свойства по умолчанию"
+
+msgctxt "model:ir.action,name:act_rule_group_form"
+msgid "Record Rules"
+msgstr "Запись правил"
+
+msgctxt "model:ir.action,name:act_sequence_form"
+msgid "Sequences"
+msgstr "Нумерации"
+
+msgctxt "model:ir.action,name:act_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr "Строгая нумерация"
+
+msgctxt "model:ir.action,name:act_sequence_type_form"
+msgid "Sequence Types"
+msgstr "Тип нумерации"
+
+msgctxt "model:ir.action,name:act_translation_clean"
+msgid "Clean Translations"
+msgstr "Очистить переводы"
+
+msgctxt "model:ir.action,name:act_translation_export"
+msgid "Export Translations"
+msgstr "Экспорт переводов"
+
+msgctxt "model:ir.action,name:act_translation_form"
+msgid "Translations"
+msgstr "Переводы"
+
+msgctxt "model:ir.action,name:act_translation_set_report"
+msgid "Set Report Translations"
+msgstr "Установить переводы для отчетов"
+
+msgctxt "model:ir.action,name:act_translation_update"
+msgid "Synchronize Translations"
+msgstr "Синхронизация переводов"
+
+msgctxt "model:ir.action,name:act_trigger_form"
+msgid "Triggers"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_form"
+msgid "Views"
+msgstr "Виды"
+
+msgctxt "model:ir.action,name:act_view_sc_add"
+msgid "Add Shortcut"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_sc_form"
+msgid "View Shortcuts"
+msgstr "Быстрый доступ к списку"
+
+msgctxt "model:ir.action,name:act_view_sc_open"
+msgid "Open Shortcut"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_show"
+msgid "Show View"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_view_tree_width_form"
+msgid "View Tree Width"
+msgstr "Ширина просмотра списка"
+
+msgctxt "model:ir.action,name:print_model_graph"
+msgid "Graph"
+msgstr "Графика"
+
+msgctxt "model:ir.action,name:report_model_graph"
+msgid "Graph"
+msgstr "Графика"
+
+msgctxt "model:ir.action.act_window,name:0"
+msgid "Action act window"
+msgstr "Действие окна"
+
+msgctxt "model:ir.action.act_window.view,name:0"
+msgid "Action act window view"
+msgstr "Действие окна вида"
+
+msgctxt "model:ir.action.keyword,name:0"
+msgid "Action keyword"
+msgstr "Действие ключевых слов"
+
+msgctxt "model:ir.action.report,name:0"
+msgid "Action report"
+msgstr "Действие отчета"
+
+msgctxt "model:ir.action.url,name:0"
+msgid "Action URL"
+msgstr "Действие URL"
+
+msgctxt "model:ir.action.wizard,name:0"
+msgid "Action wizard"
+msgstr "Действие мастера"
+
+msgctxt "model:ir.attachment,name:0"
+msgid "Attachment"
+msgstr "Вложение"
+
+msgctxt "model:ir.cache,name:0"
+msgid "Cache"
+msgstr "Кэш"
+
+msgctxt "model:ir.cron,name:0"
+msgid "Cron"
+msgstr "Планировщик"
+
+msgctxt "model:ir.date,name:0"
+msgid "Date"
+msgstr "Дата"
+
+msgctxt "model:ir.export,name:0"
+msgid "Export"
+msgstr "Экспорт"
+
+msgctxt "model:ir.export.line,name:0"
+msgid "Export line"
+msgstr "Экспорт строки"
+
+msgctxt "model:ir.lang,name:0"
+msgid "Language"
+msgstr "Язык"
+
+msgctxt "model:ir.lang,name:lang_bg"
+msgid "Bulgarian"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_cs"
+msgid "Czech"
+msgstr "Чешский"
+
+msgctxt "model:ir.lang,name:lang_de"
+msgid "German"
+msgstr "Немецкий"
+
+msgctxt "model:ir.lang,name:lang_en"
+msgid "English"
+msgstr "Английский"
+
+msgctxt "model:ir.lang,name:lang_es"
+msgid "Spanish (Spain)"
+msgstr "Испанский (Испания)"
+
+msgctxt "model:ir.lang,name:lang_es_CO"
+msgid "Spanish (Colombia)"
+msgstr "Испанский (Колумбия)"
+
+msgctxt "model:ir.lang,name:lang_fr"
+msgid "French"
+msgstr "Французкий"
+
+msgctxt "model:ir.lang,name:lang_nl"
+msgid "Dutch"
+msgstr ""
+
+msgctxt "model:ir.lang,name:lang_ru"
+msgid "Russian"
+msgstr ""
+
+msgctxt "model:ir.model,name:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "model:ir.model.access,name:0"
+msgid "Model access"
+msgstr "Шаблон доступа"
+
+msgctxt "model:ir.model.data,name:0"
+msgid "Model data"
+msgstr "Данные шаблона"
+
+msgctxt "model:ir.model.field,name:0"
+msgid "Model field"
+msgstr "Шаблон поля"
+
+msgctxt "model:ir.model.field.access,name:0"
+msgid "Model Field Access"
+msgstr ""
+
+msgctxt "model:ir.model.print_model_graph.init,name:0"
+msgid "Print Model Graph Init"
+msgstr "Печать шаблона графика Init"
+
+msgctxt "model:ir.module.module,name:0"
+msgid "Module"
+msgstr "Модуль"
+
+msgctxt "model:ir.module.module.config_wizard.first,name:0"
+msgid "Module Config Wizard First"
+msgstr "Мастер конфигурации модуля"
+
+msgctxt "model:ir.module.module.config_wizard.item,name:0"
+msgid "Config wizard to run after installing module"
+msgstr "Запустить мастер конфигурации после установки модуля"
+
+msgctxt "model:ir.module.module.dependency,name:0"
+msgid "Module dependency"
+msgstr "Зависимости"
+
+msgctxt "model:ir.module.module.install_upgrade.init,name:0"
+msgid "Module Install Upgrade Init"
+msgstr "Модуль установить (обновить) инициализация"
+
+msgctxt "model:ir.module.module.install_upgrade.start,name:0"
+msgid "Module Install Upgrade Start"
+msgstr "Начать установку (обновление) модуля"
+
+msgctxt "model:ir.property,name:0"
+msgid "Property"
+msgstr "Свойства"
+
+msgctxt "model:ir.rule,name:0"
+msgid "Rule"
+msgstr "Правило"
+
+msgctxt "model:ir.rule.group,name:0"
+msgid "Rule group"
+msgstr "Правило группы"
+
+msgctxt "model:ir.sequence,name:0"
+msgid "Sequence"
+msgstr "Последовательность"
+
+msgctxt "model:ir.sequence.strict,name:0"
+msgid "Sequence Strict"
+msgstr "Строгая последовательность"
+
+msgctxt "model:ir.sequence.type,name:0"
+msgid "Sequence type"
+msgstr "Тип последовательности"
+
+msgctxt "model:ir.translation,name:0"
+msgid "Translation"
+msgstr "Перевод"
+
+msgctxt "model:ir.translation.clean.init,name:0"
+msgid "Clean translation init"
+msgstr "Очистить перевод (инициализация)"
+
+msgctxt "model:ir.translation.clean.start,name:0"
+msgid "Clean translation start"
+msgstr "Очистить перевод (начала)"
+
+msgctxt "model:ir.translation.export.init,name:0"
+msgid "Export translation - language and module"
+msgstr "Экспорт перевода - язык и модуль"
+
+msgctxt "model:ir.translation.export.start,name:0"
+msgid "Export translation - file"
+msgstr "Экспорт перевода - файл"
+
+msgctxt "model:ir.translation.set_report.init,name:0"
+msgid "Update Report Translation"
+msgstr "Обновить переводы отчетов"
+
+msgctxt "model:ir.translation.set_report.start,name:0"
+msgid "Update Report Translation"
+msgstr "Обновить переводы отчетов"
+
+msgctxt "model:ir.translation.update.init,name:0"
+msgid "Update translation - language"
+msgstr "Обновить перевод - языка"
+
+msgctxt "model:ir.trigger,name:0"
+msgid "Trigger"
+msgstr ""
+
+msgctxt "model:ir.trigger.log,name:0"
+msgid "Trigger Log"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:ir.ui.icon,name:0"
+msgid "Icon"
+msgstr "Иконка"
+
+msgctxt "model:ir.ui.menu,name:0"
+msgid "UI menu"
+msgstr "Пользовательское меню"
+
+msgctxt "model:ir.ui.menu,name:menu_act_action"
+msgid "Actions"
+msgstr "Действия"
+
+msgctxt "model:ir.ui.menu,name:menu_action"
+msgid "Actions"
+msgstr "Действия"
+
+msgctxt "model:ir.ui.menu,name:menu_action_act_window"
+msgid "Window Actions"
+msgstr "Действия окна"
+
+msgctxt "model:ir.ui.menu,name:menu_action_report_form"
+msgid "Reports"
+msgstr "Отчеты"
+
+msgctxt "model:ir.ui.menu,name:menu_action_url"
+msgid "URLs"
+msgstr "Ссылки"
+
+msgctxt "model:ir.ui.menu,name:menu_action_wizard"
+msgid "Wizards"
+msgstr "Мастера"
+
+msgctxt "model:ir.ui.menu,name:menu_administration"
+msgid "Administration"
+msgstr "Администрирование"
+
+msgctxt "model:ir.ui.menu,name:menu_attachment_form"
+msgid "Attachments"
+msgstr "Вложения"
+
+msgctxt "model:ir.ui.menu,name:menu_config_wizard_item_form"
+msgid "Config Wizard Items"
+msgstr "Мастер конфигурации"
+
+msgctxt "model:ir.ui.menu,name:menu_cron_form"
+msgid "Scheduled Actions"
+msgstr "Запланированные действия"
+
+msgctxt "model:ir.ui.menu,name:menu_export_form"
+msgid "Exports"
+msgstr "Экспортировать"
+
+msgctxt "model:ir.ui.menu,name:menu_icon_form"
+msgid "Icons"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_ir_sequence_type"
+msgid "Sequence Types"
+msgstr "Тип нумерации"
+
+msgctxt "model:ir.ui.menu,name:menu_lang_form"
+msgid "Languages"
+msgstr "Языки"
+
+msgctxt "model:ir.ui.menu,name:menu_localization"
+msgid "Localization"
+msgstr "Переводы"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_menu_list"
+msgid "Menu"
+msgstr "Меню"
+
+msgctxt "model:ir.ui.menu,name:menu_model_access_form"
+msgid "Models Access"
+msgstr "Шаблоны доступа"
+
+msgctxt "model:ir.ui.menu,name:menu_model_field_access_form"
+msgid "Fields Access"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_model_form"
+msgid "Models"
+msgstr "Шаблоны"
+
+msgctxt "model:ir.ui.menu,name:menu_models"
+msgid "Models"
+msgstr "Шаблоны"
+
+msgctxt "model:ir.ui.menu,name:menu_module_form"
+msgid "Modules"
+msgstr "Модули"
+
+msgctxt "model:ir.ui.menu,name:menu_module_install_upgrade"
+msgid "Perform Pending Installation/Upgrade"
+msgstr "Выполните установки / обновления"
+
+msgctxt "model:ir.ui.menu,name:menu_modules"
+msgid "Modules"
+msgstr "Модули"
+
+msgctxt "model:ir.ui.menu,name:menu_property_form"
+msgid "Properties"
+msgstr "Свойства"
+
+msgctxt "model:ir.ui.menu,name:menu_property_form_default"
+msgid "Default Properties"
+msgstr "Свойства по умолчанию"
+
+msgctxt "model:ir.ui.menu,name:menu_rule_group_form"
+msgid "Record Rules"
+msgstr "Запись правил"
+
+msgctxt "model:ir.ui.menu,name:menu_scheduler"
+msgid "Scheduler"
+msgstr "Планировщик"
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_form"
+msgid "Sequences"
+msgstr "Последовательности"
+
+msgctxt "model:ir.ui.menu,name:menu_sequence_strict_form"
+msgid "Sequences Strict"
+msgstr "Строгая нумерация"
+
+msgctxt "model:ir.ui.menu,name:menu_sequences"
+msgid "Sequences"
+msgstr "Последовательности"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_clean"
+msgid "Clean Translations"
+msgstr "Очистить переводы"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_export"
+msgid "Export Translations"
+msgstr "Экспорт переводов"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_form"
+msgid "Translations"
+msgstr "Переводы"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_set_report"
+msgid "Set Report Translations"
+msgstr "Установить переводы для отчетов"
+
+msgctxt "model:ir.ui.menu,name:menu_translation_update"
+msgid "Synchronize Translations"
+msgstr "Синхронизация переводов"
+
+msgctxt "model:ir.ui.menu,name:menu_trigger_form"
+msgid "Triggers"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_ui"
+msgid "User Interface"
+msgstr "Пользовательский интерфейс"
+
+msgctxt "model:ir.ui.menu,name:menu_view"
+msgid "Views"
+msgstr "Виды"
+
+msgctxt "model:ir.ui.menu,name:menu_view_sc"
+msgid "View Shortcuts"
+msgstr "Просмотр быстрого доступа"
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_expanded_state"
+msgid "Tree Expanded State"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_view_tree_width"
+msgid "View Tree Width"
+msgstr "Ширина просмотра списка"
+
+msgctxt "model:ir.ui.menu,name:model_model_fields_form"
+msgid "Fields"
+msgstr "Поля"
+
+msgctxt "model:ir.ui.view,name:0"
+msgid "View"
+msgstr "Просмотр"
+
+msgctxt "model:ir.ui.view.show.init,name:0"
+msgid "ir.ui.view.show.init"
+msgstr ""
+
+msgctxt "model:ir.ui.view_sc,name:0"
+msgid "View shortcut"
+msgstr "Краткое наименование просмотра"
+
+msgctxt "model:ir.ui.view_tree_expanded_state,name:0"
+msgid "ir.ui.view_tree_expanded_state"
+msgstr ""
+
+msgctxt "model:ir.ui.view_tree_width,name:0"
+msgid "View Tree Width"
+msgstr "Ширина просмотра списка"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action form"
+msgstr "Действие формы"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Action tree"
+msgstr "Действие списка"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Form relate"
+msgstr "Форма связана"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open Graph"
+msgstr "Открыть график"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Open tree"
+msgstr "Открыть список"
+
+msgctxt "selection:ir.action.keyword,keyword:0"
+msgid "Print form"
+msgstr "Печать формы"
+
+msgctxt "selection:ir.attachment,type:0"
+msgid "Data"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:ir.attachment,type:0"
+msgid "Link"
+msgstr "Ссылка"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Days"
+msgstr "Дни:"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Hours"
+msgstr "Часы"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Minutes"
+msgstr "Минуты"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Months"
+msgstr "Месяцы:"
+
+msgctxt "selection:ir.cron,interval_type:0"
+msgid "Weeks"
+msgstr "Недели"
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Left-to-right"
+msgstr "Слева на право"
+
+msgctxt "selection:ir.lang,direction:0"
+msgid "Right-to-left"
+msgstr "Справа на лево"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Installed"
+msgstr "Установлен"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "Not Installed"
+msgstr "Не установлен"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be installed"
+msgstr "Для установки"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be removed"
+msgstr "Для удаления"
+
+msgctxt "selection:ir.module.module,state:0"
+msgid "To be upgraded"
+msgstr "Для обновления"
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Done"
+msgstr "Выполнено"
+
+msgctxt "selection:ir.module.module.config_wizard.item,state:0"
+msgid "Open"
+msgstr "Открыть"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Installed"
+msgstr "Установлен"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Not Installed"
+msgstr "Не установлен"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be installed"
+msgstr "Для установки"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be removed"
+msgstr "Для удаления"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "To be upgraded"
+msgstr "Для обновления"
+
+msgctxt "selection:ir.module.module.dependency,state:0"
+msgid "Unknown"
+msgstr "Неизвестно"
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Decimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence,type:0"
+msgid "Incremental"
+msgstr ""
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Decimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Hexadecimal Timestamp"
+msgstr ""
+
+msgctxt "selection:ir.sequence.strict,type:0"
+msgid "Incremental"
+msgstr ""
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Error"
+msgstr "Ошибка"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Field"
+msgstr "Поле"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Help"
+msgstr "Помощь"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "ODT"
+msgstr ""
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Selection"
+msgstr "Выбор"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "View"
+msgstr "Просмотр"
+
+msgctxt "selection:ir.translation,type:0"
+msgid "Wizard Button"
+msgstr "Кнопка мастера"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.act_window"
+msgstr "Действия окна"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.report"
+msgstr "Действия отчетов"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.url"
+msgstr "Действия ссылки"
+
+msgctxt "selection:ir.ui.menu,action:0"
+msgid "ir.action.wizard"
+msgstr "Действия мастера"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid ""
+msgstr "Резервный счет"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Board"
+msgstr "Доска"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Form"
+msgstr "Форма"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Graph"
+msgstr "Графика"
+
+msgctxt "selection:ir.ui.view,type:0"
+msgid "Tree"
+msgstr "Вид"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "General"
+msgstr "Основной"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keyword"
+msgstr "Ключевое слово"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Keywords"
+msgstr "Ключевые слова"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open Window"
+msgstr "Открыть окно"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Open a Window"
+msgstr "Открыть окно"
+
+msgctxt "view:ir.action.act_window:0"
+msgid "Views"
+msgstr "Виды"
+
+msgctxt "view:ir.action.report:0"
+msgid "General"
+msgstr "Основной"
+
+msgctxt "view:ir.action.report:0"
+msgid "Keyword"
+msgstr "Ключевое слово"
+
+msgctxt "view:ir.action.report:0"
+msgid "Keywords"
+msgstr "Ключевые слова"
+
+msgctxt "view:ir.action.report:0"
+msgid "Report"
+msgstr "Отчет"
+
+msgctxt "view:ir.action.report:0"
+msgid "Report xml"
+msgstr "Отчет xml"
+
+msgctxt "view:ir.action.url:0"
+msgid "General"
+msgstr "Основной"
+
+msgctxt "view:ir.action.url:0"
+msgid "Keyword"
+msgstr "Ключевое слово"
+
+msgctxt "view:ir.action.url:0"
+msgid "Keywords"
+msgstr "Ключевые слова"
+
+msgctxt "view:ir.action.url:0"
+msgid "URL"
+msgstr "Ссылка"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "General"
+msgstr "Основной"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keyword"
+msgstr "Ключевое слово"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Keywords"
+msgstr "Ключевые слова"
+
+msgctxt "view:ir.action.wizard:0"
+msgid "Wizard"
+msgstr "Мастер"
+
+msgctxt "view:ir.action:0"
+msgid "Action"
+msgstr "Действие"
+
+msgctxt "view:ir.action:0"
+msgid "General"
+msgstr "Основной"
+
+msgctxt "view:ir.action:0"
+msgid "Keyword"
+msgstr "Ключевое слово"
+
+msgctxt "view:ir.action:0"
+msgid "Keywords"
+msgstr "Ключевые слова"
+
+msgctxt "view:ir.attachment:0"
+msgid "Attachments"
+msgstr "Вложения"
+
+msgctxt "view:ir.cron:0"
+msgid "Action to trigger"
+msgstr "Действие триггера"
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Action"
+msgstr "Запланированное действие"
+
+msgctxt "view:ir.cron:0"
+msgid "Scheduled Actions"
+msgstr "Запланированные действия"
+
+msgctxt "view:ir.export:0"
+msgid "Exports"
+msgstr "Экспортировать"
+
+msgctxt "view:ir.lang:0"
+msgid "Date Formatting"
+msgstr "Формат даты"
+
+msgctxt "view:ir.lang:0"
+msgid "Language"
+msgstr "Язык"
+
+msgctxt "view:ir.lang:0"
+msgid "Languages"
+msgstr "Языки"
+
+msgctxt "view:ir.lang:0"
+msgid "Numbers Formatting"
+msgstr "Формат числа"
+
+msgctxt "view:ir.model.access:0"
+msgid "Access controls"
+msgstr "Контроль доступа"
+
+msgctxt "view:ir.model.field.access:0"
+msgid "Field Access"
+msgstr ""
+
+msgctxt "view:ir.model.field:0"
+msgid "Fields"
+msgstr "Поля"
+
+msgctxt "view:ir.model.print_model_graph.init:0"
+msgid "Print Model Graph"
+msgstr "Печать шаблона графика"
+
+msgctxt "view:ir.model:0"
+msgid "Fields Description"
+msgstr "Описание полей"
+
+msgctxt "view:ir.model:0"
+msgid "Model Description"
+msgstr "Описание шаблона"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "Welcome to the module configuration wizard!"
+msgstr "Добро пожаловать в мастер конфигурации модуля!"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "You will be able to configure your installation"
+msgstr "Вы сможете настроить установки"
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid ""
+"You will be able to configure your installation depending on the modules you"
+" have installed."
+msgstr ""
+
+msgctxt "view:ir.module.module.config_wizard.first:0"
+msgid "depending on the modules you have installed."
+msgstr "в зависимости от модулей, которые вы установили."
+
+msgctxt "view:ir.module.module.config_wizard.item:0"
+msgid "Config Wizard Items"
+msgstr "Мастер конфигурации"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Note that this operation my take a few minutes."
+msgstr "Обратите внимание, что эта операция мой занять несколько минут."
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "System Upgrade"
+msgstr "Обновление системы"
+
+msgctxt "view:ir.module.module.install_upgrade.init:0"
+msgid "Your system will be upgraded."
+msgstr "Ваша система обновлена"
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "System upgrade done"
+msgstr "Обновление системы выполнено"
+
+msgctxt "view:ir.module.module.install_upgrade.start:0"
+msgid "The modules have been upgraded / installed !"
+msgstr "Модули были обновлены / установлен!"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr "Отмена установки"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr "Отмена удаления"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr "Отмена обновления"
+
+msgctxt "view:ir.module.module:0"
+msgid "Dependencies"
+msgstr "Зависимые"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr "Установить"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr "Удалить (бета)"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr "Обновить"
+
+msgctxt "view:ir.module.module:0"
+msgid "Module"
+msgstr "Модуль"
+
+msgctxt "view:ir.module.module:0"
+msgid "Modules"
+msgstr "Модули"
+
+msgctxt "view:ir.property:0"
+msgid "Properties"
+msgstr "Свойства"
+
+msgctxt "view:ir.property:0"
+msgid "Property"
+msgstr "Свойства"
+
+msgctxt "view:ir.rule.group:0"
+msgid ""
+"If there is no test defined, the rule is always satisfied if not global"
+msgstr ""
+"Если ни одна проверка не определена, правило выполняется всегда, если оно не"
+" глобальное"
+
+msgctxt "view:ir.rule.group:0"
+msgid "Record rules"
+msgstr "Правила записи"
+
+msgctxt "view:ir.rule.group:0"
+msgid "The rule is satisfied if at least one test is True"
+msgstr "Это правило выполняется, если по крайней мере одна проверка истинна"
+
+msgctxt "view:ir.rule:0"
+msgid "Test"
+msgstr "Тест"
+
+msgctxt "view:ir.sequence.type:0"
+msgid "Sequence Type"
+msgstr "Тип последовательности"
+
+msgctxt "view:ir.sequence:0"
+msgid "${day}"
+msgstr "${day} - День"
+
+msgctxt "view:ir.sequence:0"
+msgid "${month}"
+msgstr "${month} - Месяц"
+
+msgctxt "view:ir.sequence:0"
+msgid "${year}"
+msgstr "${year} - Год"
+
+msgctxt "view:ir.sequence:0"
+msgid "Day:"
+msgstr "День:"
+
+msgctxt "view:ir.sequence:0"
+msgid "Incremental"
+msgstr ""
+
+msgctxt "view:ir.sequence:0"
+msgid "Legend (Placeholders for prefix, suffix)"
+msgstr "Легенда (заполнители для префиксов, суффиксов)"
+
+msgctxt "view:ir.sequence:0"
+msgid "Month:"
+msgstr "Месяц:"
+
+msgctxt "view:ir.sequence:0"
+msgid "Sequences"
+msgstr "Последовательности"
+
+#, fuzzy
+msgctxt "view:ir.sequence:0"
+msgid "Timestamp"
+msgstr "Время"
+
+msgctxt "view:ir.sequence:0"
+msgid "Year:"
+msgstr "Год:"
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations"
+msgstr "Очистить переводы"
+
+msgctxt "view:ir.translation.clean.init:0"
+msgid "Clean Translations?"
+msgstr "Очистить переводы?"
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations"
+msgstr "Очистить переводы"
+
+msgctxt "view:ir.translation.clean.start:0"
+msgid "Clean Translations Succeed!"
+msgstr "Переводы очищены успешно!"
+
+msgctxt "view:ir.translation.export.init:0"
+msgid "Export Translation"
+msgstr "Экспорт перевода"
+
+msgctxt "view:ir.translation.export.start:0"
+msgid "Export Translation"
+msgstr "Экспорт перевода"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Set Report Translations"
+msgstr "Установить переводы для отчетов"
+
+msgctxt "view:ir.translation.set_report.init:0"
+msgid "Synchronize Report Translations?"
+msgstr "Синхронизация переводов для отчетов?"
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Report Translations"
+msgstr "Установить переводы для отчетов"
+
+msgctxt "view:ir.translation.set_report.start:0"
+msgid "Set Translations Succeed!"
+msgstr "Переводы установлены успешно!"
+
+msgctxt "view:ir.translation.update.init:0"
+msgid "Synchronize Translations"
+msgstr "Синхронизация переводов"
+
+msgctxt "view:ir.translation:0"
+msgid "Translations"
+msgstr "Переводы"
+
+msgctxt "view:ir.trigger:0"
+msgid "Trigger"
+msgstr ""
+
+msgctxt "view:ir.trigger:0"
+msgid "Triggers"
+msgstr ""
+
+#, fuzzy
+msgctxt "view:ir.ui.icon:0"
+msgid "Icon"
+msgstr "Иконка"
+
+msgctxt "view:ir.ui.icon:0"
+msgid "Icons"
+msgstr ""
+
+msgctxt "view:ir.ui.menu:0"
+msgid "Menu"
+msgstr "Меню"
+
+msgctxt "view:ir.ui.view:0"
+msgid "View"
+msgstr "Просмотр"
+
+msgctxt "view:ir.ui.view:0"
+msgid "_Show"
+msgstr ""
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcut"
+msgstr "Краткое наименование"
+
+msgctxt "view:ir.ui.view_sc:0"
+msgid "Shortcuts"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "View Tree Expanded State"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_expanded_state:0"
+msgid "Views Tree Expanded State"
+msgstr ""
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "View Tree Width"
+msgstr "Ширина просмотра списка"
+
+msgctxt "view:ir.ui.view_tree_width:0"
+msgid "Views Tree Width"
+msgstr "Ширина вида список"
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,end:0"
+msgid "Cancel"
+msgstr "Отменить"
+
+msgctxt "wizard_button:ir.model.print_model_graph,init,print:0"
+msgid "Print"
+msgstr "Печать"
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,end:0"
+msgid "Cancel"
+msgstr "Отменить"
+
+msgctxt "wizard_button:ir.module.module.config_wizard,first,wizard:0"
+msgid "Ok"
+msgstr "Да"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,end:0"
+msgid "Cancel"
+msgstr "Отменить"
+
+msgctxt "wizard_button:ir.module.module.install_upgrade,init,start:0"
+msgid "Start Upgrade"
+msgstr "Начать обновление"
+
+#, fuzzy
+msgctxt "wizard_button:ir.module.module.install_upgrade,start,config:0"
+msgid "Ok"
+msgstr "Ок"
+
+msgctxt "wizard_button:ir.translation.clean,init,end:0"
+msgid "Cancel"
+msgstr "Отменить"
+
+msgctxt "wizard_button:ir.translation.clean,init,start:0"
+msgid "Start"
+msgstr "Начать"
+
+msgctxt "wizard_button:ir.translation.clean,start,end:0"
+msgid "Ok"
+msgstr "Да"
+
+msgctxt "wizard_button:ir.translation.export,init,end:0"
+msgid "Cancel"
+msgstr "Отменить"
+
+msgctxt "wizard_button:ir.translation.export,init,start:0"
+msgid "Start Export"
+msgstr "Начать экспорт"
+
+msgctxt "wizard_button:ir.translation.export,start,end:0"
+msgid "Close"
+msgstr "Закрыть"
+
+msgctxt "wizard_button:ir.translation.set_report,init,end:0"
+msgid "Cancel"
+msgstr "Отменить"
+
+msgctxt "wizard_button:ir.translation.set_report,init,start:0"
+msgid "Start Update"
+msgstr "Начать обновление"
+
+msgctxt "wizard_button:ir.translation.set_report,start,end:0"
+msgid "Ok"
+msgstr "Да"
+
+msgctxt "wizard_button:ir.translation.update,init,end:0"
+msgid "Cancel"
+msgstr "Отменить"
+
+msgctxt "wizard_button:ir.translation.update,init,start:0"
+msgid "Start Update"
+msgstr "Начать обновление"
+
+#, fuzzy
+msgctxt "wizard_button:ir.ui.view.show,init,end:0"
+msgid "Close"
+msgstr "Закрыть"
diff --git a/trytond/ir/model.py b/trytond/ir/model.py
index bb36f8d..6ed829f 100644
--- a/trytond/ir/model.py
+++ b/trytond/ir/model.py
@@ -1,13 +1,13 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 import datetime
-import base64
 import re
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.report import Report
 from trytond.wizard import Wizard
 from trytond.transaction import Transaction
 from trytond.cache import Cache
+from trytond.pool import Pool
 IDENTIFIER = re.compile(r'^[a-zA-z_][a-zA-Z0-9_]*$')
 
 
@@ -47,21 +47,24 @@ class Model(ModelSQL, ModelView):
         return True
 
     def create(self, vals):
-        property_obj = self.pool.get('ir.property')
+        pool = Pool()
+        property_obj = pool.get('ir.property')
         res = super(Model, self).create(vals)
         # Restart the cache of models_get
         property_obj.models_get.reset()
         return res
 
     def write(self, ids, vals):
-        property_obj = self.pool.get('ir.property')
+        pool = Pool()
+        property_obj = pool.get('ir.property')
         res = super(Model, self).write(ids, vals)
         # Restart the cache of models_get
         property_obj.models_get.reset()
         return res
 
     def delete(self, ids):
-        property_obj = self.pool.get('ir.property')
+        pool = Pool()
+        property_obj = pool.get('ir.property')
         res = super(Model, self).delete(ids)
         # Restart the cache of models_get
         property_obj.models_get.reset()
@@ -117,7 +120,8 @@ class ModelField(ModelSQL, ModelView):
         return True
 
     def read(self, ids, fields_names=None):
-        translation_obj = self.pool.get('ir.translation')
+        pool = Pool()
+        translation_obj = pool.get('ir.translation')
 
         to_delete = []
         if Transaction().context.get('language'):
@@ -249,8 +253,9 @@ class ModelAccess(ModelSQL, ModelView):
         if Transaction().user == 0:
             return True
 
-        ir_model_obj = self.pool.get('ir.model')
-        user_group_obj = self.pool.get('res.user-res.group')
+        pool = Pool()
+        ir_model_obj = pool.get('ir.model')
+        user_group_obj = pool.get('res.user-res.group')
         cursor = Transaction().cursor
 
         cursor.execute('SELECT MAX(CASE WHEN a.perm_%s THEN 1 ELSE 0 END) '
@@ -258,8 +263,8 @@ class ModelAccess(ModelSQL, ModelView):
                 'JOIN "%s" AS m '
                     'ON (a.model = m.id) '
                 'LEFT JOIN "%s" AS gu '
-                    'ON (gu.gid = a."group") '
-                'WHERE m.model = %%s AND (gu.uid = %%s OR a."group" IS NULL)'
+                    'ON (gu."group" = a."group") '
+                'WHERE m.model = %%s AND (gu."user" = %%s OR a."group" IS NULL)'
                 % (mode, self._table, ir_model_obj._table,
                     user_group_obj._table),
                 (model_name, Transaction().user))
@@ -275,7 +280,8 @@ class ModelAccess(ModelSQL, ModelView):
         res = super(ModelAccess, self).write(ids, vals)
         # Restart the cache
         self.check.reset()
-        for _, model in self.pool.iterobject():
+        pool = Pool()
+        for _, model in pool.iterobject():
             try:
                 model.fields_view_get.reset()
             except Exception:
@@ -286,7 +292,8 @@ class ModelAccess(ModelSQL, ModelView):
         res = super(ModelAccess, self).create(vals)
         # Restart the cache
         self.check.reset()
-        for _, model in self.pool.iterobject():
+        pool = Pool()
+        for _, model in pool.iterobject():
             try:
                 model.fields_view_get.reset()
             except Exception:
@@ -297,7 +304,8 @@ class ModelAccess(ModelSQL, ModelView):
         res = super(ModelAccess, self).delete(ids)
         # Restart the cache
         self.check.reset()
-        for _, model in self.pool.iterobject():
+        pool = Pool()
+        for _, model in pool.iterobject():
             try:
                 model.fields_view_get.reset()
             except Exception:
@@ -359,9 +367,10 @@ class ModelFieldAccess(ModelSQL, ModelView):
                 return dict((x, True) for x in fields)
             return True
 
-        ir_model_obj = self.pool.get('ir.model')
-        ir_model_field_obj = self.pool.get('ir.model.field')
-        user_group_obj = self.pool.get('res.user-res.group')
+        pool = Pool()
+        ir_model_obj = pool.get('ir.model')
+        ir_model_field_obj = pool.get('ir.model.field')
+        user_group_obj = pool.get('res.user-res.group')
 
         cursor = Transaction().cursor
 
@@ -373,8 +382,8 @@ class ModelFieldAccess(ModelSQL, ModelView):
                 'JOIN "%s" AS m '
                     'ON (f.model = m.id) '
                 'LEFT JOIN "%s" AS gu '
-                    'ON (gu.gid = a."group") '
-                'WHERE m.model = %%s AND (gu.uid = %%s OR a."group" IS NULL) '
+                    'ON (gu."group" = a."group") '
+                'WHERE m.model = %%s AND (gu."user" = %%s OR a."group" IS NULL) '
                 'GROUP BY f.name'
                 % (mode, self._table, ir_model_field_obj._table,
                     ir_model_obj._table, user_group_obj._table),
@@ -394,7 +403,8 @@ class ModelFieldAccess(ModelSQL, ModelView):
         res = super(ModelFieldAccess, self).write(ids, vals)
         # Restart the cache
         self.check.reset()
-        for _, model in self.pool.iterobject():
+        pool = Pool()
+        for _, model in pool.iterobject():
             try:
                 model.fields_view_get.reset()
             except Exception:
@@ -405,7 +415,8 @@ class ModelFieldAccess(ModelSQL, ModelView):
         res = super(ModelFieldAccess, self).create(vals)
         # Restart the cache
         self.check.reset()
-        for _, model in self.pool.iterobject():
+        pool = Pool()
+        for _, model in pool.iterobject():
             try:
                 model.fields_view_get.reset()
             except Exception:
@@ -416,7 +427,8 @@ class ModelFieldAccess(ModelSQL, ModelView):
         res = super(ModelFieldAccess, self).delete(ids)
         # Restart the cache
         self.check.reset()
-        for _, model in self.pool.iterobject():
+        pool = Pool()
+        for _, model in pool.iterobject():
             try:
                 model.fields_view_get.reset()
             except Exception:
@@ -525,8 +537,9 @@ class ModelGraph(Report):
 
     def execute(self, ids, datas):
         import pydot
-        model_obj = self.pool.get('ir.model')
-        action_report_obj = self.pool.get('ir.action.report')
+        pool = Pool()
+        model_obj = pool.get('ir.model')
+        action_report_obj = pool.get('ir.action.report')
 
         if not datas['form']['filter']:
             filter = None
@@ -547,7 +560,7 @@ class ModelGraph(Report):
         self.fill_graph(models, graph, level=datas['form']['level'],
                 filter=filter)
         data = graph.create(prog='dot', format='png')
-        return ('png', base64.encodestring(data), False, action_report.name)
+        return ('png', buffer(data), False, action_report.name)
 
     def fill_graph(self, models, graph, level=1, filter=None):
         '''
@@ -560,7 +573,8 @@ class ModelGraph(Report):
             models
         '''
         import pydot
-        model_obj = self.pool.get('ir.model')
+        pool = Pool()
+        model_obj = pool.get('ir.model')
 
         sub_models = set()
         if level > 0:
diff --git a/trytond/ir/model.xml b/trytond/ir/model.xml
index ff43acd..cb2f1c0 100644
--- a/trytond/ir/model.xml
+++ b/trytond/ir/model.xml
@@ -43,10 +43,10 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Model Description">
-                    <field name="name" select="1"/>
-                    <field name="model" select="1"/>
-                    <field name="info" select="2"/>
-                    <field name="module" select="1"/>
+                    <field name="name"/>
+                    <field name="model"/>
+                    <field name="info"/>
+                    <field name="module"/>
                 </tree>
                 ]]>
             </field>
@@ -85,7 +85,7 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="relation"/>
                     <label name="field_description"/>
                     <field name="field_description" colspan="3"/>
-                    <label name="help"/>
+                    <label name="help" yfill="1" xalign="0.0"/>
                     <field name="help" colspan="3"/>
                     <label name="module"/>
                     <field name="module"/>
@@ -99,11 +99,11 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Fields">
-                    <field name="name" select="1"/>
-                    <field name="model" select="1"/>
-                    <field name="ttype" select="2"/>
-                    <field name="relation" select="2"/>
-                    <field name="field_description" select="2"/>
+                    <field name="name"/>
+                    <field name="model"/>
+                    <field name="ttype"/>
+                    <field name="relation"/>
+                    <field name="field_description"/>
                     <field name="module"/>
                 </tree>
                 ]]>
@@ -133,12 +133,12 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Access controls">
-                    <field name="perm_read" select="2"/>
-                    <field name="perm_write" select="2"/>
-                    <field name="perm_create" select="2"/>
-                    <field name="perm_delete" select="2"/>
-                    <field name="model" select="1"/>
-                    <field name="group" select="1"/>
+                    <field name="perm_read"/>
+                    <field name="perm_write"/>
+                    <field name="perm_create"/>
+                    <field name="perm_delete"/>
+                    <field name="model"/>
+                    <field name="group"/>
                 </tree>
                 ]]>
             </field>
@@ -193,10 +193,10 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <tree string="Field Access">
-                    <field name="perm_read" select="2"/>
-                    <field name="perm_write" select="2"/>
-                    <field name="field" select="1"/>
-                    <field name="group" select="1"/>
+                    <field name="perm_read"/>
+                    <field name="perm_write"/>
+                    <field name="field"/>
+                    <field name="group"/>
                 </tree>
                 ]]>
             </field>
@@ -271,7 +271,7 @@ this repository contains the full copyright notices and license terms. -->
         </record>
         <record model="ir.action.keyword" id="print_model_graph_keyword">
             <field name="keyword">form_print</field>
-            <field name="model">ir.model,0</field>
+            <field name="model">ir.model,-1</field>
             <field name="action" ref="print_model_graph"/>
         </record>
 
diff --git a/trytond/ir/module/module.py b/trytond/ir/module/module.py
index 4f3ee3e..59a9967 100644
--- a/trytond/ir/module/module.py
+++ b/trytond/ir/module/module.py
@@ -1,6 +1,5 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import os
 from trytond.model import ModelView, ModelSQL, fields
 import trytond.tools as tools
@@ -97,7 +96,7 @@ class Module(ModelSQL, ModelView):
 
     def on_write(self, ids):
         if not ids:
-            return
+            return []
         res = []
         graph, packages, later = create_graph(get_module_list())
         for module in self.browse(ids):
@@ -216,7 +215,8 @@ class Module(ModelSQL, ModelView):
 
     # update the list of available packages
     def update_list(self):
-        lang_obj = self.pool.get('ir.lang')
+        pool = Pool()
+        lang_obj = pool.get('ir.lang')
         res = 0
         with Transaction().set_context(language=False):
             lang_ids = lang_obj.search([
@@ -313,7 +313,8 @@ class Module(ModelSQL, ModelView):
         return res
 
     def _update_dependencies(self, module, depends=None):
-        dependency_obj = self.pool.get('ir.module.module.dependency')
+        pool = Pool()
+        dependency_obj = pool.get('ir.module.module.dependency')
         dependency_obj.delete([x.id for x in module.dependencies
             if x.name not in depends])
         if depends is None:
@@ -354,7 +355,8 @@ class ModuleDependency(ModelSQL, ModelView):
 
     def get_state(self, ids, name):
         result = {}
-        module_obj = self.pool.get('ir.module.module')
+        pool = Pool()
+        module_obj = pool.get('ir.module.module')
         for dependency in self.browse(ids):
             ids = module_obj.search([
                 ('name', '=', dependency.name),
@@ -442,7 +444,8 @@ class ModuleConfigWizard(Wizard):
         return res
 
     def _action_wizard(self, data):
-        item_obj = self.pool.get('ir.module.module.config_wizard.item')
+        pool = Pool()
+        item_obj = pool.get('ir.module.module.config_wizard.item')
         item_ids = item_obj.search([
             ('state', '=', 'open'),
             ], limit=1)
@@ -458,7 +461,8 @@ class ModuleConfigWizard(Wizard):
         return {}
 
     def _next(self, data):
-        item_obj = self.pool.get('ir.module.module.config_wizard.item')
+        pool = Pool()
+        item_obj = pool.get('ir.module.module.config_wizard.item')
         item_ids = item_obj.search([
             ('state', '=', 'open'),
             ])
@@ -491,7 +495,8 @@ class ModuleInstallUpgrade(Wizard):
     _name = 'ir.module.module.install_upgrade'
 
     def _get_install(self, data):
-        module_obj = self.pool.get('ir.module.module')
+        pool = Pool()
+        module_obj = pool.get('ir.module.module')
         module_ids = module_obj.search([
             ('state', 'in', ['to upgrade', 'to remove', 'to install']),
             ])
@@ -502,9 +507,9 @@ class ModuleInstallUpgrade(Wizard):
         }
 
     def _upgrade_module(self, data):
-        module_obj = self.pool.get('ir.module.module')
-        lang_obj = self.pool.get('ir.lang')
-        dbname = Transaction().cursor.dbname
+        pool = Pool()
+        module_obj = pool.get('ir.module.module')
+        lang_obj = pool.get('ir.lang')
         with Transaction().new_cursor() as transaction:
             module_ids = module_obj.search([
                 ('state', 'in', ['to upgrade', 'to remove', 'to install']),
@@ -515,7 +520,6 @@ class ModuleInstallUpgrade(Wizard):
             lang = [x.code for x in lang_obj.browse(lang_ids)]
             transaction.cursor.commit()
         if module_ids:
-            pool = Pool(dbname)
             pool.init(update=True, lang=lang)
             new_wizard = pool.get('ir.module.module.install_upgrade',
                     type='wizard')
@@ -542,17 +546,10 @@ class ModuleInstallUpgrade(Wizard):
                 'type': 'form',
                 'object': 'ir.module.module.install_upgrade.start',
                 'state': [
-                    ('menu', 'Ok', 'tryton-ok', True),
+                    ('config', 'Ok', 'tryton-ok', True),
                 ],
             },
         },
-        'menu': {
-            'result': {
-                'type': 'action',
-                'action': '_menu',
-                'state': 'config',
-            },
-        },
         'config': {
             'result': {
                 'type': 'action',
@@ -562,13 +559,6 @@ class ModuleInstallUpgrade(Wizard):
         },
     }
 
-    def _menu(self, data):
-        model_data_obj = self.pool.get('ir.model.data')
-        act_window_obj = self.pool.get('ir.action.act_window')
-        act_window_id = model_data_obj.get_id('ir', 'act_menu_tree')
-        res = act_window_obj.read(act_window_id)
-        return res
-
     def _config(self, data):
         return {
                 'type': 'ir.action.wizard',
@@ -592,8 +582,9 @@ class ModuleConfig(Wizard):
     }
 
     def _action_open(self, datas):
-        model_data_obj = self.pool.get('ir.model.data')
-        act_window_obj = self.pool.get('ir.action.act_window')
+        pool = Pool()
+        model_data_obj = pool.get('ir.model.data')
+        act_window_obj = pool.get('ir.action.act_window')
         act_window_id = model_data_obj.get_id('ir', 'act_module_form')
         res = act_window_obj.read(act_window_id)
         return res
diff --git a/trytond/ir/module/module.xml b/trytond/ir/module/module.xml
index b55964f..d8bcca6 100644
--- a/trytond/ir/module/module.xml
+++ b/trytond/ir/module/module.xml
@@ -61,13 +61,13 @@ this repository contains the full copyright notices and license terms. -->
               <![CDATA[
                 <tree string="Modules" on_write="on_write"
                     colors="If(In(Eval('state', ''), ['to upgrade', 'to install']), 'blue', If(Equal(Eval('state', ''), 'uninstalled'), 'grey', 'black'))">
-                    <field name="name" select="1"/>
-                    <field name="shortdesc" select="1"/>
-                    <field name="author" select="2"/>
+                    <field name="name"/>
+                    <field name="shortdesc"/>
+                    <field name="author"/>
                     <field name="version"/>
-                    <field name="website" select="2"/>
-                    <field name="state" select="1"/>
-                    <field name="description" tree_invisible="1" select="2"/>
+                    <field name="website"/>
+                    <field name="state"/>
+                    <field name="description" tree_invisible="1"/>
                 </tree>
               ]]>
             </field>
@@ -99,9 +99,9 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <tree string="Config Wizard Items" editable="bottom">
-                    <field name="name" select="1"/>
+                    <field name="name"/>
                     <field name="sequence"/>
-                    <field name="state" select="1"/>
+                    <field name="state"/>
                 </tree>
                 ]]>
             </field>
@@ -127,7 +127,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.keyword" id="act_module_config_wizard_keyword">
             <field name="action" ref="act_module_config_wizard"/>
             <field name="keyword">form_action</field>
-            <field name="model">ir.module.module.config_wizard.item,0</field>
+            <field name="model">ir.module.module.config_wizard.item,-1</field>
         </record>
 
 
@@ -137,13 +137,11 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <form string="Welcome to the module configuration wizard!" col="2">
-                    <image name="tryton-dialog-information"/>
-                    <group col="1" id="labels">
-                        <label string="You will be able to configure your installation"
-                            align="0.0" id="configure"/>
-                        <label string="depending on the modules you have installed."
-                            align="0.0" id="depending"/>
-                    </group>
+                    <image name="tryton-dialog-information" xexpand="0"
+                        xfill="0"/>
+                    <label string="You will be able to configure your installation depending on the modules you have installed."
+                        id="configure"
+                        yalign="0.0" xalign="0.0" xexpand="1"/>
                 </form>
                 ]]>
             </field>
@@ -156,7 +154,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.keyword" id="act_module_install_upgrade_keyword1">
             <field name="action" ref="act_module_install_upgrade"/>
             <field name="keyword">form_action</field>
-            <field name="model">ir.module.module,0</field>
+            <field name="model">ir.module.module,-1</field>
         </record>
 
         <record model="ir.ui.view" id="module_install_upgrade_init_view_form">
@@ -165,17 +163,17 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <form string="System Upgrade" col="2">
-                    <image name="tryton-dialog-information"/>
-                    <group col="4" id="labels">
-                        <label align="0.0"
-                            string="Your system will be upgraded."
-                            colspan="4" id="upgraded"/>
-                        <label align="0.0"
-                            string="Note that this operation my take a few minutes."
-                            colspan="4" id="operation"/>
-                        <separator name="module_info"/>
-                        <field name="module_info" colspan="4"/>
+                    <image name="tryton-dialog-information" xexpand="0"
+                        xfill="0"/>
+                    <group col="1" id="labels">
+                        <label string="Your system will be upgraded." id="upgraded"
+                            yalign="0.0" xalign="0.0" xexpand="1"/>
+                        <label string="Note that this operation my take a few minutes."
+                            id="operation"
+                            yalign="0.0" xalign="0.0" xexpand="1"/>
                     </group>
+                    <separator name="module_info" colspan="2"/>
+                    <field name="module_info" colspan="2"/>
                 </form>
                 ]]>
             </field>
@@ -186,10 +184,11 @@ this repository contains the full copyright notices and license terms. -->
             <field name="type">form</field>
             <field name="arch" type="xml">
                 <![CDATA[
-                <form string="System upgrade done" col="1">
-                    <label align="0.0"
-                        string="The modules have been upgraded / installed !"
-                        id="modules"/>
+                <form string="System upgrade done" col="2">
+                    <image name="tryton-dialog-information" xexpand="0" xfill="0"/>
+                    <label string="The modules have been upgraded / installed !"
+                        id="modules"
+                        yalign="0.0" xalign="0.0" xexpand="1"/>
                 </form>
                 ]]>
             </field>
diff --git a/trytond/ir/nl_NL.csv b/trytond/ir/nl_NL.csv
deleted file mode 100644
index f005f57..0000000
--- a/trytond/ir/nl_NL.csv
+++ /dev/null
@@ -1,679 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,access_error,0,"You try to bypass an access rule!
-(Document type: %s)","U probeert een toegangsregel te omzeilen!
-(Document type: %s)",0
-error,delete_workflow_record,0,You cannot delete a record with a running workflow.,U kunt een item in een actieve werkgang niet verwijderen.,0
-error,delete_xml_record,0,You are not allowed to delete this record.,Het is u niet toegestaan dit item te verwijderen.,0
-error,digits_validation_record,0,"The field ""%s"" on ""%s"" has too many decimal digits.","Het veld ""%s"" in ""%s"" heeft te veel decimalen.",0
-error,domain_validation_record,0,"The value of the field ""%s"" on ""%s"" is not valid according to its domain.","De waarde van het veld ""%s"" in ""%s"" is niet geldig binnen zijn domein.",0
-error,foreign_model_exist,0,"Could not delete ""%s"" records because they are used on field ""%s"" of ""%s"".","Kon items ""%s"" niet verwijderen omdat ze in gebruik waren in veld ""%s"" van ""%s"".",0
-error,foreign_model_missing,0,"The value of field ""%s"" on ""%s"" doesn't exist.","De waarde van veld ""%s"" in ""%s"" bestaat niet.",0
-error,ir.action.act_window,0,Invalid context!,Ongeldig verband!,0
-error,ir.action.act_window,0,Invalid domain!,Ongeldig domein!,0
-error,ir.action.act_window,0,Invalid search criteria!,Ongeldig zoek argument!,0
-error,ir.action.keyword,0,Wrong wizard model!,Verkeerde assistent model!,0
-error,ir.action.report,0,The internal name must be unique by module!,De interne naam moet uniek zijn per module!,0
-error,ir.attachment,0,The  names of attachments must be unique by resource!,De namen van de bijlagen moeten uniek zijn per bron!,0
-error,ir.cron,0,Scheduled action failed,Geplande actie mislukt,0
-error,ir.cron,0,"The following action failed to execute properly: ""%s""
- Traceback: 
-
-%s
-","Deze aktie is niet goed uitgevoerd: ""%s""
-Spoor:
-
-%s",0
-error,ir.lang,0,Invalid Grouping!,Ongeldigegroep,0
-error,ir.lang,0,The date format is not valid!,Datum samenstelling is niet geldig!,0
-error,ir.lang,0,decimal_point and thousands_sep must be different!,Decimaal teken en duizendtal teken moet verschillend zijn!,0
-error,ir.model,0,Module Name must be a python identifier!,Module naam moet een python variabele zijn!,0
-error,ir.model,0,The model must be unique!,Het model moet uniek zijn!,0
-error,ir.model.access,0,Only one record by model and group is allowed!,Slechts één item per model en groep is toegestaan!,0
-error,ir.model.access,0,You can not create this kind of document! (%s),U kunt dit type document niet aanmaken! (%s),0
-error,ir.model.access,0,You can not delete this document! (%s),U kunt dit document niet verwijderen! (%s),0
-error,ir.model.access,0,You can not read this document! (%s),U kunt dit document openen! (%s),0
-error,ir.model.access,0,You can not write in this document! (%s),U kunt dit document niet muteren! (%s),0
-error,ir.model.data,0,"The triple (fs_id, module, model) must be unique!","Het drietal (fs_id, module, model) moet uniek zijn!",0
-error,ir.model.field,0,Model Field Name must be a python identifier!,Model veldnaam moet een python variabele zijn!,0
-error,ir.model.field,0,The field name in model must be unique!,De veldnaam in het model moet uniek zijn!,0
-error,ir.module.module,0,"Missing dependencies %s for module ""%s""","Afhankelijkheid %s ontbreekt voor module ""%s""",0
-error,ir.module.module,0,The modules you are trying to uninstall depends on installed modules:,De module die u wilt verwijderen is afhankelijk van geïnstalleerde modules:,0
-error,ir.module.module,0,The name of the module must be unique!,De naam van de module moet uniek zijn!,0
-error,ir.module.module,0,You can not remove a module that is installed or will be installed,U kunt een module niet verwijderen als die geïnstalleerd is of wordt.,0
-error,ir.module.module.dependency,0,Dependency must be unique by module!,Afhankelijkheid moet uniek zijn per module!,0
-error,ir.rule.group,0,Global and Default are mutually exclusive!,Globaal en standaard sluiten elkaar uit!,0
-error,ir.sequence,0,Invalid prefix/suffix!,Ongeldig voorvoegsel / toevoeging,0
-error,ir.sequence,0,Last Timestamp could not be in future!,Laatste tijdmarkering kan niet in de toekomst zijn!,0
-error,ir.sequence,0,Missing sequence!,Reeks ontbreekt!,0
-error,ir.sequence.strict,0,Invalid prefix/suffix!,Ongeldig voorvoegsel / toevoeging,0
-error,ir.sequence.strict,0,Last Timestamp could not be in future!,Laatste tijdmarkering kan niet in de toekomst zijn!,0
-error,ir.sequence.strict,0,Missing sequence!,Reeks ontbreekt!,0
-error,ir.translation,0,Translation must be unique,Vertaling moet uniek zijn!,0
-error,ir.translation,0,Translation of type 'model' must be unique!,Vertaling van type 'model' moet uniek zijn!,0
-error,ir.trigger,0,"""On Time"" and others are mutually exclusive!","""Op tijd"" en anderen sluiten elkaar uit!",0
-error,ir.trigger,0,Condition must be a python expression!,Voorwaarde moet een python formule zijn!,0
-error,ir.ui.view,0,Invalid XML for View!,Ongeldig XML code in aanzicht!,0
-error,not_found_in_selection,0,Key %r not found in selection field %r,Sleutel %r niet gevonden in selectie veld %r,0
-error,read_error,0,"You try to read records that don't exist anymore!
-(Document type: %s)","U probeert items te lezen die niet meer bestaan!
-(Document type: %s)",0
-error,reference_syntax_error,0,Syntax error for reference %r in %s,Foutieve verwijzing voor %r in %s,0
-error,relation_not_found,0,Relation not found: %r in %s,Relatie niet gevonden: %r in %s,0
-error,required_field,0,"The field ""%s"" on ""%s"" is required.","Het veld ""%s"" in ""%s"" is vereist.",0
-error,required_validation_record,0,"The field ""%s"" on ""%s"" is required.","Het veld ""%s"" in ""%s"" is vereist.",0
-error,search_function_missing,0,"Missing search function on field ""%s"".","Zoekfunctie ontbreekt voor veld "" %s"".",0
-error,size_validation_record,0,"The field ""%s"" on ""%s"" is too long.","Veld ""%s"" op ""%s"" is te lang.",0
-error,too_many_relations_found,0,Too many relations found: %r in %s,Te veel relaties gevonden: %r in %s,0
-error,write_error,0,"You try to write on records that don't exist anymore!
-(Document type: %s)","U probeert items te muteren die niet meer bestaan!
-(Document type: %s)",0
-error,write_xml_record,0,You are not allowed to modify this record.,Het is u niet toegestaan dit item te muteren.,0
-error,xml_id_syntax_error,0,Syntax error for XML id %r in %s,Foutieve verwijzing voor XML id %r in %s,0
-error,xml_record_desc,0,This record is part of the base configuration.,Dit item is onderdeel van de basis configuratie.,0
-field,"ir.action,active",0,Active,Actief,0
-field,"ir.action,groups",0,Groups,Groepen,0
-field,"ir.action,keywords",0,Keywords,Trefwoorden,0
-field,"ir.action,name",0,Name,Naam,0
-field,"ir.action,rec_name",0,Name,Naam,0
-field,"ir.action,type",0,Type,Type,0
-field,"ir.action,usage",0,Usage,Gebruik,0
-field,"ir.action.act_window,act_window_views",0,Views,Aanzichten,0
-field,"ir.action.act_window,action",0,Action,Actie,0
-field,"ir.action.act_window,auto_refresh",0,Auto-Refresh,Automatisch verversen,0
-field,"ir.action.act_window,context",0,Context Value,Samenhang waarde,0
-field,"ir.action.act_window,domain",0,Domain Value,Domein waarde,0
-field,"ir.action.act_window,limit",0,Limit,Begrenzing,0
-field,"ir.action.act_window,pyson_context",0,PySON Context,PySON verband,0
-field,"ir.action.act_window,pyson_domain",0,PySON Domain,PySON domein,0
-field,"ir.action.act_window,pyson_search_value",0,PySON Search Criteria,PySON zoekargument,0
-field,"ir.action.act_window,rec_name",0,Name,Naam,0
-field,"ir.action.act_window,res_model",0,Model,Model,0
-field,"ir.action.act_window,search_value",0,Search Criteria,Zoekargumenten,0
-field,"ir.action.act_window,view_type",0,Type of view,Type aanzicht,0
-field,"ir.action.act_window,views",0,Views,Aanzichten,0
-field,"ir.action.act_window,window_name",0,Window Name,Aanzicht naam,0
-field,"ir.action.act_window.view,act_window",0,Action,Actie,0
-field,"ir.action.act_window.view,rec_name",0,Name,Naam,0
-field,"ir.action.act_window.view,sequence",0,Sequence,Reeks,0
-field,"ir.action.act_window.view,view",0,View,Overzicht,0
-field,"ir.action.keyword,action",0,Action,Actie,0
-field,"ir.action.keyword,keyword",0,Keyword,Trefwoord,0
-field,"ir.action.keyword,model",0,Model,Model,0
-field,"ir.action.keyword,rec_name",0,Name,Naam,0
-field,"ir.action.report,action",0,Action,Actie,0
-field,"ir.action.report,direct_print",0,Direct Print,Direct afdrukken,0
-field,"ir.action.report,email",0,Email,E-mail,0
-field,"ir.action.report,extension",0,Extension,Uitbreiding,0
-field,"ir.action.report,model",0,Model,Model,0
-field,"ir.action.report,module",0,Module,Module,0
-field,"ir.action.report,rec_name",0,Name,Naam,0
-field,"ir.action.report,report",0,Path,Pad,0
-field,"ir.action.report,report_content",0,Content,Inhoud,0
-field,"ir.action.report,report_content_data",0,Content,Inhoud,0
-field,"ir.action.report,report_name",0,Internal Name,Interne naam,0
-field,"ir.action.report,style",0,Style,Stijl,0
-field,"ir.action.report,style_content",0,Style,Stijl,0
-field,"ir.action.url,action",0,Action,Actie,0
-field,"ir.action.url,rec_name",0,Name,Naam,0
-field,"ir.action.url,url",0,Action Url,Actie URL,0
-field,"ir.action.wizard,action",0,Action,Actie,0
-field,"ir.action.wizard,email",0,Email,E-mail,0
-field,"ir.action.wizard,model",0,Model,Model,0
-field,"ir.action.wizard,rec_name",0,Name,Naam,0
-field,"ir.action.wizard,window",0,Window,Scherm,0
-field,"ir.action.wizard,wiz_name",0,Wizard name,Assistent naam,0
-field,"ir.action.wizard_size,height",0,Height,Hoogte,0
-field,"ir.action.wizard_size,model",0,Model,Model,0
-field,"ir.action.wizard_size,rec_name",0,Name,Naam,0
-field,"ir.action.wizard_size,user",0,User,Gebruiker,0
-field,"ir.action.wizard_size,width",0,Width,Breedte,0
-field,"ir.action.wizard_size,wizard",0,Wizard,Assistent,0
-field,"ir.attachment,collision",0,Collision,Botsing,0
-field,"ir.attachment,datas",0,Datas,Gegevens,0
-field,"ir.attachment,datas_size",0,Datas size,Gegevens grote,0
-field,"ir.attachment,description",0,Description,Omschrijving,0
-field,"ir.attachment,digest",0,Digest,Verwerken,0
-field,"ir.attachment,link",0,Link,Verbinding,0
-field,"ir.attachment,name",0,Attachment Name,Naam bijlage,0
-field,"ir.attachment,rec_name",0,Name,Naam,0
-field,"ir.attachment,resource",0,Resource,Middel,0
-field,"ir.cache,name",0,Name,Naam,0
-field,"ir.cache,rec_name",0,Name,Naam,0
-field,"ir.cache,timestamp",0,Timestamp,Tijdmarkering,0
-field,"ir.cron,active",0,Active,Actief,0
-field,"ir.cron,args",0,Arguments,Argumenten,0
-field,"ir.cron,doall",0,Repeat missed,Herhaal gemiste,0
-field,"ir.cron,function",0,Function,Functie,0
-field,"ir.cron,interval_number",0,Interval Number,Interval nummer,0
-field,"ir.cron,interval_type",0,Interval Unit,Interval eenheid,0
-field,"ir.cron,model",0,Model,Model,0
-field,"ir.cron,name",0,Name,Naam,0
-field,"ir.cron,nextcall",0,Next call date,Volgende datum uitvoering,0
-field,"ir.cron,numbercall",0,Number of calls,Aantal aanroepen,0
-field,"ir.cron,priority",0,Priority,Prioriteit,0
-field,"ir.cron,rec_name",0,Name,Naam,0
-field,"ir.cron,request_user",0,Request User,Verzoek gebruiker,0
-field,"ir.cron,running",0,Running,Bezig,0
-field,"ir.cron,user",0,Execution User,Uitvoerende gebruiker,0
-field,"ir.default,clause",0,Clause,Clausule,0
-field,"ir.default,field",0,Field,Veld,0
-field,"ir.default,model",0,Model,Model,0
-field,"ir.default,rec_name",0,Name,Naam,0
-field,"ir.default,user",0,User,Gebruiker,0
-field,"ir.default,value",0,Value,Waarde,0
-field,"ir.export,export_fields",0,Fields,Velden,0
-field,"ir.export,name",0,Name,Naam,0
-field,"ir.export,rec_name",0,Name,Naam,0
-field,"ir.export,resource",0,Resource,Middel,0
-field,"ir.export.line,export",0,Export,Exporteren,0
-field,"ir.export.line,name",0,Name,Naam,0
-field,"ir.export.line,rec_name",0,Name,Naam,0
-field,"ir.lang,active",0,Active,Actief,0
-field,"ir.lang,code",0,Code,Code,0
-field,"ir.lang,date",0,Date,Datum,0
-field,"ir.lang,decimal_point",0,Decimal Separator,Decimaalteken,0
-field,"ir.lang,direction",0,Direction,Richting,0
-field,"ir.lang,grouping",0,Grouping,Groeperen,0
-field,"ir.lang,name",0,Name,Naam,0
-field,"ir.lang,rec_name",0,Name,Naam,0
-field,"ir.lang,thousands_sep",0,Thousands Separator,Duizendtal teken,0
-field,"ir.lang,translatable",0,Translatable,Vertaalbaar,0
-field,"ir.model,fields",0,Fields,Velden,0
-field,"ir.model,info",0,Information,Informatie,0
-field,"ir.model,model",0,Model Name,Naam module,0
-field,"ir.model,module",0,Module,Module,0
-field,"ir.model,name",0,Model Description,Model omschrijving,0
-field,"ir.model,rec_name",0,Name,Naam,0
-field,"ir.model.access,description",0,Description,Omschrijving,0
-field,"ir.model.access,group",0,Group,Groep,0
-field,"ir.model.access,model",0,Model,Model,0
-field,"ir.model.access,perm_create",0,Create Access,Mag aanmaken,0
-field,"ir.model.access,perm_delete",0,Delete Access,Toegang verwijderen,0
-field,"ir.model.access,perm_read",0,Read Access,Leesrecht,0
-field,"ir.model.access,perm_write",0,Write Access,Schrijfrecht,0
-field,"ir.model.access,rec_name",0,Name,Naam,0
-field,"ir.model.data,date_init",0,Init Date,Datum aanmaken,0
-field,"ir.model.data,date_update",0,Update Date,Datum bijgewerkt,0
-field,"ir.model.data,db_id",0,Resource ID,Middel ID,0
-field,"ir.model.data,fs_id",0,Identifier on File System,Kenmerk voor bestandssysteem,0
-field,"ir.model.data,inherit",0,Inherit,Erven,0
-field,"ir.model.data,model",0,Model,Model,0
-field,"ir.model.data,module",0,Module,Module,0
-field,"ir.model.data,noupdate",0,No Update,Niet bij te werken,0
-field,"ir.model.data,rec_name",0,Name,Naam,0
-field,"ir.model.data,values",0,Values,Waarden,0
-field,"ir.model.field,field_description",0,Field Description,Veld omschrijving,0
-field,"ir.model.field,groups",0,Groups,Groepen,0
-field,"ir.model.field,help",0,Help,Help,0
-field,"ir.model.field,model",0,Model,Model,0
-field,"ir.model.field,module",0,Module,Module,0
-field,"ir.model.field,name",0,Name,Naam,0
-field,"ir.model.field,rec_name",0,Name,Naam,0
-field,"ir.model.field,relation",0,Model Relation,Model relatie,0
-field,"ir.model.field,ttype",0,Field Type,Veld type,0
-field,"ir.model.print_model_graph.init,filter",0,Filter,Filter,0
-field,"ir.model.print_model_graph.init,level",0,Level,Niveau,0
-field,"ir.module.module,author",0,Author,Auteur,0
-field,"ir.module.module,dependencies",0,Dependencies,Afhankelijkheden,0
-field,"ir.module.module,description",0,Description,Omschrijving,0
-field,"ir.module.module,name",0,Name,Naam,0
-field,"ir.module.module,rec_name",0,Name,Naam,0
-field,"ir.module.module,shortdesc",0,Short description,Korte omschrijving,0
-field,"ir.module.module,state",0,State,Status,0
-field,"ir.module.module,version",0,Version,Versie,0
-field,"ir.module.module,website",0,Website,Website,0
-field,"ir.module.module.config_wizard.item,name",0,Name,Naam,0
-field,"ir.module.module.config_wizard.item,rec_name",0,Name,Naam,0
-field,"ir.module.module.config_wizard.item,sequence",0,Sequence,Reeks,0
-field,"ir.module.module.config_wizard.item,state",0,State,Status,0
-field,"ir.module.module.dependency,module",0,Module,Module,0
-field,"ir.module.module.dependency,name",0,Name,Naam,0
-field,"ir.module.module.dependency,rec_name",0,Name,Naam,0
-field,"ir.module.module.dependency,state",0,State,Status,0
-field,"ir.module.module.install_upgrade.init,module_info",0,Modules to update,Modules om bij te werken,0
-field,"ir.property,field",0,Field,Veld,0
-field,"ir.property,name",0,Name,Naam,0
-field,"ir.property,rec_name",0,Name,Naam,0
-field,"ir.property,res",0,Resource,Middel,0
-field,"ir.property,value",0,Value,Waarde,0
-field,"ir.rule,field",0,Field,Veld,0
-field,"ir.rule,operand",0,Operand,Invoerwaarde,0
-field,"ir.rule,operator",0,Operator,Bewerker,0
-field,"ir.rule,rec_name",0,Name,Naam,0
-field,"ir.rule,rule_group",0,Group,Groep,0
-field,"ir.rule.group,default_p",0,Default,Standaard,0
-field,"ir.rule.group,global_p",0,Global,Globaal,0
-field,"ir.rule.group,groups",0,Groups,Groepen,0
-field,"ir.rule.group,model",0,Model,Model,0
-field,"ir.rule.group,name",0,Name,Naam,0
-field,"ir.rule.group,perm_create",0,Create Access,Mag aanmaken,0
-field,"ir.rule.group,perm_delete",0,Delete Access,Toegang verwijderen,0
-field,"ir.rule.group,perm_read",0,Read Access,Leesrecht,0
-field,"ir.rule.group,perm_write",0,Write Access,Schrijfrecht,0
-field,"ir.rule.group,rec_name",0,Name,Naam,0
-field,"ir.rule.group,rules",0,Tests,Testen,0
-field,"ir.rule.group,users",0,Users,Gebruikers,0
-field,"ir.sequence,active",0,Active,Actief,0
-field,"ir.sequence,code",0,Sequence Code,Reeks code,0
-field,"ir.sequence,last_timestamp",0,Last Timestamp,Laatste tijdmarkering,0
-field,"ir.sequence,name",0,Sequence Name,Reeks naam,0
-field,"ir.sequence,number_increment",0,Increment Number,Oplopende stap,0
-field,"ir.sequence,number_next",0,Next Number,Volgende nummer,0
-field,"ir.sequence,padding",0,Number padding,Voorloopnullen,0
-field,"ir.sequence,prefix",0,Prefix,Voorvoegsel,0
-field,"ir.sequence,rec_name",0,Name,Naam,0
-field,"ir.sequence,suffix",0,Suffix,Toevoeging,0
-field,"ir.sequence,timestamp_offset",0,Timestamp Offset,Tijdmarkering verschuiving,0
-field,"ir.sequence,timestamp_rounding",0,Timestamp Rounding,Tijdmarkering afronding,0
-field,"ir.sequence,type",0,Type,Type,0
-field,"ir.sequence.strict,active",0,Active,Actief,0
-field,"ir.sequence.strict,code",0,Sequence Code,Reeks code,0
-field,"ir.sequence.strict,last_timestamp",0,Last Timestamp,Laatste tijdmarkering,0
-field,"ir.sequence.strict,name",0,Sequence Name,Reeks naam,0
-field,"ir.sequence.strict,number_increment",0,Increment Number,Oplopende stap,0
-field,"ir.sequence.strict,number_next",0,Next Number,Volgende nummer,0
-field,"ir.sequence.strict,padding",0,Number padding,Voorloopnullen,0
-field,"ir.sequence.strict,prefix",0,Prefix,Voorvoegsel,0
-field,"ir.sequence.strict,rec_name",0,Name,Naam,0
-field,"ir.sequence.strict,suffix",0,Suffix,Toevoeging,0
-field,"ir.sequence.strict,timestamp_offset",0,Timestamp Offset,Tijdmarkering verschuiving,0
-field,"ir.sequence.strict,timestamp_rounding",0,Timestamp Rounding,Tijdmarkering afronding,0
-field,"ir.sequence.strict,type",0,Type,Type,0
-field,"ir.sequence.type,code",0,Sequence Code,Reeks code,0
-field,"ir.sequence.type,name",0,Sequence Name,Reeks naam,0
-field,"ir.sequence.type,rec_name",0,Name,Naam,0
-field,"ir.translation,fuzzy",0,Fuzzy,Onzeker,0
-field,"ir.translation,lang",0,Language,Taal,0
-field,"ir.translation,model",0,Model,Model,0
-field,"ir.translation,module",0,Module,Module,0
-field,"ir.translation,name",0,Field Name,Veldnaam,0
-field,"ir.translation,rec_name",0,Name,Naam,0
-field,"ir.translation,res_id",0,Resource ID,Middel ID,0
-field,"ir.translation,src",0,Source,Bron,0
-field,"ir.translation,type",0,Type,Type,0
-field,"ir.translation,value",0,Translation Value,Vertaling,0
-field,"ir.translation.export.init,lang",0,Language,Taal,0
-field,"ir.translation.export.init,module",0,Module,Module,0
-field,"ir.translation.export.start,file",0,File,Bestand,0
-field,"ir.translation.update.init,lang",0,Language,Taal,0
-field,"ir.trigger,action_function",0,Action Function,Actiefunctie,0
-field,"ir.trigger,action_model",0,Action Model,Actie model,0
-field,"ir.trigger,active",0,Active,Actief,0
-field,"ir.trigger,condition",0,Condition,Voorwaarde,0
-field,"ir.trigger,limit_number",0,Limit Number,Begrenzing nummer,0
-field,"ir.trigger,minimum_delay",0,Minimum Delay,Minimum vertraging,0
-field,"ir.trigger,model",0,Model,Model,0
-field,"ir.trigger,name",0,Name,Naam,0
-field,"ir.trigger,on_create",0,On Create,Bij aanmaken,0
-field,"ir.trigger,on_delete",0,On Delete,Bij verwijderen,0
-field,"ir.trigger,on_time",0,On Time,Op tijd,0
-field,"ir.trigger,on_write",0,On Write,Bij muteren,0
-field,"ir.trigger,rec_name",0,Name,Naam,0
-field,"ir.trigger.log,rec_name",0,Name,Naam,0
-field,"ir.trigger.log,record_id",0,Record ID,Item ID,0
-field,"ir.trigger.log,trigger",0,Trigger,Starter,0
-field,"ir.ui.menu,action",0,Action,Actie,0
-field,"ir.ui.menu,active",0,Active,Actief,0
-field,"ir.ui.menu,childs",0,Children,Onderliggende niveaus,0
-field,"ir.ui.menu,complete_name",0,Complete Name,Volledige naam,0
-field,"ir.ui.menu,groups",0,Groups,Groepen,0
-field,"ir.ui.menu,icon",0,Icon,Icoon,0
-field,"ir.ui.menu,name",0,Menu,Menu,0
-field,"ir.ui.menu,parent",0,Parent Menu,Hoofdmenu,0
-field,"ir.ui.menu,rec_name",0,Name,Naam,0
-field,"ir.ui.menu,sequence",0,Sequence,Reeks,0
-field,"ir.ui.view,arch",0,View Architecture,Bekijk opbouw,0
-field,"ir.ui.view,domain",0,Domain,Domein,0
-field,"ir.ui.view,field_childs",0,Children Field,Veld onderliggende niveaus,0
-field,"ir.ui.view,inherit",0,Inherited View,Aanzicht overnemen,0
-field,"ir.ui.view,model",0,Model,Model,0
-field,"ir.ui.view,module",0,Module,Module,0
-field,"ir.ui.view,priority",0,Priority,Prioriteit,0
-field,"ir.ui.view,rec_name",0,Name,Naam,0
-field,"ir.ui.view,type",0,View Type,Aanzicht type,0
-field,"ir.ui.view_sc,name",0,Shortcut Name,Sneltoets naam,0
-field,"ir.ui.view_sc,rec_name",0,Name,Naam,0
-field,"ir.ui.view_sc,res_id",0,Resource Ref.,Middelreferentie,0
-field,"ir.ui.view_sc,resource",0,Resource Name,Middelnaam,0
-field,"ir.ui.view_sc,sequence",0,Sequence,Reeks,0
-field,"ir.ui.view_sc,user_id",0,User Ref.,Referentie gebruiker,0
-field,"ir.ui.view_tree_width,field",0,Field,Veld,0
-field,"ir.ui.view_tree_width,model",0,Model,Model,0
-field,"ir.ui.view_tree_width,rec_name",0,Name,Naam,0
-field,"ir.ui.view_tree_width,user",0,User,Gebruiker,0
-field,"ir.ui.view_tree_width,width",0,Width,Breedte,0
-help,"ir.action.act_window,auto_refresh",0,Add an auto-refresh on the view,Voegt automatisch verversen toe,0
-help,"ir.action.act_window,limit",0,Default limit for the list view,Standaard begrenzing voor dit aanzicht,0
-help,"ir.action.act_window,search_value",0,Default search criteria for the list view,Standaard zoekopdracht voor lijst,0
-help,"ir.action.act_window,window_name",0,Use the action name as window name,Gebruik de naam van de actie als schermnaam,0
-help,"ir.action.report,style",0,Define the style to apply on the report.,Definieer de toe te passen stijl voor dit verslag.,0
-help,"ir.action.wizard,window",0,Run wizard in a new window,Start assistent in nieuw venster,0
-help,"ir.cron,numbercall",0,"Number of times the function is called,
-a negative number indicates that the function will always be called","Aantal keren dat deze functie zal worden aangeroepen,
-een negatief getal betekend dat deze functie altijd wordt aangeroepen.",0
-help,"ir.cron,priority",0,"0=Very Urgent
-10=Not urgent","0=erg urgent
-10=niet urgent",0
-help,"ir.cron,request_user",0,The user who will receive requests in case of failure,De gebruiker die de verzoeken krijgt in geval van falen,0
-help,"ir.cron,user",0,The user used to execute this action,De gebruiker die gebruikt wordt voor deze actie,0
-help,"ir.lang,code",0,RFC 4646 tag: http://tools.ietf.org/html/rfc4646,,0
-help,"ir.model,module",0,Module in which this model is defined,Module waarin dit veld is gedefinieerd,0
-help,"ir.model.data,db_id",0,The id of the record in the database.,Het ID van het item in de database.,0
-help,"ir.model.data,fs_id",0,The id of the record as known on the file system.,Het ID van het item zoals bekend in het bestandssysteem.,0
-help,"ir.model.field,module",0,Module in which this field is defined,Module waarin dit veld is gedefinieerd,0
-help,"ir.model.print_model_graph.init,filter",0,Entering a Python Regular Expression will exclude matching models from the graph.,Invoering van een geldige Python formule zal overeenkomende modellen uitsluiten van de grafiek.,0
-help,"ir.rule.group,default_p",0,Add this rule to all users by default,Voeg deze regel standaard toe bij alle gebruikers,0
-help,"ir.rule.group,global_p",0,"Make the rule global 
-so every users must follow this rule",Maak de regel globaal,0
-help,"ir.rule.group,rules",0,The rule is satisfied if at least one test is True,De regel is waar als tenminste aan één voorwaarde wordt voldaan,0
-help,"ir.trigger,condition",0,"A Python statement evaluated with record represented by ""self""
-It triggers the action if true.","Een Python uitdrukking gekoppeld aan item ""self""
-Het start de actie als het waar is.",0
-help,"ir.trigger,limit_number",0,"Limit the number of call to ""Action Function"" by records.
-0 for no limit.","Beperk het aantal aanroepen van ""Uitvoerende functie"" door items.
-Gebruik 0 voor geen beperking.",0
-help,"ir.trigger,minimum_delay",0,"Set a minimu delay in minutes between call to ""Action Function"" for the same record.
-0 for no delay.","Stelt de minimum vertraging in tussen afzonderlijke aanroepen van ""Uitvoerende functie"" door hetzelfde item.
-Gebruik 0 voor geen vertraging.",0
-model,"ir.action,name",0,Action,Actie,0
-model,"ir.action,name",act_action_act_window_form,Window Actions,Schermacties,0
-model,"ir.action,name",act_action_form,Actions,Acties,0
-model,"ir.action,name",act_action_report_form,Reports,Rapportage,0
-model,"ir.action,name",act_action_url_form,URLs,"URL's
-",0
-model,"ir.action,name",act_action_wizard_form,Wizards,Assistenten,0
-model,"ir.action,name",act_action_wizard_size_form,Wizard Sizes,Assistent groten,0
-model,"ir.action,name",act_attachment_form,Attachments,Bijlagen,0
-model,"ir.action,name",act_config_wizard_item_form,Config Wizard Items,Conf. assistent items,0
-model,"ir.action,name",act_cron_form,Scheduled Actions,Geplande acties,0
-model,"ir.action,name",act_default_form,Defaults,Standaarden,0
-model,"ir.action,name",act_export_form,Exports,Export,0
-model,"ir.action,name",act_lang_form,Languages,Talen,0
-model,"ir.action,name",act_menu_form,Menus,Menu's,0
-model,"ir.action,name",act_menu_tree,Menu,Menu,0
-model,"ir.action,name",act_model_access_form,Models Access,Toegang tot modellen,0
-model,"ir.action,name",act_model_fields_form,Fields,Velden,0
-model,"ir.action,name",act_model_form,Models,Modellen,0
-model,"ir.action,name",act_module_config_wizard,Module Configuration,Module configuratie,0
-model,"ir.action,name",act_module_form,Modules,Modulen,0
-model,"ir.action,name",act_module_install_upgrade,Perform Pending Installation/Upgrade,Voer installatie / bijwerken uit,0
-model,"ir.action,name",act_property_form,Properties,Eigenschappen,0
-model,"ir.action,name",act_property_form_default,Default Properties,Standaard eigenschappen,0
-model,"ir.action,name",act_rule_group_form,Record Rules,Item regels,0
-model,"ir.action,name",act_sequence_form,Sequences,Reeksen,0
-model,"ir.action,name",act_sequence_strict_form,Sequences Strict,Vaste reeksen,0
-model,"ir.action,name",act_sequence_type_form,Sequence Types,Reeks typen,0
-model,"ir.action,name",act_translation_clean,Clean Translations,Vertalingen opschonen,0
-model,"ir.action,name",act_translation_export,Export Translations,Vertalingen exporteren,0
-model,"ir.action,name",act_translation_form,Translations,Vertalingen,0
-model,"ir.action,name",act_translation_set_report,Set Report Translations,Vertaling rapport instellen,0
-model,"ir.action,name",act_translation_update,Synchronize Translations,Vertaling synchroniseren,0
-model,"ir.action,name",act_trigger_form,Triggers,Starters,0
-model,"ir.action,name",act_view_form,Views,Aanzichten,0
-model,"ir.action,name",act_view_sc_form,View Shortcuts,Bekijk sneltoetsen,0
-model,"ir.action,name",act_view_tree_width_form,View Tree Width,Aanzicht boomstructuurbreedte,0
-model,"ir.action,name",print_model_graph,Graph,Grafiek,0
-model,"ir.action,name",report_model_graph,Graph,Grafiek,0
-model,"ir.action.act_window,name",0,Action act window,Actie uitvoerend scherm,0
-model,"ir.action.act_window.view,name",0,Action act window view,Actie uitvoerend schermaanzicht,0
-model,"ir.action.keyword,name",0,Action keyword,Actietrefwoord,0
-model,"ir.action.report,name",0,Action report,Actie rapport,0
-model,"ir.action.url,name",0,Action URL,Actie URL,0
-model,"ir.action.wizard,name",0,Action wizard,Actie assistent,0
-model,"ir.action.wizard_size,name",0,Action Wizard Size,Actie assistent grote,0
-model,"ir.attachment,name",0,Attachment,Bijlage,0
-model,"ir.cache,name",0,Cache,Tijdelijk geheugen,0
-model,"ir.cron,name",0,Cron,Cyclische opdracht,0
-model,"ir.date,name",0,Date,Datum,0
-model,"ir.default,name",0,Default,Standaard,0
-model,"ir.export,name",0,Export,Exporteren,0
-model,"ir.export.line,name",0,Export line,Exporterregel,0
-model,"ir.lang,name",0,Language,Taal,0
-model,"ir.lang,name",lang_cs,Czech,Tsjechisch,0
-model,"ir.lang,name",lang_de,German,Duits,0
-model,"ir.lang,name",lang_en,English,Engels,0
-model,"ir.lang,name",lang_es,Spanish (Spain),Spaans (Spanje),0
-model,"ir.lang,name",lang_es_CO,Spanish (Colombia),Spaans (Colombia),0
-model,"ir.lang,name",lang_fr,French,Frans,0
-model,"ir.lang,name",lang_ru,Russian,Russisch,0
-model,"ir.model,name",0,Model,Model,0
-model,"ir.model.access,name",0,Model access,Toegang tot model,0
-model,"ir.model.data,name",0,Model data,Model gegevens,0
-model,"ir.model.field,name",0,Model field,Model veld,0
-model,"ir.model.print_model_graph.init,name",0,Print Model Graph Init,Grafiek gaan afdrukken,0
-model,"ir.module.module,name",0,Module,Module,0
-model,"ir.module.module.config_wizard.first,name",0,Module Config Wizard First,Module EHBC,0
-model,"ir.module.module.config_wizard.item,name",0,Config wizard to run after installing module,Configuratie assistent die start na installatie van de module,0
-model,"ir.module.module.dependency,name",0,Module dependency,Module afhankelijkheid,0
-model,"ir.module.module.install_upgrade.init,name",0,Module Install Upgrade Init,Module gaan bijwerken,0
-model,"ir.module.module.install_upgrade.start,name",0,Module Install Upgrade Start,Start module gaan bijwerken,0
-model,"ir.property,name",0,Property,Eigenschap,0
-model,"ir.rule,name",0,Rule,Regel,0
-model,"ir.rule.group,name",0,Rule group,Regelgroep,0
-model,"ir.sequence,name",0,Sequence,Reeks,0
-model,"ir.sequence.strict,name",0,Sequence Strict,Vaste reeks,0
-model,"ir.sequence.type,name",0,Sequence type,Reeks type,0
-model,"ir.translation,name",0,Translation,Vertaling,0
-model,"ir.translation.clean.init,name",0,Clean translation init,Vertalingen gaan opschonen,0
-model,"ir.translation.clean.start,name",0,Clean translation start,Start vertalingen opschonen,0
-model,"ir.translation.export.init,name",0,Export translation - language and module,Vertaling exporteren - taal en module,0
-model,"ir.translation.export.start,name",0,Export translation - file,Vertaling exporteren - bestand,0
-model,"ir.translation.set_report.init,name",0,Update Report Translation,Vertaling rapport bijwerken,0
-model,"ir.translation.set_report.start,name",0,Update Report Translation,Vertaling rapport bijwerken,0
-model,"ir.translation.update.init,name",0,Update translation - language,Vertaling rapport bijwerken,0
-model,"ir.trigger,name",0,Trigger,Starter,0
-model,"ir.trigger.log,name",0,Trigger Log,Starter logboek,0
-model,"ir.ui.menu,name",0,UI menu,Gebruiker menu,0
-model,"ir.ui.menu,name",menu_act_action,Actions,Acties,0
-model,"ir.ui.menu,name",menu_action,Actions,Acties,0
-model,"ir.ui.menu,name",menu_action_act_window,Window Actions,Schermacties,0
-model,"ir.ui.menu,name",menu_action_report_form,Reports,Rapportage,0
-model,"ir.ui.menu,name",menu_action_url,URLs,URL's,0
-model,"ir.ui.menu,name",menu_action_wizard,Wizards,Assistenten,0
-model,"ir.ui.menu,name",menu_action_wizard_size,Wizard Sizes,Assistent groten,0
-model,"ir.ui.menu,name",menu_administration,Administration,Systeembeheer,0
-model,"ir.ui.menu,name",menu_attachment_form,Attachments,Bijlagen,0
-model,"ir.ui.menu,name",menu_config_wizard_item_form,Config Wizard Items,Conf. assistent items,0
-model,"ir.ui.menu,name",menu_cron_form,Scheduled Actions,Geplande acties,0
-model,"ir.ui.menu,name",menu_default_form,Defaults,Standaarden,0
-model,"ir.ui.menu,name",menu_export_form,Exports,Export,0
-model,"ir.ui.menu,name",menu_ir_sequence_type,Sequence Types,Reeks typen,0
-model,"ir.ui.menu,name",menu_lang_form,Languages,Talen,0
-model,"ir.ui.menu,name",menu_localization,Localization,Lokalisatie,0
-model,"ir.ui.menu,name",menu_menu_form,Menus,Menu's,0
-model,"ir.ui.menu,name",menu_model_access_form,Models Access,Toegang tot modellen,0
-model,"ir.ui.menu,name",menu_model_form,Models,Modellen,0
-model,"ir.ui.menu,name",menu_models,Models,Modellen,0
-model,"ir.ui.menu,name",menu_module_form,Modules,Modulen,0
-model,"ir.ui.menu,name",menu_module_install_upgrade,Perform Pending Installation/Upgrade,Voer installatie / bijwerken uit,0
-model,"ir.ui.menu,name",menu_modules,Modules,Modulen,0
-model,"ir.ui.menu,name",menu_property_form,Properties,Eigenschappen,0
-model,"ir.ui.menu,name",menu_property_form_default,Default Properties,Standaard eigenschappen,0
-model,"ir.ui.menu,name",menu_rule_group_form,Record Rules,Item regels,0
-model,"ir.ui.menu,name",menu_scheduler,Scheduler,Planner,0
-model,"ir.ui.menu,name",menu_sequence_form,Sequences,Reeksen,0
-model,"ir.ui.menu,name",menu_sequence_strict_form,Sequences Strict,Vaste reeksen,0
-model,"ir.ui.menu,name",menu_sequences,Sequences,Reeksen,0
-model,"ir.ui.menu,name",menu_translation_clean,Clean Translations,Vertalingen opschonen,0
-model,"ir.ui.menu,name",menu_translation_export,Export Translations,Vertalingen exporteren,0
-model,"ir.ui.menu,name",menu_translation_form,Translations,Vertalingen,0
-model,"ir.ui.menu,name",menu_translation_set_report,Set Report Translations,Vertaling rapport instellen,0
-model,"ir.ui.menu,name",menu_translation_update,Synchronize Translations,Vertaling synchroniseren,0
-model,"ir.ui.menu,name",menu_trigger_form,Triggers,Starters,0
-model,"ir.ui.menu,name",menu_ui,User Interface,Gebruikers omgeving,0
-model,"ir.ui.menu,name",menu_view,Views,Aanzichten,0
-model,"ir.ui.menu,name",menu_view_sc,View Shortcuts,Bekijk sneltoetsen,0
-model,"ir.ui.menu,name",menu_view_tree_width,View Tree Width,Aanzicht boomstructuurbreedte,0
-model,"ir.ui.menu,name",model_model_fields_form,Fields,Velden,0
-model,"ir.ui.view,name",0,View,Overzicht,0
-model,"ir.ui.view_sc,name",0,View shortcut,Bekijk sneltoets,0
-model,"ir.ui.view_tree_width,name",0,View Tree Width,Aanzicht boomstructuurbreedte,0
-selection,"ir.action.act_window,view_type",0,Board,Bord,0
-selection,"ir.action.act_window,view_type",0,Form,Formulier,0
-selection,"ir.action.act_window,view_type",0,Tree,Boomstructuur,0
-selection,"ir.action.keyword,keyword",0,Action form,Actieformulier,0
-selection,"ir.action.keyword,keyword",0,Action tree,Actie boomstructuur,0
-selection,"ir.action.keyword,keyword",0,Form relate,Formulier relatie,0
-selection,"ir.action.keyword,keyword",0,Open Graph,Open een grafiek,0
-selection,"ir.action.keyword,keyword",0,Open tree,Open boomstructuur,0
-selection,"ir.action.keyword,keyword",0,Print form,Formulier afdrukken,0
-selection,"ir.action.report,extension",0,ODT Document,ODT document,0
-selection,"ir.action.report,extension",0,PDF Document,PDF document,0
-selection,"ir.cron,interval_type",0,Days,Dagen,0
-selection,"ir.cron,interval_type",0,Hours,Uren,0
-selection,"ir.cron,interval_type",0,Minutes,Minuten,0
-selection,"ir.cron,interval_type",0,Months,Maanden,0
-selection,"ir.cron,interval_type",0,Weeks,Weken,0
-selection,"ir.cron,interval_type",0,Work Days,Werkdagen,0
-selection,"ir.lang,direction",0,Left-to-right,Van links naar rechts,0
-selection,"ir.lang,direction",0,Right-to-left,Van rechts naar links,0
-selection,"ir.module.module,state",0,Installed,Geïnstalleerd,0
-selection,"ir.module.module,state",0,Not Installed,Niet geïnstalleerd,0
-selection,"ir.module.module,state",0,To be installed,Te installeren,0
-selection,"ir.module.module,state",0,To be removed,Te verwijderen,0
-selection,"ir.module.module,state",0,To be upgraded,Bij te werken,0
-selection,"ir.module.module.config_wizard.item,state",0,Done,Klaar,0
-selection,"ir.module.module.config_wizard.item,state",0,Open,Open,0
-selection,"ir.module.module.dependency,state",0,Installed,Geïnstalleerd,0
-selection,"ir.module.module.dependency,state",0,Not Installed,Niet geïnstalleerd,0
-selection,"ir.module.module.dependency,state",0,To be installed,Te installeren,0
-selection,"ir.module.module.dependency,state",0,To be removed,Te verwijderen,0
-selection,"ir.module.module.dependency,state",0,To be upgraded,Bij te werken,0
-selection,"ir.module.module.dependency,state",0,Unknown,Onbekend,0
-selection,"ir.sequence,type",0,Decimal Timestamp,Tijdmarkering,0
-selection,"ir.sequence,type",0,Hexadecimal Timestamp,Hexadecimale tijdmarkering,0
-selection,"ir.sequence,type",0,Incremental,Oplopend,0
-selection,"ir.sequence.strict,type",0,Decimal Timestamp,Tijdmarkering,0
-selection,"ir.sequence.strict,type",0,Hexadecimal Timestamp,Hexadecimale tijdmarkering,0
-selection,"ir.sequence.strict,type",0,Incremental,Oplopend,0
-selection,"ir.translation,type",0,Error,Fout,0
-selection,"ir.translation,type",0,Field,Veld,0
-selection,"ir.translation,type",0,Help,Help,0
-selection,"ir.translation,type",0,Model,Model,0
-selection,"ir.translation,type",0,ODT,ODT,0
-selection,"ir.translation,type",0,Selection,Selectie,0
-selection,"ir.translation,type",0,View,Aanzicht,0
-selection,"ir.translation,type",0,Wizard Button,Assistent knop,0
-selection,"ir.ui.menu,action",0,ir.action.act_window,,0
-selection,"ir.ui.menu,action",0,ir.action.report,,0
-selection,"ir.ui.menu,action",0,ir.action.url,,0
-selection,"ir.ui.menu,action",0,ir.action.wizard,,0
-selection,"ir.ui.view,type",0,,,0
-selection,"ir.ui.view,type",0,Board,Bord,0
-selection,"ir.ui.view,type",0,Form,Formulier,0
-selection,"ir.ui.view,type",0,Graph,Grafiek,0
-selection,"ir.ui.view,type",0,Tree,Boomstructuur,0
-view,ir.action,0,Action,Actie,0
-view,ir.action,0,General,Algemeen,0
-view,ir.action,0,Keyword,Trefwoord,0
-view,ir.action,0,Keywords,Trefwoorden,0
-view,ir.action.act_window,0,General,Algemeen,0
-view,ir.action.act_window,0,Keyword,Trefwoord,0
-view,ir.action.act_window,0,Keywords,Trefwoorden,0
-view,ir.action.act_window,0,Open Window,Open scherm,0
-view,ir.action.act_window,0,Open a Window,Open een scherm,0
-view,ir.action.act_window,0,Views,Aanzichten,0
-view,ir.action.report,0,General,Algemeen,0
-view,ir.action.report,0,Keyword,Trefwoord,0
-view,ir.action.report,0,Keywords,Trefwoorden,0
-view,ir.action.report,0,Report,Verslag,0
-view,ir.action.report,0,Report xml,Rapportage xml,0
-view,ir.action.url,0,General,Algemeen,0
-view,ir.action.url,0,Keyword,Trefwoord,0
-view,ir.action.url,0,Keywords,Trefwoorden,0
-view,ir.action.url,0,URL,URL,0
-view,ir.action.wizard,0,General,Algemeen,0
-view,ir.action.wizard,0,Keyword,Trefwoord,0
-view,ir.action.wizard,0,Keywords,Trefwoorden,0
-view,ir.action.wizard,0,Wizard,Assistent,0
-view,ir.action.wizard_size,0,Wizard Size,Assistent grote,0
-view,ir.action.wizard_size,0,Wizard Sizes,Assistent groten,0
-view,ir.attachment,0,Attachments,Bijlagen,0
-view,ir.attachment,0,Preview,Voorbeeld,0
-view,ir.cron,0,Action to trigger,Actie om uit te voeren,0
-view,ir.cron,0,Scheduled Action,Geplande actie,0
-view,ir.cron,0,Scheduled Actions,Geplande acties,0
-view,ir.default,0,Default,Standaard,0
-view,ir.default,0,Defaults,Standaarden,0
-view,ir.export,0,Exports,Export,0
-view,ir.lang,0,Date Formatting,Datum format,0
-view,ir.lang,0,Language,Taal,0
-view,ir.lang,0,Languages,Talen,0
-view,ir.lang,0,Numbers Formatting,Getal weergave,0
-view,ir.model,0,Fields Description,Veld omschrijving,0
-view,ir.model,0,Model Description,Model omschrijving,0
-view,ir.model.access,0,Access controls,Toegangcontrole,0
-view,ir.model.field,0,Fields,Velden,0
-view,ir.model.print_model_graph.init,0,Print Model Graph,Grafiek afdrukken,0
-view,ir.module.module,0,Cancel Installation,Installatie annuleren,0
-view,ir.module.module,0,Cancel Uninstallation,Verwijderen ongedaan maken,0
-view,ir.module.module,0,Cancel Upgrade,Bijwerken annuleren,0
-view,ir.module.module,0,Dependencies,Afhankelijkheden,0
-view,ir.module.module,0,Mark for Installation,Selecteer voor installatie,0
-view,ir.module.module,0,Mark for Uninstallation (beta),Selecteer voor verwijderen (beta),0
-view,ir.module.module,0,Mark for Upgrade,Selecteer voor bijwerken,0
-view,ir.module.module,0,Module,Module,0
-view,ir.module.module,0,Modules,Modulen,0
-view,ir.module.module.config_wizard.first,0,Welcome to the module configuration wizard!,Welkom bij de module configuratie assistent!,0
-view,ir.module.module.config_wizard.first,0,You will be able to configure your installation,U kunt uw installatie instellingen maken,0
-view,ir.module.module.config_wizard.first,0,depending on the modules you have installed.,afhankelijk van de geïnstalleerde modules.,0
-view,ir.module.module.config_wizard.item,0,Config Wizard Items,Configuratie assistent items,0
-view,ir.module.module.install_upgrade.init,0,Note that this operation my take a few minutes.,Let op; deze handeling kan een paar minuten duren.,0
-view,ir.module.module.install_upgrade.init,0,System Upgrade,Systeem opwaarderen,0
-view,ir.module.module.install_upgrade.init,0,Your system will be upgraded.,Uw systeem wordt opgewaardeerd.,0
-view,ir.module.module.install_upgrade.start,0,System upgrade done,Systeem opwaarderen klaar,0
-view,ir.module.module.install_upgrade.start,0,The modules have been upgraded / installed !,De modules zijn bijgewerkt / geïnstalleerd!,0
-view,ir.property,0,Properties,Eigenschappen,0
-view,ir.property,0,Property,Eigenschap,0
-view,ir.rule,0,Test,Test,0
-view,ir.rule.group,0,"If there is no test defined, the rule is always satisfied if not global",Als er geen test is gedefinieerd is de regel altijd waar mits niet globaal,0
-view,ir.rule.group,0,Record rules,Item regels,0
-view,ir.rule.group,0,The rule is satisfied if at least one test is True,De regel is waar als tenminste aan één voorwaarde wordt voldaan,0
-view,ir.sequence,0,${day},${dag},0
-view,ir.sequence,0,${month},${maand},0
-view,ir.sequence,0,${year},${jaar},0
-view,ir.sequence,0,Day:,Dag:,0
-view,ir.sequence,0,Incremental,Oplopend,0
-view,ir.sequence,0,"Legend (Placeholders for prefix, suffix)","Legenda (sjabloon voor voorvoegsel, toevoeging)",0
-view,ir.sequence,0,Month:,Maand:,0
-view,ir.sequence,0,Sequences,Reeksen,0
-view,ir.sequence,0,Timestamp,Tijdmarkering,0
-view,ir.sequence,0,Year:,Jaar:,0
-view,ir.sequence.type,0,Sequence Type,Reeks type,0
-view,ir.translation,0,Translations,Vertalingen,0
-view,ir.translation.clean.init,0,Clean Translations,Vertalingen opschonen,0
-view,ir.translation.clean.init,0,Clean Translations?,Vertalingen opschonen?,0
-view,ir.translation.clean.start,0,Clean Translations,Vertalingen opschonen,0
-view,ir.translation.clean.start,0,Clean Translations Succeed!,Vertalingen opschonen gelukt!,0
-view,ir.translation.export.init,0,Export Translation,Vertaling exporteren,0
-view,ir.translation.export.start,0,Export Translation,Vertaling exporteren,0
-view,ir.translation.set_report.init,0,Set Report Translations,Vertaling rapport instellen,0
-view,ir.translation.set_report.init,0,Synchronize Report Translations?,Synchoniseer rapport vertalingen?,0
-view,ir.translation.set_report.start,0,Set Report Translations,Vertaling rapport instellen,0
-view,ir.translation.set_report.start,0,Set Translations Succeed!,Vertaling instellen gelukt!,0
-view,ir.translation.update.init,0,Synchronize Translations,Vertaling synchroniseren,0
-view,ir.trigger,0,Trigger,Starter,0
-view,ir.trigger,0,Triggers,Starters,0
-view,ir.ui.menu,0,Menu,Menu,0
-view,ir.ui.view,0,View,Overzicht,0
-view,ir.ui.view_sc,0,Shortcut,Sneltoets,0
-view,ir.ui.view_tree_width,0,View Tree Width,Aanzicht boomstructuurbreedte,0
-view,ir.ui.view_tree_width,0,Views Tree Width,Aanzichten boomstructuurbreedte,0
-wizard_button,"ir.model.print_model_graph,init,end",0,Cancel,Annuleren,0
-wizard_button,"ir.model.print_model_graph,init,print",0,Print,Afdrukken,0
-wizard_button,"ir.module.module.config_wizard,first,end",0,Cancel,Annuleren,0
-wizard_button,"ir.module.module.config_wizard,first,wizard",0,Ok,Oké,0
-wizard_button,"ir.module.module.install_upgrade,init,end",0,Cancel,Annuleren,0
-wizard_button,"ir.module.module.install_upgrade,init,start",0,Start Upgrade,Start opwaarderen,0
-wizard_button,"ir.module.module.install_upgrade,start,menu",0,Ok,Oké,0
-wizard_button,"ir.translation.clean,init,end",0,Cancel,Annuleren,0
-wizard_button,"ir.translation.clean,init,start",0,Start,Start,0
-wizard_button,"ir.translation.clean,start,end",0,Ok,Oké,0
-wizard_button,"ir.translation.export,init,end",0,Cancel,Annuleren,0
-wizard_button,"ir.translation.export,init,start",0,Start Export,Start exporteren,0
-wizard_button,"ir.translation.export,start,end",0,Close,Sluiten,0
-wizard_button,"ir.translation.set_report,init,end",0,Cancel,Annuleren,0
-wizard_button,"ir.translation.set_report,init,start",0,Start Update,Start bijwerken,0
-wizard_button,"ir.translation.set_report,start,end",0,Ok,Oké,0
-wizard_button,"ir.translation.update,init,end",0,Cancel,Annuleren,0
-wizard_button,"ir.translation.update,init,start",0,Start Update,Start bijwerken,0
diff --git a/trytond/ir/property.py b/trytond/ir/property.py
index 17c8365..ec08703 100644
--- a/trytond/ir/property.py
+++ b/trytond/ir/property.py
@@ -1,10 +1,10 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 from decimal import Decimal
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.transaction import Transaction
 from trytond.cache import Cache
+from trytond.pool import Pool
 
 
 class Property(ModelSQL, ModelView):
@@ -32,7 +32,8 @@ class Property(ModelSQL, ModelView):
         :param res_ids: a list of record ids
         :return: a dictionary
         """
-        model_access_obj = self.pool.get('ir.model.access')
+        pool = Pool()
+        model_access_obj = pool.get('ir.model.access')
         res = {}
 
         model_access_obj.check(model, 'read')
@@ -44,7 +45,7 @@ class Property(ModelSQL, ModelView):
         if res_ids is None:
             res_ids = []
 
-        model_obj = self.pool.get(model)
+        model_obj = pool.get(model)
         fields = dict((name, field)
                 for name, field in model_obj._columns.iteritems()
                 if name in names)
@@ -126,8 +127,9 @@ class Property(ModelSQL, ModelView):
         :param val: the value
         :return: the id of the record created
         """
-        model_field_obj = self.pool.get('ir.model.field')
-        model_access_obj = self.pool.get('ir.model.access')
+        pool = Pool()
+        model_field_obj = pool.get('ir.model.field')
+        model_access_obj = pool.get('ir.model.access')
 
         model_access_obj.check(model, 'write')
 
@@ -135,7 +137,7 @@ class Property(ModelSQL, ModelView):
             ('name', '=', name),
             ('model.model', '=', model),
             ], order=[], limit=1)[0]
-        model_obj = self.pool.get(model)
+        model_obj = pool.get(model)
         field = model_obj._columns[name]
 
         property_ids = self.search([
diff --git a/trytond/ir/property.xml b/trytond/ir/property.xml
index a2a4c8e..00bed26 100644
--- a/trytond/ir/property.xml
+++ b/trytond/ir/property.xml
@@ -27,10 +27,10 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <tree string="Properties">
-                    <field name="name" select="1"/>
-                    <field name="field" select="1"/>
-                    <field name="value" select="2"/>
-                    <field name="res" select="2"/>
+                    <field name="name"/>
+                    <field name="field"/>
+                    <field name="value"/>
+                    <field name="res"/>
                 </tree>
                 ]]>
             </field>
diff --git a/trytond/ir/ru_RU.csv b/trytond/ir/ru_RU.csv
deleted file mode 100644
index 0f68b8b..0000000
--- a/trytond/ir/ru_RU.csv
+++ /dev/null
@@ -1,608 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,access_error,0,"You try to bypass an access rule!
-(Document type: %s)","Вы пытаетесь нарушить правила доступа!
-(Модель: %s)",0
-error,delete_workflow_record,0,You cannot delete a record with a running workflow.,Вы не можете удалять записи с запущенным рабочим процессом.,0
-error,delete_xml_record,0,You are not allowed to delete this record.,Вы не можете удалить эту запись.,0
-error,domain_validation_record,0,"The value of the field ""%s"" on ""%s"" is not valid according to its domain.","Значение поля ""%s"" в таблице ""%s"" не действует в соответствии с его домена.",0
-error,foreign_model_exist,0,"Could not delete ""%s"" records because they are used on field ""%s"" of ""%s"".","Не могу удалить ""%s"" записей, поскольку они используются в поле ""%s"" из таблицы ""%s"".",0
-error,foreign_model_missing,0,"The value of field ""%s"" on ""%s"" doesn't exist.","Значение поля ""%s"" в таблице ""%s"" отсутствует.",0
-error,ir.action.keyword,0,Wrong wizard model!,Неправильный шаблон мастера,0
-error,ir.action.report,0,The internal name must be unique by module!,Наименование модуля должно быть уникальным!,0
-error,ir.attachment,0,The names of attachments must be unique by record!,Имена вложений должны быть уникальными!,0
-error,ir.cron,0,Scheduled action failed,Запланированное действие не удалось выполнить,0
-error,ir.cron,0,"The following action failed to execute properly: ""%s""
- Traceback: 
-
-%s
-","Следующие действия не возможно выполнить должным образом: ""%s""
- Отладочное сообщение:
-
-%s
-",0
-error,ir.lang,0,decimal_point and thousands_sep must be different!,Десятичный разделитель и Разделитель тысяч должны быть разными!,0
-error,ir.lang,0,Invalid Grouping!,Неверное Группировка!,0
-error,ir.lang,0,The date format is not valid!,Неправильный формат даты!,0
-error,ir.model,0,The model must be unique!,Модель должна быть уникальным!,0
-error,ir.model.access,0,Only one record by model and group is allowed!,Разрешается только одна запись от модели и группы!,0
-error,ir.model.access,0,You can not create this kind of document! (%s),Вы не можете создать такой документ! (%s),0
-error,ir.model.access,0,You can not delete this document! (%s),Вы не можете удалить этот документ! (%s),0
-error,ir.model.access,0,You can not read this document! (%s),Вы не можете прочитать этот документ! (%s),0
-error,ir.model.access,0,You can not write in this document! (%s),Вы не можете сохранить этот документ! (%s),0
-error,ir.model.data,0,"The triple (fs_id, module, model) must be unique!","(fs_id, модуль, модель) должен быть уникальным!",0
-error,ir.model.field,0,The field name in model must be unique!,Наименование поля в шаблоне должно быть уникальным!,0
-error,ir.module.module,0,"Missing dependencies %s for module ""%s""","Отсутствует(ют) модуль(и) %s для модуля ""%s""",0
-error,ir.module.module,0,The modules you are trying to uninstall depends on installed modules:,"От модулей, которые вы пытаетесь удалить, зависят установленные модули:",0
-error,ir.module.module,0,The name of the module must be unique!,Наименование модуля должно быть уникальным,0
-error,ir.module.module,0,You can not remove a module that is installed or will be installed,"Вы не можете удалить модуль, который установлен или будет установлен",0
-error,ir.module.module.dependency,0,Dependency must be unique by module!,Зависимость должно быть уникальным модулем!,0
-error,ir.rule.group,0,Global and Default are mutually exclusive!,Глобальные и по умолчанию являются взаимоисключающими!,0
-error,ir.sequence,0,Invalid prefix/suffix!,Ошибка в префиксе/суффиксе!,0
-error,ir.sequence,0,Missing sequence!,Ошибка в нумерации,0
-error,ir.sequence.strict,0,Invalid prefix/suffix!,Ошибка в префиксе/суффиксе!,0
-error,ir.sequence.strict,0,Missing sequence!,Ошибка в нумерации,0
-error,ir.translation,0,Translation must be unique,Перевод должен быть уникальным,0
-error,ir.ui.view,0,Invalid XML for View!,Ошибка в XML просмотре,0
-error,read_error,0,"You try to read records that don't exist anymore!
-(Document type: %s)","Вы пытаетесь прочитать записи, которые не существуют!
-(Модель:%s)",0
-error,required_field,0,"The field ""%s"" on ""%s"" is required.","Поле ""%s"" на ""%s"" необходимо.",0
-error,required_validation_record,0,"The field ""%s"" on ""%s"" is required.","Поле ""%s"" на ""%s"" необходимо.",0
-error,size_validation_record,0,"The field ""%s"" on ""%s"" is too long.","Поле ""%s"" в таблице ""%s"" слишком длинное.",0
-error,write_error,0,"You try to write on records that don't exist anymore!
-(Document type: %s)","Вы пытаетесь записать данные, которые больше не существуют!
-(Модель:%s)",0
-error,write_xml_record,0,You are not allowed to modify this record.,Вы не можете изменить эту запись.,0
-error,xml_record_desc,0,This record is part of the base configuration.,Эта запись является частью базовой конфигурации.,0
-field,"ir.action,active",0,Active,Действительнный,0
-field,"ir.action.act_window,action",0,Action,Действие,0
-field,"ir.action.act_window,act_window_views",0,Views,Виды,0
-field,"ir.action.act_window,auto_refresh",0,Auto-Refresh,Авто-Обновление,0
-field,"ir.action.act_window,context",0,Context Value,Значение контекста,0
-field,"ir.action.act_window,domain",0,Domain Value,Значение обслати выборки,0
-field,"ir.action.act_window,limit",0,Limit,Лимит,0
-field,"ir.action.act_window,rec_name",0,Name,Наименование,0
-field,"ir.action.act_window,res_model",0,Model,Шаблон,0
-field,"ir.action.act_window,search_value",0,Search Criteria,Критерии поиска,0
-field,"ir.action.act_window.view,act_window",0,Action,Действие,0
-field,"ir.action.act_window.view,rec_name",0,Name,Наименование,0
-field,"ir.action.act_window,views",0,Views,Виды,0
-field,"ir.action.act_window.view,sequence",0,Sequence,Последовательность,0
-field,"ir.action.act_window,view_type",0,Type of view,Тип вида,0
-field,"ir.action.act_window.view,view",0,View,Просмотр,0
-field,"ir.action.act_window,window_name",0,Window Name,Наименование окна,0
-field,"ir.action,groups",0,Groups,Группы,0
-field,"ir.action.keyword,action",0,Action,Действие,0
-field,"ir.action.keyword,keyword",0,Keyword,Ключевое слово,0
-field,"ir.action.keyword,model",0,Model,Шаблон,0
-field,"ir.action.keyword,rec_name",0,Name,Наименование,0
-field,"ir.action,keywords",0,Keywords,Ключевые слова,0
-field,"ir.action,name",0,Name,Наименование,0
-field,"ir.action,rec_name",0,Name,Наименование,0
-field,"ir.action.report,action",0,Action,Действие,0
-field,"ir.action.report,direct_print",0,Direct Print,прямая печать,0
-field,"ir.action.report,email",0,Email,Эл.почта,0
-field,"ir.action.report,extension",0,Extension,Расширение,0
-field,"ir.action.report,model",0,Model,Шаблон,0
-field,"ir.action.report,module",0,Module,Модуль,0
-field,"ir.action.report,rec_name",0,Name,Наименование,0
-field,"ir.action.report,report",0,Path,Путь,0
-field,"ir.action.report,report_content",0,Content,Содержание,0
-field,"ir.action.report,report_content_data",0,Content,Содержание,0
-field,"ir.action.report,report_name",0,Internal Name,Внутреннее наименование,0
-field,"ir.action.report,style",0,Style,Стиль,0
-field,"ir.action.report,style_content",0,Style,Стиль,0
-field,"ir.action,type",0,Type,Тип,0
-field,"ir.action.url,action",0,Action,Действие,0
-field,"ir.action.url,rec_name",0,Name,Наименование,0
-field,"ir.action.url,url",0,Action Url,Действие URL,0
-field,"ir.action,usage",0,Usage,Использования,0
-field,"ir.action.wizard,action",0,Action,Действие,0
-field,"ir.action.wizard,email",0,Email,Эл.почта,0
-field,"ir.action.wizard,model",0,Model,Шаблон,0
-field,"ir.action.wizard,rec_name",0,Name,Наименование,0
-field,"ir.action.wizard_size,height",0,Height,Высота,0
-field,"ir.action.wizard_size,model",0,Model,Шаблон,0
-field,"ir.action.wizard_size,rec_name",0,Name,Наименование,0
-field,"ir.action.wizard_size,user",0,User,Пользователь,0
-field,"ir.action.wizard_size,width",0,Width,Ширина,0
-field,"ir.action.wizard_size,wizard",0,Wizard,Мастер,0
-field,"ir.action.wizard,window",0,Window,Окно,0
-field,"ir.action.wizard,wiz_name",0,Wizard name,Наименование мастера,0
-field,"ir.attachment,collision",0,Collision,Колизия,0
-field,"ir.attachment,datas",0,Datas,Данные,0
-field,"ir.attachment,datas_size",0,Datas size,Размер данных,0
-field,"ir.attachment,description",0,Description,Описание,0
-field,"ir.attachment,digest",0,Digest,Резюме,0
-field,"ir.attachment,link",0,Link,Ссылка,0
-field,"ir.attachment,name",0,Attachment Name,Имя вложения,0
-field,"ir.attachment,rec_name",0,Name,Наименование,0
-field,"ir.attachment,res_id",0,Resource ID,Ресурс ID,0
-field,"ir.attachment,res_model",0,Resource Model,Ресурс Шаблон,0
-field,"ir.cache,name",0,Name,Наименование,0
-field,"ir.cache,rec_name",0,Name,Наименование,0
-field,"ir.cache,timestamp",0,Timestamp,Время,0
-field,"ir.cron,active",0,Active,Действительнный,0
-field,"ir.cron,args",0,Arguments,Аргументы,0
-field,"ir.cron,doall",0,Repeat missed,Повторить пропущенные,0
-field,"ir.cron,function",0,Function,Функция,0
-field,"ir.cron,interval_number",0,Interval Number,Внутренний номер,0
-field,"ir.cron,interval_type",0,Interval Unit,Внутренния единица,0
-field,"ir.cron,model",0,Model,Шаблон,0
-field,"ir.cron,name",0,Name,Наименование,0
-field,"ir.cron,nextcall",0,Next call date,Дата следующего вызова,0
-field,"ir.cron,numbercall",0,Number of calls,Количество звонков,0
-field,"ir.cron,priority",0,Priority,Приоритет,0
-field,"ir.cron,rec_name",0,Name,Наименование,0
-field,"ir.cron,request_user",0,Request User,Запрос пользователя,0
-field,"ir.cron,running",0,Running,Выполняющиеся,0
-field,"ir.cron,user",0,Execution User,От имени пользователя,0
-field,"ir.default,clause",0,Clause,Пункт,0
-field,"ir.default,field",0,Field,Поле,0
-field,"ir.default,model",0,Model,Шаблон,0
-field,"ir.default,rec_name",0,Name,Наименование,0
-field,"ir.default,user",0,User,Пользователь,0
-field,"ir.default,value",0,Value,Значение,0
-field,"ir.export,export_fields",0,Fields,Поля,0
-field,"ir.export.line,export",0,Export,Экспорт,0
-field,"ir.export.line,name",0,Name,Наименование,0
-field,"ir.export.line,rec_name",0,Name,Наименование,0
-field,"ir.export,name",0,Name,Наименование,0
-field,"ir.export,rec_name",0,Name,Наименование,0
-field,"ir.export,resource",0,Resource,Ресурс,0
-field,"ir.lang,active",0,Active,Действительнный,0
-field,"ir.lang,code",0,Code,Код отгрузки,0
-field,"ir.lang,date",0,Date,Дата,0
-field,"ir.lang,decimal_point",0,Decimal Separator,Разделитель десятичных чисел,0
-field,"ir.lang,direction",0,Direction,Направление,0
-field,"ir.lang,grouping",0,Grouping,Группировка,0
-field,"ir.lang,name",0,Name,Наименование,0
-field,"ir.lang,rec_name",0,Name,Наименование,0
-field,"ir.lang,thousands_sep",0,Thousands Separator,Разделитель тысяч,0
-field,"ir.lang,translatable",0,Translatable,Переводимый,0
-field,"ir.model.access,description",0,Description,Описание,0
-field,"ir.model.access,group",0,Group,Группа,0
-field,"ir.model.access,model",0,Model,Шаблон,0
-field,"ir.model.access,perm_create",0,Create Access,Добавление,0
-field,"ir.model.access,perm_delete",0,Delete Access,Удаление,0
-field,"ir.model.access,perm_read",0,Read Access,Чтение,0
-field,"ir.model.access,perm_write",0,Write Access,Запись,0
-field,"ir.model.access,rec_name",0,Name,Наименование,0
-field,"ir.model.data,date_init",0,Init Date,Дата уставки,0
-field,"ir.model.data,date_update",0,Update Date,Дата обновления,0
-field,"ir.model.data,db_id",0,Resource ID,Ресурс ID,0
-field,"ir.model.data,fs_id",0,Identifier on File System,Идентификатор в файловой системе,0
-field,"ir.model.data,inherit",0,Inherit,Наследование,0
-field,"ir.model.data,model",0,Model,Шаблон,0
-field,"ir.model.data,module",0,Module,Модуль,0
-field,"ir.model.data,rec_name",0,Name,Наименование,0
-field,"ir.model.data,values",0,Values,Значения,0
-field,"ir.model.field,field_description",0,Field Description,Описание поля,0
-field,"ir.model.field,groups",0,Groups,Группы,0
-field,"ir.model.field,help",0,Help,Помощь,0
-field,"ir.model.field,model",0,Model,Шаблон,0
-field,"ir.model.field,module",0,Module,Модуль,0
-field,"ir.model.field,name",0,Name,Наименование,0
-field,"ir.model.field,rec_name",0,Name,Наименование,0
-field,"ir.model.field,relation",0,Model Relation,Связь шаблона,0
-field,"ir.model,fields",0,Fields,Поля,0
-field,"ir.model.field,ttype",0,Field Type,Тип поля,0
-field,"ir.model,info",0,Information,Информация,0
-field,"ir.model,model",0,Model Name,Наименование шаблона,0
-field,"ir.model,module",0,Module,Модуль,0
-field,"ir.model,name",0,Model Description,Описание шаблона,0
-field,"ir.model.print_model_graph.init,level",0,Level,Уровень,0
-field,"ir.model,rec_name",0,Name,Наименование,0
-field,"ir.module.module,author",0,Author,Автор,0
-field,"ir.module.module.config_wizard.item,name",0,Name,Наименование,0
-field,"ir.module.module.config_wizard.item,rec_name",0,Name,Наименование,0
-field,"ir.module.module.config_wizard.item,sequence",0,Sequence,Последовательность,0
-field,"ir.module.module.config_wizard.item,state",0,State,Состояние,0
-field,"ir.module.module,dependencies",0,Dependencies,Зависимые,0
-field,"ir.module.module.dependency,module",0,Module,Модуль,0
-field,"ir.module.module.dependency,name",0,Name,Наименование,0
-field,"ir.module.module.dependency,rec_name",0,Name,Наименование,0
-field,"ir.module.module.dependency,state",0,State,Состояние,0
-field,"ir.module.module,description",0,Description,Описание,0
-field,"ir.module.module.install_upgrade.init,module_info",0,Modules to update,Модули для обновления,0
-field,"ir.module.module,name",0,Name,Наименование,0
-field,"ir.module.module,rec_name",0,Name,Наименование,0
-field,"ir.module.module,shortdesc",0,Short description,Краткое описание,0
-field,"ir.module.module,state",0,State,Состояние,0
-field,"ir.module.module,version",0,Version,Версия,0
-field,"ir.module.module,website",0,Website,Сайт,0
-field,"ir.property,field",0,Field,Поле,0
-field,"ir.property,name",0,Name,Наименование,0
-field,"ir.property,rec_name",0,Name,Наименование,0
-field,"ir.property,res",0,Resource,Ресурс,0
-field,"ir.property,value",0,Value,Значение,0
-field,"ir.rule,field",0,Field,Поле,0
-field,"ir.rule.group,default_p",0,Default,По умолчанию,0
-field,"ir.rule.group,global_p",0,Global,Общий,0
-field,"ir.rule.group,groups",0,Groups,Группы,0
-field,"ir.rule.group,model",0,Model,Шаблон,0
-field,"ir.rule.group,name",0,Name,Наименование,0
-field,"ir.rule.group,perm_create",0,Create Access,Добавление,0
-field,"ir.rule.group,perm_delete",0,Delete Access,Удаление,0
-field,"ir.rule.group,perm_read",0,Read Access,Чтение,0
-field,"ir.rule.group,perm_write",0,Write Access,Запись,0
-field,"ir.rule.group,rec_name",0,Name,Наименование,0
-field,"ir.rule.group,rules",0,Tests,Тесты,0
-field,"ir.rule.group,users",0,Users,Пользователи,0
-field,"ir.rule,operand",0,Operand,Операнд,0
-field,"ir.rule,operator",0,Operator,Оператор,0
-field,"ir.rule,rec_name",0,Name,Наименование,0
-field,"ir.rule,rule_group",0,Group,Группа,0
-field,"ir.sequence,active",0,Active,Действительнный,0
-field,"ir.sequence,code",0,Sequence Type,Тип последовательности,0
-field,"ir.sequence,name",0,Sequence Name,Наименование последовательности,0
-field,"ir.sequence,number_increment",0,Increment Number,Коэфициент увеличения,0
-field,"ir.sequence,number_next",0,Next Number,Следующий номер,0
-field,"ir.sequence,padding",0,Number padding,Кол-во дополнения,0
-field,"ir.sequence,prefix",0,Prefix,Префикс,0
-field,"ir.sequence,rec_name",0,Name,Наименование,0
-field,"ir.sequence.strict,active",0,Active,Действительнный,0
-field,"ir.sequence.strict,code",0,Sequence Type,Тип последовательности,0
-field,"ir.sequence.strict,name",0,Sequence Name,Наименование последовательности,0
-field,"ir.sequence.strict,number_increment",0,Increment Number,Коэфициент увеличения,0
-field,"ir.sequence.strict,number_next",0,Next Number,Следующий номер,0
-field,"ir.sequence.strict,padding",0,Number padding,Кол-во дополнения,0
-field,"ir.sequence.strict,prefix",0,Prefix,Префикс,0
-field,"ir.sequence.strict,rec_name",0,Name,Наименование,0
-field,"ir.sequence.strict,suffix",0,Suffix,Суффикс,0
-field,"ir.sequence,suffix",0,Suffix,Суффикс,0
-field,"ir.sequence.type,code",0,Sequence Code,Код последовательности,0
-field,"ir.sequence.type,name",0,Sequence Name,Наименование последовательности,0
-field,"ir.sequence.type,rec_name",0,Name,Наименование,0
-field,"ir.translation.export.init,lang",0,Language,Язык,0
-field,"ir.translation.export.init,module",0,Module,Модуль,0
-field,"ir.translation.export.start,file",0,File,Файл,0
-field,"ir.translation,fuzzy",0,Fuzzy,Нечеткие,0
-field,"ir.translation,lang",0,Language,Язык,0
-field,"ir.translation,model",0,Model,Шаблон,0
-field,"ir.translation,module",0,Module,Модуль,0
-field,"ir.translation,name",0,Field Name,Название поля,0
-field,"ir.translation,rec_name",0,Name,Наименование,0
-field,"ir.translation,res_id",0,Resource ID,Ресурс ID,0
-field,"ir.translation,src",0,Source,Исходный текст,0
-field,"ir.translation,type",0,Type,Тип,0
-field,"ir.translation.update.init,lang",0,Language,Язык,0
-field,"ir.translation,value",0,Translation Value,Значение перевода,0
-field,"ir.ui.menu,action",0,Action,Действие,0
-field,"ir.ui.menu,active",0,Active,Действительнный,0
-field,"ir.ui.menu,childs",0,Children,Подчиненый,0
-field,"ir.ui.menu,complete_name",0,Complete Name,Полное название,0
-field,"ir.ui.menu,groups",0,Groups,Группы,0
-field,"ir.ui.menu,icon",0,Icon,Иконка,0
-field,"ir.ui.menu,name",0,Menu,Меню,0
-field,"ir.ui.menu,parent",0,Parent Menu,Основное меню,0
-field,"ir.ui.menu,rec_name",0,Name,Наименование,0
-field,"ir.ui.menu,sequence",0,Sequence,Последовательность,0
-field,"ir.ui.view,arch",0,View Architecture,Арихитуктура вида,0
-field,"ir.ui.view,domain",0,Domain,Область,0
-field,"ir.ui.view,field_childs",0,Children Field,Подчиненое поле,0
-field,"ir.ui.view,inherit",0,Inherited View,Наследованный вид,0
-field,"ir.ui.view,model",0,Model,Шаблон,0
-field,"ir.ui.view,module",0,Module,Модуль,0
-field,"ir.ui.view,priority",0,Priority,Приоритет,0
-field,"ir.ui.view,rec_name",0,Name,Наименование,0
-field,"ir.ui.view_sc,name",0,Shortcut Name,Краткое наименование,0
-field,"ir.ui.view_sc,rec_name",0,Name,Наименование,0
-field,"ir.ui.view_sc,res_id",0,Resource Ref.,Ссылка на ресурс,0
-field,"ir.ui.view_sc,resource",0,Resource Name,Наименование ресурса,0
-field,"ir.ui.view_sc,sequence",0,Sequence,Последовательность,0
-field,"ir.ui.view_sc,user_id",0,User Ref.,Ссылка на пользователя,0
-field,"ir.ui.view_tree_width,field",0,Field,Поле,0
-field,"ir.ui.view_tree_width,model",0,Model,Шаблон,0
-field,"ir.ui.view_tree_width,rec_name",0,Name,Наименование,0
-field,"ir.ui.view_tree_width,user",0,User,Пользователь,0
-field,"ir.ui.view_tree_width,width",0,Width,Ширина,0
-field,"ir.ui.view,type",0,View Type,Тип вида,0
-help,"ir.action.act_window,auto_refresh",0,Add an auto-refresh on the view,Добавить авто-обновление в просмотр,0
-help,"ir.action.act_window,limit",0,Default limit for the list view,По умолчанию кол-во записей в списке,0
-help,"ir.action.act_window,search_value",0,Default search criteria for the list view,По умолчанию критерии поиска в списке,0
-help,"ir.action.act_window,window_name",0,Use the action name as window name,Использовать наименование действия как наименование окна,0
-help,"ir.action.report,style",0,Define the style to apply on the report.,Определить стиль для применения по этому отчету.,0
-help,"ir.action.wizard,window",0,Run wizard in a new window,Запустить мастера в новом окне,0
-help,"ir.cron,numbercall",0,"Number of times the function is called,
-a negative number indicates that the function will always be called","Количество раз, когда вызывается функция,
-отрицательное значение означает, что функция всегда востребованы",0
-help,"ir.cron,priority",0,"0=Very Urgent
-10=Not urgent","0=Очень срочно
-10=Не актуаден",0
-help,"ir.cron,request_user",0,The user who will receive requests in case of failure,"Пользователь, который будет получать запросы в случае ошибки",0
-help,"ir.cron,user",0,The user used to execute this action,"Пользователь, для выполнения этого действия",0
-help,"ir.lang,code",0,RFC 4646 tag: http://tools.ietf.org/html/rfc4646,,0
-help,"ir.model.data,db_id",0,The id of the record in the database.,Идентификатор записи в базе данных.,0
-help,"ir.model.data,fs_id",0,The id of the record as known on the file system.,"Идентификатор записи как известно, в файловой системе.",0
-help,"ir.model.field,module",0,Module in which this field is defined,"Модуль, в котором это поле определяется",0
-help,"ir.model,module",0,Module in which this model is defined,"Модуль, в котором эти модели определяются",0
-help,"ir.rule.group,default_p",0,Add this rule to all users by default,Добавить это правило для всех пользователей по умолчанию,0
-help,"ir.rule.group,global_p",0,"Make the rule global 
-so every users must follow this rule",Сделать правило общим,0
-help,"ir.rule.group,rules",0,The rule is satisfied if at least one test is True,"Это правило выполняется, если по крайней мере одно правило истинно",0
-model,"ir.action.act_window,name",0,Action act window,Действие окна,0
-model,"ir.action.act_window.view,name",0,Action act window view,Действие окна вида,0
-model,"ir.action.keyword,name",0,Action keyword,Действие ключевых слов,0
-model,"ir.action,name",0,Action,Действие,0
-model,"ir.action,name",act_action_form,Actions,Действия,0
-model,"ir.action,name",act_attachment_form,Attachments,Вложения,0
-model,"ir.action,name",act_translation_clean,Clean Translations,Очистить переводы,0
-model,"ir.action,name",act_config_wizard_item_form,Config Wizard Items,Мастер конфигурации,0
-model,"ir.action,name",act_property_form_default,Default Properties,Свойства по умолчанию,0
-model,"ir.action,name",act_default_form,Defaults,По умолчанию,0
-model,"ir.action,name",act_export_form,Exports,Экспортировать,0
-model,"ir.action,name",act_translation_export,Export Translations,Экспорт переводов,0
-model,"ir.action,name",act_model_fields_form,Fields,Поля,0
-model,"ir.action,name",report_model_graph,Graph,Графика,0
-model,"ir.action,name",print_model_graph,Graph,Графика,0
-model,"ir.action,name",act_lang_form,Languages,Языки,0
-model,"ir.action,name",act_menu_tree,Menu,Меню,0
-model,"ir.action,name",act_menu_form,Menus,Меню,0
-model,"ir.action,name",act_model_form,Models,Шаблоны,0
-model,"ir.action,name",act_model_access_form,Models Access,Шаблон доступа,0
-model,"ir.action,name",act_module_config_wizard,Module Configuration,Конфигурация модуля,0
-model,"ir.action,name",act_module_form,Modules,Модули,0
-model,"ir.action,name",act_module_install_upgrade,Perform Pending Installation/Upgrade,Установить / Обновить,0
-model,"ir.action,name",act_property_form,Properties,Свойства,0
-model,"ir.action,name",act_rule_group_form,Record Rules,Запись правил,0
-model,"ir.action,name",act_action_report_form,Reports,Отчеты,0
-model,"ir.action,name",act_cron_form,Scheduled Actions,Запланированные действия,0
-model,"ir.action,name",act_sequence_form,Sequences,Нумерации,0
-model,"ir.action,name",act_sequence_strict_form,Sequences Strict,Строгая нумерация,0
-model,"ir.action,name",act_sequence_type_form,Sequence Types,Тип нумерации,0
-model,"ir.action,name",act_translation_set_report,Set Report Translations,Установить переводы для отчетов,0
-model,"ir.action,name",act_translation_update,Synchronize Translations,Синхронизация переводов,0
-model,"ir.action,name",act_translation_form,Translations,Переводы,0
-model,"ir.action,name",act_action_url_form,URLs,Ссылки,0
-model,"ir.action,name",act_view_form,Views,Виды,0
-model,"ir.action,name",act_view_sc_form,View Shortcuts,Быстрый доступ к списку,0
-model,"ir.action,name",act_view_tree_width_form,View Tree Width,Ширина просмотра списка,0
-model,"ir.action,name",act_action_act_window_form,Window Actions,Действия окна,0
-model,"ir.action,name",act_action_wizard_form,Wizards,Мастера,0
-model,"ir.action,name",act_action_wizard_size_form,Wizard Sizes,Мастер размеров,0
-model,"ir.action.report,name",0,Action report,Действие отчета,0
-model,"ir.action.url,name",0,Action URL,Действие URL,0
-model,"ir.action.wizard,name",0,Action wizard,Действие мастера,0
-model,"ir.action.wizard_size,name",0,Action Wizard Size,Действие мастера размера,0
-model,"ir.attachment,name",0,Attachment,Вложение,0
-model,"ir.cache,name",0,Cache,Кэш,0
-model,"ir.cron,name",0,Cron,Планировщик,0
-model,"ir.date,name",0,Date,Дата,0
-model,"ir.default,name",0,Default,По умолчанию,0
-model,"ir.export.line,name",0,Export line,Экспорт строки,0
-model,"ir.export,name",0,Export,Экспорт,0
-model,"ir.lang,name",lang_cs,Czech,Чешский,0
-model,"ir.lang,name",lang_en,English,Английский,0
-model,"ir.lang,name",lang_fr,French,Французкий,0
-model,"ir.lang,name",lang_de,German,Немецкий,0
-model,"ir.lang,name",0,Language,Язык,0
-model,"ir.lang,name",lang_es_CO,Spanish (Colombia),Испанский (Колумбия),0
-model,"ir.lang,name",lang_es,Spanish (Spain),Испанский (Испания),0
-model,"ir.model.access,name",0,Model access,Шаблон доступа,0
-model,"ir.model.data,name",0,Model data,Данные шаблона,0
-model,"ir.model.field,name",0,Model field,Шаблон поля,0
-model,"ir.model,name",0,Model,Шаблон,0
-model,"ir.model.print_model_graph.init,name",0,Print Model Graph Init,Печать шаблона графика Init,0
-model,"ir.module.module.config_wizard.first,name",0,Module Config Wizard First,Мастер конфигурации модуля,0
-model,"ir.module.module.config_wizard.item,name",0,Config wizard to run after installing module,Запустить мастер конфигурации после установки модуля,0
-model,"ir.module.module.dependency,name",0,Module dependency,Зависимости,0
-model,"ir.module.module.install_upgrade.init,name",0,Module Install Upgrade Init,Модуль установить (обновить) инициализация,0
-model,"ir.module.module.install_upgrade.start,name",0,Module Install Upgrade Start,Начать установку (обновление) модуля,0
-model,"ir.module.module,name",0,Module,Модуль,0
-model,"ir.property,name",0,Property,Свойства,0
-model,"ir.rule.group,name",0,Rule group,Правило группы,0
-model,"ir.rule,name",0,Rule,Правило,0
-model,"ir.sequence,name",0,Sequence,Последовательность,0
-model,"ir.sequence.strict,name",0,Sequence Strict,Строгая последовательность,0
-model,"ir.sequence.type,name",0,Sequence type,Тип последовательности,0
-model,"ir.translation.clean.init,name",0,Clean translation init,Очистить перевод (инициализация),0
-model,"ir.translation.clean.start,name",0,Clean translation start,Очистить перевод (начала),0
-model,"ir.translation.export.init,name",0,Export translation - language and module,Экспорт перевода - язык и модуль,0
-model,"ir.translation.export.start,name",0,Export translation - file,Экспорт перевода - файл,0
-model,"ir.translation,name",0,Translation,Перевод,0
-model,"ir.translation.set_report.init,name",0,Update Report Translation,Обновить переводы отчетов,0
-model,"ir.translation.set_report.start,name",0,Update Report Translation,Обновить переводы отчетов,0
-model,"ir.translation.update.init,name",0,Update translation - language,Обновить перевод - языка,0
-model,"ir.ui.menu,name",menu_action,Actions,Действия,0
-model,"ir.ui.menu,name",menu_act_action,Actions,Действия,0
-model,"ir.ui.menu,name",menu_administration,Administration,Администрирование,0
-model,"ir.ui.menu,name",menu_attachment_form,Attachments,Вложения,0
-model,"ir.ui.menu,name",menu_translation_clean,Clean Translations,Очистить переводы,0
-model,"ir.ui.menu,name",menu_config_wizard_item_form,Config Wizard Items,Мастер конфигурации,0
-model,"ir.ui.menu,name",menu_property_form_default,Default Properties,Свойства по умолчанию,0
-model,"ir.ui.menu,name",menu_default_form,Defaults,По умолчанию,0
-model,"ir.ui.menu,name",menu_export_form,Exports,Экспортировать,0
-model,"ir.ui.menu,name",menu_translation_export,Export Translations,Экспорт переводов,0
-model,"ir.ui.menu,name",model_model_fields_form,Fields,Поля,0
-model,"ir.ui.menu,name",menu_lang_form,Languages,Языки,0
-model,"ir.ui.menu,name",menu_localization,Localization,Переводы,0
-model,"ir.ui.menu,name",menu_menu_form,Menus,Меню,0
-model,"ir.ui.menu,name",menu_models,Models,Шаблоны,0
-model,"ir.ui.menu,name",menu_model_form,Models,Шаблоны,0
-model,"ir.ui.menu,name",menu_model_access_form,Models Access,Шаблоны доступа,0
-model,"ir.ui.menu,name",menu_modules,Modules,Модули,0
-model,"ir.ui.menu,name",menu_module_form,Modules,Модули,0
-model,"ir.ui.menu,name",menu_module_install_upgrade,Perform Pending Installation/Upgrade,Выполните установки / обновления,0
-model,"ir.ui.menu,name",menu_property_form,Properties,Свойства,0
-model,"ir.ui.menu,name",menu_rule_group_form,Record Rules,Запись правил,0
-model,"ir.ui.menu,name",menu_action_report_form,Reports,Отчеты,0
-model,"ir.ui.menu,name",menu_cron_form,Scheduled Actions,Запланированные действия,0
-model,"ir.ui.menu,name",menu_scheduler,Scheduler,Планировщик,0
-model,"ir.ui.menu,name",menu_sequences,Sequences,Последовательности,0
-model,"ir.ui.menu,name",menu_sequence_form,Sequences,Последовательности,0
-model,"ir.ui.menu,name",menu_sequence_strict_form,Sequences Strict,Строгая нумерация,0
-model,"ir.ui.menu,name",menu_ir_sequence_type,Sequence Types,Тип нумерации,0
-model,"ir.ui.menu,name",menu_translation_set_report,Set Report Translations,Установить переводы для отчетов,0
-model,"ir.ui.menu,name",menu_translation_update,Synchronize Translations,Синхронизация переводов,0
-model,"ir.ui.menu,name",menu_translation_form,Translations,Переводы,0
-model,"ir.ui.menu,name",0,UI menu,Пользовательское меню,0
-model,"ir.ui.menu,name",menu_action_url,URLs,Ссылки,0
-model,"ir.ui.menu,name",menu_ui,User Interface,Пользовательский интерфейс,0
-model,"ir.ui.menu,name",menu_view,Views,Виды,0
-model,"ir.ui.menu,name",menu_view_sc,View Shortcuts,Просмотр быстрого доступа,0
-model,"ir.ui.menu,name",menu_view_tree_width,View Tree Width,Ширина просмотра списка,0
-model,"ir.ui.menu,name",menu_action_act_window,Window Actions,Действия окна,0
-model,"ir.ui.menu,name",menu_action_wizard,Wizards,Мастера,0
-model,"ir.ui.menu,name",menu_action_wizard_size,Wizard Sizes,Мастер размеров,0
-model,"ir.ui.view,name",0,View,Просмотр,0
-model,"ir.ui.view_sc,name",0,View shortcut,Краткое наименование просмотра,0
-model,"ir.ui.view_tree_width,name",0,View Tree Width,Ширина просмотра списка,0
-selection,"ir.action.act_window,view_type",0,Board,Доска,0
-selection,"ir.action.act_window,view_type",0,Form,Форма,0
-selection,"ir.action.act_window,view_type",0,Tree,Вид,0
-selection,"ir.action.keyword,keyword",0,Action form,Действие формы,0
-selection,"ir.action.keyword,keyword",0,Action tree,Действие списка,0
-selection,"ir.action.keyword,keyword",0,Form relate,Форма связана,0
-selection,"ir.action.keyword,keyword",0,Open Graph,Открыть график,0
-selection,"ir.action.keyword,keyword",0,Open tree,Открыть список,0
-selection,"ir.action.keyword,keyword",0,Print form,Печать формы,0
-selection,"ir.action.report,extension",0,ODT Document,ODT Документ,0
-selection,"ir.action.report,extension",0,PDF Document,PDF Документ,0
-selection,"ir.cron,interval_type",0,Days,Дни:,0
-selection,"ir.cron,interval_type",0,Hours,Часы,0
-selection,"ir.cron,interval_type",0,Minutes,Минуты,0
-selection,"ir.cron,interval_type",0,Months,Месяцы:,0
-selection,"ir.cron,interval_type",0,Weeks,Недели,0
-selection,"ir.cron,interval_type",0,Work Days,Рабочие дни,0
-selection,"ir.lang,direction",0,Left-to-right,Слева на право,0
-selection,"ir.lang,direction",0,Right-to-left,Справа на лево,0
-selection,"ir.module.module.config_wizard.item,state",0,Done,Выполнено,0
-selection,"ir.module.module.config_wizard.item,state",0,Open,Открыть,0
-selection,"ir.module.module.dependency,state",0,Installed,Установлен,0
-selection,"ir.module.module.dependency,state",0,Not Installed,Не установлен,0
-selection,"ir.module.module.dependency,state",0,To be installed,Для установки,0
-selection,"ir.module.module.dependency,state",0,To be removed,Для удаления,0
-selection,"ir.module.module.dependency,state",0,To be upgraded,Для обновления,0
-selection,"ir.module.module.dependency,state",0,Unknown,Неизвестно,0
-selection,"ir.module.module,state",0,Installed,Установлен,0
-selection,"ir.module.module,state",0,Not Installed,Не установлен,0
-selection,"ir.module.module,state",0,To be installed,Для установки,0
-selection,"ir.module.module,state",0,To be removed,Для удаления,0
-selection,"ir.module.module,state",0,To be upgraded,Для обновления,0
-selection,"ir.translation,type",0,Error,Ошибка,0
-selection,"ir.translation,type",0,Field,Поле,0
-selection,"ir.translation,type",0,Help,Помощь,0
-selection,"ir.translation,type",0,Model,Шаблон,0
-selection,"ir.translation,type",0,ODT,,0
-selection,"ir.translation,type",0,Selection,Выбор,0
-selection,"ir.translation,type",0,View,Просмотр,0
-selection,"ir.translation,type",0,Wizard Button,Кнопка мастера,0
-selection,"ir.ui.menu,action",0,ir.action.act_window,Действия окна,0
-selection,"ir.ui.menu,action",0,ir.action.report,Действия отчетов,0
-selection,"ir.ui.menu,action",0,ir.action.url,Действия ссылки,0
-selection,"ir.ui.menu,action",0,ir.action.wizard,Действия мастера,0
-selection,"ir.ui.view,type",0,,Резервный счет,0
-selection,"ir.ui.view,type",0,Board,Доска,0
-selection,"ir.ui.view,type",0,Form,Форма,0
-selection,"ir.ui.view,type",0,Graph,Графика,0
-selection,"ir.ui.view,type",0,Tree,Вид,0
-view,ir.action,0,Action,Действие,0
-view,ir.action,0,General,Основной,0
-view,ir.action,0,Keyword,Ключевое слово,0
-view,ir.action,0,Keywords,Ключевые слова,0
-view,ir.action.act_window,0,General,Основной,0
-view,ir.action.act_window,0,Keyword,Ключевое слово,0
-view,ir.action.act_window,0,Keywords,Ключевые слова,0
-view,ir.action.act_window,0,Open a Window,Открыть окно,0
-view,ir.action.act_window,0,Open Window,Открыть окно,0
-view,ir.action.act_window,0,Views,Виды,0
-view,ir.action.report,0,General,Основной,0
-view,ir.action.report,0,Keyword,Ключевое слово,0
-view,ir.action.report,0,Keywords,Ключевые слова,0
-view,ir.action.report,0,Report,Отчет,0
-view,ir.action.report,0,Report xml,Отчет xml,0
-view,ir.action.url,0,General,Основной,0
-view,ir.action.url,0,Keyword,Ключевое слово,0
-view,ir.action.url,0,Keywords,Ключевые слова,0
-view,ir.action.url,0,URL,Ссылка,0
-view,ir.action.wizard,0,General,Основной,0
-view,ir.action.wizard,0,Keyword,Ключевое слово,0
-view,ir.action.wizard,0,Keywords,Ключевые слова,0
-view,ir.action.wizard,0,Wizard,Мастер,0
-view,ir.action.wizard_size,0,Wizard Size,Мастер размера,0
-view,ir.action.wizard_size,0,Wizard Sizes,Мастер размеров,0
-view,ir.attachment,0,Attachments,Вложения,0
-view,ir.cron,0,Action to trigger,Действие триггера,0
-view,ir.cron,0,Scheduled Action,Запланированное действие,0
-view,ir.cron,0,Scheduled Actions,Запланированные действия,0
-view,ir.default,0,Default,По умолчанию,0
-view,ir.default,0,Defaults,По умолчанию,0
-view,ir.export,0,Exports,Экспортировать,0
-view,ir.lang,0,Date Formatting,Формат даты,0
-view,ir.lang,0,Language,Язык,0
-view,ir.lang,0,Languages,Языки,0
-view,ir.lang,0,Numbers Formatting,Формат числа,0
-view,ir.model,0,Fields Description,Описание полей,0
-view,ir.model,0,Model Description,Описание шаблона,0
-view,ir.model.access,0,Access controls,Контроль доступа,0
-view,ir.model.field,0,Fields,Поля,0
-view,ir.model.print_model_graph.init,0,Print Model Graph,Печать шаблона графика,0
-view,ir.module.module,0,Cancel Installation,Отмена установки,0
-view,ir.module.module,0,Cancel Uninstallation,Отмена удаления,0
-view,ir.module.module,0,Cancel Upgrade,Отмена обновления,0
-view,ir.module.module,0,Dependencies,Зависимые,0
-view,ir.module.module,0,Mark for Installation,Установить,0
-view,ir.module.module,0,Mark for Uninstallation (beta),Удалить (бета),0
-view,ir.module.module,0,Mark for Upgrade,Обновить,0
-view,ir.module.module,0,Module,Модуль,0
-view,ir.module.module,0,Modules,Модули,0
-view,ir.module.module.config_wizard.first,0,depending on the modules you have installed.,"в зависимости от модулей, которые вы установили.",0
-view,ir.module.module.config_wizard.first,0,Welcome to the module configuration wizard!,Добро пожаловать в мастер конфигурации модуля!,0
-view,ir.module.module.config_wizard.first,0,You will be able to configure your installation,Вы сможете настроить установки,0
-view,ir.module.module.config_wizard.item,0,Config Wizard Items,Мастер конфигурации,0
-view,ir.module.module.install_upgrade.init,0,Note that this operation my take a few minutes.,"Обратите внимание, что эта операция мой занять несколько минут.",0
-view,ir.module.module.install_upgrade.init,0,System Upgrade,Обновление системы,0
-view,ir.module.module.install_upgrade.init,0,Your system will be upgraded.,Ваша система обновлена,0
-view,ir.module.module.install_upgrade.start,0,System upgrade done,Обновление системы выполнено,0
-view,ir.module.module.install_upgrade.start,0,The modules have been upgraded / installed !,Модули были обновлены / установлен!,0
-view,ir.property,0,Properties,Свойства,0
-view,ir.property,0,Property,Свойства,0
-view,ir.rule,0,Test,Тест,0
-view,ir.rule.group,0,"If there is no test defined, the rule is always satisfied if not global","Если ни одна проверка не определена, правило выполняется всегда, если оно не глобальное",0
-view,ir.rule.group,0,Record rules,Правила записи,0
-view,ir.rule.group,0,The rule is satisfied if at least one test is True,"Это правило выполняется, если по крайней мере одна проверка истинна",0
-view,ir.sequence,0,${day},${day} - День,0
-view,ir.sequence,0,Day:,День:,0
-view,ir.sequence,0,"Legend (Placeholders for prefix, suffix)","Легенда (заполнители для префиксов, суффиксов)",0
-view,ir.sequence,0,${month},${month} - Месяц,0
-view,ir.sequence,0,Month:,Месяц:,0
-view,ir.sequence,0,Sequences,Последовательности,0
-view,ir.sequence,0,${year},${year} - Год,0
-view,ir.sequence,0,Year:,Год:,0
-view,ir.sequence.type,0,Sequence Type,Тип последовательности,0
-view,ir.translation,0,Translations,Переводы,0
-view,ir.translation.clean.init,0,Clean Translations,Очистить переводы,0
-view,ir.translation.clean.init,0,Clean Translations?,Очистить переводы?,0
-view,ir.translation.clean.start,0,Clean Translations,Очистить переводы,0
-view,ir.translation.clean.start,0,Clean Translations Succeed!,Переводы очищены успешно!,0
-view,ir.translation.export.init,0,Export Translation,Экспорт перевода,0
-view,ir.translation.export.start,0,Export Translation,Экспорт перевода,0
-view,ir.translation.set_report.init,0,Set Report Translations,Установить переводы для отчетов,0
-view,ir.translation.set_report.init,0,Synchronize Report Translations?,Синхронизация переводов для отчетов?,0
-view,ir.translation.set_report.start,0,Set Report Translations,Установить переводы для отчетов,0
-view,ir.translation.set_report.start,0,Set Translations Succeed!,Переводы установлены успешно!,0
-view,ir.translation.update.init,0,Synchronize Translations,Синхронизация переводов,0
-view,ir.ui.menu,0,Menu,Меню,0
-view,ir.ui.view,0,View,Просмотр,0
-view,ir.ui.view_sc,0,Shortcut,Краткое наименование,0
-view,ir.ui.view_tree_width,0,Views Tree Width,Ширина вида список,0
-view,ir.ui.view_tree_width,0,View Tree Width,Ширина просмотра списка,0
-wizard_button,"ir.model.print_model_graph,init,end",0,Cancel,Отменить,0
-wizard_button,"ir.model.print_model_graph,init,print",0,Print,Печать,0
-wizard_button,"ir.module.module.config_wizard,first,end",0,Cancel,Отменить,0
-wizard_button,"ir.module.module.config_wizard,first,wizard",0,Ok,Да,0
-wizard_button,"ir.module.module.install_upgrade,init,end",0,Cancel,Отменить,0
-wizard_button,"ir.module.module.install_upgrade,init,start",0,Start Upgrade,Начать обновление,0
-wizard_button,"ir.module.module.install_upgrade,start,menu",0,Ok,Да,0
-wizard_button,"ir.translation.clean,init,end",0,Cancel,Отменить,0
-wizard_button,"ir.translation.clean,init,start",0,Start,Начать,0
-wizard_button,"ir.translation.clean,start,end",0,Ok,Да,0
-wizard_button,"ir.translation.export,init,end",0,Cancel,Отменить,0
-wizard_button,"ir.translation.export,init,start",0,Start Export,Начать экспорт,0
-wizard_button,"ir.translation.export,start,end",0,Close,Закрыть,0
-wizard_button,"ir.translation.set_report,init,end",0,Cancel,Отменить,0
-wizard_button,"ir.translation.set_report,init,start",0,Start Update,Начать обновление,0
-wizard_button,"ir.translation.set_report,start,end",0,Ok,Да,0
-wizard_button,"ir.translation.update,init,end",0,Cancel,Отменить,0
-wizard_button,"ir.translation.update,init,start",0,Start Update,Начать обновление,0
diff --git a/trytond/ir/rule.py b/trytond/ir/rule.py
index cce6520..e4fafdb 100644
--- a/trytond/ir/rule.py
+++ b/trytond/ir/rule.py
@@ -1,13 +1,14 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import contextlib
 import time
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.tools import safe_eval
-from trytond.pyson import Eval, Get
+from trytond.pyson import Eval
 from trytond.transaction import Transaction
 from trytond.cache import Cache
+from trytond.const import OPERATORS
+from trytond.pool import Pool
 
 
 class RuleGroup(ModelSQL, ModelView):
@@ -25,9 +26,9 @@ class RuleGroup(ModelSQL, ModelView):
     rules = fields.One2Many('ir.rule', 'rule_group', 'Tests',
             help="The rule is satisfied if at least one test is True")
     groups = fields.Many2Many('ir.rule.group-res.group',
-            'rule_group_id', 'group_id', 'Groups')
+            'rule_group', 'group', 'Groups')
     users = fields.Many2Many('ir.rule.group-res.user',
-            'rule_group_id', 'user_id', 'Users')
+            'rule_group', 'user', 'Users')
     perm_read = fields.Boolean('Read Access')
     perm_write = fields.Boolean('Write Access')
     perm_create = fields.Boolean('Create Access')
@@ -64,19 +65,19 @@ class RuleGroup(ModelSQL, ModelView):
     def delete(self, ids):
         res = super(RuleGroup, self).delete(ids)
         # Restart the cache on the domain_get method of ir.rule
-        self.pool.get('ir.rule').domain_get.reset()
+        Pool().get('ir.rule').domain_get.reset()
         return res
 
     def create(self, vals):
         res = super(RuleGroup, self).create(vals)
         # Restart the cache on the domain_get method of ir.rule
-        self.pool.get('ir.rule').domain_get.reset()
+        Pool().get('ir.rule').domain_get.reset()
         return res
 
     def write(self, ids, vals):
         res = super(RuleGroup, self).write(ids, vals)
         # Restart the cache on the domain_get method of ir.rule
-        self.pool.get('ir.rule').domain_get.reset()
+        Pool().get('ir.rule').domain_get.reset()
         return res
 
 RuleGroup()
@@ -88,20 +89,24 @@ class Rule(ModelSQL, ModelView):
     _rec_name = 'field'
     _description = __doc__
     field = fields.Many2One('ir.model.field', 'Field',
-       domain=[('model', '=', Get(Eval('_parent_rule_group', {}), 'model'))],
-       select=1, required=True)
-    operator = fields.Selection([
-       ('=', '='),
-       ('<>', '<>'),
-       ('<=', '<='),
-       ('>=', '>='),
-       ('in', 'in'),
-       ('child_of', 'child_of'),
-       ], 'Operator', required=True, translate=False)
+        domain=[('model', '=', Eval('_parent_rule_group', {}).get('model'))],
+        select=1, required=True)
+    operator = fields.Selection([(x, x) for x in OPERATORS], 'Operator',
+        required=True, translate=False)
     operand = fields.Selection('get_operand','Operand', required=True)
     rule_group = fields.Many2One('ir.rule.group', 'Group', select=2,
        required=True, ondelete="CASCADE")
 
+    def init(self, module_name):
+        cursor = Transaction().cursor
+
+        super(Rule, self).init(module_name)
+
+        # Migration from 2.0: rename operator '<>' into '!='
+        cursor.execute('UPDATE "%s" '
+            'SET operator = %%s '
+            'WHERE operator = %%s' % self._table, ('!=', '<>'))
+
     def _operand_get(self, obj_name='', level=3, recur=None, root_tech='', root=''):
         res = {}
         if not obj_name:
@@ -110,7 +115,7 @@ class Rule(ModelSQL, ModelView):
         if not recur:
             recur = []
         with Transaction().set_context(language='en_US'):
-            obj_fields = self.pool.get(obj_name).fields_get()
+            obj_fields = Pool().get(obj_name).fields_get()
         key = obj_fields.keys()
         key.sort()
         for k in key:
@@ -153,11 +158,13 @@ class Rule(ModelSQL, ModelView):
             with Transaction().set_user(Transaction().context['user']):
                 return self.domain_get(model_name)
 
-        rule_group_obj = self.pool.get('ir.rule.group')
-        model_obj = self.pool.get('ir.model')
-        rule_group_user_obj = self.pool.get('ir.rule.group-res.user')
-        rule_group_group_obj = self.pool.get('ir.rule.group-res.group')
-        user_group_obj = self.pool.get('res.user-res.group')
+        pool = Pool()
+        rule_group_obj = pool.get('ir.rule.group')
+        model_obj = pool.get('ir.model')
+        rule_group_user_obj = pool.get('ir.rule.group-res.user')
+        rule_group_group_obj = pool.get('ir.rule.group-res.group')
+        user_group_obj = pool.get('res.user-res.group')
+        user_obj = pool.get('res.user')
 
         cursor = Transaction().cursor
         cursor.execute('SELECT r.id FROM "' + self._table + '" r ' \
@@ -167,37 +174,36 @@ class Rule(ModelSQL, ModelView):
                 "WHERE m.model = %s "
                     "AND g.perm_" + mode + " "
                     "AND (g.id IN (" \
-                            'SELECT rule_group_id ' \
+                            'SELECT rule_group ' \
                             'FROM "' + rule_group_user_obj._table + '" ' \
-                                "WHERE user_id = %s " \
-                            "UNION SELECT rule_group_id " \
+                                'WHERE "user" = %s ' \
+                            "UNION SELECT rule_group " \
                             'FROM "' + rule_group_group_obj._table + '" g_rel ' \
                                 'JOIN "' + user_group_obj._table + '" u_rel ' \
-                                    "ON (g_rel.group_id = u_rel.gid) " \
-                                "WHERE u_rel.uid = %s) " \
+                                    'ON (g_rel."group" = u_rel."group") ' \
+                                'WHERE u_rel."user" = %s) ' \
                         "OR default_p " \
                         "OR g.global_p)",
                 (model_name, Transaction().user, Transaction().user))
         ids = [x[0] for x in cursor.fetchall()]
         if not ids:
             return '', []
-        obj = self.pool.get(model_name)
+        obj = pool.get(model_name)
         clause = {}
         clause_global = {}
         operand2query = self._operand_get('res.user', level=1,
                 recur=['many2one'], root_tech='user', root='User')
+        user_id = Transaction().user
+        with Transaction().set_user(0, set_context=True):
+            user = user_obj.browse(user_id)
         # Use root user without context to prevent recursion
-        user = Transaction().user
         with contextlib.nested(Transaction().set_user(0),
                 Transaction().set_context(user=0)):
             for rule in self.browse(ids):
-                operator = rule.operator
-                if operator == '<>':
-                    operator = '!='
                 dom = safe_eval("[('%s', '%s', %s)]" % \
-                        (rule.field.name, operator,
+                        (rule.field.name, rule.operator,
                             operand2query[rule.operand]), {
-                                'user': self.pool.get('res.user').browse(user),
+                                'user': user,
                                 'time': time,
                                 })
 
@@ -217,14 +223,15 @@ class Rule(ModelSQL, ModelView):
             'WHERE m.model = %s ' \
                 'AND (g.id NOT IN (SELECT rule_group ' \
                         'FROM "' + self._table + '")) ' \
-                'AND (g.id IN (SELECT rule_group_id ' \
+                'AND (g.id IN (SELECT rule_group ' \
                         'FROM "' + rule_group_user_obj._table + '" ' \
-                        'WHERE user_id = %s ' \
-                        'UNION SELECT rule_group_id ' \
+                        'WHERE "user" = %s ' \
+                        'UNION SELECT rule_group ' \
                         'FROM "' + rule_group_group_obj._table + '" g_rel ' \
                             'JOIN "' + user_group_obj._table + '" u_rel ' \
-                                'ON g_rel.group_id = u_rel.gid ' \
-                        'WHERE u_rel.uid = %s))', (model_name, user, user))
+                                'ON g_rel."group" = u_rel."group" ' \
+                        'WHERE u_rel."user" = %s))',
+            (model_name, user_id, user_id))
         fetchone = cursor.fetchone()
         if fetchone:
             group_id = fetchone[0]
diff --git a/trytond/ir/rule.xml b/trytond/ir/rule.xml
index 5d17fc2..d87e510 100644
--- a/trytond/ir/rule.xml
+++ b/trytond/ir/rule.xml
@@ -29,9 +29,9 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="name" colspan="5"/>
                     <field name="rules" colspan="6"/>
                     <label string="The rule is satisfied if at least one test is True"
-                        colspan="6" align="0.0" id="satisfied"/>
+                        colspan="6" xalign="0.0" id="satisfied"/>
                     <label string="If there is no test defined, the rule is always satisfied if not global"
-                        colspan="6" align="0.0" id="no_test"/>
+                        colspan="6" xalign="0.0" id="no_test"/>
                 </form>
                 ]]>
             </field>
@@ -42,14 +42,14 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Record rules">
-                    <field name="perm_read" select="2"/>
-                    <field name="perm_write" select="2"/>
-                    <field name="perm_create" select="2"/>
-                    <field name="perm_delete" select="2"/>
-                    <field name="model" select="1"/>
-                    <field name="name" select="2"/>
-                    <field name="global_p" select="1"/>
-                    <field name="default_p" select="1"/>
+                    <field name="perm_read"/>
+                    <field name="perm_write"/>
+                    <field name="perm_create"/>
+                    <field name="perm_delete"/>
+                    <field name="model"/>
+                    <field name="name"/>
+                    <field name="global_p"/>
+                    <field name="default_p"/>
                 </tree>
               ]]>
             </field>
diff --git a/trytond/ir/sequence.py b/trytond/ir/sequence.py
index aa13ef7..170eebe 100644
--- a/trytond/ir/sequence.py
+++ b/trytond/ir/sequence.py
@@ -1,13 +1,17 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 from string import Template
 import datetime
 import time
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.tools import datetime_strftime
-from trytond.pyson import In, Eval, Not
+from trytond.pyson import Eval
 from trytond.transaction import Transaction
+from trytond.pool import Pool
+from trytond.config import CONFIG
+from trytond.backend import TableHandler
+
+sql_sequence = CONFIG.options['db_type'] == 'postgresql'
 
 
 class SequenceType(ModelSQL, ModelView):
@@ -24,10 +28,11 @@ class Sequence(ModelSQL, ModelView):
     "Sequence"
     _name = 'ir.sequence'
     _description = __doc__
+    _strict = False
     name = fields.Char('Sequence Name', required=True, translate=True)
     code = fields.Selection('code_get', 'Sequence Code', required=True,
-            states={
-                'readonly': In('code', Eval('context', {})),
+        states={
+            'readonly': Eval('context', {}).contains('code'),
             })
     active = fields.Boolean('Active')
     prefix = fields.Char('Prefix')
@@ -37,32 +42,34 @@ class Sequence(ModelSQL, ModelView):
         ('decimal timestamp', 'Decimal Timestamp'),
         ('hexadecimal timestamp', 'Hexadecimal Timestamp'),
         ], 'Type')
-    number_next = fields.Integer('Next Number',
-            states={
-                'invisible': Not(In(Eval('type'), ['incremental'])),
+    number_next_internal = fields.Integer('Next Number',
+        states={
+            'invisible': ~Eval('type').in_(['incremental']),
             }, depends=['type'])
+    number_next = fields.Function(number_next_internal, 'get_number_next',
+        'set_number_next')
     number_increment = fields.Integer('Increment Number',
-            states={
-                'invisible': Not(In(Eval('type'), ['incremental'])),
+        states={
+            'invisible': ~Eval('type').in_(['incremental']),
             }, depends=['type'])
     padding = fields.Integer('Number padding',
-            states={
-                'invisible': Not(In(Eval('type'), ['incremental'])),
+        states={
+            'invisible': ~Eval('type').in_(['incremental']),
             }, depends=['type'])
-    timestamp_rounding = fields.Integer('Timestamp Rounding', required=True,
-            states={
-                'invisible': Not(In(Eval('type'),
-                    ['decimal timestamp', 'hexadecimal timestamp'])),
+    timestamp_rounding = fields.Float('Timestamp Rounding', required=True,
+        states={
+            'invisible': ~Eval('type').in_(
+                ['decimal timestamp', 'hexadecimal timestamp']),
             }, depends=['type'])
     timestamp_offset = fields.Float('Timestamp Offset',
-            states={
-                'invisible': Not(In(Eval('type'),
-                    ['decimal timestamp', 'hexadecimal timestamp'])),
+        states={
+            'invisible': ~Eval('type').in_(
+                ['decimal timestamp', 'hexadecimal timestamp']),
             }, depends=['type'])
     last_timestamp = fields.Integer('Last Timestamp',
-            states={
-                'invisible': Not(In(Eval('type'),
-                    ['decimal timestamp', 'hexadecimal timestamp'])),
+        states={
+            'invisible': ~Eval('type').in_(
+                ['decimal timestamp', 'hexadecimal timestamp']),
             }, depends=['type'])
 
     def __init__(self):
@@ -77,6 +84,26 @@ class Sequence(ModelSQL, ModelView):
             'future_last_timestamp': 'Last Timestamp could not be in future!',
             })
 
+    def init(self, module_name):
+        cursor = Transaction().cursor
+        table = TableHandler(cursor, self, module_name)
+
+        # Migration from 2.0 rename number_next into number_next_internal
+        table.column_rename('number_next', 'number_next_internal')
+
+        super(Sequence, self).init(module_name)
+
+        # Migration from 2.0 create sql_sequence
+        if sql_sequence and not self._strict:
+            sequence_ids = self.search([])
+            for sequence in self.browse(sequence_ids):
+                if sequence.type != 'incremental':
+                    continue
+                if not TableHandler.sequence_exist(cursor,
+                        self._sql_sequence_name(sequence)):
+                    self.create_sql_sequence(sequence,
+                        sequence.number_next_internal)
+
     def default_active(self):
         return True
 
@@ -104,8 +131,56 @@ class Sequence(ModelSQL, ModelView):
     def default_code(self):
         return Transaction().context.get('code', False)
 
+    def get_number_next(self, ids, name):
+        cursor = Transaction().cursor
+        result = {}
+        for sequence in self.browse(ids):
+            sql_name = self._sql_sequence_name(sequence)
+            if sql_sequence and not self._strict:
+                cursor.execute('SELECT '
+                    'CASE WHEN NOT is_called THEN last_value '
+                        'ELSE last_value + increment_by '
+                    'END FROM "%s"' % sql_name)
+                value, = cursor.fetchone()
+            else:
+                value = sequence.number_next_internal
+            result[sequence.id] = value
+        return result
+
+    def set_number_next(self, ids, name, value):
+        cursor = Transaction().cursor
+        super(Sequence, self).write(ids, {
+                'number_next_internal': value,
+                })
+
+    def create(self, values):
+        sequence_id = super(Sequence, self).create(values)
+        if sql_sequence and not self._strict:
+            sequence = self.browse(sequence_id)
+            self.update_sql_sequence(sequence, values.get('number_next',
+                    self.default_number_next()))
+        return sequence_id
+
+    def write(self, ids, values):
+        result = super(Sequence, self).write(ids, values)
+        if sql_sequence and not self._strict:
+            ids = [ids] if isinstance(ids, (int, long)) else ids
+            sequences = self.browse(ids)
+            for sequence in sequences:
+                self.update_sql_sequence(sequence, values.get('number_next'))
+        return result
+
+    def delete(self, ids):
+        if sql_sequence and not self._strict:
+            ids = [ids] if isinstance(ids, (int, long)) else ids
+            sequences = self.browse(ids)
+            for sequence in sequences:
+                self.delete_sql_sequence(sequence)
+        return super(Sequence, self).delete(ids)
+
     def code_get(self):
-        sequence_type_obj = self.pool.get('ir.sequence.type')
+        pool = Pool()
+        sequence_type_obj = pool.get('ir.sequence.type')
         sequence_type_ids = sequence_type_obj.search([])
         sequence_types = sequence_type_obj.browse(sequence_type_ids)
         return [(x.code, x.name) for x in sequence_types]
@@ -130,8 +205,50 @@ class Sequence(ModelSQL, ModelView):
                 return False
         return True
 
+    def _sql_sequence_name(self, sequence):
+        'Return SQL sequence name'
+        return '%s_%s' % (self._table, sequence.id)
+
+    def create_sql_sequence(self, sequence, number_next=None):
+        'Create the SQL sequence'
+        cursor = Transaction().cursor
+        if sequence.type != 'incremental':
+            return
+        if number_next is None:
+            number_next = sequence.number_next
+        cursor.execute('CREATE SEQUENCE "' + self._sql_sequence_name(sequence)
+            + '" INCREMENT BY %s START WITH %s', (sequence.number_increment,
+                number_next))
+
+    def update_sql_sequence(self, sequence, number_next=None):
+        'Update the SQL sequence'
+        cursor = Transaction().cursor
+        exist = TableHandler.sequence_exist(cursor,
+            self._sql_sequence_name(sequence))
+        if sequence.type != 'incremental':
+            if exist:
+                self.delete_sql_sequence(sequence)
+            return
+        if not exist:
+            self.create_sql_sequence(sequence, number_next)
+            return
+        if number_next is None:
+            number_next = sequence.number_next
+        cursor.execute('ALTER SEQUENCE "' + self._sql_sequence_name(sequence)
+            + '" INCREMENT BY %s RESTART WITH %s', (sequence.number_increment,
+                number_next))
+
+    def delete_sql_sequence(self, sequence):
+        'Delete the SQL sequence'
+        cursor = Transaction().cursor
+        if sequence.type != 'incremental':
+            return
+        cursor.execute('DROP SEQUENCE "%s"'
+            % self._sql_sequence_name(sequence))
+
     def _process(self, string, date=None):
-        date_obj = self.pool.get('ir.date')
+        pool = Pool()
+        date_obj = pool.get('ir.date')
         if not date:
             date = date_obj.today()
         year = datetime_strftime(date, '%Y')
@@ -149,13 +266,20 @@ class Sequence(ModelSQL, ModelView):
 
     def _get_sequence(self, sequence):
         if sequence.type == 'incremental':
-            #Pre-fetch number_next
-            number_next = sequence.number_next or 0
+            if sql_sequence and not self._strict:
+                cursor = Transaction().cursor
+                cursor.execute('SELECT nextval(\'"%s"\')'
+                    % self._sql_sequence_name(sequence))
+                number_next, = cursor.fetchone()
+            else:
+                #Pre-fetch number_next
+                number_next = sequence.number_next_internal
 
-            with Transaction().set_user(0):
-                self.write(sequence.id, {
-                        'number_next': number_next + sequence.number_increment,
-                        })
+                with Transaction().set_user(0):
+                    self.write(sequence.id, {
+                            'number_next_internal': (number_next
+                                + sequence.number_increment),
+                            })
             return '%%0%sd' % sequence.padding % number_next
         elif sequence.type in ('decimal timestamp', 'hexadecimal timestamp'):
             timestamp = sequence.last_timestamp
@@ -207,6 +331,7 @@ class SequenceStrict(Sequence):
     "Sequence Strict"
     _name = 'ir.sequence.strict'
     _description = __doc__
+    _strict = True
 
     def get_id(self, clause):
         Transaction().cursor.lock(self._table)
diff --git a/trytond/ir/sequence.xml b/trytond/ir/sequence.xml
index 1c0bd9d..03ae113 100644
--- a/trytond/ir/sequence.xml
+++ b/trytond/ir/sequence.xml
@@ -44,11 +44,11 @@ this repository contains the full copyright notices and license terms. -->
                     <separator string="Legend (Placeholders for prefix, suffix)" colspan="4"
                         id="legend"/>
                     <label string="Year:" id="label_year"/>
-                    <label string="${year}" colspan="3" align="0.0" id="year"/>
+                    <label string="${year}" colspan="3" xalign="0.0" xexpand="1" id="year"/>
                     <label string="Month:" id="label_month"/>
-                    <label string="${month}" colspan="3" align="0.0" id="month"/>
+                    <label string="${month}" colspan="3" xalign="0.0" xexpand="1" id="month"/>
                     <label string="Day:" id="label_day"/>
-                    <label string="${day}" colspan="3" align="0.0" id="day"/>
+                    <label string="${day}" colspan="3" xalign="0.0" xexpand="1" id="day"/>
                 </form>
                 ]]>
             </field>
@@ -59,10 +59,10 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Sequences">
-                    <field name="name" select="1"/>
-                    <field name="code" select="1"/>
-                    <field name="type" select="1"/>
-                    <field name="active" select="2"/>
+                    <field name="name"/>
+                    <field name="code"/>
+                    <field name="type"/>
+                    <field name="active"/>
                 </tree>
                 ]]>
             </field>
@@ -147,7 +147,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Sequence Type">
-                    <field name="name" select="1"/>
+                    <field name="name"/>
                     <field name="code"/>
                 </tree>
                 ]]>
diff --git a/trytond/ir/translation.py b/trytond/ir/translation.py
index 5206264..4a63df7 100644
--- a/trytond/ir/translation.py
+++ b/trytond/ir/translation.py
@@ -1,22 +1,22 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import contextlib
-import base64
 try:
     import cStringIO as StringIO
 except ImportError:
     import StringIO
 import zipfile
+import polib
+import operator
 from xml import dom
 from xml.dom import minidom
 from difflib import SequenceMatcher
-import csv
 import os
 try:
     from hashlib import md5
 except ImportError:
     from md5 import md5
+from functools import reduce
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.model.cacheable import Cacheable
 from trytond.wizard import Wizard
@@ -25,6 +25,7 @@ from trytond.tools import file_open, reduce_ids
 from trytond.backend import TableHandler, FIELDS
 from trytond.pyson import PYSONEncoder
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 
 TRANSLATION_TYPE = [
     ('field', 'Field'),
@@ -37,13 +38,12 @@ TRANSLATION_TYPE = [
     ('error', 'Error'),
 ]
 
-HEADER = ['type', 'name', 'res_id', 'src', 'value', 'fuzzy']
 
+class TrytonPOFile(polib.POFile):
 
-class TRYTON(csv.excel):
-    lineterminator = '\n'
-
-csv.register_dialect("TRYTON", TRYTON)
+    def sort(self):
+        return super(TrytonPOFile, self).sort(
+            key=lambda x: (x.msgctxt, x.msgid))
 
 
 class Translation(ModelSQL, ModelView, Cacheable):
@@ -70,12 +70,6 @@ class Translation(ModelSQL, ModelView, Cacheable):
                 'UNIQUE (name, res_id, lang, type, src_md5, module)',
                 'Translation must be unique'),
         ]
-        self._constraints += [
-            ('check_unique_model', 'unique_model'),
-        ]
-        self._error_messages.update({
-            'unique_model': "Translation of type 'model' must be unique!",
-            })
         self._max_len = 10240
 
     def init(self, module_name):
@@ -115,20 +109,6 @@ class Translation(ModelSQL, ModelView, Cacheable):
     def default_fuzzy(self):
         return False
 
-    def check_unique_model(self, ids):
-        "Check unique model"
-        cursor = Transaction().cursor
-        query = ('SELECT count(1) FROM "%s" '
-                'WHERE type = %%s '
-                    'AND res_id != 0 '
-                'GROUP BY name, res_id, lang, type, src '
-                'HAVING count(1) > 1' % self._table)
-        cursor.execute(query, ('model',))
-        rowcount = cursor.rowcount
-        if rowcount == -1 or rowcount is None:
-            rowcount = len(cursor.fetchall())
-        return not bool(rowcount)
-
     def get_model(self, ids, name):
         res = {}
         for translation in self.browse(ids):
@@ -143,7 +123,8 @@ class Translation(ModelSQL, ModelView, Cacheable):
         return [('id', 'in', [x[0] for x in cursor.fetchall()])]
 
     def get_language(self):
-        lang_obj = self.pool.get('ir.lang')
+        pool = Pool()
+        lang_obj = pool.get('ir.lang')
         lang_ids = lang_obj.search([])
         langs = lang_obj.browse(lang_ids)
         res = [(lang.code, lang.name) for lang in langs]
@@ -153,8 +134,9 @@ class Translation(ModelSQL, ModelView, Cacheable):
         return md5((src or '').encode('utf-8')).hexdigest()
 
     def _get_ids(self, name, ttype, lang, ids):
-        model_fields_obj = self.pool.get('ir.model.field')
-        model_obj = self.pool.get('ir.model')
+        pool = Pool()
+        model_fields_obj = pool.get('ir.model.field')
+        model_obj = pool.get('ir.model')
 
         translations, to_fetch = {}, []
         name = unicode(name)
@@ -220,8 +202,9 @@ class Translation(ModelSQL, ModelView, Cacheable):
         return translations
 
     def _set_ids(self, name, ttype, lang, ids, value):
-        model_fields_obj = self.pool.get('ir.model.field')
-        model_obj = self.pool.get('ir.model')
+        pool = Pool()
+        model_fields_obj = pool.get('ir.model.field')
+        model_obj = pool.get('ir.model')
 
         if lang == 'en_US':
             return 0
@@ -262,7 +245,7 @@ class Translation(ModelSQL, ModelView, Cacheable):
                             'fuzzy': False,
                             })
             return len(ids)
-        model_obj = self.pool.get(model_name)
+        model_obj = pool.get(model_name)
         for record in model_obj.browse(ids):
             ids2 = self.search([
                 ('lang', '=', lang),
@@ -438,8 +421,9 @@ class Translation(ModelSQL, ModelView, Cacheable):
             vals['src_md5'] = self.get_src_md5(vals.get('src'))
         return super(Translation, self).write(ids, vals)
 
-    def translation_import(self, lang, module, datas):
-        model_data_obj = self.pool.get('ir.model.data')
+    def translation_import(self, lang, module, po_path):
+        pool = Pool()
+        model_data_obj = pool.get('ir.model.data')
         model_data_ids = model_data_obj.search([
             ('module', '=', module),
             ])
@@ -449,9 +433,7 @@ class Translation(ModelSQL, ModelView, Cacheable):
             fs_id2model_data[model_data.model][model_data.fs_id] = model_data
 
         translation_ids = []
-        reader = csv.reader(datas)
-        for row in reader:
-            break
+        pofile = polib.pofile(po_path)
 
         id2translation = {}
         key2ids = {}
@@ -471,13 +453,11 @@ class Translation(ModelSQL, ModelView, Cacheable):
             key2ids.setdefault(key, []).append(translation.id)
             id2translation[translation.id] = translation
 
-        for row in reader:
-            ttype = row[0].decode('utf-8')
-            name = row[1].decode('utf-8')
-            res_id = row[2].decode('utf-8')
-            src = row[3].decode('utf-8')
-            value = row[4].decode('utf-8')
-            fuzzy = bool(int(row[5]))
+        for entry in pofile:
+            ttype, name, res_id = entry.msgctxt.split(':')
+            src = entry.msgid
+            value = entry.msgstr
+            fuzzy = 'fuzzy' in entry.flags
             noupdate = False
 
             model = name.split(',')[0]
@@ -537,7 +517,8 @@ class Translation(ModelSQL, ModelView, Cacheable):
         return len(translation_ids)
 
     def translation_export(self, lang, module):
-        model_data_obj = self.pool.get('ir.model.data')
+        pool = Pool()
+        model_data_obj = pool.get('ir.model.data')
 
         model_data_ids = model_data_obj.search([
             ('module', '=', module),
@@ -547,10 +528,10 @@ class Translation(ModelSQL, ModelView, Cacheable):
             db_id2fs_id.setdefault(model_data.model, {})
             db_id2fs_id[model_data.model][model_data.db_id] = model_data.fs_id
 
-        buf = StringIO.StringIO()
-        writer = csv.writer(buf, 'TRYTON')
-        writer.writerow(HEADER)
-        rows = []
+        pofile = TrytonPOFile(wrapwidth=78)
+        pofile.metadata = {
+            'Content-Type': 'text/plain; charset=utf-8',
+            }
 
         with Transaction().set_context(language='en_US'):
             translation_ids = self.search([
@@ -558,32 +539,22 @@ class Translation(ModelSQL, ModelView, Cacheable):
                 ('module', '=', module),
                 ], order=[])
         for translation in self.browse(translation_ids):
-            row = []
-            for field in HEADER:
-                if field == 'res_id':
-                    res_id = translation[field]
-                    if res_id:
-                        model = translation.name.split(',')[0]
-                        if model in db_id2fs_id:
-                            res_id = db_id2fs_id[model].get(res_id)
-                        else:
-                            break
-                    row.append(res_id)
-                elif field == 'fuzzy':
-                    row.append(int(translation[field]))
+            flags = [] if not translation['fuzzy'] else ['fuzzy']
+            trans_ctxt = '%(type)s:%(name)s' % translation
+            res_id = translation['res_id']
+            if res_id:
+                model, _ = translation.name.split(',')
+                if model in db_id2fs_id:
+                    res_id = db_id2fs_id[model].get(res_id)
                 else:
-                    value = translation[field] or ''
-                    value = value.encode('utf-8')
-                    row.append(value)
-            if len(row) == len(HEADER):
-                rows.append(row)
-
-        rows.sort()
-        writer.writerows(rows)
+                    continue
+            trans_ctxt += ':%s' % res_id
+            entry = polib.POEntry(msgid=(translation.src or ''),
+                msgstr=(translation.value or ''), msgctxt=trans_ctxt, flags=flags)
+            pofile.append(entry)
 
-        file_data = buf.getvalue()
-        buf.close()
-        return file_data
+        pofile.sort()
+        return unicode(pofile).encode('utf-8')
 
 Translation()
 
@@ -651,8 +622,9 @@ class ReportTranslationSet(Wizard):
         return strings
 
     def _set_report_translation(self, data):
-        report_obj = self.pool.get('ir.action.report')
-        translation_obj = self.pool.get('ir.translation')
+        pool = Pool()
+        report_obj = pool.get('ir.action.report')
+        translation_obj = pool.get('ir.translation')
 
         with Transaction().set_context(active_test=False):
             report_ids = report_obj.search([])
@@ -680,7 +652,7 @@ class ReportTranslationSet(Wizard):
                 with file_open(report.report.replace('/', os.sep),
                         mode='rb') as fp:
                     odt_content = fp.read()
-            for content in (report.report_content_data, odt_content):
+            for content in (report.report_content_custom, odt_content):
                 if not content:
                     continue
 
@@ -698,14 +670,8 @@ class ReportTranslationSet(Wizard):
                 document = dom.minidom.parseString(style_xml)
                 strings += self._translate_report(document.documentElement)
 
-            style_content = None
-            try:
-                style_content = base64.decodestring(report.style_content)
-            except Exception:
-                pass
-
-            if style_content:
-                style_io = StringIO.StringIO(style_content)
+            if report.style_content:
+                style_io = StringIO.StringIO(report.style_content)
                 style_z = zipfile.ZipFile(style_io, mode='r')
                 style_xml = style_z.read('styles.xml')
 
@@ -807,189 +773,178 @@ class TranslationClean(Wizard):
         },
     }
 
-    def _clean_translation(self, data):
-        translation_obj = self.pool.get('ir.translation')
-        model_data_obj = self.pool.get('ir.model.data')
-        report_obj = self.pool.get('ir.action.report')
+    def _clean_field(self, translation):
+        pool = Pool()
+        try:
+            model_name, field_name = translation.name.split(',', 1)
+        except ValueError:
+            return True
+        if model_name not in pool.object_name_list():
+            return True
+        model_obj = pool.get(model_name)
+        if field_name not in model_obj._columns:
+            return True
+
+    def _clean_model(self, translation):
+        pool = Pool()
+        try:
+            model_name, field_name = translation.name.split(',', 1)
+        except ValueError:
+            return True
+        if model_name not in pool.object_name_list():
+            return True
+        if translation.res_id:
+            model_obj = pool.get(model_name)
+            if field_name not in model_obj._columns:
+                return True
+            field = model_obj._columns[field_name]
+            if (not hasattr(field, 'translate')
+                    or not field.translate):
+                return True
+        elif field_name not in ('name'):
+            return True
+
+    def _clean_odt(self, translation):
+        pool = Pool()
+        report_obj = pool.get('ir.action.report')
+        with Transaction().set_context(active_test=False):
+            if not report_obj.search([
+                        ('report_name', '=', translation.name),
+                        ]):
+                return True
+
+    def _clean_selection(self, translation):
+        pool = Pool()
+        try:
+            model_name, field_name = translation.name.split(',', 1)
+        except ValueError:
+            return True
+        if model_name not in pool.object_name_list():
+            return True
+        model_obj = pool.get(model_name)
+        if field_name not in model_obj._columns:
+            return True
+        field = model_obj._columns[field_name]
+        if (not hasattr(field, 'selection')
+                or not field.selection
+                or not getattr(field, 'translate_selection', True)):
+            return True
+        if (isinstance(field.selection, (tuple, list))
+                and translation.src not in dict(field.selection).values()):
+            return True
+
+    def _clean_view(self, translation):
+        pool = Pool()
+        model_name = translation.name
+        if model_name not in pool.object_name_list():
+            return True
+
+    def _clean_wizard_button(self, translation):
+        pool = Pool()
+        try:
+            wizard_name, state_name, button_name = \
+                    translation.name.split(',', 2)
+        except ValueError:
+            return True
+        if (wizard_name not in
+                pool.object_name_list(type='wizard')):
+            return True
+        wizard = pool.get(wizard_name, type='wizard')
+        if not wizard:
+            return True
+        state = wizard.states.get(state_name)
+        if not state:
+            return True
+        for but in state['result']['state']:
+            if but[0] == button_name:
+                return False
+        return True
+
+    def _clean_help(self, translation):
+        pool = Pool()
+        try:
+            model_name, field_name = translation.name.split(',', 1)
+        except ValueError:
+            return True
+        if model_name not in pool.object_name_list():
+            return True
+        model_obj = pool.get(model_name)
+        if field_name not in model_obj._columns:
+            return True
+        field = model_obj._columns[field_name]
+        return not field.help
+
+    def _clean_error(self, translation):
+        pool = Pool()
+        model_name = translation.name
+        if model_name in (
+                'delete_xml_record',
+                'xml_record_desc',
+                'write_xml_record',
+                'not_found_in_selection',
+                'relation_not_found',
+                'too_many_relations_found',
+                'xml_id_syntax_error',
+                'reference_syntax_error',
+                'delete_workflow_record',
+                'domain_validation_record',
+                'required_validation_record',
+                'size_validation_record',
+                'digits_validation_record',
+                'access_error',
+                'read_error',
+                'write_error',
+                'required_field',
+                'foreign_model_missing',
+                'foreign_model_exist',
+                'search_function_missing',
+                ):
+            return False
+        if model_name in pool.object_name_list():
+            model_obj = pool.get(model_name)
+            errors = model_obj._error_messages.values() + \
+                    model_obj._sql_error_messages.values()
+            for _, _, error in model_obj._sql_constraints:
+                errors.append(error)
+            if translation.src not in errors:
+                return True
+        elif model_name in pool.object_name_list(type='wizard'):
+            wizard_obj = pool.get(model_name, type='wizard')
+            errors = wizard_obj._error_messages.values()
+            if translation.src not in errors:
+                return True
+        else:
+            return True
 
-        offset = 0
-        cursor = Transaction().cursor
-        limit = cursor.IN_MAX
-        while True:
-            to_delete = []
-            translation_ids = translation_obj.search([], offset=offset,
-                    limit=limit)
-            if not translation_ids:
-                break
-            offset += limit
-            for translation in translation_obj.browse(translation_ids):
-                if translation.type == 'field':
-                    try:
-                        model_name, field_name = translation.name.split(',', 1)
-                    except ValueError:
-                        to_delete.append(translation.id)
-                        continue
-                    if model_name not in self.pool.object_name_list():
-                        to_delete.append(translation.id)
-                        continue
-                    model_obj = self.pool.get(model_name)
-                    if field_name not in model_obj._columns:
-                        to_delete.append(translation.id)
-                        continue
-                elif translation.type == 'model':
-                    try:
-                        model_name, field_name = translation.name.split(',', 1)
-                    except ValueError:
-                        to_delete.append(translation.id)
-                        continue
-                    if model_name not in self.pool.object_name_list():
-                        to_delete.append(translation.id)
-                        continue
-                    if translation.res_id:
-                        model_obj = self.pool.get(model_name)
-                        if field_name not in model_obj._columns:
-                            to_delete.append(translation.id)
-                            continue
-                        field = model_obj._columns[field_name]
-                        if not hasattr(field, 'translate') or \
-                                not field.translate:
-                            to_delete.append(translation.id)
-                            continue
-                    elif field_name not in ('name'):
-                        to_delete.append(translation.id)
-                        continue
-                elif translation.type == 'odt':
-                    with Transaction().set_context(active_test=False):
-                        if not report_obj.search([
-                            ('report_name', '=', translation.name),
-                            ]):
-                            to_delete.append(translation.id)
-                            continue
-                elif translation.type == 'selection':
-                    try:
-                        model_name, field_name = translation.name.split(',', 1)
-                    except ValueError:
-                        to_delete.append(translation.id)
-                        continue
-                    if model_name not in self.pool.object_name_list():
-                        to_delete.append(translation.id)
-                        continue
-                    model_obj = self.pool.get(model_name)
-                    if field_name not in model_obj._columns:
-                        to_delete.append(translation.id)
-                        continue
-                    field = model_obj._columns[field_name]
-                    if not hasattr(field, 'selection') or not field.selection \
-                            or not ((hasattr(field, 'translate_selection') and \
-                            field.translate_selection) or True):
-                        to_delete.append(translation.id)
-                        continue
-                    if isinstance(field.selection, (tuple, list)) \
-                            and translation.src not in \
-                            dict(field.selection).values():
-                        to_delete.append(translation.id)
-                        continue
-                elif translation.type == 'view':
-                    model_name = translation.name
-                    if model_name not in self.pool.object_name_list():
-                        to_delete.append(translation.id)
-                        continue
-                elif translation.type == 'wizard_button':
-                    try:
-                        wizard_name, state_name, button_name = \
-                                translation.name.split(',', 2)
-                    except ValueError:
-                        to_delete.append(translation.id)
-                        continue
-                    if wizard_name not in \
-                            self.pool.object_name_list(type='wizard'):
-                        to_delete.append(translation.id)
-                        continue
-                    wizard = self.pool.get(wizard_name, type='wizard')
-                    if not wizard:
-                        to_delete.append(translation.id)
-                        continue
-                    state = wizard.states.get(state_name)
-                    if not state:
-                        to_delete.append(translation.id)
-                        continue
-                    find = False
-                    for but in state['result']['state']:
-                        if but[0] == button_name:
-                            find = True
-                    if not find:
-                        to_delete.append(translation.id)
-                        continue
-                elif translation.type == 'help':
-                    try:
-                        model_name, field_name = translation.name.split(',', 1)
-                    except ValueError:
-                        to_delete.append(translation.id)
-                        continue
-                    if model_name not in self.pool.object_name_list():
-                        to_delete.append(translation.id)
-                        continue
-                    model_obj = self.pool.get(model_name)
-                    if field_name not in model_obj._columns:
-                        to_delete.append(translation.id)
-                        continue
-                    field = model_obj._columns[field_name]
-                    if not field.help:
-                        to_delete.append(translation.id)
-                        continue
-                elif translation.type == 'error':
-                    model_name = translation.name
-                    if model_name in (
-                            'delete_xml_record',
-                            'xml_record_desc',
-                            'write_xml_record',
-                            'not_found_in_selection',
-                            'relation_not_found',
-                            'too_many_relations_found',
-                            'xml_id_syntax_error',
-                            'reference_syntax_error',
-                            'delete_workflow_record',
-                            'domain_validation_record',
-                            'required_validation_record',
-                            'size_validation_record',
-                            'digits_validation_record',
-                            'access_error',
-                            'read_error',
-                            'write_error',
-                            'required_field',
-                            'foreign_model_missing',
-                            'foreign_model_exist',
-                            'search_function_missing',
-                            ):
-                        continue
-                    if model_name in self.pool.object_name_list():
-                        model_obj = self.pool.get(model_name)
-                        errors = model_obj._error_messages.values() + \
-                                model_obj._sql_error_messages.values()
-                        for _, _, error in model_obj._sql_constraints:
-                            errors.append(error)
-                        if translation.src not in errors:
-                            to_delete.append(translation.id)
-                            continue
-                    elif model_name in self.pool.object_name_list(type='wizard'):
-                        wizard_obj = self.pool.get(model_name, type='wizard')
-                        errors = wizard_obj._error_messages.values()
-                        if translation.src not in errors:
-                            to_delete.append(translation.id)
-                            continue
-                    else:
-                        to_delete.append(translation.id)
-                        continue
-            # skip translation handled in ir.model.data
-            mdata_ids = model_data_obj.search([
-                ('db_id', 'in', to_delete),
-                ('model', '=', 'ir.translation'),
-                ])
-            for mdata in model_data_obj.browse(mdata_ids):
-                if mdata.db_id in to_delete:
-                    to_delete.remove(mdata.db_id)
+    def _clean_translation(self, data):
+        pool = Pool()
+        translation_obj = pool.get('ir.translation')
+        model_data_obj = pool.get('ir.model.data')
+
+        to_delete = []
+        keys = set()
+        translation_ids = translation_obj.search([])
+        for translation in translation_obj.browse(translation_ids):
+            if getattr(self, '_clean_%s' % translation.type)(translation):
+                to_delete.append(translation.id)
+            elif translation.type in ('field', 'model', 'wizard_button',
+                'help'):
+                key = (translation.module, translation.lang, translation.type,
+                    translation.name, translation.res_id)
+                if key in keys:
+                    to_delete.append(translation.id)
+                else:
+                    keys.add(key)
+        # skip translation handled in ir.model.data
+        mdata_ids = model_data_obj.search([
+            ('db_id', 'in', to_delete),
+            ('model', '=', 'ir.translation'),
+            ])
+        for mdata in model_data_obj.browse(mdata_ids):
+            if mdata.db_id in to_delete:
+                to_delete.remove(mdata.db_id)
 
-            translation_obj.delete(to_delete)
+        translation_obj.delete(to_delete)
         return {}
 
 TranslationClean()
@@ -1006,7 +961,8 @@ class TranslationUpdateInit(ModelView):
         return Transaction().context.get('language', False)
 
     def get_language(self):
-        lang_obj = self.pool.get('ir.lang')
+        pool = Pool()
+        lang_obj = pool.get('ir.lang')
         lang_ids = lang_obj.search([('translatable', '=', True)])
         langs = lang_obj.browse(lang_ids)
         res = [(lang.code, lang.name) for lang in langs if lang.code != 'en_US']
@@ -1020,7 +976,8 @@ class TranslationUpdate(Wizard):
     _name = "ir.translation.update"
 
     def _update_translation(self, data):
-        translation_obj = self.pool.get('ir.translation')
+        pool = Pool()
+        translation_obj = pool.get('ir.translation')
         cursor = Transaction().cursor
         cursor.execute('SELECT name, res_id, type, src, module ' \
                 'FROM ir_translation ' \
@@ -1108,8 +1065,9 @@ class TranslationUpdate(Wizard):
         return {}
 
     def _action_translation_open(self, data):
-        model_data_obj = self.pool.get('ir.model.data')
-        act_window_obj = self.pool.get('ir.action.act_window')
+        pool = Pool()
+        model_data_obj = pool.get('ir.model.data')
+        act_window_obj = pool.get('ir.action.act_window')
 
         model_data_ids = model_data_obj.search([
             ('fs_id', '=', 'act_translation_form'),
@@ -1162,7 +1120,8 @@ class TranslationExportInit(ModelView):
         return Transaction().context.get('language', False)
 
     def get_language(self):
-        lang_obj = self.pool.get('ir.lang')
+        pool = Pool()
+        lang_obj = pool.get('ir.lang')
         lang_ids = lang_obj.search([
             ('translatable', '=', True),
             ])
@@ -1171,7 +1130,8 @@ class TranslationExportInit(ModelView):
         return res
 
     def get_module(self):
-        module_obj = self.pool.get('ir.module.module')
+        pool = Pool()
+        module_obj = pool.get('ir.module.module')
         module_ids = module_obj.search([
             ('state', 'in', ['installed', 'to upgrade', 'to remove']),
             ])
@@ -1196,11 +1156,12 @@ class TranslationExport(Wizard):
     _name = "ir.translation.export"
 
     def _export_translation(self, data):
-        translation_obj = self.pool.get('ir.translation')
+        pool = Pool()
+        translation_obj = pool.get('ir.translation')
         file_data = translation_obj.translation_export(data['form']['lang'],
                 data['form']['module'])
         return {
-            'file': base64.encodestring(file_data),
+            'file': buffer(file_data),
         }
 
     states = {
diff --git a/trytond/ir/translation.xml b/trytond/ir/translation.xml
index ed6b528..043ef9f 100644
--- a/trytond/ir/translation.xml
+++ b/trytond/ir/translation.xml
@@ -21,7 +21,7 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="lang"/>
                     <label name="module"/>
                     <field name="module"/>
-                    <group col="2" colspan="6" expand="1" id="src_value">
+                    <group col="2" colspan="6" yexpand="1" id="src_value">
                         <separator name="src"/>
                         <separator name="value"/>
                         <field name="src"/>
@@ -37,14 +37,14 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Translations" editable="bottom">
-                    <field name="src" select="1"/>
-                    <field name="value" select="2"/>
-                    <field name="fuzzy" select="1"/>
-                    <field name="name" select="2"/>
-                    <field name="lang" select="1"/>
-                    <field name="type" select="2"/>
-                    <field name="res_id" select="2"/>
-                    <field name="module" select="2"/>
+                    <field name="src"/>
+                    <field name="value"/>
+                    <field name="fuzzy"/>
+                    <field name="name"/>
+                    <field name="lang"/>
+                    <field name="type"/>
+                    <field name="res_id"/>
+                    <field name="module"/>
                 </tree>
               ]]>
             </field>
@@ -261,8 +261,10 @@ this repository contains the full copyright notices and license terms. -->
             <field name="type">form</field>
             <field name="arch" type="xml">
                 <![CDATA[
-                <form string="Set Report Translations">
-                    <label string="Synchronize Report Translations?" id="synchronize"/>
+                <form string="Set Report Translations" col="2">
+                    <image name="tryton-dialog-information" xexpand="0" xfill="0"/>
+                    <label string="Synchronize Report Translations?" id="synchronize"
+                        yalign="0.0" xalign="0.0" xexpand="1"/>
                 </form>
                 ]]>
             </field>
@@ -273,8 +275,10 @@ this repository contains the full copyright notices and license terms. -->
             <field name="type">form</field>
             <field name="arch" type="xml">
                 <![CDATA[
-                <form string="Set Report Translations">
-                    <label string="Set Translations Succeed!" id="succeed"/>
+                <form string="Set Report Translations" col="2">
+                    <image name="tryton-dialog-information" xexpand="0" xfill="0"/>
+                    <label string="Set Translations Succeed!" id="succeed"
+                        yalign="0.0" xalign="0.0" xexpand="1"/>
                 </form>
                 ]]>
             </field>
@@ -295,8 +299,10 @@ this repository contains the full copyright notices and license terms. -->
             <field name="type">form</field>
             <field name="arch" type="xml">
                 <![CDATA[
-                <form string="Clean Translations">
-                    <label string="Clean Translations?" id="clean"/>
+                <form string="Clean Translations" col="2">
+                    <image name="tryton-dialog-information" xexpand="0" xfill="0"/>
+                    <label string="Clean Translations?" id="clean"
+                        yalign="0.0" xalign="0.0" xexpand="1"/>
                 </form>
                 ]]>
             </field>
@@ -308,7 +314,9 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <form string="Clean Translations">
-                    <label string="Clean Translations Succeed!" id="succeed"/>
+                    <image name="tryton-dialog-information" xexpand="0" xfill="0"/>
+                    <label string="Clean Translations Succeed!" id="succeed"
+                        yalign="0.0" xalign="0.0" xexpand="1"/>
                 </form>
                 ]]>
             </field>
diff --git a/trytond/ir/trigger.py b/trytond/ir/trigger.py
index 971f29f..f7e00b7 100644
--- a/trytond/ir/trigger.py
+++ b/trytond/ir/trigger.py
@@ -3,12 +3,13 @@
 import datetime
 import time
 from trytond.model import ModelView, ModelSQL, fields
-from trytond.pyson import Eval, Or
+from trytond.pyson import Eval
 from trytond.tools import safe_eval
 from trytond.backend import TableHandler
 from trytond.tools import reduce_ids
 from trytond.transaction import Transaction
 from trytond.cache import Cache
+from trytond.pool import Pool
 
 
 class Trigger(ModelSQL, ModelView):
@@ -19,8 +20,9 @@ class Trigger(ModelSQL, ModelView):
     active = fields.Boolean('Active', select=2)
     model = fields.Many2One('ir.model', 'Model', required=True, select=1)
     on_time = fields.Boolean('On Time', select=1, states={
-        'invisible': Or(Eval('on_create', False), Eval('on_write', False),
-            Eval('on_delete', False)),
+            'invisible': (Eval('on_create', False)
+                or Eval('on_write', False)
+                or Eval('on_delete', False)),
         }, depends=['on_create', 'on_write', 'on_delete'],
         on_change=['on_time'])
     on_create = fields.Boolean('On Create', select=1, states={
@@ -135,7 +137,8 @@ class Trigger(ModelSQL, ModelView):
         :param record: a BrowseRecord of the tested model
         :return: a boolean
         """
-        model_obj = self.pool.get(trigger.model.model)
+        pool = Pool()
+        model_obj = pool.get(trigger.model.model)
         env = {}
         env['current_date'] = datetime.datetime.today()
         env['time'] = time
@@ -150,9 +153,10 @@ class Trigger(ModelSQL, ModelView):
         :param ids: the list of record ids triggered
         :param trigger_id: the trigger id
         """
-        trigger_log_obj = self.pool.get('ir.trigger.log')
+        pool = Pool()
+        trigger_log_obj = pool.get('ir.trigger.log')
         trigger = self.browse(trigger_id)
-        model_obj = self.pool.get(trigger.action_model.model)
+        model_obj = pool.get(trigger.action_model.model)
         cursor = Transaction().cursor
 
         # Filter on limit_number
@@ -220,11 +224,12 @@ class Trigger(ModelSQL, ModelView):
         '''
         Trigger time actions
         '''
+        pool = Pool()
         trigger_ids = self.search([
             ('on_time', '=', True),
             ])
         for trigger in self.browse(trigger_ids):
-            model_obj = self.pool.get(trigger.model.model)
+            model_obj = pool.get(trigger.model.model)
             triggered_ids = []
             # TODO add a domain
             record_ids = model_obj.search([])
diff --git a/trytond/ir/trigger.xml b/trytond/ir/trigger.xml
index 1c42a6a..b6e6979 100644
--- a/trytond/ir/trigger.xml
+++ b/trytond/ir/trigger.xml
@@ -45,13 +45,13 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <tree string="Triggers">
-                    <field name="name" select="1"/>
-                    <field name="model" select="1"/>
-                    <field name="on_time" select="2"/>
-                    <field name="on_create" select="2"/>
-                    <field name="on_write" select="2"/>
-                    <field name="on_delete" select="2"/>
-                    <field name="active" select="2"/>
+                    <field name="name"/>
+                    <field name="model"/>
+                    <field name="on_time"/>
+                    <field name="on_create"/>
+                    <field name="on_write"/>
+                    <field name="on_delete"/>
+                    <field name="active"/>
                 </tree>
                 ]]>
             </field>
diff --git a/trytond/ir/ui/board.rnc b/trytond/ir/ui/board.rnc
index 19fd9c1..82c8195 100644
--- a/trytond/ir/ui/board.rnc
+++ b/trytond/ir/ui/board.rnc
@@ -20,8 +20,11 @@ image = element image { attlist.image, empty }
 attlist.image &= attribute name { text }
 attlist.image &= [ a:defaultValue = "1" ] attribute colspan { text }?
 attlist.image &=
-  [ a:defaultValue = "0" ] attribute expand { "0" | "1" }?
-attlist.image &= [ a:defaultValue = "0" ] attribute fill { "0" | "1" }?
+  [ a:defaultValue = "0" ] attribute yexpand { "0" | "1" }?
+attlist.image &= [ a:defaultValue = "0" ] attribute yfill { "0" | "1" }?
+attlist.image &=
+  [ a:defaultValue = "0" ] attribute xexpand { "0" | "1" }?
+attlist.image &= [ a:defaultValue = "0" ] attribute xfill { "0" | "1" }?
 attlist.image &= attribute help { text }?
 attlist.image &= attribute states { text }?
 separator = element separator { attlist.separator, empty }
@@ -29,22 +32,27 @@ attlist.separator &= [ a:defaultValue = "" ] attribute string { text }?
 attlist.separator &= ( attribute name { text } | attribute name { text } )
 attlist.separator &= attribute states { text }?
 attlist.separator &=
-  [ a:defaultValue = "0.0" ] attribute align { text }?
+  [ a:defaultValue = "0.0" ] attribute xalign { text }?
 attlist.separator &=
   [ a:defaultValue = "1" ] attribute colspan { text }?
 attlist.separator &=
-  [ a:defaultValue = "0" ] attribute expand { "0" | "1" }?
+  [ a:defaultValue = "0" ] attribute yexpand { "0" | "1" }?
 attlist.separator &=
-  [ a:defaultValue = "0" ] attribute fill { "0" | "1" }?
+  [ a:defaultValue = "0" ] attribute yfill { "0" | "1" }?
+attlist.separator &=
+  [ a:defaultValue = "0" ] attribute xexpand { "0" | "1" }?
+attlist.separator &=
+  [ a:defaultValue = "0" ] attribute xfill { "0" | "1" }?
 attlist.separator &= attribute help { text }?
 label = element label { attlist.label, empty }
 attlist.label &= [ a:defaultValue = "" ] attribute string { text }?
 attlist.label &= ( attribute name { text } | attribute name { text } )
 attlist.label &= attribute states { text }?
-attlist.label &= [ a:defaultValue = "0.0" ] attribute align { text }?
+attlist.label &= [ a:defaultValue = "0.0" ] attribute xalign { text }?
+attlist.label &= [ a:defaultValue = "0.5" ] attribute yalign { text }?
 attlist.label &=
-  [ a:defaultValue = "0" ] attribute expand { "0" | "1" }?
-attlist.label &= [ a:defaultValue = "0" ] attribute fill { "0" | "1" }?
+  [ a:defaultValue = "0" ] attribute yexpand { "0" | "1" }?
+attlist.label &= [ a:defaultValue = "0" ] attribute yfill { "0" | "1" }?
 attlist.label &=
   [ a:defaultValue = "0" ] attribute xexpand { "0" | "1" }?
 attlist.label &= [ a:defaultValue = "1" ] attribute xfill { "0" | "1" }?
@@ -53,8 +61,6 @@ attlist.label &= attribute help { text }?
 newline = element newline { attlist.newline, empty }
 attlist.newline &= attribute id { text }
 notebook = element notebook { attlist.notebook, page* }
-attlist.notebook &=
-  attribute tabpos { "up" | "down" | "left" | "right" }?
 attlist.notebook &= [ a:defaultValue = "4" ] attribute colspan { text }?
 page =
   element page {
@@ -90,8 +96,11 @@ group =
 attlist.group &= attribute string { text }?
 attlist.group &= [ a:defaultValue = "1" ] attribute colspan { text }?
 attlist.group &=
-  [ a:defaultValue = "0" ] attribute expand { "0" | "1" }?
-attlist.group &= [ a:defaultValue = "1" ] attribute fill { "0" | "1" }?
+  [ a:defaultValue = "0" ] attribute yexpand { "0" | "1" }?
+attlist.group &= [ a:defaultValue = "1" ] attribute yfill { "0" | "1" }?
+attlist.group &=
+  [ a:defaultValue = "0" ] attribute xexpand { "0" | "1" }?
+attlist.group &= [ a:defaultValue = "1" ] attribute xfill { "0" | "1" }?
 attlist.group &= [ a:defaultValue = "1" ] attribute rowspan { text }?
 attlist.group &= [ a:defaultValue = "4" ] attribute col { text }?
 attlist.group &= attribute id { text }
diff --git a/trytond/ir/ui/board.rng b/trytond/ir/ui/board.rng
index 06d6850..cb65b53 100644
--- a/trytond/ir/ui/board.rng
+++ b/trytond/ir/ui/board.rng
@@ -44,7 +44,7 @@
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="expand" a:defaultValue="0">
+      <attribute name="yexpand" a:defaultValue="0">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -54,7 +54,27 @@
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="fill" a:defaultValue="0">
+      <attribute name="yfill" a:defaultValue="0">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.image" combine="interleave">
+    <optional>
+      <attribute name="xexpand" a:defaultValue="0">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.image" combine="interleave">
+    <optional>
+      <attribute name="xfill" a:defaultValue="0">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -96,7 +116,7 @@
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="align" a:defaultValue="0.0"/>
+      <attribute name="xalign" a:defaultValue="0.0"/>
     </optional>
   </define>
   <define name="attlist.separator" combine="interleave">
@@ -106,7 +126,7 @@
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="expand" a:defaultValue="0">
+      <attribute name="yexpand" a:defaultValue="0">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -116,7 +136,27 @@
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="fill" a:defaultValue="0">
+      <attribute name="yfill" a:defaultValue="0">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.separator" combine="interleave">
+    <optional>
+      <attribute name="xexpand" a:defaultValue="0">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.separator" combine="interleave">
+    <optional>
+      <attribute name="xfill" a:defaultValue="0">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -153,12 +193,17 @@
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="align" a:defaultValue="0.0"/>
+      <attribute name="xalign" a:defaultValue="0.0"/>
     </optional>
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="expand" a:defaultValue="0">
+      <attribute name="yalign" a:defaultValue="0.5"/>
+    </optional>
+  </define>
+  <define name="attlist.label" combine="interleave">
+    <optional>
+      <attribute name="yexpand" a:defaultValue="0">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -168,7 +213,7 @@
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="fill" a:defaultValue="0">
+      <attribute name="yfill" a:defaultValue="0">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -225,18 +270,6 @@
   </define>
   <define name="attlist.notebook" combine="interleave">
     <optional>
-      <attribute name="tabpos">
-        <choice>
-          <value>up</value>
-          <value>down</value>
-          <value>left</value>
-          <value>right</value>
-        </choice>
-      </attribute>
-    </optional>
-  </define>
-  <define name="attlist.notebook" combine="interleave">
-    <optional>
       <attribute name="colspan" a:defaultValue="4"/>
     </optional>
   </define>
@@ -309,7 +342,17 @@
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="expand" a:defaultValue="0">
+      <attribute name="yexpand" a:defaultValue="0">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.group" combine="interleave">
+    <optional>
+      <attribute name="yfill" a:defaultValue="1">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -319,7 +362,17 @@
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="fill" a:defaultValue="1">
+      <attribute name="xexpand" a:defaultValue="0">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.group" combine="interleave">
+    <optional>
+      <attribute name="xfill" a:defaultValue="1">
         <choice>
           <value>0</value>
           <value>1</value>
diff --git a/trytond/ir/ui/form.rnc b/trytond/ir/ui/form.rnc
index a3c97b8..b20dd5c 100644
--- a/trytond/ir/ui/form.rnc
+++ b/trytond/ir/ui/form.rnc
@@ -52,10 +52,11 @@ label = element label { attlist.label, empty }
 attlist.label &= [ a:defaultValue = "" ] attribute string { text }?
 attlist.label &= ( attribute name { text } | attribute id { text } )
 attlist.label &= attribute states { text }?
-attlist.label &= [ a:defaultValue = "0.0" ] attribute align { text }?
+attlist.label &= [ a:defaultValue = "0.0" ] attribute xalign { text }?
+attlist.label &= [ a:defaultValue = "0.5" ] attribute yalign { text }?
 attlist.label &=
-  [ a:defaultValue = "0" ] attribute expand { "0" | "1" }?
-attlist.label &= [ a:defaultValue = "0" ] attribute fill { "0" | "1" }?
+  [ a:defaultValue = "0" ] attribute yexpand { "0" | "1" }?
+attlist.label &= [ a:defaultValue = "0" ] attribute yfill { "0" | "1" }?
 attlist.label &=
   [ a:defaultValue = "0" ] attribute xexpand { "0" | "1" }?
 attlist.label &= [ a:defaultValue = "1" ] attribute xfill { "0" | "1" }?
@@ -91,12 +92,15 @@ attlist.field &=
     | "image"
     | "progressbar"
   }?
-attlist.field &= attribute expand { "0" | "1" }?
 attlist.field &= attribute fill { "0" | "1" }?
+attlist.field &= attribute yexpand { "0" | "1" }?
+attlist.field &= attribute yfill { "0" | "1" }?
 attlist.field &= attribute empty { "0" | "1" }?
 attlist.field &=
   [ a:defaultValue = "1" ] attribute xexpand { "0" | "1" }?
 attlist.field &= [ a:defaultValue = "1" ] attribute xfill { "0" | "1" }?
+attlist.field &= [ a:defaultValue = "0.0" ] attribute xalign { text }?
+attlist.field &= [ a:defaultValue = "0.5" ] attribute yalign { text }?
 attlist.field &= attribute help { text }?
 attlist.field &= attribute width { text }?
 attlist.field &= attribute height { text }?
@@ -111,8 +115,6 @@ attlist.field &= attribute key { text }?
 attlist.field &= attribute domain { text }?
 attlist.field &= attribute color { text }?
 attlist.field &=
-  [ a:defaultValue = "0" ] attribute select { "0" | "1" | "2" }?
-attlist.field &=
   [ a:defaultValue = "left_to_right" ] attribute orientation {
     "left_to_right"
     | "right_to_left"
@@ -129,8 +131,11 @@ image = element image { attlist.image, empty }
 attlist.image &= attribute name { text }
 attlist.image &= [ a:defaultValue = "1" ] attribute colspan { text }?
 attlist.image &=
-  [ a:defaultValue = "0" ] attribute expand { "0" | "1" }?
-attlist.image &= [ a:defaultValue = "0" ] attribute fill { "0" | "1" }?
+  [ a:defaultValue = "0" ] attribute yexpand { "0" | "1" }?
+attlist.image &= [ a:defaultValue = "0" ] attribute yfill { "0" | "1" }?
+attlist.image &=
+  [ a:defaultValue = "0" ] attribute xexpand { "0" | "1" }?
+attlist.image &= [ a:defaultValue = "0" ] attribute xfill { "0" | "1" }?
 attlist.image &= attribute help { text }?
 attlist.image &= attribute states { text }?
 separator = element separator { attlist.separator, empty }
@@ -138,13 +143,17 @@ attlist.separator &= [ a:defaultValue = "" ] attribute string { text }?
 attlist.separator &= ( attribute name { text } | attribute id { text} )
 attlist.separator &= attribute states { text }?
 attlist.separator &=
-  [ a:defaultValue = "0.0" ] attribute align { text }?
+  [ a:defaultValue = "0.0" ] attribute xalign { text }?
 attlist.separator &=
   [ a:defaultValue = "1" ] attribute colspan { text }?
 attlist.separator &=
-  [ a:defaultValue = "0" ] attribute expand { "0" | "1" }?
+  [ a:defaultValue = "0" ] attribute yexpand { "0" | "1" }?
 attlist.separator &=
-  [ a:defaultValue = "0" ] attribute fill { "0" | "1" }?
+  [ a:defaultValue = "0" ] attribute yfill { "0" | "1" }?
+attlist.separator &=
+  [ a:defaultValue = "0" ] attribute xexpand { "0" | "1" }?
+attlist.separator &=
+  [ a:defaultValue = "0" ] attribute xfill { "0" | "1" }?
 attlist.separator &= attribute help { text }?
 newline = element newline { attlist.newline, empty }
 attlist.newline &= empty
@@ -161,8 +170,6 @@ attlist.button &= attribute confirm { text }?
 attlist.button &= attribute name { text }
 attlist.button &= attribute states { text }?
 notebook = element notebook { attlist.notebook, page* }
-attlist.notebook &=
-  attribute tabpos { "up" | "down" | "left" | "right" }?
 attlist.notebook &= [ a:defaultValue = "4" ] attribute colspan { text }?
 page =
   element page {
@@ -202,8 +209,11 @@ group =
 attlist.group &= attribute string { text }?
 attlist.group &= [ a:defaultValue = "1" ] attribute colspan { text }?
 attlist.group &=
-  [ a:defaultValue = "0" ] attribute expand { "0" | "1" }?
-attlist.group &= [ a:defaultValue = "1" ] attribute fill { "0" | "1" }?
+  [ a:defaultValue = "0" ] attribute yexpand { "0" | "1" }?
+attlist.group &= [ a:defaultValue = "1" ] attribute yfill { "0" | "1" }?
+attlist.group &=
+  [ a:defaultValue = "0" ] attribute xexpand { "0" | "1" }?
+attlist.group &= [ a:defaultValue = "1" ] attribute xfill { "0" | "1" }?
 attlist.group &= [ a:defaultValue = "1" ] attribute rowspan { text }?
 attlist.group &= [ a:defaultValue = "4" ] attribute col { text }?
 attlist.group &= ( attribute name { text } | attribute id { text } )
diff --git a/trytond/ir/ui/form.rng b/trytond/ir/ui/form.rng
index 8540f19..1bb7c62 100644
--- a/trytond/ir/ui/form.rng
+++ b/trytond/ir/ui/form.rng
@@ -175,12 +175,17 @@
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="align" a:defaultValue="0.0"/>
+      <attribute name="xalign" a:defaultValue="0.0"/>
     </optional>
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="expand" a:defaultValue="0">
+      <attribute name="yalign" a:defaultValue="0.5"/>
+    </optional>
+  </define>
+  <define name="attlist.label" combine="interleave">
+    <optional>
+      <attribute name="yexpand" a:defaultValue="0">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -190,7 +195,7 @@
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="fill" a:defaultValue="0">
+      <attribute name="yfill" a:defaultValue="0">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -281,7 +286,7 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="expand">
+      <attribute name="fill">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -291,7 +296,17 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="fill">
+      <attribute name="yexpand">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.field" combine="interleave">
+    <optional>
+      <attribute name="yfill">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -331,6 +346,16 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
+      <attribute name="xalign" a:defaultValue="0.0"/>
+    </optional>
+  </define>
+  <define name="attlist.field" combine="interleave">
+    <optional>
+      <attribute name="yalign" a:defaultValue="0.5"/>
+    </optional>
+  </define>
+  <define name="attlist.field" combine="interleave">
+    <optional>
       <attribute name="help"/>
     </optional>
   </define>
@@ -401,17 +426,6 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="select" a:defaultValue="0">
-        <choice>
-          <value>0</value>
-          <value>1</value>
-          <value>2</value>
-        </choice>
-      </attribute>
-    </optional>
-  </define>
-  <define name="attlist.field" combine="interleave">
-    <optional>
       <attribute name="orientation" a:defaultValue="left_to_right">
         <choice>
           <value>left_to_right</value>
@@ -468,7 +482,7 @@
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="expand" a:defaultValue="0">
+      <attribute name="yexpand" a:defaultValue="0">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -478,7 +492,7 @@
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="fill" a:defaultValue="0">
+      <attribute name="yfill" a:defaultValue="0">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -493,6 +507,26 @@
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
+      <attribute name="xexpand" a:defaultValue="0">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.image" combine="interleave">
+    <optional>
+      <attribute name="xfill" a:defaultValue="0">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.image" combine="interleave">
+    <optional>
       <attribute name="states"/>
     </optional>
   </define>
@@ -520,7 +554,7 @@
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="align" a:defaultValue="0.0"/>
+      <attribute name="xalign" a:defaultValue="0.0"/>
     </optional>
   </define>
   <define name="attlist.separator" combine="interleave">
@@ -530,7 +564,7 @@
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="expand" a:defaultValue="0">
+      <attribute name="yexpand" a:defaultValue="0">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -540,7 +574,27 @@
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="fill" a:defaultValue="0">
+      <attribute name="yfill" a:defaultValue="0">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.separator" combine="interleave">
+    <optional>
+      <attribute name="xexpand" a:defaultValue="0">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.separator" combine="interleave">
+    <optional>
+      <attribute name="xfill" a:defaultValue="0">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -622,18 +676,6 @@
   </define>
   <define name="attlist.notebook" combine="interleave">
     <optional>
-      <attribute name="tabpos">
-        <choice>
-          <value>up</value>
-          <value>down</value>
-          <value>left</value>
-          <value>right</value>
-        </choice>
-      </attribute>
-    </optional>
-  </define>
-  <define name="attlist.notebook" combine="interleave">
-    <optional>
       <attribute name="colspan" a:defaultValue="4"/>
     </optional>
   </define>
@@ -718,7 +760,7 @@
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="expand" a:defaultValue="0">
+      <attribute name="yexpand" a:defaultValue="0">
         <choice>
           <value>0</value>
           <value>1</value>
@@ -728,7 +770,27 @@
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="fill" a:defaultValue="1">
+      <attribute name="yfill" a:defaultValue="1">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.group" combine="interleave">
+    <optional>
+      <attribute name="xexpand" a:defaultValue="0">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.group" combine="interleave">
+    <optional>
+      <attribute name="xfill" a:defaultValue="1">
         <choice>
           <value>0</value>
           <value>1</value>
diff --git a/trytond/ir/ui/icon.py b/trytond/ir/ui/icon.py
index ef64c96..fdbbd83 100644
--- a/trytond/ir/ui/icon.py
+++ b/trytond/ir/ui/icon.py
@@ -1,6 +1,5 @@
 # This file is part of Tryton.  The COPYRIGHT file at the top level of this
 # repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 
 import os
 
diff --git a/trytond/ir/ui/icon.xml b/trytond/ir/ui/icon.xml
index 636292f..a94dde2 100644
--- a/trytond/ir/ui/icon.xml
+++ b/trytond/ir/ui/icon.xml
@@ -9,9 +9,9 @@
             <field name="arch" type="xml">
                 <![CDATA[
                 <tree string="Icons" sequence="sequence">
-                    <field name="name" select="1" icon="name"/>
-                    <field name="module" select="1"/>
-                    <field name="path" select="2"/>
+                    <field name="name" icon="name"/>
+                    <field name="module"/>
+                    <field name="path"/>
                     <field name="sequence" tree_invisible="1"/>
                 </tree>
                 ]]>
diff --git a/trytond/ir/ui/icons/__init__.py b/trytond/ir/ui/icons/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/trytond/ir/ui/icons/tryton-calendar.svg b/trytond/ir/ui/icons/tryton-calendar.svg
new file mode 100644
index 0000000..d9f9281
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-calendar.svg
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="office-calendar.svg"
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/apps"
+   inkscape:version="0.46"
+   sodipodi:version="0.32"
+   id="svg1288"
+   height="48px"
+   width="48px"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs3">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective48" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6719"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6717"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient6715"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       id="linearGradient2563">
+      <stop
+         id="stop2565"
+         offset="0"
+         style="stop-color:#e2e2e2;stop-opacity:1;" />
+      <stop
+         id="stop2567"
+         offset="1.0000000"
+         style="stop-color:#9f9f9f;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2551"
+       inkscape:collect="always">
+      <stop
+         id="stop2553"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop2555"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2526">
+      <stop
+         id="stop2528"
+         offset="0.0000000"
+         style="stop-color:#e7ebeb;stop-opacity:1.0000000;" />
+      <stop
+         style="stop-color:#e6ebeb;stop-opacity:1.0000000;"
+         offset="0.50000000"
+         id="stop2534" />
+      <stop
+         id="stop2530"
+         offset="1.0000000"
+         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(0.000000,0.785718)"
+       gradientUnits="userSpaceOnUse"
+       y2="28.428572"
+       x2="42.214283"
+       y1="14.428571"
+       x1="13.357142"
+       id="linearGradient2532"
+       xlink:href="#linearGradient2526"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.751938,1.196962e-16,7.193799)"
+       r="18.428572"
+       fy="29.000000"
+       fx="26.000000"
+       cy="29.000000"
+       cx="26.000000"
+       id="radialGradient2557"
+       xlink:href="#linearGradient2551"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(0.000000,0.785718)"
+       gradientUnits="userSpaceOnUse"
+       y2="30.785713"
+       x2="42.214284"
+       y1="30.785713"
+       x1="6.7857148"
+       id="linearGradient2569"
+       xlink:href="#linearGradient2563"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="28.428572"
+       x2="42.214283"
+       y1="14.428571"
+       x1="13.357142"
+       gradientTransform="translate(2.045771e-15,0.785718)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2582"
+       xlink:href="#linearGradient2526"
+       inkscape:collect="always" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-y="147"
+     inkscape:window-x="562"
+     inkscape:window-height="701"
+     inkscape:window-width="872"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     showgrid="false"
+     inkscape:current-layer="layer1"
+     inkscape:cy="24.165113"
+     inkscape:cx="-136.63043"
+     inkscape:zoom="1"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Calendar</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>calendar</rdf:li>
+            <rdf:li>date</rdf:li>
+            <rdf:li>time</rdf:li>
+            <rdf:li>cal</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     id="layer1">
+    <g
+       transform="matrix(2.294847e-2,0,0,2.276812e-2,44.75587,36.74254)"
+       id="g6707">
+      <rect
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="rect6709"
+         width="1339.6335"
+         height="478.35718"
+         x="-1559.2523"
+         y="-150.69685" />
+      <path
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+         id="path6711"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path6713"
+         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccccc"
+       id="path1316"
+       d="M 4.8571430,38.428571 C 4.6428572,39.428571 5.4642859,40.464285 6.8214287,40.428571 L 43.000000,40.428571 C 44.285714,40.392857 44.714286,39.214285 44.428572,38.249999 L 36.571429,9.4285713 L 10.571429,9.4285713 L 4.8571430,38.428571 z "
+       style="fill:#a7a7a7;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#656565;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+    <path
+       sodipodi:nodetypes="ccccccccc"
+       id="path2575"
+       d="M 9.1625040,30.806458 L 39.395095,30.806458 C 40.252297,30.806458 40.942392,31.478744 40.942392,32.313825 L 42.269580,37.114760 C 42.269580,37.949841 41.579486,38.622127 40.722283,38.622127 L 8.2777114,38.622127 C 7.4205088,38.622127 6.7304142,37.949841 6.7304142,37.114760 L 7.6152068,32.313825 C 7.6152068,31.478744 8.3053014,30.806458 9.1625040,30.806458 z "
+       style="opacity:0.10857142;color:#000000;fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans" />
+    <path
+       style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999970px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.34463277"
+       d="M 6.0478436,37.805569 C 5.8479823,38.738255 5.6491963,39.385227 6.5227626,39.385227 L 42.837439,39.385227 C 43.753496,39.385227 43.579187,38.645537 43.312705,37.746161 L 35.770172,10.471961 L 11.520336,10.471961 L 6.0478436,37.805569 z "
+       id="path2520"
+       sodipodi:nodetypes="ccccccc" />
+    <path
+       style="opacity:1.0000000;color:#000000;fill:#c5c5c5;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#696969;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+       d="M 9.6418018,29.928574 L 38.929626,29.928574 C 39.760041,29.928574 40.428570,30.579851 40.428570,31.388835 L 41.714284,36.039742 C 41.714284,36.848726 41.045755,37.500003 40.215340,37.500003 L 8.7846589,37.500003 C 7.9542438,37.500003 7.2857146,36.848726 7.2857146,36.039742 L 8.1428575,31.388835 C 8.1428575,30.579851 8.8113867,29.928574 9.6418018,29.928574 z "
+       id="path2518"
+       sodipodi:nodetypes="ccccccccc" />
+    <path
+       sodipodi:nodetypes="ccccccccc"
+       id="rect2225"
+       d="M 9.6418018,27.785717 L 38.929626,27.785717 C 39.760041,27.785717 40.428570,28.436994 40.428570,29.245978 L 41.714284,33.896885 C 41.714284,34.705869 41.045755,35.357146 40.215340,35.357146 L 8.7846589,35.357146 C 7.9542438,35.357146 7.2857146,34.705869 7.2857146,33.896885 L 8.1428575,29.245978 C 8.1428575,28.436994 8.8113867,27.785717 9.6418018,27.785717 z "
+       style="color:#000000;fill:url(#linearGradient2569);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#696969;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+    <g
+       transform="matrix(0.942549,0.000000,0.000000,0.942549,-0.222619,1.855860)"
+       id="g2578">
+      <path
+         style="fill:url(#linearGradient2582);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#696969;stroke-width:1.0609524px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+         d="M 10.891973,11.500004 L 6.5714281,33.214290 C 6.5714281,33.214290 32.857143,33.214291 32.857143,33.214291 C 45.441975,33.214291 48.085306,29.214290 48.085306,29.214290 C 48.085306,29.214290 44.728164,28.035719 43.299593,23.071433 C 43.299593,23.071433 40.238640,11.500004 40.238640,11.500004 L 10.891973,11.500004 z "
+         id="path2524"
+         sodipodi:nodetypes="cczczcc" />
+      <path
+         sodipodi:nodetypes="cccczcc"
+         id="path2571"
+         d="M 11.803734,12.474609 L 7.8122567,32.239668 C 7.8122567,32.239668 24.956518,32.239669 32.238382,32.239669 C 43.465021,32.239669 46.348811,29.388804 46.348811,29.388804 C 46.348811,29.388804 43.355751,27.525962 42.055419,23.007305 C 42.055419,23.007305 39.316856,12.546038 39.316856,12.546038 L 11.803734,12.474609 z "
+         style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0609519px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccccccc"
+       id="rect2522"
+       d="M 11.315699,7.4285707 L 36.494515,7.4285707 C 37.367632,7.4285707 38.070539,8.0973414 38.070539,8.9280566 L 38.427682,11.071942 C 38.427682,11.902657 37.724775,12.571428 36.851658,12.571428 L 10.958556,12.571428 C 10.085439,12.571428 9.3825323,11.902657 9.3825323,11.071942 L 9.7396752,8.9280566 C 9.7396752,8.0973414 10.442582,7.4285707 11.315699,7.4285707 z "
+       style="color:#000000;fill:#9b9b9b;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#696969;stroke-width:0.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       id="text2541"
+       d="M 20.969159,22.393020 C 21.957574,22.486777 22.691543,22.765423 23.171063,23.228961 C 23.651181,23.687301 23.849054,24.273239 23.764680,24.986779 C 23.640870,26.033659 23.075908,26.877412 22.069796,27.518037 C 21.063667,28.158665 19.762256,28.478977 18.165559,28.478978 C 16.939741,28.478977 15.906445,28.286269 15.065668,27.900851 L 15.305880,25.869594 C 16.189321,26.478973 17.193659,26.783661 18.318897,26.783660 C 19.217824,26.783661 19.926554,26.637828 20.445092,26.346159 C 20.964233,26.049284 21.255527,25.632617 21.318975,25.096154 C 21.385488,24.533656 21.176411,24.122197 20.691744,23.861775 C 20.207063,23.601362 19.398966,23.471154 18.267450,23.471149 L 16.994488,23.471149 L 17.201440,21.721144 L 18.559266,21.721144 C 19.451905,21.721150 20.149975,21.585733 20.653477,21.314892 C 21.157582,21.038857 21.439509,20.648231 21.499262,20.143013 C 21.555304,19.669062 21.408536,19.288853 21.058960,19.002385 C 20.709369,18.715935 20.154261,18.572705 19.393634,18.572696 C 18.431836,18.572705 17.490216,18.853956 16.568772,19.416448 L 16.798822,17.471130 C 17.831208,17.033639 18.988597,16.814889 20.270993,16.814878 C 21.509374,16.814889 22.459536,17.072702 23.121484,17.588317 C 23.789700,18.103954 24.076386,18.762810 23.981543,19.564886 C 23.893455,20.309689 23.598230,20.919065 23.095869,21.393017 C 22.594104,21.861775 21.885201,22.195109 20.969159,22.393020"
+       style="font-size:17.577877;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:100.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Segoe" />
+    <path
+       id="text2545"
+       d="M 33.007379,28.455540 L 30.499173,28.455540 L 29.387875,19.096134 L 26.295373,19.893012 L 26.086657,18.135194 L 31.627997,16.838314 L 33.007379,28.455540"
+       style="font-size:17.577877;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:100.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Segoe" />
+    <path
+       transform="matrix(0.684211,0.000000,0.000000,0.684211,3.560154,2.278197)"
+       d="M 12.857143 9.9285717 A 1.3571428 1.3571428 0 1 1  10.142857,9.9285717 A 1.3571428 1.3571428 0 1 1  12.857143 9.9285717 z"
+       sodipodi:ry="1.3571428"
+       sodipodi:rx="1.3571428"
+       sodipodi:cy="9.9285717"
+       sodipodi:cx="11.500000"
+       id="path2559"
+       style="opacity:0.52571428;color:#000000;fill:#fefefe;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:nodetypes="cc"
+       id="path2561"
+       d="M 13.042053,8.6010151 L 36.371309,8.6010151"
+       style="opacity:0.30285713;fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0000001px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+  </g>
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-clock.svg b/trytond/ir/ui/icons/tryton-clock.svg
new file mode 100644
index 0000000..595d185
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-clock.svg
@@ -0,0 +1,419 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   inkscape:export-ydpi="90.000000"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
+   width="48px"
+   height="48px"
+   id="svg11300"
+   sodipodi:version="0.32"
+   inkscape:version="0.48.0 r9654"
+   sodipodi:docname="tryton-clock.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1">
+  <defs
+     id="defs3">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective59" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5204">
+      <stop
+         style="stop-color:#c4a000;stop-opacity:1;"
+         offset="0"
+         id="stop5206" />
+      <stop
+         style="stop-color:#c4a000;stop-opacity:0;"
+         offset="1"
+         id="stop5208" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5196">
+      <stop
+         style="stop-color:#c4a000;stop-opacity:1;"
+         offset="0"
+         id="stop5198" />
+      <stop
+         style="stop-color:#c4a000;stop-opacity:0;"
+         offset="1"
+         id="stop5200" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient12512">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop12513" />
+      <stop
+         style="stop-color:#fff520;stop-opacity:0.89108908;"
+         offset="0.50000000"
+         id="stop12517" />
+      <stop
+         style="stop-color:#fff300;stop-opacity:0.0000000;"
+         offset="1.0000000"
+         id="stop12514" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient12512"
+       id="radialGradient278"
+       gradientUnits="userSpaceOnUse"
+       cx="55.000000"
+       cy="125.00000"
+       fx="55.000000"
+       fy="125.00000"
+       r="14.375000" />
+    <linearGradient
+       id="linearGradient10653">
+      <stop
+         style="stop-color:#f3f4ff;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop10655" />
+      <stop
+         style="stop-color:#9193af;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop10657" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient42174">
+      <stop
+         style="stop-color:#a0a0a0;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop42176" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop42178" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2145">
+      <stop
+         style="stop-color:#fffffd;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop2147" />
+      <stop
+         style="stop-color:#cbcbc9;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop2149" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient37935">
+      <stop
+         id="stop37937"
+         offset="0.0000000"
+         style="stop-color:#9497b3;stop-opacity:1.0000000;" />
+      <stop
+         id="stop37939"
+         offset="1.0000000"
+         style="stop-color:#4c4059;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2152">
+      <stop
+         id="stop2154"
+         offset="0.0000000"
+         style="stop-color:#9aa29a;stop-opacity:1.0000000;" />
+      <stop
+         id="stop2156"
+         offset="1.0000000"
+         style="stop-color:#b5beb5;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3816">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop3820" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3816"
+       id="radialGradient3822"
+       cx="31.112698"
+       cy="19.008621"
+       fx="31.112698"
+       fy="19.008621"
+       r="8.6620579"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2152"
+       id="linearGradient4307"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.123841,0.000000,0.000000,0.969691,-31.88758,-19.59492)"
+       x1="8.9156475"
+       y1="37.197018"
+       x2="9.8855033"
+       y2="52.090678" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10653"
+       id="radialGradient4309"
+       gradientUnits="userSpaceOnUse"
+       cx="11.329200"
+       cy="10.583970"
+       fx="11.329200"
+       fy="10.583970"
+       r="15.532059" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2145"
+       id="radialGradient4311"
+       gradientUnits="userSpaceOnUse"
+       cx="11.901996"
+       cy="10.045444"
+       fx="11.901996"
+       fy="10.045444"
+       r="29.292715" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient42174"
+       id="linearGradient4313"
+       gradientUnits="userSpaceOnUse"
+       x1="6.3422160"
+       y1="7.7893324"
+       x2="22.218424"
+       y2="25.884274" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5196"
+       id="radialGradient5202"
+       cx="23.375"
+       cy="10.972863"
+       fx="23.375"
+       fy="10.972863"
+       r="3.3478092"
+       gradientTransform="matrix(3.630420,1.654030e-15,-1.608743e-15,3.742066,-61.48607,-29.18618)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5204"
+       id="linearGradient5210"
+       x1="19.667364"
+       y1="4.2570662"
+       x2="20.329933"
+       y2="5.2845874"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient37935"
+       id="radialGradient5212"
+       gradientUnits="userSpaceOnUse"
+       cx="8.7468252"
+       cy="6.8283234"
+       fx="8.7468252"
+       fy="6.8283234"
+       r="29.889715" />
+  </defs>
+  <sodipodi:namedview
+     stroke="#c4a000"
+     fill="#babdb6"
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="0.25490196"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313708"
+     inkscape:cx="-2.3315499"
+     inkscape:cy="25.106052"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:showpageshadow="false"
+     inkscape:window-width="1278"
+     inkscape:window-height="1007"
+     inkscape:window-x="0"
+     inkscape:window-y="15"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:title>New Appointment</dc:title>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>appointment</rdf:li>
+            <rdf:li>new</rdf:li>
+            <rdf:li>meeting</rdf:li>
+            <rdf:li>rvsp</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Cédric Krier</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <path
+       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.45064,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
+       sodipodi:ry="8.6620579"
+       sodipodi:rx="8.6620579"
+       sodipodi:cy="19.008621"
+       sodipodi:cx="31.112698"
+       id="path4318"
+       style="opacity:1;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       sodipodi:type="arc"
+       transform="matrix(2.563158,0.000000,0.000000,1.219602,-55.98414,14.04144)" />
+    <path
+       sodipodi:nodetypes="cccc"
+       id="path14341"
+       d="M 18.587591,1.403729 L 4.226755,18.096665 L 5.4854717,19.339844 L 18.587591,1.403729 z "
+       style="color:#000000;fill:url(#linearGradient4307);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    <path
+       sodipodi:nodetypes="cccc"
+       id="path18921"
+       d="M 18.467176,1.3138035 L 5.6605716,19.072612 L 7.4900985,20.687913 L 18.467176,1.3138035 z "
+       style="fill:#fefefe;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
+    <path
+       transform="matrix(1.431529,0.000000,0.000000,1.431529,0.569459,-1.654618)"
+       d="M 31.160714 16.910715 A 14.910714 14.910714 0 1 1  1.3392859,16.910715 A 14.910714 14.910714 0 1 1  31.160714 16.910715 z"
+       sodipodi:ry="14.910714"
+       sodipodi:rx="14.910714"
+       sodipodi:cy="16.910715"
+       sodipodi:cx="16.25"
+       id="path27786"
+       style="fill:url(#radialGradient5212);fill-opacity:1;fill-rule:evenodd;stroke:#605773;stroke-width:0.69855404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(1.163838,0.000000,0.000000,1.163838,4.824801,2.777556)"
+       d="M 31.160714 16.910715 A 14.910714 14.910714 0 1 1  1.3392859,16.910715 A 14.910714 14.910714 0 1 1  31.160714 16.910715 z"
+       sodipodi:ry="14.910714"
+       sodipodi:rx="14.910714"
+       sodipodi:cy="16.910715"
+       sodipodi:cx="16.25"
+       id="path35549"
+       style="fill:url(#radialGradient4311);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4313);stroke-width:0.71139598;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:url(#radialGradient5202);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5210);stroke-width:0.56498736;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path4120"
+       sodipodi:cx="23.375"
+       sodipodi:cy="11.875"
+       sodipodi:rx="8.5"
+       sodipodi:ry="8.5"
+       d="M 16.679382,6.6387137 A 8.5,8.5 0 0 1 23.332691,3.3751053 L 23.375,11.875 z"
+       transform="matrix(1.769951,0.000000,0.000000,1.769951,-17.02424,1.610741)"
+       sodipodi:start="3.8052902"
+       sodipodi:end="4.7074114" />
+    <path
+       transform="matrix(2.073295,0.000000,0.000000,2.073295,-7.310224,-13.13682)"
+       d="M 16.40625 17.28125 A 1.21875 1.21875 0 1 1  13.96875,17.28125 A 1.21875 1.21875 0 1 1  16.40625 17.28125 z"
+       sodipodi:ry="1.21875"
+       sodipodi:rx="1.21875"
+       sodipodi:cy="17.28125"
+       sodipodi:cx="15.1875"
+       id="path34778"
+       style="fill:#f3f3f3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.48232403;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;stroke-dasharray:none"
+       sodipodi:type="arc" />
+    <path
+       id="path35559"
+       d="M 22.176614,20.718014 L 13.155702,13.140282"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    <path
+       id="path35561"
+       d="M 19.408614,29.776506 L 22.368655,25.283228"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       sodipodi:nodetypes="cc" />
+    <path
+       transform="matrix(2.749493,0.000000,0.000000,2.749493,-22.30073,-12.40939)"
+       d="M 17.324117 7.6932044 A 0.61871845 0.61871845 0 1 1  16.08668,7.6932044 A 0.61871845 0.61871845 0 1 1  17.324117 7.6932044 z"
+       sodipodi:ry="0.61871845"
+       sodipodi:rx="0.61871845"
+       sodipodi:cy="7.6932044"
+       sodipodi:cx="16.705399"
+       id="path35563"
+       style="fill:#b6b9b1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.36871839;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(2.749493,0.000000,0.000000,2.749493,-22.30073,14.80922)"
+       d="M 17.324117 7.6932044 A 0.61871845 0.61871845 0 1 1  16.08668,7.6932044 A 0.61871845 0.61871845 0 1 1  17.324117 7.6932044 z"
+       sodipodi:ry="0.61871845"
+       sodipodi:rx="0.61871845"
+       sodipodi:cy="7.6932044"
+       sodipodi:cx="16.705399"
+       id="path35565"
+       style="fill:#b6b9b1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.36871839;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(2.749493,0.000000,0.000000,2.749493,-35.91004,1.199890)"
+       d="M 17.324117 7.6932044 A 0.61871845 0.61871845 0 1 1  16.08668,7.6932044 A 0.61871845 0.61871845 0 1 1  17.324117 7.6932044 z"
+       sodipodi:ry="0.61871845"
+       sodipodi:rx="0.61871845"
+       sodipodi:cy="7.6932044"
+       sodipodi:cx="16.705399"
+       id="path35567"
+       style="fill:#b6b9b1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.36871839;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(2.749493,0.000000,0.000000,2.749493,-8.691448,1.199890)"
+       d="M 17.324117 7.6932044 A 0.61871845 0.61871845 0 1 1  16.08668,7.6932044 A 0.61871845 0.61871845 0 1 1  17.324117 7.6932044 z"
+       sodipodi:ry="0.61871845"
+       sodipodi:rx="0.61871845"
+       sodipodi:cy="7.6932044"
+       sodipodi:cx="16.705399"
+       id="path35569"
+       style="fill:#b6b9b1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.36871839;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient4309);stroke-width:0.73656511;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       id="path10651"
+       sodipodi:cx="16.25"
+       sodipodi:cy="16.910715"
+       sodipodi:rx="14.910714"
+       sodipodi:ry="14.910714"
+       d="M 31.160714 16.910715 A 14.910714 14.910714 0 1 1  1.3392859,16.910715 A 14.910714 14.910714 0 1 1  31.160714 16.910715 z"
+       transform="matrix(1.357654,0.000000,0.000000,1.357654,1.769896,-0.493735)" />
+  </g>
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-graph.svg b/trytond/ir/ui/icons/tryton-graph.svg
new file mode 100644
index 0000000..2425881
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-graph.svg
@@ -0,0 +1,645 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="x-office-spreadsheet.svg"
+   inkscape:version="0.48.0 r9654"
+   sodipodi:version="0.32"
+   id="svg13684"
+   height="48.000000px"
+   width="48.000000px"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1">
+  <defs
+     id="defs3">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective114" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6719"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6717"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient6715"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6687"
+       id="linearGradient6746"
+       gradientUnits="userSpaceOnUse"
+       x1="-20.750000"
+       y1="29.000000"
+       x2="-19.500000"
+       y2="18.750000" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6687">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop6689" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop6691" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6687"
+       id="linearGradient6744"
+       gradientUnits="userSpaceOnUse"
+       x1="-20.750000"
+       y1="29.000000"
+       x2="-19.500000"
+       y2="18.750000" />
+    <linearGradient
+       id="linearGradient6719">
+      <stop
+         style="stop-color:#73d216;stop-opacity:1;"
+         offset="0"
+         id="stop6721" />
+      <stop
+         style="stop-color:#d5f7b3;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6723" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6719"
+       id="linearGradient6742"
+       gradientUnits="userSpaceOnUse"
+       x1="-17.863041"
+       y1="30.827509"
+       x2="-20.821646"
+       y2="25.015009" />
+    <linearGradient
+       id="linearGradient6711">
+      <stop
+         style="stop-color:#5b8ccb;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop6713" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6715" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6711"
+       id="linearGradient6740"
+       gradientUnits="userSpaceOnUse"
+       x1="-16.387411"
+       y1="24.453547"
+       x2="-9.7352734"
+       y2="28.195539" />
+    <linearGradient
+       id="linearGradient6699">
+      <stop
+         style="stop-color:#ff7171;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop6701" />
+      <stop
+         style="stop-color:#cc0000;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6703" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6699"
+       id="linearGradient6738"
+       gradientUnits="userSpaceOnUse"
+       x1="-22.976406"
+       y1="18.516047"
+       x2="-14.360273"
+       y2="33.016045" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4542">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4544" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop4546" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4542"
+       id="radialGradient4548"
+       cx="24.306795"
+       cy="42.07798"
+       fx="24.306795"
+       fy="42.07798"
+       r="15.821514"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.284916,-2.846681e-15,30.08928)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2456">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop2458" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop2460" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient269">
+      <stop
+         id="stop270"
+         offset="0.0000000"
+         style="stop-color:#a3a3a3;stop-opacity:1.0000000;" />
+      <stop
+         id="stop271"
+         offset="1.0000000"
+         style="stop-color:#4c4c4c;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient269"
+       id="radialGradient15656"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.971646,0.000000,0.000000,1.034707,3.240408,0.495684)"
+       cx="8.8244190"
+       cy="3.7561285"
+       fx="8.8244190"
+       fy="3.7561285"
+       r="37.751713" />
+    <linearGradient
+       id="linearGradient259">
+      <stop
+         id="stop260"
+         offset="0.0000000"
+         style="stop-color:#fafafa;stop-opacity:1.0000000;" />
+      <stop
+         id="stop261"
+         offset="1.0000000"
+         style="stop-color:#bbbbbb;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient259"
+       id="radialGradient15658"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.963839,0.000000,0.000000,1.043088,-0.124825,-0.151970)"
+       cx="33.966679"
+       cy="35.736916"
+       fx="33.966679"
+       fy="35.736916"
+       r="86.708450" />
+    <linearGradient
+       id="linearGradient15662">
+      <stop
+         id="stop15664"
+         offset="0.0000000"
+         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
+      <stop
+         id="stop15666"
+         offset="1.0000000"
+         style="stop-color:#f8f8f8;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15662"
+       id="radialGradient15668"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.974777,0.000000,0.000000,1.034091,3.161873,0.559274)"
+       cx="8.1435566"
+       cy="7.2678967"
+       fx="8.1435566"
+       fy="7.2678967"
+       r="38.158695" />
+    <linearGradient
+       y2="99.2984"
+       x2="118.302"
+       y1="82.0938"
+       x1="97.2412"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd13">
+      <stop
+         id="stop12995"
+         style="stop-color:#E8F066"
+         offset="0" />
+      <stop
+         id="stop12997"
+         style="stop-color:#949941"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="100.6528"
+       x2="115.5175"
+       y1="89.1104"
+       x1="90.8311"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd12">
+      <stop
+         id="stop12988"
+         style="stop-color:#E8F066"
+         offset="0" />
+      <stop
+         id="stop12990"
+         style="stop-color:#777A34"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="92.6123"
+       x2="124.8197"
+       y1="75.1099"
+       x1="105.0923"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd11">
+      <stop
+         id="stop12981"
+         style="stop-color:#3FA6CC"
+         offset="0" />
+      <stop
+         id="stop12983"
+         style="stop-color:#00687A"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="94.8"
+       x2="126.1107"
+       y1="84.7578"
+       x1="107.8672"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd10">
+      <stop
+         id="stop12974"
+         style="stop-color:#2C7894"
+         offset="0" />
+      <stop
+         id="stop12976"
+         style="stop-color:#0E3D47"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="95.8999"
+       x2="118.2002"
+       y1="78.1079"
+       x1="105.8184"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd9">
+      <stop
+         id="stop12967"
+         style="stop-color:#C1553A"
+         offset="0" />
+      <stop
+         id="stop12969"
+         style="stop-color:#803926"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="98.8832"
+       x2="118.3481"
+       y1="81.1763"
+       x1="106.0254"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd8">
+      <stop
+         id="stop12960"
+         style="stop-color:#C09287"
+         offset="0" />
+      <stop
+         id="stop12962"
+         style="stop-color:#803926"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd8"
+       id="linearGradient1681"
+       gradientUnits="userSpaceOnUse"
+       x1="106.0254"
+       y1="81.1763"
+       x2="118.3481"
+       y2="98.8832" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd9"
+       id="linearGradient1683"
+       gradientUnits="userSpaceOnUse"
+       x1="105.8184"
+       y1="78.1079"
+       x2="118.2002"
+       y2="95.8999" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd10"
+       id="linearGradient1685"
+       gradientUnits="userSpaceOnUse"
+       x1="107.8672"
+       y1="84.7578"
+       x2="126.1107"
+       y2="94.8" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd11"
+       id="linearGradient1687"
+       gradientUnits="userSpaceOnUse"
+       x1="105.0923"
+       y1="75.1099"
+       x2="124.8197"
+       y2="92.6123" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd12"
+       id="linearGradient1689"
+       gradientUnits="userSpaceOnUse"
+       x1="90.8311"
+       y1="89.1104"
+       x2="115.5175"
+       y2="100.6528" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd13"
+       id="linearGradient1691"
+       gradientUnits="userSpaceOnUse"
+       x1="97.2412"
+       y1="82.0938"
+       x2="118.302"
+       y2="99.2984" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2456"
+       id="radialGradient2462"
+       gradientTransform="scale(1.164226,0.85894)"
+       cx="28.283663"
+       cy="47.400623"
+       fx="28.283663"
+       fy="47.400623"
+       r="13.804391"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:showpageshadow="false"
+     inkscape:window-y="15"
+     inkscape:window-x="0"
+     inkscape:window-height="1007"
+     inkscape:window-width="702"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     showgrid="false"
+     inkscape:current-layer="layer2"
+     inkscape:cy="24"
+     inkscape:cx="24"
+     inkscape:zoom="11.895833"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:grid-points="true"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>spreadheet</rdf:li>
+            <rdf:li>document</rdf:li>
+            <rdf:li>office</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Cédric Krier</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     id="layer1"
+     style="display:inline">
+    <g
+       style="display:inline"
+       transform="matrix(2.144924e-2,0,0,2.086758e-2,43.32772,41.1536)"
+       id="g6707">
+      <rect
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="rect6709"
+         width="1339.6335"
+         height="478.35718"
+         x="-1559.2523"
+         y="-150.69685" />
+      <path
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+         id="path6711"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path6713"
+         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    </g>
+    <rect
+       style="color:#000000;fill:url(#radialGradient15658);fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15656);stroke-width:0.99999970;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
+       id="rect15391"
+       width="34.996506"
+       height="40.997345"
+       x="6.5017405"
+       y="3.5013213"
+       ry="1.1490481"
+       rx="1.1490482" />
+    <rect
+       style="color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15668);stroke-width:0.99999970;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
+       id="rect15660"
+       width="32.996056"
+       height="38.996326"
+       x="7.5033512"
+       y="4.5018268"
+       ry="0.14904855"
+       rx="0.14904846" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="emblem"
+     style="display:inline">
+    <path
+       sodipodi:type="arc"
+       style="fill:url(#radialGradient2462);fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="path1693"
+       sodipodi:cx="32.92857"
+       sodipodi:cy="40.714287"
+       sodipodi:rx="16.071428"
+       sodipodi:ry="11.857142"
+       d="m 48.999998,40.714287 a 16.071428,11.857142 0 1 1 -32.142857,0 16.071428,11.857142 0 1 1 32.142857,0 z"
+       transform="matrix(0.861667,0,0,0.851476,-2.7964417,-8.7699502)" />
+    <g
+       id="g6727"
+       transform="translate(42.845884,-2.7278997)"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true">
+      <path
+         id="path3931"
+         d="m -27.528542,18.092794 c -2.569034,1.698331 -3.982933,4.005039 -3.982933,6.497902 l 0,2.069292 c 0,2.49084 1.413899,4.798223 3.982933,6.496553 2.426489,1.603904 5.633126,2.487468 9.029183,2.487468 3.394772,0 6.601409,-0.883564 9.0291816,-2.487468 2.5677499,-1.69833 3.9816497,-4.005038 3.9816497,-6.496553 l 0,-2.069292 c 0,-2.492863 -1.4145419,-4.800246 -3.9816497,-6.497902 -2.4271306,-1.602555 -5.6337676,-2.486793 -9.0291816,-2.486793 -3.396057,0 -6.602694,0.884238 -9.029183,2.486793 z"
+         style="fill:#670000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3933"
+         d="m -7.0244261,24.453547 c -1.3785844,-3.386544 -6.0530579,-5.880082 -11.6123419,-5.880082 -5.559285,0 -10.233758,2.493538 -11.612343,5.880082 l -0.414795,0 0,2.069967 c 0,4.390164 5.385276,7.948699 12.027138,7.948699 6.642503,0 12.0264951,-3.558535 12.0264951,-7.948699 l 0,-2.069967 -0.4141532,0 0,0 z"
+         style="fill:#a40000;fill-rule:nonzero;stroke:none"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3935"
+         d="m -6.6102729,24.453547 c 0,4.390838 -5.3839921,7.949374 -12.0264951,7.949374 -6.642504,0 -12.027138,-3.558536 -12.027138,-7.949374 0,-4.390839 5.385276,-7.949374 12.027138,-7.949374 6.642503,0 12.0264951,3.558535 12.0264951,7.949374 l 0,0 z"
+         style="fill:url(#linearGradient6738);fill-opacity:1;fill-rule:nonzero;stroke:none"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3937"
+         d="m -6.6102729,26.833098 -0.01541,-2.166417 c -1.304101,4.500778 -4.2365627,6.407522 -7.9234897,7.340997 l 0,1.994425 c 3.990639,-1.00362 7.5619886,-3.288745 7.9389001,-7.169005 l 0,0 z"
+         style="fill:#204a87;fill-rule:nonzero;stroke:none"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3939"
+         d="m -6.6102729,24.453547 c -0.27546,5.079478 -6.5577471,7.395629 -7.9613731,7.483985 l -4.065765,-7.483985 12.026496,0 6.421e-4,0 z"
+         style="fill:url(#linearGradient6740);fill-opacity:1;fill-rule:nonzero;stroke:none"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3941"
+         d="m -21.154435,34.298198 0,-2.069292 c 2.263396,0.294746 4.339941,0.346681 6.582789,-0.213809 l 0.02247,1.987681 c -1.87942,0.616471 -4.819587,0.645473 -6.605262,0.296095 l 0,-6.75e-4 z"
+         style="fill:#4e9a06;fill-rule:nonzero;stroke:none"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3943"
+         d="m -18.637411,24.454221 4.065765,7.483311 c -2.489414,0.948988 -6.582789,0.291374 -6.582789,0.291374 l 2.517024,-7.774685 z"
+         style="fill:url(#linearGradient6742);fill-opacity:1;fill-rule:nonzero;stroke:none"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true"
+         inkscape:connector-curvature="0" />
+      <path
+         transform="matrix(0.979592,0,0,0.979592,-0.380102,0.497449)"
+         d="m -6.875,24.375 c 0,4.280207 -5.260654,7.75 -11.75,7.75 -6.489346,0 -11.75,-3.469793 -11.75,-7.75 0,-4.280207 5.260654,-7.75 11.75,-7.75 6.489346,0 11.75,3.469793 11.75,7.75 z"
+         sodipodi:ry="7.75"
+         sodipodi:rx="11.75"
+         sodipodi:cy="24.375"
+         sodipodi:cx="-18.625"
+         id="path5959"
+         style="opacity:0.31111115;color:#000000;fill:none;stroke:url(#linearGradient6744);stroke-width:1.02083337;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:block;overflow:visible"
+         sodipodi:type="arc"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         sodipodi:type="arc"
+         style="opacity:0.13333327;color:#000000;fill:none;stroke:url(#linearGradient6746);stroke-width:1.02083337;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:block;overflow:visible"
+         id="path6707"
+         sodipodi:cx="-18.625"
+         sodipodi:cy="24.375"
+         sodipodi:rx="11.75"
+         sodipodi:ry="7.75"
+         d="m -6.875,24.375 c 0,4.280207 -5.260654,7.75 -11.75,7.75 -6.489346,0 -11.75,-3.469793 -11.75,-7.75 0,-4.280207 5.260654,-7.75 11.75,-7.75 6.489346,0 11.75,3.469793 11.75,7.75 z"
+         transform="matrix(0.979592,0,0,0.979592,-0.380102,2.497449)"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+    </g>
+  </g>
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-image-missing.svg b/trytond/ir/ui/icons/tryton-image-missing.svg
new file mode 100644
index 0000000..8b7f491
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-image-missing.svg
@@ -0,0 +1,332 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   inkscape:export-ydpi="90.000000"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
+   width="48px"
+   height="48px"
+   id="svg11300"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/status"
+   sodipodi:docname="image-missing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs3">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective43" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6719"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6717"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient6715"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       id="linearGradient3563">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3565" />
+      <stop
+         style="stop-color:#939393;stop-opacity:1;"
+         offset="1"
+         id="stop3567" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3555">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1;"
+         offset="0"
+         id="stop3557" />
+      <stop
+         style="stop-color:#d0d0d0;stop-opacity:1;"
+         offset="1"
+         id="stop3559" />
+    </linearGradient>
+    <linearGradient
+       style="stroke-dasharray:none;stroke-miterlimit:4.0000000;stroke-width:1.2166667"
+       y2="36.0328"
+       x2="31.0813"
+       y1="3.7319"
+       x1="12.4873"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd1">
+      <stop
+         id="stop16177"
+         style="stop-color:#D2D2D2;stroke-dasharray:none;stroke-miterlimit:4.0000000;stroke-width:1.2166667"
+         offset="0" />
+      <stop
+         id="stop16179"
+         style="stop-color:#EDEDED;stroke-dasharray:none;stroke-miterlimit:4.0000000;stroke-width:1.2166667"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd1"
+       id="linearGradient16280"
+       gradientUnits="userSpaceOnUse"
+       x1="12.4873"
+       y1="3.7319"
+       x2="31.0813"
+       y2="36.0328"
+       gradientTransform="matrix(1.211383,0,0,1.211383,-2.021433,0.189894)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient12129">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop12131" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop12133" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient12129"
+       id="radialGradient12135"
+       cx="24.218407"
+       cy="41.636040"
+       fx="24.218407"
+       fy="41.636040"
+       r="22.097088"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.184000,0.000000,33.97501)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3555"
+       id="radialGradient3561"
+       cx="26.728037"
+       cy="38.34853"
+       fx="26.728037"
+       fy="38.34853"
+       r="17.926361"
+       gradientTransform="matrix(1.848501,-1.547102e-23,1.227926e-24,1.289078,-21.29931,-13.68176)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3563"
+       id="linearGradient3569"
+       x1="28.107494"
+       y1="34.868584"
+       x2="22.169001"
+       y2="9.8661737"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-1.056826e-16,0.883885)" />
+  </defs>
+  <sodipodi:namedview
+     stroke="#cc0000"
+     fill="#cc0000"
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="0.25490196"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-148.28654"
+     inkscape:cy="31.493755"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:showpageshadow="false"
+     inkscape:window-width="1107"
+     inkscape:window-height="818"
+     inkscape:window-x="0"
+     inkscape:window-y="30">
+    <inkscape:grid
+       id="GridFromPre046Settings"
+       type="xygrid"
+       originx="0px"
+       originy="0px"
+       spacingx="1px"
+       spacingy="1px"
+       color="#0000ff"
+       empcolor="#0000ff"
+       opacity="0.2"
+       empopacity="0.4"
+       empspacing="4" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:title>Broken Image</dc:title>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>image</rdf:li>
+            <rdf:li>picture</rdf:li>
+            <rdf:li>photo</rdf:li>
+            <rdf:li>missing</rdf:li>
+            <rdf:li>broken</rdf:li>
+            <rdf:li>404</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Garrett LeSage</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       style="display:inline"
+       transform="matrix(2.367169e-2,0,0,2.086758e-2,45.08634,40.14468)"
+       id="g6707">
+      <rect
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="rect6709"
+         width="1339.6335"
+         height="478.35718"
+         x="-1559.2523"
+         y="-150.69685" />
+      <path
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+         id="path6711"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path6713"
+         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    </g>
+    <path
+       id="path16181"
+       d="M 45.343675,39.903974 C 45.343675,41.842189 43.768877,43.416987 41.830663,43.416987 L 6.3371177,43.416987 C 4.3989037,43.416987 2.8241047,41.842189 2.8241047,39.903974 L 2.8241047,7.0947821 C 2.8241047,5.1565681 4.3989037,3.581769 6.3371177,3.581769 L 41.830663,3.581769 C 43.768877,3.581769 45.343675,5.1565681 45.343675,7.0947821 L 45.343675,39.903974 L 45.343675,39.903974 z "
+       style="fill:url(#linearGradient16280);fill-rule:nonzero;stroke:#646464;stroke-width:0.99234736;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       sodipodi:nodetypes="cccccccccc"
+       transform="matrix(1.011299,0,0,1.004137,-0.356015,-9.658587e-2)"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <path
+       style="fill:url(#radialGradient3561);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3569);stroke-width:0.99794304;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.61658032"
+       d="M 41.467991,35.25247 L 6.6152692,35.25247 L 6.6152692,11.250058 L 41.467991,11.250058 L 41.467991,35.25247 L 41.467991,35.25247 z "
+       id="path12125"
+       sodipodi:nodetypes="cccccc"
+       transform="matrix(1.004226,0,0,0.9999,-0.143226,0.251056)"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <path
+       style="fill:none;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.99670035;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.86010359"
+       d="M 44.480104,39.32848 C 44.480104,41.187964 43.499604,42.345241 41.640121,42.345241 L 6.6160507,42.345241 C 4.7565677,42.345241 3.6876787,41.276353 3.6876787,39.416869 L 3.6876787,7.5970548 C 3.6876787,5.737571 5.1985087,4.403517 7.0579927,4.403517 L 41.198179,4.403517 C 43.057662,4.403517 44.480104,5.737571 44.480104,7.5970548 L 44.480104,38.974927 L 44.480104,39.32848 z "
+       id="path11975"
+       sodipodi:nodetypes="cccccccccc"
+       transform="matrix(1.005089,0,0,1.001536,-0.206445,8.971654e-2)"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <g
+       id="g3551"
+       transform="matrix(0.751031,0,0,0.764054,10.06196,10.18347)"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true">
+      <path
+         d="M 11.318692,9.2240568 C 16.641997,14.693047 22.769247,19.123651 29.210664,22.931105 L 27.441568,24.159843 C 21.101863,20.04489 15.052508,15.498993 9.1840818,10.652117 L 11.318692,9.2240568 z "
+         id="path2565"
+         style="opacity:1;color:#000000;fill:#cc0000;fill-opacity:1;fill-rule:nonzero;stroke:#cc0000;stroke-width:2.64021659;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         d="M 26.73892,8.9210568 C 21.867631,15.95255 15.247359,21.081199 7.9065151,25.28163 L 10.087564,23.520856 C 8.7241111,24.379297 25.574485,11.804168 23.852075,10.207903 L 26.73892,8.9210568 z "
+         id="path2575"
+         style="opacity:1;color:#000000;fill:#cc0000;fill-opacity:1;fill-rule:nonzero;stroke:#cc0000;stroke-width:2.64021564;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+    </g>
+  </g>
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-list.svg b/trytond/ir/ui/icons/tryton-list.svg
new file mode 100644
index 0000000..1ec0949
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-list.svg
@@ -0,0 +1,342 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48px"
+   height="48px"
+   id="svg4198"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/actions"
+   sodipodi:docname="format-justify-fill.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4200">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective49" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient5031"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient5029"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient5027"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3558">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop3560" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop3562" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3558"
+       id="radialGradient3564"
+       cx="22.571428"
+       cy="30.857143"
+       fx="22.571428"
+       fy="30.857143"
+       r="15.571428"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.651376,4.638648e-15,10.75754)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient15218">
+      <stop
+         style="stop-color:#f8f8f7;stop-opacity:1;"
+         offset="0"
+         id="stop15220" />
+      <stop
+         id="stop2269"
+         offset="0.59928656"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#e2e2de;stop-opacity:1;"
+         offset="1"
+         id="stop15222" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15218"
+       id="linearGradient15224"
+       x1="22.308331"
+       y1="18.992140"
+       x2="35.785294"
+       y2="39.498238"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.060837,0.000000,0.000000,0.987595,4.641161,4.108291)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2259">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop2261" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop2263" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2259"
+       id="linearGradient2265"
+       x1="26.076092"
+       y1="26.696676"
+       x2="30.811172"
+       y2="42.007351"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.993566,0.000000,0.000000,1.000000,6.219859,4.033411)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2216">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop2218" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop2220" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2216"
+       id="linearGradient2222"
+       x1="36.8125"
+       y1="39.15625"
+       x2="39.0625"
+       y2="42.0625"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(6.161836,4.033411)" />
+    <linearGradient
+       id="linearGradient2224">
+      <stop
+         style="stop-color:#7c7c7c;stop-opacity:1;"
+         offset="0"
+         id="stop2226" />
+      <stop
+         style="stop-color:#b8b8b8;stop-opacity:1;"
+         offset="1"
+         id="stop2228" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15218"
+       id="linearGradient2240"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.342704,0.000000,0.000000,1.235378,-8.219611,-6.577189)"
+       x1="20.794008"
+       y1="18.378813"
+       x2="35.596001"
+       y2="39.60046" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#bebebe"
+     borderopacity="1.0000000"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4"
+     inkscape:cx="50.477879"
+     inkscape:cy="12.80998"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:window-width="1280"
+     inkscape:window-height="818"
+     inkscape:window-x="154"
+     inkscape:window-y="30"
+     inkscape:showpageshadow="false" />
+  <metadata
+     id="metadata4203">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Justify Center</dc:title>
+        <dc:date>2005-10-29</dc:date>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Andreas Nilsson</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>justify</rdf:li>
+            <rdf:li>center</rdf:li>
+            <rdf:li>format</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       style="display:inline"
+       id="g5022"
+       transform="matrix(2.330573e-2,0,0,1.227058e-2,44.47891,44.41691)">
+      <rect
+         y="-150.69685"
+         x="-1559.2523"
+         height="478.35718"
+         width="1339.6335"
+         id="rect4173"
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path5058"
+         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+      <path
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+         id="path5018"
+         sodipodi:nodetypes="cccc" />
+    </g>
+    <rect
+       style="opacity:1;fill:url(#linearGradient2240);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4238"
+       width="38.996792"
+       height="45.003101"
+       x="4.5016017"
+       y="1.4968988"
+       rx="0.56650788"
+       ry="0.56650823" />
+    <rect
+       style="opacity:1;color:#000000;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect4248"
+       width="30"
+       height="2"
+       x="-39"
+       y="10"
+       transform="scale(-1.000000,1.000000)" />
+    <rect
+       y="16"
+       x="-39"
+       height="2"
+       width="30"
+       id="rect4250"
+       style="opacity:1;color:#000000;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       transform="scale(-1.000000,1.000000)" />
+    <rect
+       style="opacity:1;color:#000000;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect4252"
+       width="30"
+       height="2"
+       x="-39"
+       y="22"
+       transform="scale(-1.000000,1.000000)" />
+    <rect
+       y="28"
+       x="-39"
+       height="2"
+       width="30"
+       id="rect4254"
+       style="opacity:1;color:#000000;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       transform="scale(-1.000000,1.000000)" />
+    <rect
+       style="opacity:1;color:#000000;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect4256"
+       width="30"
+       height="2"
+       x="-39"
+       y="34"
+       transform="scale(-1.000000,1.000000)" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2245"
+       width="37.025566"
+       height="43.022316"
+       x="5.4997125"
+       y="2.4997177"
+       rx="0"
+       ry="0" />
+  </g>
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-presentation.svg b/trytond/ir/ui/icons/tryton-presentation.svg
new file mode 100644
index 0000000..179e0e4
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-presentation.svg
@@ -0,0 +1,567 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   inkscape:export-ydpi="90.000000"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
+   width="48px"
+   height="48px"
+   id="svg11300"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/mimetypes"
+   sodipodi:docname="x-office-presentation.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs3">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective80" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient10020">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop10022" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop10024" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2456">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop2458" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop2460" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2456"
+       id="radialGradient2462"
+       gradientTransform="scale(1.164226,0.85894)"
+       cx="28.283663"
+       cy="47.400623"
+       fx="28.283663"
+       fy="47.400623"
+       r="13.804391"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6687">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop6689" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop6691" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6719">
+      <stop
+         style="stop-color:#73d216;stop-opacity:1;"
+         offset="0"
+         id="stop6721" />
+      <stop
+         style="stop-color:#d5f7b3;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6723" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6711">
+      <stop
+         style="stop-color:#5b8ccb;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop6713" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6715" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6699">
+      <stop
+         style="stop-color:#ff7171;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop6701" />
+      <stop
+         style="stop-color:#cc0000;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6703" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient9214">
+      <stop
+         style="stop-color:#5b5b5b;stop-opacity:1;"
+         offset="0"
+         id="stop9216" />
+      <stop
+         style="stop-color:#5b5b5b;stop-opacity:0;"
+         offset="1"
+         id="stop9218" />
+    </linearGradient>
+    <linearGradient
+       y2="11.0039"
+       x2="20.9453"
+       y1="25.4727"
+       x1="27.2949"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd5">
+      <stop
+         id="stop13012"
+         style="stop-color:#f5f5f5;stop-opacity:1;"
+         offset="0" />
+      <stop
+         id="stop13014"
+         style="stop-color:#e1e1e1;stop-opacity:1;"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd5"
+       id="linearGradient1553"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.868867,0,0,1.5088,-20.39097,-10.01652)"
+       x1="27.2949"
+       y1="25.4727"
+       x2="20.9453"
+       y2="11.0039" />
+    <linearGradient
+       y2="10.4377"
+       x2="24.6035"
+       y1="9.3433"
+       x1="24.6035"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd6">
+      <stop
+         id="stop13035"
+         style="stop-color:#F0F0F0"
+         offset="0" />
+      <stop
+         id="stop13037"
+         style="stop-color:#686868"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       fy="30.9912"
+       fx="24.7744"
+       r="0.5902"
+       cy="30.9912"
+       cx="24.7744"
+       id="aigrd7">
+      <stop
+         id="stop13046"
+         style="stop-color:#F0F0F0"
+         offset="0" />
+      <stop
+         id="stop13048"
+         style="stop-color:#848484"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd7"
+       id="radialGradient1537"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.502527,0,0,3.502527,-61.93009,-72.87696)"
+       cx="24.7744"
+       cy="30.9912"
+       fx="24.7744"
+       fy="30.9912"
+       r="0.5902" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient9214"
+       id="radialGradient9220"
+       cx="26.162951"
+       cy="44.022526"
+       fx="26.162951"
+       fy="44.022526"
+       r="12.197592"
+       gradientTransform="matrix(1,0,0,0.181159,-2.871401e-15,36.04743)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd6"
+       id="linearGradient9224"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.905258,0,0,2.521777,-22.82065,-13.24604)"
+       x1="24.919374"
+       y1="6.1478682"
+       x2="24.919374"
+       y2="7.4600263" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6687"
+       id="linearGradient10002"
+       gradientUnits="userSpaceOnUse"
+       x1="-20.750000"
+       y1="29.000000"
+       x2="-19.500000"
+       y2="18.750000" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6699"
+       id="linearGradient10012"
+       gradientUnits="userSpaceOnUse"
+       x1="-22.976406"
+       y1="18.516047"
+       x2="-14.360273"
+       y2="33.016045" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6711"
+       id="linearGradient10014"
+       gradientUnits="userSpaceOnUse"
+       x1="-16.387411"
+       y1="24.453547"
+       x2="-9.7352734"
+       y2="28.195539" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6719"
+       id="linearGradient10016"
+       gradientUnits="userSpaceOnUse"
+       x1="-17.863041"
+       y1="30.827509"
+       x2="-20.821646"
+       y2="25.015009" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10020"
+       id="linearGradient10026"
+       x1="23.379572"
+       y1="28.369167"
+       x2="24.24518"
+       y2="6.0000024"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     stroke="#ef2929"
+     fill="#eeeeec"
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="0.25490196"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="95.591611"
+     inkscape:cy="-8.1950324"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:showpageshadow="false"
+     inkscape:window-width="972"
+     inkscape:window-height="818"
+     inkscape:window-x="462"
+     inkscape:window-y="30" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:title />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <path
+       inkscape:r_cy="true"
+       inkscape:r_cx="true"
+       id="path10010"
+       d="M 26.482036,37.621562 L 24.499994,37.621562 L 24.499994,6 L 26.482036,6 L 26.482036,37.620112 L 26.482036,37.621562 z "
+       style="fill:#a4a4a4;fill-rule:nonzero;stroke:#555753;stroke-miterlimit:4;stroke-opacity:1" />
+    <path
+       style="fill:#a4a4a4;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+       d="M 26,37.621562 L 24.982042,37.621562 L 24.982042,6 L 26,6 L 26,37.620112 L 26,37.621562 z "
+       id="path13009"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <path
+       style="fill:url(#linearGradient1553);fill-rule:nonzero;stroke:#888a85;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 43.499996,32.499982 L 7.5000001,32.499982 L 7.5000001,5.4999944 L 43.499996,5.4999944 L 43.499996,32.499982 L 43.499996,32.499982 z "
+       id="path13016"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:0.39010991;color:#000000;fill:url(#radialGradient9220);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path8339"
+       sodipodi:cx="26.162951"
+       sodipodi:cy="44.022526"
+       sodipodi:rx="12.197592"
+       sodipodi:ry="2.2097087"
+       d="M 38.360542 44.022526 A 12.197592 2.2097087 0 1 1  13.965359,44.022526 A 12.197592 2.2097087 0 1 1  38.360542 44.022526 z"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true"
+       transform="matrix(1.749254,0,0,1.452548,-20.38301,-20.43749)" />
+    <g
+       transform="matrix(1.539016,0,0,1.539016,-12.89862,-11.05731)"
+       style="fill:#a4a4a4;fill-rule:nonzero;stroke:#555753;stroke-miterlimit:4;stroke-opacity:1"
+       id="g13020"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true">
+      <path
+         d="M 31.492,35.959 L 25.217,31.321 L 25.151306,31.665948 L 30.016,35.955 L 31.492,35.959 z "
+         id="path13022"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true"
+         style="stroke:#555753;stroke-opacity:1"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         d="M 18.408,35.959 L 24.683,31.321 L 24.63283,31.72338 L 19.883,35.955 L 18.408,35.959 z "
+         id="path13024"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true"
+         style="stroke:#555753;stroke-opacity:1"
+         sodipodi:nodetypes="ccccc" />
+    </g>
+    <path
+       inkscape:r_cy="true"
+       inkscape:r_cx="true"
+       id="path10018"
+       d="M 42.483508,31.500001 L 8.4999999,31.500001 L 8.4999999,6.5000025 L 42.483508,6.5000025 L 42.483508,31.500001 L 42.483508,31.500001 z "
+       style="fill:none;fill-rule:nonzero;stroke:url(#linearGradient10026);stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
+    <path
+       style="opacity:0.15999995;fill:#000000;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+       d="M 37.64607,5.8376811 L 8,5.8376811 L 8,8 C 9.671372,5.6514612 37.64607,5.8376811 37.64607,5.8376811 z "
+       id="path13041"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <rect
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect13420"
+       width="9"
+       height="1"
+       x="31"
+       y="9"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <rect
+       style="opacity:1;color:#000000;fill:url(#linearGradient9224);fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect9222"
+       width="40.779099"
+       height="4"
+       x="5.1403117"
+       y="1.5"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true"
+       rx="1.941476"
+       ry="1.9414761" />
+    <rect
+       inkscape:r_cy="true"
+       inkscape:r_cx="true"
+       y="11"
+       x="31"
+       height="1"
+       width="9"
+       id="rect9226"
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    <rect
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect9228"
+       width="9"
+       height="1"
+       x="31"
+       y="13"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <rect
+       inkscape:r_cy="true"
+       inkscape:r_cx="true"
+       y="15"
+       x="31"
+       height="1"
+       width="9"
+       id="rect9230"
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    <rect
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect9232"
+       width="6"
+       height="1"
+       x="31"
+       y="17"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <rect
+       inkscape:r_cy="true"
+       inkscape:r_cx="true"
+       y="22"
+       x="11"
+       height="1"
+       width="23"
+       id="rect9234"
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    <rect
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect9236"
+       width="23"
+       height="1"
+       x="11"
+       y="24"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <rect
+       inkscape:r_cy="true"
+       inkscape:r_cx="true"
+       y="26"
+       x="11"
+       height="1"
+       width="23"
+       id="rect9238"
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    <rect
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect9240"
+       width="16"
+       height="1"
+       x="11"
+       y="28"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <path
+       sodipodi:type="arc"
+       style="fill:url(#radialGradient2462);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
+       id="path1693"
+       sodipodi:cx="32.92857"
+       sodipodi:cy="40.714287"
+       sodipodi:rx="16.071428"
+       sodipodi:ry="11.857142"
+       d="M 48.999998 40.714287 A 16.071428 11.857142 0 1 1  16.857141,40.714287 A 16.071428 11.857142 0 1 1  48.999998 40.714287 z"
+       transform="matrix(0.512138,0,0,0.512138,2.997478,-5.778852)"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <g
+       style="display:inline"
+       id="g6727"
+       transform="matrix(0.587368,0,0,0.587368,30.84597,-1.301179)"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true">
+      <path
+         id="path3931"
+         d="M -27.528542,18.092794 C -30.097576,19.791125 -31.511475,22.097833 -31.511475,24.590696 L -31.511475,26.659988 C -31.511475,29.150828 -30.097576,31.458211 -27.528542,33.156541 C -25.102053,34.760445 -21.895416,35.644009 -18.499359,35.644009 C -15.104587,35.644009 -11.89795,34.760445 -9.4701774,33.156541 C -6.9024275,31.458211 -5.4885277,29.151503 -5.4885277,26.659988 L -5.4885277,24.590696 C -5.4885277,22.097833 -6.9030696,19.79045 -9.4701774,18.092794 C -11.897308,16.490239 -15.103945,15.606001 -18.499359,15.606001 C -21.895416,15.606001 -25.102053,16.490239 -27.528542,18.092794 z "
+         style="fill:#670000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3933"
+         d="M -7.0244261,24.453547 C -8.4030105,21.067003 -13.077484,18.573465 -18.636768,18.573465 C -24.196053,18.573465 -28.870526,21.067003 -30.249111,24.453547 L -30.663906,24.453547 L -30.663906,26.523514 C -30.663906,30.913678 -25.27863,34.472213 -18.636768,34.472213 C -11.994265,34.472213 -6.6102729,30.913678 -6.6102729,26.523514 L -6.6102729,24.453547 L -7.0244261,24.453547 L -7.0244261,24.453547 z "
+         style="fill:#a40000;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3935"
+         d="M -6.6102729,24.453547 C -6.6102729,28.844385 -11.994265,32.402921 -18.636768,32.402921 C -25.279272,32.402921 -30.663906,28.844385 -30.663906,24.453547 C -30.663906,20.062708 -25.27863,16.504173 -18.636768,16.504173 C -11.994265,16.504173 -6.6102729,20.062708 -6.6102729,24.453547 L -6.6102729,24.453547 z "
+         style="fill:url(#linearGradient10012);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3937"
+         d="M -6.6102729,26.833098 L -6.6256833,24.666681 C -7.9297843,29.167459 -10.862246,31.074203 -14.549173,32.007678 L -14.549173,34.002103 C -10.558534,32.998483 -6.9871844,30.713358 -6.6102729,26.833098 L -6.6102729,26.833098 z "
+         style="fill:#204a87;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3939"
+         d="M -6.6102729,24.453547 C -6.8857329,29.533025 -13.16802,31.849176 -14.571646,31.937532 L -18.637411,24.453547 L -6.610915,24.453547 L -6.6102729,24.453547 z "
+         style="fill:url(#linearGradient10014);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3941"
+         d="M -21.154435,34.298198 L -21.154435,32.228906 C -18.891039,32.523652 -16.814494,32.575587 -14.571646,32.015097 L -14.549173,34.002778 C -16.428593,34.619249 -19.36876,34.648251 -21.154435,34.298873 L -21.154435,34.298198 z "
+         style="fill:#4e9a06;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3943"
+         d="M -18.637411,24.454221 L -14.571646,31.937532 C -17.06106,32.88652 -21.154435,32.228906 -21.154435,32.228906 L -18.637411,24.454221 z "
+         style="fill:url(#linearGradient10016);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         transform="matrix(0.946982,0,0,0.889701,-0.987461,2.688545)"
+         d="M -6.875 24.375 A 11.75 7.75 0 1 1  -30.375,24.375 A 11.75 7.75 0 1 1  -6.875 24.375 z"
+         sodipodi:ry="7.75"
+         sodipodi:rx="11.75"
+         sodipodi:cy="24.375"
+         sodipodi:cx="-18.625"
+         id="path5959"
+         style="opacity:0.31111115;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient10002);stroke-width:1.85479884;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+         sodipodi:type="arc"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+    </g>
+    <g
+       inkscape:r_cy="true"
+       inkscape:r_cx="true"
+       id="g10004"
+       style="fill:#a4a4a4;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+       transform="matrix(1.539016,0,0,1.539016,-12.89862,-11.05731)">
+      <path
+         inkscape:r_cy="true"
+         inkscape:r_cx="true"
+         id="path10006"
+         d="M 30.015,35.956 L 31.492,35.959 L 25.217,31.321 L 24.778,31.307 L 30.016,35.955 L 30.015,35.956 z " />
+      <path
+         inkscape:r_cy="true"
+         inkscape:r_cx="true"
+         id="path10008"
+         d="M 19.884,35.956 L 18.408,35.959 L 24.683,31.321 L 25.121,31.307 L 19.883,35.955 L 19.884,35.956 z " />
+    </g>
+    <path
+       style="fill:url(#radialGradient1537);fill-rule:nonzero;stroke:#555753;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 27.839689,36.499985 C 27.839689,37.792418 26.79243,38.839676 25.499998,38.839676 C 24.207565,38.839676 23.160308,37.792418 23.160308,36.499985 C 23.160308,35.211057 24.207565,34.1603 25.499998,34.1603 C 26.79243,34.1603 27.839689,35.211057 27.839689,36.499985 z "
+       id="path13050"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+  </g>
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-readonly.svg b/trytond/ir/ui/icons/tryton-readonly.svg
new file mode 100644
index 0000000..6a3e477
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-readonly.svg
@@ -0,0 +1,300 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   inkscape:export-ydpi="90.000000"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
+   width="48px"
+   height="48px"
+   id="svg11300"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/emblems"
+   sodipodi:docname="emblem-readonly.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs3">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective47" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6719"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6717"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient6715"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       id="linearGradient11327">
+      <stop
+         style="stop-color:#7d6400;stop-opacity:1;"
+         offset="0"
+         id="stop11329" />
+      <stop
+         style="stop-color:#be9700;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop11331" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2092">
+      <stop
+         id="stop2094"
+         offset="0"
+         style="stop-color:#fff7b0;stop-opacity:1;" />
+      <stop
+         style="stop-color:#ffec41;stop-opacity:1.0000000;"
+         offset="0.20999999"
+         id="stop2098" />
+      <stop
+         id="stop2293"
+         offset="0.83999997"
+         style="stop-color:#e2cc00;stop-opacity:1;" />
+      <stop
+         id="stop2100"
+         offset="1"
+         style="stop-color:#c3af00;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient11335">
+      <stop
+         style="stop-color:#6f716d;stop-opacity:1;"
+         offset="0"
+         id="stop11337" />
+      <stop
+         style="stop-color:#9ea09c;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop11339" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10591">
+      <stop
+         style="stop-color:#cad0c6;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop10593" />
+      <stop
+         id="stop10599"
+         offset="0.50000000"
+         style="stop-color:#eaece9;stop-opacity:1.0000000;" />
+      <stop
+         style="stop-color:#c5cbc0;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop10595" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient11520">
+      <stop
+         id="stop11522"
+         offset="0.0000000"
+         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
+      <stop
+         id="stop11524"
+         offset="1.0000000"
+         style="stop-color:#dcdcdc;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient11508"
+       inkscape:collect="always">
+      <stop
+         id="stop11510"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop11512"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient11508"
+       id="radialGradient1348"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.338462,-1.435476e-15,29.48178)"
+       cx="30.203562"
+       cy="44.565483"
+       fx="30.203562"
+       fy="44.565483"
+       r="6.5659914" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient11520"
+       id="radialGradient1366"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.995058,-1.651527e-32,0.000000,1.995058,-24.32488,-35.70087)"
+       cx="24.445690"
+       cy="35.878170"
+       fx="24.445690"
+       fy="35.878170"
+       r="20.530962" />
+  </defs>
+  <sodipodi:namedview
+     stroke="#ef2929"
+     fill="#729fcf"
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="0.25490196"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="24.194962"
+     inkscape:cy="-13.983676"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:showpageshadow="false"
+     inkscape:window-width="872"
+     inkscape:window-height="707"
+     inkscape:window-x="155"
+     inkscape:window-y="141" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:title>Read Only Emblem</dc:title>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>emblem</rdf:li>
+            <rdf:li>read-only</rdf:li>
+            <rdf:li>nowrite</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       transform="matrix(2.243788e-2,0,0,2.086758e-2,44.06795,40.547)"
+       id="g6707">
+      <rect
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="rect6709"
+         width="1339.6335"
+         height="478.35718"
+         x="-1559.2523"
+         y="-150.69685" />
+      <path
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+         id="path6711"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path6713"
+         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    </g>
+    <rect
+       ry="5.4548240"
+       rx="5.4548240"
+       y="3.5233452"
+       x="4.4147282"
+       height="40.061924"
+       width="40.061924"
+       id="rect11518"
+       style="opacity:1.0000000;color:#000000;fill:url(#radialGradient1366);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#9b9b9b;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+    <rect
+       style="opacity:1.0000000;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+       id="rect11528"
+       width="37.696587"
+       height="37.696587"
+       x="5.5973887"
+       y="4.7060070"
+       rx="4.2426391"
+       ry="4.2426391" />
+    <path
+       style="opacity:0.69886361;color:#000000;fill:#888a85;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.9999997;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+       d="M 23.906254,10.878347 C 19.835833,11.005873 17.137508,12.963117 17.137508,17.000087 L 17.137508,21.120489 L 16.221429,21.120489 C 15.54928,21.120489 15,21.583436 15,22.163203 L 15,32.993974 C 15,33.573741 15.54928,34.036689 16.221429,34.036688 L 32.795528,34.036688 C 33.467687,34.036688 34,33.57374 34,32.993974 L 34,22.163203 C 34,21.583437 33.467687,21.120489 32.795528,21.120489 L 31.862492,21.120489 L 31.87946,17.067359 C 31.87946,12.782023 28.950269,10.931241 24.516968,10.878347 C 24.310278,10.875868 24.10644,10.872076 23.906254,10.878347 z M 24.313392,13.58604 C 24.388241,13.584353 24.4735,13.58604 24.550894,13.58604 C 29.469737,13.58604 29.092541,17.084436 29.165175,18.126891 L 29.165175,21.120489 L 19.902675,21.120489 L 19.902675,18.143709 C 19.885214,17.109531 19.597992,13.692412 24.313392,13.58604 z "
+       id="path2086"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+  </g>
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-spreadsheet.svg b/trytond/ir/ui/icons/tryton-spreadsheet.svg
new file mode 100644
index 0000000..8a2b0ba
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-spreadsheet.svg
@@ -0,0 +1,628 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="x-office-spreadsheet.svg"
+   inkscape:version="0.48.0 r9654"
+   sodipodi:version="0.32"
+   id="svg13684"
+   height="48.000000px"
+   width="48.000000px"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1">
+  <defs
+     id="defs3">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective114" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6719"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6717"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient6715"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6687"
+       id="linearGradient6746"
+       gradientUnits="userSpaceOnUse"
+       x1="-20.750000"
+       y1="29.000000"
+       x2="-19.500000"
+       y2="18.750000" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6687">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop6689" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop6691" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6687"
+       id="linearGradient6744"
+       gradientUnits="userSpaceOnUse"
+       x1="-20.750000"
+       y1="29.000000"
+       x2="-19.500000"
+       y2="18.750000" />
+    <linearGradient
+       id="linearGradient6719">
+      <stop
+         style="stop-color:#73d216;stop-opacity:1;"
+         offset="0"
+         id="stop6721" />
+      <stop
+         style="stop-color:#d5f7b3;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6723" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6719"
+       id="linearGradient6742"
+       gradientUnits="userSpaceOnUse"
+       x1="-17.863041"
+       y1="30.827509"
+       x2="-20.821646"
+       y2="25.015009" />
+    <linearGradient
+       id="linearGradient6711">
+      <stop
+         style="stop-color:#5b8ccb;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop6713" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6715" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6711"
+       id="linearGradient6740"
+       gradientUnits="userSpaceOnUse"
+       x1="-16.387411"
+       y1="24.453547"
+       x2="-9.7352734"
+       y2="28.195539" />
+    <linearGradient
+       id="linearGradient6699">
+      <stop
+         style="stop-color:#ff7171;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop6701" />
+      <stop
+         style="stop-color:#cc0000;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6703" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6699"
+       id="linearGradient6738"
+       gradientUnits="userSpaceOnUse"
+       x1="-22.976406"
+       y1="18.516047"
+       x2="-14.360273"
+       y2="33.016045" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4542">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4544" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop4546" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4542"
+       id="radialGradient4548"
+       cx="24.306795"
+       cy="42.07798"
+       fx="24.306795"
+       fy="42.07798"
+       r="15.821514"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.284916,-2.846681e-15,30.08928)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2456">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop2458" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop2460" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient269">
+      <stop
+         id="stop270"
+         offset="0.0000000"
+         style="stop-color:#a3a3a3;stop-opacity:1.0000000;" />
+      <stop
+         id="stop271"
+         offset="1.0000000"
+         style="stop-color:#4c4c4c;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient269"
+       id="radialGradient15656"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.971646,0.000000,0.000000,1.034707,3.240408,0.495684)"
+       cx="8.8244190"
+       cy="3.7561285"
+       fx="8.8244190"
+       fy="3.7561285"
+       r="37.751713" />
+    <linearGradient
+       id="linearGradient259">
+      <stop
+         id="stop260"
+         offset="0.0000000"
+         style="stop-color:#fafafa;stop-opacity:1.0000000;" />
+      <stop
+         id="stop261"
+         offset="1.0000000"
+         style="stop-color:#bbbbbb;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient259"
+       id="radialGradient15658"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.963839,0.000000,0.000000,1.043088,-0.124825,-0.151970)"
+       cx="33.966679"
+       cy="35.736916"
+       fx="33.966679"
+       fy="35.736916"
+       r="86.708450" />
+    <linearGradient
+       id="linearGradient15662">
+      <stop
+         id="stop15664"
+         offset="0.0000000"
+         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
+      <stop
+         id="stop15666"
+         offset="1.0000000"
+         style="stop-color:#f8f8f8;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15662"
+       id="radialGradient15668"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.974777,0.000000,0.000000,1.034091,3.161873,0.559274)"
+       cx="8.1435566"
+       cy="7.2678967"
+       fx="8.1435566"
+       fy="7.2678967"
+       r="38.158695" />
+    <linearGradient
+       y2="99.2984"
+       x2="118.302"
+       y1="82.0938"
+       x1="97.2412"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd13">
+      <stop
+         id="stop12995"
+         style="stop-color:#E8F066"
+         offset="0" />
+      <stop
+         id="stop12997"
+         style="stop-color:#949941"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="100.6528"
+       x2="115.5175"
+       y1="89.1104"
+       x1="90.8311"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd12">
+      <stop
+         id="stop12988"
+         style="stop-color:#E8F066"
+         offset="0" />
+      <stop
+         id="stop12990"
+         style="stop-color:#777A34"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="92.6123"
+       x2="124.8197"
+       y1="75.1099"
+       x1="105.0923"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd11">
+      <stop
+         id="stop12981"
+         style="stop-color:#3FA6CC"
+         offset="0" />
+      <stop
+         id="stop12983"
+         style="stop-color:#00687A"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="94.8"
+       x2="126.1107"
+       y1="84.7578"
+       x1="107.8672"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd10">
+      <stop
+         id="stop12974"
+         style="stop-color:#2C7894"
+         offset="0" />
+      <stop
+         id="stop12976"
+         style="stop-color:#0E3D47"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="95.8999"
+       x2="118.2002"
+       y1="78.1079"
+       x1="105.8184"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd9">
+      <stop
+         id="stop12967"
+         style="stop-color:#C1553A"
+         offset="0" />
+      <stop
+         id="stop12969"
+         style="stop-color:#803926"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="98.8832"
+       x2="118.3481"
+       y1="81.1763"
+       x1="106.0254"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd8">
+      <stop
+         id="stop12960"
+         style="stop-color:#C09287"
+         offset="0" />
+      <stop
+         id="stop12962"
+         style="stop-color:#803926"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd8"
+       id="linearGradient1681"
+       gradientUnits="userSpaceOnUse"
+       x1="106.0254"
+       y1="81.1763"
+       x2="118.3481"
+       y2="98.8832" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd9"
+       id="linearGradient1683"
+       gradientUnits="userSpaceOnUse"
+       x1="105.8184"
+       y1="78.1079"
+       x2="118.2002"
+       y2="95.8999" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd10"
+       id="linearGradient1685"
+       gradientUnits="userSpaceOnUse"
+       x1="107.8672"
+       y1="84.7578"
+       x2="126.1107"
+       y2="94.8" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd11"
+       id="linearGradient1687"
+       gradientUnits="userSpaceOnUse"
+       x1="105.0923"
+       y1="75.1099"
+       x2="124.8197"
+       y2="92.6123" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd12"
+       id="linearGradient1689"
+       gradientUnits="userSpaceOnUse"
+       x1="90.8311"
+       y1="89.1104"
+       x2="115.5175"
+       y2="100.6528" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd13"
+       id="linearGradient1691"
+       gradientUnits="userSpaceOnUse"
+       x1="97.2412"
+       y1="82.0938"
+       x2="118.302"
+       y2="99.2984" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2456"
+       id="radialGradient2462"
+       gradientTransform="scale(1.164226,0.85894)"
+       cx="28.283663"
+       cy="47.400623"
+       fx="28.283663"
+       fy="47.400623"
+       r="13.804391"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:showpageshadow="false"
+     inkscape:window-y="15"
+     inkscape:window-x="0"
+     inkscape:window-height="1007"
+     inkscape:window-width="1278"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     showgrid="false"
+     inkscape:current-layer="layer2"
+     inkscape:cy="24"
+     inkscape:cx="24"
+     inkscape:zoom="16.5"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:grid-points="true"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>spreadheet</rdf:li>
+            <rdf:li>document</rdf:li>
+            <rdf:li>office</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Cédric Krier</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     id="layer1"
+     style="display:inline">
+    <g
+       style="display:inline"
+       transform="matrix(2.144924e-2,0,0,2.086758e-2,43.32772,41.1536)"
+       id="g6707">
+      <rect
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="rect6709"
+         width="1339.6335"
+         height="478.35718"
+         x="-1559.2523"
+         y="-150.69685" />
+      <path
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+         id="path6711"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path6713"
+         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    </g>
+    <rect
+       style="color:#000000;fill:url(#radialGradient15658);fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15656);stroke-width:0.99999970;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
+       id="rect15391"
+       width="34.996506"
+       height="40.997345"
+       x="6.5017405"
+       y="3.5013213"
+       ry="1.1490481"
+       rx="1.1490482" />
+    <rect
+       style="color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15668);stroke-width:0.99999970;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
+       id="rect15660"
+       width="32.996056"
+       height="38.996326"
+       x="7.5033512"
+       y="4.5018268"
+       ry="0.14904855"
+       rx="0.14904846" />
+    <path
+       id="rect13655"
+       d="M 10.000000,6.0022030 L 10.000000,10.966297 L 10.000000,41.002203 L 20.000000,41.000000 L 20.000000,11.000000 L 38.000000,11.000000 L 38.000000,6.0022030 L 10.000000,6.0022030 z "
+       style="color:#000000;fill:#000000;fill-opacity:0.21052630;fill-rule:evenodd;stroke:none;stroke-width:0.60787594;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+       sodipodi:nodetypes="cccccccc" />
+    <path
+       id="path13660"
+       d="M 37.500415,10.502203 L 10.499583,10.502203"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000001px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path13662"
+       d="M 37.500755,16.500000 L 10.499230,16.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path13664"
+       d="M 37.500755,22.500000 L 10.499230,22.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path13666"
+       d="M 37.500755,28.500000 L 10.499230,28.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path13668"
+       d="M 37.501332,34.500000 L 10.499823,34.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999964px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path13682"
+       d="M 37.500755,40.500000 L 10.499230,40.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path2464"
+       d="M 37.511644,13.500000 L 10.500000,13.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000001px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path2466"
+       d="M 37.500755,19.500000 L 10.499230,19.500000"
+       style="fill:none;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path2468"
+       d="M 37.500755,25.500000 L 10.499230,25.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path2470"
+       d="M 37.500755,31.500000 L 10.499230,31.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path2472"
+       d="M 37.500755,37.500000 L 10.499230,37.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999982px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.15789469"
+       d="M 37.500000,6.4997386 L 37.500000,40.500300"
+       id="path2485" />
+    <path
+       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.15789469"
+       d="M 31.500000,6.4996867 L 31.500000,40.500315"
+       id="path2487" />
+    <path
+       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.15789469"
+       d="M 25.500000,6.4996865 L 25.500000,40.500314"
+       id="path2489" />
+    <path
+       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.15789469"
+       d="M 19.500000,6.4996867 L 19.500000,40.500315"
+       id="path2491" />
+    <path
+       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.15789469"
+       d="M 10.500000,6.4996867 L 10.500000,40.500315"
+       id="path2493" />
+    <path
+       id="path2495"
+       d="M 37.500227,6.5022030 L 10.499460,6.5022030"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="emblem"
+     style="display:inline" />
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-tree.svg b/trytond/ir/ui/icons/tryton-tree.svg
new file mode 100644
index 0000000..0f9b8a2
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-tree.svg
@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48px"
+   height="48px"
+   id="svg4198"
+   sodipodi:version="0.32"
+   inkscape:version="0.48.0 r9654"
+   sodipodi:docname="tryton-tree.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1">
+  <defs
+     id="defs4200">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective49" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient5031"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient5029"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient5027"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3558">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop3560" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop3562" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3558"
+       id="radialGradient3564"
+       cx="22.571428"
+       cy="30.857143"
+       fx="22.571428"
+       fy="30.857143"
+       r="15.571428"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.651376,4.638648e-15,10.75754)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient15218">
+      <stop
+         style="stop-color:#f8f8f7;stop-opacity:1;"
+         offset="0"
+         id="stop15220" />
+      <stop
+         id="stop2269"
+         offset="0.59928656"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#e2e2de;stop-opacity:1;"
+         offset="1"
+         id="stop15222" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15218"
+       id="linearGradient15224"
+       x1="22.308331"
+       y1="18.992140"
+       x2="35.785294"
+       y2="39.498238"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.060837,0.000000,0.000000,0.987595,4.641161,4.108291)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2259">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop2261" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop2263" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2259"
+       id="linearGradient2265"
+       x1="26.076092"
+       y1="26.696676"
+       x2="30.811172"
+       y2="42.007351"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.993566,0.000000,0.000000,1.000000,6.219859,4.033411)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2216">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop2218" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop2220" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2216"
+       id="linearGradient2222"
+       x1="36.8125"
+       y1="39.15625"
+       x2="39.0625"
+       y2="42.0625"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(6.161836,4.033411)" />
+    <linearGradient
+       id="linearGradient2224">
+      <stop
+         style="stop-color:#7c7c7c;stop-opacity:1;"
+         offset="0"
+         id="stop2226" />
+      <stop
+         style="stop-color:#b8b8b8;stop-opacity:1;"
+         offset="1"
+         id="stop2228" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15218"
+       id="linearGradient2240"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.342704,0.000000,0.000000,1.235378,-8.219611,-6.577189)"
+       x1="20.794008"
+       y1="18.378813"
+       x2="35.596001"
+       y2="39.60046" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#bebebe"
+     borderopacity="1.0000000"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16.5"
+     inkscape:cx="24"
+     inkscape:cy="24"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:window-width="1278"
+     inkscape:window-height="1007"
+     inkscape:window-x="0"
+     inkscape:window-y="15"
+     inkscape:showpageshadow="false"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata4203">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+        <dc:date>2005-10-29</dc:date>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Andreas Nilsson</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>justify</rdf:li>
+            <rdf:li>center</rdf:li>
+            <rdf:li>format</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Cédric Krier</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       style="display:inline"
+       id="g5022"
+       transform="matrix(2.330573e-2,0,0,1.227058e-2,44.47891,44.41691)">
+      <rect
+         y="-150.69685"
+         x="-1559.2523"
+         height="478.35718"
+         width="1339.6335"
+         id="rect4173"
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path5058"
+         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+      <path
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+         id="path5018"
+         sodipodi:nodetypes="cccc" />
+    </g>
+    <rect
+       style="opacity:1;fill:url(#linearGradient2240);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4238"
+       width="38.996792"
+       height="45.003101"
+       x="4.5016017"
+       y="1.4968988"
+       rx="0.56650788"
+       ry="0.56650823" />
+    <rect
+       style="color:#000000;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+       id="rect4248"
+       width="26"
+       height="2"
+       x="-34"
+       y="10"
+       transform="scale(-1,1)" />
+    <rect
+       y="16"
+       x="-31"
+       height="2"
+       width="23"
+       id="rect4250"
+       style="color:#000000;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+       transform="scale(-1,1)" />
+    <rect
+       style="color:#000000;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+       id="rect4252"
+       width="21"
+       height="2"
+       x="-29"
+       y="22"
+       transform="scale(-1,1)" />
+    <rect
+       y="28"
+       x="-34"
+       height="2"
+       width="26"
+       id="rect4254"
+       style="color:#000000;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+       transform="scale(-1,1)" />
+    <rect
+       style="color:#000000;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+       id="rect4256"
+       width="17"
+       height="2"
+       x="-25"
+       y="34"
+       transform="scale(-1,1)" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2245"
+       width="37.025566"
+       height="43.022316"
+       x="5.4997125"
+       y="2.4997177"
+       rx="0"
+       ry="0" />
+  </g>
+</svg>
diff --git a/trytond/ir/ui/menu.py b/trytond/ir/ui/menu.py
index 4e72203..ec98fd1 100644
--- a/trytond/ir/ui/menu.py
+++ b/trytond/ir/ui/menu.py
@@ -1,8 +1,8 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 
 def one_in(i, j):
     """Check the presence of an element of setA in setB
@@ -58,6 +58,7 @@ CLIENT_ICONS = [(x, x) for x in (
     'tryton-system',
     'tryton-undo',
     'tryton-web-browser')]
+SEPARATOR = ' / '
 
 
 class UIMenu(ModelSQL, ModelView):
@@ -70,10 +71,10 @@ class UIMenu(ModelSQL, ModelView):
     parent = fields.Many2One('ir.ui.menu', 'Parent Menu', select=1,
             ondelete='CASCADE')
     groups = fields.Many2Many('ir.ui.menu-res.group',
-       'menu_id', 'gid', 'Groups')
+       'menu', 'group', 'Groups')
     complete_name = fields.Function(fields.Char('Complete Name',
-        order_field='name'), 'get_full_name')
-    icon = fields.Selection('list_icons', 'Icon')
+        order_field='name'), 'get_rec_name', searcher='search_rec_name')
+    icon = fields.Selection('list_icons', 'Icon', translate=False)
     action = fields.Function(fields.Reference('Action',
         selection=[
             ('ir.action.report', 'ir.action.report'),
@@ -86,6 +87,14 @@ class UIMenu(ModelSQL, ModelView):
     def __init__(self):
         super(UIMenu, self).__init__()
         self._order.insert(0, ('sequence', 'ASC'))
+        self._constraints += [
+            ('check_recursion', 'recursive_menu'),
+            ('check_name', 'wrong_name'),
+        ]
+        self._error_messages.update({
+            'recursive_menu': 'You can not create recursive menu!',
+            'wrong_name': 'You can not use "%s" in name field!' % SEPARATOR,
+        })
 
     def default_icon(self):
         return 'tryton-open'
@@ -97,24 +106,45 @@ class UIMenu(ModelSQL, ModelView):
         return True
 
     def list_icons(self):
-        icon_obj = self.pool.get('ir.ui.icon')
+        pool = Pool()
+        icon_obj = pool.get('ir.ui.icon')
         return sorted(CLIENT_ICONS
             + [(name, name) for _, name in icon_obj.list_icons()])
 
-    def get_full_name(self, ids, name):
+    def check_name(self, ids):
+        for menu in self.browse(ids):
+            if SEPARATOR in menu.name:
+                return False
+        return True
+
+    def get_rec_name(self, ids, name):
+        if not ids:
+            return {}
         res = {}
+        def _name(menu):
+            if menu.id in res:
+                return res[menu.id]
+            elif menu.parent:
+                return _name(menu.parent) + SEPARATOR + menu.name
+            else:
+                return menu.name
         for menu in self.browse(ids):
-            res[menu.id] = self._get_one_full_name(menu)
+            res[menu.id] = _name(menu)
         return res
 
-    def _get_one_full_name(self, menu, level=6):
-        if level <= 0:
-            return '...'
-        if menu.parent:
-            parent_path = self._get_one_full_name(menu.parent, level-1) + "/"
-        else:
-            parent_path = ''
-        return parent_path + menu.name
+    def search_rec_name(self, name, clause):
+        if isinstance(clause[2], basestring):
+            values = clause[2].split(SEPARATOR)
+            values.reverse()
+            domain = []
+            field = 'name'
+            for name in values:
+                domain.append((field, clause[1], name))
+                field = 'parent.' + field
+            ids = self.search(domain, order=[])
+            return [('id', 'in', ids)]
+        #TODO Handle list
+        return [('name',) + tuple(clause[1:])]
 
     def search(self, domain, offset=0, limit=None, order=None, count=False,
             query_string=False):
@@ -137,7 +167,8 @@ class UIMenu(ModelSQL, ModelView):
         return res
 
     def get_action(self, ids, name):
-        action_keyword_obj = self.pool.get('ir.action.keyword')
+        pool = Pool()
+        action_keyword_obj = pool.get('ir.action.keyword')
         res = {}
         for menu_id in ids:
             res[menu_id] = False
@@ -149,7 +180,7 @@ class UIMenu(ModelSQL, ModelView):
         for action_keyword in action_keyword_obj.browse(action_keyword_ids):
             model_id = int(
                     action_keyword.model.split(',')[1].split(',')[0].strip('('))
-            action_obj = self.pool.get(action_keyword.action.type)
+            action_obj = pool.get(action_keyword.action.type)
             with Transaction().set_context(active_test=False):
                 action_id = action_obj.search([
                     ('action', '=', action_keyword.action.id),
@@ -164,7 +195,8 @@ class UIMenu(ModelSQL, ModelView):
     def set_action(self, ids, name, value):
         if not value:
             return
-        action_keyword_obj = self.pool.get('ir.action.keyword')
+        pool = Pool()
+        action_keyword_obj = pool.get('ir.action.keyword')
         action_keyword_ids = []
         cursor = Transaction().cursor
         for i in range(0, len(ids), cursor.IN_MAX):
@@ -180,7 +212,7 @@ class UIMenu(ModelSQL, ModelView):
         action_type, action_id = value.split(',')
         if not int(action_id):
             return
-        action_obj = self.pool.get(action_type)
+        action_obj = pool.get(action_type)
         action = action_obj.browse(int(action_id))
         for menu_id in ids:
             with Transaction().set_context(_timestamp=False):
diff --git a/trytond/ir/ui/menu.xml b/trytond/ir/ui/menu.xml
index c0dd633..acb7a9d 100644
--- a/trytond/ir/ui/menu.xml
+++ b/trytond/ir/ui/menu.xml
@@ -24,7 +24,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <tree string="Menu" fill="1">
-                    <field name="rec_name" icon="icon"/>
+                    <field name="complete_name" icon="icon"/>
                 </tree>
                 ]]>
             </field>
@@ -50,7 +50,6 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="sequence"/>
                     <label name="complete_name"/>
                     <field name="complete_name" colspan="3"/>
-                    <separator name="groups" colspan="4"/>
                     <field name="groups" colspan="4"/>
                 </form>
                 ]]>
@@ -69,14 +68,25 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="menu_view_tree_tree"/>
             <field name="act_window" ref="act_menu_tree"/>
         </record>
+
+        <record model="ir.action.act_window" id="act_menu_list">
+            <field name="name">Menu</field>
+            <field name="res_model">ir.ui.menu</field>
+        </record>
         <record model="ir.action.act_window.view"
-            id="act_menu_form_view2">
-            <field name="sequence" eval="2"/>
+            id="act_menu_list_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="menu_view_list"/>
+            <field name="act_window" ref="act_menu_list"/>
+        </record>
+        <record model="ir.action.act_window.view"
+            id="act_menu_list_view2">
+            <field name="sequence" eval="20"/>
             <field name="view" ref="menu_view_form"/>
-            <field name="act_window" ref="act_menu_tree"/>
+            <field name="act_window" ref="act_menu_list"/>
         </record>
 
         <menuitem parent="menu_ui"
-            action="act_menu_tree" id="menu_menu_tree"/>
+            action="act_menu_list" id="menu_menu_list"/>
     </data>
 </tryton>
diff --git a/trytond/ir/ui/tree.rnc b/trytond/ir/ui/tree.rnc
index 7d46342..e1b966d 100644
--- a/trytond/ir/ui/tree.rnc
+++ b/trytond/ir/ui/tree.rnc
@@ -38,8 +38,6 @@ attlist.field &=
     | "progressbar"
   }?
 attlist.field &=
-  [ a:defaultValue = "0" ] attribute select { "0" | "1" | "2" }?
-attlist.field &=
   [ a:defaultValue = "0" ] attribute tree_invisible { "0" | "1" }?
 attlist.field &= attribute icon { text }?
 attlist.field &= attribute sum { text }?
diff --git a/trytond/ir/ui/tree.rng b/trytond/ir/ui/tree.rng
index 1dfdd18..d7d726e 100644
--- a/trytond/ir/ui/tree.rng
+++ b/trytond/ir/ui/tree.rng
@@ -107,17 +107,6 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="select" a:defaultValue="0">
-        <choice>
-          <value>0</value>
-          <value>1</value>
-          <value>2</value>
-        </choice>
-      </attribute>
-    </optional>
-  </define>
-  <define name="attlist.field" combine="interleave">
-    <optional>
       <attribute name="tree_invisible" a:defaultValue="0">
         <choice>
           <value>0</value>
diff --git a/trytond/ir/ui/view.py b/trytond/ir/ui/view.py
index f2d2b5e..72a7422 100644
--- a/trytond/ir/ui/view.py
+++ b/trytond/ir/ui/view.py
@@ -1,16 +1,16 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import os
 import logging
 from lxml import etree
 from difflib import SequenceMatcher
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.backend import TableHandler
-from trytond.pyson import PYSONEncoder, CONTEXT, Eval, Not, Bool, Equal
+from trytond.pyson import PYSONEncoder, CONTEXT, Eval
 from trytond.tools import safe_eval
 from trytond.transaction import Transaction
 from trytond.wizard import Wizard
+from trytond.pool import Pool
 
 
 class View(ModelSQL, ModelView):
@@ -31,12 +31,12 @@ class View(ModelSQL, ModelView):
     inherit = fields.Many2One('ir.ui.view', 'Inherited View', select=1,
             ondelete='CASCADE')
     field_childs = fields.Char('Children Field', states={
-        'invisible': Not(Equal(Eval('type'), 'tree')),
-        })
+            'invisible': Eval('type') != 'tree',
+            }, depends=['type'])
     module = fields.Char('Module', readonly=True)
     domain = fields.Char('Domain', states={
-        'invisible': Not(Bool(Eval('inherit'))),
-        })
+            'invisible': ~Eval('inherit'),
+            }, depends=['inherit'])
 
     def __init__(self):
         super(View, self).__init__()
@@ -66,7 +66,8 @@ class View(ModelSQL, ModelView):
 
     def check_xml(self, ids):
         "Check XML"
-        translation_obj = self.pool.get('ir.translation')
+        pool = Pool()
+        translation_obj = pool.get('ir.translation')
         cursor = Transaction().cursor
         views = self.browse(ids)
         for view in views:
@@ -188,7 +189,8 @@ class View(ModelSQL, ModelView):
     def delete(self, ids):
         res = super(View, self).delete(ids)
         # Restart the cache
-        for _, model in self.pool.iterobject():
+        pool = Pool()
+        for _, model in pool.iterobject():
             try:
                 model.fields_view_get.reset()
             except Exception:
@@ -198,7 +200,8 @@ class View(ModelSQL, ModelView):
     def create(self, vals):
         res = super(View, self).create(vals)
         # Restart the cache
-        for _, model in self.pool.iterobject():
+        pool = Pool()
+        for _, model in pool.iterobject():
             try:
                 model.fields_view_get.reset()
             except Exception:
@@ -208,7 +211,8 @@ class View(ModelSQL, ModelView):
     def write(self, ids, vals):
         res = super(View, self).write(ids, vals)
         # Restart the cache
-        for _, model in self.pool.iterobject():
+        pool = Pool()
+        for _, model in pool.iterobject():
             try:
                 model.fields_view_get.reset()
             except Exception:
@@ -229,6 +233,57 @@ class View(ModelSQL, ModelView):
 View()
 
 
+class ShowViewInit(ModelView):
+    'Show view init'
+    _name = 'ir.ui.view.show.init'
+
+ShowViewInit()
+
+
+class ShowView(Wizard):
+    'Show view'
+    _name = 'ir.ui.view.show'
+
+    states = {
+        'init': {
+            'result': {
+                'type': 'form',
+                'object': 'ir.ui.view.show.init',
+                'state': [
+                    ('end', 'Close', 'tryton-cancel', True),
+                    ],
+                },
+            },
+        }
+
+    def __init__(self):
+        super(ShowView, self).__init__()
+        self._error_messages.update({
+                'view_type': 'Only "form" view can be shown!',
+                })
+
+    def execute(self, wiz_id, data, state='init'):
+        pool = Pool()
+        view_obj = pool.get('ir.ui.view')
+        result = super(ShowView, self).execute(wiz_id, data, state=state)
+        view = view_obj.browse(data['id'])
+        view_id = view.id
+        view_type = view.type
+        if view.inherit:
+            view_id = view.inherit.id
+            view_type = view.inherit.type
+        if view_type != 'form':
+            self.raise_user_error('view_type')
+        model_obj = pool.get(view.model)
+        fields_view = model_obj.fields_view_get(view_id=view.id)
+        result['fields'] = fields_view['fields']
+        result['arch'] = fields_view['arch']
+        result['object'] = view.model
+        return result
+
+ShowView()
+
+
 class ViewShortcut(ModelSQL, ModelView):
     "View shortcut"
     _name = 'ir.ui.view_sc'
@@ -247,11 +302,17 @@ class ViewShortcut(ModelSQL, ModelView):
 
     def get_sc(self, user_id, model='ir.ui.menu'):
         "Provide user's shortcuts"
+        result = []
         ids = self.search([
             ('user_id','=',user_id),
             ('resource','=',model),
             ])
-        return self.read(ids, ['res_id', 'name'])
+        for shorcut in self.browse(ids):
+            result.append({
+                    'res_id': shorcut.res_id,
+                    'name': shorcut.name,
+                    })
+        return result
 
     def default_resource(self):
         return 'ir.ui.menu'
@@ -274,8 +335,9 @@ class AddShortcut(Wizard):
     }
 
     def _add_shortcut(self, data):
-        view_sc_obj = self.pool.get('ir.ui.view_sc')
-        model_obj = self.pool.get(data['model'])
+        pool = Pool()
+        view_sc_obj = pool.get('ir.ui.view_sc')
+        model_obj = pool.get(data['model'])
 
         record = model_obj.browse(data['id'])
         view_sc_obj.create({
@@ -304,8 +366,9 @@ class OpenShortcut(Wizard):
     }
 
     def _open(self, data):
-        view_sc_obj = self.pool.get('ir.ui.view_sc')
-        action_keyword_obj = self.pool.get('ir.action.keyword')
+        pool = Pool()
+        view_sc_obj = pool.get('ir.ui.view_sc')
+        action_keyword_obj = pool.get('ir.action.keyword')
 
         view_sc = view_sc_obj.browse(data['id'])
         models = (
@@ -323,7 +386,7 @@ class OpenShortcut(Wizard):
         if not action_keyword_ids:
             return {}
         action_keyword = action_keyword_obj.browse(action_keyword_ids[0])
-        action_obj = self.pool.get(action_keyword.action.type)
+        action_obj = pool.get(action_keyword.action.type)
         action_ids = action_obj.search([
             ('action.id', '=', action_keyword.action.id),
             ])
@@ -352,37 +415,40 @@ class ViewTreeWidth(ModelSQL, ModelView):
         })
 
     def delete(self, ids):
+        pool = Pool()
         if isinstance(ids, (int, long)):
             ids = [ids]
         views = self.browse(ids)
         for view in views:
             # Restart the cache
             try:
-                self.pool.get(view.model).fields_view_get.reset()
+                pool.get(view.model).fields_view_get.reset()
             except Exception:
                 pass
         res = super(ViewTreeWidth, self).delete(ids)
         return res
 
     def create(self, vals):
+        pool = Pool()
         res = super(ViewTreeWidth, self).create(vals)
         if 'model' in vals:
             model = vals['model']
             # Restart the cache
             try:
-                self.pool.get(model).fields_view_get.reset()
+                pool.get(model).fields_view_get.reset()
             except Exception:
                 pass
         return res
 
     def write(self, ids, vals):
+        pool = Pool()
         if isinstance(ids, (int, long)):
             ids = [ids]
         views = self.browse(ids)
         for view in views:
             # Restart the cache
             try:
-                self.pool.get(view.model).fields_view_get.reset()
+                pool.get(view.model).fields_view_get.reset()
             except Exception:
                 pass
         res = super(ViewTreeWidth, self).write(ids, vals)
@@ -390,7 +456,7 @@ class ViewTreeWidth(ModelSQL, ModelView):
         for view in views:
             # Restart the cache
             try:
-                self.pool.get(view.model).fields_view_get.reset()
+                pool.get(view.model).fields_view_get.reset()
             except Exception:
                 pass
         return res
@@ -416,3 +482,68 @@ class ViewTreeWidth(ModelSQL, ModelView):
                 })
 
 ViewTreeWidth()
+
+
+class ViewTreeExpandedState(ModelSQL, ModelView):
+    _name = 'ir.ui.view_tree_expanded_state'
+
+    _rec_name = 'model'
+    model = fields.Char('Model', required=True)
+    domain = fields.Char('Domain', required=True)
+    user = fields.Many2One('res.user', 'User', required=True,
+            ondelete='CASCADE')
+    child_name = fields.Char('Child Name')
+    nodes = fields.Text('Expanded Nodes')
+
+    def __init__(self):
+        super(ViewTreeExpandedState, self).__init__()
+        self._rpc.update({
+                'set_expanded': True,
+                'get_expanded': True,
+                })
+
+    def init(self, module_name):
+        super(ViewTreeExpandedState, self).init(module_name)
+
+        cursor = Transaction().cursor
+        table = TableHandler(cursor, self, module_name)
+        table.index_action(['model', 'domain', 'user', 'child_name'], 'add')
+
+    def default_nodes(self):
+        return '[]'
+
+    def set_expanded(self, model, domain, child_name, nodes):
+        current_user = Transaction().user
+        with Transaction().set_user(0):
+            ids = self.search([
+                    ('user', '=', current_user),
+                    ('model', '=', model),
+                    ('domain', '=', domain),
+                    ('child_name', '=', child_name),
+                    ])
+            self.delete(ids)
+            self.create({
+                    'user': current_user,
+                    'model': model,
+                    'domain': domain,
+                    'child_name': child_name,
+                    'nodes': nodes,
+                    })
+
+    def get_expanded(self, model, domain, child_name):
+        current_user = Transaction().user
+        with Transaction().set_user(0):
+            try:
+                expanded_info, = self.search([
+                        ('user', '=', current_user),
+                        ('model', '=', model),
+                        ('domain', '=', domain),
+                        ('child_name', '=', child_name),
+                        ],
+                    limit=1)
+            except ValueError:
+                return '[]'
+            return self.browse(expanded_info).nodes
+
+
+ViewTreeExpandedState()
diff --git a/trytond/ir/ui/view.xml b/trytond/ir/ui/view.xml
index 33d6fd2..9f18b4c 100644
--- a/trytond/ir/ui/view.xml
+++ b/trytond/ir/ui/view.xml
@@ -3,6 +3,12 @@
 this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
+
+        <record model="ir.action.wizard" id="act_view_show">
+            <field name="name">Show View</field>
+            <field name="wiz_name">ir.ui.view.show</field>
+        </record>
+
         <record model="ir.ui.view" id="view_view_form">
             <field name="model">ir.ui.view</field>
             <field name="type">form</field>
@@ -23,6 +29,11 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="field_childs"/>
                     <separator name="arch" colspan="4"/>
                     <field name="arch" colspan="4"/>
+                    <button name="%(act_view_show)d"
+                        string="_Show"
+                        type="action"
+                        colspan="4"
+                        />
                 </form>
                 ]]>
             </field>
@@ -33,12 +44,12 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <tree>
-                    <field name="priority" select="2"/>
-                    <field name="model" select="1"/>
-                    <field name="type" select="1"/>
-                    <field name="inherit" select="1"/>
-                    <field name="domain" select="2"/>
-                    <field name="field_childs" select="2"/>
+                    <field name="priority"/>
+                    <field name="model"/>
+                    <field name="type"/>
+                    <field name="inherit"/>
+                    <field name="domain"/>
+                    <field name="field_childs"/>
                 </tree>
                 ]]>
             </field>
@@ -88,8 +99,8 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <tree string="Shortcut">
-                    <field name="name" select="1"/>
-                    <field name="user_id" select="1"/>
+                    <field name="name"/>
+                    <field name="user_id"/>
                     <field name="sequence"/>
                 </tree>
                 ]]>
@@ -141,7 +152,7 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.keyword" id="act_view_sc_open_keyword1">
             <field name="action" ref="act_view_sc_open"/>
             <field name="keyword">tree_open</field>
-            <field name="model">ir.ui.view_sc,0</field>
+            <field name="model">ir.ui.view_sc,-1</field>
         </record>
 
         <record model="ir.ui.view" id="view_tree_width_view_form">
@@ -195,5 +206,59 @@ this repository contains the full copyright notices and license terms. -->
         </record>
         <menuitem parent="menu_ui"
             action="act_view_tree_width_form" id="menu_view_tree_width"/>
+
+        <record model="ir.ui.view" id="view_tree_expanded_state_form">
+            <field name="model">ir.ui.view_tree_expanded_state</field> 
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <form string="View Tree Expanded State">
+                    <label name="model"/>
+                    <field name="model"/>
+                    <label name="user"/>
+                    <field name="user"/>
+                    <label name="domain"/>
+                    <field name="domain"/>
+                    <label name="child_name" />
+                    <field name="child_name" />
+                    <separator name="nodes" colspan="4" />
+                    <field name="nodes" colspan="4"/>
+                </form>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.ui.view" id="view_tree_expanded_state_tree">
+            <field name="model">ir.ui.view_tree_expanded_state</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <tree string="Views Tree Expanded State">
+                    <field name="model"/>
+                    <field name="domain"/>
+                    <field name="user"/>
+                    <field name="child_name"/>
+                </tree>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.action.act_window" id="act_view_tree_expanded_state">
+            <field name="name">Tree Expanded State</field>
+            <field name="type">ir.action.act_window</field>
+            <field name="res_model">ir.ui.view_tree_expanded_state</field>
+        </record>
+        <record model="ir.action.act_window.view"
+            id="act_view_tree_expanded_state_tree">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="view_tree_expanded_state_tree"/>
+            <field name="act_window" ref="act_view_tree_expanded_state"/>
+        </record>
+        <record model="ir.action.act_window.view"
+            id="act_view_tree_expanded_state_form">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="view_tree_expanded_state_form"/>
+            <field name="act_window" ref="act_view_tree_expanded_state"/>
+        </record>
+        <menuitem parent="menu_ui" action="act_view_tree_expanded_state"
+            id="menu_view_tree_expanded_state"/>
     </data>
 </tryton>
diff --git a/trytond/model/browse.py b/trytond/model/browse.py
index d37cef1..ff43885 100644
--- a/trytond/model/browse.py
+++ b/trytond/model/browse.py
@@ -1,9 +1,14 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import contextlib
+from itertools import islice, ifilter, ifilterfalse, chain
 from trytond.model import fields
 from trytond.transaction import Transaction
+from trytond.pool import Pool
+from trytond.cache import LRUDict
+from trytond.const import MODEL_CACHE_SIZE, RECORD_CACHE_SIZE, \
+        BROWSE_FIELD_TRESHOLD
+
 
 class BrowseRecordList(list):
     '''
@@ -44,143 +49,179 @@ class BrowseRecord(object):
     An object that represents record defined by a ORM object.
     '''
 
-    def __init__(self, record_id, model, local_cache=None):
+    def __init__(self, record_id, model, ids, local_cache):
+        assert isinstance(ids, list)
+        if ids:
+            assert record_id in ids
         self._cursor = Transaction().cursor
         self._user = Transaction().user
-        self._id = record_id
+        self.id = record_id
         self._model = model
         self._model_name = self._model._name
         self._context = Transaction().context
+        self._pool = Pool()
+        self._ids = ids
 
         cache = self._cursor.get_cache(self._context)
-        cache.setdefault(model._name, {})
-        cache.setdefault('_language_cache', {})
+        if model._name not in cache:
+            cache[model._name] = LRUDict(RECORD_CACHE_SIZE)
         self._data = cache[model._name]
-        if not record_id in self._data:
-            self._data[record_id] = {'id': record_id}
         self._cache = cache
-        if local_cache is None:
-            local_cache = {}
-        self._local_cache = local_cache
-        self._local_cache.setdefault(model._name, {})
-        self._local_cache.setdefault('_language_cache', {})
-        self._local_data = self._local_cache[model._name]
-        if not record_id in self._local_data:
-            self._local_data[record_id] = {}
+        assert isinstance(local_cache, LRUDict)
+        self._local_data = local_cache
 
     def __getitem__(self, name):
-        if name == 'id':
-            return self._id
-        if name == 'setLang':
-            return self.setLang
-        if not self._data[self._id].has_key(name) \
-                and not self._local_data[self._id].has_key(name):
-            # build the list of fields we will fetch
-
-            # fetch the definition of the field which was asked for
-            if name in self._model._columns:
-                col = self._model._columns[name]
-            elif name in self._model._inherit_fields:
-                col = self._model._inherit_fields[name][2]
-            elif hasattr(self._model, name):
-                return getattr(self._model, name)
-            else:
-                raise Exception('Error', 'Programming error: field "%s" ' \
-                        'does not exist in model "%s"!' \
-                        % (name, self._model._name))
-
-            if col.loading == 'eager':
-                field_access_obj = self._model.pool.get('ir.model.field.access')
-                fread_accesses = {}
-                for inherit_name in self._model._inherits:
-                    inherit_obj = self._model.pool.get(inherit_name)
-                    fread_accesses.update(field_access_obj.check(inherit_name,
-                        inherit_obj._columns.keys(), 'read', access=True))
-                fread_accesses.update(field_access_obj.check(self._model._name,
-                    self._model._columns.keys(), 'read', access=True))
-                to_remove = set(x for x, y in fread_accesses.iteritems()
-                        if not y and x != name)
-
-                ffields = dict((fname, field) for fname, (_, _, field)
-                        in self._model._inherit_fields.iteritems()
-                        if field.loading == 'eager'
-                        and fname not in self._model._columns
-                        and fname not in to_remove)
-                ffields.update(dict((fname, field) for fname, field
-                        in self._model._columns.iteritems()
-                        if field.loading == 'eager'
-                        and fname not in to_remove))
-            else:
-                ffields = {name: col}
-
-            # add datetime_field
-            for field in ffields.values():
-                if hasattr(field, 'datetime_field') and field.datetime_field:
-                    if field.datetime_field in self._model._columns:
-                        datetime_field = self._model._columns[field.datetime_field]
-                    else:
-                        datetime_field = self._model._inherit_fields[
-                                field.datetime_field][2]
-                    ffields[field.datetime_field] = datetime_field
-
-            if len(self._data) <= self._cursor.IN_MAX:
-                iterids = self._data.iterkeys()
-            else:
-                iterids = self._local_data.iterkeys()
-            ids = [x for x in iterids \
-                    if not self._data.setdefault(x, {}).has_key(name) \
-                    and not self._local_data.setdefault(x, {}).has_key(name)]
-            # read the data
-            with contextlib.nested(Transaction().set_cursor(self._cursor),
-                    Transaction().set_user(self._user),
-                    Transaction().set_context(self._context)):
-                datas = self._model.read(ids, ffields.keys())
-
-                # create browse records for 'remote' models
-                for data in datas:
-                    for i, j in ffields.iteritems():
-                        model = None
-                        if (hasattr(j, 'model_name') and
-                                j.model_name in
-                                self._model.pool.object_name_list()):
-                            model = self._model.pool.get(j.model_name)
-                        elif hasattr(j, 'get_target'):
-                            model = j.get_target(self._model.pool)
-                        if model and j._type in ('many2one', 'one2one'):
-                            if (not data[i]
-                                    and not (isinstance(data[i], (int, long))
-                                        and not isinstance(data[i],
-                                            type(False)))):
-                                data[i] = BrowseRecordNull()
-                            else:
-                                _datetime = None
-                                if (hasattr(j, 'datetime_field')
-                                        and j.datetime_field):
-                                    _datetime = data[j.datetime_field]
-                                with Transaction().set_context(
-                                        _datetime=_datetime):
-                                    data[i] = BrowseRecord(data[i], model,
-                                            local_cache=self._local_cache)
-                        elif (model
-                                and j._type in ('one2many', 'many2many')
-                                and len(data[i])):
+        # Access to LRUDict must be atomic
+        result = self._local_data.get(self.id, {}).get(name)
+        if (self.id in self._local_data
+                and name in self._local_data[self.id]):
+            return result
+        result = self._data.get(self.id, {}).get(name)
+        if self.id in self._data and name in self._data[self.id]:
+            return result
+
+        # build the list of fields we will fetch
+        # fetch the definition of the field which was asked for
+        if name in self._model._columns:
+            col = self._model._columns[name]
+        elif name in self._model._inherit_fields:
+            col = self._model._inherit_fields[name][2]
+        elif hasattr(self._model, name):
+            return getattr(self._model, name)
+        else:
+            raise Exception('Error', 'Programming error: field "%s" ' \
+                    'does not exist in model "%s"!' \
+                    % (name, self._model._name))
+
+        ffields = {}
+        if col.loading == 'eager':
+            field_access_obj = self._pool.get('ir.model.field.access')
+            fread_accesses = {}
+            for inherit_name in self._model._inherits:
+                inherit_obj = self._pool.get(inherit_name)
+                fread_accesses.update(field_access_obj.check(inherit_name,
+                    inherit_obj._columns.keys(), 'read', access=True))
+            fread_accesses.update(field_access_obj.check(self._model._name,
+                self._model._columns.keys(), 'read', access=True))
+            to_remove = set(x for x, y in fread_accesses.iteritems()
+                    if not y and x != name)
+
+            threshold = BROWSE_FIELD_TRESHOLD
+            inherit_threshold = threshold - len(self._model._columns)
+
+            def not_cached(item):
+                fname, field = item
+                return (fname not in self._data.get(self.id, {})
+                    and fname not in self._local_data.get(self.id, {}))
+            def to_load(item):
+                fname, field = item
+                return (field.loading == 'eager'
+                    and fname not in to_remove)
+            def overrided(item):
+                fname, field = item
+                return fname in self._model._columns
+
+            if inherit_threshold > 0:
+                ifields = ((fname, field)
+                    for fname, (_, _, field) in
+                    self._model._inherit_fields.iteritems())
+                ifields = ifilterfalse(overrided,
+                    ifilter(to_load,
+                        ifilter(not_cached, ifields)))
+                ifields = islice(ifields, 0, inherit_threshold)
+                ffields.update(ifields)
+                threshold -= inherit_threshold
+
+            ifields = ifilter(to_load,
+                ifilter(not_cached,
+                    self._model._columns.iteritems()))
+            ifields = islice(ifields, 0, threshold)
+            ffields.update(ifields)
+
+        ffields[name] = col
+
+        # add datetime_field
+        for field in ffields.values():
+            if hasattr(field, 'datetime_field') and field.datetime_field:
+                if field.datetime_field in self._model._columns:
+                    datetime_field = self._model._columns[field.datetime_field]
+                else:
+                    datetime_field = self._model._inherit_fields[
+                            field.datetime_field][2]
+                ffields[field.datetime_field] = datetime_field
+
+        def filter_(id_):
+            if (id_ in self._local_data
+                    and name in self._local_data[id_]):
+                return False
+            if id_ in self._data and name in self._data[id_]:
+                return False
+            return True
+        index = self._ids.index(self.id)
+        ids = chain(islice(self._ids, index, None),
+            islice(self._ids, 0, max(index - 1, 0)))
+        ids = list(islice(ifilter(filter_, ids), self._cursor.IN_MAX))
+        model2ids = {}
+        model2cache = {}
+        # read the data
+        with contextlib.nested(Transaction().set_cursor(self._cursor),
+                Transaction().set_user(self._user),
+                Transaction().set_context(self._context)):
+            # create browse records for 'remote' models
+            for data in self._model.read(ids, ffields.keys()):
+                for i, j in ffields.iteritems():
+                    model = None
+                    if (hasattr(j, 'model_name') and
+                            j.model_name in
+                            self._pool.object_name_list()):
+                        model = self._pool.get(j.model_name)
+                    elif hasattr(j, 'get_target'):
+                        model = j.get_target()
+                    if model and j._type in ('many2one', 'one2one'):
+                        if (not data[i]
+                                and not (isinstance(data[i], (int, long))
+                                    and not isinstance(data[i],
+                                        type(False)))):
+                            data[i] = BrowseRecordNull()
+                        else:
                             _datetime = None
-                            if hasattr(j, 'datetime_field') and j.datetime_field:
+                            if (hasattr(j, 'datetime_field')
+                                    and j.datetime_field):
                                 _datetime = data[j.datetime_field]
                             with Transaction().set_context(
                                     _datetime=_datetime):
-                                data[i] = BrowseRecordList(BrowseRecord(
-                                    x, model, local_cache=self._local_cache)
-                                    for x in data[i])
-                        if (isinstance(j, fields.Function)
-                                or isinstance(data[i], (BrowseRecord,
-                                        BrowseRecordList))):
-                            self._local_data.setdefault(data['id'], {})[i] = data[i]
-                            del data[i]
-                    self._data[data['id']].update(data)
-        if name in self._local_data[self._id]:
-            return self._local_data[self._id][name]
-        return self._data[self._id][name]
+                                ids = model2ids.setdefault(model, [])
+                                ids.append(data[i])
+                                local_cache = model2cache.setdefault(model,
+                                    LRUDict(RECORD_CACHE_SIZE))
+                                data[i] = BrowseRecord(data[i], model,
+                                    ids, local_cache)
+                    elif (model
+                            and j._type in ('one2many', 'many2many')
+                            and len(data[i])):
+                        _datetime = None
+                        if hasattr(j, 'datetime_field') and j.datetime_field:
+                            _datetime = data[j.datetime_field]
+                        with Transaction().set_context(
+                                _datetime=_datetime):
+                            ids = model2ids.setdefault(model, [])
+                            ids.extend(data[i])
+                            local_cache = model2cache.setdefault(model,
+                                LRUDict(RECORD_CACHE_SIZE))
+                            data[i] = BrowseRecordList(
+                                BrowseRecord(x, model, ids, local_cache)
+                                for x in data[i])
+                    if (isinstance(j, fields.Function)
+                            or isinstance(data[i], (BrowseRecord,
+                                    BrowseRecordList))):
+                        if data['id'] == self.id and i == name:
+                            result = data[i]
+                        self._local_data.setdefault(data['id'], {})[i] = data[i]
+                        del data[i]
+                self._data.setdefault(data['id'], {}).update(data)
+                if data['id'] == self.id and name in data:
+                    result = data[name]
+        return result
 
     def __getattr__(self, name):
         # TODO raise an AttributeError exception
@@ -195,16 +236,16 @@ class BrowseRecord(object):
         return name in self
 
     def __int__(self):
-        return self._id
+        return self.id
 
     def __str__(self):
-        return "BrowseRecord(%s, %d)" % (self._model_name, self._id)
+        return "BrowseRecord(%s, %d)" % (self._model_name, self.id)
 
     def __eq__(self, other):
-        return (self._model_name, self._id) == (other._model_name, other._id)
+        return (self._model_name, self.id) == (other._model_name, other.id)
 
     def __ne__(self, other):
-        return (self._model_name, self._id) != (other._model_name, other._id)
+        return (self._model_name, self.id) != (other._model_name, other.id)
 
     # we need to define __unicode__ even though we've already defined __str__
     # because we have overridden __getattr__
@@ -212,7 +253,7 @@ class BrowseRecord(object):
         return unicode(str(self))
 
     def __hash__(self):
-        return hash((self._model_name, self._id))
+        return hash((self._model_name, self.id))
 
     def __nonzero__(self):
         return True
@@ -223,22 +264,23 @@ class BrowseRecord(object):
         self._context = self._context.copy()
         prev_lang = self._context.get('language') or 'en_US'
         self._context['language'] = lang
-        for cache in (self._cache, self._local_cache):
-            language_cache = cache['_language_cache']
+        for cache in (self._cache, self._local_data):
+            language_cache = cache.setdefault('_language_cache', {})
             for model in cache:
                 if model == '_language_cache':
                     continue
                 for record_id in cache[model]:
                     language_cache.setdefault(prev_lang,
-                            {}).setdefault(model, {})[record_id] = \
-                                    cache[model][record_id]
+                        LRUDict(MODEL_CACHE_SIZE)).setdefault(model,
+                            LRUDict(RECORD_CACHE_SIZE))[record_id] = \
+                            cache[model][record_id]
                     if lang in language_cache \
                             and model in language_cache[lang] \
                             and record_id in language_cache[lang][model]:
                         cache[model][record_id] = \
                                 language_cache[lang][model][record_id]
                     else:
-                        cache[model][record_id] = {'id': record_id}
+                        cache[model][record_id] = {}
 
     def get_eval(self, name):
         res = self[name]
@@ -257,6 +299,7 @@ class EvalEnvironment(dict):
         super(EvalEnvironment, self).__init__()
         self._record = record
         self._model = model
+        self._pool = Pool()
 
     def __getitem__(self, item):
         if item.startswith('_parent_'):
@@ -265,7 +308,7 @@ class EvalEnvironment(dict):
                 model_name = self._model._columns[field].model_name
             else:
                 model_name = self._model._inherit_fields[field][2].model_name
-            model = self._model.pool.get(model_name)
+            model = self._pool.get(model_name)
             return EvalEnvironment(self._record[field], model)
         if item in self._model._columns \
                 or item in self._model._inherit_fields:
diff --git a/trytond/model/fields/binary.py b/trytond/model/fields/binary.py
index e7b2b8e..bd06c04 100644
--- a/trytond/model/fields/binary.py
+++ b/trytond/model/fields/binary.py
@@ -2,6 +2,7 @@
 #this repository contains the full copyright notices and license terms.
 
 from trytond.model.fields.field import Field
+from trytond.transaction import Transaction
 
 
 class Binary(Field):
@@ -11,7 +12,7 @@ class Binary(Field):
     _type = 'binary'
 
     def __init__(self, string='', help='', required=False, readonly=False,
-            domain=None, states=None, change_default=False, select=0,
+            domain=None, states=None, change_default=False, select=False,
             on_change=None, on_change_with=None, depends=None, filename=None,
             order_field=None, context=None, loading='lazy'):
         if filename is not None:
@@ -40,8 +41,14 @@ class Binary(Field):
         if values is None:
             values = {}
         res = {}
+        converter = buffer
+        default = False
+        format_ = Transaction().context.pop('%s.%s' % (model, name), '')
+        if format_ == 'size':
+            converter = len
+            default = 0
         for i in values:
-            res[i['id']] = i[name] and str(i[name]) or None
+            res[i['id']] = converter(i[name]) if i[name] else default
         for i in ids:
-            res.setdefault(i, None)
+            res.setdefault(i, default)
         return res
diff --git a/trytond/model/fields/boolean.py b/trytond/model/fields/boolean.py
index 046e2af..e7bbd4d 100644
--- a/trytond/model/fields/boolean.py
+++ b/trytond/model/fields/boolean.py
@@ -11,7 +11,7 @@ class Boolean(Field):
     _type = 'boolean'
 
     def __init__(self, string='', help='', readonly=False, domain=None,
-            states=None, change_default=False, select=0, on_change=None,
+            states=None, change_default=False, select=False, on_change=None,
             on_change_with=None, depends=None, order_field=None, context=None,
             loading='eager'):
         super(Boolean, self).__init__(string=string, help=help, required=False,
diff --git a/trytond/model/fields/char.py b/trytond/model/fields/char.py
index 09bba2b..593d61b 100644
--- a/trytond/model/fields/char.py
+++ b/trytond/model/fields/char.py
@@ -16,7 +16,7 @@ class Char(Field):
 
     def __init__(self, string='', size=None, help='', required=False,
             readonly=False, domain=None, states=None, change_default=False,
-            translate=False, select=0, on_change=None, on_change_with=None,
+            translate=False, select=False, on_change=None, on_change_with=None,
             depends=None, order_field=None, context=None, loading='eager',
             autocomplete=None):
         '''
diff --git a/trytond/model/fields/field.py b/trytond/model/fields/field.py
index 72f3af4..f24e652 100644
--- a/trytond/model/fields/field.py
+++ b/trytond/model/fields/field.py
@@ -54,7 +54,7 @@ class Field(object):
     _type = None
 
     def __init__(self, string='', help='', required=False, readonly=False,
-            domain=None, states=None, change_default=False, select=0,
+            domain=None, states=None, change_default=False, select=False,
             on_change=None, on_change_with=None, depends=None,
             order_field=None, context=None, loading='eager'):
         '''
@@ -70,9 +70,7 @@ class Field(object):
             dynamically the attributes of the field.
         :param change_default: A boolean. If ``True`` the field can be used as
         condition for a custom default value.
-        :param select: An integer. When equal to ``1``, the field appears in the
-            search box in list view and the search will be optimized. When equal to
-            ``2`` the field appears in the *Advanced Search* in the search box.
+        :param select: An boolean. When True search will be optimized.
         :param on_change: A list of values. If set, the client will call the
             method ``on_change_<field_name>`` when the user changes the field
             value. It then passes this list of values as arguments to the
@@ -98,7 +96,7 @@ class Field(object):
         self.__states = None
         self.states = states or {}
         self.change_default = change_default
-        self.select = select
+        self.select = bool(select)
         self.__on_change = None
         self.on_change = on_change
         self.__on_change_with = None
diff --git a/trytond/model/fields/float.py b/trytond/model/fields/float.py
index d411c3f..4e88658 100644
--- a/trytond/model/fields/float.py
+++ b/trytond/model/fields/float.py
@@ -23,7 +23,7 @@ class Float(Field):
 
     def __init__(self, string='', digits=None,  help='', required=False,
             readonly=False, domain=None, states=None, change_default=False,
-            select=0, on_change=None, on_change_with=None, depends=None,
+            select=False, on_change=None, on_change_with=None, depends=None,
             order_field=None, context=None, loading='eager'):
         '''
         :param digits: a list of two integers defining the total
diff --git a/trytond/model/fields/many2many.py b/trytond/model/fields/many2many.py
index 9a8769b..3fa2594 100644
--- a/trytond/model/fields/many2many.py
+++ b/trytond/model/fields/many2many.py
@@ -3,6 +3,7 @@
 from itertools import chain
 from trytond.model.fields.field import Field
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 
 
 class Many2Many(Field):
@@ -13,7 +14,7 @@ class Many2Many(Field):
 
     def __init__(self, relation_name, origin, target, string='', order=None,
             datetime_field=None, help='', required=False, readonly=False,
-            domain=None, states=None, change_default=False, select=0,
+            domain=None, states=None, change_default=False,
             on_change=None, on_change_with=None, depends=None,
             order_field=None, context=None, loading='lazy'):
         '''
@@ -34,7 +35,7 @@ class Many2Many(Field):
                 depends = [datetime_field]
         super(Many2Many, self).__init__(string=string, help=help,
                 required=required, readonly=readonly, domain=domain,
-                states=states, change_default=change_default, select=select,
+                states=states, change_default=change_default,
                 on_change=on_change, on_change_with=on_change_with,
                 depends=depends, order_field=order_field, context=context,
                 loading=loading)
@@ -63,7 +64,12 @@ class Many2Many(Field):
         for i in ids:
             res[i] = []
 
-        relation_obj = model.pool.get(self.relation_name)
+        if self.order is None:
+            order = [(self.target, 'ASC')]
+        else:
+            order = self.order
+
+        relation_obj = Pool().get(self.relation_name)
 
         relation_ids = []
         for i in range(0, len(ids), Transaction().cursor.IN_MAX):
@@ -71,12 +77,11 @@ class Many2Many(Field):
             relation_ids.append(relation_obj.search([
                 (self.origin, 'in', sub_ids),
                 (self.target + '.id', '!=', False),
-                ], order=self.order))
+                ], order=order))
         relation_ids = list(chain(*relation_ids))
 
-        for relation in relation_obj.read(relation_ids,
-                [self.origin, self.target]):
-            res[relation[self.origin]].append(relation[self.target])
+        for relation in relation_obj.browse(relation_ids):
+            res[relation[self.origin].id].append(relation[self.target].id)
         return res
 
     def set(self, ids, model, name, values):
@@ -97,8 +102,8 @@ class Many2Many(Field):
         '''
         if not values:
             return
-        relation_obj = model.pool.get(self.relation_name)
-        target_obj = self.get_target(model.pool)
+        relation_obj = Pool().get(self.relation_name)
+        target_obj = self.get_target()
         for act in values:
             if act[0] == 'create':
                 for record_id in ids:
@@ -173,20 +178,19 @@ class Many2Many(Field):
             else:
                 raise Exception('Bad arguments')
 
-    def get_target(self, pool):
+    def get_target(self):
         '''
         Return the target model.
 
-        :param pool: The pool
         :return: A Model
         '''
-        relation_obj = pool.get(self.relation_name)
+        relation_obj = Pool().get(self.relation_name)
         if not self.target:
             return relation_obj
         if self.target in relation_obj._columns:
-            target_obj = pool.get(
+            target_obj = Pool().get(
                     relation_obj._columns[self.target].model_name)
         else:
-            target_obj = pool.get(
+            target_obj = Pool().get(
                     relation_obj._inherit_fields[self.target][2].model_name)
         return target_obj
diff --git a/trytond/model/fields/many2one.py b/trytond/model/fields/many2one.py
index f544399..48f391d 100644
--- a/trytond/model/fields/many2one.py
+++ b/trytond/model/fields/many2one.py
@@ -13,7 +13,7 @@ class Many2One(Field):
     def __init__(self, model_name, string='', left=None, right=None,
             ondelete='SET NULL', datetime_field=None, help='', required=False,
             readonly=False, domain=None, states=None, change_default=False,
-            select=0, on_change=None, on_change_with=None, depends=None,
+            select=False, on_change=None, on_change_with=None, depends=None,
             order_field=None, context=None, loading='eager'):
         '''
         :param model_name: The name of the target model.
diff --git a/trytond/model/fields/one2many.py b/trytond/model/fields/one2many.py
index a02a4f9..5ae64c6 100644
--- a/trytond/model/fields/one2many.py
+++ b/trytond/model/fields/one2many.py
@@ -3,6 +3,7 @@
 from itertools import chain
 from trytond.model.fields.field import Field
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 
 def add_remove_validate(value):
     if value:
@@ -18,7 +19,7 @@ class One2Many(Field):
     def __init__(self, model_name, field, string='', add_remove=None,
             order=None, datetime_field=None, help='', required=False,
             readonly=False, domain=None, states=None, change_default=False,
-            select=0, on_change=None, on_change_with=None, depends=None,
+            on_change=None, on_change_with=None, depends=None,
             order_field=None, context=None, loading='lazy'):
         '''
         :param model_name: The name of the target model.
@@ -38,7 +39,7 @@ class One2Many(Field):
                 depends = [datetime_field]
         super(One2Many, self).__init__(string=string, help=help,
                 required=required, readonly=readonly, domain=domain,
-                states=states, change_default=change_default, select=select,
+                states=states, change_default=change_default,
                 on_change=on_change, on_change_with=on_change_with,
                 depends=depends, order_field=order_field, context=context,
                 loading=loading)
@@ -70,13 +71,14 @@ class One2Many(Field):
         :param values: a dictionary with the read values
         :return: a dictionary with ids as key and values as value
         '''
+        pool = Pool()
         res = {}
         for i in ids:
             res[i] = []
         ids2 = []
         for i in range(0, len(ids), Transaction().cursor.IN_MAX):
             sub_ids = ids[i:i + Transaction().cursor.IN_MAX]
-            ids2.append(model.pool.get(self.model_name).search([
+            ids2.append(pool.get(self.model_name).search([
                 (self.field, 'in', sub_ids),
                 ], order=self.order))
 
@@ -91,12 +93,12 @@ class One2Many(Field):
                 ids3.append(i)
 
         if ids3:
-            for i in model.pool.get(self.model_name).read(ids3, [self.field]):
+            for i in pool.get(self.model_name).read(ids3, [self.field]):
                 res[i[self.field]].append(i['id'])
 
         index_of_ids2 = dict((i, index) for index, i in enumerate(chain(*ids2)))
         for val in res.values():
-            val.sort(lambda x, y: cmp(index_of_ids2[x], index_of_ids2[y]))
+            val.sort(key=lambda x: index_of_ids2[x])
         return res
 
     def set(self, ids, model, name, values):
@@ -116,9 +118,10 @@ class One2Many(Field):
             (``unlink_all``),
             (``set``, ``<ids>``)
         '''
+        pool = Pool()
         if not values:
             return
-        model = model.pool.get(self.model_name)
+        model = pool.get(self.model_name)
         for act in values:
             if act[0] == 'create':
                 for record_id in ids:
diff --git a/trytond/model/fields/one2one.py b/trytond/model/fields/one2one.py
index d3ad640..6e0133f 100644
--- a/trytond/model/fields/one2one.py
+++ b/trytond/model/fields/one2one.py
@@ -3,6 +3,7 @@
 
 from trytond.model.fields.many2many import Many2Many
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 
 
 class One2One(Many2Many):
@@ -35,7 +36,8 @@ class One2One(Many2Many):
         :param name: A string with the name of the field
         :param value: The id to link
         '''
-        relation_obj = model.pool.get(self.relation_name)
+        pool = Pool()
+        relation_obj = pool.get(self.relation_name)
         relation_ids = relation_obj.search([
             (self.origin, 'in', ids),
             ])
diff --git a/trytond/model/fields/property.py b/trytond/model/fields/property.py
index a566c61..cb493c3 100644
--- a/trytond/model/fields/property.py
+++ b/trytond/model/fields/property.py
@@ -6,6 +6,7 @@ from trytond.model.fields.function import Function
 from trytond.model.fields.field import Field
 from trytond import backend
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 
 
 class Property(Function):
@@ -34,7 +35,8 @@ class Property(Function):
         :param values:
         :return: a dictionary with ids as key and values as value
         '''
-        property_obj = model.pool.get('ir.property')
+        pool = Pool()
+        property_obj = pool.get('ir.property')
         res = property_obj.get(name, model._name, ids)
         return res
 
@@ -48,7 +50,8 @@ class Property(Function):
         :param name: The name of the field.
         :param value: The value to set.
         '''
-        property_obj = model.pool.get('ir.property')
+        pool = Pool()
+        property_obj = pool.get('ir.property')
         return property_obj.set(name, model._name, ids,
                 (value and getattr(self, 'model_name', '')  + ',' + str(value)) or
                 False)
@@ -60,10 +63,11 @@ class Property(Function):
         :param clause: The search domain clause. See ModelStorage.search
         :return: New list of domain.
         '''
-        rule_obj = model.pool.get('ir.rule')
-        property_obj = model.pool.get('ir.property')
-        model_obj = model.pool.get('ir.model')
-        field_obj = model.pool.get('ir.model.field')
+        pool = Pool()
+        rule_obj = pool.get('ir.rule')
+        property_obj = pool.get('ir.property')
+        model_obj = pool.get('ir.model')
+        field_obj = pool.get('ir.model.field')
         cursor = Transaction().cursor
 
         field_class = backend.FIELDS[self._type]
diff --git a/trytond/model/fields/reference.py b/trytond/model/fields/reference.py
index db66492..de2895e 100644
--- a/trytond/model/fields/reference.py
+++ b/trytond/model/fields/reference.py
@@ -1,10 +1,9 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import contextlib
 from trytond.model.fields.field import Field
-from trytond.tools import safe_eval
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 
 
 class Reference(Field):
@@ -15,7 +14,7 @@ class Reference(Field):
 
     def __init__(self, string='', selection=None, help='', required=False,
             readonly=False, domain=None, states=None, change_default=False,
-            select=0, on_change=None, on_change_with=None, depends=None,
+            select=False, on_change=None, on_change_with=None, depends=None,
             order_field=None, context=None, loading='eager'):
         '''
         :param selection: A list or a function name that returns a list.
@@ -42,6 +41,7 @@ class Reference(Field):
         :param values: a dictionary with the read values
         :return: a dictionary with ids as key and values as value
         '''
+        pool = Pool()
         if values is None:
             values = {}
         res = {}
@@ -58,14 +58,10 @@ class Reference(Field):
             if not ref_model:
                 continue
             try:
-                ref_id = safe_eval(ref_id)
-            except Exception:
-                pass
-            try:
                 ref_id = int(ref_id)
             except Exception:
                 continue
-            if not ref_id:
+            if ref_id < 0:
                 continue
             res[i] = ref_model + ',' + str(ref_id)
             ref_to_check.setdefault(ref_model, (set(), []))
@@ -76,10 +72,10 @@ class Reference(Field):
         with contextlib.nested(Transaction().set_context(active_test=False),
                 Transaction().set_user(0)):
             for ref_model, (ref_ids, ids) in ref_to_check.iteritems():
-                if ref_model not in model.pool.object_name_list():
+                if ref_model not in pool.object_name_list():
                     res.update(dict((i, False) for i in ids))
                     continue
-                ref_obj = model.pool.get(ref_model)
+                ref_obj = pool.get(ref_model)
                 ref_ids = ref_obj.search([
                     ('id', 'in', list(ref_ids)),
                     ], order=[])
diff --git a/trytond/model/fields/selection.py b/trytond/model/fields/selection.py
index 66ff9f3..7d804d2 100644
--- a/trytond/model/fields/selection.py
+++ b/trytond/model/fields/selection.py
@@ -12,7 +12,7 @@ class Selection(Field):
 
     def __init__(self, selection, string='', sort=True, translate=True,
             help='', required=False, readonly=False, domain=None, states=None,
-            change_default=False, select=0, on_change=None,
+            change_default=False, select=False, on_change=None,
             on_change_with=None, depends=None, order_field=None, context=None,
             loading='eager'):
         '''
diff --git a/trytond/model/model.py b/trytond/model/model.py
index 716752a..67de426 100644
--- a/trytond/model/model.py
+++ b/trytond/model/model.py
@@ -2,21 +2,22 @@
 #this repository contains the full copyright notices and license terms.
 
 import copy
+import collections
 from trytond.model import fields
 from trytond.error import WarningErrorMixin
 from trytond.pool import Pool
 from trytond.pyson import PYSONEncoder
 from trytond.transaction import Transaction
+from trytond.url import URLMixin
 
 
-class Model(WarningErrorMixin):
+class Model(WarningErrorMixin, URLMixin):
     """
     Define a model in Tryton.
     """
     _name = None
     _inherits = {}
     _description = ''
-    pool = None #XXX change to avoid collision with field
     __columns = None
     __xxx2many_targets = None
     __defaults = None
@@ -54,7 +55,7 @@ class Model(WarningErrorMixin):
         fields_names += self._inherit_fields.keys()
         for field_name in fields_names:
             default_method = getattr(self, 'default_%s' % field_name, False)
-            if callable(default_method):
+            if isinstance(default_method, collections.Callable):
                 res[field_name] = default_method
         self.__defaults = res
         return res
@@ -98,16 +99,19 @@ class Model(WarningErrorMixin):
             for attribute in ('on_change', 'on_change_with', 'autocomplete'):
                 function_name = '%s_%s' % (attribute, field_name)
                 if (getattr(field, attribute, False)
-                        and callable(getattr(self, function_name, False))):
+                         and isinstance(getattr(self, function_name, False),
+                             collections.Callable)):
                     self._rpc.setdefault(function_name, False)
 
     def __getattr__(self, name):
+        pool = Pool()
         # Search if a function exists in inherits parents
         for model_name, field_name in self._inherits.iteritems():
-            model_obj = self.pool.get(model_name)
-            if hasattr(model_obj, name) and \
-                    callable(getattr(model_obj, name)):
-                return getattr(model_obj, name)
+            model_obj = pool.get(model_name)
+            if (hasattr(model_obj, name)
+                    and isinstance(getattr(model_obj, name),
+                        collections.Callable)):
+               return getattr(model_obj, name)
         raise AttributeError(name)
 
     def _inherits_reload(self):
@@ -115,19 +119,20 @@ class Model(WarningErrorMixin):
         Reconstruct _inherit_fields
         """
         res = {}
+        pool = Pool()
         for model in self._inherits:
-            res.update(self.pool.get(model)._inherit_fields)
-            for field_name in self.pool.get(model)._columns.keys():
+            res.update(pool.get(model)._inherit_fields)
+            for field_name in pool.get(model)._columns.keys():
                 res[field_name] = (model, self._inherits[model],
-                        self.pool.get(model)._columns[field_name])
-            for field_name in self.pool.get(model)._inherit_fields.keys():
+                        pool.get(model)._columns[field_name])
+            for field_name in pool.get(model)._inherit_fields.keys():
                 res[field_name] = (model, self._inherits[model],
-                        self.pool.get(model)._inherit_fields[field_name][2])
+                        pool.get(model)._inherit_fields[field_name][2])
         self._inherit_fields = res
         self._reset_xxx2many_targets()
         # Update objects that uses this one to update their _inherits fields
-        for obj_name in self.pool.object_name_list():
-            obj = self.pool.get(obj_name)
+        for obj_name in pool.object_name_list():
+            obj = pool.get(obj_name)
             if self._name in obj._inherits:
                 obj._inherits_reload()
 
@@ -148,7 +153,7 @@ class Model(WarningErrorMixin):
                 continue
             if hasattr(field, 'get_target'):
                 try:
-                    model_name = field.get_target(self.pool)._name
+                    model_name = field.get_target()._name
                 except KeyError:
                     to_cache = False
                     continue
@@ -166,7 +171,7 @@ class Model(WarningErrorMixin):
                 continue
             if hasattr(field, 'get_target'):
                 try:
-                    model_name = field.get_target(self.pool)._name
+                    model_name = field.get_target()._name
                 except KeyError:
                     to_cache = False
                     continue
@@ -186,7 +191,7 @@ class Model(WarningErrorMixin):
 
         :param module_name: the module name
         """
-        translation_obj = self.pool.get('ir.translation')
+        translation_obj = Pool().get('ir.translation')
 
         cursor = Transaction().cursor
         # Add model in ir_model
@@ -388,7 +393,8 @@ class Model(WarningErrorMixin):
         :return: a dictionary with field name as key
             and default value as value
         '''
-        property_obj = self.pool.get('ir.property')
+        pool = Pool()
+        property_obj = pool.get('ir.property')
         value = {}
 
         # get the default values defined in the object
@@ -407,7 +413,7 @@ class Model(WarningErrorMixin):
             if (with_rec_name
                     and field._type in ('many2one',)
                     and value.get(field_name)):
-                obj = self.pool.get(field.model_name)
+                obj = pool.get(field.model_name)
                 if 'rec_name' in obj._columns:
                     value[field_name + '.rec_name'] = obj.browse(
                         value[field_name]).rec_name
@@ -427,10 +433,11 @@ class Model(WarningErrorMixin):
         :param value: a dictionnary with the default value
         :return: a new dictionnary of default value
         """
+        pool = Pool()
         res = value.copy()
         val = {}
         for i in self._inherits.keys():
-            val.update(self.pool.get(i)._default_on_change(value))
+            val.update(pool.get(i)._default_on_change(value))
         for field in value.keys():
             if field in self._columns:
                 if self._columns[field].on_change:
@@ -443,7 +450,7 @@ class Model(WarningErrorMixin):
                                 args[arg] = args[arg][0]
                     val.update(getattr(self, 'on_change_' + field)(args))
                 if self._columns[field]._type in ('one2many',):
-                    obj = self.pool.get(self._columns[field].model_name)
+                    obj = pool.get(self._columns[field].model_name)
                     for val2 in res[field]:
                         val2.update(obj._default_on_change(val2))
         res.update(val)
@@ -457,12 +464,13 @@ class Model(WarningErrorMixin):
         :return: a dictionary with field name as key and definition as value
         """
         res = {}
-        translation_obj = self.pool.get('ir.translation')
-        model_access_obj = self.pool.get('ir.model.access')
-        field_access_obj = self.pool.get('ir.model.field.access')
+        pool = Pool()
+        translation_obj = pool.get('ir.translation')
+        model_access_obj = pool.get('ir.model.access')
+        field_access_obj = pool.get('ir.model.field.access')
 
         for parent in self._inherits:
-            res.update(self.pool.get(parent).fields_get(fields_names))
+            res.update(pool.get(parent).fields_get(fields_names))
         write_access = model_access_obj.check(self._name, 'write',
                 raise_exception=False)
 
@@ -494,7 +502,10 @@ class Model(WarningErrorMixin):
                 self._columns.keys(), 'write', access=True)
         for field in (x for x in self._columns.keys()
                 if ((not fields_names) or x in fields_names)):
-            res[field] = {'type': self._columns[field]._type}
+            res[field] = {
+                'type': self._columns[field]._type,
+                'name': field,
+                }
             for arg in (
                     'string',
                     'readonly',
@@ -531,6 +542,13 @@ class Model(WarningErrorMixin):
                     (fields.Function, fields.One2Many)) \
                     and not self._columns[field].order_field:
                 res[field]['sortable'] = False
+            if ((isinstance(self._columns[field], fields.Function)
+                    and not self._columns[field].searcher)
+                    or self._columns[field]._type in ('binary', 'many2many',
+                        'one2many', 'sha')):
+                res[field]['searchable'] = False
+            else:
+                res[field]['searchable'] = True
 
             if Transaction().context.get('language'):
                 # translate the field label
@@ -576,8 +594,8 @@ class Model(WarningErrorMixin):
                 if hasattr(self._columns[field], 'model_name'):
                     relation = copy.copy(self._columns[field].model_name)
                 else:
-                    relation = copy.copy(self._columns[field].get_target(
-                        self.pool)._name)
+                    relation = copy.copy(
+                        self._columns[field].get_target()._name)
                 res[field]['relation'] = relation
                 res[field]['domain'] = copy.copy(self._columns[field].domain)
                 res[field]['context'] = copy.copy(self._columns[field].context)
diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py
index b3c1982..a0a6818 100644
--- a/trytond/model/modelsql.py
+++ b/trytond/model/modelsql.py
@@ -1,17 +1,21 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import contextlib
 import datetime
 import re
+from functools import reduce
 from decimal import Decimal
+from itertools import islice
 from trytond.model import ModelStorage
 from trytond.model import fields
 from trytond.backend import FIELDS, TableHandler
 from trytond.backend import DatabaseIntegrityError, Database
 from trytond.tools import reduce_ids
-from trytond.const import OPERATORS
+from trytond.const import OPERATORS, RECORD_CACHE_SIZE
 from trytond.transaction import Transaction
+from trytond.pool import Pool
+from trytond.cache import LRUDict
+from trytond.exceptions import ConcurrencyException
 _RE_UNIQUE = re.compile('UNIQUE\s*\((.*)\)', re.I)
 _RE_CHECK = re.compile('CHECK\s*\((.*)\)', re.I)
 
@@ -43,6 +47,8 @@ class ModelSQL(ModelStorage):
         if self.table_query():
             return
 
+        pool = Pool()
+
         # create/update table in the database
         table = TableHandler(Transaction().cursor, self, module_name)
         if self._history:
@@ -133,7 +139,7 @@ class ModelSQL(ModelStorage):
                     if field.model_name in ('res.user', 'res.group'):
                         ref = field.model_name.replace('.','_')
                     else:
-                        ref = self.pool.get(field.model_name)._table
+                        ref = pool.get(field.model_name)._table
                     table.add_fk(field_name, ref, field.ondelete)
 
                 table.index_action(
@@ -202,10 +208,11 @@ class ModelSQL(ModelStorage):
         '''
         Return the default value for sequence field.
         '''
+        pool = Pool()
         table = self._table
         if 'sequence' not in self._columns:
             for model in self._inherits:
-                model_obj = self.pool.get(model)
+                model_obj = pool.get(model)
                 if 'sequence' in model_obj._columns:
                     table = model_obj._table
                     break
@@ -229,6 +236,7 @@ class ModelSQL(ModelStorage):
     def create(self, values):
         super(ModelSQL, self).create(values)
         cursor = Transaction().cursor
+        pool = Pool()
 
         if self.table_query():
             return False
@@ -286,11 +294,10 @@ class ModelSQL(ModelStorage):
                     continue
                 if inherits in tocreate:
                     tocreate[inherits][i] = values[i]
-                if i not in self._columns:
-                    del values[i]
+                del values[i]
 
         for inherits in tocreate:
-            inherits_obj = self.pool.get(inherits)
+            inherits_obj = pool.get(inherits)
             inherits_id = inherits_obj.create(tocreate[inherits])
             values[self._inherits[inherits]] = inherits_id
 
@@ -329,16 +336,25 @@ class ModelSQL(ModelStorage):
         upd2.append(Transaction().user)
         upd2.append(datetime.datetime.now())
         try:
-            id_new = cursor.nextid(self._table)
-            if id_new:
-                cursor.execute('INSERT INTO "' + self._table + '" ' \
-                        '(id' + upd0 + ') ' \
-                        'VALUES (' + str(id_new) + upd1 + ')', tuple(upd2))
+            if cursor.has_returning():
+                cursor.execute('INSERT INTO "' + self._table + '" '
+                    '(' + upd0[1:] + ') '
+                    'VALUES (' + upd1[1:] + ') RETURNING id',
+                    tuple(upd2))
+                id_new, = cursor.fetchone()
             else:
-                cursor.execute('INSERT INTO "' + self._table + '" ' \
-                        '(' + upd0[1:] + ') ' \
-                        'VALUES (' + upd1[1:] + ')', tuple(upd2))
-                id_new = cursor.lastid()
+                id_new = cursor.nextid(self._table)
+                if id_new:
+                    cursor.execute('INSERT INTO "' + self._table + '" '
+                        '(id' + upd0 + ') '
+                        'VALUES (' + str(id_new) + upd1 + ')',
+                        tuple(upd2))
+                else:
+                    cursor.execute('INSERT INTO "' + self._table + '" '
+                        '(' + upd0[1:] + ') '
+                        'VALUES (' + upd1[1:] + ')',
+                        tuple(upd2))
+                    id_new = cursor.lastid()
         except DatabaseIntegrityError, exception:
             with contextlib.nested(Transaction().new_cursor(),
                     Transaction().set_user(0)):
@@ -356,7 +372,7 @@ class ModelSQL(ModelStorage):
                                         field_name))
                     if isinstance(field, fields.Many2One) \
                             and values.get(field_name):
-                        model_obj = self.pool.get(field.model_name)
+                        model_obj = pool.get(field.model_name)
                         create_records = Transaction().create_records.get(
                                 field.model_name, set())
                         delete_records = Transaction().delete_records.get(
@@ -377,7 +393,7 @@ class ModelSQL(ModelStorage):
                         self.raise_user_error(error)
             raise
 
-        domain1, domain2 = self.pool.get('ir.rule').domain_get(self._name,
+        domain1, domain2 = pool.get('ir.rule').domain_get(self._name,
                 mode='create')
         if domain1:
             cursor.execute('SELECT id FROM "' + self._table + '" ' \
@@ -390,7 +406,7 @@ class ModelSQL(ModelStorage):
 
         for field in values:
             if getattr(self._columns[field], 'translate', False):
-                self.pool.get('ir.translation')._set_ids(
+                pool.get('ir.translation')._set_ids(
                         self._name + ',' + field, 'model',
                         Transaction().language, [id_new], values[field])
 
@@ -419,8 +435,9 @@ class ModelSQL(ModelStorage):
         return id_new
 
     def read(self, ids, fields_names=None):
-        rule_obj = self.pool.get('ir.rule')
-        translation_obj = self.pool.get('ir.translation')
+        pool = Pool()
+        rule_obj = pool.get('ir.rule')
+        translation_obj = pool.get('ir.translation')
         super(ModelSQL, self).read(ids, fields_names=fields_names)
         cursor = Transaction().cursor
 
@@ -563,7 +580,7 @@ class ModelSQL(ModelStorage):
                     for field_related in fields_related[inherit_field]:
                         inherit_related_fields.append(
                                 inherit_field + '.' + field_related)
-            res2 = self.pool.get(table).read([x[field] for x in res],
+            res2 = pool.get(table).read([x[field] for x in res],
                     fields_names=inherits_fields + inherit_related_fields)
 
             res3 = {}
@@ -635,9 +652,9 @@ class ModelSQL(ModelStorage):
             fields_related2values.setdefault(field, {})
             if self._columns[field]._type in ('many2one', 'one2one'):
                 if hasattr(self._columns[field], 'model_name'):
-                    obj = self.pool.get(self._columns[field].model_name)
+                    obj = pool.get(self._columns[field].model_name)
                 else:
-                    obj = self._columns[field].get_target(self.pool)
+                    obj = self._columns[field].get_target()
                 if hasattr(self._columns[field], 'datetime_field') \
                         and self._columns[field].datetime_field:
                     for record in res:
@@ -669,9 +686,9 @@ class ModelSQL(ModelStorage):
                     if not model_name:
                         continue
                     record_id = int(record_id)
-                    if not record_id:
+                    if record_id < 0:
                         continue
-                    obj = self.pool.get(model_name)
+                    obj = pool.get(model_name)
                     record2 = obj.read(record_id, fields_related[field])
                     del record2['id']
                     fields_related2values[field][record_id] = record2
@@ -696,7 +713,7 @@ class ModelSQL(ModelStorage):
                                 if not model_name:
                                     continue
                                 record_id = int(record_id)
-                                if not record_id:
+                                if record_id < 0:
                                     continue
                                 record[field + '.' + related] = \
                                         fields_related2values[field][
@@ -710,6 +727,8 @@ class ModelSQL(ModelStorage):
 
     def write(self, ids, values):
         cursor = Transaction().cursor
+        pool = Pool()
+        translation_obj = pool.get('ir.translation')
 
         # Call before cursor cache cleaning
         trigger_eligibles = self.trigger_write_get_eligibles(
@@ -759,10 +778,10 @@ class ModelSQL(ModelStorage):
                     cursor.execute("SELECT id " \
                             'FROM "' + self._table + '" ' \
                             'WHERE ' + ' OR '.join(
-                                (clause,) * (len(args)/2)), args)
+                                (clause,) * (len(args) // 2)), args)
                     if cursor.fetchone():
-                        raise Exception('ConcurrencyException',
-                                'Records were modified in the meanwhile')
+                        raise ConcurrencyException(
+                            'Records were modified in the meanwhile')
             for i in ids:
                 if Transaction().timestamp.get(self._name + ',' + str(i)):
                     del Transaction().timestamp[self._name + ',' +str(i)]
@@ -818,7 +837,7 @@ class ModelSQL(ModelStorage):
         upd1.append(Transaction().user)
         upd1.append(datetime.datetime.now())
 
-        domain1, domain2 = self.pool.get('ir.rule').domain_get(self._name,
+        domain1, domain2 = pool.get('ir.rule').domain_get(self._name,
                 mode='write')
         if domain1:
             domain1 = ' AND (' + domain1 + ') '
@@ -871,7 +890,7 @@ class ModelSQL(ModelStorage):
                                             field_name))
                         if isinstance(field, fields.Many2One) \
                                 and values[field_name]:
-                            model_obj = self.pool.get(field.model_name)
+                            model_obj = pool.get(field.model_name)
                             create_records = Transaction().create_records.get(
                                     field.model_name, set())
                             delete_records = Transaction().delete_records.get(
@@ -894,7 +913,7 @@ class ModelSQL(ModelStorage):
 
         for field in direct:
             if getattr(self._columns[field], 'translate', False):
-                self.pool.get('ir.translation')._set_ids(
+                translation_obj._set_ids(
                         self._name + ',' + field, 'model',
                         Transaction().language, ids, values[field])
 
@@ -927,7 +946,7 @@ class ModelSQL(ModelStorage):
             for val in updend:
                 if self._inherit_fields[val][0] == table:
                     values2[val] = values[val]
-            self.pool.get(table).write(nids, values2)
+            pool.get(table).write(nids, values2)
 
         self._validate(ids)
 
@@ -953,6 +972,7 @@ class ModelSQL(ModelStorage):
 
     def delete(self, ids):
         cursor = Transaction().cursor
+        pool = Pool()
         if not ids:
             return True
 
@@ -988,8 +1008,8 @@ class ModelSQL(ModelStorage):
                             'WHERE ' + ' OR '.join(
                                 (clause,) * (len(args)/2)), args)
                     if cursor.fetchone():
-                        raise Exception('ConcurrencyException',
-                                'Records were modified in the meanwhile')
+                        raise ConcurrencyException(
+                            'Records were modified in the meanwhile')
             for i in ids:
                 if Transaction().timestamp.get(self._name + ',' + str(i)):
                     del Transaction().timestamp[self._name + ',' +str(i)]
@@ -1008,7 +1028,7 @@ class ModelSQL(ModelStorage):
         foreign_keys_tocheck = []
         foreign_keys_toupdate = []
         foreign_keys_todelete = []
-        for _, model in self.pool.iterobject():
+        for _, model in pool.iterobject():
             if hasattr(model, 'table_query') \
                     and model.table_query():
                 continue
@@ -1029,7 +1049,7 @@ class ModelSQL(ModelStorage):
 
         Transaction().delete.setdefault(self._name, set()).update(ids)
 
-        domain1, domain2 = self.pool.get('ir.rule').domain_get(self._name,
+        domain1, domain2 = pool.get('ir.rule').domain_get(self._name,
                 mode='delete')
         if domain1:
             domain1 = ' AND (' + domain1 + ') '
@@ -1125,7 +1145,8 @@ class ModelSQL(ModelStorage):
 
     def search(self, domain, offset=0, limit=None, order=None, count=False,
             query_string=False):
-        rule_obj = self.pool.get('ir.rule')
+        pool = Pool()
+        rule_obj = pool.get('ir.rule')
         cursor = Transaction().cursor
 
         # Get domain clauses
@@ -1198,11 +1219,11 @@ class ModelSQL(ModelStorage):
 
         datas = cursor.dictfetchmany(cursor.IN_MAX)
         cache = cursor.get_cache()
-        cache.setdefault(self._name, {})
+        cache.setdefault(self._name, LRUDict(RECORD_CACHE_SIZE))
         delete_records = Transaction().delete_records.setdefault(self._name,
                 set())
         keys = None
-        for data in datas:
+        for data in islice(datas, 0, cache.size_limit):
             if data['id'] in delete_records:
                 continue
             if not keys:
@@ -1217,8 +1238,7 @@ class ModelSQL(ModelStorage):
                         continue
             for k in keys:
                 del data[k]
-            cache[self._name].setdefault(data['id'], {})
-            cache[self._name][data['id']].update(data)
+            cache[self._name].setdefault(data['id'], {}).update(data)
 
         if len(datas) >= cursor.IN_MAX:
             select_fields2 = [select_fields[0]]
@@ -1286,6 +1306,7 @@ class ModelSQL(ModelStorage):
         return qu1, qu2, tables, tables_args
 
     def __search_domain_oper(self, domain, tables, tables_args):
+        pool = Pool()
         operator = 'AND'
         if len(domain) and isinstance(domain[0], basestring):
             if domain[0] not in ('AND', 'OR'):
@@ -1325,6 +1346,7 @@ class ModelSQL(ModelStorage):
         return qu1, qu2
 
     def __search_domain_calc(self, domain, tables, tables_args):
+        pool = Pool()
         domain = domain[:]
         cursor = Transaction().cursor
 
@@ -1338,7 +1360,7 @@ class ModelSQL(ModelStorage):
             table = self
             fargs = domain[i][0].split('.', 1)
             if fargs[0] in self._inherit_fields:
-                itable = self.pool.get(self._inherit_fields[fargs[0]][0])
+                itable = pool.get(self._inherit_fields[fargs[0]][0])
                 table_query = ''
                 table_arg = []
                 if itable.table_query():
@@ -1356,29 +1378,32 @@ class ModelSQL(ModelStorage):
                 if not fargs[0] in self._inherit_fields:
                     raise Exception('ValidateError', 'Field "%s" doesn\'t ' \
                             'exist on "%s"' % (fargs[0], self._name))
-                table = self.pool.get(self._inherit_fields[fargs[0]][0])
+                table = pool.get(self._inherit_fields[fargs[0]][0])
                 field = table._columns.get(fargs[0], False)
             if len(fargs) > 1:
                 if field._type == 'many2one':
-                    target_obj = self.pool.get(field.model_name)
+                    target_obj = pool.get(field.model_name)
+                    m2o_search = [(fargs[1], domain[i][1], domain[i][2])]
+                    if ('active' in target_obj._columns
+                            or 'active' in target_obj._inherit_fields):
+                        m2o_search += [('active', 'in', (True, False))]
                     if hasattr(field, 'search'):
-                        domain.extend([(fargs[0], 'in', target_obj.search([
-                            (fargs[1], domain[i][1], domain[i][2]),
-                            ], order=[]))])
+                        domain.extend([(fargs[0], 'in',
+                                    target_obj.search(m2o_search, order=[]))])
                         domain.pop(i)
                     else:
-                        domain[i] = (fargs[0], 'inselect', target_obj.search([
-                            (fargs[1], domain[i][1], domain[i][2]),
-                            ], order=[], query_string=True), table)
+                        domain[i] = (fargs[0], 'inselect',
+                            target_obj.search(m2o_search, order=[],
+                                query_string=True), table)
                         i += 1
                     continue
                 elif field._type in ('one2one', 'many2many', 'one2many'):
                     if hasattr(field, 'model_name'):
-                        target_obj = self.pool.get(field.model_name)
+                        target_obj = pool.get(field.model_name)
                     else:
-                        target_obj = field.get_target(self.pool)
+                        target_obj = field.get_target()
                     if hasattr(field, 'relation_name'):
-                        relation_obj = self.pool.get(field.relation_name)
+                        relation_obj = pool.get(field.relation_name)
                         origin, target = field.origin, field.target
                     else:
                         relation_obj = target_obj
@@ -1405,7 +1430,7 @@ class ModelSQL(ModelStorage):
                 clause = domain.pop(i)
                 domain.extend(field.search(table, clause[0], clause))
             elif field._type == 'one2many':
-                field_obj = self.pool.get(field.model_name)
+                field_obj = pool.get(field.model_name)
 
                 if isinstance(domain[i][2], basestring):
                     # get the ids of the records of the "distant" resource
@@ -1461,9 +1486,9 @@ class ModelSQL(ModelStorage):
             elif field._type in ('many2many', 'one2one'):
                 # XXX must find a solution for long id list
                 if hasattr(field, 'model_name'):
-                    target_obj = self.pool.get(field.model_name)
+                    target_obj = pool.get(field.model_name)
                 else:
-                    target_obj = field.get_target(self.pool)
+                    target_obj = field.get_target()
                 if domain[i][1] in ('child_of', 'not child_of'):
                     if isinstance(domain[i][2], basestring):
                         ids2 = [x[0] for x in target_obj.search([
@@ -1491,7 +1516,7 @@ class ModelSQL(ModelStorage):
                         ids2 = target_obj.search([
                             (domain[i][3], 'child_of', ids2),
                             ], order=[])
-                        relation_obj = self.pool.get(field.relation_name)
+                        relation_obj = pool.get(field.relation_name)
                         red_sql, red_ids = reduce_ids('"' + field.target + '"',
                                 ids2)
                         query1 = 'SELECT "' + field.origin + '" ' \
@@ -1512,7 +1537,7 @@ class ModelSQL(ModelStorage):
                                 table, domain[i][0]))
                 else:
                     if isinstance(domain[i][2], bool):
-                        relation_obj = self.pool.get(field.relation_name)
+                        relation_obj = pool.get(field.relation_name)
                         query1 = 'SELECT "' + field.origin + '" ' \
                                 'FROM "' + relation_obj._table + '" '\
                                 'WHERE "' + field.origin + '" IS NOT NULL'
@@ -1526,7 +1551,7 @@ class ModelSQL(ModelStorage):
                             target_field = 'rec_name'
                         else:
                             target_field = 'id'
-                        relation_obj = self.pool.get(field.relation_name)
+                        relation_obj = pool.get(field.relation_name)
 
                         query1, query2 = target_obj.search([
                                     (target_field, domain[i][1], domain[i][2]),
@@ -1541,7 +1566,7 @@ class ModelSQL(ModelStorage):
                 # XXX must find a solution for long id list
                 if domain[i][1] in ('child_of', 'not child_of'):
                     if isinstance(domain[i][2], basestring):
-                        field_obj = self.pool.get(field.model_name)
+                        field_obj = pool.get(field.model_name)
                         ids2 = [x[0] for x in field_obj.search([
                             ('rec_name', 'like', domain[i][2]),
                             ], order=[])]
@@ -1564,7 +1589,7 @@ class ModelSQL(ModelStorage):
                             raise Exception('Error', 'Programming error: ' \
                                     'child_of on field "%s" is not allowed!' % \
                                     (domain[i][0],))
-                        ids2 = self.pool.get(field.model_name).search([
+                        ids2 = pool.get(field.model_name).search([
                             (domain[i][3], 'child_of', ids2),
                             ], order=[])
                         if domain[i][1] == 'child_of':
@@ -1601,10 +1626,12 @@ class ModelSQL(ModelStorage):
                                     ids2, table, domain[i][0]), table)
                 else:
                     if isinstance(domain[i][2], basestring):
-                        field_obj = self.pool.get(field.model_name)
-                        res_ids = field_obj.search([
-                            ('rec_name', domain[i][1], domain[i][2]),
-                            ], order=[])
+                        field_obj = pool.get(field.model_name)
+                        m2o_search = [('rec_name', domain[i][1], domain[i][2])]
+                        if ('active' in field_obj._columns
+                                or 'active' in field_obj._inherit_fields):
+                            m2o_search += [('active', 'in', (True, False))]
+                        res_ids = field_obj.search(m2o_search, order=[])
                         domain[i] = (domain[i][0], 'in', res_ids, table)
                     else:
                         domain[i] += (table,)
@@ -1632,7 +1659,7 @@ class ModelSQL(ModelStorage):
                                 'ON (ir_translation.name = ' \
                                         'ir_model.model||\',\'||%s.name ' \
                                     'AND ir_translation.res_id = 0 ' \
-                                    'AND ir_translation = %%s ' \
+                                    'AND ir_translation.lang = %%s ' \
                                     'AND ir_translation.type = \'%s\' ' \
                                     'AND ir_translation.fuzzy = %s)' % \
                                 (table._table, ttype,
@@ -1654,7 +1681,7 @@ class ModelSQL(ModelStorage):
                         table_query, table_args = table.table_query()
                         table_query = '(' + table_query  + ') AS '
 
-                    translation_obj = self.pool.get('ir.translation')
+                    translation_obj = pool.get('ir.translation')
 
                     qu1, qu2, tables, table_args = \
                             translation_obj.search_domain([
@@ -1805,6 +1832,7 @@ class ModelSQL(ModelStorage):
         return qu1, qu2
 
     def _order_calc(self, field, otype):
+        pool = Pool()
         order_by = []
         tables = []
         tables_args = {}
@@ -1822,7 +1850,7 @@ class ModelSQL(ModelStorage):
                 field_name = self._columns[field].order_field
 
             if isinstance(self._columns[field], fields.Many2One):
-                obj = self.pool.get(self._columns[field].model_name)
+                obj = pool.get(self._columns[field].model_name)
                 table_name = obj._table
                 link_field = field
                 field_name = None
@@ -1857,12 +1885,12 @@ class ModelSQL(ModelStorage):
 
                 obj2 = None
                 if obj._rec_name in obj._inherit_fields.keys():
-                    obj2 = self.pool.get(
+                    obj2 = pool.get(
                             obj._inherit_fields[obj._rec_name][0])
                     field_name = obj._rec_name
 
                 if obj._order_name in obj._inherit_fields.keys():
-                    obj2 = self.pool.get(
+                    obj2 = pool.get(
                             obj._inherit_fields[obj._order_name][0])
                     field_name = obj._order_name
 
@@ -1996,7 +2024,7 @@ class ModelSQL(ModelStorage):
                 return order_by, tables, tables_args
 
         if field in self._inherit_fields.keys():
-            obj = self.pool.get(self._inherit_fields[field][0])
+            obj = pool.get(self._inherit_fields[field][0])
             table_name = obj._table
             link_field = self._inherits[obj._name]
             order_by, tables, tables_args = obj._order_calc(field, otype)
@@ -2007,7 +2035,8 @@ class ModelSQL(ModelStorage):
                 tables.insert(0, table_join)
             return order_by, tables, tables_args
 
-        raise Exception('Error', 'Wrong field name (%s) in order!' % field)
+        raise Exception('Error', 'Wrong field name (%s) for %s in order!' %
+            (field, self._name))
 
     def _rebuild_tree(self, parent, parent_id, left):
         '''
diff --git a/trytond/model/modelstorage.py b/trytond/model/modelstorage.py
index 2237562..7bf882b 100644
--- a/trytond/model/modelstorage.py
+++ b/trytond/model/modelstorage.py
@@ -1,7 +1,6 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 
-from __future__ import with_statement
 import datetime
 import time
 from decimal import Decimal
@@ -12,6 +11,9 @@ try:
 except ImportError:
     import StringIO
 import csv
+from functools import reduce
+import traceback
+import sys
 from trytond.model import Model
 from trytond.model import fields
 from trytond.model.browse import BrowseRecordList, BrowseRecord, \
@@ -19,8 +21,10 @@ from trytond.model.browse import BrowseRecordList, BrowseRecord, \
 from trytond.model.browse import EvalEnvironment
 from trytond.tools import safe_eval, reduce_domain
 from trytond.pyson import PYSONEncoder, PYSONDecoder, PYSON
-from trytond.const import OPERATORS
+from trytond.const import OPERATORS, RECORD_CACHE_SIZE
 from trytond.transaction import Transaction
+from trytond.pool import Pool
+from trytond.cache import LRUDict
 from trytond.config import CONFIG
 
 
@@ -63,7 +67,7 @@ class ModelStorage(Model):
     def __clean_xxx2many_cache(self):
         # Clean cursor cache
         to_clean = [(model._name, field_name)
-                for model_name, model in self.pool.iterobject(type='model')
+                for model_name, model in Pool().iterobject(type='model')
                 for field_name, target_name in model._xxx2many_targets
                 if target_name == self._name]
         for cache in Transaction().cursor.cache.values():
@@ -82,8 +86,9 @@ class ModelStorage(Model):
                 and created values as value
         :return: the id of the created record
         '''
-        model_access_obj = self.pool.get('ir.model.access')
-        model_field_access_obj = self.pool.get('ir.model.field.access')
+        pool = Pool()
+        model_access_obj = pool.get('ir.model.access')
+        model_field_access_obj = pool.get('ir.model.field.access')
 
         model_access_obj.check(self._name, 'create')
         model_field_access_obj.check(self._name,
@@ -97,7 +102,7 @@ class ModelStorage(Model):
 
         :param id: the created id
         '''
-        trigger_obj = self.pool.get('ir.trigger')
+        trigger_obj = Pool().get('ir.trigger')
         trigger_ids = trigger_obj.get_triggers(self._name, 'create')
         if not trigger_ids:
             return
@@ -117,8 +122,9 @@ class ModelStorage(Model):
             the dictionnaries will have fields names as key
             and fields value as value. The list will not be in the same order.
         '''
-        model_access_obj = self.pool.get('ir.model.access')
-        model_field_access_obj = self.pool.get('ir.model.field.access')
+        pool = Pool()
+        model_access_obj = pool.get('ir.model.access')
+        model_field_access_obj = pool.get('ir.model.field.access')
 
         model_access_obj.check(self._name, 'read')
         model_field_access_obj.check(self._name,
@@ -136,8 +142,9 @@ class ModelStorage(Model):
                 and written values as value
         :return: True if succeed
         '''
-        model_access_obj = self.pool.get('ir.model.access')
-        model_field_access_obj = self.pool.get('ir.model.field.access')
+        pool = Pool()
+        model_access_obj = pool.get('ir.model.access')
+        model_field_access_obj = pool.get('ir.model.field.access')
 
         model_access_obj.check(self._name, 'write')
         model_field_access_obj.check(self._name,
@@ -166,7 +173,7 @@ class ModelStorage(Model):
         :param ids: a list of ids
         :return: a dictionary of the lists of eligible ids by triggers
         '''
-        trigger_obj = self.pool.get('ir.trigger')
+        trigger_obj = Pool().get('ir.trigger')
         trigger_ids = trigger_obj.get_triggers(self._name, 'write')
         if not trigger_ids:
             return {}
@@ -186,11 +193,11 @@ class ModelStorage(Model):
 
         :param eligibles: a dictionary of the lists of eligible ids by triggers
         '''
-        trigger_obj = self.pool.get('ir.trigger')
+        trigger_obj = Pool().get('ir.trigger')
         trigger_ids = eligibles.keys()
         if not trigger_ids:
             return
-        records = self.browse(chain(*eligibles.values()))
+        records = self.browse(list(chain(*eligibles.values())))
         id2record = dict((x.id, x) for x in records)
         triggers = trigger_obj.browse(trigger_ids)
         for trigger in triggers:
@@ -209,7 +216,7 @@ class ModelStorage(Model):
         :param ids: a list of ids or an id
         :return: True if succeed
         '''
-        model_access_obj = self.pool.get('ir.model.access')
+        model_access_obj = Pool().get('ir.model.access')
 
         model_access_obj.check(self._name, 'delete')
         if not self.check_xml_record(ids, None):
@@ -235,7 +242,7 @@ class ModelStorage(Model):
 
         :param ids: the deleted ids
         '''
-        trigger_obj = self.pool.get('ir.trigger')
+        trigger_obj = Pool().get('ir.trigger')
         trigger_ids = trigger_obj.get_triggers(self._name, 'delete')
         if not trigger_ids:
             return
@@ -258,7 +265,8 @@ class ModelStorage(Model):
             new value for the field as value
         :return: a list of new ids or the new id
         '''
-        lang_obj = self.pool.get('ir.lang')
+        pool = Pool()
+        lang_obj = pool.get('ir.lang')
         if default is None:
             default = {}
 
@@ -315,7 +323,7 @@ class ModelStorage(Model):
             data, data_o2m = convert_data(field_defs, data)
             new_ids[data_id] = self.create(data)
             for field_name in data_o2m:
-                relation_model = self.pool.get(
+                relation_model = pool.get(
                         field_defs[field_name]['relation'])
                 relation_field = field_defs[field_name]['relation_field']
                 if relation_field:
@@ -512,13 +520,14 @@ class ModelStorage(Model):
         :param ids: a list of ids or an id
         :return: a BrowseRecordList or a BrowseRecord
         '''
+        local_cache = LRUDict(RECORD_CACHE_SIZE)
         if isinstance(ids, (int, long)):
-            return BrowseRecord(ids, self)
-        local_cache = {}
-        return BrowseRecordList((BrowseRecord(x, self, local_cache=local_cache)
+            return BrowseRecord(ids, self, [ids], local_cache)
+        return BrowseRecordList((BrowseRecord(x, self, ids, local_cache)
             for x in ids))
 
     def __export_row(self, record, fields_names):
+        pool = Pool()
         lines = []
         data = ['' for x in range(len(fields_names))]
         done = []
@@ -532,7 +541,7 @@ class ModelStorage(Model):
                 if not isinstance(value, BrowseRecord):
                     break
                 field_name = fields_tree[i]
-                model_obj = self.pool.get(value._model_name)
+                model_obj = pool.get(value._model_name)
                 if field_name in model_obj._columns:
                     field = model_obj._columns[field_name]
                 elif field_name in model_obj._inherit_fields:
@@ -610,6 +619,7 @@ class ModelStorage(Model):
             - the exception if failed
             - the warning if failed
         '''
+        pool = Pool()
         def process_lines(self, datas, prefix, fields_def, position=0):
 
             def warn(msgname, *args):
@@ -632,7 +642,7 @@ class ModelStorage(Model):
             def get_many2one(relation, value):
                 if not value:
                     return False
-                relation_obj = self.pool.get(relation)
+                relation_obj = pool.get(relation)
                 res = relation_obj.search([
                     ('rec_name', '=', value),
                     ], limit=2)
@@ -650,7 +660,7 @@ class ModelStorage(Model):
                 if not value:
                     return False
                 res = []
-                relation_obj = self.pool.get(relation)
+                relation_obj = pool.get(relation)
                 for word in csv.reader(StringIO.StringIO(value), delimiter=',',
                         quoting=csv.QUOTE_NONE, escapechar='\\').next():
                     res2 = relation_obj.search([
@@ -677,7 +687,7 @@ class ModelStorage(Model):
                 except Exception:
                     warn('reference_syntax_error', value, '/'.join(field))
                     return False
-                relation_obj = self.pool.get(relation)
+                relation_obj = pool.get(relation)
                 res = relation_obj.search([
                     ('rec_name', '=', value),
                     ], limit=2)
@@ -782,7 +792,7 @@ class ModelStorage(Model):
             # Import one2many fields
             nbrmax = 1
             for field in todo:
-                newfd = self.pool.get(fields_def[field]['relation']
+                newfd = pool.get(fields_def[field]['relation']
                         ).fields_get()
                 res = process_lines(self, datas, prefix + [field], newfd,
                         position)
@@ -813,7 +823,7 @@ class ModelStorage(Model):
                     datas.pop(0)
             return (row, nbrmax, translate)
 
-        ir_model_data_obj = self.pool.get('ir.model.data')
+        ir_model_data_obj = pool.get('ir.model.data')
 
         # logger for collecting warnings for the client
         warnings = logging.Logger("import")
@@ -847,7 +857,9 @@ class ModelStorage(Model):
                 logger.error(exp)
                 # XXX should raise Exception
                 Transaction().cursor.rollback()
-                warning = '\n'.join(map(str, exp[1:]) + [warning])
+                tb_s = reduce(lambda x, y: x + y,
+                        traceback.format_exception(*sys.exc_info()))
+                warning = '%s\n%s' % (tb_s, warning)
                 return (-1, res, exp, warning)
             done += 1
         return (done, 0, 0, 0)
@@ -868,7 +880,7 @@ class ModelStorage(Model):
             written values as value
         :return: True or False
         """
-        model_data_obj = self.pool.get('ir.model.data')
+        model_data_obj = Pool().get('ir.model.data')
         # Allow root user to update/delete
         if Transaction().user == 0:
             return True
@@ -941,7 +953,8 @@ class ModelStorage(Model):
         return True
 
     def _get_error_args(self, field_name):
-        model_field_obj = self.pool.get('ir.model.field')
+        pool = Pool()
+        model_field_obj = pool.get('ir.model.field')
         error_args = (field_name, self._name)
         if model_field_obj:
             model_field_ids = model_field_obj.search([
@@ -956,6 +969,7 @@ class ModelStorage(Model):
 
 
     def _validate(self, ids):
+        pool = Pool()
         if (Transaction().user == 0
                 and Transaction().context.get('user')):
             with Transaction().set_user(Transaction().context.get('user')):
@@ -965,12 +979,12 @@ class ModelStorage(Model):
             if not getattr(self, field[0])(ids):
                 self.raise_user_error(field[1])
 
-        if not 'res.user' in self.pool.object_name_list() \
+        if not 'res.user' in pool.object_name_list() \
                 or Transaction().user == 0:
             ctx_pref = {
             }
         else:
-            user_obj = self.pool.get('res.user')
+            user_obj = pool.get('res.user')
             ctx_pref = user_obj.get_preferences(context_only=True)
 
         def is_pyson(test):
@@ -996,9 +1010,9 @@ class ModelStorage(Model):
                         ('many2one', 'many2many', 'one2many', 'one2one')
                     and field.domain):
                     if field._type in ('many2one', 'one2many'):
-                        relation_obj = self.pool.get(field.model_name)
+                        relation_obj = pool.get(field.model_name)
                     else:
-                        relation_obj = field.get_target(self.pool)
+                        relation_obj = field.get_target()
                     if is_pyson(field.domain):
                         pyson_domain = PYSONEncoder().encode(field.domain)
                         for record in records:
@@ -1117,6 +1131,7 @@ class ModelStorage(Model):
                                 field_name)
 
     def _clean_defaults(self, defaults):
+        pool = Pool()
         vals = {}
         for field in defaults.keys():
             fld_def = (field in self._columns) and self._columns[field] \
@@ -1127,7 +1142,7 @@ class ModelStorage(Model):
                 else:
                     vals[field] = defaults[field]
             elif fld_def._type in ('one2many',):
-                obj = self.pool.get(fld_def.model_name)
+                obj = pool.get(fld_def.model_name)
                 vals[field] = []
                 for defaults2 in defaults[field]:
                     vals2 = obj._clean_defaults(defaults2)
@@ -1146,8 +1161,9 @@ class ModelStorage(Model):
 
         :param ids: a list of id or an id
         '''
-        trigger_obj = self.pool.get('workflow.trigger')
-        instance_obj = self.pool.get('workflow.instance')
+        pool = Pool()
+        trigger_obj = pool.get('workflow.trigger')
+        instance_obj = pool.get('workflow.instance')
 
         if isinstance(ids, (int, long)):
             ids = [ids]
diff --git a/trytond/model/modelview.py b/trytond/model/modelview.py
index 55b4fcc..e280dab 100644
--- a/trytond/model/modelview.py
+++ b/trytond/model/modelview.py
@@ -12,6 +12,7 @@ from trytond.tools import safe_eval
 from trytond.pyson import PYSONEncoder, CONTEXT
 from trytond.transaction import Transaction
 from trytond.cache import Cache
+from trytond.pool import Pool
 
 def _find(tree, element):
     if element.tag == 'xpath':
@@ -94,27 +95,25 @@ class ModelView(Model):
     def __init__(self):
         super(ModelView, self).__init__()
         self._rpc['fields_view_get'] = False
+        self._rpc['view_toolbar_get'] = False
 
     @Cache('modelview.fields_view_get')
-    def fields_view_get(self, view_id=None, view_type='form', toolbar=False,
-            hexmd5=None):
+    def fields_view_get(self, view_id=None, view_type='form', hexmd5=None):
         '''
         Return a view definition.
 
         :param view_id: the id of the view, if None the first one will be used
         :param view_type: the type of the view if view_id is None
-        :param toolbar: if True the result will contain a toolbar key with
-            keyword action definitions for the view
         :param hexmd5: if filled, the function will return True if the result
             has the same md5
         :return: a dictionary with keys:
            - model: the model name
            - arch: the xml description of the view
            - fields: a dictionary with the definition of each field in the view
-           - toolbar: a dictionary with the keyword action definitions
            - md5: the check sum of the dictionary without this checksum
         '''
         result = {'model': self._name}
+        pool = Pool()
 
         test = True
         model = True
@@ -152,7 +151,7 @@ class ModelView(Model):
 
             # Check if view is not from an inherited model
             if sql_res[5] != self._name:
-                inherit_obj = self.pool.get(sql_res[5])
+                inherit_obj = pool.get(sql_res[5])
                 result['arch'] = inherit_obj.fields_view_get(
                         result['view_id'])['arch']
                 view_id = inherit_view_id
@@ -167,9 +166,8 @@ class ModelView(Model):
             raise_p = False
             while True:
                 try:
-                    sql_inherit.sort(lambda x, y: \
-                            cmp(self._modules_list.index(x[2] or None),
-                                self._modules_list.index(y[2] or None)))
+                    sql_inherit.sort(key=lambda x:
+                        self._modules_list.index(x[2] or None))
                     break
                 except ValueError:
                     if raise_p:
@@ -224,18 +222,6 @@ class ModelView(Model):
         result['arch'] = xarch
         result['fields'] = xfields
 
-        # Add toolbar
-        if toolbar:
-            action_obj = self.pool.get('ir.action.keyword')
-            prints = action_obj.get_keyword('form_print', (self._name, 0))
-            actions = action_obj.get_keyword('form_action', (self._name, 0))
-            relates = action_obj.get_keyword('form_relate', (self._name, 0))
-            result['toolbar'] = {
-                'print': prints,
-                'action': actions,
-                'relate': relates,
-            }
-
         # Compute md5
         if hashlib:
             result['md5'] = hashlib.md5(str(result)).hexdigest()
@@ -245,6 +231,25 @@ class ModelView(Model):
             return True
         return result
 
+    def view_toolbar_get(self):
+        """
+        Returns the model specific actions.
+
+        :return: a dictionary with keys:
+            - print: a list of available reports
+            - action: a list of available actions
+            - relate: a list of available relations
+        """
+        action_obj = Pool().get('ir.action.keyword')
+        prints = action_obj.get_keyword('form_print', (self._name, -1))
+        actions = action_obj.get_keyword('form_action', (self._name, -1))
+        relates = action_obj.get_keyword('form_relate', (self._name, -1))
+        return {
+            'print': prints,
+            'action': actions,
+            'relate': relates,
+        }
+
     def view_header_get(self, value, view_type='form'):
         """
         Overload this method if you need a window title.
@@ -257,7 +262,9 @@ class ModelView(Model):
         return value
 
     def _view_look_dom_arch(self, tree, type, field_children=None):
-        field_access_obj = self.pool.get('ir.model.field.access')
+        pool = Pool()
+        model_access_obj = pool.get('ir.model.access')
+        field_access_obj = pool.get('ir.model.field.access')
 
         fields_width = {}
         tree_root = tree.getroottree().getroot()
@@ -267,6 +274,34 @@ class ModelView(Model):
                 self._columns.keys(), 'read', access=True)
         fields_to_remove = list(x for x, y in fread_accesses.iteritems()
                 if not y)
+
+        def check_relation(model, field):
+            if field._type in ('one2many', 'many2one'):
+                if not model_access_obj.check(field.model_name, mode='read',
+                        raise_exception=False):
+                    return False
+            if field._type in ('many2many', 'one2one'):
+                if not model_access_obj.check(field.target, mode='read',
+                        raise_exception=False):
+                    return False
+                elif not model_access_obj.check(field.relation_name,
+                        mode='read', raise_exception=False):
+                    return False
+            if field._type == 'reference':
+                selection = field.selection
+                if isinstance(selection, basestring):
+                    selection = getattr(model, field.selection)()
+                for model_name, _ in selection:
+                    if not model_access_obj.check(model_name, mode='read',
+                            raise_exception=False):
+                        return False
+            return True
+
+        # Find relation field without read access
+        for name, field in self._columns.iteritems():
+            if not check_relation(self, field):
+                fields_to_remove.append(name)
+
         for name, field in self._columns.iteritems():
             for field_to_remove in fields_to_remove:
                 if field_to_remove in field.depends:
@@ -274,11 +309,17 @@ class ModelView(Model):
 
         # Find field inherited without read access
         for inherit_name in self._inherits:
-            inherit_obj = self.pool.get(inherit_name)
+            inherit_obj = pool.get(inherit_name)
             fread_accesses = field_access_obj.check(inherit_obj._name,
                     inherit_obj._columns.keys(), 'read', access=True)
             fields_to_remove += list(x for x, y in fread_accesses.iteritems()
                     if not y and x not in self._columns.keys())
+
+            # Find relation field without read access
+            for name, field in inherit_obj._columns.iteritems():
+                if not check_relation(inherit_obj, field):
+                    fields_to_remove.append(name)
+
             for name, field in inherit_obj._columns.iteritems():
                 for field_to_remove in fields_to_remove:
                     if field_to_remove in field.depends:
@@ -297,7 +338,7 @@ class ModelView(Model):
                     parent.remove(element)
 
         if type == 'tree':
-            viewtreewidth_obj = self.pool.get('ir.ui.view_tree_width')
+            viewtreewidth_obj = pool.get('ir.ui.view_tree_width')
             viewtreewidth_ids = viewtreewidth_obj.search([
                 ('model', '=', self._name),
                 ('user', '=', Transaction().user),
@@ -331,7 +372,7 @@ class ModelView(Model):
                 fields_def.setdefault(depend, {'name': depend})
 
         if ('active' in self._columns) or ('active' in self._inherit_fields):
-            fields_def.setdefault('active', {'name': 'active', 'select': "2"})
+            fields_def.setdefault('active', {'name': 'active'})
 
         arch = etree.tostring(tree, encoding='utf-8', pretty_print=False)
         fields2 = self.fields_get(fields_def.keys())
@@ -341,7 +382,8 @@ class ModelView(Model):
         return arch, fields2
 
     def __view_look_dom(self, element, type, fields_width=None):
-        translation_obj = self.pool.get('ir.translation')
+        pool = Pool()
+        translation_obj = pool.get('ir.translation')
 
         if fields_width is None:
             fields_width = {}
@@ -362,7 +404,7 @@ class ModelView(Model):
                         if hasattr(field, 'model_name'):
                             relation = field.model_name
                         else:
-                            relation = field.get_target(self.pool)._name
+                            relation = field.get_target()._name
                     except Exception:
                         relation = False
                     if relation and element.tag == 'field':
@@ -392,7 +434,7 @@ class ModelView(Model):
                                 if Transaction().language != 'en_US':
                                     _translate_field(field2)
 
-                                relation_obj = self.pool.get(relation)
+                                relation_obj = pool.get(relation)
                                 if hasattr(relation_obj, '_view_look_dom_arch'):
                                     xarch, xfields = \
                                             relation_obj._view_look_dom_arch(
diff --git a/trytond/model/modelworkflow.py b/trytond/model/modelworkflow.py
index bcd2d51..fb2f2fd 100644
--- a/trytond/model/modelworkflow.py
+++ b/trytond/model/modelworkflow.py
@@ -1,8 +1,8 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 from trytond.model import ModelStorage
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 
 
 class ModelWorkflow(ModelStorage):
@@ -27,7 +27,7 @@ class ModelWorkflow(ModelStorage):
         return res
 
     def delete(self, ids):
-        instance_obj = self.pool.get('workflow.instance')
+        instance_obj = Pool().get('workflow.instance')
 
         if isinstance(ids, (int, long)):
             ids = [ids]
@@ -49,8 +49,9 @@ class ModelWorkflow(ModelStorage):
 
         :param ids: a list of id or an id
         '''
-        workflow_obj = self.pool.get('workflow')
-        instance_obj = self.pool.get('workflow.instance')
+        pool = Pool()
+        workflow_obj = pool.get('workflow')
+        instance_obj = pool.get('workflow.instance')
 
         if isinstance(ids, (int, long)):
             ids = [ids]
@@ -75,7 +76,7 @@ class ModelWorkflow(ModelStorage):
 
         :param ids: a list of id or an id
         '''
-        instance_obj = self.pool.get('workflow.instance')
+        instance_obj = Pool().get('workflow.instance')
 
         if isinstance(ids, (int, long)):
             ids = [ids]
@@ -96,7 +97,7 @@ class ModelWorkflow(ModelStorage):
 
         :param ids: a list of id or an id
         '''
-        instance_obj = self.pool.get('workflow.instance')
+        instance_obj = Pool().get('workflow.instance')
 
         if isinstance(ids, (int, long)):
             ids = [ids]
@@ -119,7 +120,7 @@ class ModelWorkflow(ModelStorage):
         '''
         if self._name == 'workflow.instance':
             return
-        instance_obj = self.pool.get('workflow.instance')
+        instance_obj = Pool().get('workflow.instance')
 
         if isinstance(ids, (int, long)):
             ids = [ids]
diff --git a/trytond/modules/__init__.py b/trytond/modules/__init__.py
index dfd41fc..a00a63b 100644
--- a/trytond/modules/__init__.py
+++ b/trytond/modules/__init__.py
@@ -1,13 +1,13 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import os, sys, imp
 import itertools
-import zipfile
-import zipimport
 import traceback
 import logging
 import contextlib
+from functools import reduce
+import imp
+import operator
 from trytond.backend import Database
 import trytond.tools as tools
 from trytond.config import CONFIG
@@ -93,7 +93,7 @@ class Node(Singleton):
         for attr in ('init', 'update'):
             if hasattr(self, attr):
                 setattr(node, attr, True)
-        self.childs.sort(lambda x, y: cmp(x.name, y.name))
+        self.childs.sort(key=operator.attrgetter('name'))
 
     def all_childs(self):
         res = []
@@ -152,7 +152,7 @@ def create_graph(module_list, force=None):
                 # directory
                 tryton_file = OPJ(ep.dist.location, '__tryton__.py')
                 mod_path = os.path.dirname(ep.dist.location)
-        if os.path.isfile(tryton_file) or zipfile.is_zipfile(mod_path+'.zip'):
+        if os.path.isfile(tryton_file):
             with tools.file_open(tryton_file, subdir='') as fp:
                 info = tools.safe_eval(fp.read())
             packages.append((module, info.get('depends', []), info))
@@ -256,13 +256,14 @@ def load_module_graph(graph, pool, lang=None):
 
             for filename in package.datas.get('translation', []):
                 filename = filename.replace('/', os.sep)
-                lang2 = os.path.splitext(filename)[0]
+                lang2 = os.path.splitext(os.path.basename(filename))[0]
                 if lang2 not in lang:
                     continue
                 logger.info('%s:loading %s' % (module, filename))
                 with tools.file_open(OPJ(module, filename)) as trans_file:
-                    translation_obj = pool.get('ir.translation')
-                    translation_obj.translation_import(lang2, module, trans_file)
+                    po_path = trans_file.name
+                translation_obj = pool.get('ir.translation')
+                translation_obj.translation_import(lang2, module, po_path)
 
             cursor.execute("UPDATE ir_module_module SET state = 'installed' " \
                     "WHERE name = %s", (package.name,))
@@ -307,8 +308,6 @@ def get_module_list():
                 continue
             if os.path.isdir(OPJ(MODULES_PATH, file)):
                 module_list.add(file)
-            elif file[-4:] == '.zip':
-                module_list.add(file[:-4])
     update_egg_modules()
     module_list.update(EGG_MODULES.keys())
     module_list.add('ir')
@@ -338,7 +337,7 @@ def register_classes(reload_p=False):
                 if i.startswith(module) \
                         and i != module:
                     del sys.modules[i]
-            reload(sys.modules[module])
+            imp.reload(sys.modules[module])
 
     logger = logging.getLogger('modules')
 
@@ -356,14 +355,10 @@ def register_classes(reload_p=False):
                         and i != 'trytond.modules.' + module \
                         and getattr(sys.modules[i], '_TRYTON_RELOAD', True):
                     del sys.modules[i]
-            reload(sys.modules['trytond.modules.' + module])
+            imp.reload(sys.modules['trytond.modules.' + module])
             continue
 
-        if os.path.isfile(OPJ(MODULES_PATH, module + '.zip')):
-            mod_path = OPJ(MODULES_PATH, module + '.zip')
-            zimp = zipimport.zipimporter(mod_path)
-            zimp.load_module('trytond.modules.' + module)
-        elif os.path.isdir(OPJ(MODULES_PATH, module)):
+        if os.path.isdir(OPJ(MODULES_PATH, module)):
             mod_file, pathname, description = imp.find_module(module,
                     [MODULES_PATH])
             try:
diff --git a/trytond/pool.py b/trytond/pool.py
index 867b038..ab07dca 100644
--- a/trytond/pool.py
+++ b/trytond/pool.py
@@ -1,8 +1,10 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from trytond.modules import load_modules, register_classes
 from threading import RLock
 import logging
+from trytond.modules import load_modules, register_classes
+from trytond.transaction import Transaction
+import __builtin__
 
 
 class Pool(object):
@@ -15,32 +17,27 @@ class Pool(object):
     _lock = RLock()
     _locks = {}
     _pool = {}
-    _pools = {}
     test = False
-
-    def __new__(cls, database_name):
-        cls._lock.acquire()
-        lock = cls._locks.setdefault(database_name, RLock())
-        cls._lock.release()
-        lock.acquire()
-        if database_name in cls._pools:
-            res = cls._pools[database_name]
-            lock.release()
-            return res
-        lock.release()
-        return object.__new__(cls)
-
-    def __init__(self, database_name):
+    _instances = {}
+
+    def __new__(cls, database_name=None):
+        if database_name is None:
+            database_name = Transaction().cursor.database_name
+        result = cls._instances.get(database_name)
+        if result:
+            return result
+        lock = cls._locks.get(database_name)
+        if not lock:
+            with cls._lock:
+                lock = cls._locks.setdefault(database_name, RLock())
+        with lock:
+            return cls._instances.setdefault(database_name,
+                super(Pool, cls).__new__(cls))
+
+    def __init__(self, database_name=None):
+        if database_name is None:
+            database_name = Transaction().cursor.database_name
         self.database_name = database_name
-        self._lock.acquire()
-        lock = self._locks.setdefault(database_name, RLock())
-        self._lock.release()
-        lock.acquire()
-        self._pool.setdefault(database_name, {})
-        for type in self.classes.keys():
-            self._pool[database_name].setdefault(type, {})
-        self._pools.setdefault(database_name, self)
-        lock.release()
 
     @staticmethod
     def register(klass, type='model'):
@@ -57,53 +54,50 @@ class Pool(object):
         if module:
             Pool.classes[type].setdefault(module, []).append(klass)
 
-    @staticmethod
-    def start():
+    @classmethod
+    def start(cls):
         '''
         Start/restart the Pool
         '''
-        Pool._lock.acquire()
-        try:
+        with cls._lock:
             reload_p = False
             prev_classes = {}
-            for type in Pool.classes:
-                if Pool.classes[type]:
+            for type in cls.classes:
+                if cls.classes.get(type):
                     reload_p = True
-                prev_classes[type] = Pool.classes[type]
-                Pool.classes[type] = {}
+                prev_classes[type] = cls.classes.get(type)
+                cls.classes[type] = {}
             try:
                 register_classes(reload_p=reload_p)
             except Exception:
                 if not reload_p:
                     raise
                 for type in prev_classes:
-                    Pool.classes[type] = prev_classes[type]
-            for db_name in Pool.database_list():
-                Pool(db_name).init()
-        finally:
-            Pool._lock.release()
+                    cls.classes[type] = prev_classes[type]
+            for db_name in cls.database_list():
+                cls(db_name).init()
 
-    @staticmethod
-    def stop(database_name):
+    @classmethod
+    def stop(cls, database_name):
         '''
         Stop the Pool
         '''
-        Pool._lock.acquire()
-        lock = Pool._locks.setdefault(database_name, RLock())
-        Pool._lock.release()
-        lock.acquire()
-        if database_name in Pool._pool:
-            del Pool._pool[database_name]
-        if database_name in Pool._pools:
-            del Pool._pools[database_name]
-        lock.release()
+        with cls._lock:
+            if database_name in cls._instances:
+                del cls._instances[database_name]
+        lock = cls._locks.get(database_name)
+        if not lock:
+            return
+        with lock:
+            if database_name in cls._pool:
+                del cls._pool[database_name]
 
-    @staticmethod
-    def database_list():
+    @classmethod
+    def database_list(cls):
         '''
         :return: database list
         '''
-        return Pool._pool.keys()
+        return cls._pool.keys()
 
     def init(self, update=False, lang=None):
         '''
@@ -115,11 +109,8 @@ class Pool(object):
         '''
         logger = logging.getLogger('pool')
         logger.info('init pool for "%s"' % self.database_name)
-        self._lock.acquire()
-        lock = self._locks.setdefault(self.database_name, RLock())
-        self._lock.release()
-        lock.acquire()
-        try:
+        with self._locks[self.database_name]:
+            self._pool.setdefault(self.database_name, {})
             #Clean the _pool before loading modules
             for type in self.classes.keys():
                 self._pool[self.database_name][type] = {}
@@ -127,8 +118,6 @@ class Pool(object):
                     lang=lang)
             if restart:
                 self.init()
-        finally:
-            lock.release()
 
     def get(self, name, type='model'):
         '''
@@ -142,7 +131,19 @@ class Pool(object):
             for type in self.classes.keys():
                 if name in self._pool[self.database_name][type]:
                     break
-        return self._pool[self.database_name][type][name]
+        try:
+            return self._pool[self.database_name][type][name]
+        except KeyError:
+            if type == 'report':
+                from trytond.report import Report
+                # Keyword argument 'type' conflicts with builtin function
+                cls = __builtin__.type(str(name), (Report,), {})
+                obj = object.__new__(cls)
+                obj._name = name
+                self.add(obj, type)
+                obj.__init__()
+                return obj
+            raise
 
     def add(self, obj, type='model'):
         '''
@@ -151,8 +152,8 @@ class Pool(object):
         :param obj: the object
         :param type: the type
         '''
-        self._pool[self.database_name][type][obj._name] = obj
-        obj.pool = self
+        with self._locks[self.database_name]:
+            self._pool[self.database_name][type][obj._name] = obj
 
     def object_name_list(self, type='model'):
         '''
diff --git a/trytond/protocols/common.py b/trytond/protocols/common.py
index e6d0a5c..1b972b2 100644
--- a/trytond/protocols/common.py
+++ b/trytond/protocols/common.py
@@ -4,6 +4,13 @@ import errno
 import os
 import socket
 import threading
+import select
+import sys
+import gzip
+try:
+    import cStringIO as StringIO
+except ImportError:
+    import StringIO
 
 def endsocket(sock):
     if os.name != 'nt':
@@ -17,21 +24,104 @@ class daemon(threading.Thread):
     def __init__(self, interface, port, secure, name=None):
         threading.Thread.__init__(self, name=name)
         self.secure = secure
-        self.running = False
         self.ipv6 = False
-        if socket.has_ipv6:
-            try:
-                socket.getaddrinfo(interface or None, port, socket.AF_INET6)
+        for family, _, _, _, _ in socket.getaddrinfo(interface or None, port,
+                socket.AF_UNSPEC, socket.SOCK_STREAM):
+            if family == socket.AF_INET6:
                 self.ipv6 = True
-            except Exception:
-                pass
+            break
 
     def stop(self):
-        self.running = False
+        self.server.shutdown()
+        return
 
     def run(self):
-        self.running = True
-        while self.running:
-            self.server.handle_request()
-        endsocket(self.server.socket)
+        self.server.serve_forever()
         return True
+
+class GZipRequestHandlerMixin:
+
+    if sys.version_info[:2] <= (2, 6):
+        # Copy from SimpleXMLRPCServer.py with gzip encoding added
+        def do_POST(self):
+            """Handles the HTTP POST request.
+
+            Attempts to interpret all HTTP POST requests as XML-RPC calls,
+            which are forwarded to the server's _dispatch method for handling.
+            """
+
+            # Check that the path is legal
+            if not self.is_rpc_path_valid():
+                self.report_404()
+                return
+
+            try:
+                # Get arguments by reading body of request.
+                # We read this in chunks to avoid straining
+                # socket.read(); around the 10 or 15Mb mark, some platforms
+                # begin to have problems (bug #792570).
+                max_chunk_size = 10*1024*1024
+                size_remaining = int(self.headers["content-length"])
+                L = []
+                while size_remaining:
+                    chunk_size = min(size_remaining, max_chunk_size)
+                    L.append(self.rfile.read(chunk_size))
+                    size_remaining -= len(L[-1])
+                data = ''.join(L)
+
+                data = self.decode_request_content(data)
+                if data is None:
+                    return #response has been sent
+
+                # In previous versions of SimpleXMLRPCServer, _dispatch
+                # could be overridden in this class, instead of in
+                # SimpleXMLRPCDispatcher. To maintain backwards compatibility,
+                # check to see if a subclass implements _dispatch and dispatch
+                # using that method if present.
+                response = self.server._marshaled_dispatch(
+                        data, getattr(self, '_dispatch', None)
+                    )
+            except Exception: # This should only happen if the module is buggy
+                # internal error, report as HTTP server error
+                self.send_response(500)
+                self.end_headers()
+            else:
+                # got a valid XML RPC response
+                self.send_response(200)
+                self.send_header("Content-type", "text/xml")
+
+                # Handle gzip encoding
+                if 'gzip' in self.headers.get('Accept-Encoding', '').split(',') \
+                        and len(response) > self.encode_threshold:
+                    buffer = StringIO.StringIO()
+                    output = gzip.GzipFile(mode='wb', fileobj=buffer)
+                    output.write(response)
+                    output.close()
+                    buffer.seek(0)
+                    response = buffer.getvalue()
+                    self.send_header('Content-Encoding', 'gzip')
+
+                self.send_header("Content-length", str(len(response)))
+                self.end_headers()
+                self.wfile.write(response)
+
+        def decode_request_content(self, data):
+            #support gzip encoding of request
+            encoding = self.headers.get("content-encoding", "identity").lower()
+            if encoding == "identity":
+                return data
+            if encoding == "gzip":
+                f = StringIO.StringIO(data)
+                gzf = gzip.GzipFile(mode="rb", fileobj=f)
+                try:
+                    decoded = gzf.read()
+                except IOError:
+                    self.send_response(400, "error decoding gzip content")
+                f.close()
+                gzf.close()
+                return decoded
+            else:
+                self.send_response(501, "encoding %r not supported" % encoding)
+            self.send_header("Content-length", "0")
+            self.end_headers()
+
diff --git a/trytond/protocols/datatype.py b/trytond/protocols/datatype.py
index ce2e9a8..85d6848 100644
--- a/trytond/protocols/datatype.py
+++ b/trytond/protocols/datatype.py
@@ -1,7 +1,17 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
+import decimal
 from decimal import Decimal
 
+_convert_other = decimal._convert_other
+
+def _convert_Float(other, *args, **kwargs):
+    if isinstance(other, Float):
+        return other.decimal
+    return _convert_other(other, *args, **kwargs)
+decimal._convert_other = _convert_Float
+
+
 class Float(float):
     def __init__(self, value):
         super(Float, self).__init__()
@@ -55,6 +65,9 @@ class Float(float):
             return self.decimal.__eq__(other)
         return super(Float, self).__eq__(other)
 
+    def __hash__(self):
+        return super(Float, self).__hash__()
+
     def __floordiv__(self, other, context=None):
         if isinstance(other, Decimal):
             return self.decimal.__floordiv__(other, context=context)
diff --git a/trytond/protocols/dispatcher.py b/trytond/protocols/dispatcher.py
index 3767b27..7ac34a0 100644
--- a/trytond/protocols/dispatcher.py
+++ b/trytond/protocols/dispatcher.py
@@ -1,7 +1,6 @@
 # -*- coding: utf-8 -*-
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import traceback
 import logging
 import time
@@ -11,16 +10,17 @@ try:
 except ImportError:
     hashlib = None
     import sha
-import base64
 import pydoc
 from trytond.pool import Pool
 from trytond import security
-from trytond.backend import Database
+from trytond.backend import Database, DatabaseOperationalError
 from trytond.config import CONFIG
 from trytond.version import VERSION
 from trytond.monitor import monitor
 from trytond.transaction import Transaction
 from trytond.cache import Cache
+from trytond.exceptions import UserError, UserWarning, NotLogged, \
+    ConcurrencyException
 
 def dispatch(host, port, protocol, database_name, user, session, object_type,
         object_name, method, *args, **kargs):
@@ -123,49 +123,60 @@ def dispatch(host, port, protocol, database_name, user, session, object_type,
 
     user = security.check(database_name, user, session)
 
-    with Transaction().start(database_name, user) as transaction:
-        try:
-            Cache.clean(database_name)
-            database_list = Pool.database_list()
-            pool = Pool(database_name)
-            if not database_name in database_list:
-                pool.init()
-            obj = pool.get(object_name, type=object_type)
-            if method not in obj._rpc:
-                raise Exception('UserError', 'Calling method %s on ' \
-                        '%s %s is not allowed!' % \
-                        (method, object_type, object_name))
+    Cache.clean(database_name)
+    database_list = Pool.database_list()
+    pool = Pool(database_name)
+    if not database_name in database_list:
+        with Transaction().start(database_name, user,
+                readonly=True) as transaction:
+            pool.init()
+    obj = pool.get(object_name, type=object_type)
 
-            if 'context' in kargs:
-                context = kargs.pop('context')
-            else:
-                args = list(args)
-                context = args.pop()
-            if '_timestamp' in context:
-                transaction.timestamp = context['_timestamp']
-                del context['_timestamp']
-            transaction.context = context
-            res = getattr(obj, method)(*args, **kargs)
-            if obj._rpc[method]:
-                transaction.cursor.commit()
-        except Exception, exception:
-            if CONFIG['verbose'] or (exception.args \
-                    and str(exception.args[0]) not in \
-                    ('NotLogged', 'ConcurrencyException', 'UserError',
-                        'UserWarning')):
-                tb_s = reduce(lambda x, y: x + y,
-                        traceback.format_exception(*sys.exc_info()))
-                logger = logging.getLogger('dispatcher')
-                logger.error('Exception calling method %s on ' \
-                        '%s %s from %s@%s:%d/%s:\n' % \
-                        (method, object_type, object_name, user, host, port,
-                            database_name) + tb_s.decode('utf-8', 'ignore'))
-            transaction.cursor.rollback()
-            raise
-    if not (object_name == 'res.request' and method == 'request_get'):
-        user.reset_timestamp()
-    Cache.resets(database_name)
-    return res
+    if method not in obj._rpc:
+        raise UserError('Calling method %s on %s %s is not allowed!'
+            % (method, object_type, object_name))
+
+    readonly = not obj._rpc[method]
+
+    for count in range(int(CONFIG['retry']), -1, -1):
+        with Transaction().start(database_name, user,
+                readonly=readonly) as transaction:
+            try:
+
+                args_without_context = list(args)
+                if 'context' in kargs:
+                    context = kargs.pop('context')
+                else:
+                    context = args_without_context.pop()
+                if '_timestamp' in context:
+                    transaction.timestamp = context['_timestamp']
+                    del context['_timestamp']
+                transaction.context = context
+                res = getattr(obj, method)(*args_without_context, **kargs)
+                if not readonly:
+                    transaction.cursor.commit()
+            except DatabaseOperationalError, exception:
+                transaction.cursor.rollback()
+                if count and not readonly:
+                    continue
+                raise
+            except Exception, exception:
+                if CONFIG['verbose'] and not isinstance(exception, (
+                            NotLogged, ConcurrencyException, UserError,
+                            UserWarning)):
+                    tb_s = reduce(lambda x, y: x + y,
+                            traceback.format_exception(*sys.exc_info()))
+                    logger = logging.getLogger('dispatcher')
+                    logger.error('Exception calling method %s on ' \
+                            '%s %s from %s@%s:%d/%s:\n' % \
+                            (method, object_type, object_name, user, host, port,
+                                database_name) + tb_s.decode('utf-8', 'ignore'))
+                transaction.cursor.rollback()
+                raise
+        if not (object_name == 'res.request' and method == 'request_get'):
+            user.reset_timestamp()
+        Cache.resets(database_name)
+        return res
 
 def create(database_name, password, lang, admin_password):
     '''
@@ -267,7 +278,7 @@ def dump(database_name, password):
 
     data = Database.dump(database_name)
     logger.info('DUMP DB: %s' % (database_name))
-    return base64.encodestring(data)
+    return buffer(data)
 
 def restore(database_name, password, data, update=False):
     logger = logging.getLogger('database')
@@ -279,7 +290,6 @@ def restore(database_name, password, data, update=False):
         raise Exception("Database already exists!")
     except Exception:
         pass
-    data = base64.decodestring(data)
     Database.restore(database_name, data)
     logger.info('RESTORE DB: %s' % (database_name))
     if update:
diff --git a/trytond/protocols/jsonrpc.py b/trytond/protocols/jsonrpc.py
index 0f0b0f7..6151336 100644
--- a/trytond/protocols/jsonrpc.py
+++ b/trytond/protocols/jsonrpc.py
@@ -4,7 +4,9 @@ from trytond.protocols.sslsocket import SSLSocket
 from trytond.protocols.dispatcher import dispatch
 from trytond.config import CONFIG
 from trytond.protocols.datatype import Float
-from trytond.protocols.common import daemon
+from trytond.protocols.common import daemon, GZipRequestHandlerMixin
+from trytond.exceptions import UserError, UserWarning, NotLogged, \
+    ConcurrencyException
 import SimpleXMLRPCServer
 import SimpleHTTPServer
 import SocketServer
@@ -12,8 +14,6 @@ import traceback
 import socket
 import sys
 import os
-import gzip
-import StringIO
 try:
     import fcntl
 except ImportError:
@@ -22,10 +22,11 @@ import posixpath
 import urllib
 import datetime
 from decimal import Decimal
-if sys.version_info < (2, 6):
+try:
     import simplejson as json
-else:
+except ImportError:
     import json
+import base64
 
 def object_hook(dct):
     if '__class__' in dct:
@@ -34,10 +35,19 @@ def object_hook(dct):
                     dct['hour'], dct['minute'], dct['second'])
         elif dct['__class__'] == 'date':
             return datetime.date(dct['year'], dct['month'], dct['day'])
+        elif dct['__class__'] == 'buffer':
+            return buffer(base64.decodestring(dct['base64']))
+        elif dct['__class__'] == 'Decimal':
+            return Decimal(dct['decimal'])
     return dct
 
 class JSONEncoder(json.JSONEncoder):
 
+    def __init__(self, *args, **kwargs):
+        super(JSONEncoder, self).__init__(*args, **kwargs)
+        # Force to use our custom decimal with simplejson
+        self.use_decimal = False
+
     def default(self, obj):
         if isinstance(obj, datetime.date):
             if isinstance(obj, datetime.datetime):
@@ -54,8 +64,14 @@ class JSONEncoder(json.JSONEncoder):
                     'month': obj.month,
                     'day': obj.day,
                     }
+        elif isinstance(obj, buffer):
+            return {'__class__': 'buffer',
+                'base64': base64.encodestring(obj),
+                }
         elif isinstance(obj, Decimal):
-            return float(obj)
+            return {'__class__': 'Decimal',
+                'decimal': str(obj),
+                }
         return super(JSONEncoder, self).default(obj)
 
 
@@ -67,7 +83,7 @@ class SimpleJSONRPCDispatcher(SimpleXMLRPCServer.SimpleXMLRPCDispatcher):
     reason to instantiate this class directly.
     """
 
-    def _marshaled_dispatch(self, data, dispatch_method=None):
+    def _marshaled_dispatch(self, data, dispatch_method=None, path=None):
         """Dispatches an JSON-RPC method from marshalled (JSON) data.
 
         JSON-RPC methods are dispatched from the marshalled (JSON) data
@@ -78,7 +94,7 @@ class SimpleJSONRPCDispatcher(SimpleXMLRPCServer.SimpleXMLRPCDispatcher):
         existing method through subclassing is the prefered means
         of changing method dispatch behavior.
         """
-        rawreq = json.loads(data, object_hook=object_hook, parse_float=Float)
+        rawreq = json.loads(data, object_hook=object_hook)
 
         req_id = rawreq.get('id', 0)
         method = rawreq['method']
@@ -92,6 +108,9 @@ class SimpleJSONRPCDispatcher(SimpleXMLRPCServer.SimpleXMLRPCDispatcher):
                 response['result'] = dispatch_method(method, params)
             else:
                 response['result'] = self._dispatch(method, params)
+        except (UserError, UserWarning, NotLogged,
+                ConcurrencyException), exception:
+            response['error'] = exception.args
         except Exception:
             tb_s = ''
             for line in traceback.format_exception(*sys.exc_info()):
@@ -107,7 +126,7 @@ class SimpleJSONRPCDispatcher(SimpleXMLRPCServer.SimpleXMLRPCDispatcher):
                 traceb = sys.exc_info()[2]
                 pdb.post_mortem(traceb)
             # report exception back to server
-            response['error'] = "%s:\n%s" % (sys.exc_value, tb_s)
+            response['error'] = (str(sys.exc_value), tb_s)
 
         return json.dumps(response, cls=JSONEncoder)
 
@@ -129,7 +148,8 @@ class GenericJSONRPCRequestHandler:
         return res
 
 
-class SimpleJSONRPCRequestHandler(GenericJSONRPCRequestHandler,
+class SimpleJSONRPCRequestHandler(GZipRequestHandlerMixin,
+        GenericJSONRPCRequestHandler,
         SimpleXMLRPCServer.SimpleXMLRPCRequestHandler,
         SimpleHTTPServer.SimpleHTTPRequestHandler):
     """Simple JSON-RPC request handler class.
@@ -137,71 +157,15 @@ class SimpleJSONRPCRequestHandler(GenericJSONRPCRequestHandler,
     Handles all HTTP POST requests and attempts to decode them as
     JSON-RPC requests.
     """
+    protocol_version = "HTTP/1.1"
     rpc_paths = None
     encode_threshold = 1400 # common MTU
 
-    # Copy from SimpleXMLRPCServer.py with gzip encoding added
-    def do_POST(self):
-        """Handles the HTTP POST request.
-
-        Attempts to interpret all HTTP POST requests as JSON-RPC calls,
-        which are forwarded to the server's _dispatch method for handling.
-        """
-
-        # Check that the path is legal
-        if not self.is_rpc_path_valid():
-            self.report_404()
-            return
-
-        try:
-            # Get arguments by reading body of request.
-            # We read this in chunks to avoid straining
-            # socket.read(); around the 10 or 15Mb mark, some platforms
-            # begin to have problems (bug #792570).
-            max_chunk_size = 10*1024*1024
-            size_remaining = int(self.headers["content-length"])
-            L = []
-            while size_remaining:
-                chunk_size = min(size_remaining, max_chunk_size)
-                L.append(self.rfile.read(chunk_size))
-                size_remaining -= len(L[-1])
-            data = ''.join(L)
-
-            # In previous versions of SimpleXMLRPCServer, _dispatch
-            # could be overridden in this class, instead of in
-            # SimpleXMLRPCDispatcher. To maintain backwards compatibility,
-            # check to see if a subclass implements _dispatch and dispatch
-            # using that method if present.
-            response = self.server._marshaled_dispatch(
-                    data, getattr(self, '_dispatch', None)
-                )
-        except Exception: # This should only happen if the module is buggy
-            # internal error, report as HTTP server error
-            self.send_response(500)
-            self.end_headers()
-        else:
-            # got a valid JSON RPC response
-            self.send_response(200)
-            self.send_header("Content-type", "application/json-rpc")
-
-            # Handle gzip encoding
-            if 'gzip' in self.headers.get('Accept-Encoding', '').split(',') \
-                    and len(response) > self.encode_threshold:
-                buffer = StringIO.StringIO()
-                output = gzip.GzipFile(mode='wb', fileobj=buffer)
-                output.write(response)
-                output.close()
-                buffer.seek(0)
-                response = buffer.getvalue()
-                self.send_header('Content-Encoding', 'gzip')
-
-            self.send_header("Content-length", str(len(response)))
-            self.end_headers()
-            self.wfile.write(response)
-
-            # shut down the connection
-            self.wfile.flush()
-            self.connection.shutdown(1)
+    def send_header(self, keyword, value):
+        if keyword == 'Content-type' and value == 'text/xml':
+            value = 'application/json-rpc'
+        SimpleXMLRPCServer.SimpleXMLRPCRequestHandler.send_header(self,
+            keyword, value)
 
     def translate_path(self, path):
         """Translate a /-separated PATH to the local filename syntax.
@@ -277,10 +241,9 @@ class SimpleJSONRPCServer(SocketServer.TCPServer,
 class SimpleThreadedJSONRPCServer(SocketServer.ThreadingMixIn,
         SimpleJSONRPCServer):
     timeout = 1
+    daemon_threads = True
 
     def server_bind(self):
-        # Python < 2.6 doesn't handle self.timeout
-        self.socket.settimeout(1)
         self.socket.setsockopt(socket.SOL_SOCKET,
                 socket.SO_REUSEADDR, 1)
         SimpleJSONRPCServer.server_bind(self)
@@ -309,7 +272,6 @@ class JSONRPCDaemon(daemon):
 
     def __init__(self, interface, port, secure=False):
         daemon.__init__(self, interface, port, secure, name='JSONRPCDaemon')
-        
         if self.secure:
             handler_class = SecureJSONRPCRequestHandler
             server_class = SecureThreadedJSONRPCServer
diff --git a/trytond/protocols/netrpc.py b/trytond/protocols/netrpc.py
deleted file mode 100644
index 238fb20..0000000
--- a/trytond/protocols/netrpc.py
+++ /dev/null
@@ -1,139 +0,0 @@
-#This file is part of Tryton.  The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
-from trytond.pysocket import PySocket
-from trytond.protocols.sslsocket import SSLSocket
-from trytond.config import CONFIG
-from trytond.protocols.dispatcher import dispatch
-from trytond.protocols.common import endsocket
-import threading
-import select
-import traceback
-import socket
-import sys
-
-
-class NetRPCClientThread(threading.Thread):
-    def __init__(self, sock, threads, secure):
-        threading.Thread.__init__(self, name='NetRPCClientThread')
-        self.sock = sock
-        self.threads = threads
-        self.running = False
-        self.secure = secure
-
-    def run(self):
-        self.running = True
-        try:
-            pysocket = PySocket(self.sock)
-        except Exception:
-            self.sock.close()
-            self.threads.remove(self)
-            return False
-        timeout = 0
-        while self.running:
-            try:
-                rlist, _, _ = select.select([self.sock], [], [], 1)
-            except select.error:
-                continue
-            if not rlist:
-                timeout += 1
-                if timeout > 600:
-                    break
-                continue
-            timeout = 0
-            try:
-                msg = pysocket.receive()
-            except Exception:
-                pysocket.disconnect()
-                self.threads.remove(self)
-                return False
-            host, port = self.sock.getpeername()[:2]
-            try:
-                res = dispatch(host, port, 'NetRPC', *msg)
-                pysocket.send(res)
-            except Exception, exception:
-                tb_s = ''
-                for line in traceback.format_exception(*sys.exc_info()):
-                    try:
-                        line = line.encode('utf-8', 'ignore')
-                    except Exception:
-                        continue
-                    tb_s += line
-                for path in sys.path:
-                    tb_s = tb_s.replace(path, '')
-                if CONFIG['debug_mode']:
-                    import pdb
-                    tback = sys.exc_info()[2]
-                    pdb.post_mortem(tback)
-                try:
-                    pysocket.send(exception.args, exception=True,
-                            traceback=tb_s)
-                except Exception:
-                    pysocket.disconnect()
-                    self.threads.remove(self)
-                    return False
-        pysocket.disconnect()
-        self.threads.remove(self)
-        return True
-
-    def stop(self):
-        self.running = False
-
-
-class NetRPCServerThread(threading.Thread):
-    def __init__(self, interface, port, secure=False):
-        threading.Thread.__init__(self, name='NetRPCServerThread')
-        self.socket = None
-        if socket.has_ipv6:
-            try:
-                socket.getaddrinfo(interface or None, port, socket.AF_INET6)
-                self.socket = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
-            except Exception:
-                pass
-        if self.socket is None:
-            self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-        if secure:
-            self.socket = SSLSocket(self.socket)
-        self.socket.bind((interface, port))
-        self.socket.listen(5)
-        self.threads = []
-        self.secure = secure
-        self.running = False
-
-    def run(self):
-        try:
-            self.running = True
-            while self.running:
-                if not int(CONFIG['max_thread']) \
-                        or len(self.threads) < int(CONFIG['max_thread']):
-                    try:
-                        rlist, _, _ = select.select([self.socket], [], [], 1)
-                    except select.error:
-                        continue
-                    if not rlist:
-                        continue
-                    (clientsocket, _) = self.socket.accept()
-                    c_thread = NetRPCClientThread(clientsocket, self.threads,
-                            self.secure)
-                    self.threads.append(c_thread)
-                    c_thread.start()
-        except Exception:
-            try:
-                self.socket.close()
-            except Exception:
-                pass
-            return False
-
-    def stop(self):
-        self.running = False
-        while len(self.threads):
-            try:
-                thread = self.threads[0]
-                thread.stop()
-                thread.join()
-            except Exception:
-                pass
-        try:
-            endsocket(self.socket)
-        except Exception:
-            return False
diff --git a/trytond/protocols/webdav.py b/trytond/protocols/webdav.py
index f55d98e..4280582 100644
--- a/trytond/protocols/webdav.py
+++ b/trytond/protocols/webdav.py
@@ -27,6 +27,8 @@ from trytond.backend import Database
 from trytond.pool import Pool
 from trytond.transaction import Transaction
 from trytond.cache import Cache
+from trytond.exceptions import UserError, UserWarning, NotLogged, \
+    ConcurrencyException
 _TRYTON_RELOAD = False
 domimpl = xml.dom.minidom.getDOMImplementation()
 
@@ -78,14 +80,8 @@ if not hasattr(WebDAVServer.DAVRequestHandler, '_config'):
 class BaseThreadedHTTPServer(SocketServer.ThreadingMixIn,
         BaseHTTPServer.HTTPServer):
     timeout = 1
-    max_children = CONFIG['max_thread']
 
     def server_bind(self):
-        # Python < 2.6 doesn't handle self.timeout
-        if sys.version_info < (2, 6):
-            # breaks the socket under BSD, see http://bugs.python.org/issue7995
-            self.socket.settimeout(1)
-
         self.socket.setsockopt(socket.SOL_SOCKET,
                 socket.SO_REUSEADDR, 1)
         BaseHTTPServer.HTTPServer.server_bind(self)
@@ -139,12 +135,9 @@ class TrytonDAVInterface(iface.dav_interface):
         self.verbose = False
 
     def _log_exception(self, exception):
-        if CONFIG['verbose'] or (exception.args \
-                and (str(exception.args[0]) not in \
-                ('NotLogged', 'ConcurrencyException', 'UserError',
-                    'UserWarning')) \
-                    and not isinstance(exception,
-                        (DAV_Error, DAV_NotFound, DAV_Secret, DAV_Forbidden))):
+        if CONFIG['verbose'] and not isinstance(exception, (
+                    NotLogged, ConcurrencyException, UserError, UserWarning,
+                    DAV_Error, DAV_NotFound, DAV_Secret, DAV_Forbidden)):
             tb_s = reduce(lambda x, y: x + y,
                 traceback.format_exception(*sys.exc_info()))
             logger = logging.getLogger('webdav')
diff --git a/trytond/protocols/xmlrpc.py b/trytond/protocols/xmlrpc.py
index e786f39..91af6e2 100644
--- a/trytond/protocols/xmlrpc.py
+++ b/trytond/protocols/xmlrpc.py
@@ -4,7 +4,9 @@ from trytond.protocols.sslsocket import SSLSocket
 from trytond.protocols.dispatcher import dispatch
 from trytond.config import CONFIG
 from trytond.protocols.datatype import Float
-from trytond.protocols.common import daemon
+from trytond.protocols.common import daemon, GZipRequestHandlerMixin
+from trytond.exceptions import UserError, UserWarning, NotLogged, \
+    ConcurrencyException
 from trytond import security
 import SimpleXMLRPCServer
 import SocketServer
@@ -13,8 +15,6 @@ import traceback
 import socket
 import sys
 import os
-import gzip
-import StringIO
 import base64
 import datetime
 from types import DictType
@@ -27,6 +27,12 @@ def dump_decimal(self, value, write):
     write(str(value))
     write("</double></value>\n")
 
+def dump_buffer(self, value, write):
+    self.write = write
+    value = xmlrpclib.Binary(value)
+    value.encode(self)
+    del self.write
+
 xmlrpclib.Marshaller.dispatch[Decimal] = dump_decimal
 xmlrpclib.Marshaller.dispatch[Float] = dump_decimal
 xmlrpclib.Marshaller.dispatch[type(None)] = \
@@ -34,6 +40,7 @@ xmlrpclib.Marshaller.dispatch[type(None)] = \
 xmlrpclib.Marshaller.dispatch[datetime.date] = \
         lambda self, value, write: self.dump_datetime(
                 datetime.datetime.combine(value, datetime.time()), write)
+xmlrpclib.Marshaller.dispatch[buffer] = dump_buffer
 
 def dump_struct(self, value, write, escape=xmlrpclib.escape):
     converted_value = {}
@@ -83,6 +90,10 @@ class GenericXMLRPCRequestHandler:
                     }
                 return dispatch(host, port, 'XML-RPC', database_name, user,
                         session, object_type, object_name, method, *params)
+            except (UserError, UserWarning, NotLogged,
+                    ConcurrencyException), exception:
+                        raise xmlrpclib.Fault(exception.code,
+                            '\n'.join(exception.args))
             except Exception:
                 tb_s = ''
                 for line in traceback.format_exception(*sys.exc_info()):
@@ -97,13 +108,15 @@ class GenericXMLRPCRequestHandler:
                     import pdb
                     traceb = sys.exc_info()[2]
                     pdb.post_mortem(traceb)
-                raise xmlrpclib.Fault(1, str(sys.exc_value) + '\n' + tb_s)
+                raise xmlrpclib.Fault(255, str(sys.exc_value) + '\n' + tb_s)
         finally:
             security.logout(database_name, user, session)
 
 
-class SimpleXMLRPCRequestHandler(GenericXMLRPCRequestHandler,
+class SimpleXMLRPCRequestHandler(GZipRequestHandlerMixin,
+        GenericXMLRPCRequestHandler,
         SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
+    protocol_version = "HTTP/1.1"
     rpc_paths = None
     encode_threshold = 1400 # common MTU
 
@@ -127,69 +140,6 @@ class SimpleXMLRPCRequestHandler(GenericXMLRPCRequestHandler,
         self.send_header("WWW-Authenticate", 'Basic realm="Tryton"')
         return False
 
-    # Copy from SimpleXMLRPCServer.py with gzip encoding added
-    def do_POST(self):
-        """Handles the HTTP POST request.
-
-        Attempts to interpret all HTTP POST requests as XML-RPC calls,
-        which are forwarded to the server's _dispatch method for handling.
-        """
-
-        # Check that the path is legal
-        if not self.is_rpc_path_valid():
-            self.report_404()
-            return
-
-        try:
-            # Get arguments by reading body of request.
-            # We read this in chunks to avoid straining
-            # socket.read(); around the 10 or 15Mb mark, some platforms
-            # begin to have problems (bug #792570).
-            max_chunk_size = 10*1024*1024
-            size_remaining = int(self.headers["content-length"])
-            L = []
-            while size_remaining:
-                chunk_size = min(size_remaining, max_chunk_size)
-                L.append(self.rfile.read(chunk_size))
-                size_remaining -= len(L[-1])
-            data = ''.join(L)
-
-            # In previous versions of SimpleXMLRPCServer, _dispatch
-            # could be overridden in this class, instead of in
-            # SimpleXMLRPCDispatcher. To maintain backwards compatibility,
-            # check to see if a subclass implements _dispatch and dispatch
-            # using that method if present.
-            response = self.server._marshaled_dispatch(
-                    data, getattr(self, '_dispatch', None)
-                )
-        except Exception: # This should only happen if the module is buggy
-            # internal error, report as HTTP server error
-            self.send_response(500)
-            self.end_headers()
-        else:
-            # got a valid XML RPC response
-            self.send_response(200)
-            self.send_header("Content-type", "text/xml")
-
-            # Handle gzip encoding
-            if 'gzip' in self.headers.get('Accept-Encoding', '').split(',') \
-                    and len(response) > self.encode_threshold:
-                buffer = StringIO.StringIO()
-                output = gzip.GzipFile(mode='wb', fileobj=buffer)
-                output.write(response)
-                output.close()
-                buffer.seek(0)
-                response = buffer.getvalue()
-                self.send_header('Content-Encoding', 'gzip')
-
-            self.send_header("Content-length", str(len(response)))
-            self.end_headers()
-            self.wfile.write(response)
-
-            # shut down the connection
-            self.wfile.flush()
-            self.connection.shutdown(1)
-
 
 class SecureXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
 
@@ -202,10 +152,9 @@ class SecureXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
 class SimpleThreadedXMLRPCServer(SocketServer.ThreadingMixIn,
         SimpleXMLRPCServer.SimpleXMLRPCServer):
     timeout = 1
+    daemon_threads = True
 
     def server_bind(self):
-        # Python < 2.6 doesn't handle self.timeout
-        self.socket.settimeout(1)
         self.socket.setsockopt(socket.SOL_SOCKET,
                 socket.SO_REUSEADDR, 1)
         SimpleXMLRPCServer.SimpleXMLRPCServer.server_bind(self)
diff --git a/trytond/pysocket.py b/trytond/pysocket.py
deleted file mode 100644
index ffbb07d..0000000
--- a/trytond/pysocket.py
+++ /dev/null
@@ -1,219 +0,0 @@
-#This file is part of Tryton.  The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
-import socket
-# can't use/fall-back pickle due to different interface :-(
-import cPickle
-try:
-    import cStringIO as StringIO
-except ImportError:
-    import StringIO
-try:
-    import ssl
-except ImportError:
-    ssl = None
-import gzip
-
-DNS_CACHE = {}
-MAX_SIZE = 999999999
-MAX_LENGHT = len(str(MAX_SIZE))
-CONNECT_TIMEOUT = 5
-TIMEOUT = 3600
-GZIP_THRESHOLD = 1400 # common MTU
-
-_ALLOWED_MODULES = {'datetime': ['datetime', 'date'], 'decimal': ['Decimal']}
-
-def checkfunction(module, klass):
-    if module in _ALLOWED_MODULES and klass in _ALLOWED_MODULES[module]:
-        mod = __import__(module, {}, {}, ['__all__'])
-        _class = getattr(mod, klass)
-        return _class
-    raise ValueError('Not supported: %s/%s' % (module, klass))
-
-
-class PySocket:
-
-    def __init__(self, sock=None):
-        self.sock = sock
-        self.host = None
-        self.hostname = None
-        self.port = None
-        self.ssl = False
-        self.ssl_sock = None
-        self.connected = False
-        self.buffer = ''
-
-    def connect(self, host, port=False):
-        if not port:
-            buf = host.split('//')[1]
-            host, port = buf.rsplit(':', 1)
-        hostname = host
-        if host in DNS_CACHE:
-            host = DNS_CACHE[host]
-        self.sock = None
-        if socket.has_ipv6:
-            try:
-                socket.getaddrinfo(host, int(port), socket.AF_INET6)
-                self.sock = socket.socket(socket.AF_INET6,
-                        socket.SOCK_STREAM)
-                self.sock.settimeout(CONNECT_TIMEOUT)
-                self.sock.connect((host, int(port)))
-            except Exception:
-                self.sock = None
-        if self.sock is None:
-            self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-            self.sock.settimeout(CONNECT_TIMEOUT)
-            self.sock.connect((host, int(port)))
-        DNS_CACHE[hostname], port = self.sock.getpeername()[:2]
-        try:
-            sock = None
-            if socket.has_ipv6:
-                try:
-                    socket.getaddrinfo(host, int(port), socket.AF_INET6)
-                    sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
-                    sock.settimeout(CONNECT_TIMEOUT)
-                    sock.connect((host, int(port)))
-                except Exception:
-                    sock = None
-            if sock is None:
-                sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-                sock.settimeout(CONNECT_TIMEOUT)
-                sock.connect((host, int(port)))
-            if ssl:
-                ssl.wrap_socket(sock)
-                self.ssl = True
-            elif hasattr(socket, 'ssl'):
-                socket.ssl(sock)
-                self.ssl = True
-        except Exception:
-            pass
-        self.sock.settimeout(TIMEOUT)
-        if self.ssl:
-            if ssl:
-                self.ssl_sock = ssl.wrap_socket(self.sock)
-            elif hasattr(socket, 'ssl'):
-                self.ssl_sock = socket.ssl(self.sock)
-        self.host = host
-        self.hostname = hostname
-        self.port = port
-        self.connected = True
-        self.buffer = ''
-
-    def disconnect(self):
-        try:
-            sock = self.sock
-            if self.ssl:
-                sock = self.ssl_sock
-            try:
-                shutdown_value = 2
-                if hasattr(socket, 'SHUT_RDWR'):
-                    shutdown_value = socket.SHUT_RDWR
-                if hasattr(sock, 'sock_shutdown'):
-                    sock.sock_shutdown(shutdown_value)
-                else:
-                    sock.shutdown(shutdown_value)
-            except Exception:
-                pass
-            sock.close()
-        except Exception:
-            pass
-        self.sock = None
-        self.ssl = False
-        self.ssl_sock = None
-        self.connected = False
-        self.buffer = ''
-
-    def reconnect(self):
-        if self.host and self.port:
-            self.disconnect()
-            self.connect(self.host, self.port)
-
-    def send(self, msg, exception=False, traceback=None):
-        msg = cPickle.dumps([msg, traceback], protocol=2)
-        gzip_p = False
-        if len(msg) > GZIP_THRESHOLD:
-            buf = StringIO.StringIO()
-            output = gzip.GzipFile(mode='wb', fileobj=buf)
-            output.write(msg)
-            output.close()
-            buf.seek(0)
-            msg = buf.getvalue()
-            gzip_p = True
-        size = len(msg)
-        msg = str(size) + ' ' + (exception and "1" or "0") \
-                + (gzip_p and "1" or "0") + msg
-        size = len(msg)
-
-        totalsent = 0
-        while totalsent < size:
-            if self.ssl:
-                sent = self.ssl_sock.write(msg[totalsent:])
-            else:
-                sent = self.sock.send(msg[totalsent:])
-            if sent == 0:
-                raise RuntimeError, "socket connection broken"
-            totalsent = totalsent + sent
-
-    def receive(self):
-        buf = self.buffer
-        buf_list = []
-        size_remaining = MAX_LENGHT
-        while size_remaining:
-            chunk_size = min(size_remaining, 4096)
-            if self.ssl:
-                chunk = self.ssl_sock.read(chunk_size)
-            else:
-                chunk = self.sock.recv(chunk_size)
-            if chunk == '':
-                raise RuntimeError, "socket connection broken"
-            buf_list.append(chunk)
-            size_remaining -= len(chunk)
-            if ' ' in chunk:
-                break
-        if size_remaining < 0:
-            raise RuntimeError, "socket connection broken"
-        buf += ''.join(buf_list)
-        size, msg = buf.split(' ', 1)
-        size = int(size)
-        if size > MAX_SIZE:
-            raise RuntimeError, "socket connection broken"
-        while len(msg) < 2:
-            chunk_size = min(size + 2, 4096)
-            if self.ssl:
-                msg += self.ssl_sock.read(chunk_size)
-            else:
-                msg += self.sock.recv(chunk_size)
-            if msg == '':
-                raise RuntimeError, "socket connection broken"
-        exception = msg[0] != "0"
-        gzip_p = msg[1] != "0"
-        buf_list = [msg[2:]]
-        size_remaining = size - len(buf_list[0])
-        while size_remaining:
-            chunk_size = min(size_remaining, 4096)
-            if self.ssl:
-                chunk = self.ssl_sock.read(chunk_size)
-            else:
-                chunk = self.sock.recv(chunk_size)
-            if chunk == '':
-                raise RuntimeError, "socket connection broken"
-            buf_list.append(chunk)
-            size_remaining -= len(chunk)
-        msg = ''.join(buf_list)
-        if len(msg) > size:
-            self.buffer = msg[size:]
-            msg = msg[:size]
-        else:
-            self.buffer = ''
-        msgio = StringIO.StringIO(msg)
-        if gzip_p:
-            output = gzip.GzipFile(mode='r', fileobj=msgio)
-            msgio = StringIO.StringIO(output.read(-1))
-            output.close()
-        unpickler = cPickle.Unpickler(msgio)
-        # cPickle mechanism to import instances (pickle differs here)
-        unpickler.find_global = checkfunction
-        res = unpickler.load()
-        if exception:
-            raise Exception(*(list(res[0]) + [res[1]]))
-        else:
-            return res[0]
diff --git a/trytond/pyson.py b/trytond/pyson.py
index b3d375b..9c7dde7 100644
--- a/trytond/pyson.py
+++ b/trytond/pyson.py
@@ -1,11 +1,12 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 import sys
-if sys.version_info < (2, 6):
+try:
     import simplejson as json
-else:
+except ImportError:
     import json
 import datetime
+from functools import reduce
 
 
 class PYSON(object):
@@ -20,6 +21,64 @@ class PYSON(object):
     def eval(dct, context):
         raise NotImplementedError
 
+    def __invert__(self):
+        if self.types()!= set([bool]):
+            return Not(Bool(self))
+        else:
+            return Not(self)
+
+    def __and__(self, other):
+        if (isinstance(self, And)
+                and not isinstance(self, Or)):
+            self._statements.append(other)
+            return self
+        if (isinstance(other, PYSON)
+                and other.types() != set([bool])):
+            other = Bool(other)
+        if self.types() != set([bool]):
+            return And(Bool(self), other)
+        else:
+            return And(self, other)
+
+    def __or__(self, other):
+        if isinstance(self, Or):
+            self._statements.append(other)
+            return self
+        if (isinstance(other, PYSON)
+                and other.types() != set([bool])):
+            other = Bool(other)
+        if self.types() != set([bool]):
+            return Or(Bool(self), other)
+        else:
+            return Or(self, other)
+
+    def __eq__(self, other):
+        return Equal(self, other)
+
+    def __ne__(self, other):
+        return Not(Equal(self, other))
+
+    def __gt__(self, other):
+        return Greater(self, other)
+
+    def __ge__(self, other):
+        return Greater(self, other, True)
+
+    def __lt__(self, other):
+        return Less(self, other)
+
+    def __le__(self, other):
+        return Less(self, other, True)
+
+    def get(self, k, d=''):
+        return Get(self, k, d)
+
+    def in_(self, obj):
+        return In(self, obj)
+
+    def contains(self, k):
+        return In(k, self)
+
 
 class PYSONEncoder(json.JSONEncoder):
 
@@ -131,7 +190,7 @@ class And(PYSON):
                 assert isinstance(statement, bool), \
                         'statement must be boolean'
         assert len(statements) >= 2, 'must have at least 2 statements'
-        self._statements = statements
+        self._statements = list(statements)
 
     def pyson(self):
         return {
@@ -405,7 +464,7 @@ class Date(PYSON):
             date = date.replace(year=year)
         if dct['dM']:
             month = date.month + dct['dM']
-            year = date.year + month / 12
+            year = date.year + month // 12
             month = month % 12
             date = date.replace(year=year, month=month)
         if dct['dd']:
diff --git a/trytond/report/report.py b/trytond/report/report.py
index 2138023..37859e0 100644
--- a/trytond/report/report.py
+++ b/trytond/report/report.py
@@ -3,7 +3,6 @@
 import copy
 import xml
 import sys
-import base64
 try:
     import cStringIO as StringIO
 except ImportError:
@@ -12,12 +11,10 @@ import zipfile
 import time
 import os
 import datetime
-from base64 import decodestring
-import traceback
 import inspect
-import logging
 import tempfile
 import warnings
+import subprocess
 warnings.simplefilter("ignore")
 import relatorio.reporting
 warnings.resetwarnings()
@@ -28,16 +25,35 @@ except ImportError:
 from genshi.filters import Translator
 import lxml.etree
 from trytond.config import CONFIG
-from trytond.backend import DatabaseIntegrityError
 from trytond.pool import Pool
 from trytond.transaction import Transaction
-
-PARENTS = {
-    'table-row': 1,
-    'list-item': 1,
-    'body': 0,
-    'section': 0,
-}
+from trytond.url import URLMixin
+
+MIMETYPES = {
+    'odt': 'application/vnd.oasis.opendocument.text',
+    'odp': 'application/vnd.oasis.opendocument.presentation',
+    'ods': 'application/vnd.oasis.opendocument.spreadsheet',
+    'odg': 'application/vnd.oasis.opendocument.graphics',
+    }
+FORMAT2EXT = {
+    'doc6': 'doc',
+    'doc95': 'doc',
+    'docbook': 'xml',
+    'ooxml': 'xml',
+    'latex': 'ltx',
+    'sdc4': 'sdc',
+    'sdc3': 'sdc',
+    'sdd3': 'sdd',
+    'sdd4': 'sdd',
+    'sdw4': 'sdw',
+    'sdw3': 'sdw',
+    'sxd3': 'sxd',
+    'sxd5': 'sxd',
+    'text': 'txt',
+    'xhtml': 'html',
+    'xls5': 'xls',
+    'xls95': 'xls',
+    }
 
 
 class ReportFactory:
@@ -77,7 +93,7 @@ class TranslateFactory:
         self.language = language
 
 
-class Report(object):
+class Report(URLMixin):
     _name = ""
 
     def __new__(cls):
@@ -100,11 +116,12 @@ class Report(object):
             local context of the report
         :return: a tuple with:
             report type,
-            base64 encoded data,
+            data,
             a boolean to direct print,
             the report name
         '''
-        action_report_obj = self.pool.get('ir.action.report')
+        pool = Pool()
+        action_report_obj = pool.get('ir.action.report')
         action_report_ids = action_report_obj.search([
             ('report_name', '=', self._name)
             ])
@@ -115,11 +132,12 @@ class Report(object):
         if action_report.model:
             objects = self._get_objects(ids, action_report.model, datas)
         type, data = self.parse(action_report, objects, datas, {})
-        return (type, base64.encodestring(data), action_report.direct_print,
+        return (type, buffer(data), action_report.direct_print,
                 action_report.name)
 
     def _get_objects(self, ids, model, datas):
-        model_obj = self.pool.get(model)
+        pool = Pool()
+        model_obj = pool.get(model)
         return model_obj.browse(ids)
 
     def parse(self, report, objects, datas, localcontext):
@@ -135,29 +153,31 @@ class Report(object):
             report type
             report
         '''
+        pool = Pool()
         localcontext['datas'] = datas
-        localcontext['user'] = self.pool.get('res.user'
+        localcontext['user'] = pool.get('res.user'
                 ).browse(Transaction().user)
         localcontext['formatLang'] = lambda *args, **kargs: \
                 self.format_lang(*args, **kargs)
-        localcontext['decodestring'] = decodestring
         localcontext['StringIO'] = StringIO.StringIO
         localcontext['time'] = time
         localcontext['datetime'] = datetime
         localcontext['context'] = Transaction().context
 
         translate = TranslateFactory(self._name, Transaction().language,
-                self.pool.get('ir.translation'))
+                pool.get('ir.translation'))
         localcontext['setLang'] = lambda language: translate.set_language(language)
 
         if not report.report_content:
             raise Exception('Error', 'Missing report file!')
 
-        fd, path = tempfile.mkstemp(suffix='.odt', prefix='trytond')
+        fd, path = tempfile.mkstemp(
+            suffix=(os.extsep + report.template_extension),
+            prefix='trytond_')
         outzip = zipfile.ZipFile(path, mode='w')
 
         content_io = StringIO.StringIO()
-        content_io.write(base64.decodestring(report.report_content))
+        content_io.write(report.report_content)
         content_z = zipfile.ZipFile(content_io, mode='r')
 
         style_info = None
@@ -179,7 +199,7 @@ class Report(object):
             #cStringIO difference:
             #calling StringIO() with a string parameter creates a read-only object
             new_style_io = StringIO.StringIO()
-            new_style_io.write(base64.decodestring(report.style_content))
+            new_style_io.write(report.style_content)
             new_style_z = zipfile.ZipFile(new_style_io, mode='r')
             new_style_xml = new_style_z.read('styles.xml')
             for file in new_style_z.namelist():
@@ -223,7 +243,8 @@ class Report(object):
         # Since Genshi >= 0.6, Translator requires a function type
         translator = Translator(lambda text: translate(text))
 
-        rel_report = relatorio.reporting.Report(path, 'application/vnd.oasis.opendocument.text',
+        mimetype = MIMETYPES[report.template_extension]
+        rel_report = relatorio.reporting.Report(path, mimetype,
                 ReportFactory(), relatorio.reporting.MIMETemplateLoader())
         rel_report.filters.insert(0, translator)
         #convert unicode key into str
@@ -239,65 +260,36 @@ class Report(object):
                 data = data.getvalue()
         os.close(fd)
         os.remove(path)
-        output_format = report.extension
-        if output_format == 'pdf':
-            data = self.convert_pdf(data)
-        return (output_format, data)
-
-    def convert_pdf(self, data):
-        """
-        Convert report to PDF using OpenOffice.org.
-        This requires OpenOffice.org, pyuno and openoffice-python to
-        be installed.
-        """
-        import tempfile
-        try:
-            import unohelper # installs import-hook
-            import openoffice.interact
-            import openoffice.officehelper as officehelper
-            from openoffice.streams import OutputStream
-            from com.sun.star.beans import PropertyValue
-        except ImportError, exception:
-            raise Exception('ImportError', str(exception))
-        try:
-            # connect to OOo
-            desktop = openoffice.interact.Desktop()
-        except officehelper.BootstrapException:
-            raise Exception('Error', "Can't connect to (bootstrap) OpenOffice.org")
-
-        res_data = None
-        # Create temporary file (with name) and write data there.
-        # We can not use NamedTemporaryFile here, since this would be
-        # deleted as soon as we close it to allow OOo reading.
-        #TODO use an input stream here
-        fd_odt, odt_name = tempfile.mkstemp()
-        fh_odt = os.fdopen(fd_odt, 'wb+')
+        output_format = report.extension or report.template_extension
+        if output_format not in MIMETYPES:
+            data = self.unoconv(data, report.template_extension, output_format)
+        oext = FORMAT2EXT.get(output_format, output_format)
+        return (oext, data)
+
+    def unoconv(self, data, input_format, output_format):
+        '''
+        Call unoconv to convert the OpenDocument
+        '''
+        fd, path = tempfile.mkstemp(suffix=(os.extsep + input_format),
+            prefix='trytond_')
+        oext = FORMAT2EXT.get(output_format, output_format)
+        with os.fdopen(fd, 'wb+') as fp:
+            fp.write(data)
+        cmd = ['unoconv', '--connection=%s' % CONFIG['unoconv'],
+            '-f', oext, '--stdout', path]
         try:
-            fh_odt.write(data)
-            del data # save memory
-            fh_odt.close()
-            doc = desktop.openFile(odt_name, hidden=False)
-            # Export as PDF
-            buffer = StringIO.StringIO()
-            out_props = (
-                PropertyValue("FilterName", 0, "writer_pdf_Export", 0),
-                PropertyValue("Overwrite", 0, True, 0),
-                PropertyValue("OutputStream", 0, OutputStream(buffer), 0),
-                )
-            doc.storeToURL("private:stream", out_props)
-            res_data = buffer.getvalue()
-            del buffer
-            doc.dispose()
+            proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
+            stdoutdata, stderrdata = proc.communicate()
+            if proc.wait() != 0:
+                raise Exception(stderrdata)
+            return stdoutdata
         finally:
-            fh_odt.close()
-            os.remove(odt_name)
-        if not res_data:
-            Exception('Error', 'Error converting to PDF')
-        return res_data
+            os.remove(path)
 
     def format_lang(self, value, lang, digits=2, grouping=True, monetary=False,
             date=False, currency=None, symbol=True):
-        lang_obj = self.pool.get('ir.lang')
+        pool = Pool()
+        lang_obj = pool.get('ir.lang')
 
         if date:
             if lang:
diff --git a/trytond/res/__tryton__.py b/trytond/res/__tryton__.py
index e8f4d87..0aabb3a 100644
--- a/trytond/res/__tryton__.py
+++ b/trytond/res/__tryton__.py
@@ -42,11 +42,13 @@ Fournit les concepts et l'administration des utilisateurs et de la communication
         'ir.xml',
         ],
     'translation': [
-        'bg_BG.csv',
-        'fr_FR.csv',
-        'de_DE.csv',
-        'es_ES.csv',
-        'es_CO.csv',
-        'ru_RU.csv',
+        'locale/cs_CZ.po',
+        'locale/bg_BG.po',
+        'locale/fr_FR.po',
+        'locale/de_DE.po',
+        'locale/es_ES.po',
+        'locale/es_CO.po',
+        'locale/nl_NL.po',
+        'locale/ru_RU.po',
     ],
 }
diff --git a/trytond/res/bg_BG.csv b/trytond/res/bg_BG.csv
deleted file mode 100644
index ebe729d..0000000
--- a/trytond/res/bg_BG.csv
+++ /dev/null
@@ -1,171 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,res.group,0,The name of the group must be unique!,Името на групата трябва да е уникално!,0
-error,res.user,0,Wrong password!,Грешна парола!,0
-error,res.user,0,You can not have two users with the same login!,Не може да имате двама потребители с еднакво потребителско име,0
-error,res.user,0,"You can not remove the root user
-as it is used internally for resources
-created by the system (updates, module installation, ...)","Не може да премахнете потребител root
-тъй като вътрешно се използва за ресурси
-създадени от системата (обновяване, инсталиране на модули, ....)",0
-field,"ir.action-res.group,action_id",0,Action,Действие,0
-field,"ir.action-res.group,gid",0,Group,Група,0
-field,"ir.action-res.group,rec_name",0,Name,Име,0
-field,"ir.model.field-res.group,field_id",0,Model Field,Поле от модел,0
-field,"ir.model.field-res.group,group_id",0,Group,Група,0
-field,"ir.model.field-res.group,rec_name",0,Name,Име,0
-field,"ir.rule.group-res.group,group_id",0,Group,Група,0
-field,"ir.rule.group-res.group,rec_name",0,Name,Име,0
-field,"ir.rule.group-res.group,rule_group_id",0,Rule Group,Правила на група,0
-field,"ir.rule.group-res.user,rec_name",0,Name,Име,0
-field,"ir.rule.group-res.user,rule_group_id",0,Rule Group,Правила на група,0
-field,"ir.rule.group-res.user,user_id",0,User,Потребител,0
-field,"ir.sequence,groups",0,User Groups,Групи потребители,0
-field,"ir.sequence.strict,groups",0,User Groups,Групи потребители,0
-field,"ir.sequence.type,groups",0,User Groups,Групи потребители,0
-field,"ir.sequence.type-res.group,group",0,User Groups,Групи потребители,0
-field,"ir.sequence.type-res.group,rec_name",0,Name,Име,0
-field,"ir.sequence.type-res.group,sequence_type",0,Sequence Type,Вид последователност,0
-field,"ir.ui.menu-res.group,gid",0,Group,Група,0
-field,"ir.ui.menu-res.group,menu_id",0,Menu,Меню,0
-field,"ir.ui.menu-res.group,rec_name",0,Name,Име,0
-field,"res.group,field_access",0,Access Field,Достъп до поле,0
-field,"res.group,menu_access",0,Access Menu,Достъп до меню,0
-field,"res.group,model_access",0,Access Model,Модел на достъпа,0
-field,"res.group,name",0,Name,Име,0
-field,"res.group,rec_name",0,Name,Име,0
-field,"res.group,rule_groups",0,Rules,Правила,0
-field,"res.group,users",0,Users,Потребители,0
-field,"res.request,act_from",0,From,От,0
-field,"res.request,act_to",0,To,До,0
-field,"res.request,active",0,Active,Активен,0
-field,"res.request,body",0,Body,Тяло,0
-field,"res.request,date_sent",0,Date,Дата,0
-field,"res.request,history",0,History,Изтория,0
-field,"res.request,name",0,Subject,Относно,0
-field,"res.request,number_references",0,Number of References,Брой препратки,0
-field,"res.request,priority",0,Priority,Важност,0
-field,"res.request,rec_name",0,Name,Име,0
-field,"res.request,references",0,References,Отпратки,0
-field,"res.request,state",0,State,Състояние,0
-field,"res.request,trigger_date",0,Trigger Date,Дата на активиране,0
-field,"res.request.history,act_from",0,From,От,0
-field,"res.request.history,act_to",0,To,До,0
-field,"res.request.history,body",0,Body,Тяло,0
-field,"res.request.history,date_sent",0,Date sent,Дата на изпращане,0
-field,"res.request.history,name",0,Summary,Обобщено,0
-field,"res.request.history,number_references",0,References,Отпратки,0
-field,"res.request.history,priority",0,Priority,Важност,0
-field,"res.request.history,rec_name",0,Name,Име,0
-field,"res.request.history,request",0,Request,Заявка,0
-field,"res.request.history,state",0,State,Състояние,0
-field,"res.request.history,subject",0,Subject,Относно,0
-field,"res.request.link,model",0,Model,Модел,0
-field,"res.request.link,name",0,Name,Име,0
-field,"res.request.link,priority",0,Priority,Важност,0
-field,"res.request.link,rec_name",0,Name,Име,0
-field,"res.request.reference,rec_name",0,Name,Име,0
-field,"res.request.reference,reference",0,Reference,Отпратка,0
-field,"res.request.reference,request",0,Request,Заявка,0
-field,"res.user,action",0,Home Action,Начално действие,0
-field,"res.user,active",0,Active,Активен,0
-field,"res.user,connections",0,Connections,Връзки,0
-field,"res.user,email",0,Email,Email,0
-field,"res.user,groups",0,Groups,Групи,0
-field,"res.user,language",0,Language,Език,0
-field,"res.user,language_direction",0,Language Direction,Посока на езика,0
-field,"res.user,login",0,Login,Потребителско име,0
-field,"res.user,menu",0,Menu Action,Действие на меню,0
-field,"res.user,name",0,Name,Име,0
-field,"res.user,password",0,Password,Парола,0
-field,"res.user,rec_name",0,Name,Име,0
-field,"res.user,rule_groups",0,Rules,Правила,0
-field,"res.user,salt",0,Salt,Ключ,0
-field,"res.user,signature",0,Signature,Подпис,0
-field,"res.user,status_bar",0,Status Bar,Лента със статус,0
-field,"res.user,timezone",0,Timezone,Времева зона,0
-field,"res.user,warnings",0,Warnings,Предупреждения,0
-field,"res.user-res.group,gid",0,Group,Група,0
-field,"res.user-res.group,rec_name",0,Name,Име,0
-field,"res.user-res.group,uid",0,User,Потребител,0
-field,"res.user.warning,always",0,Always,Винаги,0
-field,"res.user.warning,name",0,Name,Име,0
-field,"res.user.warning,rec_name",0,Name,Име,0
-field,"res.user.warning,user",0,User,Потребител,0
-help,"ir.sequence.type,groups",0,Groups allowed to edit the sequences of this type,Групите на които е позволено да редактират този вид последователност,0
-model,"ir.action,name",act_group_form,Groups,Групи,0
-model,"ir.action,name",act_request_form,Requests,Заявки,0
-model,"ir.action,name",act_request_link_form,Request Links,Връзки към заявка,0
-model,"ir.action,name",act_user_form,Users,Потребители,0
-model,"ir.action-res.group,name",0,Action - Group,Действие - група,0
-model,"ir.cron,name",cron_trigger_time,Run On Time Triggers,Стартиране при настъпване на време,0
-model,"ir.model.field-res.group,name",0,Model Field Group Rel,Връзка на група за модел на поле,0
-model,"ir.rule.group-res.group,name",0,Rule Group - Group,Група правила - Група,0
-model,"ir.rule.group-res.user,name",0,Rule Group - User,Правило на група - Потребител,0
-model,"ir.sequence.type-res.group,name",0,Sequence Type - Group,Вид последователност - Група,0
-model,"ir.ui.menu,name",menu_group_form,Groups,Групи,0
-model,"ir.ui.menu,name",menu_request_form,Requests,Заявки,0
-model,"ir.ui.menu,name",menu_request_link_form,Request Links,Връзки към заявки,0
-model,"ir.ui.menu,name",menu_res,Users,Потребители,0
-model,"ir.ui.menu,name",menu_user_form,Users,Потребители,0
-model,"ir.ui.menu-res.group,name",0,UI Menu - Group,Потребителско меню - група,0
-model,"res.group,name",0,Group,Група,0
-model,"res.group,name",group_admin,Administration,Администрация,0
-model,"res.request,name",0,Request,Заявка,0
-model,"res.request.history,name",0,Request history,Изтория на заявка,0
-model,"res.request.link,name",0,Request link,Връзка към заявка,0
-model,"res.request.link,name",request_link_cron,Scheduler,Планировщик,0
-model,"res.request.reference,name",0,Request Reference,Отпратка към заявка,0
-model,"res.user,name",0,User,Потребител,0
-model,"res.user,name",user_admin,Administrator,Администратор,0
-model,"res.user,name",user_trigger,Cron Trigger,Превключвател на планировщик,0
-model,"res.user-res.group,name",0,User - Group,Потребител - група,0
-model,"res.user.config.init,name",0,User Config Init,Начално конфигуриране на потребител,0
-model,"res.user.warning,name",0,User Warning,Потребителско предупреждение,0
-selection,"res.request,priority",0,High,Висок,0
-selection,"res.request,priority",0,Low,Ниска,0
-selection,"res.request,priority",0,Normal,Нормален,0
-selection,"res.request,state",0,Chatting,Преговори,0
-selection,"res.request,state",0,Closed,Приключен,0
-selection,"res.request,state",0,Draft,Проект,0
-selection,"res.request,state",0,Waiting,Изчакващ,0
-selection,"res.request.history,priority",0,High,Висок,0
-selection,"res.request.history,priority",0,Low,Ниска,0
-selection,"res.request.history,priority",0,Normal,Нормален,0
-selection,"res.request.history,state",0,Chatting,Преговори,0
-selection,"res.request.history,state",0,Closed,Приключен,0
-selection,"res.request.history,state",0,Draft,Проект,0
-selection,"res.request.history,state",0,Waiting,Изчакващ,0
-view,ir.module.module,0,Cancel Installation,Отказ от инсталалиране,0
-view,ir.module.module,0,Cancel Uninstallation,Отказ от деинсталиране,0
-view,ir.module.module,0,Cancel Upgrade,Отказ от обновяване,0
-view,ir.module.module,0,Mark for Installation,Отбелязване за инсталиране,0
-view,ir.module.module,0,Mark for Uninstallation (beta),Маркиране за деинсталиране (beta),0
-view,ir.module.module,0,Mark for Upgrade,Отбелязване за обновяване,0
-view,res.group,0,Access Permissions,Фактура,0
-view,res.group,0,Group,Група,0
-view,res.group,0,Groups,Групи,0
-view,res.group,0,Members,Членове,0
-view,res.request,0,Close,Затваряне,0
-view,res.request,0,References,Отпратки,0
-view,res.request,0,Reply,Отговор,0
-view,res.request,0,Request,Заявка,0
-view,res.request,0,Requests,Заявки,0
-view,res.request,0,Send,Изпратен,0
-view,res.request.history,0,Request History,Истоярия на заявка,0
-view,res.request.link,0,Request Link,Връзка към заявка,0
-view,res.request.reference,0,Request Reference,Отпратка към заявка,0
-view,res.request.reference,0,Request References,Отпратки към заявка,0
-view,res.user,0,Access Permissions,Права за достъп,0
-view,res.user,0,Group Membership,Членство към група,0
-view,res.user,0,Preferences,Предпочитания,0
-view,res.user,0,User,Потребител,0
-view,res.user,0,Users,Потребители,0
-view,res.user.config.init,0,Add Users,Добавяне на потребители,0
-view,res.user.config.init,0,Be careful that the login must be unique!,Вмимавайте потребителско име да е уникално,0
-view,res.user.config.init,0,You can now add some users into the system.,Сега може да добавите потребители към системата.,0
-view,res.user.warning,0,Warning,Предупреждение,0
-view,res.user.warning,0,Warnings,Предупреждения,0
-wizard_button,"res.user.config,init,end",0,Cancel,Отказ,0
-wizard_button,"res.user.config,init,user",0,Ok,Добре,0
-wizard_button,"res.user.config,user,add",0,Add,Добавяне,0
-wizard_button,"res.user.config,user,end",0,End,Край,0
diff --git a/trytond/res/de_DE.csv b/trytond/res/de_DE.csv
deleted file mode 100644
index f12889f..0000000
--- a/trytond/res/de_DE.csv
+++ /dev/null
@@ -1,207 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,res.group,0,The name of the group must be unique!,Der Name der Gruppe kann nicht mehrfach vergeben werden!,0
-error,res.user,0,Wrong password!,Ungültiges Passwort!,0
-error,res.user,0,You can not have two users with the same login!,Der Anmeldename für einen Benutzer kann nur einmal vergeben werden!,0
-error,res.user,0,"You can not remove the root user
-as it is used internally for resources
-created by the system (updates, module installation, ...)","Der Benutzer root kann nicht gelöscht werden, da er für interne Systemverwaltungsaufgaben
-(Updates, Modulinstallation, ...) benötigt wird!",0
-field,"ir.action-res.group,action_id",0,Action,Aktion,0
-field,"ir.action-res.group,gid",0,Group,Gruppe,0
-field,"ir.action-res.group,rec_name",0,Name,Name,0
-field,"ir.model.field-res.group,field_id",0,Model Field,Modell Feld,0
-field,"ir.model.field-res.group,group_id",0,Group,Gruppe,0
-field,"ir.model.field-res.group,rec_name",0,Name,Name,0
-field,"ir.rule.group-res.group,group_id",0,Group,Gruppe,0
-field,"ir.rule.group-res.group,rec_name",0,Name,Name,0
-field,"ir.rule.group-res.group,rule_group_id",0,Rule Group,Regel Gruppe,0
-field,"ir.rule.group-res.user,rec_name",0,Name,Name,0
-field,"ir.rule.group-res.user,rule_group_id",0,Rule Group,Regel Gruppe,0
-field,"ir.rule.group-res.user,user_id",0,User,Benutzer,0
-field,"ir.sequence,groups",0,User Groups,Benutzergruppen,0
-field,"ir.sequence.strict,groups",0,User Groups,Benutzergruppen,0
-field,"ir.sequence.type,groups",0,User Groups,Benutzergruppen,0
-field,"ir.sequence.type-res.group,group",0,User Groups,Benutzergruppen,0
-field,"ir.sequence.type-res.group,rec_name",0,Name,Name Staat,0
-field,"ir.sequence.type-res.group,sequence_type",0,Sequence Type,Typ Strikter Nummernkreis,0
-field,"ir.ui.menu-res.group,gid",0,Group,Gruppe,0
-field,"ir.ui.menu-res.group,menu_id",0,Menu,Menü,0
-field,"ir.ui.menu-res.group,rec_name",0,Name,Name,0
-field,"res.group,create_date",0,Creation date,Erstellungsdatum,0
-field,"res.group,create_uid",0,Creation user,Ersteller,0
-field,"res.group,field_access",0,Access Field,Zugriffsberechtigung Feld,0
-field,"res.group,id",0,ID,ID,0
-field,"res.group,menu_access",0,Access Menu,Menü Berechtigungen,0
-field,"res.group,model_access",0,Access Model,Rechteverwaltung,0
-field,"res.group,name",0,Name,Gruppenname,0
-field,"res.group,rec_name",0,Name,Name,0
-field,"res.group,rule_groups",0,Rules,Datensatzregeln,0
-field,"res.group,users",0,Users,Benutzer,0
-field,"res.group,write_date",0,Last modification date,Zuletzt geändert am,0
-field,"res.group,write_uid",0,Last modification by,Zuletzt geändert von,0
-field,"res.request,act_from",0,From,Von,0
-field,"res.request,act_to",0,To,An,0
-field,"res.request,active",0,Active,Aktiv,0
-field,"res.request,body",0,Body,Anfrage,0
-field,"res.request,create_date",0,Creation date,Erstellungsdatum,0
-field,"res.request,create_uid",0,Creation user,Ersteller,0
-field,"res.request,date_sent",0,Date,Datum,0
-field,"res.request,history",0,History,Bisherige Anfragen,0
-field,"res.request,id",0,ID,ID,0
-field,"res.request,name",0,Subject,Betreff,0
-field,"res.request,number_references",0,Number of References,Anzahl Verweise,0
-field,"res.request,priority",0,Priority,Dringlichkeit,0
-field,"res.request,rec_name",0,Name,Name,0
-field,"res.request,references",0,References,Verweise,0
-field,"res.request,state",0,State,Status,0
-field,"res.request,trigger_date",0,Trigger Date,Gültig ab,0
-field,"res.request,write_date",0,Last modification date,Zuletzt geändert am,0
-field,"res.request,write_uid",0,Last modification by,Zuletzt geändert von,0
-field,"res.request.history,act_from",0,From,Von,0
-field,"res.request.history,act_to",0,To,An,0
-field,"res.request.history,body",0,Body,Nachricht,0
-field,"res.request.history,create_date",0,Creation date,Erstellungsdatum,0
-field,"res.request.history,create_uid",0,Creation user,Ersteller,0
-field,"res.request.history,date_sent",0,Date sent,Gesendet am,0
-field,"res.request.history,id",0,ID,ID,0
-field,"res.request.history,name",0,Summary,Zusammenfassung,0
-field,"res.request.history,number_references",0,References,Verweise,0
-field,"res.request.history,priority",0,Priority,Priorität,0
-field,"res.request.history,rec_name",0,Name,Name,0
-field,"res.request.history,request",0,Request,Anfrage,0
-field,"res.request.history,state",0,State,Status,0
-field,"res.request.history,subject",0,Subject,Betreff,0
-field,"res.request.history,write_date",0,Last modification date,Zuletzt geändert am,0
-field,"res.request.history,write_uid",0,Last modification by,Zuletzt geändert von,0
-field,"res.request.link,create_date",0,Creation date,Erstellungsdatum,0
-field,"res.request.link,create_uid",0,Creation user,Ersteller,0
-field,"res.request.link,id",0,ID,ID,0
-field,"res.request.link,model",0,Model,Modell,0
-field,"res.request.link,name",0,Name,Name,0
-field,"res.request.link,priority",0,Priority,Dringlichkeit,0
-field,"res.request.link,rec_name",0,Name,Name,0
-field,"res.request.link,write_date",0,Last modification date,Zuletzt geändert am,0
-field,"res.request.link,write_uid",0,Last modification by,Zuletzt geändert von,0
-field,"res.request.reference,rec_name",0,Name,Name,0
-field,"res.request.reference,reference",0,Reference,Verweis,0
-field,"res.request.reference,request",0,Request,Anfrage,0
-field,"res.user,action",0,Home Action,Aktion für Startseite,0
-field,"res.user,active",0,Active,Aktiv,0
-field,"res.user,connections",0,Connections,Verbindungen,0
-field,"res.user,create_date",0,Creation date,Erstellungsdatum,0
-field,"res.user,create_uid",0,Creation user,Ersteller,0
-field,"res.user,email",0,Email,E-Mail,0
-field,"res.user,groups",0,Groups,Gruppenzugehörigkeit,0
-field,"res.user,id",0,ID,ID,0
-field,"res.user,language",0,Language,Sprache,0
-field,"res.user,language_direction",0,Language Direction,Sprache Richtung,0
-field,"res.user,login",0,Login,Anmeldename,0
-field,"res.user,menu",0,Menu Action,Menüaktion,0
-field,"res.user,name",0,Name,Name,0
-field,"res.user,password",0,Password,Passwort,0
-field,"res.user,rec_name",0,Name,Name,0
-field,"res.user,rule_groups",0,Rules,Datensatzregeln,0
-field,"res.user,salt",0,Salt,Salt,0
-field,"res.user,signature",0,Signature,Signatur,0
-field,"res.user,status_bar",0,Status Bar,Status Anzeige,0
-field,"res.user,timezone",0,Timezone,Zeitzone,0
-field,"res.user,warnings",0,Warnings,Warnungen,0
-field,"res.user,write_date",0,Last modification date,Zuletzt geändert am,0
-field,"res.user,write_uid",0,Last modification by,Zuletzt geändert von,0
-field,"res.user-res.group,gid",0,Group,Gruppe,0
-field,"res.user-res.group,rec_name",0,Name,Name,0
-field,"res.user-res.group,uid",0,User,Benutzer,0
-field,"res.user.warning,always",0,Always,Immer,0
-field,"res.user.warning,name",0,Name,Name,0
-field,"res.user.warning,rec_name",0,Name,Name,0
-field,"res.user.warning,user",0,User,Benutzer,0
-help,"ir.sequence.type,groups",0,Groups allowed to edit the sequences of this type,Gruppen mit der Berechtigung zur Bearbeitung von Nummernkreisen dieses Typs,0
-model,"ir.action,name",act_group_form,Groups,Gruppen,0
-model,"ir.action,name",act_request_form,Requests,Anfragen,0
-model,"ir.action,name",act_request_link_form,Request Links,Anfrageverknüpfungen,0
-model,"ir.action,name",act_user_form,Users,Benutzer,0
-model,"ir.action-res.group,name",0,Action - Group,Aktion - Gruppe,0
-model,"ir.cron,name",cron_trigger_time,Run On Time Triggers,Ausführung zeitgesteuerter Trigger,0
-model,"ir.model.field-res.group,name",0,Model Field Group Rel,Modellfeld - Gruppe,0
-model,"ir.rule.group-res.group,name",0,Rule Group - Group,Gruppenregel - Gruppe,0
-model,"ir.rule.group-res.user,name",0,Rule Group - User,Gruppenregel - Benutzer,0
-model,"ir.sequence.type-res.group,name",0,Sequence Type - Group,Typ Nummernkreis - Gruppe,0
-model,"ir.ui.menu,name",menu_group_form,Groups,Gruppen,0
-model,"ir.ui.menu,name",menu_request_form,Requests,Anfragen,0
-model,"ir.ui.menu,name",menu_request_link_form,Request Links,Anfrageverknüpfungen,0
-model,"ir.ui.menu,name",menu_res,Users,Benutzer,0
-model,"ir.ui.menu,name",menu_user_form,Users,Benutzer,0
-model,"ir.ui.menu-res.group,name",0,UI Menu - Group,Oberfläche Menü - Gruppe,0
-model,"res.group,name",0,Group,Gruppe,0
-model,"res.group,name",group_admin,Administration,Interne Administration,0
-model,"res.request,name",0,Request,Anfrage,0
-model,"res.request.history,name",0,Request history,Bisherige Anfragen,0
-model,"res.request.link,name",0,Request link,Anfrage Verknüpfung,0
-model,"res.request.link,name",request_link_cron,Scheduler,Zeitplaner,0
-model,"res.request.reference,name",0,Request Reference,Anfrage Verweis,0
-model,"res.user,name",0,User,Benutzer,0
-model,"res.user,name",user_admin,Administrator,Administrator,0
-model,"res.user,name",user_trigger,Cron Trigger,Zeitplaner Trigger,0
-model,"res.user-res.group,name",0,User - Group,Benutzer - Gruppe,0
-model,"res.user.config.init,name",0,User Config Init,Benutzerkonfiguration Init,0
-model,"res.user.warning,name",0,User Warning,Benutzer Warnung,0
-selection,"res.request,priority",0,High,Hoch,0
-selection,"res.request,priority",0,Low,Niedrig,0
-selection,"res.request,priority",0,Normal,Normal,0
-selection,"res.request,state",0,Chatting,Schreibt gerade...,0
-selection,"res.request,state",0,Closed,Geschlossen,0
-selection,"res.request,state",0,Draft,Entwurf,0
-selection,"res.request,state",0,Waiting,Wartend,0
-selection,"res.request.history,priority",0,High,Hoch,0
-selection,"res.request.history,priority",0,Low,Niedrig,0
-selection,"res.request.history,priority",0,Normal,Normal,0
-selection,"res.request.history,state",0,Chatting,Schreibt gerade...,0
-selection,"res.request.history,state",0,Closed,Geschlossen,0
-selection,"res.request.history,state",0,Draft,Entwurf,0
-selection,"res.request.history,state",0,Waiting,Wartend,0
-view,ir.module.module,0,Cancel Installation,Vormerkung für Installation / Aktualisierung aufheben,0
-view,ir.module.module,0,Cancel Uninstallation,Deinstallation abbrechen,0
-view,ir.module.module,0,Cancel Upgrade,Vormerkung für Installation / Aktualisierung aufheben,0
-view,ir.module.module,0,Mark for Installation,Für die Installation vormerken,0
-view,ir.module.module,0,Mark for Uninstallation (beta),Für die Deinstallation (beta) vormerken,0
-view,ir.module.module,0,Mark for Upgrade,Für die Aktualisierung vormerken,0
-view,res.group,0,Access Permissions,Zugriffsberechtigungen,0
-view,res.group,0,Group,Gruppe,0
-view,res.group,0,Groups,Gruppen,0
-view,res.group,0,Members,Mitglieder,0
-view,res.group,0,Security,Sicherheit,0
-view,res.group,0,_Group,_Gruppe,0
-view,res.group,0,_Security,_Sicherheit,0
-view,res.request,0,Close,Schließen,0
-view,res.request,0,Description,Beschreibung,0
-view,res.request,0,History,Geschichte,0
-view,res.request,0,References,Verweise,0
-view,res.request,0,Reply,Antworten,0
-view,res.request,0,Request,Anfrage,0
-view,res.request,0,Requests,Anfragen,0
-view,res.request,0,Send,Senden,0
-view,res.request,0,_References,_Verweise,0
-view,res.request,0,_Request,_Anfrage,0
-view,res.request.history,0,Request History,bisherige Anfragen,0
-view,res.request.link,0,Request Link,Anfrage Verknüpfung,0
-view,res.request.reference,0,Request Reference,Anfrageverweis,0
-view,res.request.reference,0,Request References,Verweise,0
-view,res.user,0,Access Permissions,Zugriffsberechtigungen,0
-view,res.user,0,Group Membership,Gruppenzugehörigkeit,0
-view,res.user,0,Preferences,Einstellungen,0
-view,res.user,0,Security,Sicherheit,0
-view,res.user,0,User,Benutzer,0
-view,res.user,0,Users,Benutzer,0
-view,res.user,0,_Preferences,_Einstellungen,0
-view,res.user,0,_Security,_Sicherheit,0
-view,res.user,0,_User,_Benutzer,0
-view,res.user.config.init,0,Add Users,Benutzer hinzufügen,0
-view,res.user.config.init,0,Be careful that the login must be unique!,"Achten Sie darauf, dass ein Anmeldename nicht mehrfach vergeben werden kann!
-(Der Anmeldename admin wird automatisch angelegt.)",0
-view,res.user.config.init,0,You can now add some users into the system.,Sie können nun neue Benutzer der Datenbank hinzufügen,0
-view,res.user.warning,0,Warning,Warnung,0
-view,res.user.warning,0,Warnings,Warnungen,0
-wizard_button,"res.user.config,init,end",0,Cancel,Abbrechen,0
-wizard_button,"res.user.config,init,user",0,Ok,OK,0
-wizard_button,"res.user.config,user,add",0,Add,Hinzufügen,0
-wizard_button,"res.user.config,user,end",0,End,Ende,0
diff --git a/trytond/res/es_CO.csv b/trytond/res/es_CO.csv
deleted file mode 100644
index d5d8851..0000000
--- a/trytond/res/es_CO.csv
+++ /dev/null
@@ -1,168 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,res.group,0,The name of the group must be unique!,El nombre del grupo debe ser único!,0
-error,res.user,0,Wrong password!,,0
-error,res.user,0,You can not have two users with the same login!,No puede tener dos usuarios con el mismo nombre de usuario!,0
-error,res.user,0,"You can not remove the root user
-as it is used internally for resources
-created by the system (updates, module installation, ...)",No puede eliminar al usuario principal,0
-field,"ir.action-res.group,action_id",0,Action,Acción,0
-field,"ir.action-res.group,gid",0,Group,Grupo,0
-field,"ir.action-res.group,rec_name",0,Name,Nombre,0
-field,"ir.model.field-res.group,field_id",0,Model Field,Modelo de Campo,0
-field,"ir.model.field-res.group,group_id",0,Group,Grupo,0
-field,"ir.model.field-res.group,rec_name",0,Name,Nombre,0
-field,"ir.rule.group-res.group,group_id",0,Group,Grupo,0
-field,"ir.rule.group-res.group,rec_name",0,Name,Nombre,0
-field,"ir.rule.group-res.group,rule_group_id",0,Rule Group,Regla de Grupo,0
-field,"ir.rule.group-res.user,rec_name",0,Name,Nombre,0
-field,"ir.rule.group-res.user,rule_group_id",0,Rule Group,Regla de Grupo,0
-field,"ir.rule.group-res.user,user_id",0,User,Usuario,0
-field,"ir.sequence,groups",0,User Groups,Grupos de usuarios,0
-field,"ir.sequence.strict,groups",0,User Groups,Grupos de usuarios,0
-field,"ir.sequence.type,groups",0,User Groups,Grupos de usuarios,0
-field,"ir.sequence.type-res.group,group",0,User Groups,Grupos de usuarios,0
-field,"ir.sequence.type-res.group,rec_name",0,Name,Nombre de Contacto,1
-field,"ir.sequence.type-res.group,sequence_type",0,Sequence Type,Tipo de Secuencia,1
-field,"ir.ui.menu-res.group,gid",0,Group,Grupo,0
-field,"ir.ui.menu-res.group,menu_id",0,Menu,Menú,0
-field,"ir.ui.menu-res.group,rec_name",0,Name,Nombre,0
-field,"res.group,menu_access",0,Access Menu,Menú para Acceder,0
-field,"res.group,model_access",0,Access Model,Modelo al Acceder,0
-field,"res.group,name",0,Name,Nombre,0
-field,"res.group,rec_name",0,Name,Nombre,0
-field,"res.group,rule_groups",0,Rules,Reglas,0
-field,"res.group,users",0,Users,Usuarios,0
-field,"res.request,act_from",0,From,De,0
-field,"res.request,active",0,Active,Activ@,0
-field,"res.request,act_to",0,To,A,0
-field,"res.request,body",0,Body,Cuerpo,0
-field,"res.request,date_sent",0,Date,Fecha,0
-field,"res.request,history",0,History,Historia,0
-field,"res.request.history,act_from",0,From,De,0
-field,"res.request.history,act_to",0,To,A,0
-field,"res.request.history,body",0,Body,Cuerpo,0
-field,"res.request.history,date_sent",0,Date sent,Fecha de envío,0
-field,"res.request.history,name",0,Summary,Resumen,0
-field,"res.request.history,number_references",0,References,Referencias,0
-field,"res.request.history,priority",0,Priority,Prioridad,0
-field,"res.request.history,rec_name",0,Name,Nombre,0
-field,"res.request.history,request",0,Request,Solicitud,0
-field,"res.request.history,state",0,State,Estado,0
-field,"res.request.history,subject",0,Subject,Título,0
-field,"res.request.link,model",0,Model,Modelo,0
-field,"res.request.link,name",0,Name,Nombre,0
-field,"res.request.link,priority",0,Priority,Prioridad,0
-field,"res.request.link,rec_name",0,Name,Nombre,0
-field,"res.request,name",0,Subject,Título,0
-field,"res.request,number_references",0,Number of References,Número de referencias,0
-field,"res.request,priority",0,Priority,Prioridad,0
-field,"res.request,rec_name",0,Name,Nombre,0
-field,"res.request.reference,rec_name",0,Name,Nombre,0
-field,"res.request.reference,reference",0,Reference,Referencia,0
-field,"res.request.reference,request",0,Request,Solicitud,0
-field,"res.request,references",0,References,Referencias,0
-field,"res.request,state",0,State,Estado,0
-field,"res.request,trigger_date",0,Trigger Date,Fecha de Activación,0
-field,"res.user,action",0,Home Action,Acción Inicial,0
-field,"res.user,active",0,Active,Activ@,0
-field,"res.user,connections",0,Connections,,0
-field,"res.user,email",0,Email,Correo Electrónico,0
-field,"res.user,groups",0,Groups,Grupos,0
-field,"res.user,language",0,Language,Idioma,0
-field,"res.user,language_direction",0,Language Direction,Dirección del Idioma,0
-field,"res.user,login",0,Login,Usuario,0
-field,"res.user,menu",0,Menu Action,Acción del Menú,0
-field,"res.user,name",0,Name,Nombre,0
-field,"res.user,password",0,Password,Clave,0
-field,"res.user,rec_name",0,Name,Nombre,0
-field,"res.user-res.group,gid",0,Group,Grupo,0
-field,"res.user-res.group,rec_name",0,Name,Nombre,0
-field,"res.user-res.group,uid",0,User,Usuario,0
-field,"res.user,rule_groups",0,Rules,Reglas,0
-field,"res.user,salt",0,Salt,,0
-field,"res.user,signature",0,Signature,Firma,0
-field,"res.user,status_bar",0,Status Bar,Barra de Estado,0
-field,"res.user,timezone",0,Timezone,Zona horaria,0
-field,"res.user.warning,always",0,Always,Siempre,0
-field,"res.user.warning,name",0,Name,Nombre,0
-field,"res.user.warning,rec_name",0,Name,Nombre,0
-field,"res.user,warnings",0,Warnings,Advertencias,0
-field,"res.user.warning,user",0,User,Usuario,0
-help,"ir.sequence.type,groups",0,Groups allowed to edit the sequences of this type,Los grupos son autorizados para editar secuencias en este tipo,0
-model,"ir.action,name",act_group_form,Groups,Grupos,0
-model,"ir.action,name",act_request_link_form,Request Links,Enlace de Solicitud,0
-model,"ir.action,name",act_request_form,Requests,Solicitudes,0
-model,"ir.action,name",act_user_form,Users,Usuarios,0
-model,"ir.action-res.group,name",0,Action - Group,Acción - Grupo,0
-model,"ir.model.field-res.group,name",0,Model Field Group Rel,Modelo de Campo Grupo Rel,0
-model,"ir.rule.group-res.group,name",0,Rule Group - Group,Regla de Grupo - Grupo,0
-model,"ir.rule.group-res.user,name",0,Rule Group - User,Regla de Grupo - Usuario,0
-model,"ir.sequence.type-res.group,name",0,Sequence Type - Group,Secuencia de Tipo - Grupo,0
-model,"ir.ui.menu,name",menu_group_form,Groups,Grupos,0
-model,"ir.ui.menu,name",menu_request_link_form,Request Links,Enlace de Solicitud,0
-model,"ir.ui.menu,name",menu_request_form,Requests,Solicitudes,0
-model,"ir.ui.menu,name",menu_res,Users,Usuarios,0
-model,"ir.ui.menu,name",menu_user_form,Users,Usuarios,0
-model,"ir.ui.menu-res.group,name",0,UI Menu - Group,Menú UI - Grupo,0
-model,"res.group,name",group_admin,Administration,Administración,0
-model,"res.group,name",0,Group,Grupo,0
-model,"res.request.history,name",0,Request history,Historia de Solicitud,0
-model,"res.request.link,name",0,Request link,Enlace de Solicitud,0
-model,"res.request.link,name",request_link_cron,Scheduler,Agendador,0
-model,"res.request,name",0,Request,Solicitud,0
-model,"res.request.reference,name",0,Request Reference,Referencia de Solicitud,0
-model,"res.user.config.init,name",0,User Config Init,Inicio de Configuración de Usuario,0
-model,"res.user,name",user_admin,Administrator,Administrador,0
-model,"res.user,name",0,User,Usuario,0
-model,"res.user-res.group,name",0,User - Group,Usuario - Grupo,0
-model,"res.user.warning,name",0,User Warning,Advertencia al Usuario,0
-selection,"res.request.history,priority",0,High,Alto,0
-selection,"res.request.history,priority",0,Low,Bajo,0
-selection,"res.request.history,priority",0,Normal,Normal,0
-selection,"res.request.history,state",0,Chatting,Charla,0
-selection,"res.request.history,state",0,Closed,Cerrado,0
-selection,"res.request.history,state",0,Draft,Borrador,0
-selection,"res.request.history,state",0,Waiting,En Espera,0
-selection,"res.request,priority",0,High,Alto,0
-selection,"res.request,priority",0,Low,Bajo,0
-selection,"res.request,priority",0,Normal,Normal,0
-selection,"res.request,state",0,Chatting,Charla,0
-selection,"res.request,state",0,Closed,Cerrado,0
-selection,"res.request,state",0,Draft,Borrador,0
-selection,"res.request,state",0,Waiting,En espera,0
-view,ir.module.module,0,Cancel Installation,Cancelar Instalación,0
-view,ir.module.module,0,Cancel Uninstallation,Cancelar la desinstalación,0
-view,ir.module.module,0,Cancel Upgrade,Cancelar actualización,0
-view,ir.module.module,0,Mark for Installation,Marcar para Instalación,0
-view,ir.module.module,0,Mark for Uninstallation (beta),Marcar para Desinstalar,0
-view,ir.module.module,0,Mark for Upgrade,Marcar para Actualizar,0
-view,res.group,0,Access Permissions,Permisos de Acceso,0
-view,res.group,0,Group,Grupo,0
-view,res.group,0,Groups,Grupos,0
-view,res.group,0,Members,Miembros,0
-view,res.group,0,Security,Seguridad,0
-view,res.request,0,Close,Cerrar,0
-view,res.request,0,References,Referencias,0
-view,res.request,0,Reply,Responder,0
-view,res.request,0,Request,Solicitud,0
-view,res.request,0,Requests,Solicitudes,0
-view,res.request,0,Send,Enviar,0
-view,res.request.history,0,Request History,Historial de Solicitudes,0
-view,res.request.link,0,Request Link,Enlace de Solicitud,0
-view,res.request.reference,0,Request Reference,Referencia de Solicitud,0
-view,res.request.reference,0,Request References,Referencias de Solicitud,0
-view,res.user,0,Access Permissions,Permisos de Acceso,0
-view,res.user,0,Group Membership,Membresía del grupo,0
-view,res.user,0,Preferences,Preferencias,0
-view,res.user,0,Security,Seguridad,0
-view,res.user,0,User,Usuario,0
-view,res.user,0,Users,Usuarios,0
-view,res.user.config.init,0,Add Users,Adicionar Usuarios,0
-view,res.user.config.init,0,Be careful that the login must be unique!,Asegúrese de hacer los nombres de usuario únicos,0
-view,res.user.config.init,0,You can now add some users into the system.,Ahora puede adicionar algunos usuarios al sistema.,0
-view,res.user.warning,0,Warning,Advertencia,0
-view,res.user.warning,0,Warnings,Advertencia,0
-wizard_button,"res.user.config,init,end",0,Cancel,Cancelar,0
-wizard_button,"res.user.config,init,user",0,Ok,Aceptar,0
-wizard_button,"res.user.config,user,add",0,Add,Adicionar,0
-wizard_button,"res.user.config,user,end",0,End,Finalizar,0
diff --git a/trytond/res/es_ES.csv b/trytond/res/es_ES.csv
deleted file mode 100644
index 21547a3..0000000
--- a/trytond/res/es_ES.csv
+++ /dev/null
@@ -1,158 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,res.group,0,The name of the group must be unique!,El nombre del grupo debe ser único,0
-error,res.user,0,Wrong password!,Contraseña incorrecta,0
-error,res.user,0,You can not have two users with the same login!,No puede tener dos usuarios con el mismo nombre de usuario,0
-error,res.user,0,"You can not remove the root user
-as it is used internally for resources
-created by the system (updates, module installation, ...)","No puede eliminar al usuario root
-ya que se utiliza internamente para recursos
-creados por el sistema (actualizaciones, instalación de módulos, ...)",0
-field,"ir.action-res.group,action_id",0,Action,Acción,0
-field,"ir.action-res.group,gid",0,Group,Grupo,0
-field,"ir.action-res.group,rec_name",0,Name,Nombre,0
-field,"ir.model.field-res.group,field_id",0,Model Field,Modelo de campo,0
-field,"ir.model.field-res.group,group_id",0,Group,Grupo,0
-field,"ir.model.field-res.group,rec_name",0,Name,Nombre,0
-field,"ir.rule.group-res.group,group_id",0,Group,Grupo,0
-field,"ir.rule.group-res.group,rec_name",0,Name,Nombre,0
-field,"ir.rule.group-res.group,rule_group_id",0,Rule Group,Regla de grupo,0
-field,"ir.rule.group-res.user,rec_name",0,Name,Nombre,0
-field,"ir.rule.group-res.user,rule_group_id",0,Rule Group,Regla de grupo,0
-field,"ir.rule.group-res.user,user_id",0,User,Usuario,0
-field,"ir.ui.menu-res.group,gid",0,Group,Grupo,0
-field,"ir.ui.menu-res.group,menu_id",0,Menu,Menú,0
-field,"ir.ui.menu-res.group,rec_name",0,Name,Nombre,0
-field,"res.group,menu_access",0,Access Menu,Menú de acceso,0
-field,"res.group,model_access",0,Access Model,Modelo de acceso,0
-field,"res.group,name",0,Name,Nombre,0
-field,"res.group,rec_name",0,Name,Nombre,0
-field,"res.group,rule_groups",0,Rules,Reglas,0
-field,"res.group,users",0,Users,Usuarios,0
-field,"res.request,act_from",0,From,De,0
-field,"res.request,active",0,Active,Activo,0
-field,"res.request,act_to",0,To,A,0
-field,"res.request,body",0,Body,Cuerpo,0
-field,"res.request,date_sent",0,Date,Fecha,0
-field,"res.request,history",0,History,Histórico,0
-field,"res.request.history,act_from",0,From,De,0
-field,"res.request.history,act_to",0,To,A,0
-field,"res.request.history,body",0,Body,Cuerpo,0
-field,"res.request.history,date_sent",0,Date sent,Fecha de envío,0
-field,"res.request.history,name",0,Summary,Resumen,0
-field,"res.request.history,number_references",0,References,Referencias,0
-field,"res.request.history,priority",0,Priority,Prioridad,0
-field,"res.request.history,rec_name",0,Name,Nombre,0
-field,"res.request.history,request",0,Request,Solicitud,0
-field,"res.request.history,state",0,State,Estado,0
-field,"res.request.history,subject",0,Subject,Asunto,0
-field,"res.request.link,model",0,Model,Modelo,0
-field,"res.request.link,name",0,Name,Nombre,0
-field,"res.request.link,priority",0,Priority,Prioridad,0
-field,"res.request.link,rec_name",0,Name,Nombre,0
-field,"res.request,name",0,Subject,Asunto,0
-field,"res.request,number_references",0,Number of References,Número de referencias,0
-field,"res.request,priority",0,Priority,Prioridad,0
-field,"res.request,rec_name",0,Name,Nombre,0
-field,"res.request.reference,rec_name",0,Name,Nombre,0
-field,"res.request.reference,reference",0,Reference,Referencia,0
-field,"res.request.reference,request",0,Request,Solicitud,0
-field,"res.request,references",0,References,Referencias,0
-field,"res.request,state",0,State,Estado,0
-field,"res.request,trigger_date",0,Trigger Date,Fecha del disparo,0
-field,"res.user,action",0,Home Action,Acción inicial,0
-field,"res.user,active",0,Active,Activo,0
-field,"res.user,connections",0,Connections,Conexiones,0
-field,"res.user,email",0,Email,Correo electrónico,0
-field,"res.user,groups",0,Groups,Grupos,0
-field,"res.user,language",0,Language,Idioma,0
-field,"res.user,language_direction",0,Language Direction,Dirección del idioma,0
-field,"res.user,login",0,Login,Nombre de usuario,0
-field,"res.user,menu",0,Menu Action,Menú de acciones,0
-field,"res.user,name",0,Name,Nombre,0
-field,"res.user,password",0,Password,Contraseña,0
-field,"res.user,rec_name",0,Name,Nombre,0
-field,"res.user-res.group,gid",0,Group,Grupo,0
-field,"res.user-res.group,rec_name",0,Name,Nombre,0
-field,"res.user-res.group,uid",0,User,Usuario,0
-field,"res.user,rule_groups",0,Rules,Reglas,0
-field,"res.user,salt",0,Salt,Sal,0
-field,"res.user,signature",0,Signature,Firma,0
-field,"res.user,status_bar",0,Status Bar,Barra de estado,0
-field,"res.user,timezone",0,Timezone,Zona horaria,0
-field,"res.user.warning,always",0,Always,Siempre,0
-field,"res.user.warning,name",0,Name,Nombre,0
-field,"res.user.warning,rec_name",0,Name,Nombre,0
-field,"res.user,warnings",0,Warnings,Avisos,0
-field,"res.user.warning,user",0,User,Usuario,0
-model,"ir.action,name",act_group_form,Groups,Grupos,0
-model,"ir.action,name",act_request_link_form,Request Links,Enlaces a solicitudes,0
-model,"ir.action,name",act_request_form,Requests,Solicitudes,0
-model,"ir.action,name",act_user_form,Users,Usuarios,0
-model,"ir.action-res.group,name",0,Action - Group,Acción - Grupo,0
-model,"ir.model.field-res.group,name",0,Model Field Group Rel,Relación entre grupo y campo del modelo,0
-model,"ir.rule.group-res.group,name",0,Rule Group - Group,Regla de grupo - grupo,0
-model,"ir.rule.group-res.user,name",0,Rule Group - User,Regla de grupo - usuario,0
-model,"ir.ui.menu,name",menu_group_form,Groups,Grupos,0
-model,"ir.ui.menu,name",menu_request_link_form,Request Links,Enlaces a solicitudes,0
-model,"ir.ui.menu,name",menu_request_form,Requests,Solicitudes,0
-model,"ir.ui.menu,name",menu_res,Users,Usuarios,0
-model,"ir.ui.menu,name",menu_user_form,Users,Usuarios,0
-model,"ir.ui.menu-res.group,name",0,UI Menu - Group,Menú UI - Grupo,0
-model,"res.group,name",group_admin,Administration,Administración,0
-model,"res.group,name",0,Group,Grupo,0
-model,"res.request.history,name",0,Request history,Histórico de solicitudes,0
-model,"res.request.link,name",0,Request link,Enlace a solicitud,0
-model,"res.request.link,name",request_link_cron,Scheduler,Programador de tareas,0
-model,"res.request,name",0,Request,Solicitud,0
-model,"res.request.reference,name",0,Request Reference,Referencia de la solicitud,0
-model,"res.user.config.init,name",0,User Config Init,Inicialización de la configuración de usuario,0
-model,"res.user,name",user_admin,Administrator,Administrador,0
-model,"res.user,name",0,User,Usuario,0
-model,"res.user-res.group,name",0,User - Group,Usuario - Grupo,0
-model,"res.user.warning,name",0,User Warning,Aviso al usuario,0
-selection,"res.request.history,priority",0,High,Alta,0
-selection,"res.request.history,priority",0,Low,Baja,0
-selection,"res.request.history,priority",0,Normal,Normal,0
-selection,"res.request.history,state",0,Chatting,En discusión,0
-selection,"res.request.history,state",0,Closed,Cerrada,0
-selection,"res.request.history,state",0,Draft,Borrador,0
-selection,"res.request.history,state",0,Waiting,En espera,0
-selection,"res.request,priority",0,High,Alta,0
-selection,"res.request,priority",0,Low,Baja,0
-selection,"res.request,priority",0,Normal,Normal,0
-selection,"res.request,state",0,Chatting,En discusión,0
-selection,"res.request,state",0,Closed,Cerrada,0
-selection,"res.request,state",0,Draft,Borrador,0
-selection,"res.request,state",0,Waiting,En espera,0
-view,ir.module.module,0,Cancel Installation,Cancelar instalación,0
-view,ir.module.module,0,Cancel Uninstallation,Cancelar la desinstalación,0
-view,ir.module.module,0,Cancel Upgrade,Cancelar actualización,0
-view,ir.module.module,0,Mark for Installation,Marcar para Instalación,0
-view,ir.module.module,0,Mark for Uninstallation (beta),Marcar para desinstalar (beta),0
-view,ir.module.module,0,Mark for Upgrade,Marcar para actualizar,0
-view,res.group,0,Group,Grupo,0
-view,res.group,0,Groups,Grupos,0
-view,res.group,0,Security,Seguridad,0
-view,res.request,0,Close,Cerrar,0
-view,res.request,0,References,Referencias,0
-view,res.request,0,Reply,Responder,0
-view,res.request,0,Request,Solicitud,0
-view,res.request,0,Requests,Solicitudes,0
-view,res.request,0,Send,Enviar,0
-view,res.request.history,0,Request History,Histórico de solicitudes,0
-view,res.request.link,0,Request Link,Enlace a solicitud,0
-view,res.request.reference,0,Request Reference,Referencia de la solicitud,0
-view,res.request.reference,0,Request References,Referencias de la solicitud,0
-view,res.user,0,Preferences,Preferencias,0
-view,res.user,0,Security,Seguridad,0
-view,res.user,0,User,Usuario,0
-view,res.user,0,Users,Usuarios,0
-view,res.user.config.init,0,Add Users,Añadir usuarios,0
-view,res.user.config.init,0,Be careful that the login must be unique!,Asegúrese de hacer los nombres de usuario únicos,0
-view,res.user.config.init,0,You can now add some users into the system.,Ahora puede añadir algunos usuarios al sistema.,0
-view,res.user.warning,0,Warning,Advertencia,0
-view,res.user.warning,0,Warnings,Advertencias,0
-wizard_button,"res.user.config,init,end",0,Cancel,Cancelar,0
-wizard_button,"res.user.config,init,user",0,Ok,Aceptar,0
-wizard_button,"res.user.config,user,add",0,Add,Añadir,0
-wizard_button,"res.user.config,user,end",0,End,Finalizar,0
diff --git a/trytond/res/fr_FR.csv b/trytond/res/fr_FR.csv
deleted file mode 100644
index 8fc76cb..0000000
--- a/trytond/res/fr_FR.csv
+++ /dev/null
@@ -1,175 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,res.group,0,The name of the group must be unique!,Le nom du groupe doit être unique !,0
-error,res.user,0,Wrong password!,Mauvais mot de passe !,0
-error,res.user,0,You can not have two users with the same login!,Vous ne pouvez pas créer deux utilisateur avec le même nom !,0
-error,res.user,0,"You can not remove the root user
-as it is used internally for resources
-created by the system (updates, module installation, ...)","Vous ne pouvez pas supprimer l'utilisateur racine
-puisqu'il est utilisé en interne pour créer
-des ressources par le système (mise-à-jour, installation de module, ...)",0
-field,"ir.action-res.group,action_id",0,Action,Action,0
-field,"ir.action-res.group,gid",0,Group,Groupe,0
-field,"ir.action-res.group,rec_name",0,Name,Nom,0
-field,"ir.model.field-res.group,field_id",0,Model Field,Champ de modèle,0
-field,"ir.model.field-res.group,group_id",0,Group,Groupe,0
-field,"ir.model.field-res.group,rec_name",0,Name,Nom,0
-field,"ir.rule.group-res.group,group_id",0,Group,Groupe,0
-field,"ir.rule.group-res.group,rec_name",0,Name,Nom,0
-field,"ir.rule.group-res.group,rule_group_id",0,Rule Group,Groupe de règle,0
-field,"ir.rule.group-res.user,rec_name",0,Name,Nom,0
-field,"ir.rule.group-res.user,rule_group_id",0,Rule Group,Groupe de règle,0
-field,"ir.rule.group-res.user,user_id",0,User,Utilisateur,0
-field,"ir.sequence,groups",0,User Groups,Groupes de l'utilisateur,0
-field,"ir.sequence.strict,groups",0,User Groups,Groupes d'utilisateurs,0
-field,"ir.sequence.type,groups",0,User Groups,Groupes d'utilisateurs,0
-field,"ir.sequence.type-res.group,group",0,User Groups,Groupes d'utilisateur,0
-field,"ir.sequence.type-res.group,rec_name",0,Name,Nom,0
-field,"ir.sequence.type-res.group,sequence_type",0,Sequence Type,Type de séquence,0
-field,"ir.ui.menu-res.group,gid",0,Group,Groupe,0
-field,"ir.ui.menu-res.group,menu_id",0,Menu,Menu,0
-field,"ir.ui.menu-res.group,rec_name",0,Name,Nom,0
-field,"res.group,field_access",0,Access Field,Droit d'accès,0
-field,"res.group,menu_access",0,Access Menu,Accès aux menus,0
-field,"res.group,model_access",0,Access Model,Accès aux modèles,0
-field,"res.group,name",0,Name,Nom,0
-field,"res.group,rec_name",0,Name,Nom,0
-field,"res.group,rule_groups",0,Rules,Règles,0
-field,"res.group,users",0,Users,Utilisateurs,0
-field,"res.request,act_from",0,From,De,0
-field,"res.request,act_to",0,To,À,0
-field,"res.request,active",0,Active,Actif,0
-field,"res.request,body",0,Body,Demande,0
-field,"res.request,date_sent",0,Date,Date,0
-field,"res.request,history",0,History,Historique,0
-field,"res.request,name",0,Subject,Sujet,0
-field,"res.request,number_references",0,Number of References,Nombre de référence,0
-field,"res.request,priority",0,Priority,Priorité,0
-field,"res.request,rec_name",0,Name,Nom,0
-field,"res.request,references",0,References,Références,0
-field,"res.request,state",0,State,État,0
-field,"res.request,trigger_date",0,Trigger Date,Date de déclenchement,0
-field,"res.request.history,act_from",0,From,De,0
-field,"res.request.history,act_to",0,To,À,0
-field,"res.request.history,body",0,Body,Corps,0
-field,"res.request.history,date_sent",0,Date sent,Date d'envoi,0
-field,"res.request.history,name",0,Summary,Résumé,0
-field,"res.request.history,number_references",0,References,Références,0
-field,"res.request.history,priority",0,Priority,Priorité,0
-field,"res.request.history,rec_name",0,Name,Nom,0
-field,"res.request.history,request",0,Request,Demande,0
-field,"res.request.history,state",0,State,État,0
-field,"res.request.history,subject",0,Subject,Sujet,0
-field,"res.request.link,model",0,Model,Modèle,0
-field,"res.request.link,name",0,Name,Nom,0
-field,"res.request.link,priority",0,Priority,Priorité,0
-field,"res.request.link,rec_name",0,Name,Nom,0
-field,"res.request.reference,rec_name",0,Name,Nom,0
-field,"res.request.reference,reference",0,Reference,Référence,0
-field,"res.request.reference,request",0,Request,Demande,0
-field,"res.user,action",0,Home Action,Action accueil,0
-field,"res.user,active",0,Active,Actif,0
-field,"res.user,connections",0,Connections,Connexions,0
-field,"res.user,email",0,Email,E-mail,0
-field,"res.user,groups",0,Groups,Groupes,0
-field,"res.user,language",0,Language,Langue,0
-field,"res.user,language_direction",0,Language Direction,Direction de la langue,0
-field,"res.user,login",0,Login,Nom d'utilisateur,0
-field,"res.user,menu",0,Menu Action,Action menu,0
-field,"res.user,name",0,Name,Nom,0
-field,"res.user,password",0,Password,Mot de passe,0
-field,"res.user,rec_name",0,Name,Nom,0
-field,"res.user,rule_groups",0,Rules,Règles,0
-field,"res.user,salt",0,Salt,Sel,0
-field,"res.user,signature",0,Signature,Signature,0
-field,"res.user,status_bar",0,Status Bar,Barre d'état,0
-field,"res.user,timezone",0,Timezone,Fuseau horaire,0
-field,"res.user,warnings",0,Warnings,Avertissements,0
-field,"res.user-res.group,gid",0,Group,Groupe,0
-field,"res.user-res.group,rec_name",0,Name,Nom,0
-field,"res.user-res.group,uid",0,User,Utilisateur,0
-field,"res.user.warning,always",0,Always,Toujours,0
-field,"res.user.warning,name",0,Name,Nom,0
-field,"res.user.warning,rec_name",0,Name,Nom,0
-field,"res.user.warning,user",0,User,Utilisateur,0
-help,"ir.sequence.type,groups",0,Groups allowed to edit the sequences of this type,Groupes autorisé à éditer les séquences de ce type,0
-model,"ir.action,name",act_group_form,Groups,Groupes,0
-model,"ir.action,name",act_request_form,Requests,Demandes,0
-model,"ir.action,name",act_request_link_form,Request Links,Liens des demandes,0
-model,"ir.action,name",act_user_form,Users,Utilisateurs,0
-model,"ir.action-res.group,name",0,Action - Group,Action - Groupe,0
-model,"ir.cron,name",cron_trigger_time,Run On Time Triggers,"Lance les déclencheurs ""À temps""",0
-model,"ir.model.field-res.group,name",0,Model Field Group Rel,Champ de modèle - Group,0
-model,"ir.rule.group-res.group,name",0,Rule Group - Group,Groupe de règle - Groupe,0
-model,"ir.rule.group-res.user,name",0,Rule Group - User,Groupe de règle - Utilisateur,0
-model,"ir.sequence.type-res.group,name",0,Sequence Type - Group,Type de séquence - Groupe,0
-model,"ir.ui.menu,name",menu_group_form,Groups,Groupes,0
-model,"ir.ui.menu,name",menu_request_form,Requests,Demandes,0
-model,"ir.ui.menu,name",menu_request_link_form,Request Links,Liens des demandes,0
-model,"ir.ui.menu,name",menu_res,Users,Res,0
-model,"ir.ui.menu,name",menu_user_form,Users,Utilisateurs,0
-model,"ir.ui.menu-res.group,name",0,UI Menu - Group,Menu de l'IU - Groupe,0
-model,"res.group,name",0,Group,Groupe,0
-model,"res.group,name",group_admin,Administration,Administration,0
-model,"res.request,name",0,Request,Demande,0
-model,"res.request.history,name",0,Request history,Historique de demande,0
-model,"res.request.link,name",0,Request link,Lien de demande,0
-model,"res.request.link,name",request_link_cron,Scheduler,Planificateur,0
-model,"res.request.reference,name",0,Request Reference,Référence de la demande,0
-model,"res.user,name",0,User,Utilisateur,0
-model,"res.user,name",user_admin,Administrator,Administrateur,0
-model,"res.user,name",user_trigger,Cron Trigger,Déclencheur du planificateur,0
-model,"res.user-res.group,name",0,User - Group,Utilisateur - Groupe,0
-model,"res.user.config.init,name",0,User Config Init,Configuration d'utilisateur - Init,0
-model,"res.user.warning,name",0,User Warning,Avertissement utilisateur,0
-selection,"res.request,priority",0,High,Élevée,0
-selection,"res.request,priority",0,Low,Faible,0
-selection,"res.request,priority",0,Normal,Normale,0
-selection,"res.request,state",0,Chatting,En discussion,0
-selection,"res.request,state",0,Closed,Fermé,0
-selection,"res.request,state",0,Draft,Brouillon,0
-selection,"res.request,state",0,Waiting,En attente,0
-selection,"res.request.history,priority",0,High,Élevée,0
-selection,"res.request.history,priority",0,Low,Basse,0
-selection,"res.request.history,priority",0,Normal,Normale,0
-selection,"res.request.history,state",0,Chatting,En discussion,0
-selection,"res.request.history,state",0,Closed,Fermé,0
-selection,"res.request.history,state",0,Draft,Brouillon,0
-selection,"res.request.history,state",0,Waiting,En attente,0
-view,ir.module.module,0,Cancel Installation,Annuler l'installation,0
-view,ir.module.module,0,Cancel Uninstallation,Annuler la désinstallation,0
-view,ir.module.module,0,Cancel Upgrade,Annuler la mise à jour,0
-view,ir.module.module,0,Mark for Installation,Marquer pour l'installation,0
-view,ir.module.module,0,Mark for Uninstallation (beta),Marquer pour la désinstallation (beta),0
-view,ir.module.module,0,Mark for Upgrade,Marquer pour la mise à jour,0
-view,res.group,0,Access Permissions,Permissions d'accès,0
-view,res.group,0,Group,Groupe,0
-view,res.group,0,Groups,Groupes,0
-view,res.group,0,Members,Membres,0
-view,res.group,0,Security,Sécurité,0
-view,res.request,0,Close,Fermer,0
-view,res.request,0,Description,Description,0
-view,res.request,0,History,Historique,0
-view,res.request,0,References,Références,0
-view,res.request,0,Reply,Repondre,0
-view,res.request,0,Request,Demande,0
-view,res.request,0,Requests,Demandes,0
-view,res.request,0,Send,Envoyer,0
-view,res.request.history,0,Request History,Historique des demandes,0
-view,res.request.link,0,Request Link,Lien des demandes,0
-view,res.request.reference,0,Request Reference,Référence de la demande,0
-view,res.request.reference,0,Request References,Références de la demande,0
-view,res.user,0,Access Permissions,Permission d'accès,0
-view,res.user,0,Group Membership,Groupes,0
-view,res.user,0,Preferences,Préférences,0
-view,res.user,0,Security,Sécurité,0
-view,res.user,0,User,Utilisateur,0
-view,res.user,0,Users,Utilisateurs,0
-view,res.user.config.init,0,Add Users,Ajout d'utilisateurs,0
-view,res.user.config.init,0,Be careful that the login must be unique!,Attention l'utilisateur doit être unique !,0
-view,res.user.config.init,0,You can now add some users into the system.,Vous pouvez maintenant ajouter des utilisateurs au système.,0
-view,res.user.warning,0,Warning,Avertissement,0
-view,res.user.warning,0,Warnings,Avertissements,0
-wizard_button,"res.user.config,init,end",0,Cancel,Annuler,0
-wizard_button,"res.user.config,init,user",0,Ok,Ok,0
-wizard_button,"res.user.config,user,add",0,Add,Ajouter,0
-wizard_button,"res.user.config,user,end",0,End,Terminer,0
diff --git a/trytond/res/group.py b/trytond/res/group.py
index d5407f1..a38a5a3 100644
--- a/trytond/res/group.py
+++ b/trytond/res/group.py
@@ -4,12 +4,13 @@
 from itertools import chain
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 
 
 class MenuMany2Many(fields.Many2Many):
 
     def get(self, ids, model, name, values=None):
-        menu_obj = self.get_target(model.pool)
+        menu_obj = self.get_target()
         res = super(MenuMany2Many, self).get(ids, model, name,
                 values=values)
         menu_ids = list(set(chain(*res.values())))
@@ -36,10 +37,10 @@ class Group(ModelSQL, ModelView):
     field_access = fields.One2Many('ir.model.field.access', 'group',
         'Access Field')
     rule_groups = fields.Many2Many('ir.rule.group-res.group',
-       'group_id', 'rule_group_id', 'Rules',
+       'group', 'rule_group', 'Rules',
        domain=[('global_p', '!=', True), ('default_p', '!=', True)])
     menu_access = MenuMany2Many('ir.ui.menu-res.group',
-       'gid', 'menu_id', 'Access Menu')
+       'group', 'menu', 'Access Menu')
 
     def __init__(self):
         super(Group, self).__init__()
@@ -72,32 +73,35 @@ class Group(ModelSQL, ModelView):
 
     def create(self, vals):
         res = super(Group, self).create(vals)
+        pool = Pool()
         # Restart the cache on the domain_get method
-        self.pool.get('ir.rule').domain_get.reset()
+        pool.get('ir.rule').domain_get.reset()
         # Restart the cache for get_groups
-        self.pool.get('res.user').get_groups.reset()
+        pool.get('res.user').get_groups.reset()
         # Restart the cache for get_preferences
-        self.pool.get('res.user').get_preferences.reset()
+        pool.get('res.user').get_preferences.reset()
         return res
 
     def write(self, ids, vals):
         res = super(Group, self).write(ids, vals)
+        pool = Pool()
         # Restart the cache on the domain_get method
-        self.pool.get('ir.rule').domain_get.reset()
+        pool.get('ir.rule').domain_get.reset()
         # Restart the cache for get_groups
-        self.pool.get('res.user').get_groups.reset()
+        pool.get('res.user').get_groups.reset()
         # Restart the cache for get_preferences
-        self.pool.get('res.user').get_preferences.reset()
+        pool.get('res.user').get_preferences.reset()
         return res
 
     def delete(self, ids):
         res = super(Group, self).delete(ids)
+        pool = Pool()
         # Restart the cache on the domain_get method
-        self.pool.get('ir.rule').domain_get.reset()
+        pool.get('ir.rule').domain_get.reset()
         # Restart the cache for get_groups
-        self.pool.get('res.user').get_groups.reset()
+        pool.get('res.user').get_groups.reset()
         # Restart the cache for get_preferences
-        self.pool.get('res.user').get_preferences.reset()
+        pool.get('res.user').get_preferences.reset()
         return res
 
 Group()
diff --git a/trytond/res/group.xml b/trytond/res/group.xml
index 6a17c65..b015873 100644
--- a/trytond/res/group.xml
+++ b/trytond/res/group.xml
@@ -16,15 +16,12 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="name"/>
                     <notebook>
                         <page string="Members" col="2" id="members">
-                            <separator name="users" colspan="2"/>
                             <field name="users" colspan="2"/>
                         </page>
                         <page string="Access Permissions" col="2" id="permissions">
                             <field name="model_access"/>
                             <field name="field_access"/>
-                            <separator name="menu_access" colspan="2"/>
                             <field name="menu_access" colspan="2"/>
-                            <separator name="rule_groups" colspan="2"/>
                             <field name="rule_groups" colspan="2"/>
                         </page>
                     </notebook>
@@ -38,7 +35,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Groups" fill="1">
-                    <field name="name" select="1"/>
+                    <field name="name"/>
                 </tree>
                 ]]>
             </field>
@@ -60,8 +57,13 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="group_view_form"/>
             <field name="act_window" ref="act_group_form"/>
         </record>
-        <menuitem parent="res.menu_res" groups="group_admin"
+        <menuitem parent="res.menu_res"
             action="act_group_form" id="menu_group_form"/>
+        <record model="ir.ui.menu-res.group" id="menu_group_form_admin">
+            <field name="menu" ref="menu_group_form"/>
+            <field name="group" ref="group_admin"/>
+        </record>
+
         <record model="ir.model.access" id="access_group">
             <field name="model" search="[('model', '=', 'res.group')]"/>
             <field name="perm_read" eval="True"/>
diff --git a/trytond/res/ir.py b/trytond/res/ir.py
index 3aea3a3..be83198 100644
--- a/trytond/res/ir.py
+++ b/trytond/res/ir.py
@@ -3,15 +3,16 @@
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.backend import TableHandler
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 
 
 class UIMenuGroup(ModelSQL):
     "UI Menu - Group"
     _name = 'ir.ui.menu-res.group'
     _description = __doc__
-    menu_id = fields.Many2One('ir.ui.menu', 'Menu', ondelete='CASCADE',
+    menu = fields.Many2One('ir.ui.menu', 'Menu', ondelete='CASCADE',
             select=1, required=True)
-    gid = fields.Many2One('res.group', 'Group', ondelete='CASCADE',
+    group = fields.Many2One('res.group', 'Group', ondelete='CASCADE',
             select=1, required=True)
 
     def init(self, module_name):
@@ -20,24 +21,28 @@ class UIMenuGroup(ModelSQL):
         TableHandler.table_rename(cursor, 'ir_ui_menu_group_rel', self._table)
         TableHandler.sequence_rename(cursor, 'ir_ui_menu_group_rel_id_seq',
                 self._table + '_id_seq')
+        # Migration from 2.0 menu_id and gid renamed into menu group
+        table = TableHandler(cursor, self, module_name)
+        table.column_rename('menu_id', 'menu')
+        table.column_rename('gid', 'group')
         super(UIMenuGroup, self).init(module_name)
 
     def create(self, vals):
         res = super(UIMenuGroup, self).create(vals)
         # Restart the cache on the domain_get method
-        self.pool.get('ir.rule').domain_get.reset()
+        Pool().get('ir.rule').domain_get.reset()
         return res
 
     def write(self, ids, vals):
         res = super(UIMenuGroup, self).write(ids, vals)
         # Restart the cache on the domain_get method
-        self.pool.get('ir.rule').domain_get.reset()
+        Pool().get('ir.rule').domain_get.reset()
         return res
 
     def delete(self, ids):
         res = super(UIMenuGroup, self).delete(ids)
         # Restart the cache on the domain_get method
-        self.pool.get('ir.rule').domain_get.reset()
+        Pool().get('ir.rule').domain_get.reset()
         return res
 
 UIMenuGroup()
@@ -47,9 +52,9 @@ class ActionGroup(ModelSQL):
     "Action - Group"
     _name = 'ir.action-res.group'
     _description = __doc__
-    action_id = fields.Many2One('ir.action', 'Action', ondelete='CASCADE',
+    action = fields.Many2One('ir.action', 'Action', ondelete='CASCADE',
             select=1, required=True)
-    gid = fields.Many2One('res.group', 'Group', ondelete='CASCADE',
+    group = fields.Many2One('res.group', 'Group', ondelete='CASCADE',
             select=1, required=True)
 
     def init(self, module_name):
@@ -58,24 +63,36 @@ class ActionGroup(ModelSQL):
         TableHandler.table_rename(cursor, 'ir_action_group_rel', self._table)
         TableHandler.sequence_rename(cursor, 'ir_action_group_rel_id_seq',
                 self._table + '_id_seq')
+        # Migration from 2.0 action_id and gid renamed into action and group
+        table = TableHandler(cursor, self, module_name)
+        table.column_rename('action_id', 'action')
+        table.column_rename('gid', 'group')
         super(ActionGroup, self).init(module_name)
 
     def create(self, vals):
+        action_obj = Pool().get('ir.action')
+        if vals.get('action'):
+            vals = vals.copy()
+            vals['action'] = action_obj.get_action_id(vals['action'])
         res = super(ActionGroup, self).create(vals)
         # Restart the cache on the domain_get method
-        self.pool.get('ir.rule').domain_get.reset()
+        Pool().get('ir.rule').domain_get.reset()
         return res
 
     def write(self, ids, vals):
+        action_obj = Pool().get('ir.action')
+        if vals.get('action'):
+            vals = vals.copy()
+            vals['action'] = action_obj.get_action_id(vals['action'])
         res = super(ActionGroup, self).write(ids, vals)
         # Restart the cache on the domain_get method
-        self.pool.get('ir.rule').domain_get.reset()
+        Pool().get('ir.rule').domain_get.reset()
         return res
 
     def delete(self, ids):
         res = super(ActionGroup, self).delete(ids)
         # Restart the cache on the domain_get method
-        self.pool.get('ir.rule').domain_get.reset()
+        Pool().get('ir.rule').domain_get.reset()
         return res
 
 ActionGroup()
@@ -105,9 +122,9 @@ class RuleGroupGroup(ModelSQL):
     "Rule Group - Group"
     _name = 'ir.rule.group-res.group'
     _description = __doc__
-    rule_group_id = fields.Many2One('ir.rule.group', 'Rule Group',
+    rule_group = fields.Many2One('ir.rule.group', 'Rule Group',
             ondelete='CASCADE', select=1, required=True)
-    group_id = fields.Many2One('res.group', 'Group', ondelete='CASCADE',
+    group = fields.Many2One('res.group', 'Group', ondelete='CASCADE',
             select=1, required=True)
 
     def init(self, module_name):
@@ -116,6 +133,11 @@ class RuleGroupGroup(ModelSQL):
         TableHandler.table_rename(cursor, 'group_rule_group_rel', self._table)
         TableHandler.sequence_rename(cursor, 'group_rule_group_rel_id_seq',
                 self._table + '_id_seq')
+        # Migration from 2.0 rule_group_id and group_id renamed into rule_group
+        # and group
+        table = TableHandler(cursor, self, module_name)
+        table.column_rename('rule_group_id', 'rule_group')
+        table.column_rename('group_id', 'group')
         super(RuleGroupGroup, self).init(module_name)
 
 RuleGroupGroup()
@@ -125,9 +147,9 @@ class RuleGroupUser(ModelSQL):
     "Rule Group - User"
     _name = 'ir.rule.group-res.user'
     _description = __doc__
-    rule_group_id = fields.Many2One('ir.rule.group', 'Rule Group',
+    rule_group = fields.Many2One('ir.rule.group', 'Rule Group',
             ondelete='CASCADE', select=1, required=True)
-    user_id = fields.Many2One('res.user', 'User', ondelete='CASCADE',
+    user = fields.Many2One('res.user', 'User', ondelete='CASCADE',
             select=1, required=True)
 
     def init(self, module_name):
@@ -136,6 +158,11 @@ class RuleGroupUser(ModelSQL):
         TableHandler.table_rename(cursor, 'user_rule_group_rel', self._table)
         TableHandler.sequence_rename(cursor, 'user_rule_group_rel_id_seq',
                 self._table + '_id_seq')
+        # Migration from 2.0 rule_group_id and user_id renamed into rule_group
+        # and user
+        table = TableHandler(cursor, self, module_name)
+        table.column_rename('rule_group_id', 'rule_group')
+        table.column_rename('user_id', 'user')
         super(RuleGroupUser, self).init(module_name)
 
 RuleGroupUser()
@@ -147,7 +174,7 @@ class Lang(ModelSQL, ModelView):
     def write(self, ids, vals):
         res = super(Lang, self).write(ids, vals)
         # Restart the cache for get_preferences
-        self.pool.get('res.user').get_preferences.reset()
+        Pool().get('res.user').get_preferences.reset()
         return res
 
 Lang()
@@ -172,21 +199,21 @@ class SequenceTypeGroup(ModelSQL):
             ondelete='CASCADE', select=1, required=True)
 
     def delete(self, ids):
-        rule_obj = self.pool.get('ir.rule')
+        rule_obj = Pool().get('ir.rule')
         res = super(SequenceTypeGroup, self).delete(ids)
         # Restart the cache on the domain_get method of ir.rule
         rule_obj.domain_get.reset()
         return res
 
     def create(self, vals):
-        rule_obj = self.pool.get('ir.rule')
+        rule_obj = Pool().get('ir.rule')
         res = super(SequenceTypeGroup, self).create(vals)
         # Restart the cache on the domain_get method of ir.rule
         rule_obj.domain_get.reset()
         return res
 
     def write(self, ids, vals):
-        rule_obj = self.pool.get('ir.rule')
+        rule_obj = Pool().get('ir.rule')
         res = super(SequenceTypeGroup, self).write(ids, vals)
         # Restart the cache on the domain_get method
         rule_obj.domain_get.reset()
@@ -201,7 +228,7 @@ class Sequence(ModelSQL, ModelView):
         'User Groups'), 'get_groups', searcher='search_groups')
 
     def get_groups(self, ids, name):
-        sequence_type_obj = self.pool.get('ir.sequence.type')
+        sequence_type_obj = Pool().get('ir.sequence.type')
         sequences= self.browse(ids)
         code2seq = {}
         for sequence in sequences:
@@ -221,7 +248,7 @@ class Sequence(ModelSQL, ModelView):
         return res
 
     def search_groups(self, name, clause):
-        sequence_type_obj = self.pool.get('ir.sequence.type')
+        sequence_type_obj = Pool().get('ir.sequence.type')
         ids = sequence_type_obj.search([clause], order=[])
         seq_types = sequence_type_obj.browse(ids)
         codes = set(st.code for st in seq_types)
diff --git a/trytond/res/ir.xml b/trytond/res/ir.xml
index eb98952..b06083e 100644
--- a/trytond/res/ir.xml
+++ b/trytond/res/ir.xml
@@ -425,141 +425,182 @@ this repository contains the full copyright notices and license terms. -->
             <field name="operand">False</field>
             <field name="rule_group" ref="rule_group_action"/>
         </record>
-        <record model="ir.action.wizard" id="ir.act_module_install_upgrade">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.action-res.group" id="act_module_install_upgrade_group_admin">
+            <field name="action" ref="ir.act_module_install_upgrade"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.action.wizard" id="ir.act_translation_update">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.action-res.group" id="act_translation_update_group_admin">
+            <field name="action" ref="ir.act_translation_update"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.action.wizard" id="ir.act_translation_export">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.action-res.group" id="act_translation_export_group_admin">
+            <field name="action" ref="ir.act_translation_export"/>
+            <field name="group" ref="group_admin"/>
         </record>
 
-        <record model="ir.ui.menu" id="ir.menu_administration">
-            <field name="groups" eval="[('add', ref('group_admin'))]"/>
-        </record>
-        <record model="ir.ui.menu" id="ir.menu_ui">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_administration_group_admin">
+            <field name="menu" ref="ir.menu_administration"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_icon_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_ui_group_admin">
+            <field name="menu" ref="ir.menu_ui"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_menu_tree">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_icon_form_group_admin">
+            <field name="menu" ref="ir.menu_icon_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_view">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_menu_tree_group_admin">
+            <field name="menu" ref="ir.menu_menu_list"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_view_sc">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_view_group_admin">
+            <field name="menu" ref="ir.menu_view"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_view_tree_width">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_view_sc_group_admin">
+            <field name="menu" ref="ir.menu_view_sc"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_action">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_view_tree_width_group_admin">
+            <field name="menu" ref="ir.menu_view_tree_width"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_act_action">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_action_group_admin">
+            <field name="menu" ref="ir.menu_action"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_action_report_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_act_action_group_admin">
+            <field name="menu" ref="ir.menu_act_action"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_action_act_window">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_action_report_form_group_admin">
+            <field name="menu" ref="ir.menu_action_report_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_action_wizard">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_action_act_window_group_admin">
+            <field name="menu" ref="ir.menu_action_act_window"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_action_wizard_size">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_action_wizard_group_admin">
+            <field name="menu" ref="ir.menu_action_wizard"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_action_url">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_action_url_group_admin">
+            <field name="menu" ref="ir.menu_action_url"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_models">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_models_group_admin">
+            <field name="menu" ref="ir.menu_models"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_model_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_model_form_group_admin">
+            <field name="menu" ref="ir.menu_model_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.model_model_fields_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="model_model_fields_form_group_admin">
+            <field name="menu" ref="ir.model_model_fields_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_model_access_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_model_access_form_group_admin">
+            <field name="menu" ref="ir.menu_model_access_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_model_field_access_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_model_field_access_form_group_admin">
+            <field name="menu" ref="ir.menu_model_field_access_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_sequences">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_sequences_group_admin">
+            <field name="menu" ref="ir.menu_sequences"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_sequence_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_sequence_form_group_admin">
+            <field name="menu" ref="ir.menu_sequence_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_sequence_strict_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_sequence_strict_form_group_admin">
+            <field name="menu" ref="ir.menu_sequence_strict_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_ir_sequence_type">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_ir_sequence_type_group_admin">
+            <field name="menu" ref="ir.menu_ir_sequence_type"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_attachment_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_attachment_form_group_admin">
+            <field name="menu" ref="ir.menu_attachment_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_scheduler">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_scheduler_group_admin">
+            <field name="menu" ref="ir.menu_scheduler"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_cron_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_cron_form_group_admin">
+            <field name="menu" ref="ir.menu_cron_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_localization">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_localization_group_admin">
+            <field name="menu" ref="ir.menu_localization"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_lang_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_lang_form_group_admin">
+            <field name="menu" ref="ir.menu_lang_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_translation_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_translation_form_group_admin">
+            <field name="menu" ref="ir.menu_translation_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_translation_set_report">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_translation_set_report_group_admin">
+            <field name="menu" ref="ir.menu_translation_set_report"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_translation_clean">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_translation_clean_group_admin">
+            <field name="menu" ref="ir.menu_translation_clean"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_translation_update">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_translation_update_group_admin">
+            <field name="menu" ref="ir.menu_translation_update"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_translation_export">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_translation_export_group_admin">
+            <field name="menu" ref="ir.menu_translation_export"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_export_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_export_form_group_admin">
+            <field name="menu" ref="ir.menu_export_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_rule_group_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_rule_group_form_group_admin">
+            <field name="menu" ref="ir.menu_rule_group_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_property_form_default">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_property_form_default_group_admin">
+            <field name="menu" ref="ir.menu_property_form_default"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_property_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_property_form_group_admin">
+            <field name="menu" ref="ir.menu_property_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_modules">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_modules_group_admin">
+            <field name="menu" ref="ir.menu_modules"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_module_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_module_form_group_admin">
+            <field name="menu" ref="ir.menu_module_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_config_wizard_item_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_config_wizard_item_form_group_admin">
+            <field name="menu" ref="ir.menu_config_wizard_item_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_module_install_upgrade">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_module_install_upgrade_group_admin">
+            <field name="menu" ref="ir.menu_module_install_upgrade"/>
+            <field name="group" ref="group_admin"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_trigger_form">
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        <record model="ir.ui.menu-res.group" id="menu_trigger_form_group_admin">
+            <field name="menu" ref="ir.menu_trigger_form"/>
+            <field name="group" ref="group_admin"/>
         </record>
         <record model="ir.ui.view" id="module_view_form">
             <field name="model">ir.module.module</field>
@@ -627,7 +668,6 @@ this repository contains the full copyright notices and license terms. -->
                         <xpath
                             expr="/form/field[@name="code"]"
                             position="after">
-                          <separator name="groups" colspan="4"/>
                           <field name="groups" colspan="4"/>
                         </xpath>
                     </data>
@@ -662,7 +702,11 @@ this repository contains the full copyright notices and license terms. -->
         <record model="res.user" id="user_trigger">
             <field name="login">user_cron_trigger</field>
             <field name="name">Cron Trigger</field>
-            <field name="groups" eval="[('add', ref('group_admin'))]"/>
+            <field name="active" eval="False"/>
+        </record>
+        <record model="res.user-res.group" id="user_trigger_group_admin">
+            <field name="user" ref="user_trigger"/>
+            <field name="group" ref="group_admin"/>
         </record>
 
         <record model="ir.cron" id="cron_trigger_time">
@@ -672,11 +716,27 @@ this repository contains the full copyright notices and license terms. -->
             <field name="active" eval="True"/>
             <field name="interval_number">5</field>
             <field name="interval_type">minutes</field>
-            <field name="numbercall">-1</field>
-            <field name="doall" eval="False"/>
+            <field name="number_calls">-1</field>
+            <field name="repeat_missed" eval="False"/>
             <field name="model">ir.trigger</field>
             <field name="function">trigger_time</field>
         </record>
 
+        <record model="ir.model.access" id="rule_default_view_tree_expanded_state">
+            <field name="model" search="[('model', '=', 'ir.ui.view_tree_expanded_state')]" />
+            <field name="perm_read" eval="False" />
+            <field name="perm_write" eval="False" />
+            <field name="perm_create" eval="False" />
+            <field name="perm_delete" eval="False" />
+        </record>
+        <record model="ir.model.access" id="rule_group_view_tree_expanded_state">
+            <field name="model" search="[('model', '=', 'ir.ui.view_tree_expanded_state')]" />
+            <field name="group" ref="res.group_admin" />
+            <field name="perm_read" eval="True" />
+            <field name="perm_write" eval="True" />
+            <field name="perm_create" eval="True" />
+            <field name="perm_delete" eval="True" />
+        </record>
+
     </data>
 </tryton>
diff --git a/trytond/res/locale/bg_BG.po b/trytond/res/locale/bg_BG.po
new file mode 100644
index 0000000..b7257b8
--- /dev/null
+++ b/trytond/res/locale/bg_BG.po
@@ -0,0 +1,681 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:res.group:0"
+msgid "The name of the group must be unique!"
+msgstr "Името на групата трябва да е уникално!"
+
+msgctxt "error:res.user:0"
+msgid "Wrong password!"
+msgstr "Грешна парола!"
+
+msgctxt "error:res.user:0"
+msgid "You can not have two users with the same login!"
+msgstr "Не може да имате двама потребители с еднакво потребителско име"
+
+msgctxt "error:res.user:0"
+msgid ""
+"You can not remove the root user\n"
+"as it is used internally for resources\n"
+"created by the system (updates, module installation, ...)"
+msgstr ""
+"Не може да премахнете потребител root\n"
+"тъй като вътрешно се използва за ресурси\n"
+"създадени от системата (обновяване, инсталиране на модули, ....)"
+
+#, fuzzy
+msgctxt "field:ir.action-res.group,action:0"
+msgid "Action"
+msgstr "Действие"
+
+#, fuzzy
+msgctxt "field:ir.action-res.group,group:0"
+msgid "Group"
+msgstr "Група"
+
+msgctxt "field:ir.action-res.group,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.model.field-res.group,field_id:0"
+msgid "Model Field"
+msgstr "Поле от модел"
+
+msgctxt "field:ir.model.field-res.group,group_id:0"
+msgid "Group"
+msgstr "Група"
+
+msgctxt "field:ir.model.field-res.group,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+#, fuzzy
+msgctxt "field:ir.rule.group-res.group,group:0"
+msgid "Group"
+msgstr "Група"
+
+msgctxt "field:ir.rule.group-res.group,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.rule.group-res.group,rule_group:0"
+msgid "Rule Group"
+msgstr ""
+
+msgctxt "field:ir.rule.group-res.user,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.rule.group-res.user,rule_group:0"
+msgid "Rule Group"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.rule.group-res.user,user:0"
+msgid "User"
+msgstr "Потребител"
+
+msgctxt "field:ir.sequence,groups:0"
+msgid "User Groups"
+msgstr "Групи потребители"
+
+msgctxt "field:ir.sequence.strict,groups:0"
+msgid "User Groups"
+msgstr "Групи потребители"
+
+msgctxt "field:ir.sequence.type,groups:0"
+msgid "User Groups"
+msgstr "Групи потребители"
+
+msgctxt "field:ir.sequence.type-res.group,group:0"
+msgid "User Groups"
+msgstr "Групи потребители"
+
+msgctxt "field:ir.sequence.type-res.group,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:ir.sequence.type-res.group,sequence_type:0"
+msgid "Sequence Type"
+msgstr "Вид последователност"
+
+#, fuzzy
+msgctxt "field:ir.ui.menu-res.group,group:0"
+msgid "Group"
+msgstr "Група"
+
+#, fuzzy
+msgctxt "field:ir.ui.menu-res.group,menu:0"
+msgid "Menu"
+msgstr "Меню"
+
+msgctxt "field:ir.ui.menu-res.group,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:res.group,field_access:0"
+msgid "Access Field"
+msgstr "Достъп до поле"
+
+msgctxt "field:res.group,menu_access:0"
+msgid "Access Menu"
+msgstr "Достъп до меню"
+
+msgctxt "field:res.group,model_access:0"
+msgid "Access Model"
+msgstr "Модел на достъпа"
+
+msgctxt "field:res.group,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:res.group,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:res.group,rule_groups:0"
+msgid "Rules"
+msgstr "Правила"
+
+msgctxt "field:res.group,users:0"
+msgid "Users"
+msgstr "Потребители"
+
+msgctxt "field:res.request,act_from:0"
+msgid "From"
+msgstr "От"
+
+msgctxt "field:res.request,act_to:0"
+msgid "To"
+msgstr "До"
+
+msgctxt "field:res.request,active:0"
+msgid "Active"
+msgstr "Активен"
+
+msgctxt "field:res.request,body:0"
+msgid "Body"
+msgstr "Тяло"
+
+msgctxt "field:res.request,date_sent:0"
+msgid "Date"
+msgstr "Дата"
+
+msgctxt "field:res.request,history:0"
+msgid "History"
+msgstr "Изтория"
+
+msgctxt "field:res.request,name:0"
+msgid "Subject"
+msgstr "Относно"
+
+msgctxt "field:res.request,number_references:0"
+msgid "Number of References"
+msgstr "Брой препратки"
+
+msgctxt "field:res.request,priority:0"
+msgid "Priority"
+msgstr "Важност"
+
+msgctxt "field:res.request,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:res.request,references:0"
+msgid "References"
+msgstr "Отпратки"
+
+msgctxt "field:res.request,state:0"
+msgid "State"
+msgstr "Състояние"
+
+msgctxt "field:res.request,trigger_date:0"
+msgid "Trigger Date"
+msgstr "Дата на активиране"
+
+msgctxt "field:res.request.history,act_from:0"
+msgid "From"
+msgstr "От"
+
+msgctxt "field:res.request.history,act_to:0"
+msgid "To"
+msgstr "До"
+
+msgctxt "field:res.request.history,body:0"
+msgid "Body"
+msgstr "Тяло"
+
+msgctxt "field:res.request.history,date_sent:0"
+msgid "Date sent"
+msgstr "Дата на изпращане"
+
+msgctxt "field:res.request.history,name:0"
+msgid "Summary"
+msgstr "Обобщено"
+
+msgctxt "field:res.request.history,number_references:0"
+msgid "References"
+msgstr "Отпратки"
+
+msgctxt "field:res.request.history,priority:0"
+msgid "Priority"
+msgstr "Важност"
+
+msgctxt "field:res.request.history,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:res.request.history,request:0"
+msgid "Request"
+msgstr "Заявка"
+
+msgctxt "field:res.request.history,state:0"
+msgid "State"
+msgstr "Състояние"
+
+msgctxt "field:res.request.history,subject:0"
+msgid "Subject"
+msgstr "Относно"
+
+msgctxt "field:res.request.link,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:res.request.link,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:res.request.link,priority:0"
+msgid "Priority"
+msgstr "Важност"
+
+msgctxt "field:res.request.link,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:res.request.reference,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:res.request.reference,reference:0"
+msgid "Reference"
+msgstr "Отпратка"
+
+msgctxt "field:res.request.reference,request:0"
+msgid "Request"
+msgstr "Заявка"
+
+msgctxt "field:res.user,action:0"
+msgid "Home Action"
+msgstr "Начално действие"
+
+msgctxt "field:res.user,active:0"
+msgid "Active"
+msgstr "Активен"
+
+msgctxt "field:res.user,connections:0"
+msgid "Connections"
+msgstr "Връзки"
+
+msgctxt "field:res.user,email:0"
+msgid "Email"
+msgstr "Email"
+
+msgctxt "field:res.user,groups:0"
+msgid "Groups"
+msgstr "Групи"
+
+msgctxt "field:res.user,language:0"
+msgid "Language"
+msgstr "Език"
+
+msgctxt "field:res.user,language_direction:0"
+msgid "Language Direction"
+msgstr "Посока на езика"
+
+msgctxt "field:res.user,login:0"
+msgid "Login"
+msgstr "Потребителско име"
+
+msgctxt "field:res.user,menu:0"
+msgid "Menu Action"
+msgstr "Действие на меню"
+
+msgctxt "field:res.user,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:res.user,password:0"
+msgid "Password"
+msgstr "Парола"
+
+msgctxt "field:res.user,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:res.user,rule_groups:0"
+msgid "Rules"
+msgstr "Правила"
+
+msgctxt "field:res.user,salt:0"
+msgid "Salt"
+msgstr "Ключ"
+
+msgctxt "field:res.user,signature:0"
+msgid "Signature"
+msgstr "Подпис"
+
+msgctxt "field:res.user,status_bar:0"
+msgid "Status Bar"
+msgstr "Лента със статус"
+
+msgctxt "field:res.user,timezone:0"
+msgid "Timezone"
+msgstr "Времева зона"
+
+msgctxt "field:res.user,warnings:0"
+msgid "Warnings"
+msgstr "Предупреждения"
+
+#, fuzzy
+msgctxt "field:res.user-res.group,group:0"
+msgid "Group"
+msgstr "Група"
+
+msgctxt "field:res.user-res.group,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+#, fuzzy
+msgctxt "field:res.user-res.group,user:0"
+msgid "User"
+msgstr "Потребител"
+
+msgctxt "field:res.user.warning,always:0"
+msgid "Always"
+msgstr "Винаги"
+
+msgctxt "field:res.user.warning,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:res.user.warning,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:res.user.warning,user:0"
+msgid "User"
+msgstr "Потребител"
+
+msgctxt "help:ir.sequence.type,groups:0"
+msgid "Groups allowed to edit the sequences of this type"
+msgstr "Групите на които е позволено да редактират този вид последователност"
+
+msgctxt "model:ir.action,name:act_group_form"
+msgid "Groups"
+msgstr "Групи"
+
+msgctxt "model:ir.action,name:act_request_form"
+msgid "Requests"
+msgstr "Заявки"
+
+msgctxt "model:ir.action,name:act_request_link_form"
+msgid "Request Links"
+msgstr "Връзки към заявка"
+
+msgctxt "model:ir.action,name:act_user_form"
+msgid "Users"
+msgstr "Потребители"
+
+msgctxt "model:ir.action-res.group,name:0"
+msgid "Action - Group"
+msgstr "Действие - група"
+
+msgctxt "model:ir.cron,name:cron_trigger_time"
+msgid "Run On Time Triggers"
+msgstr "Стартиране при настъпване на време"
+
+msgctxt "model:ir.model.field-res.group,name:0"
+msgid "Model Field Group Rel"
+msgstr "Връзка на група за модел на поле"
+
+msgctxt "model:ir.rule.group-res.group,name:0"
+msgid "Rule Group - Group"
+msgstr "Група правила - Група"
+
+msgctxt "model:ir.rule.group-res.user,name:0"
+msgid "Rule Group - User"
+msgstr "Правило на група - Потребител"
+
+msgctxt "model:ir.sequence.type-res.group,name:0"
+msgid "Sequence Type - Group"
+msgstr "Вид последователност - Група"
+
+msgctxt "model:ir.ui.menu,name:menu_group_form"
+msgid "Groups"
+msgstr "Групи"
+
+msgctxt "model:ir.ui.menu,name:menu_request_form"
+msgid "Requests"
+msgstr "Заявки"
+
+msgctxt "model:ir.ui.menu,name:menu_request_link_form"
+msgid "Request Links"
+msgstr "Връзки към заявки"
+
+msgctxt "model:ir.ui.menu,name:menu_res"
+msgid "Users"
+msgstr "Потребители"
+
+msgctxt "model:ir.ui.menu,name:menu_user_form"
+msgid "Users"
+msgstr "Потребители"
+
+msgctxt "model:ir.ui.menu-res.group,name:0"
+msgid "UI Menu - Group"
+msgstr "Потребителско меню - група"
+
+msgctxt "model:res.group,name:0"
+msgid "Group"
+msgstr "Група"
+
+msgctxt "model:res.group,name:group_admin"
+msgid "Administration"
+msgstr "Администрация"
+
+msgctxt "model:res.request,name:0"
+msgid "Request"
+msgstr "Заявка"
+
+msgctxt "model:res.request.history,name:0"
+msgid "Request history"
+msgstr "Изтория на заявка"
+
+msgctxt "model:res.request.link,name:0"
+msgid "Request link"
+msgstr "Връзка към заявка"
+
+msgctxt "model:res.request.link,name:request_link_cron"
+msgid "Scheduler"
+msgstr "Планировщик"
+
+msgctxt "model:res.request.reference,name:0"
+msgid "Request Reference"
+msgstr "Отпратка към заявка"
+
+msgctxt "model:res.user,name:0"
+msgid "User"
+msgstr "Потребител"
+
+msgctxt "model:res.user,name:user_admin"
+msgid "Administrator"
+msgstr "Администратор"
+
+msgctxt "model:res.user,name:user_trigger"
+msgid "Cron Trigger"
+msgstr "Превключвател на планировщик"
+
+msgctxt "model:res.user-res.group,name:0"
+msgid "User - Group"
+msgstr "Потребител - група"
+
+msgctxt "model:res.user.config.init,name:0"
+msgid "User Config Init"
+msgstr "Начално конфигуриране на потребител"
+
+msgctxt "model:res.user.warning,name:0"
+msgid "User Warning"
+msgstr "Потребителско предупреждение"
+
+msgctxt "selection:res.request,priority:0"
+msgid "High"
+msgstr "Висок"
+
+msgctxt "selection:res.request,priority:0"
+msgid "Low"
+msgstr "Ниска"
+
+msgctxt "selection:res.request,priority:0"
+msgid "Normal"
+msgstr "Нормален"
+
+msgctxt "selection:res.request,state:0"
+msgid "Chatting"
+msgstr "Преговори"
+
+msgctxt "selection:res.request,state:0"
+msgid "Closed"
+msgstr "Приключен"
+
+msgctxt "selection:res.request,state:0"
+msgid "Draft"
+msgstr "Проект"
+
+msgctxt "selection:res.request,state:0"
+msgid "Waiting"
+msgstr "Изчакващ"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "High"
+msgstr "Висок"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Low"
+msgstr "Ниска"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Normal"
+msgstr "Нормален"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Chatting"
+msgstr "Преговори"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Closed"
+msgstr "Приключен"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Draft"
+msgstr "Проект"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Waiting"
+msgstr "Изчакващ"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr "Отказ от инсталалиране"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr "Отказ от деинсталиране"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr "Отказ от обновяване"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr "Отбелязване за инсталиране"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr "Маркиране за деинсталиране (beta)"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr "Отбелязване за обновяване"
+
+msgctxt "view:res.group:0"
+msgid "Access Permissions"
+msgstr "Фактура"
+
+msgctxt "view:res.group:0"
+msgid "Group"
+msgstr "Група"
+
+msgctxt "view:res.group:0"
+msgid "Groups"
+msgstr "Групи"
+
+msgctxt "view:res.group:0"
+msgid "Members"
+msgstr "Членове"
+
+msgctxt "view:res.request.history:0"
+msgid "Request History"
+msgstr "Истоярия на заявка"
+
+msgctxt "view:res.request.link:0"
+msgid "Request Link"
+msgstr "Връзка към заявка"
+
+msgctxt "view:res.request.reference:0"
+msgid "Request Reference"
+msgstr "Отпратка към заявка"
+
+msgctxt "view:res.request.reference:0"
+msgid "Request References"
+msgstr "Отпратки към заявка"
+
+msgctxt "view:res.request:0"
+msgid "Close"
+msgstr "Затваряне"
+
+msgctxt "view:res.request:0"
+msgid "References"
+msgstr "Отпратки"
+
+msgctxt "view:res.request:0"
+msgid "Reply"
+msgstr "Отговор"
+
+msgctxt "view:res.request:0"
+msgid "Request"
+msgstr "Заявка"
+
+msgctxt "view:res.request:0"
+msgid "Requests"
+msgstr "Заявки"
+
+msgctxt "view:res.request:0"
+msgid "Send"
+msgstr "Изпратен"
+
+msgctxt "view:res.user.config.init:0"
+msgid "Add Users"
+msgstr "Добавяне на потребители"
+
+msgctxt "view:res.user.config.init:0"
+msgid "Be careful that the login must be unique!"
+msgstr "Вмимавайте потребителско име да е уникално"
+
+msgctxt "view:res.user.config.init:0"
+msgid "You can now add some users into the system."
+msgstr "Сега може да добавите потребители към системата."
+
+msgctxt "view:res.user.warning:0"
+msgid "Warning"
+msgstr "Предупреждение"
+
+msgctxt "view:res.user.warning:0"
+msgid "Warnings"
+msgstr "Предупреждения"
+
+msgctxt "view:res.user:0"
+msgid "Access Permissions"
+msgstr "Права за достъп"
+
+msgctxt "view:res.user:0"
+msgid "Group Membership"
+msgstr "Членство към група"
+
+msgctxt "view:res.user:0"
+msgid "Preferences"
+msgstr "Предпочитания"
+
+msgctxt "view:res.user:0"
+msgid "User"
+msgstr "Потребител"
+
+msgctxt "view:res.user:0"
+msgid "Users"
+msgstr "Потребители"
+
+msgctxt "wizard_button:res.user.config,init,end:0"
+msgid "Cancel"
+msgstr "Отказ"
+
+msgctxt "wizard_button:res.user.config,init,user:0"
+msgid "Ok"
+msgstr "Добре"
+
+msgctxt "wizard_button:res.user.config,user,add:0"
+msgid "Add"
+msgstr "Добавяне"
+
+msgctxt "wizard_button:res.user.config,user,end:0"
+msgid "End"
+msgstr "Край"
diff --git a/trytond/res/locale/cs_CZ.po b/trytond/res/locale/cs_CZ.po
new file mode 100644
index 0000000..37da4e4
--- /dev/null
+++ b/trytond/res/locale/cs_CZ.po
@@ -0,0 +1,670 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:res.group:0"
+msgid "The name of the group must be unique!"
+msgstr ""
+
+msgctxt "error:res.user:0"
+msgid "Wrong password!"
+msgstr ""
+
+msgctxt "error:res.user:0"
+msgid "You can not have two users with the same login!"
+msgstr ""
+
+msgctxt "error:res.user:0"
+msgid ""
+"You can not remove the root user\n"
+"as it is used internally for resources\n"
+"created by the system (updates, module installation, ...)"
+msgstr ""
+
+msgctxt "field:ir.action-res.group,action:0"
+msgid "Action"
+msgstr ""
+
+msgctxt "field:ir.action-res.group,group:0"
+msgid "Group"
+msgstr ""
+
+msgctxt "field:ir.action-res.group,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.model.field-res.group,field_id:0"
+msgid "Model Field"
+msgstr ""
+
+msgctxt "field:ir.model.field-res.group,group_id:0"
+msgid "Group"
+msgstr ""
+
+msgctxt "field:ir.model.field-res.group,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.rule.group-res.group,group:0"
+msgid "Group"
+msgstr ""
+
+msgctxt "field:ir.rule.group-res.group,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.rule.group-res.group,rule_group:0"
+msgid "Rule Group"
+msgstr ""
+
+msgctxt "field:ir.rule.group-res.user,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.rule.group-res.user,rule_group:0"
+msgid "Rule Group"
+msgstr ""
+
+msgctxt "field:ir.rule.group-res.user,user:0"
+msgid "User"
+msgstr ""
+
+msgctxt "field:ir.sequence,groups:0"
+msgid "User Groups"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,groups:0"
+msgid "User Groups"
+msgstr ""
+
+msgctxt "field:ir.sequence.type,groups:0"
+msgid "User Groups"
+msgstr ""
+
+msgctxt "field:ir.sequence.type-res.group,group:0"
+msgid "User Groups"
+msgstr ""
+
+msgctxt "field:ir.sequence.type-res.group,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:ir.sequence.type-res.group,sequence_type:0"
+msgid "Sequence Type"
+msgstr ""
+
+msgctxt "field:ir.ui.menu-res.group,group:0"
+msgid "Group"
+msgstr ""
+
+msgctxt "field:ir.ui.menu-res.group,menu:0"
+msgid "Menu"
+msgstr ""
+
+msgctxt "field:ir.ui.menu-res.group,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:res.group,field_access:0"
+msgid "Access Field"
+msgstr ""
+
+msgctxt "field:res.group,menu_access:0"
+msgid "Access Menu"
+msgstr ""
+
+msgctxt "field:res.group,model_access:0"
+msgid "Access Model"
+msgstr ""
+
+msgctxt "field:res.group,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:res.group,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:res.group,rule_groups:0"
+msgid "Rules"
+msgstr ""
+
+msgctxt "field:res.group,users:0"
+msgid "Users"
+msgstr ""
+
+msgctxt "field:res.request,act_from:0"
+msgid "From"
+msgstr ""
+
+msgctxt "field:res.request,act_to:0"
+msgid "To"
+msgstr ""
+
+msgctxt "field:res.request,active:0"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:res.request,body:0"
+msgid "Body"
+msgstr ""
+
+msgctxt "field:res.request,date_sent:0"
+msgid "Date"
+msgstr ""
+
+msgctxt "field:res.request,history:0"
+msgid "History"
+msgstr ""
+
+msgctxt "field:res.request,name:0"
+msgid "Subject"
+msgstr ""
+
+msgctxt "field:res.request,number_references:0"
+msgid "Number of References"
+msgstr ""
+
+msgctxt "field:res.request,priority:0"
+msgid "Priority"
+msgstr ""
+
+msgctxt "field:res.request,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:res.request,references:0"
+msgid "References"
+msgstr ""
+
+msgctxt "field:res.request,state:0"
+msgid "State"
+msgstr ""
+
+msgctxt "field:res.request,trigger_date:0"
+msgid "Trigger Date"
+msgstr ""
+
+msgctxt "field:res.request.history,act_from:0"
+msgid "From"
+msgstr ""
+
+msgctxt "field:res.request.history,act_to:0"
+msgid "To"
+msgstr ""
+
+msgctxt "field:res.request.history,body:0"
+msgid "Body"
+msgstr ""
+
+msgctxt "field:res.request.history,date_sent:0"
+msgid "Date sent"
+msgstr ""
+
+msgctxt "field:res.request.history,name:0"
+msgid "Summary"
+msgstr ""
+
+msgctxt "field:res.request.history,number_references:0"
+msgid "References"
+msgstr ""
+
+msgctxt "field:res.request.history,priority:0"
+msgid "Priority"
+msgstr ""
+
+msgctxt "field:res.request.history,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:res.request.history,request:0"
+msgid "Request"
+msgstr ""
+
+msgctxt "field:res.request.history,state:0"
+msgid "State"
+msgstr ""
+
+msgctxt "field:res.request.history,subject:0"
+msgid "Subject"
+msgstr ""
+
+msgctxt "field:res.request.link,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:res.request.link,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:res.request.link,priority:0"
+msgid "Priority"
+msgstr ""
+
+msgctxt "field:res.request.link,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:res.request.reference,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:res.request.reference,reference:0"
+msgid "Reference"
+msgstr ""
+
+msgctxt "field:res.request.reference,request:0"
+msgid "Request"
+msgstr ""
+
+msgctxt "field:res.user,action:0"
+msgid "Home Action"
+msgstr ""
+
+msgctxt "field:res.user,active:0"
+msgid "Active"
+msgstr ""
+
+msgctxt "field:res.user,connections:0"
+msgid "Connections"
+msgstr ""
+
+msgctxt "field:res.user,email:0"
+msgid "Email"
+msgstr ""
+
+msgctxt "field:res.user,groups:0"
+msgid "Groups"
+msgstr ""
+
+msgctxt "field:res.user,language:0"
+msgid "Language"
+msgstr ""
+
+msgctxt "field:res.user,language_direction:0"
+msgid "Language Direction"
+msgstr ""
+
+msgctxt "field:res.user,login:0"
+msgid "Login"
+msgstr ""
+
+msgctxt "field:res.user,menu:0"
+msgid "Menu Action"
+msgstr ""
+
+msgctxt "field:res.user,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:res.user,password:0"
+msgid "Password"
+msgstr ""
+
+msgctxt "field:res.user,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:res.user,rule_groups:0"
+msgid "Rules"
+msgstr ""
+
+msgctxt "field:res.user,salt:0"
+msgid "Salt"
+msgstr ""
+
+msgctxt "field:res.user,signature:0"
+msgid "Signature"
+msgstr ""
+
+msgctxt "field:res.user,status_bar:0"
+msgid "Status Bar"
+msgstr ""
+
+msgctxt "field:res.user,timezone:0"
+msgid "Timezone"
+msgstr ""
+
+msgctxt "field:res.user,warnings:0"
+msgid "Warnings"
+msgstr ""
+
+msgctxt "field:res.user-res.group,group:0"
+msgid "Group"
+msgstr ""
+
+msgctxt "field:res.user-res.group,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:res.user-res.group,user:0"
+msgid "User"
+msgstr ""
+
+msgctxt "field:res.user.warning,always:0"
+msgid "Always"
+msgstr ""
+
+msgctxt "field:res.user.warning,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:res.user.warning,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:res.user.warning,user:0"
+msgid "User"
+msgstr ""
+
+msgctxt "help:ir.sequence.type,groups:0"
+msgid "Groups allowed to edit the sequences of this type"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_group_form"
+msgid "Groups"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_request_form"
+msgid "Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_request_link_form"
+msgid "Request Links"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_user_form"
+msgid "Users"
+msgstr ""
+
+msgctxt "model:ir.action-res.group,name:0"
+msgid "Action - Group"
+msgstr ""
+
+msgctxt "model:ir.cron,name:cron_trigger_time"
+msgid "Run On Time Triggers"
+msgstr ""
+
+msgctxt "model:ir.model.field-res.group,name:0"
+msgid "Model Field Group Rel"
+msgstr ""
+
+msgctxt "model:ir.rule.group-res.group,name:0"
+msgid "Rule Group - Group"
+msgstr ""
+
+msgctxt "model:ir.rule.group-res.user,name:0"
+msgid "Rule Group - User"
+msgstr ""
+
+msgctxt "model:ir.sequence.type-res.group,name:0"
+msgid "Sequence Type - Group"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_group_form"
+msgid "Groups"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_request_form"
+msgid "Requests"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_request_link_form"
+msgid "Request Links"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_res"
+msgid "Users"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_user_form"
+msgid "Users"
+msgstr ""
+
+msgctxt "model:ir.ui.menu-res.group,name:0"
+msgid "UI Menu - Group"
+msgstr ""
+
+msgctxt "model:res.group,name:0"
+msgid "Group"
+msgstr ""
+
+msgctxt "model:res.group,name:group_admin"
+msgid "Administration"
+msgstr ""
+
+msgctxt "model:res.request,name:0"
+msgid "Request"
+msgstr ""
+
+msgctxt "model:res.request.history,name:0"
+msgid "Request history"
+msgstr ""
+
+msgctxt "model:res.request.link,name:0"
+msgid "Request link"
+msgstr ""
+
+msgctxt "model:res.request.link,name:request_link_cron"
+msgid "Scheduler"
+msgstr ""
+
+msgctxt "model:res.request.reference,name:0"
+msgid "Request Reference"
+msgstr ""
+
+msgctxt "model:res.user,name:0"
+msgid "User"
+msgstr ""
+
+msgctxt "model:res.user,name:user_admin"
+msgid "Administrator"
+msgstr ""
+
+msgctxt "model:res.user,name:user_trigger"
+msgid "Cron Trigger"
+msgstr ""
+
+msgctxt "model:res.user-res.group,name:0"
+msgid "User - Group"
+msgstr ""
+
+msgctxt "model:res.user.config.init,name:0"
+msgid "User Config Init"
+msgstr ""
+
+msgctxt "model:res.user.warning,name:0"
+msgid "User Warning"
+msgstr ""
+
+msgctxt "selection:res.request,priority:0"
+msgid "High"
+msgstr ""
+
+msgctxt "selection:res.request,priority:0"
+msgid "Low"
+msgstr ""
+
+msgctxt "selection:res.request,priority:0"
+msgid "Normal"
+msgstr ""
+
+msgctxt "selection:res.request,state:0"
+msgid "Chatting"
+msgstr ""
+
+msgctxt "selection:res.request,state:0"
+msgid "Closed"
+msgstr ""
+
+msgctxt "selection:res.request,state:0"
+msgid "Draft"
+msgstr ""
+
+msgctxt "selection:res.request,state:0"
+msgid "Waiting"
+msgstr ""
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "High"
+msgstr ""
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Low"
+msgstr ""
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Normal"
+msgstr ""
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Chatting"
+msgstr ""
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Closed"
+msgstr ""
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Draft"
+msgstr ""
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Waiting"
+msgstr ""
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr ""
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr ""
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr ""
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr ""
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr ""
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr ""
+
+msgctxt "view:res.group:0"
+msgid "Access Permissions"
+msgstr ""
+
+msgctxt "view:res.group:0"
+msgid "Group"
+msgstr ""
+
+msgctxt "view:res.group:0"
+msgid "Groups"
+msgstr ""
+
+msgctxt "view:res.group:0"
+msgid "Members"
+msgstr ""
+
+msgctxt "view:res.request.history:0"
+msgid "Request History"
+msgstr ""
+
+msgctxt "view:res.request.link:0"
+msgid "Request Link"
+msgstr ""
+
+msgctxt "view:res.request.reference:0"
+msgid "Request Reference"
+msgstr ""
+
+msgctxt "view:res.request.reference:0"
+msgid "Request References"
+msgstr ""
+
+msgctxt "view:res.request:0"
+msgid "Close"
+msgstr ""
+
+msgctxt "view:res.request:0"
+msgid "References"
+msgstr ""
+
+msgctxt "view:res.request:0"
+msgid "Reply"
+msgstr ""
+
+msgctxt "view:res.request:0"
+msgid "Request"
+msgstr ""
+
+msgctxt "view:res.request:0"
+msgid "Requests"
+msgstr ""
+
+msgctxt "view:res.request:0"
+msgid "Send"
+msgstr ""
+
+msgctxt "view:res.user.config.init:0"
+msgid "Add Users"
+msgstr ""
+
+msgctxt "view:res.user.config.init:0"
+msgid "Be careful that the login must be unique!"
+msgstr ""
+
+msgctxt "view:res.user.config.init:0"
+msgid "You can now add some users into the system."
+msgstr ""
+
+msgctxt "view:res.user.warning:0"
+msgid "Warning"
+msgstr ""
+
+msgctxt "view:res.user.warning:0"
+msgid "Warnings"
+msgstr ""
+
+msgctxt "view:res.user:0"
+msgid "Access Permissions"
+msgstr ""
+
+msgctxt "view:res.user:0"
+msgid "Group Membership"
+msgstr ""
+
+msgctxt "view:res.user:0"
+msgid "Preferences"
+msgstr ""
+
+msgctxt "view:res.user:0"
+msgid "User"
+msgstr ""
+
+msgctxt "view:res.user:0"
+msgid "Users"
+msgstr ""
+
+msgctxt "wizard_button:res.user.config,init,end:0"
+msgid "Cancel"
+msgstr ""
+
+msgctxt "wizard_button:res.user.config,init,user:0"
+msgid "Ok"
+msgstr ""
+
+msgctxt "wizard_button:res.user.config,user,add:0"
+msgid "Add"
+msgstr ""
+
+msgctxt "wizard_button:res.user.config,user,end:0"
+msgid "End"
+msgstr ""
diff --git a/trytond/res/locale/de_DE.po b/trytond/res/locale/de_DE.po
new file mode 100644
index 0000000..a897560
--- /dev/null
+++ b/trytond/res/locale/de_DE.po
@@ -0,0 +1,819 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:res.group:0"
+msgid "The name of the group must be unique!"
+msgstr "Der Name der Gruppe kann nicht mehrfach vergeben werden!"
+
+msgctxt "error:res.user:0"
+msgid "Wrong password!"
+msgstr "Ungültiges Passwort!"
+
+msgctxt "error:res.user:0"
+msgid "You can not have two users with the same login!"
+msgstr "Der Anmeldename für einen Benutzer kann nur einmal vergeben werden!"
+
+msgctxt "error:res.user:0"
+msgid ""
+"You can not remove the root user\n"
+"as it is used internally for resources\n"
+"created by the system (updates, module installation, ...)"
+msgstr ""
+"Der Benutzer root kann nicht gelöscht werden, da er für interne Systemverwaltungsaufgaben\n"
+"(Updates, Modulinstallation, ...) benötigt wird!"
+
+msgctxt "field:ir.action-res.group,action:0"
+msgid "Action"
+msgstr "Aktion"
+
+msgctxt "field:ir.action-res.group,group:0"
+msgid "Group"
+msgstr "Gruppe"
+
+msgctxt "field:ir.action-res.group,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.model.field-res.group,field_id:0"
+msgid "Model Field"
+msgstr "Modell Feld"
+
+msgctxt "field:ir.model.field-res.group,group_id:0"
+msgid "Group"
+msgstr "Gruppe"
+
+msgctxt "field:ir.model.field-res.group,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.rule.group-res.group,group:0"
+msgid "Group"
+msgstr "Gruppe"
+
+msgctxt "field:ir.rule.group-res.group,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.rule.group-res.group,rule_group:0"
+msgid "Rule Group"
+msgstr "Regel Gruppe"
+
+msgctxt "field:ir.rule.group-res.user,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:ir.rule.group-res.user,rule_group:0"
+msgid "Rule Group"
+msgstr "Regel Gruppe"
+
+msgctxt "field:ir.rule.group-res.user,user:0"
+msgid "User"
+msgstr "Benutzer"
+
+msgctxt "field:ir.sequence,groups:0"
+msgid "User Groups"
+msgstr "Benutzergruppen"
+
+msgctxt "field:ir.sequence.strict,groups:0"
+msgid "User Groups"
+msgstr "Benutzergruppen"
+
+msgctxt "field:ir.sequence.type,groups:0"
+msgid "User Groups"
+msgstr "Benutzergruppen"
+
+msgctxt "field:ir.sequence.type-res.group,group:0"
+msgid "User Groups"
+msgstr "Benutzergruppen"
+
+msgctxt "field:ir.sequence.type-res.group,rec_name:0"
+msgid "Name"
+msgstr "Name Staat"
+
+msgctxt "field:ir.sequence.type-res.group,sequence_type:0"
+msgid "Sequence Type"
+msgstr "Typ Strikter Nummernkreis"
+
+msgctxt "field:ir.ui.menu-res.group,group:0"
+msgid "Group"
+msgstr "Gruppe"
+
+msgctxt "field:ir.ui.menu-res.group,menu:0"
+msgid "Menu"
+msgstr "Menü"
+
+msgctxt "field:ir.ui.menu-res.group,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:res.group,create_date:0"
+msgid "Creation date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:res.group,create_uid:0"
+msgid "Creation user"
+msgstr "Ersteller"
+
+msgctxt "field:res.group,field_access:0"
+msgid "Access Field"
+msgstr "Zugriffsberechtigung Feld"
+
+msgctxt "field:res.group,id:0"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:res.group,menu_access:0"
+msgid "Access Menu"
+msgstr "Menü Berechtigungen"
+
+msgctxt "field:res.group,model_access:0"
+msgid "Access Model"
+msgstr "Rechteverwaltung"
+
+msgctxt "field:res.group,name:0"
+msgid "Name"
+msgstr "Gruppenname"
+
+msgctxt "field:res.group,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:res.group,rule_groups:0"
+msgid "Rules"
+msgstr "Datensatzregeln"
+
+msgctxt "field:res.group,users:0"
+msgid "Users"
+msgstr "Benutzer"
+
+msgctxt "field:res.group,write_date:0"
+msgid "Last modification date"
+msgstr "Zuletzt geändert am"
+
+msgctxt "field:res.group,write_uid:0"
+msgid "Last modification by"
+msgstr "Zuletzt geändert von"
+
+msgctxt "field:res.request,act_from:0"
+msgid "From"
+msgstr "Von"
+
+msgctxt "field:res.request,act_to:0"
+msgid "To"
+msgstr "An"
+
+msgctxt "field:res.request,active:0"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:res.request,body:0"
+msgid "Body"
+msgstr "Anfrage"
+
+msgctxt "field:res.request,create_date:0"
+msgid "Creation date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:res.request,create_uid:0"
+msgid "Creation user"
+msgstr "Ersteller"
+
+msgctxt "field:res.request,date_sent:0"
+msgid "Date"
+msgstr "Datum"
+
+msgctxt "field:res.request,history:0"
+msgid "History"
+msgstr "Bisherige Anfragen"
+
+msgctxt "field:res.request,id:0"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:res.request,name:0"
+msgid "Subject"
+msgstr "Betreff"
+
+msgctxt "field:res.request,number_references:0"
+msgid "Number of References"
+msgstr "Anzahl Verweise"
+
+msgctxt "field:res.request,priority:0"
+msgid "Priority"
+msgstr "Dringlichkeit"
+
+msgctxt "field:res.request,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:res.request,references:0"
+msgid "References"
+msgstr "Verweise"
+
+msgctxt "field:res.request,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:res.request,trigger_date:0"
+msgid "Trigger Date"
+msgstr "Gültig ab"
+
+msgctxt "field:res.request,write_date:0"
+msgid "Last modification date"
+msgstr "Zuletzt geändert am"
+
+msgctxt "field:res.request,write_uid:0"
+msgid "Last modification by"
+msgstr "Zuletzt geändert von"
+
+msgctxt "field:res.request.history,act_from:0"
+msgid "From"
+msgstr "Von"
+
+msgctxt "field:res.request.history,act_to:0"
+msgid "To"
+msgstr "An"
+
+msgctxt "field:res.request.history,body:0"
+msgid "Body"
+msgstr "Nachricht"
+
+msgctxt "field:res.request.history,create_date:0"
+msgid "Creation date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:res.request.history,create_uid:0"
+msgid "Creation user"
+msgstr "Ersteller"
+
+msgctxt "field:res.request.history,date_sent:0"
+msgid "Date sent"
+msgstr "Gesendet am"
+
+msgctxt "field:res.request.history,id:0"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:res.request.history,name:0"
+msgid "Summary"
+msgstr "Zusammenfassung"
+
+msgctxt "field:res.request.history,number_references:0"
+msgid "References"
+msgstr "Verweise"
+
+msgctxt "field:res.request.history,priority:0"
+msgid "Priority"
+msgstr "Priorität"
+
+msgctxt "field:res.request.history,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:res.request.history,request:0"
+msgid "Request"
+msgstr "Anfrage"
+
+msgctxt "field:res.request.history,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:res.request.history,subject:0"
+msgid "Subject"
+msgstr "Betreff"
+
+msgctxt "field:res.request.history,write_date:0"
+msgid "Last modification date"
+msgstr "Zuletzt geändert am"
+
+msgctxt "field:res.request.history,write_uid:0"
+msgid "Last modification by"
+msgstr "Zuletzt geändert von"
+
+msgctxt "field:res.request.link,create_date:0"
+msgid "Creation date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:res.request.link,create_uid:0"
+msgid "Creation user"
+msgstr "Ersteller"
+
+msgctxt "field:res.request.link,id:0"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:res.request.link,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:res.request.link,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:res.request.link,priority:0"
+msgid "Priority"
+msgstr "Dringlichkeit"
+
+msgctxt "field:res.request.link,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:res.request.link,write_date:0"
+msgid "Last modification date"
+msgstr "Zuletzt geändert am"
+
+msgctxt "field:res.request.link,write_uid:0"
+msgid "Last modification by"
+msgstr "Zuletzt geändert von"
+
+msgctxt "field:res.request.reference,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:res.request.reference,reference:0"
+msgid "Reference"
+msgstr "Verweis"
+
+msgctxt "field:res.request.reference,request:0"
+msgid "Request"
+msgstr "Anfrage"
+
+msgctxt "field:res.user,action:0"
+msgid "Home Action"
+msgstr "Aktion für Startseite"
+
+msgctxt "field:res.user,active:0"
+msgid "Active"
+msgstr "Aktiv"
+
+msgctxt "field:res.user,connections:0"
+msgid "Connections"
+msgstr "Verbindungen"
+
+msgctxt "field:res.user,create_date:0"
+msgid "Creation date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:res.user,create_uid:0"
+msgid "Creation user"
+msgstr "Ersteller"
+
+msgctxt "field:res.user,email:0"
+msgid "Email"
+msgstr "E-Mail"
+
+msgctxt "field:res.user,groups:0"
+msgid "Groups"
+msgstr "Gruppenzugehörigkeit"
+
+msgctxt "field:res.user,id:0"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:res.user,language:0"
+msgid "Language"
+msgstr "Sprache"
+
+msgctxt "field:res.user,language_direction:0"
+msgid "Language Direction"
+msgstr "Sprache Richtung"
+
+msgctxt "field:res.user,login:0"
+msgid "Login"
+msgstr "Anmeldename"
+
+msgctxt "field:res.user,menu:0"
+msgid "Menu Action"
+msgstr "Menüaktion"
+
+msgctxt "field:res.user,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:res.user,password:0"
+msgid "Password"
+msgstr "Passwort"
+
+msgctxt "field:res.user,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:res.user,rule_groups:0"
+msgid "Rules"
+msgstr "Datensatzregeln"
+
+msgctxt "field:res.user,salt:0"
+msgid "Salt"
+msgstr "Salt"
+
+msgctxt "field:res.user,signature:0"
+msgid "Signature"
+msgstr "Signatur"
+
+msgctxt "field:res.user,status_bar:0"
+msgid "Status Bar"
+msgstr "Status Anzeige"
+
+msgctxt "field:res.user,timezone:0"
+msgid "Timezone"
+msgstr "Zeitzone"
+
+msgctxt "field:res.user,warnings:0"
+msgid "Warnings"
+msgstr "Warnungen"
+
+msgctxt "field:res.user,write_date:0"
+msgid "Last modification date"
+msgstr "Zuletzt geändert am"
+
+msgctxt "field:res.user,write_uid:0"
+msgid "Last modification by"
+msgstr "Zuletzt geändert von"
+
+msgctxt "field:res.user-res.group,group:0"
+msgid "Group"
+msgstr "Gruppe"
+
+msgctxt "field:res.user-res.group,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:res.user-res.group,user:0"
+msgid "User"
+msgstr "Benutzer"
+
+msgctxt "field:res.user.warning,always:0"
+msgid "Always"
+msgstr "Immer"
+
+msgctxt "field:res.user.warning,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:res.user.warning,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:res.user.warning,user:0"
+msgid "User"
+msgstr "Benutzer"
+
+msgctxt "help:ir.sequence.type,groups:0"
+msgid "Groups allowed to edit the sequences of this type"
+msgstr ""
+"Gruppen mit der Berechtigung zur Bearbeitung von Nummernkreisen dieses Typs"
+
+msgctxt "model:ir.action,name:act_group_form"
+msgid "Groups"
+msgstr "Gruppen"
+
+msgctxt "model:ir.action,name:act_request_form"
+msgid "Requests"
+msgstr "Anfragen"
+
+msgctxt "model:ir.action,name:act_request_link_form"
+msgid "Request Links"
+msgstr "Anfrageverknüpfungen"
+
+msgctxt "model:ir.action,name:act_user_form"
+msgid "Users"
+msgstr "Benutzer"
+
+msgctxt "model:ir.action-res.group,name:0"
+msgid "Action - Group"
+msgstr "Aktion - Gruppe"
+
+msgctxt "model:ir.cron,name:cron_trigger_time"
+msgid "Run On Time Triggers"
+msgstr "Ausführung zeitgesteuerter Trigger"
+
+msgctxt "model:ir.model.field-res.group,name:0"
+msgid "Model Field Group Rel"
+msgstr "Modellfeld - Gruppe"
+
+msgctxt "model:ir.rule.group-res.group,name:0"
+msgid "Rule Group - Group"
+msgstr "Gruppenregel - Gruppe"
+
+msgctxt "model:ir.rule.group-res.user,name:0"
+msgid "Rule Group - User"
+msgstr "Gruppenregel - Benutzer"
+
+msgctxt "model:ir.sequence.type-res.group,name:0"
+msgid "Sequence Type - Group"
+msgstr "Typ Nummernkreis - Gruppe"
+
+msgctxt "model:ir.ui.menu,name:menu_group_form"
+msgid "Groups"
+msgstr "Gruppen"
+
+msgctxt "model:ir.ui.menu,name:menu_request_form"
+msgid "Requests"
+msgstr "Anfragen"
+
+msgctxt "model:ir.ui.menu,name:menu_request_link_form"
+msgid "Request Links"
+msgstr "Anfrageverknüpfungen"
+
+msgctxt "model:ir.ui.menu,name:menu_res"
+msgid "Users"
+msgstr "Benutzer"
+
+msgctxt "model:ir.ui.menu,name:menu_user_form"
+msgid "Users"
+msgstr "Benutzer"
+
+msgctxt "model:ir.ui.menu-res.group,name:0"
+msgid "UI Menu - Group"
+msgstr "Oberfläche Menü - Gruppe"
+
+msgctxt "model:res.group,name:0"
+msgid "Group"
+msgstr "Gruppe"
+
+msgctxt "model:res.group,name:group_admin"
+msgid "Administration"
+msgstr "Interne Administration"
+
+msgctxt "model:res.request,name:0"
+msgid "Request"
+msgstr "Anfrage"
+
+msgctxt "model:res.request.history,name:0"
+msgid "Request history"
+msgstr "Bisherige Anfragen"
+
+msgctxt "model:res.request.link,name:0"
+msgid "Request link"
+msgstr "Anfrage Verknüpfung"
+
+msgctxt "model:res.request.link,name:request_link_cron"
+msgid "Scheduler"
+msgstr "Zeitplaner"
+
+msgctxt "model:res.request.reference,name:0"
+msgid "Request Reference"
+msgstr "Anfrage Verweis"
+
+msgctxt "model:res.user,name:0"
+msgid "User"
+msgstr "Benutzer"
+
+msgctxt "model:res.user,name:user_admin"
+msgid "Administrator"
+msgstr "Administrator"
+
+msgctxt "model:res.user,name:user_trigger"
+msgid "Cron Trigger"
+msgstr "Zeitplaner Trigger"
+
+msgctxt "model:res.user-res.group,name:0"
+msgid "User - Group"
+msgstr "Benutzer - Gruppe"
+
+msgctxt "model:res.user.config.init,name:0"
+msgid "User Config Init"
+msgstr "Benutzerkonfiguration Init"
+
+msgctxt "model:res.user.warning,name:0"
+msgid "User Warning"
+msgstr "Benutzer Warnung"
+
+msgctxt "selection:res.request,priority:0"
+msgid "High"
+msgstr "Hoch"
+
+msgctxt "selection:res.request,priority:0"
+msgid "Low"
+msgstr "Niedrig"
+
+msgctxt "selection:res.request,priority:0"
+msgid "Normal"
+msgstr "Normal"
+
+msgctxt "selection:res.request,state:0"
+msgid "Chatting"
+msgstr "Schreibt gerade..."
+
+msgctxt "selection:res.request,state:0"
+msgid "Closed"
+msgstr "Geschlossen"
+
+msgctxt "selection:res.request,state:0"
+msgid "Draft"
+msgstr "Entwurf"
+
+msgctxt "selection:res.request,state:0"
+msgid "Waiting"
+msgstr "Wartend"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "High"
+msgstr "Hoch"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Low"
+msgstr "Niedrig"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Normal"
+msgstr "Normal"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Chatting"
+msgstr "Schreibt gerade..."
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Closed"
+msgstr "Geschlossen"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Draft"
+msgstr "Entwurf"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Waiting"
+msgstr "Wartend"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr "Vormerkung für Installation / Aktualisierung aufheben"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr "Deinstallation abbrechen"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr "Vormerkung für Installation / Aktualisierung aufheben"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr "Für die Installation vormerken"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr "Für die Deinstallation (beta) vormerken"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr "Für die Aktualisierung vormerken"
+
+msgctxt "view:res.group:0"
+msgid "Access Permissions"
+msgstr "Zugriffsberechtigungen"
+
+msgctxt "view:res.group:0"
+msgid "Group"
+msgstr "Gruppe"
+
+msgctxt "view:res.group:0"
+msgid "Groups"
+msgstr "Gruppen"
+
+msgctxt "view:res.group:0"
+msgid "Members"
+msgstr "Mitglieder"
+
+msgctxt "view:res.group:0"
+msgid "Security"
+msgstr "Sicherheit"
+
+msgctxt "view:res.group:0"
+msgid "_Group"
+msgstr "_Gruppe"
+
+msgctxt "view:res.group:0"
+msgid "_Security"
+msgstr "_Sicherheit"
+
+msgctxt "view:res.request.history:0"
+msgid "Request History"
+msgstr "bisherige Anfragen"
+
+msgctxt "view:res.request.link:0"
+msgid "Request Link"
+msgstr "Anfrage Verknüpfung"
+
+msgctxt "view:res.request.reference:0"
+msgid "Request Reference"
+msgstr "Anfrageverweis"
+
+msgctxt "view:res.request.reference:0"
+msgid "Request References"
+msgstr "Verweise"
+
+msgctxt "view:res.request:0"
+msgid "Close"
+msgstr "Schließen"
+
+msgctxt "view:res.request:0"
+msgid "Description"
+msgstr "Beschreibung"
+
+msgctxt "view:res.request:0"
+msgid "History"
+msgstr "Geschichte"
+
+msgctxt "view:res.request:0"
+msgid "References"
+msgstr "Verweise"
+
+msgctxt "view:res.request:0"
+msgid "Reply"
+msgstr "Antworten"
+
+msgctxt "view:res.request:0"
+msgid "Request"
+msgstr "Anfrage"
+
+msgctxt "view:res.request:0"
+msgid "Requests"
+msgstr "Anfragen"
+
+msgctxt "view:res.request:0"
+msgid "Send"
+msgstr "Senden"
+
+msgctxt "view:res.request:0"
+msgid "_References"
+msgstr "_Verweise"
+
+msgctxt "view:res.request:0"
+msgid "_Request"
+msgstr "_Anfrage"
+
+msgctxt "view:res.user.config.init:0"
+msgid "Add Users"
+msgstr "Benutzer hinzufügen"
+
+msgctxt "view:res.user.config.init:0"
+msgid "Be careful that the login must be unique!"
+msgstr ""
+"Achten Sie darauf, dass ein Anmeldename nicht mehrfach vergeben werden kann!\n"
+"(Der Anmeldename admin wird automatisch angelegt.)"
+
+msgctxt "view:res.user.config.init:0"
+msgid "You can now add some users into the system."
+msgstr "Sie können nun neue Benutzer zu dem System hinzufügen."
+
+msgctxt "view:res.user.warning:0"
+msgid "Warning"
+msgstr "Warnung"
+
+msgctxt "view:res.user.warning:0"
+msgid "Warnings"
+msgstr "Warnungen"
+
+msgctxt "view:res.user:0"
+msgid "Access Permissions"
+msgstr "Zugriffsberechtigungen"
+
+msgctxt "view:res.user:0"
+msgid "Group Membership"
+msgstr "Gruppenzugehörigkeit"
+
+msgctxt "view:res.user:0"
+msgid "Preferences"
+msgstr "Einstellungen"
+
+msgctxt "view:res.user:0"
+msgid "Security"
+msgstr "Sicherheit"
+
+msgctxt "view:res.user:0"
+msgid "User"
+msgstr "Benutzer"
+
+msgctxt "view:res.user:0"
+msgid "Users"
+msgstr "Benutzer"
+
+msgctxt "view:res.user:0"
+msgid "_Preferences"
+msgstr "_Einstellungen"
+
+msgctxt "view:res.user:0"
+msgid "_Security"
+msgstr "_Sicherheit"
+
+msgctxt "view:res.user:0"
+msgid "_User"
+msgstr "_Benutzer"
+
+msgctxt "wizard_button:res.user.config,init,end:0"
+msgid "Cancel"
+msgstr "Abbrechen"
+
+msgctxt "wizard_button:res.user.config,init,user:0"
+msgid "Ok"
+msgstr "OK"
+
+msgctxt "wizard_button:res.user.config,user,add:0"
+msgid "Add"
+msgstr "Hinzufügen"
+
+msgctxt "wizard_button:res.user.config,user,end:0"
+msgid "End"
+msgstr "Ende"
diff --git a/trytond/res/locale/es_CO.po b/trytond/res/locale/es_CO.po
new file mode 100644
index 0000000..22ce63d
--- /dev/null
+++ b/trytond/res/locale/es_CO.po
@@ -0,0 +1,688 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:res.group:0"
+msgid "The name of the group must be unique!"
+msgstr "El nombre del grupo debe ser único!"
+
+msgctxt "error:res.user:0"
+msgid "Wrong password!"
+msgstr ""
+
+msgctxt "error:res.user:0"
+msgid "You can not have two users with the same login!"
+msgstr "No puede tener dos usuarios con el mismo nombre de usuario!"
+
+msgctxt "error:res.user:0"
+msgid ""
+"You can not remove the root user\n"
+"as it is used internally for resources\n"
+"created by the system (updates, module installation, ...)"
+msgstr "No puede eliminar al usuario principal"
+
+#, fuzzy
+msgctxt "field:ir.action-res.group,action:0"
+msgid "Action"
+msgstr "Acción"
+
+#, fuzzy
+msgctxt "field:ir.action-res.group,group:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "field:ir.action-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.model.field-res.group,field_id:0"
+msgid "Model Field"
+msgstr "Modelo de Campo"
+
+msgctxt "field:ir.model.field-res.group,group_id:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "field:ir.model.field-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+#, fuzzy
+msgctxt "field:ir.rule.group-res.group,group:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "field:ir.rule.group-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.rule.group-res.group,rule_group:0"
+msgid "Rule Group"
+msgstr ""
+
+msgctxt "field:ir.rule.group-res.user,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.rule.group-res.user,rule_group:0"
+msgid "Rule Group"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.rule.group-res.user,user:0"
+msgid "User"
+msgstr "Usuario"
+
+msgctxt "field:ir.sequence,groups:0"
+msgid "User Groups"
+msgstr "Grupos de usuarios"
+
+msgctxt "field:ir.sequence.strict,groups:0"
+msgid "User Groups"
+msgstr "Grupos de usuarios"
+
+msgctxt "field:ir.sequence.type,groups:0"
+msgid "User Groups"
+msgstr "Grupos de usuarios"
+
+msgctxt "field:ir.sequence.type-res.group,group:0"
+msgid "User Groups"
+msgstr "Grupos de usuarios"
+
+#, fuzzy
+msgctxt "field:ir.sequence.type-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre de Contacto"
+
+#, fuzzy
+msgctxt "field:ir.sequence.type-res.group,sequence_type:0"
+msgid "Sequence Type"
+msgstr "Tipo de Secuencia"
+
+#, fuzzy
+msgctxt "field:ir.ui.menu-res.group,group:0"
+msgid "Group"
+msgstr "Grupo"
+
+#, fuzzy
+msgctxt "field:ir.ui.menu-res.group,menu:0"
+msgid "Menu"
+msgstr "Menú"
+
+msgctxt "field:ir.ui.menu-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.group,field_access:0"
+msgid "Access Field"
+msgstr ""
+
+msgctxt "field:res.group,menu_access:0"
+msgid "Access Menu"
+msgstr "Menú para Acceder"
+
+msgctxt "field:res.group,model_access:0"
+msgid "Access Model"
+msgstr "Modelo al Acceder"
+
+msgctxt "field:res.group,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.group,rule_groups:0"
+msgid "Rules"
+msgstr "Reglas"
+
+msgctxt "field:res.group,users:0"
+msgid "Users"
+msgstr "Usuarios"
+
+msgctxt "field:res.request,act_from:0"
+msgid "From"
+msgstr "De"
+
+msgctxt "field:res.request,act_to:0"
+msgid "To"
+msgstr "A"
+
+msgctxt "field:res.request,active:0"
+msgid "Active"
+msgstr "Activ@"
+
+msgctxt "field:res.request,body:0"
+msgid "Body"
+msgstr "Cuerpo"
+
+msgctxt "field:res.request,date_sent:0"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:res.request,history:0"
+msgid "History"
+msgstr "Historia"
+
+msgctxt "field:res.request,name:0"
+msgid "Subject"
+msgstr "Título"
+
+msgctxt "field:res.request,number_references:0"
+msgid "Number of References"
+msgstr "Número de referencias"
+
+msgctxt "field:res.request,priority:0"
+msgid "Priority"
+msgstr "Prioridad"
+
+msgctxt "field:res.request,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.request,references:0"
+msgid "References"
+msgstr "Referencias"
+
+msgctxt "field:res.request,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:res.request,trigger_date:0"
+msgid "Trigger Date"
+msgstr "Fecha de Activación"
+
+msgctxt "field:res.request.history,act_from:0"
+msgid "From"
+msgstr "De"
+
+msgctxt "field:res.request.history,act_to:0"
+msgid "To"
+msgstr "A"
+
+msgctxt "field:res.request.history,body:0"
+msgid "Body"
+msgstr "Cuerpo"
+
+msgctxt "field:res.request.history,date_sent:0"
+msgid "Date sent"
+msgstr "Fecha de envío"
+
+msgctxt "field:res.request.history,name:0"
+msgid "Summary"
+msgstr "Resumen"
+
+msgctxt "field:res.request.history,number_references:0"
+msgid "References"
+msgstr "Referencias"
+
+msgctxt "field:res.request.history,priority:0"
+msgid "Priority"
+msgstr "Prioridad"
+
+msgctxt "field:res.request.history,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.request.history,request:0"
+msgid "Request"
+msgstr "Solicitud"
+
+msgctxt "field:res.request.history,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:res.request.history,subject:0"
+msgid "Subject"
+msgstr "Título"
+
+msgctxt "field:res.request.link,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:res.request.link,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.request.link,priority:0"
+msgid "Priority"
+msgstr "Prioridad"
+
+msgctxt "field:res.request.link,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.request.reference,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.request.reference,reference:0"
+msgid "Reference"
+msgstr "Referencia"
+
+msgctxt "field:res.request.reference,request:0"
+msgid "Request"
+msgstr "Solicitud"
+
+msgctxt "field:res.user,action:0"
+msgid "Home Action"
+msgstr "Acción Inicial"
+
+msgctxt "field:res.user,active:0"
+msgid "Active"
+msgstr "Activ@"
+
+msgctxt "field:res.user,connections:0"
+msgid "Connections"
+msgstr ""
+
+msgctxt "field:res.user,email:0"
+msgid "Email"
+msgstr "Correo Electrónico"
+
+msgctxt "field:res.user,groups:0"
+msgid "Groups"
+msgstr "Grupos"
+
+msgctxt "field:res.user,language:0"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "field:res.user,language_direction:0"
+msgid "Language Direction"
+msgstr "Dirección del Idioma"
+
+msgctxt "field:res.user,login:0"
+msgid "Login"
+msgstr "Usuario"
+
+msgctxt "field:res.user,menu:0"
+msgid "Menu Action"
+msgstr "Acción del Menú"
+
+msgctxt "field:res.user,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.user,password:0"
+msgid "Password"
+msgstr "Clave"
+
+msgctxt "field:res.user,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.user,rule_groups:0"
+msgid "Rules"
+msgstr "Reglas"
+
+msgctxt "field:res.user,salt:0"
+msgid "Salt"
+msgstr ""
+
+msgctxt "field:res.user,signature:0"
+msgid "Signature"
+msgstr "Firma"
+
+msgctxt "field:res.user,status_bar:0"
+msgid "Status Bar"
+msgstr "Barra de Estado"
+
+msgctxt "field:res.user,timezone:0"
+msgid "Timezone"
+msgstr "Zona horaria"
+
+msgctxt "field:res.user,warnings:0"
+msgid "Warnings"
+msgstr "Advertencias"
+
+#, fuzzy
+msgctxt "field:res.user-res.group,group:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "field:res.user-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+#, fuzzy
+msgctxt "field:res.user-res.group,user:0"
+msgid "User"
+msgstr "Usuario"
+
+msgctxt "field:res.user.warning,always:0"
+msgid "Always"
+msgstr "Siempre"
+
+msgctxt "field:res.user.warning,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.user.warning,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.user.warning,user:0"
+msgid "User"
+msgstr "Usuario"
+
+msgctxt "help:ir.sequence.type,groups:0"
+msgid "Groups allowed to edit the sequences of this type"
+msgstr "Los grupos son autorizados para editar secuencias en este tipo"
+
+msgctxt "model:ir.action,name:act_group_form"
+msgid "Groups"
+msgstr "Grupos"
+
+msgctxt "model:ir.action,name:act_request_form"
+msgid "Requests"
+msgstr "Solicitudes"
+
+msgctxt "model:ir.action,name:act_request_link_form"
+msgid "Request Links"
+msgstr "Enlace de Solicitud"
+
+msgctxt "model:ir.action,name:act_user_form"
+msgid "Users"
+msgstr "Usuarios"
+
+msgctxt "model:ir.action-res.group,name:0"
+msgid "Action - Group"
+msgstr "Acción - Grupo"
+
+msgctxt "model:ir.cron,name:cron_trigger_time"
+msgid "Run On Time Triggers"
+msgstr ""
+
+msgctxt "model:ir.model.field-res.group,name:0"
+msgid "Model Field Group Rel"
+msgstr "Modelo de Campo Grupo Rel"
+
+msgctxt "model:ir.rule.group-res.group,name:0"
+msgid "Rule Group - Group"
+msgstr "Regla de Grupo - Grupo"
+
+msgctxt "model:ir.rule.group-res.user,name:0"
+msgid "Rule Group - User"
+msgstr "Regla de Grupo - Usuario"
+
+msgctxt "model:ir.sequence.type-res.group,name:0"
+msgid "Sequence Type - Group"
+msgstr "Secuencia de Tipo - Grupo"
+
+msgctxt "model:ir.ui.menu,name:menu_group_form"
+msgid "Groups"
+msgstr "Grupos"
+
+msgctxt "model:ir.ui.menu,name:menu_request_form"
+msgid "Requests"
+msgstr "Solicitudes"
+
+msgctxt "model:ir.ui.menu,name:menu_request_link_form"
+msgid "Request Links"
+msgstr "Enlace de Solicitud"
+
+msgctxt "model:ir.ui.menu,name:menu_res"
+msgid "Users"
+msgstr "Usuarios"
+
+msgctxt "model:ir.ui.menu,name:menu_user_form"
+msgid "Users"
+msgstr "Usuarios"
+
+msgctxt "model:ir.ui.menu-res.group,name:0"
+msgid "UI Menu - Group"
+msgstr "Menú UI - Grupo"
+
+msgctxt "model:res.group,name:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "model:res.group,name:group_admin"
+msgid "Administration"
+msgstr "Administración"
+
+msgctxt "model:res.request,name:0"
+msgid "Request"
+msgstr "Solicitud"
+
+msgctxt "model:res.request.history,name:0"
+msgid "Request history"
+msgstr "Historia de Solicitud"
+
+msgctxt "model:res.request.link,name:0"
+msgid "Request link"
+msgstr "Enlace de Solicitud"
+
+msgctxt "model:res.request.link,name:request_link_cron"
+msgid "Scheduler"
+msgstr "Agendador"
+
+msgctxt "model:res.request.reference,name:0"
+msgid "Request Reference"
+msgstr "Referencia de Solicitud"
+
+msgctxt "model:res.user,name:0"
+msgid "User"
+msgstr "Usuario"
+
+msgctxt "model:res.user,name:user_admin"
+msgid "Administrator"
+msgstr "Administrador"
+
+msgctxt "model:res.user,name:user_trigger"
+msgid "Cron Trigger"
+msgstr ""
+
+msgctxt "model:res.user-res.group,name:0"
+msgid "User - Group"
+msgstr "Usuario - Grupo"
+
+msgctxt "model:res.user.config.init,name:0"
+msgid "User Config Init"
+msgstr "Inicio de Configuración de Usuario"
+
+msgctxt "model:res.user.warning,name:0"
+msgid "User Warning"
+msgstr "Advertencia al Usuario"
+
+msgctxt "selection:res.request,priority:0"
+msgid "High"
+msgstr "Alto"
+
+msgctxt "selection:res.request,priority:0"
+msgid "Low"
+msgstr "Bajo"
+
+msgctxt "selection:res.request,priority:0"
+msgid "Normal"
+msgstr "Normal"
+
+msgctxt "selection:res.request,state:0"
+msgid "Chatting"
+msgstr "Charla"
+
+msgctxt "selection:res.request,state:0"
+msgid "Closed"
+msgstr "Cerrado"
+
+msgctxt "selection:res.request,state:0"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt "selection:res.request,state:0"
+msgid "Waiting"
+msgstr "En espera"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "High"
+msgstr "Alto"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Low"
+msgstr "Bajo"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Normal"
+msgstr "Normal"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Chatting"
+msgstr "Charla"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Closed"
+msgstr "Cerrado"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Waiting"
+msgstr "En Espera"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr "Cancelar Instalación"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr "Cancelar la desinstalación"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr "Cancelar actualización"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr "Marcar para Instalación"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr "Marcar para Desinstalar"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr "Marcar para Actualizar"
+
+msgctxt "view:res.group:0"
+msgid "Access Permissions"
+msgstr "Permisos de Acceso"
+
+msgctxt "view:res.group:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "view:res.group:0"
+msgid "Groups"
+msgstr "Grupos"
+
+msgctxt "view:res.group:0"
+msgid "Members"
+msgstr "Miembros"
+
+msgctxt "view:res.group:0"
+msgid "Security"
+msgstr "Seguridad"
+
+msgctxt "view:res.request.history:0"
+msgid "Request History"
+msgstr "Historial de Solicitudes"
+
+msgctxt "view:res.request.link:0"
+msgid "Request Link"
+msgstr "Enlace de Solicitud"
+
+msgctxt "view:res.request.reference:0"
+msgid "Request Reference"
+msgstr "Referencia de Solicitud"
+
+msgctxt "view:res.request.reference:0"
+msgid "Request References"
+msgstr "Referencias de Solicitud"
+
+msgctxt "view:res.request:0"
+msgid "Close"
+msgstr "Cerrar"
+
+msgctxt "view:res.request:0"
+msgid "References"
+msgstr "Referencias"
+
+msgctxt "view:res.request:0"
+msgid "Reply"
+msgstr "Responder"
+
+msgctxt "view:res.request:0"
+msgid "Request"
+msgstr "Solicitud"
+
+msgctxt "view:res.request:0"
+msgid "Requests"
+msgstr "Solicitudes"
+
+msgctxt "view:res.request:0"
+msgid "Send"
+msgstr "Enviar"
+
+msgctxt "view:res.user.config.init:0"
+msgid "Add Users"
+msgstr "Adicionar Usuarios"
+
+msgctxt "view:res.user.config.init:0"
+msgid "Be careful that the login must be unique!"
+msgstr "Asegúrese de hacer los nombres de usuario únicos"
+
+msgctxt "view:res.user.config.init:0"
+msgid "You can now add some users into the system."
+msgstr "Ahora puede adicionar algunos usuarios al sistema."
+
+msgctxt "view:res.user.warning:0"
+msgid "Warning"
+msgstr "Advertencia"
+
+msgctxt "view:res.user.warning:0"
+msgid "Warnings"
+msgstr "Advertencia"
+
+msgctxt "view:res.user:0"
+msgid "Access Permissions"
+msgstr "Permisos de Acceso"
+
+msgctxt "view:res.user:0"
+msgid "Group Membership"
+msgstr "Membresía del grupo"
+
+msgctxt "view:res.user:0"
+msgid "Preferences"
+msgstr "Preferencias"
+
+msgctxt "view:res.user:0"
+msgid "Security"
+msgstr "Seguridad"
+
+msgctxt "view:res.user:0"
+msgid "User"
+msgstr "Usuario"
+
+msgctxt "view:res.user:0"
+msgid "Users"
+msgstr "Usuarios"
+
+msgctxt "wizard_button:res.user.config,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:res.user.config,init,user:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:res.user.config,user,add:0"
+msgid "Add"
+msgstr "Adicionar"
+
+msgctxt "wizard_button:res.user.config,user,end:0"
+msgid "End"
+msgstr "Finalizar"
diff --git a/trytond/res/locale/es_ES.po b/trytond/res/locale/es_ES.po
new file mode 100644
index 0000000..497a3ba
--- /dev/null
+++ b/trytond/res/locale/es_ES.po
@@ -0,0 +1,691 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:res.group:0"
+msgid "The name of the group must be unique!"
+msgstr "El nombre del grupo debe ser único"
+
+msgctxt "error:res.user:0"
+msgid "Wrong password!"
+msgstr "Contraseña incorrecta"
+
+msgctxt "error:res.user:0"
+msgid "You can not have two users with the same login!"
+msgstr "No puede tener dos usuarios con el mismo nombre de usuario"
+
+msgctxt "error:res.user:0"
+msgid ""
+"You can not remove the root user\n"
+"as it is used internally for resources\n"
+"created by the system (updates, module installation, ...)"
+msgstr ""
+"No puede eliminar al usuario root\n"
+"ya que se utiliza internamente para recursos\n"
+"creados por el sistema (actualizaciones, instalación de módulos, ...)"
+
+#, fuzzy
+msgctxt "field:ir.action-res.group,action:0"
+msgid "Action"
+msgstr "Acción"
+
+#, fuzzy
+msgctxt "field:ir.action-res.group,group:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "field:ir.action-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.model.field-res.group,field_id:0"
+msgid "Model Field"
+msgstr "Modelo de campo"
+
+msgctxt "field:ir.model.field-res.group,group_id:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "field:ir.model.field-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+#, fuzzy
+msgctxt "field:ir.rule.group-res.group,group:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "field:ir.rule.group-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.rule.group-res.group,rule_group:0"
+msgid "Rule Group"
+msgstr ""
+
+msgctxt "field:ir.rule.group-res.user,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:ir.rule.group-res.user,rule_group:0"
+msgid "Rule Group"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.rule.group-res.user,user:0"
+msgid "User"
+msgstr "Usuario"
+
+msgctxt "field:ir.sequence,groups:0"
+msgid "User Groups"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,groups:0"
+msgid "User Groups"
+msgstr ""
+
+msgctxt "field:ir.sequence.type,groups:0"
+msgid "User Groups"
+msgstr ""
+
+msgctxt "field:ir.sequence.type-res.group,group:0"
+msgid "User Groups"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.sequence.type-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre del campo"
+
+#, fuzzy
+msgctxt "field:ir.sequence.type-res.group,sequence_type:0"
+msgid "Sequence Type"
+msgstr "Tipo de secuencia"
+
+#, fuzzy
+msgctxt "field:ir.ui.menu-res.group,group:0"
+msgid "Group"
+msgstr "Grupo"
+
+#, fuzzy
+msgctxt "field:ir.ui.menu-res.group,menu:0"
+msgid "Menu"
+msgstr "Menú"
+
+msgctxt "field:ir.ui.menu-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.group,field_access:0"
+msgid "Access Field"
+msgstr ""
+
+msgctxt "field:res.group,menu_access:0"
+msgid "Access Menu"
+msgstr "Menú de acceso"
+
+msgctxt "field:res.group,model_access:0"
+msgid "Access Model"
+msgstr "Modelo de acceso"
+
+msgctxt "field:res.group,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.group,rule_groups:0"
+msgid "Rules"
+msgstr "Reglas"
+
+msgctxt "field:res.group,users:0"
+msgid "Users"
+msgstr "Usuarios"
+
+msgctxt "field:res.request,act_from:0"
+msgid "From"
+msgstr "De"
+
+msgctxt "field:res.request,act_to:0"
+msgid "To"
+msgstr "A"
+
+msgctxt "field:res.request,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:res.request,body:0"
+msgid "Body"
+msgstr "Cuerpo"
+
+msgctxt "field:res.request,date_sent:0"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:res.request,history:0"
+msgid "History"
+msgstr "Histórico"
+
+msgctxt "field:res.request,name:0"
+msgid "Subject"
+msgstr "Asunto"
+
+msgctxt "field:res.request,number_references:0"
+msgid "Number of References"
+msgstr "Número de referencias"
+
+msgctxt "field:res.request,priority:0"
+msgid "Priority"
+msgstr "Prioridad"
+
+msgctxt "field:res.request,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.request,references:0"
+msgid "References"
+msgstr "Referencias"
+
+msgctxt "field:res.request,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:res.request,trigger_date:0"
+msgid "Trigger Date"
+msgstr "Fecha del disparo"
+
+msgctxt "field:res.request.history,act_from:0"
+msgid "From"
+msgstr "De"
+
+msgctxt "field:res.request.history,act_to:0"
+msgid "To"
+msgstr "A"
+
+msgctxt "field:res.request.history,body:0"
+msgid "Body"
+msgstr "Cuerpo"
+
+msgctxt "field:res.request.history,date_sent:0"
+msgid "Date sent"
+msgstr "Fecha de envío"
+
+msgctxt "field:res.request.history,name:0"
+msgid "Summary"
+msgstr "Resumen"
+
+msgctxt "field:res.request.history,number_references:0"
+msgid "References"
+msgstr "Referencias"
+
+msgctxt "field:res.request.history,priority:0"
+msgid "Priority"
+msgstr "Prioridad"
+
+msgctxt "field:res.request.history,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.request.history,request:0"
+msgid "Request"
+msgstr "Solicitud"
+
+msgctxt "field:res.request.history,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:res.request.history,subject:0"
+msgid "Subject"
+msgstr "Asunto"
+
+msgctxt "field:res.request.link,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:res.request.link,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.request.link,priority:0"
+msgid "Priority"
+msgstr "Prioridad"
+
+msgctxt "field:res.request.link,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.request.reference,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.request.reference,reference:0"
+msgid "Reference"
+msgstr "Referencia"
+
+msgctxt "field:res.request.reference,request:0"
+msgid "Request"
+msgstr "Solicitud"
+
+msgctxt "field:res.user,action:0"
+msgid "Home Action"
+msgstr "Acción inicial"
+
+msgctxt "field:res.user,active:0"
+msgid "Active"
+msgstr "Activo"
+
+msgctxt "field:res.user,connections:0"
+msgid "Connections"
+msgstr "Conexiones"
+
+msgctxt "field:res.user,email:0"
+msgid "Email"
+msgstr "Correo electrónico"
+
+msgctxt "field:res.user,groups:0"
+msgid "Groups"
+msgstr "Grupos"
+
+msgctxt "field:res.user,language:0"
+msgid "Language"
+msgstr "Idioma"
+
+msgctxt "field:res.user,language_direction:0"
+msgid "Language Direction"
+msgstr "Dirección del idioma"
+
+msgctxt "field:res.user,login:0"
+msgid "Login"
+msgstr "Nombre de usuario"
+
+msgctxt "field:res.user,menu:0"
+msgid "Menu Action"
+msgstr "Menú de acciones"
+
+msgctxt "field:res.user,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.user,password:0"
+msgid "Password"
+msgstr "Contraseña"
+
+msgctxt "field:res.user,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.user,rule_groups:0"
+msgid "Rules"
+msgstr "Reglas"
+
+msgctxt "field:res.user,salt:0"
+msgid "Salt"
+msgstr "Sal"
+
+msgctxt "field:res.user,signature:0"
+msgid "Signature"
+msgstr "Firma"
+
+msgctxt "field:res.user,status_bar:0"
+msgid "Status Bar"
+msgstr "Barra de estado"
+
+msgctxt "field:res.user,timezone:0"
+msgid "Timezone"
+msgstr "Zona horaria"
+
+msgctxt "field:res.user,warnings:0"
+msgid "Warnings"
+msgstr "Avisos"
+
+#, fuzzy
+msgctxt "field:res.user-res.group,group:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "field:res.user-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+#, fuzzy
+msgctxt "field:res.user-res.group,user:0"
+msgid "User"
+msgstr "Usuario"
+
+msgctxt "field:res.user.warning,always:0"
+msgid "Always"
+msgstr "Siempre"
+
+msgctxt "field:res.user.warning,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.user.warning,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:res.user.warning,user:0"
+msgid "User"
+msgstr "Usuario"
+
+msgctxt "help:ir.sequence.type,groups:0"
+msgid "Groups allowed to edit the sequences of this type"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_group_form"
+msgid "Groups"
+msgstr "Grupos"
+
+msgctxt "model:ir.action,name:act_request_form"
+msgid "Requests"
+msgstr "Solicitudes"
+
+msgctxt "model:ir.action,name:act_request_link_form"
+msgid "Request Links"
+msgstr "Enlaces a solicitudes"
+
+msgctxt "model:ir.action,name:act_user_form"
+msgid "Users"
+msgstr "Usuarios"
+
+msgctxt "model:ir.action-res.group,name:0"
+msgid "Action - Group"
+msgstr "Acción - Grupo"
+
+msgctxt "model:ir.cron,name:cron_trigger_time"
+msgid "Run On Time Triggers"
+msgstr ""
+
+msgctxt "model:ir.model.field-res.group,name:0"
+msgid "Model Field Group Rel"
+msgstr "Relación entre grupo y campo del modelo"
+
+msgctxt "model:ir.rule.group-res.group,name:0"
+msgid "Rule Group - Group"
+msgstr "Regla de grupo - grupo"
+
+msgctxt "model:ir.rule.group-res.user,name:0"
+msgid "Rule Group - User"
+msgstr "Regla de grupo - usuario"
+
+msgctxt "model:ir.sequence.type-res.group,name:0"
+msgid "Sequence Type - Group"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_group_form"
+msgid "Groups"
+msgstr "Grupos"
+
+msgctxt "model:ir.ui.menu,name:menu_request_form"
+msgid "Requests"
+msgstr "Solicitudes"
+
+msgctxt "model:ir.ui.menu,name:menu_request_link_form"
+msgid "Request Links"
+msgstr "Enlaces a solicitudes"
+
+msgctxt "model:ir.ui.menu,name:menu_res"
+msgid "Users"
+msgstr "Usuarios"
+
+msgctxt "model:ir.ui.menu,name:menu_user_form"
+msgid "Users"
+msgstr "Usuarios"
+
+msgctxt "model:ir.ui.menu-res.group,name:0"
+msgid "UI Menu - Group"
+msgstr "Menú UI - Grupo"
+
+msgctxt "model:res.group,name:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "model:res.group,name:group_admin"
+msgid "Administration"
+msgstr "Administración"
+
+msgctxt "model:res.request,name:0"
+msgid "Request"
+msgstr "Solicitud"
+
+msgctxt "model:res.request.history,name:0"
+msgid "Request history"
+msgstr "Histórico de solicitudes"
+
+msgctxt "model:res.request.link,name:0"
+msgid "Request link"
+msgstr "Enlace a solicitud"
+
+msgctxt "model:res.request.link,name:request_link_cron"
+msgid "Scheduler"
+msgstr "Programador de tareas"
+
+msgctxt "model:res.request.reference,name:0"
+msgid "Request Reference"
+msgstr "Referencia de la solicitud"
+
+msgctxt "model:res.user,name:0"
+msgid "User"
+msgstr "Usuario"
+
+msgctxt "model:res.user,name:user_admin"
+msgid "Administrator"
+msgstr "Administrador"
+
+msgctxt "model:res.user,name:user_trigger"
+msgid "Cron Trigger"
+msgstr ""
+
+msgctxt "model:res.user-res.group,name:0"
+msgid "User - Group"
+msgstr "Usuario - Grupo"
+
+msgctxt "model:res.user.config.init,name:0"
+msgid "User Config Init"
+msgstr "Inicialización de la configuración de usuario"
+
+msgctxt "model:res.user.warning,name:0"
+msgid "User Warning"
+msgstr "Aviso al usuario"
+
+msgctxt "selection:res.request,priority:0"
+msgid "High"
+msgstr "Alta"
+
+msgctxt "selection:res.request,priority:0"
+msgid "Low"
+msgstr "Baja"
+
+msgctxt "selection:res.request,priority:0"
+msgid "Normal"
+msgstr "Normal"
+
+msgctxt "selection:res.request,state:0"
+msgid "Chatting"
+msgstr "En discusión"
+
+msgctxt "selection:res.request,state:0"
+msgid "Closed"
+msgstr "Cerrada"
+
+msgctxt "selection:res.request,state:0"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt "selection:res.request,state:0"
+msgid "Waiting"
+msgstr "En espera"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "High"
+msgstr "Alta"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Low"
+msgstr "Baja"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Normal"
+msgstr "Normal"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Chatting"
+msgstr "En discusión"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Closed"
+msgstr "Cerrada"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Draft"
+msgstr "Borrador"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Waiting"
+msgstr "En espera"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr "Cancelar instalación"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr "Cancelar la desinstalación"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr "Cancelar actualización"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr "Marcar para Instalación"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr "Marcar para desinstalar (beta)"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr "Marcar para actualizar"
+
+msgctxt "view:res.group:0"
+msgid "Access Permissions"
+msgstr ""
+
+msgctxt "view:res.group:0"
+msgid "Group"
+msgstr "Grupo"
+
+msgctxt "view:res.group:0"
+msgid "Groups"
+msgstr "Grupos"
+
+msgctxt "view:res.group:0"
+msgid "Members"
+msgstr ""
+
+msgctxt "view:res.group:0"
+msgid "Security"
+msgstr "Seguridad"
+
+msgctxt "view:res.request.history:0"
+msgid "Request History"
+msgstr "Histórico de solicitudes"
+
+msgctxt "view:res.request.link:0"
+msgid "Request Link"
+msgstr "Enlace a solicitud"
+
+msgctxt "view:res.request.reference:0"
+msgid "Request Reference"
+msgstr "Referencia de la solicitud"
+
+msgctxt "view:res.request.reference:0"
+msgid "Request References"
+msgstr "Referencias de la solicitud"
+
+msgctxt "view:res.request:0"
+msgid "Close"
+msgstr "Cerrar"
+
+msgctxt "view:res.request:0"
+msgid "References"
+msgstr "Referencias"
+
+msgctxt "view:res.request:0"
+msgid "Reply"
+msgstr "Responder"
+
+msgctxt "view:res.request:0"
+msgid "Request"
+msgstr "Solicitud"
+
+msgctxt "view:res.request:0"
+msgid "Requests"
+msgstr "Solicitudes"
+
+msgctxt "view:res.request:0"
+msgid "Send"
+msgstr "Enviar"
+
+msgctxt "view:res.user.config.init:0"
+msgid "Add Users"
+msgstr "Añadir usuarios"
+
+msgctxt "view:res.user.config.init:0"
+msgid "Be careful that the login must be unique!"
+msgstr "Asegúrese de hacer los nombres de usuario únicos"
+
+msgctxt "view:res.user.config.init:0"
+msgid "You can now add some users into the system."
+msgstr "Ahora puede añadir algunos usuarios al sistema."
+
+msgctxt "view:res.user.warning:0"
+msgid "Warning"
+msgstr "Advertencia"
+
+msgctxt "view:res.user.warning:0"
+msgid "Warnings"
+msgstr "Advertencias"
+
+msgctxt "view:res.user:0"
+msgid "Access Permissions"
+msgstr ""
+
+msgctxt "view:res.user:0"
+msgid "Group Membership"
+msgstr ""
+
+msgctxt "view:res.user:0"
+msgid "Preferences"
+msgstr "Preferencias"
+
+msgctxt "view:res.user:0"
+msgid "Security"
+msgstr "Seguridad"
+
+msgctxt "view:res.user:0"
+msgid "User"
+msgstr "Usuario"
+
+msgctxt "view:res.user:0"
+msgid "Users"
+msgstr "Usuarios"
+
+msgctxt "wizard_button:res.user.config,init,end:0"
+msgid "Cancel"
+msgstr "Cancelar"
+
+msgctxt "wizard_button:res.user.config,init,user:0"
+msgid "Ok"
+msgstr "Aceptar"
+
+msgctxt "wizard_button:res.user.config,user,add:0"
+msgid "Add"
+msgstr "Añadir"
+
+msgctxt "wizard_button:res.user.config,user,end:0"
+msgid "End"
+msgstr "Finalizar"
diff --git a/trytond/res/locale/fr_FR.po b/trytond/res/locale/fr_FR.po
new file mode 100644
index 0000000..0fdee62
--- /dev/null
+++ b/trytond/res/locale/fr_FR.po
@@ -0,0 +1,689 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:res.group:0"
+msgid "The name of the group must be unique!"
+msgstr "Le nom du groupe doit être unique !"
+
+msgctxt "error:res.user:0"
+msgid "Wrong password!"
+msgstr "Mauvais mot de passe !"
+
+msgctxt "error:res.user:0"
+msgid "You can not have two users with the same login!"
+msgstr "Vous ne pouvez pas créer deux utilisateur avec le même nom !"
+
+msgctxt "error:res.user:0"
+msgid ""
+"You can not remove the root user\n"
+"as it is used internally for resources\n"
+"created by the system (updates, module installation, ...)"
+msgstr ""
+"Vous ne pouvez pas supprimer l'utilisateur racine\n"
+"puisqu'il est utilisé en interne pour créer\n"
+"des ressources par le système (mise-à-jour, installation de module, ...)"
+
+msgctxt "field:ir.action-res.group,action:0"
+msgid "Action"
+msgstr "Action"
+
+msgctxt "field:ir.action-res.group,group:0"
+msgid "Group"
+msgstr "Groupe"
+
+msgctxt "field:ir.action-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.model.field-res.group,field_id:0"
+msgid "Model Field"
+msgstr "Champ de modèle"
+
+msgctxt "field:ir.model.field-res.group,group_id:0"
+msgid "Group"
+msgstr "Groupe"
+
+msgctxt "field:ir.model.field-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.rule.group-res.group,group:0"
+msgid "Group"
+msgstr "Groupe"
+
+msgctxt "field:ir.rule.group-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.rule.group-res.group,rule_group:0"
+msgid "Rule Group"
+msgstr "Group de règle"
+
+msgctxt "field:ir.rule.group-res.user,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.rule.group-res.user,rule_group:0"
+msgid "Rule Group"
+msgstr "Group de règle"
+
+msgctxt "field:ir.rule.group-res.user,user:0"
+msgid "User"
+msgstr "Utilisateur"
+
+msgctxt "field:ir.sequence,groups:0"
+msgid "User Groups"
+msgstr "Groupes de l'utilisateur"
+
+msgctxt "field:ir.sequence.strict,groups:0"
+msgid "User Groups"
+msgstr "Groupes d'utilisateurs"
+
+msgctxt "field:ir.sequence.type,groups:0"
+msgid "User Groups"
+msgstr "Groupes d'utilisateurs"
+
+msgctxt "field:ir.sequence.type-res.group,group:0"
+msgid "User Groups"
+msgstr "Groupes d'utilisateur"
+
+msgctxt "field:ir.sequence.type-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:ir.sequence.type-res.group,sequence_type:0"
+msgid "Sequence Type"
+msgstr "Type de séquence"
+
+msgctxt "field:ir.ui.menu-res.group,group:0"
+msgid "Group"
+msgstr "Groupe"
+
+msgctxt "field:ir.ui.menu-res.group,menu:0"
+msgid "Menu"
+msgstr "Menu"
+
+msgctxt "field:ir.ui.menu-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:res.group,field_access:0"
+msgid "Access Field"
+msgstr "Droit d'accès"
+
+msgctxt "field:res.group,menu_access:0"
+msgid "Access Menu"
+msgstr "Accès aux menus"
+
+msgctxt "field:res.group,model_access:0"
+msgid "Access Model"
+msgstr "Accès aux modèles"
+
+msgctxt "field:res.group,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:res.group,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:res.group,rule_groups:0"
+msgid "Rules"
+msgstr "Règles"
+
+msgctxt "field:res.group,users:0"
+msgid "Users"
+msgstr "Utilisateurs"
+
+msgctxt "field:res.request,act_from:0"
+msgid "From"
+msgstr "De"
+
+msgctxt "field:res.request,act_to:0"
+msgid "To"
+msgstr "À"
+
+msgctxt "field:res.request,active:0"
+msgid "Active"
+msgstr "Actif"
+
+msgctxt "field:res.request,body:0"
+msgid "Body"
+msgstr "Demande"
+
+msgctxt "field:res.request,date_sent:0"
+msgid "Date"
+msgstr "Date"
+
+msgctxt "field:res.request,history:0"
+msgid "History"
+msgstr "Historique"
+
+msgctxt "field:res.request,name:0"
+msgid "Subject"
+msgstr "Sujet"
+
+msgctxt "field:res.request,number_references:0"
+msgid "Number of References"
+msgstr "Nombre de référence"
+
+msgctxt "field:res.request,priority:0"
+msgid "Priority"
+msgstr "Priorité"
+
+msgctxt "field:res.request,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:res.request,references:0"
+msgid "References"
+msgstr "Références"
+
+msgctxt "field:res.request,state:0"
+msgid "State"
+msgstr "État"
+
+msgctxt "field:res.request,trigger_date:0"
+msgid "Trigger Date"
+msgstr "Date de déclenchement"
+
+msgctxt "field:res.request.history,act_from:0"
+msgid "From"
+msgstr "De"
+
+msgctxt "field:res.request.history,act_to:0"
+msgid "To"
+msgstr "À"
+
+msgctxt "field:res.request.history,body:0"
+msgid "Body"
+msgstr "Corps"
+
+msgctxt "field:res.request.history,date_sent:0"
+msgid "Date sent"
+msgstr "Date d'envoi"
+
+msgctxt "field:res.request.history,name:0"
+msgid "Summary"
+msgstr "Résumé"
+
+msgctxt "field:res.request.history,number_references:0"
+msgid "References"
+msgstr "Références"
+
+msgctxt "field:res.request.history,priority:0"
+msgid "Priority"
+msgstr "Priorité"
+
+msgctxt "field:res.request.history,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:res.request.history,request:0"
+msgid "Request"
+msgstr "Demande"
+
+msgctxt "field:res.request.history,state:0"
+msgid "State"
+msgstr "État"
+
+msgctxt "field:res.request.history,subject:0"
+msgid "Subject"
+msgstr "Sujet"
+
+msgctxt "field:res.request.link,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:res.request.link,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:res.request.link,priority:0"
+msgid "Priority"
+msgstr "Priorité"
+
+msgctxt "field:res.request.link,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:res.request.reference,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:res.request.reference,reference:0"
+msgid "Reference"
+msgstr "Référence"
+
+msgctxt "field:res.request.reference,request:0"
+msgid "Request"
+msgstr "Demande"
+
+msgctxt "field:res.user,action:0"
+msgid "Home Action"
+msgstr "Action accueil"
+
+msgctxt "field:res.user,active:0"
+msgid "Active"
+msgstr "Actif"
+
+msgctxt "field:res.user,connections:0"
+msgid "Connections"
+msgstr "Connexions"
+
+msgctxt "field:res.user,email:0"
+msgid "Email"
+msgstr "E-mail"
+
+msgctxt "field:res.user,groups:0"
+msgid "Groups"
+msgstr "Groupes"
+
+msgctxt "field:res.user,language:0"
+msgid "Language"
+msgstr "Langue"
+
+msgctxt "field:res.user,language_direction:0"
+msgid "Language Direction"
+msgstr "Direction de la langue"
+
+msgctxt "field:res.user,login:0"
+msgid "Login"
+msgstr "Nom d'utilisateur"
+
+msgctxt "field:res.user,menu:0"
+msgid "Menu Action"
+msgstr "Action menu"
+
+msgctxt "field:res.user,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:res.user,password:0"
+msgid "Password"
+msgstr "Mot de passe"
+
+msgctxt "field:res.user,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:res.user,rule_groups:0"
+msgid "Rules"
+msgstr "Règles"
+
+msgctxt "field:res.user,salt:0"
+msgid "Salt"
+msgstr "Sel"
+
+msgctxt "field:res.user,signature:0"
+msgid "Signature"
+msgstr "Signature"
+
+msgctxt "field:res.user,status_bar:0"
+msgid "Status Bar"
+msgstr "Barre d'état"
+
+msgctxt "field:res.user,timezone:0"
+msgid "Timezone"
+msgstr "Fuseau horaire"
+
+msgctxt "field:res.user,warnings:0"
+msgid "Warnings"
+msgstr "Avertissements"
+
+msgctxt "field:res.user-res.group,group:0"
+msgid "Group"
+msgstr "Groupe"
+
+msgctxt "field:res.user-res.group,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:res.user-res.group,user:0"
+msgid "User"
+msgstr "Utilisateur"
+
+msgctxt "field:res.user.warning,always:0"
+msgid "Always"
+msgstr "Toujours"
+
+msgctxt "field:res.user.warning,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:res.user.warning,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:res.user.warning,user:0"
+msgid "User"
+msgstr "Utilisateur"
+
+msgctxt "help:ir.sequence.type,groups:0"
+msgid "Groups allowed to edit the sequences of this type"
+msgstr "Groupes autorisé à éditer les séquences de ce type"
+
+msgctxt "model:ir.action,name:act_group_form"
+msgid "Groups"
+msgstr "Groupes"
+
+msgctxt "model:ir.action,name:act_request_form"
+msgid "Requests"
+msgstr "Demandes"
+
+msgctxt "model:ir.action,name:act_request_link_form"
+msgid "Request Links"
+msgstr "Liens des demandes"
+
+msgctxt "model:ir.action,name:act_user_form"
+msgid "Users"
+msgstr "Utilisateurs"
+
+msgctxt "model:ir.action-res.group,name:0"
+msgid "Action - Group"
+msgstr "Action - Groupe"
+
+msgctxt "model:ir.cron,name:cron_trigger_time"
+msgid "Run On Time Triggers"
+msgstr "Lance les déclencheurs \"À temps\""
+
+msgctxt "model:ir.model.field-res.group,name:0"
+msgid "Model Field Group Rel"
+msgstr "Champ de modèle - Group"
+
+msgctxt "model:ir.rule.group-res.group,name:0"
+msgid "Rule Group - Group"
+msgstr "Groupe de règle - Groupe"
+
+msgctxt "model:ir.rule.group-res.user,name:0"
+msgid "Rule Group - User"
+msgstr "Groupe de règle - Utilisateur"
+
+msgctxt "model:ir.sequence.type-res.group,name:0"
+msgid "Sequence Type - Group"
+msgstr "Type de séquence - Groupe"
+
+msgctxt "model:ir.ui.menu,name:menu_group_form"
+msgid "Groups"
+msgstr "Groupes"
+
+msgctxt "model:ir.ui.menu,name:menu_request_form"
+msgid "Requests"
+msgstr "Demandes"
+
+msgctxt "model:ir.ui.menu,name:menu_request_link_form"
+msgid "Request Links"
+msgstr "Liens des demandes"
+
+msgctxt "model:ir.ui.menu,name:menu_res"
+msgid "Users"
+msgstr "Res"
+
+msgctxt "model:ir.ui.menu,name:menu_user_form"
+msgid "Users"
+msgstr "Utilisateurs"
+
+msgctxt "model:ir.ui.menu-res.group,name:0"
+msgid "UI Menu - Group"
+msgstr "Menu de l'IU - Groupe"
+
+msgctxt "model:res.group,name:0"
+msgid "Group"
+msgstr "Groupe"
+
+msgctxt "model:res.group,name:group_admin"
+msgid "Administration"
+msgstr "Administration"
+
+msgctxt "model:res.request,name:0"
+msgid "Request"
+msgstr "Demande"
+
+msgctxt "model:res.request.history,name:0"
+msgid "Request history"
+msgstr "Historique de demande"
+
+msgctxt "model:res.request.link,name:0"
+msgid "Request link"
+msgstr "Lien de demande"
+
+msgctxt "model:res.request.link,name:request_link_cron"
+msgid "Scheduler"
+msgstr "Planificateur"
+
+msgctxt "model:res.request.reference,name:0"
+msgid "Request Reference"
+msgstr "Référence de la demande"
+
+msgctxt "model:res.user,name:0"
+msgid "User"
+msgstr "Utilisateur"
+
+msgctxt "model:res.user,name:user_admin"
+msgid "Administrator"
+msgstr "Administrateur"
+
+msgctxt "model:res.user,name:user_trigger"
+msgid "Cron Trigger"
+msgstr "Déclencheur du planificateur"
+
+msgctxt "model:res.user-res.group,name:0"
+msgid "User - Group"
+msgstr "Utilisateur - Groupe"
+
+msgctxt "model:res.user.config.init,name:0"
+msgid "User Config Init"
+msgstr "Configuration d'utilisateur - Init"
+
+msgctxt "model:res.user.warning,name:0"
+msgid "User Warning"
+msgstr "Avertissement utilisateur"
+
+msgctxt "selection:res.request,priority:0"
+msgid "High"
+msgstr "Élevée"
+
+msgctxt "selection:res.request,priority:0"
+msgid "Low"
+msgstr "Faible"
+
+msgctxt "selection:res.request,priority:0"
+msgid "Normal"
+msgstr "Normale"
+
+msgctxt "selection:res.request,state:0"
+msgid "Chatting"
+msgstr "En discussion"
+
+msgctxt "selection:res.request,state:0"
+msgid "Closed"
+msgstr "Fermé"
+
+msgctxt "selection:res.request,state:0"
+msgid "Draft"
+msgstr "Brouillon"
+
+msgctxt "selection:res.request,state:0"
+msgid "Waiting"
+msgstr "En attente"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "High"
+msgstr "Élevée"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Low"
+msgstr "Basse"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Normal"
+msgstr "Normale"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Chatting"
+msgstr "En discussion"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Closed"
+msgstr "Fermé"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Draft"
+msgstr "Brouillon"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Waiting"
+msgstr "En attente"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr "Annuler l'installation"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr "Annuler la désinstallation"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr "Annuler la mise à jour"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr "Marquer pour l'installation"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr "Marquer pour la désinstallation (beta)"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr "Marquer pour la mise à jour"
+
+msgctxt "view:res.group:0"
+msgid "Access Permissions"
+msgstr "Permissions d'accès"
+
+msgctxt "view:res.group:0"
+msgid "Group"
+msgstr "Groupe"
+
+msgctxt "view:res.group:0"
+msgid "Groups"
+msgstr "Groupes"
+
+msgctxt "view:res.group:0"
+msgid "Members"
+msgstr "Membres"
+
+msgctxt "view:res.group:0"
+msgid "Security"
+msgstr "Sécurité"
+
+msgctxt "view:res.request.history:0"
+msgid "Request History"
+msgstr "Historique des demandes"
+
+msgctxt "view:res.request.link:0"
+msgid "Request Link"
+msgstr "Lien des demandes"
+
+msgctxt "view:res.request.reference:0"
+msgid "Request Reference"
+msgstr "Référence de la demande"
+
+msgctxt "view:res.request.reference:0"
+msgid "Request References"
+msgstr "Références de la demande"
+
+msgctxt "view:res.request:0"
+msgid "Close"
+msgstr "Fermer"
+
+msgctxt "view:res.request:0"
+msgid "Description"
+msgstr "Description"
+
+msgctxt "view:res.request:0"
+msgid "History"
+msgstr "Historique"
+
+msgctxt "view:res.request:0"
+msgid "References"
+msgstr "Références"
+
+msgctxt "view:res.request:0"
+msgid "Reply"
+msgstr "Repondre"
+
+msgctxt "view:res.request:0"
+msgid "Request"
+msgstr "Demande"
+
+msgctxt "view:res.request:0"
+msgid "Requests"
+msgstr "Demandes"
+
+msgctxt "view:res.request:0"
+msgid "Send"
+msgstr "Envoyer"
+
+msgctxt "view:res.user.config.init:0"
+msgid "Add Users"
+msgstr "Ajout d'utilisateurs"
+
+msgctxt "view:res.user.config.init:0"
+msgid "Be careful that the login must be unique!"
+msgstr "Attention l'utilisateur doit être unique !"
+
+msgctxt "view:res.user.config.init:0"
+msgid "You can now add some users into the system."
+msgstr "Vous pouvez maintenant ajouter des utilisateurs au système."
+
+msgctxt "view:res.user.warning:0"
+msgid "Warning"
+msgstr "Avertissement"
+
+msgctxt "view:res.user.warning:0"
+msgid "Warnings"
+msgstr "Avertissements"
+
+msgctxt "view:res.user:0"
+msgid "Access Permissions"
+msgstr "Permission d'accès"
+
+msgctxt "view:res.user:0"
+msgid "Group Membership"
+msgstr "Groupes"
+
+msgctxt "view:res.user:0"
+msgid "Preferences"
+msgstr "Préférences"
+
+msgctxt "view:res.user:0"
+msgid "Security"
+msgstr "Sécurité"
+
+msgctxt "view:res.user:0"
+msgid "User"
+msgstr "Utilisateur"
+
+msgctxt "view:res.user:0"
+msgid "Users"
+msgstr "Utilisateurs"
+
+msgctxt "wizard_button:res.user.config,init,end:0"
+msgid "Cancel"
+msgstr "Annuler"
+
+msgctxt "wizard_button:res.user.config,init,user:0"
+msgid "Ok"
+msgstr "Ok"
+
+msgctxt "wizard_button:res.user.config,user,add:0"
+msgid "Add"
+msgstr "Ajouter"
+
+msgctxt "wizard_button:res.user.config,user,end:0"
+msgid "End"
+msgstr "Terminer"
diff --git a/trytond/res/locale/nl_NL.po b/trytond/res/locale/nl_NL.po
new file mode 100644
index 0000000..6660aed
--- /dev/null
+++ b/trytond/res/locale/nl_NL.po
@@ -0,0 +1,741 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:res.group:0"
+msgid "The name of the group must be unique!"
+msgstr ""
+
+msgctxt "error:res.user:0"
+msgid "Wrong password!"
+msgstr ""
+
+msgctxt "error:res.user:0"
+msgid "You can not have two users with the same login!"
+msgstr ""
+
+msgctxt "error:res.user:0"
+msgid ""
+"You can not remove the root user\n"
+"as it is used internally for resources\n"
+"created by the system (updates, module installation, ...)"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.action-res.group,action:0"
+msgid "Action"
+msgstr "Actie"
+
+#, fuzzy
+msgctxt "field:ir.action-res.group,group:0"
+msgid "Group"
+msgstr "Groep"
+
+#, fuzzy
+msgctxt "field:ir.action-res.group,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+msgctxt "field:ir.model.field-res.group,field_id:0"
+msgid "Model Field"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.model.field-res.group,group_id:0"
+msgid "Group"
+msgstr "Groep"
+
+#, fuzzy
+msgctxt "field:ir.model.field-res.group,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:ir.rule.group-res.group,group:0"
+msgid "Group"
+msgstr "Groep"
+
+#, fuzzy
+msgctxt "field:ir.rule.group-res.group,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+msgctxt "field:ir.rule.group-res.group,rule_group:0"
+msgid "Rule Group"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.rule.group-res.user,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+msgctxt "field:ir.rule.group-res.user,rule_group:0"
+msgid "Rule Group"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.rule.group-res.user,user:0"
+msgid "User"
+msgstr "Gebruiker"
+
+msgctxt "field:ir.sequence,groups:0"
+msgid "User Groups"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,groups:0"
+msgid "User Groups"
+msgstr ""
+
+msgctxt "field:ir.sequence.type,groups:0"
+msgid "User Groups"
+msgstr ""
+
+msgctxt "field:ir.sequence.type-res.group,group:0"
+msgid "User Groups"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.sequence.type-res.group,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:ir.sequence.type-res.group,sequence_type:0"
+msgid "Sequence Type"
+msgstr "Reeks type"
+
+#, fuzzy
+msgctxt "field:ir.ui.menu-res.group,group:0"
+msgid "Group"
+msgstr "Groep"
+
+#, fuzzy
+msgctxt "field:ir.ui.menu-res.group,menu:0"
+msgid "Menu"
+msgstr "Menu"
+
+#, fuzzy
+msgctxt "field:ir.ui.menu-res.group,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+msgctxt "field:res.group,field_access:0"
+msgid "Access Field"
+msgstr ""
+
+msgctxt "field:res.group,menu_access:0"
+msgid "Access Menu"
+msgstr ""
+
+msgctxt "field:res.group,model_access:0"
+msgid "Access Model"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:res.group,name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:res.group,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+msgctxt "field:res.group,rule_groups:0"
+msgid "Rules"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:res.group,users:0"
+msgid "Users"
+msgstr "Gebruikers"
+
+msgctxt "field:res.request,act_from:0"
+msgid "From"
+msgstr ""
+
+msgctxt "field:res.request,act_to:0"
+msgid "To"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:res.request,active:0"
+msgid "Active"
+msgstr "Actief"
+
+msgctxt "field:res.request,body:0"
+msgid "Body"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:res.request,date_sent:0"
+msgid "Date"
+msgstr "Vervaldatum"
+
+msgctxt "field:res.request,history:0"
+msgid "History"
+msgstr ""
+
+msgctxt "field:res.request,name:0"
+msgid "Subject"
+msgstr ""
+
+msgctxt "field:res.request,number_references:0"
+msgid "Number of References"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:res.request,priority:0"
+msgid "Priority"
+msgstr "Prioriteit"
+
+#, fuzzy
+msgctxt "field:res.request,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+msgctxt "field:res.request,references:0"
+msgid "References"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:res.request,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:res.request,trigger_date:0"
+msgid "Trigger Date"
+msgstr ""
+
+msgctxt "field:res.request.history,act_from:0"
+msgid "From"
+msgstr ""
+
+msgctxt "field:res.request.history,act_to:0"
+msgid "To"
+msgstr ""
+
+msgctxt "field:res.request.history,body:0"
+msgid "Body"
+msgstr ""
+
+msgctxt "field:res.request.history,date_sent:0"
+msgid "Date sent"
+msgstr ""
+
+msgctxt "field:res.request.history,name:0"
+msgid "Summary"
+msgstr ""
+
+msgctxt "field:res.request.history,number_references:0"
+msgid "References"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:res.request.history,priority:0"
+msgid "Priority"
+msgstr "Prioriteit"
+
+#, fuzzy
+msgctxt "field:res.request.history,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+msgctxt "field:res.request.history,request:0"
+msgid "Request"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:res.request.history,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:res.request.history,subject:0"
+msgid "Subject"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:res.request.link,model:0"
+msgid "Model"
+msgstr "Model"
+
+#, fuzzy
+msgctxt "field:res.request.link,name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:res.request.link,priority:0"
+msgid "Priority"
+msgstr "Prioriteit"
+
+#, fuzzy
+msgctxt "field:res.request.link,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:res.request.reference,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:res.request.reference,reference:0"
+msgid "Reference"
+msgstr "Referentie"
+
+msgctxt "field:res.request.reference,request:0"
+msgid "Request"
+msgstr ""
+
+msgctxt "field:res.user,action:0"
+msgid "Home Action"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:res.user,active:0"
+msgid "Active"
+msgstr "Actief"
+
+msgctxt "field:res.user,connections:0"
+msgid "Connections"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:res.user,email:0"
+msgid "Email"
+msgstr "E-mail"
+
+#, fuzzy
+msgctxt "field:res.user,groups:0"
+msgid "Groups"
+msgstr "Groepen"
+
+#, fuzzy
+msgctxt "field:res.user,language:0"
+msgid "Language"
+msgstr "Taal"
+
+msgctxt "field:res.user,language_direction:0"
+msgid "Language Direction"
+msgstr ""
+
+msgctxt "field:res.user,login:0"
+msgid "Login"
+msgstr ""
+
+msgctxt "field:res.user,menu:0"
+msgid "Menu Action"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:res.user,name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+msgctxt "field:res.user,password:0"
+msgid "Password"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:res.user,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+msgctxt "field:res.user,rule_groups:0"
+msgid "Rules"
+msgstr ""
+
+msgctxt "field:res.user,salt:0"
+msgid "Salt"
+msgstr ""
+
+msgctxt "field:res.user,signature:0"
+msgid "Signature"
+msgstr ""
+
+msgctxt "field:res.user,status_bar:0"
+msgid "Status Bar"
+msgstr ""
+
+msgctxt "field:res.user,timezone:0"
+msgid "Timezone"
+msgstr ""
+
+msgctxt "field:res.user,warnings:0"
+msgid "Warnings"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:res.user-res.group,group:0"
+msgid "Group"
+msgstr "Groep"
+
+#, fuzzy
+msgctxt "field:res.user-res.group,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:res.user-res.group,user:0"
+msgid "User"
+msgstr "Gebruiker"
+
+msgctxt "field:res.user.warning,always:0"
+msgid "Always"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:res.user.warning,name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:res.user.warning,rec_name:0"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:res.user.warning,user:0"
+msgid "User"
+msgstr "Gebruiker"
+
+msgctxt "help:ir.sequence.type,groups:0"
+msgid "Groups allowed to edit the sequences of this type"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_group_form"
+msgid "Groups"
+msgstr "Groepen"
+
+msgctxt "model:ir.action,name:act_request_form"
+msgid "Requests"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_request_link_form"
+msgid "Request Links"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_user_form"
+msgid "Users"
+msgstr "Gebruikers"
+
+msgctxt "model:ir.action-res.group,name:0"
+msgid "Action - Group"
+msgstr ""
+
+msgctxt "model:ir.cron,name:cron_trigger_time"
+msgid "Run On Time Triggers"
+msgstr ""
+
+msgctxt "model:ir.model.field-res.group,name:0"
+msgid "Model Field Group Rel"
+msgstr ""
+
+msgctxt "model:ir.rule.group-res.group,name:0"
+msgid "Rule Group - Group"
+msgstr ""
+
+msgctxt "model:ir.rule.group-res.user,name:0"
+msgid "Rule Group - User"
+msgstr ""
+
+msgctxt "model:ir.sequence.type-res.group,name:0"
+msgid "Sequence Type - Group"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_group_form"
+msgid "Groups"
+msgstr "Groepen"
+
+msgctxt "model:ir.ui.menu,name:menu_request_form"
+msgid "Requests"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_request_link_form"
+msgid "Request Links"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_res"
+msgid "Users"
+msgstr "Gebruikers"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_user_form"
+msgid "Users"
+msgstr "Gebruikers"
+
+msgctxt "model:ir.ui.menu-res.group,name:0"
+msgid "UI Menu - Group"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:res.group,name:0"
+msgid "Group"
+msgstr "Groep"
+
+#, fuzzy
+msgctxt "model:res.group,name:group_admin"
+msgid "Administration"
+msgstr "Systeembeheer"
+
+msgctxt "model:res.request,name:0"
+msgid "Request"
+msgstr ""
+
+msgctxt "model:res.request.history,name:0"
+msgid "Request history"
+msgstr ""
+
+msgctxt "model:res.request.link,name:0"
+msgid "Request link"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:res.request.link,name:request_link_cron"
+msgid "Scheduler"
+msgstr "Planner"
+
+msgctxt "model:res.request.reference,name:0"
+msgid "Request Reference"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:res.user,name:0"
+msgid "User"
+msgstr "Gebruiker"
+
+msgctxt "model:res.user,name:user_admin"
+msgid "Administrator"
+msgstr ""
+
+msgctxt "model:res.user,name:user_trigger"
+msgid "Cron Trigger"
+msgstr ""
+
+msgctxt "model:res.user-res.group,name:0"
+msgid "User - Group"
+msgstr ""
+
+msgctxt "model:res.user.config.init,name:0"
+msgid "User Config Init"
+msgstr ""
+
+msgctxt "model:res.user.warning,name:0"
+msgid "User Warning"
+msgstr ""
+
+msgctxt "selection:res.request,priority:0"
+msgid "High"
+msgstr ""
+
+msgctxt "selection:res.request,priority:0"
+msgid "Low"
+msgstr ""
+
+msgctxt "selection:res.request,priority:0"
+msgid "Normal"
+msgstr ""
+
+msgctxt "selection:res.request,state:0"
+msgid "Chatting"
+msgstr ""
+
+msgctxt "selection:res.request,state:0"
+msgid "Closed"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:res.request,state:0"
+msgid "Draft"
+msgstr "Concept"
+
+#, fuzzy
+msgctxt "selection:res.request,state:0"
+msgid "Waiting"
+msgstr "In afwachting"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "High"
+msgstr ""
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Low"
+msgstr ""
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Normal"
+msgstr ""
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Chatting"
+msgstr ""
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Closed"
+msgstr ""
+
+#, fuzzy
+msgctxt "selection:res.request.history,state:0"
+msgid "Draft"
+msgstr "Concept"
+
+#, fuzzy
+msgctxt "selection:res.request.history,state:0"
+msgid "Waiting"
+msgstr "In afwachting"
+
+#, fuzzy
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr "Installatie annuleren"
+
+#, fuzzy
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr "Verwijderen ongedaan maken"
+
+#, fuzzy
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr "Bijwerken annuleren"
+
+#, fuzzy
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr "Selecteer voor installatie"
+
+#, fuzzy
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr "Selecteer voor verwijderen (beta)"
+
+#, fuzzy
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr "Selecteer voor bijwerken"
+
+msgctxt "view:res.group:0"
+msgid "Access Permissions"
+msgstr ""
+
+#, fuzzy
+msgctxt "view:res.group:0"
+msgid "Group"
+msgstr "Groep"
+
+#, fuzzy
+msgctxt "view:res.group:0"
+msgid "Groups"
+msgstr "Groepen"
+
+msgctxt "view:res.group:0"
+msgid "Members"
+msgstr ""
+
+msgctxt "view:res.request.history:0"
+msgid "Request History"
+msgstr ""
+
+msgctxt "view:res.request.link:0"
+msgid "Request Link"
+msgstr ""
+
+msgctxt "view:res.request.reference:0"
+msgid "Request Reference"
+msgstr ""
+
+msgctxt "view:res.request.reference:0"
+msgid "Request References"
+msgstr ""
+
+#, fuzzy
+msgctxt "view:res.request:0"
+msgid "Close"
+msgstr "Sluiten"
+
+msgctxt "view:res.request:0"
+msgid "References"
+msgstr ""
+
+msgctxt "view:res.request:0"
+msgid "Reply"
+msgstr ""
+
+msgctxt "view:res.request:0"
+msgid "Request"
+msgstr ""
+
+msgctxt "view:res.request:0"
+msgid "Requests"
+msgstr ""
+
+msgctxt "view:res.request:0"
+msgid "Send"
+msgstr ""
+
+msgctxt "view:res.user.config.init:0"
+msgid "Add Users"
+msgstr ""
+
+msgctxt "view:res.user.config.init:0"
+msgid "Be careful that the login must be unique!"
+msgstr ""
+
+msgctxt "view:res.user.config.init:0"
+msgid "You can now add some users into the system."
+msgstr ""
+
+#, fuzzy
+msgctxt "view:res.user.warning:0"
+msgid "Warning"
+msgstr "Waarschuwing"
+
+msgctxt "view:res.user.warning:0"
+msgid "Warnings"
+msgstr ""
+
+msgctxt "view:res.user:0"
+msgid "Access Permissions"
+msgstr ""
+
+msgctxt "view:res.user:0"
+msgid "Group Membership"
+msgstr ""
+
+msgctxt "view:res.user:0"
+msgid "Preferences"
+msgstr ""
+
+#, fuzzy
+msgctxt "view:res.user:0"
+msgid "User"
+msgstr "Gebruiker"
+
+#, fuzzy
+msgctxt "view:res.user:0"
+msgid "Users"
+msgstr "Gebruikers"
+
+#, fuzzy
+msgctxt "wizard_button:res.user.config,init,end:0"
+msgid "Cancel"
+msgstr "Annuleren"
+
+#, fuzzy
+msgctxt "wizard_button:res.user.config,init,user:0"
+msgid "Ok"
+msgstr "Oké"
+
+#, fuzzy
+msgctxt "wizard_button:res.user.config,user,add:0"
+msgid "Add"
+msgstr "Toevoegen"
+
+msgctxt "wizard_button:res.user.config,user,end:0"
+msgid "End"
+msgstr ""
diff --git a/trytond/res/locale/ru_RU.po b/trytond/res/locale/ru_RU.po
new file mode 100644
index 0000000..7fb8264
--- /dev/null
+++ b/trytond/res/locale/ru_RU.po
@@ -0,0 +1,699 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:res.group:0"
+msgid "The name of the group must be unique!"
+msgstr "Наименование группы должно быть уникальным!"
+
+msgctxt "error:res.user:0"
+msgid "Wrong password!"
+msgstr "Ошибка пароля!"
+
+msgctxt "error:res.user:0"
+msgid "You can not have two users with the same login!"
+msgstr "Такое имя пользователя уже есть !"
+
+msgctxt "error:res.user:0"
+msgid ""
+"You can not remove the root user\n"
+"as it is used internally for resources\n"
+"created by the system (updates, module installation, ...)"
+msgstr ""
+"Вы не можете удалить основного пользователя системы\n"
+"т.к. он используется во внутренних процессах системы\n"
+"(обновление, установка модулей, ...)"
+
+#, fuzzy
+msgctxt "field:ir.action-res.group,action:0"
+msgid "Action"
+msgstr "Действие"
+
+#, fuzzy
+msgctxt "field:ir.action-res.group,group:0"
+msgid "Group"
+msgstr "Группы"
+
+msgctxt "field:ir.action-res.group,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.model.field-res.group,field_id:0"
+msgid "Model Field"
+msgstr "Поле шаблона"
+
+msgctxt "field:ir.model.field-res.group,group_id:0"
+msgid "Group"
+msgstr "Группа"
+
+msgctxt "field:ir.model.field-res.group,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:ir.rule.group-res.group,group:0"
+msgid "Group"
+msgstr "Группы"
+
+msgctxt "field:ir.rule.group-res.group,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.rule.group-res.group,rule_group:0"
+msgid "Rule Group"
+msgstr ""
+
+msgctxt "field:ir.rule.group-res.user,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:ir.rule.group-res.user,rule_group:0"
+msgid "Rule Group"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.rule.group-res.user,user:0"
+msgid "User"
+msgstr "Пользователь"
+
+msgctxt "field:ir.sequence,groups:0"
+msgid "User Groups"
+msgstr ""
+
+msgctxt "field:ir.sequence.strict,groups:0"
+msgid "User Groups"
+msgstr ""
+
+msgctxt "field:ir.sequence.type,groups:0"
+msgid "User Groups"
+msgstr ""
+
+msgctxt "field:ir.sequence.type-res.group,group:0"
+msgid "User Groups"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:ir.sequence.type-res.group,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:ir.sequence.type-res.group,sequence_type:0"
+msgid "Sequence Type"
+msgstr "Тип последовательности"
+
+#, fuzzy
+msgctxt "field:ir.ui.menu-res.group,group:0"
+msgid "Group"
+msgstr "Группы"
+
+#, fuzzy
+msgctxt "field:ir.ui.menu-res.group,menu:0"
+msgid "Menu"
+msgstr "Меню"
+
+msgctxt "field:ir.ui.menu-res.group,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:res.group,field_access:0"
+msgid "Access Field"
+msgstr ""
+
+msgctxt "field:res.group,menu_access:0"
+msgid "Access Menu"
+msgstr "Меню доступа"
+
+msgctxt "field:res.group,model_access:0"
+msgid "Access Model"
+msgstr "Шаблон доступа"
+
+msgctxt "field:res.group,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:res.group,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:res.group,rule_groups:0"
+msgid "Rules"
+msgstr "Правила"
+
+msgctxt "field:res.group,users:0"
+msgid "Users"
+msgstr "Пользователи"
+
+msgctxt "field:res.request,act_from:0"
+msgid "From"
+msgstr "От кого"
+
+msgctxt "field:res.request,act_to:0"
+msgid "To"
+msgstr "Кому"
+
+msgctxt "field:res.request,active:0"
+msgid "Active"
+msgstr "Действительный"
+
+msgctxt "field:res.request,body:0"
+msgid "Body"
+msgstr "Сообщение"
+
+msgctxt "field:res.request,date_sent:0"
+msgid "Date"
+msgstr "Дата"
+
+msgctxt "field:res.request,history:0"
+msgid "History"
+msgstr "Архив"
+
+msgctxt "field:res.request,name:0"
+msgid "Subject"
+msgstr "Тема"
+
+msgctxt "field:res.request,number_references:0"
+msgid "Number of References"
+msgstr "Кол-во ссылок"
+
+msgctxt "field:res.request,priority:0"
+msgid "Priority"
+msgstr "Приоритер"
+
+msgctxt "field:res.request,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:res.request,references:0"
+msgid "References"
+msgstr "Ссылки"
+
+msgctxt "field:res.request,state:0"
+msgid "State"
+msgstr "Статус"
+
+msgctxt "field:res.request,trigger_date:0"
+msgid "Trigger Date"
+msgstr "Дата сообщения"
+
+msgctxt "field:res.request.history,act_from:0"
+msgid "From"
+msgstr "От кого"
+
+msgctxt "field:res.request.history,act_to:0"
+msgid "To"
+msgstr "Кому"
+
+msgctxt "field:res.request.history,body:0"
+msgid "Body"
+msgstr "Сообщение"
+
+msgctxt "field:res.request.history,date_sent:0"
+msgid "Date sent"
+msgstr "Дата отправки"
+
+msgctxt "field:res.request.history,name:0"
+msgid "Summary"
+msgstr "Резюме"
+
+msgctxt "field:res.request.history,number_references:0"
+msgid "References"
+msgstr "Ссылки"
+
+msgctxt "field:res.request.history,priority:0"
+msgid "Priority"
+msgstr "Приоретет"
+
+msgctxt "field:res.request.history,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:res.request.history,request:0"
+msgid "Request"
+msgstr "Сообщение"
+
+msgctxt "field:res.request.history,state:0"
+msgid "State"
+msgstr "Статус"
+
+msgctxt "field:res.request.history,subject:0"
+msgid "Subject"
+msgstr "Тема"
+
+msgctxt "field:res.request.link,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:res.request.link,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:res.request.link,priority:0"
+msgid "Priority"
+msgstr "Приоритет"
+
+msgctxt "field:res.request.link,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:res.request.reference,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:res.request.reference,reference:0"
+msgid "Reference"
+msgstr "Ссылка"
+
+msgctxt "field:res.request.reference,request:0"
+msgid "Request"
+msgstr "Сообщение"
+
+msgctxt "field:res.user,action:0"
+msgid "Home Action"
+msgstr "Началое действие"
+
+msgctxt "field:res.user,active:0"
+msgid "Active"
+msgstr "Действительный"
+
+msgctxt "field:res.user,connections:0"
+msgid "Connections"
+msgstr "Соединения"
+
+msgctxt "field:res.user,email:0"
+msgid "Email"
+msgstr "Эл.почта"
+
+msgctxt "field:res.user,groups:0"
+msgid "Groups"
+msgstr "Группы"
+
+msgctxt "field:res.user,language:0"
+msgid "Language"
+msgstr "Язык"
+
+msgctxt "field:res.user,language_direction:0"
+msgid "Language Direction"
+msgstr "Направления языка"
+
+msgctxt "field:res.user,login:0"
+msgid "Login"
+msgstr "Регистрация"
+
+msgctxt "field:res.user,menu:0"
+msgid "Menu Action"
+msgstr "Действия Меню"
+
+msgctxt "field:res.user,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:res.user,password:0"
+msgid "Password"
+msgstr "Пароль"
+
+msgctxt "field:res.user,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:res.user,rule_groups:0"
+msgid "Rules"
+msgstr "Правила"
+
+msgctxt "field:res.user,salt:0"
+msgid "Salt"
+msgstr "Бывалый"
+
+msgctxt "field:res.user,signature:0"
+msgid "Signature"
+msgstr "Подпись"
+
+msgctxt "field:res.user,status_bar:0"
+msgid "Status Bar"
+msgstr "Строка состояния"
+
+msgctxt "field:res.user,timezone:0"
+msgid "Timezone"
+msgstr "Зона времени"
+
+msgctxt "field:res.user,warnings:0"
+msgid "Warnings"
+msgstr "Внимания"
+
+#, fuzzy
+msgctxt "field:res.user-res.group,group:0"
+msgid "Group"
+msgstr "Группы"
+
+msgctxt "field:res.user-res.group,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:res.user-res.group,user:0"
+msgid "User"
+msgstr "Пользователь"
+
+msgctxt "field:res.user.warning,always:0"
+msgid "Always"
+msgstr "Всегда"
+
+msgctxt "field:res.user.warning,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:res.user.warning,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:res.user.warning,user:0"
+msgid "User"
+msgstr "Пользователь"
+
+msgctxt "help:ir.sequence.type,groups:0"
+msgid "Groups allowed to edit the sequences of this type"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_group_form"
+msgid "Groups"
+msgstr "Грыппы"
+
+msgctxt "model:ir.action,name:act_request_form"
+msgid "Requests"
+msgstr "Сообщения"
+
+msgctxt "model:ir.action,name:act_request_link_form"
+msgid "Request Links"
+msgstr "Ссылки сообщения"
+
+msgctxt "model:ir.action,name:act_user_form"
+msgid "Users"
+msgstr "Пользователи"
+
+msgctxt "model:ir.action-res.group,name:0"
+msgid "Action - Group"
+msgstr "Действия - Группы"
+
+msgctxt "model:ir.cron,name:cron_trigger_time"
+msgid "Run On Time Triggers"
+msgstr ""
+
+msgctxt "model:ir.model.field-res.group,name:0"
+msgid "Model Field Group Rel"
+msgstr "Шаблон Поля Группа Связь"
+
+msgctxt "model:ir.rule.group-res.group,name:0"
+msgid "Rule Group - Group"
+msgstr "Правило группы - Группа"
+
+msgctxt "model:ir.rule.group-res.user,name:0"
+msgid "Rule Group - User"
+msgstr "Правило группы - Пользователь"
+
+msgctxt "model:ir.sequence.type-res.group,name:0"
+msgid "Sequence Type - Group"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_group_form"
+msgid "Groups"
+msgstr "Группы"
+
+msgctxt "model:ir.ui.menu,name:menu_request_form"
+msgid "Requests"
+msgstr "Сообщения"
+
+msgctxt "model:ir.ui.menu,name:menu_request_link_form"
+msgid "Request Links"
+msgstr "Ссылки сообщения"
+
+msgctxt "model:ir.ui.menu,name:menu_res"
+msgid "Users"
+msgstr "Пользователи"
+
+msgctxt "model:ir.ui.menu,name:menu_user_form"
+msgid "Users"
+msgstr "Пользователи"
+
+msgctxt "model:ir.ui.menu-res.group,name:0"
+msgid "UI Menu - Group"
+msgstr " Пол.инт. Меню - Группа"
+
+msgctxt "model:res.group,name:0"
+msgid "Group"
+msgstr "Группа"
+
+msgctxt "model:res.group,name:group_admin"
+msgid "Administration"
+msgstr "группа Управление"
+
+msgctxt "model:res.request,name:0"
+msgid "Request"
+msgstr "Сообщение"
+
+msgctxt "model:res.request.history,name:0"
+msgid "Request history"
+msgstr "Архив сообщений"
+
+msgctxt "model:res.request.link,name:0"
+msgid "Request link"
+msgstr "Ссылка сообщения"
+
+msgctxt "model:res.request.link,name:request_link_cron"
+msgid "Scheduler"
+msgstr "Планировщик"
+
+msgctxt "model:res.request.reference,name:0"
+msgid "Request Reference"
+msgstr "Параметры сообщения"
+
+msgctxt "model:res.user,name:0"
+msgid "User"
+msgstr "Пользователь"
+
+msgctxt "model:res.user,name:user_admin"
+msgid "Administrator"
+msgstr "Администратор"
+
+msgctxt "model:res.user,name:user_trigger"
+msgid "Cron Trigger"
+msgstr ""
+
+msgctxt "model:res.user-res.group,name:0"
+msgid "User - Group"
+msgstr "Пользователь - Группа"
+
+msgctxt "model:res.user.config.init,name:0"
+msgid "User Config Init"
+msgstr "Настройка пользователя - инициализация"
+
+msgctxt "model:res.user.warning,name:0"
+msgid "User Warning"
+msgstr "Внимание Пользователь"
+
+msgctxt "selection:res.request,priority:0"
+msgid "High"
+msgstr "Высокий"
+
+msgctxt "selection:res.request,priority:0"
+msgid "Low"
+msgstr "Низкий"
+
+msgctxt "selection:res.request,priority:0"
+msgid "Normal"
+msgstr "Нормально"
+
+msgctxt "selection:res.request,state:0"
+msgid "Chatting"
+msgstr "Переписка"
+
+msgctxt "selection:res.request,state:0"
+msgid "Closed"
+msgstr "Закрыто"
+
+msgctxt "selection:res.request,state:0"
+msgid "Draft"
+msgstr "Черновик"
+
+msgctxt "selection:res.request,state:0"
+msgid "Waiting"
+msgstr "Ожидание"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "High"
+msgstr "Высокий"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Low"
+msgstr "Низкий"
+
+msgctxt "selection:res.request.history,priority:0"
+msgid "Normal"
+msgstr "Нормально"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Chatting"
+msgstr "Переписка"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Closed"
+msgstr "Закрыто"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Draft"
+msgstr "Черновик"
+
+msgctxt "selection:res.request.history,state:0"
+msgid "Waiting"
+msgstr "Ожидание"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Installation"
+msgstr "Отменить установку"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Uninstallation"
+msgstr "Отменить удаление"
+
+msgctxt "view:ir.module.module:0"
+msgid "Cancel Upgrade"
+msgstr " Отменить обновление"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Installation"
+msgstr "Установить"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Uninstallation (beta)"
+msgstr "Удалить (beta)"
+
+msgctxt "view:ir.module.module:0"
+msgid "Mark for Upgrade"
+msgstr "Обновить"
+
+msgctxt "view:res.group:0"
+msgid "Access Permissions"
+msgstr ""
+
+msgctxt "view:res.group:0"
+msgid "Group"
+msgstr "Группы"
+
+msgctxt "view:res.group:0"
+msgid "Groups"
+msgstr "Группы"
+
+msgctxt "view:res.group:0"
+msgid "Members"
+msgstr ""
+
+msgctxt "view:res.group:0"
+msgid "Security"
+msgstr "Доступ"
+
+msgctxt "view:res.request.history:0"
+msgid "Request History"
+msgstr "Переписка"
+
+msgctxt "view:res.request.link:0"
+msgid "Request Link"
+msgstr "Ссылка сообщения"
+
+msgctxt "view:res.request.reference:0"
+msgid "Request Reference"
+msgstr "Ссылка сообщения"
+
+msgctxt "view:res.request.reference:0"
+msgid "Request References"
+msgstr "Ссылки сообщения"
+
+msgctxt "view:res.request:0"
+msgid "Close"
+msgstr "Закрыть"
+
+msgctxt "view:res.request:0"
+msgid "Description"
+msgstr "Описание"
+
+msgctxt "view:res.request:0"
+msgid "History"
+msgstr "Переписка"
+
+msgctxt "view:res.request:0"
+msgid "References"
+msgstr "Ссылки"
+
+msgctxt "view:res.request:0"
+msgid "Reply"
+msgstr "Ответить"
+
+msgctxt "view:res.request:0"
+msgid "Request"
+msgstr "Сообщение"
+
+msgctxt "view:res.request:0"
+msgid "Requests"
+msgstr "Сообщения"
+
+msgctxt "view:res.request:0"
+msgid "Send"
+msgstr "Послать"
+
+msgctxt "view:res.user.config.init:0"
+msgid "Add Users"
+msgstr "Добавить пользователей"
+
+msgctxt "view:res.user.config.init:0"
+msgid "Be careful that the login must be unique!"
+msgstr "Внимание Имя Пользователя должно быть уникальным!"
+
+msgctxt "view:res.user.config.init:0"
+msgid "You can now add some users into the system."
+msgstr "Вы можете добавить пользователей в систему."
+
+msgctxt "view:res.user.warning:0"
+msgid "Warning"
+msgstr "Внимание"
+
+msgctxt "view:res.user.warning:0"
+msgid "Warnings"
+msgstr "Внимания"
+
+msgctxt "view:res.user:0"
+msgid "Access Permissions"
+msgstr ""
+
+msgctxt "view:res.user:0"
+msgid "Group Membership"
+msgstr ""
+
+msgctxt "view:res.user:0"
+msgid "Preferences"
+msgstr "Ссылки"
+
+msgctxt "view:res.user:0"
+msgid "Security"
+msgstr "Доступ"
+
+msgctxt "view:res.user:0"
+msgid "User"
+msgstr "Пользователь"
+
+msgctxt "view:res.user:0"
+msgid "Users"
+msgstr "Пользователи"
+
+msgctxt "wizard_button:res.user.config,init,end:0"
+msgid "Cancel"
+msgstr "Отмена"
+
+msgctxt "wizard_button:res.user.config,init,user:0"
+msgid "Ok"
+msgstr "Ок"
+
+msgctxt "wizard_button:res.user.config,user,add:0"
+msgid "Add"
+msgstr "Добавить"
+
+msgctxt "wizard_button:res.user.config,user,end:0"
+msgid "End"
+msgstr "Закончить"
diff --git a/trytond/res/nl_NL.csv b/trytond/res/nl_NL.csv
deleted file mode 100644
index 8dcfd48..0000000
--- a/trytond/res/nl_NL.csv
+++ /dev/null
@@ -1,170 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,res.group,0,The name of the group must be unique!,De naam van de groep moet uniek zijn!,0
-error,res.user,0,Wrong password!,Verkeerd wachtwoord!,0
-error,res.user,0,You can not have two users with the same login!,U kunt geen twee gebruikers met dezelfde login hebben!,0
-error,res.user,0,"You can not remove the root user
-as it is used internally for resources
-created by the system (updates, module installation, ...)","De hoofdgebruiker kan niet verwijderd worden
-omdat deze gebruikt wordt voor interne
-doeleinden  (bijwerken, installatie, ...)",0
-field,"ir.action-res.group,action_id",0,Action,Actie,0
-field,"ir.action-res.group,gid",0,Group,Groep,0
-field,"ir.action-res.group,rec_name",0,Name,Naam,0
-field,"ir.model.field-res.group,field_id",0,Model Field,Model veld,0
-field,"ir.model.field-res.group,group_id",0,Group,Groep,0
-field,"ir.model.field-res.group,rec_name",0,Name,Naam,0
-field,"ir.rule.group-res.group,group_id",0,Group,Groep,0
-field,"ir.rule.group-res.group,rec_name",0,Name,Naam,0
-field,"ir.rule.group-res.group,rule_group_id",0,Rule Group,Regel groep,0
-field,"ir.rule.group-res.user,rec_name",0,Name,Naam,0
-field,"ir.rule.group-res.user,rule_group_id",0,Rule Group,Regel groep,0
-field,"ir.rule.group-res.user,user_id",0,User,Gebruiker,0
-field,"ir.sequence,groups",0,User Groups,Gebruikersgroepen,0
-field,"ir.sequence.strict,groups",0,User Groups,Gebruikersgroepen,0
-field,"ir.sequence.type,groups",0,User Groups,Gebruikersgroepen,0
-field,"ir.sequence.type-res.group,group",0,User Groups,Gebruikersgroepen,0
-field,"ir.sequence.type-res.group,rec_name",0,Name,Naam,0
-field,"ir.sequence.type-res.group,sequence_type",0,Sequence Type,Verzoek type,0
-field,"ir.ui.menu-res.group,gid",0,Group,Groep,0
-field,"ir.ui.menu-res.group,menu_id",0,Menu,Menu,0
-field,"ir.ui.menu-res.group,rec_name",0,Name,Naam,0
-field,"res.group,menu_access",0,Access Menu,Toegang menu,0
-field,"res.group,model_access",0,Access Model,Toegang model,0
-field,"res.group,name",0,Name,Naam,0
-field,"res.group,rec_name",0,Name,Naam,0
-field,"res.group,rule_groups",0,Rules,Regels,0
-field,"res.group,users",0,Users,Gebruikers,0
-field,"res.request,act_from",0,From,Vanaf,0
-field,"res.request,act_to",0,To,Aan,0
-field,"res.request,active",0,Active,Actief,0
-field,"res.request,body",0,Body,Tekstgebied,0
-field,"res.request,date_sent",0,Date,Verzenddatum,0
-field,"res.request,history",0,History,Geschiedenis,0
-field,"res.request,name",0,Subject,Onderwerp,0
-field,"res.request,number_references",0,Number of References,Aantal referenties,0
-field,"res.request,priority",0,Priority,Prioriteit,0
-field,"res.request,rec_name",0,Name,Naam,0
-field,"res.request,references",0,References,Referenties,0
-field,"res.request,state",0,State,Status,0
-field,"res.request,trigger_date",0,Trigger Date,Start datum,0
-field,"res.request.history,act_from",0,From,Vanaf,0
-field,"res.request.history,act_to",0,To,Aan,0
-field,"res.request.history,body",0,Body,Tekstgebied,0
-field,"res.request.history,date_sent",0,Date sent,Datum verzonden,0
-field,"res.request.history,name",0,Summary,Samenvatting,0
-field,"res.request.history,number_references",0,References,Referenties,0
-field,"res.request.history,priority",0,Priority,Prioriteit,0
-field,"res.request.history,rec_name",0,Name,Naam,0
-field,"res.request.history,request",0,Request,Verzoek,0
-field,"res.request.history,state",0,State,Status,0
-field,"res.request.history,subject",0,Subject,Onderwerp,0
-field,"res.request.link,model",0,Model,Model,0
-field,"res.request.link,name",0,Name,Naam,0
-field,"res.request.link,priority",0,Priority,Prioriteit,0
-field,"res.request.link,rec_name",0,Name,Naam,0
-field,"res.request.reference,rec_name",0,Name,Naam,0
-field,"res.request.reference,reference",0,Reference,Referentie,0
-field,"res.request.reference,request",0,Request,Verzoek,0
-field,"res.user,action",0,Home Action,Basis actie,0
-field,"res.user,active",0,Active,Actief,0
-field,"res.user,connections",0,Connections,Verbindingen,0
-field,"res.user,email",0,Email,E-mail,0
-field,"res.user,groups",0,Groups,Groepen,0
-field,"res.user,language",0,Language,Taal,0
-field,"res.user,language_direction",0,Language Direction,Leesrichting,0
-field,"res.user,login",0,Login,Login,0
-field,"res.user,menu",0,Menu Action,Menu actie,0
-field,"res.user,name",0,Name,Naam,0
-field,"res.user,password",0,Password,Wachtwoord,0
-field,"res.user,rec_name",0,Name,Naam,0
-field,"res.user,rule_groups",0,Rules,Regels,0
-field,"res.user,salt",0,Salt,Zout,0
-field,"res.user,signature",0,Signature,Handtekening,0
-field,"res.user,status_bar",0,Status Bar,Staus balk,0
-field,"res.user,timezone",0,Timezone,Tijdzone,0
-field,"res.user,warnings",0,Warnings,Waarschuwingen,0
-field,"res.user-res.group,gid",0,Group,Groep,0
-field,"res.user-res.group,rec_name",0,Name,Naam,0
-field,"res.user-res.group,uid",0,User,Gebruiker,0
-field,"res.user.warning,always",0,Always,Altijd,0
-field,"res.user.warning,name",0,Name,Naam,0
-field,"res.user.warning,rec_name",0,Name,Naam,0
-field,"res.user.warning,user",0,User,Gebruiker,0
-help,"ir.sequence.type,groups",0,Groups allowed to edit the sequences of this type,Groepen die de reeksen van dit type mogen bewerken,0
-model,"ir.action,name",act_group_form,Groups,Groepen,0
-model,"ir.action,name",act_request_form,Requests,Verzoeken,0
-model,"ir.action,name",act_request_link_form,Request Links,Verzoek koppelingen,0
-model,"ir.action,name",act_user_form,Users,Gebruikers,0
-model,"ir.action-res.group,name",0,Action - Group,Actie-groep,0
-model,"ir.cron,name",cron_trigger_time,Run On Time Triggers,Uitvoeren op tijd starters,0
-model,"ir.model.field-res.group,name",0,Model Field Group Rel,Model veld groep naam,0
-model,"ir.rule.group-res.group,name",0,Rule Group - Group,Regel groep - Groep,0
-model,"ir.rule.group-res.user,name",0,Rule Group - User,Regel groep - Gebruiker,0
-model,"ir.sequence.type-res.group,name",0,Sequence Type - Group,Verzoek type  - Groep,0
-model,"ir.ui.menu,name",menu_group_form,Groups,Groepen,0
-model,"ir.ui.menu,name",menu_request_form,Requests,Verzoeken,0
-model,"ir.ui.menu,name",menu_request_link_form,Request Links,Verzoek koppelingen,0
-model,"ir.ui.menu,name",menu_res,Users,Gebruikers,0
-model,"ir.ui.menu,name",menu_user_form,Users,Gebruikers,0
-model,"ir.ui.menu-res.group,name",0,UI Menu - Group,UI menu - Groep,0
-model,"res.group,name",0,Group,Groep,0
-model,"res.group,name",group_admin,Administration,Systeembeheer,0
-model,"res.request,name",0,Request,Verzoek,0
-model,"res.request.history,name",0,Request history,Verzoek geschiedenis,0
-model,"res.request.link,name",0,Request link,Verzoek koppeling,0
-model,"res.request.link,name",request_link_cron,Scheduler,Planner,0
-model,"res.request.reference,name",0,Request Reference,Verzoek referentie,0
-model,"res.user,name",0,User,Gebruiker,0
-model,"res.user,name",user_admin,Administrator,Systeem beheerder,0
-model,"res.user,name",user_trigger,Cron Trigger,Cyclus starter,0
-model,"res.user-res.group,name",0,User - Group,Gebruiker - Groep,0
-model,"res.user.config.init,name",0,User Config Init,Gebruiker gaan instellen,0
-model,"res.user.warning,name",0,User Warning,Waarschuwwing gebruikers,0
-selection,"res.request,priority",0,High,Hoog,0
-selection,"res.request,priority",0,Low,Laag,0
-selection,"res.request,priority",0,Normal,Normaal,0
-selection,"res.request,state",0,Chatting,In gesprek,0
-selection,"res.request,state",0,Closed,Afgesloten,0
-selection,"res.request,state",0,Draft,Concept,0
-selection,"res.request,state",0,Waiting,Aan het wachten,0
-selection,"res.request.history,priority",0,High,Hoog,0
-selection,"res.request.history,priority",0,Low,Laag,0
-selection,"res.request.history,priority",0,Normal,Normaal,0
-selection,"res.request.history,state",0,Chatting,In gesprek,0
-selection,"res.request.history,state",0,Closed,Afgesloten,0
-selection,"res.request.history,state",0,Draft,Concept,0
-selection,"res.request.history,state",0,Waiting,Aan het wachten,0
-view,ir.module.module,0,Cancel Installation,Installatie annuleren,0
-view,ir.module.module,0,Cancel Uninstallation,Verwijdren ongedaan maken,0
-view,ir.module.module,0,Cancel Upgrade,Bijwerken annuleren,0
-view,ir.module.module,0,Mark for Installation,Selecteer voor installatie,0
-view,ir.module.module,0,Mark for Uninstallation (beta),Selecteer voor verwijderen (beta),0
-view,ir.module.module,0,Mark for Upgrade,Selecteer voor bijwerken,0
-view,res.group,0,Access Permissions,Toegangsrecht,0
-view,res.group,0,Group,Groep,0
-view,res.group,0,Groups,Groepen,0
-view,res.group,0,Members,Leden,0
-view,res.request,0,Close,Afsluiten,0
-view,res.request,0,References,Referenties,0
-view,res.request,0,Reply,Beantwoorden,0
-view,res.request,0,Request,Verzoek,0
-view,res.request,0,Requests,Verzoeken,0
-view,res.request,0,Send,Verzenden,0
-view,res.request.history,0,Request History,Verzoek geschiedenis,0
-view,res.request.link,0,Request Link,Verzoek koppeling,0
-view,res.request.reference,0,Request Reference,Verzoek referentie,0
-view,res.request.reference,0,Request References,Verzoek referenties,0
-view,res.user,0,Access Permissions,Toegangsrecht,0
-view,res.user,0,Group Membership,Groep lidmaatschap,0
-view,res.user,0,Preferences,Voorkeuren,0
-view,res.user,0,User,Gebruiker,0
-view,res.user,0,Users,Gebruikers,0
-view,res.user.config.init,0,Add Users,Gebruikers toevoegen,0
-view,res.user.config.init,0,Be careful that the login must be unique!,Let op; login moet uniek zijn!,0
-view,res.user.config.init,0,You can now add some users into the system.,U kunt nu gebruikers toevoegen aan het systeem.,0
-view,res.user.warning,0,Warning,Waarschuwing,0
-view,res.user.warning,0,Warnings,Waarschuwingen,0
-wizard_button,"res.user.config,init,end",0,Cancel,Annuleren,0
-wizard_button,"res.user.config,init,user",0,Ok,Oké,0
-wizard_button,"res.user.config,user,add",0,Add,Toevoegen,0
-wizard_button,"res.user.config,user,end",0,End,Einde,0
diff --git a/trytond/res/request.py b/trytond/res/request.py
index 268106d..5be47f0 100644
--- a/trytond/res/request.py
+++ b/trytond/res/request.py
@@ -3,8 +3,9 @@
 import time
 import datetime
 from trytond.model import ModelView, ModelSQL, fields
-from trytond.pyson import Eval, In, If, Not, Equal
+from trytond.pyson import Eval, If
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 
 _STATES = [
     ('draft', 'Draft'),
@@ -19,43 +20,44 @@ _PRIORITIES = [
     ('2', 'High'),
 ]
 
-_READONLY = If(In(Eval('state'), ['waiting', 'closed']),
-        True,
-        If(Equal(Eval('state'), 'chatting'),
-            Not(Equal(Eval('act_from'), Eval('_user'))),
-            False))
+_READONLY = If(Eval('state').in_(['waiting', 'closed']),
+    True,
+    If(Eval('state') == 'chatting',
+        Eval('act_from') != Eval('_user'),
+        False))
+_DEPENDS = ['state', 'act_from']
 
 class Request(ModelSQL, ModelView):
     "Request"
     _name = 'res.request'
     _description = __doc__
     name = fields.Char('Subject', states={
-        'readonly': _READONLY,
-       }, required=True)
+            'readonly': _READONLY,
+            }, required=True, depends=_DEPENDS)
     active = fields.Boolean('Active')
     priority = fields.Selection(_PRIORITIES, 'Priority', states={
-           'readonly': _READONLY,
-           }, required=True, order_field='priority')
+            'readonly': _READONLY,
+            }, required=True, order_field='priority', depends=_DEPENDS)
     act_from = fields.Many2One('res.user', 'From', required=True,
        readonly=True)
     act_to = fields.Many2One('res.user', 'To', required=True,
             domain=[('active', '=', True)],
             states={
                 'readonly': _READONLY,
-                })
+            }, depends=_DEPENDS)
     body = fields.Text('Body', states={
-       'readonly': _READONLY,
-       })
+            'readonly': _READONLY,
+            }, depends=_DEPENDS)
     date_sent = fields.DateTime('Date', readonly=True)
     trigger_date = fields.DateTime('Trigger Date', states={
-       'readonly': _READONLY,
-       })
+            'readonly': _READONLY,
+            }, depends=_DEPENDS)
     references = fields.One2Many('res.request.reference', 'request',
-            'References', states={
-                'readonly': If(Equal(Eval('state'), 'closed'),
-                    True,
-                    Not(Equal(Eval('act_from', 0), Eval('_user', 0)))),
-            })
+        'References', states={
+            'readonly': If(Eval('state') == 'closed',
+                True,
+                Eval('act_from', 0) != Eval('_user', 0)),
+            }, depends=['state', 'act_from'])
     number_references = fields.Function(fields.Integer('Number of References',
         on_change_with=['references']), 'get_number_references')
     state = fields.Selection(_STATES, 'State', required=True, readonly=True)
@@ -101,7 +103,8 @@ class Request(ModelSQL, ModelView):
         return res
 
     def request_send(self, ids):
-        request_history_obj = self.pool.get('res.request.history')
+        pool = Pool()
+        request_history_obj = pool.get('res.request.history')
         for request in self.browse(ids):
             values = {
                 'request': request.id,
@@ -177,7 +180,8 @@ class RequestLink(ModelSQL, ModelView):
         return 5
 
     def models_get(self):
-        model_obj = self.pool.get('ir.model')
+        pool = Pool()
+        model_obj = pool.get('ir.model')
         model_ids = model_obj.search([])
         res = []
         for model in model_obj.browse(model_ids):
@@ -239,7 +243,8 @@ class RequestReference(ModelSQL, ModelView):
             required=True)
 
     def links_get(self):
-        request_link_obj = self.pool.get('res.request.link')
+        pool = Pool()
+        request_link_obj = pool.get('res.request.link')
         ids = request_link_obj.search([])
         request_links = request_link_obj.browse(ids)
         return [(x.model, x.name) for x in request_links]
diff --git a/trytond/res/request.xml b/trytond/res/request.xml
index 29819e4..40b0e8a 100644
--- a/trytond/res/request.xml
+++ b/trytond/res/request.xml
@@ -10,15 +10,15 @@ this repository contains the full copyright notices and license terms. -->
               <![CDATA[
                 <tree string="Requests">
                     <field name="create_date"/>
-                    <field name="act_from" select="1"/>
-                    <field name="act_to" select="1"/>
-                    <field name="name" select="1"/>
-                    <field name="priority" select="2"/>
-                    <field name="trigger_date" select="2"/>
+                    <field name="act_from"/>
+                    <field name="act_to"/>
+                    <field name="name"/>
+                    <field name="priority"/>
+                    <field name="trigger_date"/>
                     <field name="number_references"/>
                     <field name="state"/>
-                    <field name="active" select="2"/>
-                    <field name="body" tree_invisible="1" select="2"/>
+                    <field name="active"/>
+                    <field name="body" tree_invisible="1"/>
                 </tree>
                 ]]>
             </field>
@@ -90,8 +90,13 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="request_view_form"/>
             <field name="act_window" ref="act_request_form"/>
         </record>
-        <menuitem parent="res.menu_res" groups="group_admin"
+        <menuitem parent="res.menu_res"
             action="act_request_form" id="menu_request_form"/>
+        <record model="ir.ui.menu-res.group" id="menu_request_form_group_admin">
+            <field name="menu" ref="menu_request_form"/>
+            <field name="group" ref="group_admin"/>
+        </record>
+
         <record model="ir.ui.view" id="request_link_view_form">
             <field name="model">res.request.link</field>
             <field name="type">form</field>
@@ -114,8 +119,8 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Request Link">
-                    <field name="name" select="1"/>
-                    <field name="model" select="1"/>
+                    <field name="name"/>
+                    <field name="model"/>
                 </tree>
                 ]]>
             </field>
@@ -136,8 +141,12 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="request_link_view_form"/>
             <field name="act_window" ref="act_request_link_form"/>
         </record>
-        <menuitem parent="res.menu_res" groups="group_admin"
+        <menuitem parent="res.menu_res"
             action="act_request_link_form" id="menu_request_link_form"/>
+        <record model="ir.ui.menu-res.group" id="menu_request_link_form_group_admin">
+            <field name="menu" ref="menu_request_link_form"/>
+            <field name="group" ref="group_admin"/>
+        </record>
 
         <record model="ir.ui.view" id="request_history_view_tree">
             <field name="model">res.request.history</field>
diff --git a/trytond/res/ru_RU.csv b/trytond/res/ru_RU.csv
deleted file mode 100644
index fc10fad..0000000
--- a/trytond/res/ru_RU.csv
+++ /dev/null
@@ -1,160 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,res.group,0,The name of the group must be unique!,Наименование группы должно быть уникальным!,0
-error,res.user,0,Wrong password!,Ошибка пароля!,0
-error,res.user,0,You can not have two users with the same login!,Такое имя пользователя уже есть !,0
-error,res.user,0,"You can not remove the root user
-as it is used internally for resources
-created by the system (updates, module installation, ...)","Вы не можете удалить основного пользователя системы
-т.к. он используется во внутренних процессах системы
-(обновление, установка модулей, ...)",0
-field,"ir.action-res.group,action_id",0,Action,Действие,0
-field,"ir.action-res.group,gid",0,Group,Группа,0
-field,"ir.action-res.group,rec_name",0,Name,Наименование,0
-field,"ir.model.field-res.group,field_id",0,Model Field,Поле шаблона,0
-field,"ir.model.field-res.group,group_id",0,Group,Группа,0
-field,"ir.model.field-res.group,rec_name",0,Name,Наименование,0
-field,"ir.rule.group-res.group,group_id",0,Group,Группа,0
-field,"ir.rule.group-res.group,rec_name",0,Name,Наименование,0
-field,"ir.rule.group-res.group,rule_group_id",0,Rule Group,Правила Группы,0
-field,"ir.rule.group-res.user,rec_name",0,Name,Наименование,0
-field,"ir.rule.group-res.user,rule_group_id",0,Rule Group,Правила Группы,0
-field,"ir.rule.group-res.user,user_id",0,User,Пользователь,0
-field,"ir.ui.menu-res.group,gid",0,Group,Группа,0
-field,"ir.ui.menu-res.group,menu_id",0,Menu,Меню,0
-field,"ir.ui.menu-res.group,rec_name",0,Name,Наименование,0
-field,"res.group,menu_access",0,Access Menu,Меню доступа,0
-field,"res.group,model_access",0,Access Model,Шаблон доступа,0
-field,"res.group,name",0,Name,Наименование,0
-field,"res.group,rec_name",0,Name,Наименование,0
-field,"res.group,rule_groups",0,Rules,Правила,0
-field,"res.group,users",0,Users,Пользователи,0
-field,"res.request,act_from",0,From,От кого,0
-field,"res.request,active",0,Active,Действительный,0
-field,"res.request,act_to",0,To,Кому,0
-field,"res.request,body",0,Body,Сообщение,0
-field,"res.request,date_sent",0,Date,Дата,0
-field,"res.request,history",0,History,Архив,0
-field,"res.request.history,act_from",0,From,От кого,0
-field,"res.request.history,act_to",0,To,Кому,0
-field,"res.request.history,body",0,Body,Сообщение,0
-field,"res.request.history,date_sent",0,Date sent,Дата отправки,0
-field,"res.request.history,name",0,Summary,Резюме,0
-field,"res.request.history,number_references",0,References,Ссылки,0
-field,"res.request.history,priority",0,Priority,Приоретет,0
-field,"res.request.history,rec_name",0,Name,Наименование,0
-field,"res.request.history,request",0,Request,Сообщение,0
-field,"res.request.history,state",0,State,Статус,0
-field,"res.request.history,subject",0,Subject,Тема,0
-field,"res.request.link,model",0,Model,Шаблон,0
-field,"res.request.link,name",0,Name,Наименование,0
-field,"res.request.link,priority",0,Priority,Приоритет,0
-field,"res.request.link,rec_name",0,Name,Наименование,0
-field,"res.request,name",0,Subject,Тема,0
-field,"res.request,number_references",0,Number of References,Кол-во ссылок,0
-field,"res.request,priority",0,Priority,Приоритер,0
-field,"res.request,rec_name",0,Name,Наименование,0
-field,"res.request.reference,rec_name",0,Name,Наименование,0
-field,"res.request.reference,reference",0,Reference,Ссылка,0
-field,"res.request.reference,request",0,Request,Сообщение,0
-field,"res.request,references",0,References,Ссылки,0
-field,"res.request,state",0,State,Статус,0
-field,"res.request,trigger_date",0,Trigger Date,Дата сообщения,0
-field,"res.user,action",0,Home Action,Началое действие,0
-field,"res.user,active",0,Active,Действительный,0
-field,"res.user,connections",0,Connections,Соединения,0
-field,"res.user,email",0,Email,Эл.почта,0
-field,"res.user,groups",0,Groups,Группы,0
-field,"res.user,language",0,Language,Язык,0
-field,"res.user,language_direction",0,Language Direction,Направления языка,0
-field,"res.user,login",0,Login,Регистрация,0
-field,"res.user,menu",0,Menu Action,Действия Меню,0
-field,"res.user,name",0,Name,Наименование,0
-field,"res.user,password",0,Password,Пароль,0
-field,"res.user,rec_name",0,Name,Наименование,0
-field,"res.user-res.group,gid",0,Group,Группа,0
-field,"res.user-res.group,rec_name",0,Name,Наименование,0
-field,"res.user-res.group,uid",0,User,Пользователь,0
-field,"res.user,rule_groups",0,Rules,Правила,0
-field,"res.user,salt",0,Salt,Бывалый,0
-field,"res.user,signature",0,Signature,Подпись,0
-field,"res.user,status_bar",0,Status Bar,Строка состояния,0
-field,"res.user,timezone",0,Timezone,Зона времени,0
-field,"res.user.warning,always",0,Always,Всегда,0
-field,"res.user.warning,name",0,Name,Наименование,0
-field,"res.user.warning,rec_name",0,Name,Наименование,0
-field,"res.user,warnings",0,Warnings,Внимания,0
-field,"res.user.warning,user",0,User,Пользователь,0
-model,"ir.action,name",act_group_form,Groups,Грыппы,0
-model,"ir.action,name",act_request_link_form,Request Links,Ссылки сообщения,0
-model,"ir.action,name",act_request_form,Requests,Сообщения,0
-model,"ir.action,name",act_user_form,Users,Пользователи,0
-model,"ir.action-res.group,name",0,Action - Group,Действия - Группы,0
-model,"ir.model.field-res.group,name",0,Model Field Group Rel,Шаблон Поля Группа Связь,0
-model,"ir.rule.group-res.group,name",0,Rule Group - Group,Правило группы - Группа,0
-model,"ir.rule.group-res.user,name",0,Rule Group - User,Правило группы - Пользователь,0
-model,"ir.ui.menu,name",menu_group_form,Groups,Группы,0
-model,"ir.ui.menu,name",menu_request_link_form,Request Links,Ссылки сообщения,0
-model,"ir.ui.menu,name",menu_request_form,Requests,Сообщения,0
-model,"ir.ui.menu,name",menu_res,Users,Пользователи,0
-model,"ir.ui.menu,name",menu_user_form,Users,Пользователи,0
-model,"ir.ui.menu-res.group,name",0,UI Menu - Group, Пол.инт. Меню - Группа,0
-model,"res.group,name",group_admin,Administration,группа Управление,0
-model,"res.group,name",0,Group,Группа,0
-model,"res.request.history,name",0,Request history,Архив сообщений,0
-model,"res.request.link,name",0,Request link,Ссылка сообщения,0
-model,"res.request.link,name",request_link_cron,Scheduler,Планировщик,0
-model,"res.request,name",0,Request,Сообщение,0
-model,"res.request.reference,name",0,Request Reference,Параметры сообщения,0
-model,"res.user.config.init,name",0,User Config Init,Настройка пользователя - инициализация,0
-model,"res.user,name",user_admin,Administrator,Администратор,0
-model,"res.user,name",0,User,Пользователь,0
-model,"res.user-res.group,name",0,User - Group,Пользователь - Группа,0
-model,"res.user.warning,name",0,User Warning,Внимание Пользователь,0
-selection,"res.request.history,priority",0,High,Высокий,0
-selection,"res.request.history,priority",0,Low,Низкий,0
-selection,"res.request.history,priority",0,Normal,Нормально,0
-selection,"res.request.history,state",0,Chatting,Переписка,0
-selection,"res.request.history,state",0,Closed,Закрыто,0
-selection,"res.request.history,state",0,Draft,Черновик,0
-selection,"res.request.history,state",0,Waiting,Ожидание,0
-selection,"res.request,priority",0,High,Высокий,0
-selection,"res.request,priority",0,Low,Низкий,0
-selection,"res.request,priority",0,Normal,Нормально,0
-selection,"res.request,state",0,Chatting,Переписка,0
-selection,"res.request,state",0,Closed,Закрыто,0
-selection,"res.request,state",0,Draft,Черновик,0
-selection,"res.request,state",0,Waiting,Ожидание,0
-view,ir.module.module,0,Cancel Installation,Отменить установку,0
-view,ir.module.module,0,Cancel Uninstallation,Отменить удаление,0
-view,ir.module.module,0,Cancel Upgrade, Отменить обновление,0
-view,ir.module.module,0,Mark for Installation,Установить,0
-view,ir.module.module,0,Mark for Uninstallation (beta),Удалить (beta),0
-view,ir.module.module,0,Mark for Upgrade,Обновить,0
-view,res.group,0,Group,Группы,0
-view,res.group,0,Groups,Группы,0
-view,res.group,0,Security,Доступ,0
-view,res.request,0,Close,Закрыть,0
-view,res.request,0,Description,Описание,0
-view,res.request,0,History,Переписка,0
-view,res.request,0,References,Ссылки,0
-view,res.request,0,Reply,Ответить,0
-view,res.request,0,Request,Сообщение,0
-view,res.request,0,Requests,Сообщения,0
-view,res.request,0,Send,Послать,0
-view,res.request.history,0,Request History,Переписка,0
-view,res.request.link,0,Request Link,Ссылка сообщения,0
-view,res.request.reference,0,Request Reference,Ссылка сообщения,0
-view,res.request.reference,0,Request References,Ссылки сообщения,0
-view,res.user,0,Preferences,Ссылки,0
-view,res.user,0,Security,Доступ,0
-view,res.user,0,User,Пользователь,0
-view,res.user,0,Users,Пользователи,0
-view,res.user.config.init,0,Add Users,Добавить пользователей,0
-view,res.user.config.init,0,Be careful that the login must be unique!,Внимание Имя Пользователя должно быть уникальным!,0
-view,res.user.config.init,0,You can now add some users into the system.,Вы можете добавить пользователей в систему.,0
-view,res.user.warning,0,Warning,Внимание,0
-view,res.user.warning,0,Warnings,Внимания,0
-wizard_button,"res.user.config,init,end",0,Cancel,Отмена,0
-wizard_button,"res.user.config,init,user",0,Ok,Ок,0
-wizard_button,"res.user.config,user,add",0,Add,Добавить,0
-wizard_button,"res.user.config,user,end",0,End,Закончить,0
diff --git a/trytond/res/user.py b/trytond/res/user.py
index 3f2e4ac..d0371e2 100644
--- a/trytond/res/user.py
+++ b/trytond/res/user.py
@@ -1,7 +1,6 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 "User"
-from __future__ import with_statement
 import copy
 import string
 import random
@@ -17,7 +16,8 @@ from trytond.backend import TableHandler
 from trytond.security import get_connections
 from trytond.transaction import Transaction
 from trytond.cache import Cache
-from trytond.pyson import Eval, Greater
+from trytond.pyson import Eval, Bool
+from trytond.pool import Pool
 
 
 class User(ModelSQL, ModelView):
@@ -31,14 +31,14 @@ class User(ModelSQL, ModelView):
     signature = fields.Text('Signature')
     active = fields.Boolean('Active')
     action = fields.Many2One('ir.action', 'Home Action', states={
-        'required': Greater(Eval('active_id', 0), 0),
-        })
+        'required': Bool(Eval('id')),
+        }, depends=['id'])
     menu = fields.Many2One('ir.action', 'Menu Action',
             domain=[('usage','=','menu')], required=True)
     groups = fields.Many2Many('res.user-res.group',
-       'uid', 'gid', 'Groups')
+       'user', 'group', 'Groups')
     rule_groups = fields.Many2Many('ir.rule.group-res.user',
-       'user_id', 'rule_group_id', 'Rules',
+       'user', 'rule_group', 'Rules',
        domain=[('global_p', '!=', True), ('default_p', '!=', True)])
     language = fields.Many2One('ir.lang', 'Language',
             domain=['OR', ('translatable', '=', True), ('code', '=', 'en_US')])
@@ -112,7 +112,8 @@ class User(ModelSQL, ModelView):
         return 1
 
     def default_menu(self):
-        action_obj = self.pool.get('ir.action')
+        pool = Pool()
+        action_obj = pool.get('ir.action')
         action_ids = action_obj.search([
             ('usage', '=', 'menu'),
             ], limit=1)
@@ -125,7 +126,8 @@ class User(ModelSQL, ModelView):
 
     def get_language_direction(self, ids, name):
         res = {}
-        lang_obj = self.pool.get('ir.lang')
+        pool = Pool()
+        lang_obj = pool.get('ir.lang')
         default_direction = lang_obj.default_direction()
         for user in self.browse(ids):
             if user.language:
@@ -150,7 +152,8 @@ class User(ModelSQL, ModelView):
 
     def _convert_vals(self, vals):
         vals = vals.copy()
-        action_obj = self.pool.get('ir.action')
+        pool = Pool()
+        action_obj = pool.get('ir.action')
         if 'action' in vals:
             vals['action'] = action_obj.get_action_id(vals['action'])
         if 'menu' in vals:
@@ -175,7 +178,8 @@ class User(ModelSQL, ModelView):
         vals = self._convert_vals(vals)
         res = super(User, self).write(ids, vals)
         # Restart the cache for domain_get method
-        self.pool.get('ir.rule').domain_get.reset()
+        pool = Pool()
+        pool.get('ir.rule').domain_get.reset()
         # Restart the cache for get_groups
         self.get_groups.reset()
         # Restart the cache for _get_login
@@ -183,9 +187,9 @@ class User(ModelSQL, ModelView):
         # Restart the cache for get_preferences
         self.get_preferences.reset()
         # Restart the cache of check
-        self.pool.get('ir.model.access').check.reset()
+        pool.get('ir.model.access').check.reset()
         # Restart the cache
-        for _, model in self.pool.iterobject():
+        for _, model in pool.iterobject():
             try:
                 model.fields_view_get.reset()
             except Exception:
@@ -290,7 +294,8 @@ class User(ModelSQL, ModelView):
         :param values: a dictionary with values
         :param old_password: the previous password if password is in values
         '''
-        lang_obj = self.pool.get('ir.lang')
+        pool = Pool()
+        lang_obj = pool.get('ir.lang')
         values_clean = values.copy()
         fields = self._preferences_fields + self._context_fields
         user_id = Transaction().user
@@ -314,8 +319,9 @@ class User(ModelSQL, ModelView):
             self.write(user_id, values_clean)
 
     def get_preferences_fields_view(self):
-        model_data_obj = self.pool.get('ir.model.data')
-        lang_obj = self.pool.get('ir.lang')
+        pool = Pool()
+        model_data_obj = pool.get('ir.model.data')
+        lang_obj = pool.get('ir.lang')
 
         view_id = model_data_obj.get_id('res', 'user_view_form_preferences')
         res = self.fields_view_get(view_id=view_id)
@@ -396,9 +402,9 @@ class UserGroup(ModelSQL):
     'User - Group'
     _name = 'res.user-res.group'
     _description = __doc__
-    uid = fields.Many2One('res.user', 'User', ondelete='CASCADE', select=1,
+    user = fields.Many2One('res.user', 'User', ondelete='CASCADE', select=1,
             required=True)
-    gid = fields.Many2One('res.group', 'Group', ondelete='CASCADE', select=1,
+    group = fields.Many2One('res.group', 'Group', ondelete='CASCADE', select=1,
             required=True)
 
     def init(self, module_name):
@@ -407,6 +413,10 @@ class UserGroup(ModelSQL):
         TableHandler.table_rename(cursor, 'res_group_user_rel', self._table)
         TableHandler.sequence_rename(cursor, 'res_group_user_rel_id_seq',
                 self._table + '_id_seq')
+        # Migration from 2.0 uid and gid rename into user and group
+        table = TableHandler(cursor, self, module_name)
+        table.column_rename('uid', 'user')
+        table.column_rename('gid', 'group')
         super(UserGroup, self).init(module_name)
 
 UserGroup()
@@ -415,7 +425,7 @@ UserGroup()
 class Group(ModelSQL, ModelView):
     "Group"
     _name = "res.group"
-    users = fields.Many2Many('res.user-res.group', 'gid', 'uid', 'Users')
+    users = fields.Many2Many('res.user-res.group', 'group', 'user', 'Users')
 
 Group()
 
@@ -480,9 +490,9 @@ class UserConfig(Wizard):
             },
         },
         'add': {
+            'actions': ['_add'],
             'result': {
-                'type': 'action',
-                'action': '_add',
+                'type': 'state',
                 'state': 'user',
             },
         },
@@ -492,7 +502,8 @@ class UserConfig(Wizard):
         return {}
 
     def _add(self, data):
-        res_obj = self.pool.get('res.user')
+        pool = Pool()
+        res_obj = pool.get('res.user')
         res_obj.create(data['form'])
         return {}
 
diff --git a/trytond/res/user.xml b/trytond/res/user.xml
index 2383bdd..72a229e 100644
--- a/trytond/res/user.xml
+++ b/trytond/res/user.xml
@@ -9,7 +9,10 @@ this repository contains the full copyright notices and license terms. -->
             <field name="signature">Administrator</field>
             <field name="action" ref="ir.act_module_config_wizard"/>
             <field name="menu" ref="ir.act_menu_tree"/>
-            <field name="groups" eval="[('add', ref('group_admin'))]"/>
+        </record>
+        <record model="res.user-res.group" id="user_admin_group_admin">
+            <field name="user" ref="user_admin"/>
+            <field name="group" ref="group_admin"/>
         </record>
         <record model="ir.ui.view" id="user_view_form">
             <field name="model">res.user</field>
@@ -38,9 +41,7 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="signature" colspan="4"/>
                         </page>
                         <page string="Access Permissions" col="1" id="permissions">
-                            <separator name="groups"/>
                             <field name="groups"/>
-                            <separator name="rule_groups"/>
                             <field name="rule_groups"/>
                         </page>
                         <page string="Preferences" col="2" id="preferences">
@@ -77,7 +78,6 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="signature" colspan="4"/>
                         </page>
                         <page string="Group Membership" col="1" id="membership">
-                            <separator name="groups"/>
                             <field name="groups"/>
                         </page>
                         <page string="Preferences" col="2" id="preferences">
@@ -97,10 +97,10 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Users">
-                    <field name="name" select="1"/>
-                    <field name="login" select="1"/>
+                    <field name="name"/>
+                    <field name="login"/>
                     <field name="connections"/>
-                    <field name="active" select="1"/>
+                    <field name="active"/>
                 </tree>
               ]]>
             </field>
@@ -122,8 +122,12 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="user_view_form"/>
             <field name="act_window" ref="act_user_form"/>
         </record>
-        <menuitem parent="res.menu_res" groups="group_admin"
+        <menuitem parent="res.menu_res"
             action="act_user_form" id="menu_user_form"/>
+        <record model="ir.ui.menu-res.group" id="menu_user_form_group_admin">
+            <field name="menu" ref="menu_user_form"/>
+            <field name="group" ref="group_admin"/>
+        </record>
 
         <record model="ir.model.access" id="access_user">
             <field name="model" search="[('model', '=', 'res.user')]"/>
@@ -146,12 +150,14 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <form string="Add Users" col="2">
-                    <image name="tryton-dialog-information"/>
+                    <image name="tryton-dialog-information" xexpand="0" xfill="0"/>
                     <group col="1" id="labels">
                         <label string="You can now add some users into the system."
-                            align="0.0" id="add"/>
+                            id="add"
+                            yalign="0.0" xalign="0.0" xexpand="1"/>
                         <label string="Be careful that the login must be unique!"
-                            align="0.0" id="carefull"/>
+                            id="carefull"
+                            yalign="0.0" xalign="0.0" xexpand="1"/>
                     </group>
                 </form>
                 ]]>
@@ -186,9 +192,9 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
                 <![CDATA[
                 <tree string="Warnings">
-                    <field name="user" select="1"/>
-                    <field name="name" select="1"/>
-                    <field name="always" select="1"/>
+                    <field name="user"/>
+                    <field name="name"/>
+                    <field name="always"/>
                 </tree>
                 ]]>
             </field>
diff --git a/trytond/security.py b/trytond/security.py
index 1f2ed49..de0edca 100644
--- a/trytond/security.py
+++ b/trytond/security.py
@@ -1,11 +1,11 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 from trytond.backend import Database
 from trytond.session import Session
 from trytond.pool import Pool
 from trytond.config import CONFIG
 from trytond.transaction import Transaction
+from trytond.exceptions import NotLogged
 import time
 
 
@@ -41,7 +41,7 @@ def login(dbname, loginname, password, cache=True):
 
 def logout(dbname, user, session):
     name = ''
-    if _USER_CACHE.get(dbname, {}).has_key(user):
+    if user in _USER_CACHE.get(dbname, {}):
         for i, real_session \
                 in enumerate(_USER_CACHE[dbname][user]):
             if real_session.session == session:
@@ -62,7 +62,7 @@ def check(dbname, user, session):
     result = None
     now = time.time()
     timeout = int(CONFIG['session_timeout'])
-    if _USER_CACHE.get(dbname, {}).has_key(user):
+    if user in _USER_CACHE.get(dbname, {}):
         to_del = []
         for i, real_session \
                 in enumerate(_USER_CACHE[dbname][user]):
@@ -75,13 +75,13 @@ def check(dbname, user, session):
             del _USER_CACHE[dbname][user][i]
     if result:
         return result
-    raise Exception('NotLogged')
+    raise NotLogged()
 
 def get_connections(dbname, user):
     res = 0
     now = time.time()
     timeout = int(CONFIG['session_timeout'])
-    if _USER_CACHE.get(dbname, {}).has_key(int(user)):
+    if int(user) in _USER_CACHE.get(dbname, {}):
         for _, session in enumerate(_USER_CACHE[dbname][int(user)]):
             if abs(session.timestamp - now) < timeout:
                 res += 1
diff --git a/trytond/server.py b/trytond/server.py
index 3822042..c1ae7ce 100644
--- a/trytond/server.py
+++ b/trytond/server.py
@@ -3,7 +3,6 @@
 """
 %prog [options]
 """
-from __future__ import with_statement
 import logging
 import logging.handlers
 import sys, os, signal
@@ -22,13 +21,14 @@ import random
 
 class TrytonServer(object):
 
-    def __init__(self):
+    def __init__(self, options):
         format = '[%(asctime)s] %(levelname)s:%(name)s:%(message)s'
         datefmt = '%a %b %d %H:%M:%S %Y'
         logging.basicConfig(level=logging.DEBUG, format=format,
                 datefmt=datefmt)
 
-        CONFIG.parse()
+        CONFIG.update_etc(options['configfile'])
+        CONFIG.update_cmdline(options)
 
         if CONFIG['logfile']:
             logf = CONFIG['logfile']
@@ -154,55 +154,45 @@ class TrytonServer(object):
             sys.exit(0)
 
         # Launch Server
-        if CONFIG['xmlrpc']:
-            from trytond.protocols.xmlrpc import XMLRPCDaemon
-            xmlrpcd = XMLRPCDaemon(CONFIG['interface'], CONFIG['xmlport'],
-                    CONFIG['secure_xmlrpc'])
-            self.logger.info("starting XML-RPC%s protocol, port %d" % \
-                    (CONFIG['secure_xmlrpc'] and ' Secure' or '',
-                        CONFIG['xmlport']))
-
+        jsonrpcd = []
         if CONFIG['jsonrpc']:
             from trytond.protocols.jsonrpc import JSONRPCDaemon
-            jsonrpcd = JSONRPCDaemon(CONFIG['interface'], CONFIG['jsonport'],
-                    CONFIG['secure_jsonrpc'])
-            self.logger.info("starting JSON-RPC%s protocol, port %d" % \
-                    (CONFIG['secure_jsonrpc'] and ' Secure' or '',
-                        CONFIG['jsonport']))
-
-        if CONFIG['netrpc']:
-            from trytond.protocols.netrpc import NetRPCServerThread
-            netrpcd = NetRPCServerThread(CONFIG['interface'], CONFIG['netport'],
-                    CONFIG['secure_netrpc'])
-            self.logger.info("starting NetRPC%s protocol, port %d" % \
-                    (CONFIG['secure_netrpc']  and ' Secure' or '',
-                        CONFIG['netport']))
-
+            for hostname, port in CONFIG['jsonrpc']:
+                jsonrpcd.append(JSONRPCDaemon(hostname, port,
+                    CONFIG['ssl_jsonrpc']))
+                self.logger.info("starting JSON-RPC%s protocol on %s:%d" %
+                    (CONFIG['ssl_jsonrpc'] and ' SSL' or '', hostname or '*',
+                        port))
+
+        xmlrpcd = []
+        if CONFIG['xmlrpc']:
+            from trytond.protocols.xmlrpc import XMLRPCDaemon
+            for hostname, port in CONFIG['xmlrpc']:
+                xmlrpcd.append(XMLRPCDaemon(hostname, port,
+                    CONFIG['ssl_xmlrpc']))
+                self.logger.info("starting XML-RPC%s protocol on %s:%d" %
+                    (CONFIG['ssl_xmlrpc'] and ' SSL' or '', hostname or '*',
+                        port))
+
+        webdavd = []
         if CONFIG['webdav']:
             from trytond.protocols.webdav import WebDAVServerThread
-            webdavd = WebDAVServerThread(CONFIG['interface'],
-                    CONFIG['webdavport'], CONFIG['secure_webdav'])
-            self.logger.info("starting WebDAV%s protocol, port %d" % \
-                    (CONFIG['secure_webdav'] and ' Secure' or '',
-                        CONFIG['webdavport']))
+            for hostname, port in CONFIG['webdav']:
+                webdavd.append(WebDAVServerThread(hostname, port,
+                    CONFIG['ssl_webdav']))
+                self.logger.info("starting WebDAV%s protocol on %s:%d" %
+                    (CONFIG['ssl_webdav'] and ' SSL' or '', hostname or '*',
+                        port))
 
         def handler(signum, frame):
             if hasattr(signal, 'SIGUSR1'):
                 if signum == signal.SIGUSR1:
                     Pool.start()
                     return
-            if CONFIG['netrpc']:
-                netrpcd.stop()
-                netrpcd.join()
-            if CONFIG['xmlrpc']:
-                xmlrpcd.stop()
-                xmlrpcd.join()
-            if CONFIG['jsonrpc']:
-                jsonrpcd.stop()
-                jsonrpcd.join()
-            if CONFIG['webdav']:
-                webdavd.stop()
-                webdavd.join()
+            for servers in (xmlrpcd, jsonrpcd, webdavd):
+                for server in servers:
+                    server.stop()
+                    server.join()
             if CONFIG['pidfile']:
                 os.unlink(CONFIG['pidfile'])
             logging.getLogger('server').info('stopped')
@@ -221,36 +211,33 @@ class TrytonServer(object):
             signal.signal(signal.SIGUSR1, handler)
 
         self.logger.info('waiting for connections...')
-        if CONFIG['netrpc']:
-            netrpcd.start()
-        if CONFIG['xmlrpc']:
-            xmlrpcd.start()
-        if CONFIG['jsonrpc']:
-            jsonrpcd.start()
-        if CONFIG['webdav']:
-            webdavd.start()
+        for servers in (xmlrpcd, jsonrpcd, webdavd):
+            for server in servers:
+                server.start()
 
         if CONFIG['psyco']:
             import psyco
             psyco.full()
 
+        threads = {}
         while True:
             if CONFIG['auto_reload'] and monitor():
                 try:
                     Pool.start()
                 except Exception:
                     pass
-            for dbname in Pool.database_list():
-                pool = Pool(dbname)
-                if 'ir.cron' not in pool.object_name_list():
-                    continue
-                cron_obj = pool.get('ir.cron')
-                thread = threading.Thread(
-                        target=cron_obj.pool_jobs,
-                        args=(dbname,), kwargs={})
-                thread.start()
+            if CONFIG['cron']:
+                for dbname in Pool.database_list():
+                    thread = threads.get(dbname)
+                    if thread and thread.is_alive():
+                        continue
+                    pool = Pool(dbname)
+                    if 'ir.cron' not in pool.object_name_list():
+                        continue
+                    cron_obj = pool.get('ir.cron')
+                    thread = threading.Thread(
+                            target=cron_obj.run,
+                            args=(dbname,), kwargs={})
+                    thread.start()
+                    threads[dbname] = thread
             time.sleep(60)
-
-if __name__ == "__main__":
-    SERVER = TrytonServer()
-    SERVER.run()
diff --git a/trytond/test/__init__.py b/trytond/test/__init__.py
index 0325085..3b5643e 100644
--- a/trytond/test/__init__.py
+++ b/trytond/test/__init__.py
@@ -8,3 +8,5 @@ from import_data import *
 from export_data import *
 from trigger import *
 from access import *
+from wizard import *
+from workflow import *
diff --git a/trytond/test/__tryton__.py b/trytond/test/__tryton__.py
index d854433..90de2fc 100644
--- a/trytond/test/__tryton__.py
+++ b/trytond/test/__tryton__.py
@@ -5,10 +5,11 @@
     'description': '''A module for unittest.
 ''',
     'active': True,
-    'depends': ['ir', 'res'],
+    'depends': ['ir', 'res', 'workflow'],
     'xml': [
         'import_data.xml',
         'sequence.xml',
+        'workflow.xml',
     ],
     'translation': [
     ],
diff --git a/trytond/test/model.py b/trytond/test/model.py
index 1aa2a3e..24b56ba 100644
--- a/trytond/test/model.py
+++ b/trytond/test/model.py
@@ -14,3 +14,12 @@ class Singleton(ModelSingleton, ModelSQL):
         return 'test'
 
 Singleton()
+
+
+class URLObject(ModelSQL):
+    _name = 'test.urlobject'
+
+    name = fields.Char('Name')
+
+
+URLObject()
diff --git a/trytond/test/sequence.xml b/trytond/test/sequence.xml
index 4be2b44..ef45126 100644
--- a/trytond/test/sequence.xml
+++ b/trytond/test/sequence.xml
@@ -7,7 +7,11 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.sequence.type" id="sequence_type_test">
             <field name="name">Test</field>
             <field name="code">test</field>
-            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.sequence.type-res.group"
+            id="sequence_type_test_group_admin">
+            <field name="sequence_type" ref="sequence_type_test"/>
+            <field name="group" ref="res.group_admin"/>
         </record>
 
     </data>
diff --git a/trytond/test/test.py b/trytond/test/test.py
index abca5df..01c1092 100644
--- a/trytond/test/test.py
+++ b/trytond/test/test.py
@@ -100,7 +100,8 @@ class FloatDigits(ModelSQL):
     _description = __doc__
     digits = fields.Integer('Digits')
     float = fields.Float(string='Float', help='Test float',
-            required=False, digits=(16, Eval('digits', 2)))
+        required=False, digits=(16, Eval('digits', 2)),
+        depends=['digits'])
 
 FloatDigits()
 
@@ -144,7 +145,8 @@ class NumericDigits(ModelSQL):
     _description = __doc__
     digits = fields.Integer('Digits')
     numeric = fields.Numeric(string='Numeric', help='Test numeric',
-            required=False, digits=(16, Eval('digits', 2)))
+        required=False, digits=(16, Eval('digits', 2)),
+        depends=['digits'])
 
 NumericDigits()
 
diff --git a/trytond/test/wizard.py b/trytond/test/wizard.py
new file mode 100644
index 0000000..4c718f1
--- /dev/null
+++ b/trytond/test/wizard.py
@@ -0,0 +1,26 @@
+from trytond.model import ModelView, fields
+from trytond.wizard import Wizard
+
+
+class TestWizardInit(ModelView):
+    _name = 'test.test_wizard.init'
+    name = fields.Char('Test me')
+
+TestWizardInit()
+
+
+class TestWizard(Wizard):
+    _name = 'test.test_wizard'
+    states = {
+        'init': {
+            'result': {
+                'type': 'form',
+                'object': 'test.test_wizard.init',
+                'state': [
+                    ('end', 'Ok', 'tryton-ok', True),
+                ],
+            },
+        },
+    }
+
+TestWizard()
diff --git a/trytond/test/workflow.py b/trytond/test/workflow.py
new file mode 100644
index 0000000..4df177e
--- /dev/null
+++ b/trytond/test/workflow.py
@@ -0,0 +1,35 @@
+# This file is part of Tryton.  The COPYRIGHT file at the top level of this
+# repository contains the full copyright notices and license terms.
+
+from trytond.model import ModelSQL, ModelWorkflow, fields
+
+
+class WorkflowedModel(ModelWorkflow, ModelSQL):
+    _name = 'test.workflowed'
+
+    name = fields.Char('Name')
+    state = fields.Char('State')
+    value = fields.Integer('Value')
+
+    def default_transitions(self):
+        return 0
+
+    def default_value(self):
+        return 0
+
+    def workflow_start(self, workflowed):
+        self.write([workflowed.id], {'state': 'Start'})
+
+    def workflow_middle(self, workflowed):
+        self.write([workflowed.id], {'state': 'Middle'})
+
+    def workflow_end(self, workflowed):
+        self.write([workflowed.id], {'state': 'End'})
+
+    def start_middle_ok(self, workflowed):
+        return workflowed.value > 4
+
+    def middle_end_ok(self, workflowed):
+        return workflowed.value < 8
+
+WorkflowedModel()
diff --git a/trytond/test/workflow.xml b/trytond/test/workflow.xml
new file mode 100644
index 0000000..a19f47a
--- /dev/null
+++ b/trytond/test/workflow.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of this
+     repository contains the full copyright notices and license terms. -->
+<tryton>
+    <data>
+        <record model="workflow" id="test_workflow">
+            <field name="name">Test workflow</field>
+            <field name="model">test.workflowed</field>
+            <field name="on_create" eval="True" />
+        </record>
+        <record model="workflow.activity" id="test_activity_start">
+            <field name="name">Start</field>
+            <field name="method">workflow_start</field>
+            <field name="workflow" ref="test_workflow" />
+            <field name="flow_start" eval="True" />
+        </record>
+        <record model="workflow.activity" id="test_activity_middle">
+            <field name="name">Middle</field>
+            <field name="method">workflow_middle</field>
+            <field name="workflow" ref="test_workflow" />
+        </record>
+        <record model="workflow.activity" id="test_activity_end">
+            <field name="name">End</field>
+            <field name="method">workflow_end</field>
+            <field name="workflow" ref="test_workflow" />
+            <field name="flow_stop" eval="True" />
+        </record>
+        <record model="workflow.transition"
+            id="test_transition_start_middle">
+            <field name="act_from" ref="test_activity_start" />
+            <field name="act_to" ref="test_activity_middle" />
+            <field name="condition">start_middle_ok</field>
+        </record>
+        <record model="workflow.transition"
+            id="tes_transition_middle_end">
+            <field name="act_from" ref="test_activity_middle" />
+            <field name="act_to" ref="test_activity_end" />
+            <field name="condition">middle_end_ok</field>
+        </record>
+    </data>
+</tryton>
diff --git a/trytond/tests/test_access.py b/trytond/tests/test_access.py
index 7a21a25..3d9c7d0 100644
--- a/trytond/tests/test_access.py
+++ b/trytond/tests/test_access.py
@@ -2,7 +2,6 @@
 # -*- coding: utf-8 -*-
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import unittest
 from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, \
         install_module
diff --git a/trytond/tests/test_exportdata.py b/trytond/tests/test_exportdata.py
index 8f35fbf..0452430 100644
--- a/trytond/tests/test_exportdata.py
+++ b/trytond/tests/test_exportdata.py
@@ -2,7 +2,6 @@
 # -*- coding: utf-8 -*-
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import unittest
 from decimal import Decimal
 import datetime
diff --git a/trytond/tests/test_fields.py b/trytond/tests/test_fields.py
index fd44d29..f92b58c 100644
--- a/trytond/tests/test_fields.py
+++ b/trytond/tests/test_fields.py
@@ -2,7 +2,6 @@
 # -*- coding: utf-8 -*-
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import unittest
 import datetime
 from decimal import Decimal
diff --git a/trytond/tests/test_importdata.py b/trytond/tests/test_importdata.py
index 0ea271d..ec7bccb 100644
--- a/trytond/tests/test_importdata.py
+++ b/trytond/tests/test_importdata.py
@@ -2,7 +2,6 @@
 # -*- coding: utf-8 -*-
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import unittest
 from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, \
         install_module
diff --git a/trytond/tests/test_mixins.py b/trytond/tests/test_mixins.py
new file mode 100644
index 0000000..735913e
--- /dev/null
+++ b/trytond/tests/test_mixins.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+
+import unittest
+import socket
+import urllib
+
+from trytond.config import CONFIG
+from trytond.tests.test_tryton import (POOL, DB_NAME, USER, CONTEXT,
+    install_module)
+from trytond.transaction import Transaction
+
+
+class UrlTestCase(unittest.TestCase):
+    "Test URL generation"
+
+    def setUp(self):
+        install_module('test')
+        self.urlmodel = POOL.get('test.urlobject')
+        self.urlwizard = POOL.get('test.test_wizard', type='wizard')
+        self.hostname = socket.getfqdn()
+
+    def testModelURL(self):
+        "Test model URLs"
+        with Transaction().start(DB_NAME, USER, CONTEXT):
+            self.assertEqual(self.urlmodel.get_url(),
+                'tryton://%s/%s/model/test.urlobject' % (self.hostname,
+                    urllib.quote(DB_NAME)))
+
+            server_name = 'michaelscott.paper.test'
+            CONFIG['hostname'] = server_name
+            self.assertEqual(self.urlmodel.get_url(),
+                'tryton://%s/%s/model/test.urlobject' % (server_name,
+                    urllib.quote(DB_NAME)))
+
+    def testWizardURL(self):
+        "Test wizard URLs"
+        with Transaction().start(DB_NAME, USER, CONTEXT):
+            CONFIG['hostname'] = None
+            self.assertEqual(self.urlwizard.get_url(),
+                'tryton://%s/%s/wizard/test.test_wizard' % (self.hostname,
+                    urllib.quote(DB_NAME)))
+
+            server_name = 'michaelscott.paper.test'
+            CONFIG['hostname'] = server_name
+            self.assertEqual(self.urlwizard.get_url(),
+                'tryton://%s/%s/wizard/test.test_wizard' % (server_name,
+                    urllib.quote(DB_NAME)))
+
+
+def suite():
+    func = unittest.TestLoader().loadTestsFromTestCase
+    suite = unittest.TestSuite()
+    for testcase in (UrlTestCase,):
+        suite.addTests(func(testcase))
+    return suite
+
+if __name__ == '__main__':
+    suite = suite()
+    unittest.TextTestRunner(verbosity=2).run(suite)
diff --git a/trytond/tests/test_modelsingleton.py b/trytond/tests/test_modelsingleton.py
index b94a8f1..752dd4e 100644
--- a/trytond/tests/test_modelsingleton.py
+++ b/trytond/tests/test_modelsingleton.py
@@ -2,7 +2,6 @@
 # -*- coding: utf-8 -*-
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import unittest
 from datetime import datetime
 from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, \
diff --git a/trytond/tests/test_mptt.py b/trytond/tests/test_mptt.py
index b50462b..0dc276a 100644
--- a/trytond/tests/test_mptt.py
+++ b/trytond/tests/test_mptt.py
@@ -2,7 +2,6 @@
 # -*- coding: utf-8 -*-
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import unittest
 from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, \
         install_module
@@ -23,8 +22,7 @@ class MPTTTestCase(unittest.TestCase):
             ('parent', '=', parent_id),
             ])
         childs = self.mptt.read(child_ids, ['left', 'right'])
-        childs.sort(lambda x, y: cmp(child_ids.index(x['id']),
-            child_ids.index(y['id'])))
+        childs.sort(key=lambda x: child_ids.index(x['id']))
         for child in childs:
             assert child['left'] > left, \
                     'Record (%d): left %d <= parent left %d' % \
@@ -152,7 +150,7 @@ class MPTTTestCase(unittest.TestCase):
 
         with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
             record_ids = self.mptt.search([])
-            self.mptt.write(record_ids[:len(record_ids)/2], {
+            self.mptt.write(record_ids[:len(record_ids) // 2], {
                     'active': False
                     })
             self.CheckTree()
@@ -186,7 +184,7 @@ class MPTTTestCase(unittest.TestCase):
 
         with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
             record_ids = self.mptt.search([])
-            self.mptt.delete(record_ids[:len(record_ids)/2])
+            self.mptt.delete(record_ids[:len(record_ids) // 2])
             self.CheckTree()
 
             transaction.cursor.rollback()
diff --git a/trytond/tests/test_pyson.py b/trytond/tests/test_pyson.py
index cc8aa9a..52f90df 100644
--- a/trytond/tests/test_pyson.py
+++ b/trytond/tests/test_pyson.py
@@ -101,7 +101,7 @@ class PYSONTestCase(unittest.TestCase):
         '''
         self.assert_(pyson.And(True, False).pyson() == {
             '__class__': 'And',
-            's': (True, False),
+            's': [True, False],
             })
 
         self.assertRaises(AssertionError, pyson.And, 'test', False)
@@ -145,7 +145,7 @@ class PYSONTestCase(unittest.TestCase):
         '''
         self.assert_(pyson.Or(True, False).pyson() == {
             '__class__': 'Or',
-            's': (True, False),
+            's': [True, False],
             })
 
         self.assertRaises(AssertionError, pyson.Or, 'test', False)
diff --git a/trytond/tests/test_sequence.py b/trytond/tests/test_sequence.py
index 8a07b67..aa5e44c 100644
--- a/trytond/tests/test_sequence.py
+++ b/trytond/tests/test_sequence.py
@@ -2,7 +2,6 @@
 # -*- coding: utf-8 -*-
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import unittest
 import datetime
 from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, \
diff --git a/trytond/tests/test_tools.py b/trytond/tests/test_tools.py
index c6bb78c..be748c0 100644
--- a/trytond/tests/test_tools.py
+++ b/trytond/tests/test_tools.py
@@ -5,8 +5,15 @@
 
 import unittest
 import datetime
+import socket
+import urllib
+
+from trytond.config import CONFIG
 from trytond.tools import reduce_ids, safe_eval, datetime_strftime, \
         reduce_domain
+from trytond.tests.test_tryton import (POOL, DB_NAME, USER, CONTEXT,
+    install_module)
+from trytond.transaction import Transaction
 
 
 class ToolsTestCase(unittest.TestCase):
@@ -125,8 +132,13 @@ class ToolsTestCase(unittest.TestCase):
             self.assertEqual(reduce_domain(i), j,
                     '%s -> %s != %s' % (i, reduce_domain(i), j))
 
+
 def suite():
-    return unittest.TestLoader().loadTestsFromTestCase(ToolsTestCase)
+    func = unittest.TestLoader().loadTestsFromTestCase
+    suite = unittest.TestSuite()
+    for testcase in (ToolsTestCase,):
+        suite.addTests(func(testcase))
+    return suite
 
 if __name__ == '__main__':
     suite = suite()
diff --git a/trytond/tests/test_trigger.py b/trytond/tests/test_trigger.py
index c283452..fe53103 100644
--- a/trytond/tests/test_trigger.py
+++ b/trytond/tests/test_trigger.py
@@ -2,7 +2,6 @@
 # -*- coding: utf-8 -*-
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import unittest
 import sys
 import time
diff --git a/trytond/tests/test_tryton.py b/trytond/tests/test_tryton.py
index ad9f1df..e93ca23 100644
--- a/trytond/tests/test_tryton.py
+++ b/trytond/tests/test_tryton.py
@@ -2,7 +2,6 @@
 # -*- coding: utf-8 -*-
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import logging
 logging.basicConfig(level=logging.ERROR)
 import sys, os
@@ -11,19 +10,11 @@ DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
 if os.path.isdir(DIR):
     sys.path.insert(0, os.path.dirname(DIR))
 
-if sys.version_info[:2] <= (2, 5):
-    # ugly monkeypatch to make doctests work. For the reasons see
-    # http://mail.python.org/pipermail/python-dev/2008-July/081420.html
-    # It can go away once we drop Python 2.5
-    import decimal
-    decimal.Decimal.__repr__ = lambda s: "Decimal('%s')" % str(s)
-
 import unittest
 import doctest
 from lxml import etree
 import time
 import imp
-import zipimport
 
 _MODULES = False
 if __name__ == '__main__':
@@ -33,7 +24,7 @@ if __name__ == '__main__':
 
 from trytond.config import CONFIG
 CONFIG['db_type'] = 'sqlite'
-CONFIG.parse()
+CONFIG.update_etc()
 if not CONFIG['admin_passwd']:
     CONFIG['admin_passwd'] = 'admin'
 
@@ -42,6 +33,7 @@ from trytond.pool import Pool
 from trytond.backend import Database
 from trytond.protocols.dispatcher import create
 from trytond.transaction import Transaction
+from trytond.pyson import PYSONEncoder, Eval
 
 register_classes()
 
@@ -96,6 +88,22 @@ class ModelViewTestCase(unittest.TestCase):
         '''
         test_view('webdav')
 
+
+class FieldDependsTestCase(unittest.TestCase):
+    '''
+    Test Field depends
+    '''
+
+    def setUp(self):
+        install_module('ir')
+        install_module('res')
+        install_module('workflow')
+        install_module('webdav')
+
+    def test0010depends(self):
+        test_depends()
+
+
 def install_module(name):
     '''
     Install module for the tested database
@@ -159,9 +167,43 @@ def test_view(module_name):
                     for attr in ('name', 'icon'):
                         field = element.get(attr)
                         if field:
-                            assert field in res['fields']
+                            assert field in res['fields'], ('Missing field: %s'
+                                % field)
         transaction.cursor.rollback()
 
+def test_depends():
+    '''
+    Test for missing depends
+    '''
+    class Encoder(PYSONEncoder):
+
+        def __init__(self, *args, **kwargs):
+            super(Encoder, self).__init__(*args, **kwargs)
+            self.fields = set()
+
+        def default(self, obj):
+            if isinstance(obj, Eval):
+                fname = obj._value
+                if not fname.startswith('_parent_'):
+                    self.fields.add(fname)
+            return super(Encoder, self).default(obj)
+
+    with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+        for mname, model in Pool().iterobject():
+            for fname, field in model._columns.iteritems():
+                encoder = Encoder()
+                for pyson in (field.domain, field.states):
+                    encoder.encode(pyson)
+                if hasattr(field, 'digits'):
+                    encoder.encode(field.digits)
+                encoder.fields.discard(fname)
+                encoder.fields.discard('context')
+                encoder.fields.discard('_user')
+                depends = set(field.depends)
+                assert encoder.fields <= depends, (
+                    'Missing depends %s in "%s"."%s"' % (
+                        list(encoder.fields - depends), mname, fname))
+
 def suite():
     '''
     Return test suite for other modules
@@ -183,6 +225,8 @@ def all_suite():
     suite_.addTests(test_modelsingleton.suite())
     suite_.addTests(unittest.TestLoader(
         ).loadTestsFromTestCase(ModelViewTestCase))
+    suite_.addTests(unittest.TestLoader(
+        ).loadTestsFromTestCase(FieldDependsTestCase))
     import trytond.tests.test_mptt as test_mptt
     suite_.addTests(test_mptt.suite())
     import trytond.tests.test_importdata as test_importdata
@@ -197,6 +241,8 @@ def all_suite():
     suite_.addTests(test_sequence.suite())
     import trytond.tests.test_access as test_access
     suite_.addTests(test_access.suite())
+    import trytond.tests.test_mixins as test_mixins
+    suite_.addTests(test_mixins.suite())
     return suite_
 
 def modules_suite():
@@ -210,14 +256,7 @@ def modules_suite():
     for package in graph:
         module = package.name
         test_module = 'trytond.modules.%s.tests' % module
-        if os.path.isfile(os.path.join(MODULES_PATH, module + '.zip')):
-            mod_path = os.path.join(MODULES_PATH, module + '.zip')
-            zimp = zipimport.zipimporter(mod_path)
-            try:
-                test_mod = zimp.load_module(test_module)
-            except zipimport.ZipImportError:
-                continue
-        elif os.path.isdir(os.path.join(MODULES_PATH, module)) or \
+        if os.path.isdir(os.path.join(MODULES_PATH, module)) or \
                 module in EGG_MODULES:
             try:
                 test_mod = __import__(test_module, fromlist=[''])
diff --git a/trytond/tests/test_workflow.py b/trytond/tests/test_workflow.py
new file mode 100644
index 0000000..c7bcb91
--- /dev/null
+++ b/trytond/tests/test_workflow.py
@@ -0,0 +1,66 @@
+# This file is part of Tryton.  The COPYRIGHT file at the top level of this
+# repository contains the full copyright notices and license terms.
+
+import unittest
+
+from trytond.transaction import Transaction
+from trytond.tests.test_tryton import (POOL, DB_NAME, USER, CONTEXT,
+    install_module)
+
+
+class WorkflowTestCase(unittest.TestCase):
+
+    def setUp(self):
+        install_module('test')
+        self.workflow_obj = POOL.get('test.workflowed')
+
+    def test0010object_creation(self):
+        'Test workflow object creation'
+        with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+            wkf_id = self.workflow_obj.create({
+                    'name': 'value = 3',
+                    'value': 3,
+                    })
+            self.assertEqual(self.workflow_obj.read(wkf_id)['state'], 'Start')
+
+            wkf_id = self.workflow_obj.create({
+                    'name': 'value = 10',
+                    'value': 10,
+                    })
+            self.assertEqual(self.workflow_obj.read(wkf_id)['state'], 'Middle')
+
+            wkf_id = self.workflow_obj.create({
+                    'name': 'value = 6',
+                    'value': 6,
+                    })
+            self.assertEqual(self.workflow_obj.read(wkf_id)['state'], 'End')
+
+            transaction.cursor.rollback()
+
+    def test0020object_modification(self):
+        'Test workflow object modification'
+        with Transaction().start(DB_NAME, USER, CONTEXT):
+            wkf_id = self.workflow_obj.create({
+                    'name': 'value = 3',
+                    'value': 3,
+                    })
+            wkf_id = self.workflow_obj.create({
+                    'name': 'value = 10',
+                    'value': 10,
+                    })
+
+            wkf_id, = self.workflow_obj.search([('name', '=', 'value = 3')])
+            self.workflow_obj.write(wkf_id, {'value': 11})
+            self.assertEqual(self.workflow_obj.read(wkf_id)['state'], 'Middle')
+
+            wkf_id, = self.workflow_obj.search([('name', '=', 'value = 10')])
+            self.workflow_obj.write(wkf_id, {'value': 6})
+            self.assertEqual(self.workflow_obj.read(wkf_id)['state'], 'End')
+
+
+def suite():
+    return unittest.TestLoader().loadTestsFromTestCase(WorkflowTestCase)
+
+
+if __name__ == '__main__':
+    unittest.TextTestRunner(verbosity=2).run(suite())
diff --git a/trytond/tools/__init__.py b/trytond/tools/__init__.py
index 21c264d..5a927c7 100644
--- a/trytond/tools/__init__.py
+++ b/trytond/tools/__init__.py
@@ -2,3 +2,7 @@
 #this repository contains the full copyright notices and license terms.
 from misc import *
 from datetime_strftime import *
+try:
+    from collections import OrderedDict
+except ImportError:
+    from ordereddict import OrderedDict
diff --git a/trytond/tools/misc.py b/trytond/tools/misc.py
index 1868334..c20e264 100644
--- a/trytond/tools/misc.py
+++ b/trytond/tools/misc.py
@@ -6,7 +6,6 @@ Miscelleanous tools used by tryton
 """
 import os, sys
 import subprocess
-import zipfile
 from threading import local
 import smtplib
 try:
@@ -78,27 +77,27 @@ def file_open(name, mode="r", subdir='modules'):
     from trytond.modules import EGG_MODULES
     root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 
-    name3 = False
+    egg_name = False
     if subdir == 'modules':
         module_name = name.split(os.sep)[0]
         if module_name in EGG_MODULES:
             epoint = EGG_MODULES[module_name]
             mod_path = os.path.join(epoint.dist.location,
                     *epoint.module_name.split('.')[:-1])
-            name3 = os.path.join(mod_path, name)
-            if not os.path.isfile(name3):
+            egg_name = os.path.join(mod_path, name)
+            if not os.path.isfile(egg_name):
                 # Find module in path
                 for path in sys.path:
                     mod_path = os.path.join(path,
                             *epoint.module_name.split('.')[:-1])
-                    name3 = os.path.join(mod_path, name)
-                    if os.path.isfile(name3):
+                    egg_name = os.path.join(mod_path, name)
+                    if os.path.isfile(egg_name):
                         break
-                if not os.path.isfile(name3):
+                if not os.path.isfile(egg_name):
                     # When testing modules from setuptools location is the
                     # module directory
-                    name3 = os.path.join(os.path.dirname(epoint.dist.location),
-                            name)
+                    egg_name = os.path.join(
+                        os.path.dirname(epoint.dist.location), name)
 
     if subdir:
         if subdir == 'modules'\
@@ -113,33 +112,11 @@ def file_open(name, mode="r", subdir='modules'):
     else:
         name = os.path.join(root_path, name)
 
-    # Check for a zipfile in the path
-    head = name
-    zipname = False
-    name2 = False
-    while True:
-        head, tail = os.path.split(head)
-        if head == root_path:
-            break
-        if not tail:
-            break
-        if zipname:
-            zipname = os.path.join(tail, zipname)
-        else:
-            zipname = tail
-        if zipfile.is_zipfile(head+'.zip'):
-            zfile = zipfile.ZipFile(head+'.zip')
-            try:
-                return StringIO.StringIO(zfile.read(os.path.join(
-                    os.path.basename(head), zipname).replace(
-                        os.sep, '/')))
-            except Exception:
-                name2 = os.path.normpath(os.path.join(head + '.zip', zipname))
-    for i in (name2, name, name3):
+    for i in (name, egg_name):
         if i and os.path.isfile(i):
             return open(i, mode)
 
-    raise IOError, 'File not found : '+str(name)
+    raise IOError('File not found : %s ' % name)
 
 def get_smtp_server():
     """
diff --git a/trytond/tools/ordereddict.py b/trytond/tools/ordereddict.py
new file mode 100644
index 0000000..d993489
--- /dev/null
+++ b/trytond/tools/ordereddict.py
@@ -0,0 +1,278 @@
+# Copyright (C) 2009 by Raymond Hettinger
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+# Backport of OrderedDict() class that runs on Python 2.4, 2.5, 2.6, 2.7 and pypy.
+# Passes Python2.7's test suite and incorporates all the latest updates.
+
+try:
+    from thread import get_ident as _get_ident
+except ImportError:
+    from dummy_thread import get_ident as _get_ident
+
+try:
+    from _abcoll import KeysView, ValuesView, ItemsView
+except ImportError:
+    pass
+
+
+class OrderedDict(dict):
+    'Dictionary that remembers insertion order'
+    # An inherited dict maps keys to values.
+    # The inherited dict provides __getitem__, __len__, __contains__, and get.
+    # The remaining methods are order-aware.
+    # Big-O running times for all methods are the same as for regular dictionaries.
+
+    # The internal self.__map dictionary maps keys to links in a doubly linked list.
+    # The circular doubly linked list starts and ends with a sentinel element.
+    # The sentinel element never gets deleted (this simplifies the algorithm).
+    # Each link is stored as a list of length three:  [PREV, NEXT, KEY].
+
+    def __init__(self, *args, **kwds):
+        '''Initialize an ordered dictionary.  Signature is the same as for
+        regular dictionaries, but keyword arguments are not recommended
+        because their insertion order is arbitrary.
+
+        '''
+        if len(args) > 1:
+            raise TypeError('expected at most 1 arguments, got %d' % len(args))
+        try:
+            self.__root
+        except AttributeError:
+            self.__root = root = []                     # sentinel node
+            root[:] = [root, root, None]
+            self.__map = {}
+        self.__update(*args, **kwds)
+
+    def __setitem__(self, key, value, dict_setitem=dict.__setitem__):
+        'od.__setitem__(i, y) <==> od[i]=y'
+        # Setting a new item creates a new link which goes at the end of the linked
+        # list, and the inherited dictionary is updated with the new key/value pair.
+        if key not in self:
+            root = self.__root
+            last = root[0]
+            last[1] = root[0] = self.__map[key] = [last, root, key]
+        dict_setitem(self, key, value)
+
+    def __delitem__(self, key, dict_delitem=dict.__delitem__):
+        'od.__delitem__(y) <==> del od[y]'
+        # Deleting an existing item uses self.__map to find the link which is
+        # then removed by updating the links in the predecessor and successor nodes.
+        dict_delitem(self, key)
+        link_prev, link_next, key = self.__map.pop(key)
+        link_prev[1] = link_next
+        link_next[0] = link_prev
+
+    def __iter__(self):
+        'od.__iter__() <==> iter(od)'
+        root = self.__root
+        curr = root[1]
+        while curr is not root:
+            yield curr[2]
+            curr = curr[1]
+
+    def __reversed__(self):
+        'od.__reversed__() <==> reversed(od)'
+        root = self.__root
+        curr = root[0]
+        while curr is not root:
+            yield curr[2]
+            curr = curr[0]
+
+    def clear(self):
+        'od.clear() -> None.  Remove all items from od.'
+        try:
+            for node in self.__map.itervalues():
+                del node[:]
+            root = self.__root
+            root[:] = [root, root, None]
+            self.__map.clear()
+        except AttributeError:
+            pass
+        dict.clear(self)
+
+    def popitem(self, last=True):
+        '''od.popitem() -> (k, v), return and remove a (key, value) pair.
+        Pairs are returned in LIFO order if last is true or FIFO order if false.
+
+        '''
+        if not self:
+            raise KeyError('dictionary is empty')
+        root = self.__root
+        if last:
+            link = root[0]
+            link_prev = link[0]
+            link_prev[1] = root
+            root[0] = link_prev
+        else:
+            link = root[1]
+            link_next = link[1]
+            root[1] = link_next
+            link_next[0] = root
+        key = link[2]
+        del self.__map[key]
+        value = dict.pop(self, key)
+        return key, value
+
+    # -- the following methods do not depend on the internal structure --
+
+    def keys(self):
+        'od.keys() -> list of keys in od'
+        return list(self)
+
+    def values(self):
+        'od.values() -> list of values in od'
+        return [self[key] for key in self]
+
+    def items(self):
+        'od.items() -> list of (key, value) pairs in od'
+        return [(key, self[key]) for key in self]
+
+    def iterkeys(self):
+        'od.iterkeys() -> an iterator over the keys in od'
+        return iter(self)
+
+    def itervalues(self):
+        'od.itervalues -> an iterator over the values in od'
+        for k in self:
+            yield self[k]
+
+    def iteritems(self):
+        'od.iteritems -> an iterator over the (key, value) items in od'
+        for k in self:
+            yield (k, self[k])
+
+    def update(*args, **kwds):
+        '''od.update(E, **F) -> None.  Update od from dict/iterable E and F.
+
+        If E is a dict instance, does:           for k in E: od[k] = E[k]
+        If E has a .keys() method, does:         for k in E.keys(): od[k] = E[k]
+        Or if E is an iterable of items, does:   for k, v in E: od[k] = v
+        In either case, this is followed by:     for k, v in F.items(): od[k] = v
+
+        '''
+        if len(args) > 2:
+            raise TypeError('update() takes at most 2 positional '
+                            'arguments (%d given)' % (len(args),))
+        elif not args:
+            raise TypeError('update() takes at least 1 argument (0 given)')
+        self = args[0]
+        # Make progressively weaker assumptions about "other"
+        other = ()
+        if len(args) == 2:
+            other = args[1]
+        if isinstance(other, dict):
+            for key in other:
+                self[key] = other[key]
+        elif hasattr(other, 'keys'):
+            for key in other.keys():
+                self[key] = other[key]
+        else:
+            for key, value in other:
+                self[key] = value
+        for key, value in kwds.items():
+            self[key] = value
+
+    __update = update  # let subclasses override update without breaking __init__
+
+    __marker = object()
+
+    def pop(self, key, default=__marker):
+        '''od.pop(k[,d]) -> v, remove specified key and return the corresponding value.
+        If key is not found, d is returned if given, otherwise KeyError is raised.
+
+        '''
+        if key in self:
+            result = self[key]
+            del self[key]
+            return result
+        if default is self.__marker:
+            raise KeyError(key)
+        return default
+
+    def setdefault(self, key, default=None):
+        'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od'
+        if key in self:
+            return self[key]
+        self[key] = default
+        return default
+
+    def __repr__(self, _repr_running={}):
+        'od.__repr__() <==> repr(od)'
+        call_key = id(self), _get_ident()
+        if call_key in _repr_running:
+            return '...'
+        _repr_running[call_key] = 1
+        try:
+            if not self:
+                return '%s()' % (self.__class__.__name__,)
+            return '%s(%r)' % (self.__class__.__name__, self.items())
+        finally:
+            del _repr_running[call_key]
+
+    def __reduce__(self):
+        'Return state information for pickling'
+        items = [[k, self[k]] for k in self]
+        inst_dict = vars(self).copy()
+        for k in vars(OrderedDict()):
+            inst_dict.pop(k, None)
+        if inst_dict:
+            return (self.__class__, (items,), inst_dict)
+        return self.__class__, (items,)
+
+    def copy(self):
+        'od.copy() -> a shallow copy of od'
+        return self.__class__(self)
+
+    @classmethod
+    def fromkeys(cls, iterable, value=None):
+        '''OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S
+        and values equal to v (which defaults to None).
+
+        '''
+        d = cls()
+        for key in iterable:
+            d[key] = value
+        return d
+
+    def __eq__(self, other):
+        '''od.__eq__(y) <==> od==y.  Comparison to another OD is order-sensitive
+        while comparison to a regular mapping is order-insensitive.
+
+        '''
+        if isinstance(other, OrderedDict):
+            return len(self)==len(other) and self.items() == other.items()
+        return dict.__eq__(self, other)
+
+    def __ne__(self, other):
+        return not self == other
+
+    # -- the following methods are only used in Python 2.7 --
+
+    def viewkeys(self):
+        "od.viewkeys() -> a set-like object providing a view on od's keys"
+        return KeysView(self)
+
+    def viewvalues(self):
+        "od.viewvalues() -> an object providing a view on od's values"
+        return ValuesView(self)
+
+    def viewitems(self):
+        "od.viewitems() -> a set-like object providing a view on od's items"
+        return ItemsView(self)
diff --git a/trytond/transaction.py b/trytond/transaction.py
index 9d58bdf..2cd1952 100644
--- a/trytond/transaction.py
+++ b/trytond/transaction.py
@@ -63,7 +63,7 @@ class Transaction(local):
     delete = None # TODO check to merge with delete_records
     timestamp = None
 
-    def start(self, database_name, user, context=None):
+    def start(self, database_name, user, readonly=False, context=None):
         '''
         Start transaction
         '''
@@ -72,7 +72,7 @@ class Transaction(local):
         assert self.context is None
         self.user = user
         database = Database(database_name).connect()
-        self.cursor = database.cursor()
+        self.cursor = database.cursor(readonly=readonly)
         self.context = context or {}
         self.create_records = {}
         self.delete_records = {}
diff --git a/trytond/url.py b/trytond/url.py
new file mode 100644
index 0000000..e98c970
--- /dev/null
+++ b/trytond/url.py
@@ -0,0 +1,37 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+
+import encodings.idna
+import urllib
+import socket
+
+from trytond.config import CONFIG
+from trytond.transaction import Transaction
+
+
+class URLMixin(object):
+
+    def get_url(self):
+        from trytond.model import Model
+        from trytond.wizard import Wizard
+        from trytond.report import Report
+
+        hostname = CONFIG['hostname'] or unicode(socket.getfqdn(), 'utf8')
+        hostname = '.'.join(encodings.idna.ToASCII(part) for part in
+            hostname.split('.'))
+
+        url_part = {}
+        if isinstance(self, Model):
+            url_part['type'] = 'model'
+        elif isinstance(self, Wizard):
+            url_part['type'] = 'wizard'
+        elif isinstance(self, Report):
+            url_part['type'] = 'report'
+        else:
+            raise NotImplementedError
+
+        url_part['name'] = self._name
+        url_part['database'] = Transaction().cursor.database_name
+
+        local_part = urllib.quote('%(database)s/%(type)s/%(name)s' % url_part)
+        return 'tryton://%s/%s' % (hostname, local_part)
diff --git a/trytond/version.py b/trytond/version.py
index 0d6af84..da107c0 100644
--- a/trytond/version.py
+++ b/trytond/version.py
@@ -1,7 +1,7 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 PACKAGE = "trytond"
-VERSION = "2.0.2"
+VERSION = "2.2.0"
 LICENSE = "GPL-3"
 WEBSITE = "http://www.tryton.org/"
 
diff --git a/trytond/webdav/__tryton__.py b/trytond/webdav/__tryton__.py
index bef9645..e455410 100644
--- a/trytond/webdav/__tryton__.py
+++ b/trytond/webdav/__tryton__.py
@@ -31,12 +31,13 @@
         'webdav.xml',
     ],
     'translation': [
-        'bg_BG.csv',
-        'fr_FR.csv',
-        'de_DE.csv',
-        'es_ES.csv',
-        'es_CO.csv',
-        'nl_NL.csv',
-        'ru_RU.csv',
+        'locale/cs_CZ.po',
+        'locale/bg_BG.po',
+        'locale/fr_FR.po',
+        'locale/de_DE.po',
+        'locale/es_ES.po',
+        'locale/es_CO.po',
+        'locale/nl_NL.po',
+        'locale/ru_RU.po',
     ],
 }
diff --git a/trytond/webdav/bg_BG.csv b/trytond/webdav/bg_BG.csv
deleted file mode 100644
index f0ac505..0000000
--- a/trytond/webdav/bg_BG.csv
+++ /dev/null
@@ -1,28 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,ir.attachment,0,"You can not create an attachment
-in a collection with the name
-of an existing child collection!","Не може да създадете 
-прикачен файл в колекция
-с име като на съществуваща
-подчинена колекция!",0
-error,webdav.collection,0,The collection name must be unique inside a collection!,Името на колекцията трябва да уникално вътре в колекцията!,0
-error,webdav.collection,0,"You can not create a collection
-in a collection with the name of an existing file!","Не може да създадете колекция
-в колекция с име на съществуващ файл!",0
-error,webdav.collection,0,You can not create recursive collections!,Не може да създавате взаимно вложени колекции!,0
-field,"webdav.collection,childs",0,Children,Деца,0
-field,"webdav.collection,domain",0,Domain,Домейн,0
-field,"webdav.collection,model",0,Model,Модел,0
-field,"webdav.collection,name",0,Name,Име,0
-field,"webdav.collection,parent",0,Parent,Родител,0
-field,"webdav.collection,rec_name",0,Name,Име,0
-model,"ir.action,name",,Collections,Колекции,0
-model,"ir.action,name",act_collection_form,Collections,Колекции,0
-model,"ir.action,name",act_collection_tree,Collections,Колекции,0
-model,"ir.ui.menu,name",,New Collection,Нова колекция,0
-model,"ir.ui.menu,name",menu_collection_form,New Collection,Редактиране на колекции,0
-model,"ir.ui.menu,name",menu_collection_tree,Collections,Колекции,0
-model,"ir.ui.menu,name",menu_webdav,WebDAV,WebDAV,0
-model,"webdav.collection,name",0,Collection,Колекция,0
-view,webdav.collection,0,Collection,Колекция,0
-view,webdav.collection,0,Collections,Колекции,0
diff --git a/trytond/webdav/de_DE.csv b/trytond/webdav/de_DE.csv
deleted file mode 100644
index 9f84d1f..0000000
--- a/trytond/webdav/de_DE.csv
+++ /dev/null
@@ -1,102 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,ir.attachment,0,"You can not create an attachment
-in a collection with the name
-of an existing child collection!","Ein Anhang kann nicht den selben Namen
-wie eine untergeordnete Sammlung haben!",0
-error,webdav.collection,0,The collection name must be unique inside a collection!,"Der Name ein untergeordneten Sammlung kann nur
-einmal in einer Sammlung vergeben werden!",0
-error,webdav.collection,0,"You can not create a collection
-in a collection with the name of an existing file!","Eine Sammlung kann nicht den selben Namen
-wie eine bestehende Datei haben!",0
-error,webdav.collection,0,You can not create recursive collections!,Sammlungen können nicht rekursiv angelegt werden!,0
-error,workflow,0,No workflow defined!,Kein Workflow definiert!,0
-error,workflow.instance,0,No workflow instance defined!,Keine Workflowinstanz definiert!,0
-field,"webdav.collection,childs",0,Children,Untergeordnet (Sammlungen),0
-field,"webdav.collection,domain",0,Domain,Wertebereich (Domain),0
-field,"webdav.collection,model",0,Model,Modell,0
-field,"webdav.collection,name",0,Name,Name,0
-field,"webdav.collection,parent",0,Parent,Ãœbergeordnet (Sammlung),0
-field,"webdav.collection,rec_name",0,Name,Name,0
-field,"workflow,activities",0,Activities,Aktivitäten,0
-field,"workflow,model",0,Resource Model,Modell Ressource,0
-field,"workflow,name",0,Name,Name,0
-field,"workflow,on_create",0,On Create,Bei der Erstellung,0
-field,"workflow,rec_name",0,Name,Name,0
-field,"workflow.activity,action",0,Action,Aktion,0
-field,"workflow.activity,flow_start",0,Flow Start,Flow Start,0
-field,"workflow.activity,flow_stop",0,Flow Stop,Flow Stop,0
-field,"workflow.activity,in_transitions",0,Incoming transitions,Eingehende Übergänge,0
-field,"workflow.activity,join_mode",0,Join Mode,Verbindungsmodus,0
-field,"workflow.activity,kind",0,Kind,Art,0
-field,"workflow.activity,name",0,Name,Name,0
-field,"workflow.activity,out_transitions",0,Outgoing transitions,Ausgehende Übergänge,0
-field,"workflow.activity,rec_name",0,Name,Name,0
-field,"workflow.activity,signal_send",0,Signal (subflow.*),Signal (subflow.*),0
-field,"workflow.activity,split_mode",0,Split Mode,Geteilter Modus,0
-field,"workflow.activity,subflow",0,Subflow,Unterflow,0
-field,"workflow.activity,workflow",0,Workflow,Workflow,0
-field,"workflow.instance,overflows",0,Overflow,Ãœberlauf,0
-field,"workflow.instance,rec_name",0,Name,Name,0
-field,"workflow.instance,res_id",0,Resource ID,ID Ressource,0
-field,"workflow.instance,res_type",0,Resource Model,Modell Ressource,0
-field,"workflow.instance,state",0,State,Status,0
-field,"workflow.instance,transitions",0,Transitions,Übergänge,0
-field,"workflow.instance,uid",0,User ID,Benutzer ID,0
-field,"workflow.instance,workflow",0,Workflow,Workflow,0
-field,"workflow.instance,workitems",0,Workitems,Elemente,0
-field,"workflow.transition,act_from",0,Source Activity,Quelle der Aktivität,0
-field,"workflow.transition,act_to",0,Destination Activity,Bestimmung der Aktivität,0
-field,"workflow.transition,condition",0,Condition,Bedingung,0
-field,"workflow.transition,group",0,Group Required,Erforderliche Gruppe,0
-field,"workflow.transition,instances",0,Instances,Instanzen,0
-field,"workflow.transition,rec_name",0,Name,Name,0
-field,"workflow.transition,signal",0,Signal (button Name),Signal (Name des Knopfes),0
-field,"workflow.transition,trigger_expr_id",0,Trigger Expr ID,ID des Auslöseausdrucks,0
-field,"workflow.transition,trigger_model",0,Trigger Type,Typ Auslöser,0
-field,"workflow.transition-workflow.instance,inst_id",0,Instance,Instanz,0
-field,"workflow.transition-workflow.instance,rec_name",0,Name,Name,0
-field,"workflow.transition-workflow.instance,trans_id",0,Transition,Ãœbergang,0
-field,"workflow.trigger,instance",0,Destination Instance,Bestimmungsinstanz,0
-field,"workflow.trigger,model",0,Model,Modell,0
-field,"workflow.trigger,rec_name",0,Name,Name,0
-field,"workflow.trigger,res_id",0,Resource ID,ID Ressource,0
-field,"workflow.trigger,workitem",0,Workitem,Element,0
-field,"workflow.workitem,activity",0,Activity,Aktivität,0
-field,"workflow.workitem,instance",0,Instance,Instanz,0
-field,"workflow.workitem,rec_name",0,Name,Name,0
-field,"workflow.workitem,state",0,State,Status,0
-field,"workflow.workitem,subflow",0,Subflow,Unterflow,0
-model,"ir.action,name",act_collection_form,Collections,Sammlungen,0
-model,"ir.action,name",act_collection_tree,Collections,Sammlungen,0
-model,"ir.ui.menu,name",menu_collection_form,New Collection,Neue Sammlung,0
-model,"ir.ui.menu,name",menu_collection_tree,Collections,Sammlungen,0
-model,"ir.ui.menu,name",menu_webdav,WebDAV,WebDAV,0
-model,"webdav.collection,name",0,Collection,Sammlung,0
-model,"workflow,name",0,Workflow,Workflow,0
-model,"workflow.activity,name",0,Workflow activity,Workflow Aktivität,0
-model,"workflow.instance,name",0,Workflow instance,Workflow Instanz,0
-model,"workflow.transition,name",0,Workflow transition,Workflow Ãœbergang,0
-model,"workflow.transition-workflow.instance,name",0,Workflow Transition - Instance,Workflow Ãœbergang - Instanz,0
-model,"workflow.trigger,name",0,Workflow trigger,Workflow Trigger,0
-model,"workflow.workitem,name",0,Workflow workitem,Workflow Element,0
-selection,"workflow.activity,join_mode",0,And,Und,0
-selection,"workflow.activity,join_mode",0,Xor,Oder (exklusiv),0
-selection,"workflow.activity,kind",0,Dummy,Dummy,0
-selection,"workflow.activity,kind",0,Function,Funktion,0
-selection,"workflow.activity,kind",0,Stop All,Alles anhalten,0
-selection,"workflow.activity,kind",0,Subflow,Unterflow,0
-selection,"workflow.activity,split_mode",0,And,Und,0
-selection,"workflow.activity,split_mode",0,Or,Oder,0
-selection,"workflow.activity,split_mode",0,Xor,Oder (exklusiv),0
-view,webdav.collection,0,Collection,Sammlung,0
-view,webdav.collection,0,Collections,Sammlungen,0
-view,workflow,0,Workflow,Workflow,0
-view,workflow.activity,0,Activity,Aktivität,0
-view,workflow.activity,0,Transition,Ãœbergang,0
-view,workflow.activity,0,Transitions,Übergänge,0
-view,workflow.instance,0,Instance,Instanz,0
-view,workflow.instance,0,Instances,Instanzen,0
-view,workflow.transition,0,Transition,Ãœbergang,0
-view,workflow.transition,0,Transitions,Übergänge,0
-view,workflow.workitem,0,Workitem,Element,0
-view,workflow.workitem,0,Workitems,Elemente,0
diff --git a/trytond/webdav/es_CO.csv b/trytond/webdav/es_CO.csv
deleted file mode 100644
index a1846a2..0000000
--- a/trytond/webdav/es_CO.csv
+++ /dev/null
@@ -1,24 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,ir.attachment,0,"You can not create an attachment
-in a collection with the name
-of an existing child collection!",No puede crear un adjunto en una colección con el nombre de una colección hija con tal nombre!,0
-error,webdav.collection,0,The collection name must be unique inside a collection!,El nombre de la colección dentro de una colección debe ser único!,0
-error,webdav.collection,0,"You can not create a collection
-in a collection with the name of an existing file!",¡No puede crear una colección en una colección cuyo nombre ya lo tiene un fichero!,0
-error,webdav.collection,0,You can not create recursive collections!,No puede crear colecciones recursivas!,0
-field,"webdav.collection,childs",0,Children,Hij at s,0
-field,"webdav.collection,domain",0,Domain,Dominio,0
-field,"webdav.collection,model",0,Model,Modelo,0
-field,"webdav.collection,name",0,Name,Nombre,0
-field,"webdav.collection,parent",0,Parent,Padre,0
-field,"webdav.collection,rec_name",0,Name,Nombre,0
-model,"ir.action,name",act_collection_tree,Collections,Colecciones,0
-model,"ir.action,name",act_collection_form,Collections,Colecciones,0
-model,"ir.action,name",act_collection_form2,Collections,Colecciones,0
-model,"ir.ui.menu,name",menu_collection_tree,Collections,Colecciones,0
-model,"ir.ui.menu,name",menu_collection_form,Edit Collections,Editar Colecciones,0
-model,"ir.ui.menu,name",menu_collection_form2,New Collection,Nueva Colección,0
-model,"ir.ui.menu,name",menu_webdav,WebDAV,WebDAV,0
-model,"webdav.collection,name",0,Collection,Colección,0
-view,webdav.collection,0,Collection,Colección,0
-view,webdav.collection,0,Collections,Colecciones,0
diff --git a/trytond/webdav/es_ES.csv b/trytond/webdav/es_ES.csv
deleted file mode 100644
index 5540a60..0000000
--- a/trytond/webdav/es_ES.csv
+++ /dev/null
@@ -1,27 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,ir.attachment,0,"You can not create an attachment
-in a collection with the name
-of an existing child collection!","No puede crear un adjunto
-en una colección con el nombre
-de una colección hija existente",0
-error,webdav.collection,0,The collection name must be unique inside a collection!,El nombre de la colección debe ser único dentro de dicha colección,0
-error,webdav.collection,0,"You can not create a collection
-in a collection with the name of an existing file!","No puede crear una colección
-en una colección con el nombre de un archivo existente",0
-error,webdav.collection,0,You can not create recursive collections!,No puede crear colecciones recursivas,0
-field,"webdav.collection,childs",0,Children,Hijos,0
-field,"webdav.collection,domain",0,Domain,Dominio,0
-field,"webdav.collection,model",0,Model,Modelo,0
-field,"webdav.collection,name",0,Name,Nombre,0
-field,"webdav.collection,parent",0,Parent,Padre,0
-field,"webdav.collection,rec_name",0,Name,Nombre,0
-model,"ir.action,name",act_collection_tree,Collections,Colecciones,0
-model,"ir.action,name",act_collection_form,Collections,Colecciones,0
-model,"ir.action,name",act_collection_form2,Collections,Colecciones,0
-model,"ir.ui.menu,name",menu_collection_tree,Collections,Colecciones,0
-model,"ir.ui.menu,name",menu_collection_form,Edit Collections,Editar colecciones,0
-model,"ir.ui.menu,name",menu_collection_form2,New Collection,Nueva colección,0
-model,"ir.ui.menu,name",menu_webdav,WebDAV,WebDAV,0
-model,"webdav.collection,name",0,Collection,Colección,0
-view,webdav.collection,0,Collection,Colección,0
-view,webdav.collection,0,Collections,Colecciones,0
diff --git a/trytond/webdav/fr_FR.csv b/trytond/webdav/fr_FR.csv
deleted file mode 100644
index b0b52c0..0000000
--- a/trytond/webdav/fr_FR.csv
+++ /dev/null
@@ -1,25 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,ir.attachment,0,"You can not create an attachment
-in a collection with the name
-of an existing child collection!","Vous ne pouvez pas créer une pièce jointe
-à une collection dont le nom
-est celui d'une collection enfant !",0
-error,webdav.collection,0,The collection name must be unique inside a collection!,Le nom de collection doit être unique au sein d'une collection !,0
-error,webdav.collection,0,"You can not create a collection
-in a collection with the name of an existing file!","Vous ne pouvez pas créer une collection
-dans une collection avec le même nom qu'un fichier existant !",0
-error,webdav.collection,0,You can not create recursive collections!,Vous ne pouvez pas créer de collections récursives !,0
-field,"webdav.collection,childs",0,Children,Enfants,0
-field,"webdav.collection,domain",0,Domain,Domaine,0
-field,"webdav.collection,model",0,Model,Modèle,0
-field,"webdav.collection,name",0,Name,Nom,0
-field,"webdav.collection,parent",0,Parent,Parent,0
-field,"webdav.collection,rec_name",0,Name,Nom,0
-model,"ir.action,name",act_collection_form,Collections,Collections,0
-model,"ir.action,name",act_collection_tree,Collections,Collections,0
-model,"ir.ui.menu,name",menu_collection_form,New Collection,Nouvelle collection,0
-model,"ir.ui.menu,name",menu_collection_tree,Collections,Collections,0
-model,"ir.ui.menu,name",menu_webdav,WebDAV,WebDAV,0
-model,"webdav.collection,name",0,Collection,Collection,0
-view,webdav.collection,0,Collection,Collection,0
-view,webdav.collection,0,Collections,Collections,0
diff --git a/trytond/webdav/locale/bg_BG.po b/trytond/webdav/locale/bg_BG.po
new file mode 100644
index 0000000..f1d7afd
--- /dev/null
+++ b/trytond/webdav/locale/bg_BG.po
@@ -0,0 +1,88 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:ir.attachment:0"
+msgid ""
+"You can not create an attachment\n"
+"in a collection with the name\n"
+"of an existing child collection!"
+msgstr ""
+"Не може да създадете \n"
+"прикачен файл в колекция\n"
+"с име като на съществуваща\n"
+"подчинена колекция!"
+
+msgctxt "error:webdav.collection:0"
+msgid "The collection name must be unique inside a collection!"
+msgstr "Името на колекцията трябва да уникално вътре в колекцията!"
+
+msgctxt "error:webdav.collection:0"
+msgid ""
+"You can not create a collection\n"
+"in a collection with the name of an existing file!"
+msgstr ""
+"Не може да създадете колекция\n"
+"в колекция с име на съществуващ файл!"
+
+msgctxt "error:webdav.collection:0"
+msgid "You can not create recursive collections!"
+msgstr "Не може да създавате взаимно вложени колекции!"
+
+msgctxt "field:webdav.collection,childs:0"
+msgid "Children"
+msgstr "Деца"
+
+msgctxt "field:webdav.collection,domain:0"
+msgid "Domain"
+msgstr "Домейн"
+
+msgctxt "field:webdav.collection,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:webdav.collection,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:webdav.collection,parent:0"
+msgid "Parent"
+msgstr "Родител"
+
+msgctxt "field:webdav.collection,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_collection_list"
+msgid "Collections"
+msgstr "Колекции"
+
+msgctxt "model:ir.action,name:act_collection_tree"
+msgid "Collections"
+msgstr "Колекции"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_collection_list"
+msgid "Collections"
+msgstr "Колекции"
+
+msgctxt "model:ir.ui.menu,name:menu_collection_tree"
+msgid "Collections"
+msgstr "Колекции"
+
+msgctxt "model:ir.ui.menu,name:menu_webdav"
+msgid "WebDAV"
+msgstr "WebDAV"
+
+msgctxt "model:webdav.collection,name:0"
+msgid "Collection"
+msgstr "Колекция"
+
+msgctxt "view:webdav.collection:0"
+msgid "Collection"
+msgstr "Колекция"
+
+msgctxt "view:webdav.collection:0"
+msgid "Collections"
+msgstr "Колекции"
diff --git a/trytond/webdav/locale/cs_CZ.po b/trytond/webdav/locale/cs_CZ.po
new file mode 100644
index 0000000..af78409
--- /dev/null
+++ b/trytond/webdav/locale/cs_CZ.po
@@ -0,0 +1,80 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:ir.attachment:0"
+msgid ""
+"You can not create an attachment\n"
+"in a collection with the name\n"
+"of an existing child collection!"
+msgstr ""
+
+msgctxt "error:webdav.collection:0"
+msgid "The collection name must be unique inside a collection!"
+msgstr ""
+
+msgctxt "error:webdav.collection:0"
+msgid ""
+"You can not create a collection\n"
+"in a collection with the name of an existing file!"
+msgstr ""
+
+msgctxt "error:webdav.collection:0"
+msgid "You can not create recursive collections!"
+msgstr ""
+
+msgctxt "field:webdav.collection,childs:0"
+msgid "Children"
+msgstr ""
+
+msgctxt "field:webdav.collection,domain:0"
+msgid "Domain"
+msgstr ""
+
+msgctxt "field:webdav.collection,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:webdav.collection,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:webdav.collection,parent:0"
+msgid "Parent"
+msgstr ""
+
+msgctxt "field:webdav.collection,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_collection_list"
+msgid "Collections"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_collection_tree"
+msgid "Collections"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_collection_list"
+msgid "Collections"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_collection_tree"
+msgid "Collections"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_webdav"
+msgid "WebDAV"
+msgstr ""
+
+msgctxt "model:webdav.collection,name:0"
+msgid "Collection"
+msgstr ""
+
+msgctxt "view:webdav.collection:0"
+msgid "Collection"
+msgstr ""
+
+msgctxt "view:webdav.collection:0"
+msgid "Collections"
+msgstr ""
diff --git a/trytond/webdav/locale/de_DE.po b/trytond/webdav/locale/de_DE.po
new file mode 100644
index 0000000..6161d7f
--- /dev/null
+++ b/trytond/webdav/locale/de_DE.po
@@ -0,0 +1,366 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:ir.attachment:0"
+msgid ""
+"You can not create an attachment\n"
+"in a collection with the name\n"
+"of an existing child collection!"
+msgstr ""
+"Ein Anhang kann nicht den selben Namen\n"
+"wie eine untergeordnete Sammlung haben!"
+
+msgctxt "error:webdav.collection:0"
+msgid "The collection name must be unique inside a collection!"
+msgstr ""
+"Der Name ein untergeordneten Sammlung kann nur\n"
+"einmal in einer Sammlung vergeben werden!"
+
+msgctxt "error:webdav.collection:0"
+msgid ""
+"You can not create a collection\n"
+"in a collection with the name of an existing file!"
+msgstr ""
+"Eine Sammlung kann nicht den selben Namen\n"
+"wie eine bestehende Datei haben!"
+
+msgctxt "error:webdav.collection:0"
+msgid "You can not create recursive collections!"
+msgstr "Sammlungen können nicht rekursiv angelegt werden!"
+
+msgctxt "error:workflow.instance:0"
+msgid "No workflow instance defined!"
+msgstr "Keine Workflowinstanz definiert!"
+
+msgctxt "error:workflow:0"
+msgid "No workflow defined!"
+msgstr "Kein Workflow definiert!"
+
+msgctxt "field:webdav.collection,childs:0"
+msgid "Children"
+msgstr "Untergeordnet (Sammlungen)"
+
+msgctxt "field:webdav.collection,domain:0"
+msgid "Domain"
+msgstr "Wertebereich (Domain)"
+
+msgctxt "field:webdav.collection,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:webdav.collection,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:webdav.collection,parent:0"
+msgid "Parent"
+msgstr "Ãœbergeordnet (Sammlung)"
+
+msgctxt "field:webdav.collection,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow,activities:0"
+msgid "Activities"
+msgstr "Aktivitäten"
+
+msgctxt "field:workflow,model:0"
+msgid "Resource Model"
+msgstr "Modell Ressource"
+
+msgctxt "field:workflow,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow,on_create:0"
+msgid "On Create"
+msgstr "Bei der Erstellung"
+
+msgctxt "field:workflow,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.activity,flow_start:0"
+msgid "Flow Start"
+msgstr "Flow Start"
+
+msgctxt "field:workflow.activity,flow_stop:0"
+msgid "Flow Stop"
+msgstr "Flow Stop"
+
+msgctxt "field:workflow.activity,in_transitions:0"
+msgid "Incoming transitions"
+msgstr "Eingehende Übergänge"
+
+msgctxt "field:workflow.activity,join_mode:0"
+msgid "Join Mode"
+msgstr "Verbindungsmodus"
+
+msgctxt "field:workflow.activity,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.activity,out_transitions:0"
+msgid "Outgoing transitions"
+msgstr "Ausgehende Übergänge"
+
+msgctxt "field:workflow.activity,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.activity,signal_send:0"
+msgid "Signal (subflow.*)"
+msgstr "Signal (subflow.*)"
+
+msgctxt "field:workflow.activity,split_mode:0"
+msgid "Split Mode"
+msgstr "Geteilter Modus"
+
+msgctxt "field:workflow.activity,subflow:0"
+msgid "Subflow"
+msgstr "Unterflow"
+
+msgctxt "field:workflow.activity,workflow:0"
+msgid "Workflow"
+msgstr "Workflow"
+
+msgctxt "field:workflow.instance,overflows:0"
+msgid "Overflow"
+msgstr "Ãœberlauf"
+
+msgctxt "field:workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.instance,res_id:0"
+msgid "Resource ID"
+msgstr "ID Ressource"
+
+msgctxt "field:workflow.instance,res_type:0"
+msgid "Resource Model"
+msgstr "Modell Ressource"
+
+msgctxt "field:workflow.instance,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:workflow.instance,transitions:0"
+msgid "Transitions"
+msgstr "Übergänge"
+
+msgctxt "field:workflow.instance,uid:0"
+msgid "User ID"
+msgstr "Benutzer ID"
+
+msgctxt "field:workflow.instance,workflow:0"
+msgid "Workflow"
+msgstr "Workflow"
+
+msgctxt "field:workflow.instance,workitems:0"
+msgid "Workitems"
+msgstr "Elemente"
+
+msgctxt "field:workflow.transition,act_from:0"
+msgid "Source Activity"
+msgstr "Quelle der Aktivität"
+
+msgctxt "field:workflow.transition,act_to:0"
+msgid "Destination Activity"
+msgstr "Bestimmung der Aktivität"
+
+msgctxt "field:workflow.transition,condition:0"
+msgid "Condition"
+msgstr "Bedingung"
+
+msgctxt "field:workflow.transition,group:0"
+msgid "Group Required"
+msgstr "Erforderliche Gruppe"
+
+msgctxt "field:workflow.transition,instances:0"
+msgid "Instances"
+msgstr "Instanzen"
+
+msgctxt "field:workflow.transition,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.transition,signal:0"
+msgid "Signal (button Name)"
+msgstr "Signal (Name des Knopfes)"
+
+msgctxt "field:workflow.transition,trigger_model:0"
+msgid "Trigger Type"
+msgstr "Typ Auslöser"
+
+msgctxt "field:workflow.transition-workflow.instance,inst_id:0"
+msgid "Instance"
+msgstr "Instanz"
+
+msgctxt "field:workflow.transition-workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.transition-workflow.instance,trans_id:0"
+msgid "Transition"
+msgstr "Ãœbergang"
+
+msgctxt "field:workflow.trigger,instance:0"
+msgid "Destination Instance"
+msgstr "Bestimmungsinstanz"
+
+msgctxt "field:workflow.trigger,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:workflow.trigger,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.trigger,res_id:0"
+msgid "Resource ID"
+msgstr "ID Ressource"
+
+msgctxt "field:workflow.trigger,workitem:0"
+msgid "Workitem"
+msgstr "Element"
+
+msgctxt "field:workflow.workitem,activity:0"
+msgid "Activity"
+msgstr "Aktivität"
+
+msgctxt "field:workflow.workitem,instance:0"
+msgid "Instance"
+msgstr "Instanz"
+
+msgctxt "field:workflow.workitem,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.workitem,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:workflow.workitem,subflow:0"
+msgid "Subflow"
+msgstr "Unterflow"
+
+msgctxt "model:ir.action,name:act_collection_list"
+msgid "Collections"
+msgstr "Sammlungen"
+
+msgctxt "model:ir.action,name:act_collection_tree"
+msgid "Collections"
+msgstr "Sammlungen"
+
+msgctxt "model:ir.ui.menu,name:menu_collection_list"
+msgid "Collections"
+msgstr "Sammlungen"
+
+msgctxt "model:ir.ui.menu,name:menu_collection_tree"
+msgid "Collections"
+msgstr "Sammlungen"
+
+msgctxt "model:ir.ui.menu,name:menu_webdav"
+msgid "WebDAV"
+msgstr "WebDAV"
+
+msgctxt "model:webdav.collection,name:0"
+msgid "Collection"
+msgstr "Sammlung"
+
+msgctxt "model:workflow,name:0"
+msgid "Workflow"
+msgstr "Workflow"
+
+msgctxt "model:workflow.activity,name:0"
+msgid "Workflow activity"
+msgstr "Workflow Aktivität"
+
+msgctxt "model:workflow.instance,name:0"
+msgid "Workflow instance"
+msgstr "Workflow Instanz"
+
+msgctxt "model:workflow.transition,name:0"
+msgid "Workflow transition"
+msgstr "Workflow Ãœbergang"
+
+msgctxt "model:workflow.transition-workflow.instance,name:0"
+msgid "Workflow Transition - Instance"
+msgstr "Workflow Ãœbergang - Instanz"
+
+msgctxt "model:workflow.trigger,name:0"
+msgid "Workflow trigger"
+msgstr "Workflow Trigger"
+
+msgctxt "model:workflow.workitem,name:0"
+msgid "Workflow workitem"
+msgstr "Workflow Element"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "And"
+msgstr "Und"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "Xor"
+msgstr "Oder (exklusiv)"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "And"
+msgstr "Und"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Or"
+msgstr "Oder"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Xor"
+msgstr "Oder (exklusiv)"
+
+msgctxt "view:webdav.collection:0"
+msgid "Collection"
+msgstr "Sammlung"
+
+msgctxt "view:webdav.collection:0"
+msgid "Collections"
+msgstr "Sammlungen"
+
+msgctxt "view:workflow.activity:0"
+msgid "Activity"
+msgstr "Aktivität"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transition"
+msgstr "Ãœbergang"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transitions"
+msgstr "Übergänge"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instance"
+msgstr "Instanz"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instances"
+msgstr "Instanzen"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transition"
+msgstr "Ãœbergang"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transitions"
+msgstr "Übergänge"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitem"
+msgstr "Element"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitems"
+msgstr "Elemente"
+
+msgctxt "view:workflow:0"
+msgid "Workflow"
+msgstr "Workflow"
diff --git a/trytond/webdav/locale/es_CO.po b/trytond/webdav/locale/es_CO.po
new file mode 100644
index 0000000..9163fb2
--- /dev/null
+++ b/trytond/webdav/locale/es_CO.po
@@ -0,0 +1,86 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:ir.attachment:0"
+msgid ""
+"You can not create an attachment\n"
+"in a collection with the name\n"
+"of an existing child collection!"
+msgstr ""
+"No puede crear un adjunto en una colección con el nombre de una colección "
+"hija con tal nombre!"
+
+msgctxt "error:webdav.collection:0"
+msgid "The collection name must be unique inside a collection!"
+msgstr "El nombre de la colección dentro de una colección debe ser único!"
+
+msgctxt "error:webdav.collection:0"
+msgid ""
+"You can not create a collection\n"
+"in a collection with the name of an existing file!"
+msgstr ""
+"¡No puede crear una colección en una colección cuyo nombre ya lo tiene un "
+"fichero!"
+
+msgctxt "error:webdav.collection:0"
+msgid "You can not create recursive collections!"
+msgstr "No puede crear colecciones recursivas!"
+
+msgctxt "field:webdav.collection,childs:0"
+msgid "Children"
+msgstr "Hij at s"
+
+msgctxt "field:webdav.collection,domain:0"
+msgid "Domain"
+msgstr "Dominio"
+
+msgctxt "field:webdav.collection,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:webdav.collection,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:webdav.collection,parent:0"
+msgid "Parent"
+msgstr "Padre"
+
+msgctxt "field:webdav.collection,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_collection_list"
+msgid "Collections"
+msgstr "Colecciones"
+
+msgctxt "model:ir.action,name:act_collection_tree"
+msgid "Collections"
+msgstr "Colecciones"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_collection_list"
+msgid "Collections"
+msgstr "Colecciones"
+
+msgctxt "model:ir.ui.menu,name:menu_collection_tree"
+msgid "Collections"
+msgstr "Colecciones"
+
+msgctxt "model:ir.ui.menu,name:menu_webdav"
+msgid "WebDAV"
+msgstr "WebDAV"
+
+msgctxt "model:webdav.collection,name:0"
+msgid "Collection"
+msgstr "Colección"
+
+msgctxt "view:webdav.collection:0"
+msgid "Collection"
+msgstr "Colección"
+
+msgctxt "view:webdav.collection:0"
+msgid "Collections"
+msgstr "Colecciones"
diff --git a/trytond/webdav/locale/es_ES.po b/trytond/webdav/locale/es_ES.po
new file mode 100644
index 0000000..a45f794
--- /dev/null
+++ b/trytond/webdav/locale/es_ES.po
@@ -0,0 +1,87 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:ir.attachment:0"
+msgid ""
+"You can not create an attachment\n"
+"in a collection with the name\n"
+"of an existing child collection!"
+msgstr ""
+"No puede crear un adjunto\n"
+"en una colección con el nombre\n"
+"de una colección hija existente"
+
+msgctxt "error:webdav.collection:0"
+msgid "The collection name must be unique inside a collection!"
+msgstr "El nombre de la colección debe ser único dentro de dicha colección"
+
+msgctxt "error:webdav.collection:0"
+msgid ""
+"You can not create a collection\n"
+"in a collection with the name of an existing file!"
+msgstr ""
+"No puede crear una colección\n"
+"en una colección con el nombre de un archivo existente"
+
+msgctxt "error:webdav.collection:0"
+msgid "You can not create recursive collections!"
+msgstr "No puede crear colecciones recursivas"
+
+msgctxt "field:webdav.collection,childs:0"
+msgid "Children"
+msgstr "Hijos"
+
+msgctxt "field:webdav.collection,domain:0"
+msgid "Domain"
+msgstr "Dominio"
+
+msgctxt "field:webdav.collection,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:webdav.collection,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:webdav.collection,parent:0"
+msgid "Parent"
+msgstr "Padre"
+
+msgctxt "field:webdav.collection,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_collection_list"
+msgid "Collections"
+msgstr "Colecciones"
+
+msgctxt "model:ir.action,name:act_collection_tree"
+msgid "Collections"
+msgstr "Colecciones"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_collection_list"
+msgid "Collections"
+msgstr "Colecciones"
+
+msgctxt "model:ir.ui.menu,name:menu_collection_tree"
+msgid "Collections"
+msgstr "Colecciones"
+
+msgctxt "model:ir.ui.menu,name:menu_webdav"
+msgid "WebDAV"
+msgstr "WebDAV"
+
+msgctxt "model:webdav.collection,name:0"
+msgid "Collection"
+msgstr "Colección"
+
+msgctxt "view:webdav.collection:0"
+msgid "Collection"
+msgstr "Colección"
+
+msgctxt "view:webdav.collection:0"
+msgid "Collections"
+msgstr "Colecciones"
diff --git a/trytond/webdav/locale/fr_FR.po b/trytond/webdav/locale/fr_FR.po
new file mode 100644
index 0000000..60c6bd2
--- /dev/null
+++ b/trytond/webdav/locale/fr_FR.po
@@ -0,0 +1,85 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:ir.attachment:0"
+msgid ""
+"You can not create an attachment\n"
+"in a collection with the name\n"
+"of an existing child collection!"
+msgstr ""
+"Vous ne pouvez pas créer une pièce jointe\n"
+"à une collection dont le nom\n"
+"est celui d'une collection enfant !"
+
+msgctxt "error:webdav.collection:0"
+msgid "The collection name must be unique inside a collection!"
+msgstr "Le nom de collection doit être unique au sein d'une collection !"
+
+msgctxt "error:webdav.collection:0"
+msgid ""
+"You can not create a collection\n"
+"in a collection with the name of an existing file!"
+msgstr ""
+"Vous ne pouvez pas créer une collection\n"
+"dans une collection avec le même nom qu'un fichier existant !"
+
+msgctxt "error:webdav.collection:0"
+msgid "You can not create recursive collections!"
+msgstr "Vous ne pouvez pas créer de collections récursives !"
+
+msgctxt "field:webdav.collection,childs:0"
+msgid "Children"
+msgstr "Enfants"
+
+msgctxt "field:webdav.collection,domain:0"
+msgid "Domain"
+msgstr "Domaine"
+
+msgctxt "field:webdav.collection,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:webdav.collection,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:webdav.collection,parent:0"
+msgid "Parent"
+msgstr "Parent"
+
+msgctxt "field:webdav.collection,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "model:ir.action,name:act_collection_list"
+msgid "Collections"
+msgstr "Collections"
+
+msgctxt "model:ir.action,name:act_collection_tree"
+msgid "Collections"
+msgstr "Collections"
+
+msgctxt "model:ir.ui.menu,name:menu_collection_list"
+msgid "Collections"
+msgstr "Collections"
+
+msgctxt "model:ir.ui.menu,name:menu_collection_tree"
+msgid "Collections"
+msgstr "Collections"
+
+msgctxt "model:ir.ui.menu,name:menu_webdav"
+msgid "WebDAV"
+msgstr "WebDAV"
+
+msgctxt "model:webdav.collection,name:0"
+msgid "Collection"
+msgstr "Collection"
+
+msgctxt "view:webdav.collection:0"
+msgid "Collection"
+msgstr "Collection"
+
+msgctxt "view:webdav.collection:0"
+msgid "Collections"
+msgstr "Collections"
diff --git a/trytond/webdav/locale/nl_NL.po b/trytond/webdav/locale/nl_NL.po
new file mode 100644
index 0000000..3e78ca5
--- /dev/null
+++ b/trytond/webdav/locale/nl_NL.po
@@ -0,0 +1,87 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:ir.attachment:0"
+msgid ""
+"You can not create an attachment\n"
+"in a collection with the name\n"
+"of an existing child collection!"
+msgstr ""
+"U kunt geen bijlage toevoegen\n"
+"met een naam gelijk aan een naam\n"
+"van een deelverzameling!"
+
+msgctxt "error:webdav.collection:0"
+msgid "The collection name must be unique inside a collection!"
+msgstr "De naam van de verzameling moet uniek zijn binnen de verzameling!"
+
+msgctxt "error:webdav.collection:0"
+msgid ""
+"You can not create a collection\n"
+"in a collection with the name of an existing file!"
+msgstr ""
+"U kunt geen deelverzameling aanmaken met \n"
+"dezelfde naam als die van een bestaand bestand!"
+
+msgctxt "error:webdav.collection:0"
+msgid "You can not create recursive collections!"
+msgstr "U kunt geen verzamelingen maken die naar zichzelf verwijzen!"
+
+msgctxt "field:webdav.collection,childs:0"
+msgid "Children"
+msgstr "Onderliggende niveaus"
+
+msgctxt "field:webdav.collection,domain:0"
+msgid "Domain"
+msgstr "Domein"
+
+msgctxt "field:webdav.collection,model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:webdav.collection,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:webdav.collection,parent:0"
+msgid "Parent"
+msgstr "Bovenliggend niveau"
+
+msgctxt "field:webdav.collection,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_collection_list"
+msgid "Collections"
+msgstr "Verzamelingen"
+
+msgctxt "model:ir.action,name:act_collection_tree"
+msgid "Collections"
+msgstr "Verzamelingen"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_collection_list"
+msgid "Collections"
+msgstr "Verzamelingen"
+
+msgctxt "model:ir.ui.menu,name:menu_collection_tree"
+msgid "Collections"
+msgstr "Verzamelingen"
+
+msgctxt "model:ir.ui.menu,name:menu_webdav"
+msgid "WebDAV"
+msgstr "WebDAV"
+
+msgctxt "model:webdav.collection,name:0"
+msgid "Collection"
+msgstr "Verzameling"
+
+msgctxt "view:webdav.collection:0"
+msgid "Collection"
+msgstr "Verzameling"
+
+msgctxt "view:webdav.collection:0"
+msgid "Collections"
+msgstr "Verzamelingen"
diff --git a/trytond/webdav/locale/ru_RU.po b/trytond/webdav/locale/ru_RU.po
new file mode 100644
index 0000000..3b180c0
--- /dev/null
+++ b/trytond/webdav/locale/ru_RU.po
@@ -0,0 +1,88 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:ir.attachment:0"
+msgid ""
+"You can not create an attachment\n"
+"in a collection with the name\n"
+"of an existing child collection!"
+msgstr ""
+"Вы не можете создавать вложение\n"
+"в каталоге с именем\n"
+" существующующего подкаталога!"
+
+msgctxt "error:webdav.collection:0"
+msgid "The collection name must be unique inside a collection!"
+msgstr "Имя каталога должно быть уникальным внутри каталога!"
+
+msgctxt "error:webdav.collection:0"
+msgid ""
+"You can not create a collection\n"
+"in a collection with the name of an existing file!"
+msgstr ""
+"Вы не можете создавать каталог\n"
+"в каталоге с именем существующего файла!"
+
+msgctxt "error:webdav.collection:0"
+msgid "You can not create recursive collections!"
+msgstr "Вы не можете создавать рекурсивные категории!"
+
+msgctxt "field:webdav.collection,childs:0"
+msgid "Children"
+msgstr "Подчиненый"
+
+msgctxt "field:webdav.collection,domain:0"
+msgid "Domain"
+msgstr "Область"
+
+msgctxt "field:webdav.collection,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:webdav.collection,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:webdav.collection,parent:0"
+msgid "Parent"
+msgstr "Основной"
+
+msgctxt "field:webdav.collection,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_collection_list"
+msgid "Collections"
+msgstr "Каталоги"
+
+msgctxt "model:ir.action,name:act_collection_tree"
+msgid "Collections"
+msgstr "Каталоги"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_collection_list"
+msgid "Collections"
+msgstr "Каталоги"
+
+msgctxt "model:ir.ui.menu,name:menu_collection_tree"
+msgid "Collections"
+msgstr "Каталоги"
+
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_webdav"
+msgid "WebDAV"
+msgstr "WebDAV"
+
+msgctxt "model:webdav.collection,name:0"
+msgid "Collection"
+msgstr "Каталог"
+
+msgctxt "view:webdav.collection:0"
+msgid "Collection"
+msgstr "Каталог"
+
+msgctxt "view:webdav.collection:0"
+msgid "Collections"
+msgstr "Каталоги"
diff --git a/trytond/webdav/nl_NL.csv b/trytond/webdav/nl_NL.csv
deleted file mode 100644
index 7055fd9..0000000
--- a/trytond/webdav/nl_NL.csv
+++ /dev/null
@@ -1,27 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,ir.attachment,0,"You can not create an attachment
-in a collection with the name
-of an existing child collection!","U kunt geen bijlage toevoegen
-met een naam gelijk aan een naam
-van een deelverzameling!",0
-error,webdav.collection,0,The collection name must be unique inside a collection!,De naam van de verzameling moet uniek zijn binnen de verzameling!,0
-error,webdav.collection,0,"You can not create a collection
-in a collection with the name of an existing file!","U kunt geen deelverzameling aanmaken met 
-dezelfde naam als die van een bestaand bestand!",0
-error,webdav.collection,0,You can not create recursive collections!,U kunt geen verzamelingen maken die naar zichzelf verwijzen!,0
-field,"webdav.collection,childs",0,Children,Onderliggende niveaus,0
-field,"webdav.collection,domain",0,Domain,Domein,0
-field,"webdav.collection,model",0,Model,Model,0
-field,"webdav.collection,name",0,Name,Naam,0
-field,"webdav.collection,parent",0,Parent,Bovenliggend niveau,0
-field,"webdav.collection,rec_name",0,Name,Naam,0
-model,"ir.action,name",act_collection_form,Collections,Verzamelingen,0
-model,"ir.action,name",act_collection_form2,Collections,Verzamelingen,0
-model,"ir.action,name",act_collection_tree,Collections,Verzamelingen,0
-model,"ir.ui.menu,name",menu_collection_form,Edit Collections,Verzamelingen muteren,0
-model,"ir.ui.menu,name",menu_collection_form2,New Collection,Nieuwe verzameling,0
-model,"ir.ui.menu,name",menu_collection_tree,Collections,Verzamelingen,0
-model,"ir.ui.menu,name",menu_webdav,WebDAV,WebDAV,0
-model,"webdav.collection,name",0,Collection,Verzameling,0
-view,webdav.collection,0,Collection,Verzameling,0
-view,webdav.collection,0,Collections,Verzamelingen,0
diff --git a/trytond/webdav/ru_RU.csv b/trytond/webdav/ru_RU.csv
deleted file mode 100644
index aadfe09..0000000
--- a/trytond/webdav/ru_RU.csv
+++ /dev/null
@@ -1,27 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,ir.attachment,0,"You can not create an attachment
-in a collection with the name
-of an existing child collection!","Вы не можете создавать вложение
-в каталоге с именем
- существующующего подкаталога!",0
-error,webdav.collection,0,The collection name must be unique inside a collection!,Имя каталога должно быть уникальным внутри каталога!,0
-error,webdav.collection,0,"You can not create a collection
-in a collection with the name of an existing file!","Вы не можете создавать каталог
-в каталоге с именем существующего файла!",0
-error,webdav.collection,0,You can not create recursive collections!,Вы не можете создавать рекурсивные категории!,0
-field,"webdav.collection,childs",0,Children,Подчиненый,0
-field,"webdav.collection,domain",0,Domain,Область,0
-field,"webdav.collection,model",0,Model,Шаблон,0
-field,"webdav.collection,name",0,Name,Наименование,0
-field,"webdav.collection,parent",0,Parent,Основной,0
-field,"webdav.collection,rec_name",0,Name,Наименование,0
-model,"ir.action,name",act_collection_tree,Collections,Каталоги,0
-model,"ir.action,name",act_collection_form,Collections,Каталоги,0
-model,"ir.action,name",act_collection_form2,Collections,Каталоги,0
-model,"ir.ui.menu,name",menu_collection_tree,Collections,Каталоги,0
-model,"ir.ui.menu,name",menu_collection_form,Edit Collections,Редактировать каталоги,0
-model,"ir.ui.menu,name",menu_collection_form2,New Collection,Новый каталог,0
-model,"ir.ui.menu,name",menu_webdav,WebDAV,,0
-model,"webdav.collection,name",0,Collection,Каталог,0
-view,webdav.collection,0,Collection,Каталог,0
-view,webdav.collection,0,Collections,Каталоги,0
diff --git a/trytond/webdav/webdav.py b/trytond/webdav/webdav.py
index 3ab5d75..ae7fbb3 100644
--- a/trytond/webdav/webdav.py
+++ b/trytond/webdav/webdav.py
@@ -1,12 +1,12 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 import os
-import base64
 import time
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.version import PACKAGE, VERSION, WEBSITE
 from trytond.tools import reduce_ids, safe_eval
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 
 
 class Collection(ModelSQL, ModelView):
@@ -47,7 +47,8 @@ class Collection(ModelSQL, ModelView):
         return '[]'
 
     def check_attachment(self, ids):
-        attachment_obj = self.pool.get('ir.attachment')
+        pool = Pool()
+        attachment_obj = pool.get('ir.attachment')
         for collection in self.browse(ids):
             if collection.parent:
                 attachment_ids = attachment_obj.search([
@@ -60,8 +61,9 @@ class Collection(ModelSQL, ModelView):
         return True
 
     def _uri2object(self, uri, object_name=_name, object_id=False, cache=None):
-        attachment_obj = self.pool.get('ir.attachment')
-        report_obj = self.pool.get('ir.action.report')
+        pool = Pool()
+        attachment_obj = pool.get('ir.attachment')
+        report_obj = pool.get('ir.action.report')
         cache_uri = uri
 
         if cache is not None:
@@ -233,7 +235,8 @@ class Collection(ModelSQL, ModelView):
         return object_name, object_id
 
     def get_childs(self, uri, filter=None, cache=None):
-        report_obj = self.pool.get('ir.action.report')
+        pool = Pool()
+        report_obj = pool.get('ir.action.report')
         res = []
         if filter:
             return []
@@ -253,7 +256,7 @@ class Collection(ModelSQL, ModelView):
         if object_name == self._name and object_id:
             collection = self.browse(object_id)
             if collection.model:
-                model_obj = self.pool.get(collection.model.model)
+                model_obj = pool.get(collection.model.model)
                 if not model_obj:
                     return res
                 model_ids = model_obj.search(
@@ -289,7 +292,7 @@ class Collection(ModelSQL, ModelView):
                     cache.setdefault(report_obj._name, {})
                     cache[report_obj._name][report.id] = {}
 
-            attachment_obj = self.pool.get('ir.attachment')
+            attachment_obj = pool.get('ir.attachment')
             attachment_ids = attachment_obj.search([
                 ('resource', '=', '%s,%s' % (object_name, object_id)),
                 ])
@@ -312,11 +315,12 @@ class Collection(ModelSQL, ModelView):
 
     def get_displayname(self, uri, cache=None):
         object_name, object_id = self._uri2object(uri, cache=cache)
-        model_obj = self.pool.get(object_name)
+        model_obj = Pool().get(object_name)
         return model_obj.browse(object_id).rec_name
 
     def get_contentlength(self, uri, cache=None):
-        attachment_obj = self.pool.get('ir.attachment')
+        pool = Pool()
+        attachment_obj = pool.get('ir.attachment')
 
         object_name, object_id = self._uri2object(uri, cache=cache)
         if object_name == 'ir.attachment':
@@ -360,9 +364,10 @@ class Collection(ModelSQL, ModelView):
         return "application/octet-stream"
 
     def get_creationdate(self, uri, cache=None):
+        pool = Pool()
         object_name, object_id = self._uri2object(uri, cache=cache)
         if object_name == 'ir.attachment':
-            model_obj = self.pool.get(object_name)
+            model_obj = pool.get(object_name)
             if object_id:
                 if cache is not None:
                     cache.setdefault(model_obj._name, {})
@@ -394,9 +399,10 @@ class Collection(ModelSQL, ModelView):
         return time.time()
 
     def get_lastmodified(self, uri, cache=None):
+        pool = Pool()
         object_name, object_id = self._uri2object(uri, cache=cache)
         if object_name == 'ir.attachment':
-            model_obj = self.pool.get(object_name)
+            model_obj = pool.get(object_name)
             if object_id:
                 if cache is not None:
                     cache.setdefault(model_obj._name, {})
@@ -430,8 +436,9 @@ class Collection(ModelSQL, ModelView):
 
     def get_data(self, uri, cache=None):
         from DAV.errors import DAV_NotFound
-        attachment_obj = self.pool.get('ir.attachment')
-        report_obj = self.pool.get('ir.action.report')
+        pool = Pool()
+        attachment_obj = pool.get('ir.attachment')
+        report_obj = pool.get('ir.action.report')
 
         if uri:
             object_name, object_id = self._uri2object(uri, cache=cache)
@@ -456,7 +463,7 @@ class Collection(ModelSQL, ModelView):
                     data = DAV_NotFound
                     try:
                         if attachment.data is not False:
-                            data = base64.decodestring(attachment.data)
+                            data = attachment.data
                     except Exception:
                         pass
                     if attachment.id == object_id:
@@ -473,11 +480,11 @@ class Collection(ModelSQL, ModelView):
                     1)[-1].rsplit('.', 1)[0])
                 report = report_obj.browse(report_id)
                 if report.report_name:
-                    report_obj = self.pool.get(report.report_name,
+                    report_obj = pool.get(report.report_name,
                             type='report')
                     val = report_obj.execute([object_id],
                             {'id': object_id, 'ids': [object_id]})
-                    return base64.decodestring(val[1])
+                    return val[1]
         raise DAV_NotFound
 
     def put(self, uri, data, content_type, cache=None):
@@ -489,14 +496,15 @@ class Collection(ModelSQL, ModelView):
                 or object_name in ('ir.attachment') \
                 or not object_id:
             raise DAV_Forbidden
-        attachment_obj = self.pool.get('ir.attachment')
+        pool = Pool()
+        attachment_obj = pool.get('ir.attachment')
         object_name2, object_id2 = self._uri2object(uri, cache=cache)
         if not object_id2:
             name = get_urifilename(uri)
             try:
                 attachment_obj.create({
                     'name': name,
-                    'data': base64.encodestring(data or ''),
+                    'data': data,
                     'name': name,
                     'resource': '%s,%s' % (object_name, object_id),
                     })
@@ -505,7 +513,7 @@ class Collection(ModelSQL, ModelView):
         else:
             try:
                 attachment_obj.write(object_id2, {
-                    'data': base64.encodestring(data or ''),
+                    'data': data,
                     })
             except Exception:
                 raise DAV_Forbidden
@@ -550,7 +558,8 @@ class Collection(ModelSQL, ModelView):
         if object_name != 'ir.attachment' \
                 or not object_id:
             raise DAV_Forbidden
-        model_obj = self.pool.get(object_name)
+        pool = Pool()
+        model_obj = pool.get(object_name)
         try:
             model_obj.delete(object_id)
         except Exception:
@@ -584,7 +593,8 @@ class Attachment(ModelSQL, ModelView):
         })
 
     def check_collection(self, ids):
-        collection_obj = self.pool.get('webdav.collection')
+        pool = Pool()
+        collection_obj = pool.get('webdav.collection')
         for attachment in self.browse(ids):
             if attachment.resource:
                 model_name, record_id = attachment.resource.split(',')
diff --git a/trytond/webdav/webdav.xml b/trytond/webdav/webdav.xml
index 7706a2a..aa78e47 100644
--- a/trytond/webdav/webdav.xml
+++ b/trytond/webdav/webdav.xml
@@ -3,8 +3,13 @@
 this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
-        <menuitem name="WebDAV" id="menu_webdav" groups="res.group_admin"
+        <menuitem name="WebDAV" id="menu_webdav"
             parent="ir.menu_administration"/>
+        <record model="ir.ui.menu-res.group" id="menu_webdav_group_admin">
+            <field name="menu" ref="menu_webdav"/>
+            <field name="group" ref="res.group_admin"/>
+        </record>
+
         <record model="ir.ui.view" id="collection_view_tree">
             <field name="model">webdav.collection</field>
             <field name="type">tree</field>
@@ -20,6 +25,20 @@ this repository contains the full copyright notices and license terms. -->
                 ]]>
             </field>
         </record>
+
+        <record model="ir.ui.view" id="collection_view_list">
+            <field name="model">webdav.collection</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                    <tree string="Collections">
+                        <field name="name"/>
+                        <field name="model"/>
+                    </tree>
+                ]]>
+            </field>
+        </record>
+
         <record model="ir.ui.view" id="collection_view_form">
             <field name="model">webdav.collection</field>
             <field name="type">form</field>
@@ -57,27 +76,34 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="collection_view_form"/>
             <field name="act_window" ref="act_collection_tree"/>
         </record>
-        <menuitem parent="menu_webdav" groups="res.group_admin"
+        <menuitem parent="menu_webdav"
             action="act_collection_tree" id="menu_collection_tree"/>
+        <record model="ir.ui.menu-res.group" id="menu_collection_tree_group_admin">
+            <field name="menu" ref="menu_collection_tree"/>
+            <field name="group" ref="res.group_admin"/>
+        </record>
 
-        <record model="ir.action.act_window" id="act_collection_form">
+        <record model="ir.action.act_window" id="act_collection_list">
             <field name="name">Collections</field>
             <field name="res_model">webdav.collection</field>
         </record>
         <record model="ir.action.act_window.view"
-            id="act_collection_form_view1">
+            id="act_collection_list_view1">
             <field name="sequence" eval="10"/>
-            <field name="view" ref="collection_view_form"/>
-            <field name="act_window" ref="act_collection_form"/>
+            <field name="view" ref="collection_view_list"/>
+            <field name="act_window" ref="act_collection_list"/>
         </record>
         <record model="ir.action.act_window.view"
-            id="act_collection_form_view2">
+            id="act_collection_lis_view2">
             <field name="sequence" eval="20"/>
-            <field name="view" ref="collection_view_tree"/>
-            <field name="act_window" ref="act_collection_form"/>
+            <field name="view" ref="collection_view_form"/>
+            <field name="act_window" ref="act_collection_list"/>
+        </record>
+        <menuitem name="Collections" parent="menu_collection_tree"
+            action="act_collection_list" id="menu_collection_list"/>
+        <record model="ir.ui.menu-res.group" id="menu_collection_list_group_admin">
+            <field name="menu" ref="menu_collection_list"/>
+            <field name="group" ref="res.group_admin"/>
         </record>
-        <menuitem name="New Collection" parent="menu_collection_tree"
-            action="act_collection_form" id="menu_collection_form"
-            groups="res.group_admin"/>
     </data>
 </tryton>
diff --git a/trytond/wizard/wizard.py b/trytond/wizard/wizard.py
index 65ecec4..9fbb1a8 100644
--- a/trytond/wizard/wizard.py
+++ b/trytond/wizard/wizard.py
@@ -7,12 +7,12 @@ from xmlrpclib import MAXINT
 from trytond.pool import Pool
 from trytond.transaction import Transaction
 from trytond.error import WarningErrorMixin
+from trytond.url import URLMixin
 
 
-class Wizard(WarningErrorMixin):
+class Wizard(WarningErrorMixin, URLMixin):
     _name = ""
     states = {}
-    pool = None
 
     def __new__(cls):
         Pool.register(cls, type='wizard')
@@ -29,7 +29,8 @@ class Wizard(WarningErrorMixin):
         self._datas = {}
 
     def init(self, module_name):
-        translation_obj = self.pool.get('ir.translation')
+        pool = Pool()
+        translation_obj = pool.get('ir.translation')
         cursor = Transaction().cursor
         for state in self.states.keys():
             if self.states[state]['result']['type'] == 'form':
@@ -100,8 +101,8 @@ class Wizard(WarningErrorMixin):
         self._lock.release()
 
     def execute(self, wiz_id, data, state='init'):
-        translation_obj = self.pool.get('ir.translation')
-        wizard_size_obj = self.pool.get('ir.action.wizard_size')
+        pool = Pool()
+        translation_obj = pool.get('ir.translation')
         res = {}
 
         if self._datas.get(wiz_id, {}).get('user') != Transaction().user:
@@ -129,9 +130,9 @@ class Wizard(WarningErrorMixin):
         if result_def['type'] == 'action':
             res['action'] = getattr(self, result_def['action'])(data)
         elif result_def['type'] == 'form':
-            obj = self.pool.get(result_def['object'])
+            obj = pool.get(result_def['object'])
 
-            view = obj.fields_view_get(view_type='form', toolbar=False)
+            view = obj.fields_view_get(view_type='form')
             fields = view['fields']
             arch = view['arch']
 
@@ -157,8 +158,6 @@ class Wizard(WarningErrorMixin):
             res['fields'] = fields
             res['arch'] = arch
             res['state'] = button_list
-            res['size'] = wizard_size_obj.get_size(self._name,
-                    result_def['object'])
         elif result_def['type'] == 'choice':
             next_state = getattr(self, result_def['next_state'])(data)
             if next_state == 'end':
diff --git a/trytond/workflow/__tryton__.py b/trytond/workflow/__tryton__.py
index b0bd94f..2865a23 100644
--- a/trytond/workflow/__tryton__.py
+++ b/trytond/workflow/__tryton__.py
@@ -28,12 +28,13 @@
         'workflow.xml',
         ],
     'translation': [
-        'bg_BG.csv',
-        'de_DE.csv',
-        'es_CO.csv',
-        'es_ES.csv',
-        'fr_FR.csv',
-        'nl_NL.csv',
-        'ru_RU.csv',
+        'locale/cs_CZ.po',
+        'locale/bg_BG.po',
+        'locale/de_DE.po',
+        'locale/es_CO.po',
+        'locale/es_ES.po',
+        'locale/fr_FR.po',
+        'locale/nl_NL.po',
+        'locale/ru_RU.po',
     ],
 }
diff --git a/trytond/workflow/bg_BG.csv b/trytond/workflow/bg_BG.csv
deleted file mode 100644
index f6c334f..0000000
--- a/trytond/workflow/bg_BG.csv
+++ /dev/null
@@ -1,89 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,workflow,0,No workflow defined!,Не е зададен работен процес!,0
-error,workflow.instance,0,No workflow instance defined!,Не е зададен екземпляр на работен процес!,0
-field,"workflow,activities",0,Activities,Дейности,0
-field,"workflow,model",0,Resource Model,Модел на ресурс,0
-field,"workflow,name",0,Name,Име,0
-field,"workflow,on_create",0,On Create,При създаване,0
-field,"workflow,rec_name",0,Name,Име,0
-field,"workflow.activity,action",0,Action,Действие,0
-field,"workflow.activity,flow_start",0,Flow Start,Стартиране на процес,0
-field,"workflow.activity,flow_stop",0,Flow Stop,Спиране на процес,0
-field,"workflow.activity,in_transitions",0,Incoming transitions,Входящи преходи,0
-field,"workflow.activity,join_mode",0,Join Mode,Режим на свързаване,0
-field,"workflow.activity,kind",0,Kind,Вид,0
-field,"workflow.activity,name",0,Name,Име,0
-field,"workflow.activity,out_transitions",0,Outgoing transitions,Изходящи преходи,0
-field,"workflow.activity,rec_name",0,Name,Име,0
-field,"workflow.activity,signal_send",0,Signal (subflow.*),Сигнал (subflow.*),0
-field,"workflow.activity,split_mode",0,Split Mode,Режим на разделяне,0
-field,"workflow.activity,subflow",0,Subflow,Подпоток,0
-field,"workflow.activity,workflow",0,Workflow,Работен процес,0
-field,"workflow.instance,overflows",0,Overflow,Препълване,0
-field,"workflow.instance,rec_name",0,Name,Име,0
-field,"workflow.instance,res_id",0,Resource ID,ID на ресурс,0
-field,"workflow.instance,res_type",0,Resource Model,Модел на ресурс,0
-field,"workflow.instance,state",0,State,Състояние,0
-field,"workflow.instance,transitions",0,Transitions,Преходи,0
-field,"workflow.instance,uid",0,User ID,Потребителско ID,0
-field,"workflow.instance,workflow",0,Workflow,Работен процес,0
-field,"workflow.instance,workitems",0,Workitems,Задачи,0
-field,"workflow.transition,act_from",0,Source Activity,Източник на действие,0
-field,"workflow.transition,act_to",0,Destination Activity,Активност на местонахождение-цел,0
-field,"workflow.transition,condition",0,Condition,Условие,0
-field,"workflow.transition,group",0,Group Required,Групата е задължителна,0
-field,"workflow.transition,instances",0,Instances,Екземпляри,0
-field,"workflow.transition,rec_name",0,Name,Име,0
-field,"workflow.transition,signal",0,Signal (button Name),Сигнал (име на бутон),0
-field,"workflow.transition,trigger_expr_id",0,Trigger Expr ID,ID на израз на задействащ механизъм,0
-field,"workflow.transition,trigger_model",0,Trigger Type,Вид превключвател,0
-field,"workflow.transition-workflow.instance,inst_id",0,Instance,Екземпляр,0
-field,"workflow.transition-workflow.instance,rec_name",0,Name,Име,0
-field,"workflow.transition-workflow.instance,trans_id",0,Transition,Преход,0
-field,"workflow.trigger,instance",0,Destination Instance,Ексемплят на местонахождение-цел,0
-field,"workflow.trigger,model",0,Model,Модел,0
-field,"workflow.trigger,rec_name",0,Name,Име,0
-field,"workflow.trigger,res_id",0,Resource ID,ID на ресурс,0
-field,"workflow.trigger,workitem",0,Workitem,Задача,0
-field,"workflow.workitem,activity",0,Activity,Дейност,0
-field,"workflow.workitem,instance",0,Instance,Екземпляр,0
-field,"workflow.workitem,rec_name",0,Name,Име,0
-field,"workflow.workitem,state",0,State,Състояние,0
-field,"workflow.workitem,subflow",0,Subflow,Подпоток,0
-model,"ir.action,name",act_activity_form,Activities,Дейности,0
-model,"ir.action,name",act_instance_form,Instances,Екземпляри,0
-model,"ir.action,name",act_transition_form,Transitions,Преходи,0
-model,"ir.action,name",act_workflow_form,Workflows,Работни процеси,0
-model,"ir.action,name",act_workitem_form,Workitems,Задачи,0
-model,"ir.ui.menu,name",menu_activity_form,Activities,Дейности,0
-model,"ir.ui.menu,name",menu_instance_form,Instances,Екземпляри,0
-model,"ir.ui.menu,name",menu_transition_form,Transitions,Преходи,0
-model,"ir.ui.menu,name",menu_workflow,Workflow,Работен процес,0
-model,"ir.ui.menu,name",menu_workflow_form,Workflows,Работни процеси,0
-model,"ir.ui.menu,name",menu_workitem_form,Workitems,Задачи,0
-model,"workflow,name",0,Workflow,Работен процес,0
-model,"workflow.activity,name",0,Workflow activity,Дейности,0
-model,"workflow.instance,name",0,Workflow instance,Екземплят на работен процес,0
-model,"workflow.transition,name",0,Workflow transition,Преход на работен процес,0
-model,"workflow.transition-workflow.instance,name",0,Workflow Transition - Instance,Преход на работен процес - екземпляр,0
-model,"workflow.trigger,name",0,Workflow trigger,Задействане на работен процес,0
-model,"workflow.workitem,name",0,Workflow workitem,Задачи от работен процес,0
-selection,"workflow.activity,join_mode",0,And,и,0
-selection,"workflow.activity,join_mode",0,Xor,Xor,0
-selection,"workflow.activity,kind",0,Dummy,Фиктивен,0
-selection,"workflow.activity,kind",0,Function,Функция,0
-selection,"workflow.activity,kind",0,Stop All,Спиране на всички,0
-selection,"workflow.activity,kind",0,Subflow,Подпоток,0
-selection,"workflow.activity,split_mode",0,And,и,0
-selection,"workflow.activity,split_mode",0,Or,Или,0
-selection,"workflow.activity,split_mode",0,Xor,Xor,0
-view,workflow,0,Workflow,Работен процес,0
-view,workflow.activity,0,Activity,Дейност,0
-view,workflow.activity,0,Transition,Преход,0
-view,workflow.activity,0,Transitions,Преходи,0
-view,workflow.instance,0,Instance,Екземпляр,0
-view,workflow.instance,0,Instances,Екземпляри,0
-view,workflow.transition,0,Transition,Преход,0
-view,workflow.transition,0,Transitions,Преходи,0
-view,workflow.workitem,0,Workitem,Задача,0
-view,workflow.workitem,0,Workitems,Задачи,0
diff --git a/trytond/workflow/de_DE.csv b/trytond/workflow/de_DE.csv
deleted file mode 100644
index 4e0c406..0000000
--- a/trytond/workflow/de_DE.csv
+++ /dev/null
@@ -1,89 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,workflow,0,No workflow defined!,Kein Workflow definiert!,0
-error,workflow.instance,0,No workflow instance defined!,Keine Workflowinstanz definiert!,0
-field,"workflow,activities",0,Activities,Aktivitäten,0
-field,"workflow,model",0,Resource Model,Modell Ressource,0
-field,"workflow,name",0,Name,Name,0
-field,"workflow,on_create",0,On Create,Bei der Erstellung,0
-field,"workflow,rec_name",0,Name,Name,0
-field,"workflow.activity,action",0,Action,Aktion,0
-field,"workflow.activity,flow_start",0,Flow Start,Flow Start,0
-field,"workflow.activity,flow_stop",0,Flow Stop,Flow Stop,0
-field,"workflow.activity,in_transitions",0,Incoming transitions,Eingehende Übergänge,0
-field,"workflow.activity,join_mode",0,Join Mode,Verbindungsmodus,0
-field,"workflow.activity,kind",0,Kind,Art,0
-field,"workflow.activity,name",0,Name,Name,0
-field,"workflow.activity,out_transitions",0,Outgoing transitions,Ausgehende Übergänge,0
-field,"workflow.activity,rec_name",0,Name,Name,0
-field,"workflow.activity,signal_send",0,Signal (subflow.*),Signal (subflow.*),0
-field,"workflow.activity,split_mode",0,Split Mode,Geteilter Modus,0
-field,"workflow.activity,subflow",0,Subflow,Unterflow,0
-field,"workflow.activity,workflow",0,Workflow,Workflow,0
-field,"workflow.instance,overflows",0,Overflow,Ãœberlauf,0
-field,"workflow.instance,rec_name",0,Name,Name,0
-field,"workflow.instance,res_id",0,Resource ID,ID Ressource,0
-field,"workflow.instance,res_type",0,Resource Model,Modell Ressource,0
-field,"workflow.instance,state",0,State,Status,0
-field,"workflow.instance,transitions",0,Transitions,Übergänge,0
-field,"workflow.instance,uid",0,User ID,Benutzer ID,0
-field,"workflow.instance,workflow",0,Workflow,Workflow,0
-field,"workflow.instance,workitems",0,Workitems,Elemente,0
-field,"workflow.transition,act_from",0,Source Activity,Quelle der Aktivität,0
-field,"workflow.transition,act_to",0,Destination Activity,Bestimmung der Aktivität,0
-field,"workflow.transition,condition",0,Condition,Bedingung,0
-field,"workflow.transition,group",0,Group Required,Erforderliche Gruppe,0
-field,"workflow.transition,instances",0,Instances,Instanzen,0
-field,"workflow.transition,rec_name",0,Name,Name,0
-field,"workflow.transition,signal",0,Signal (button Name),Signal (Name des Knopfes),0
-field,"workflow.transition,trigger_expr_id",0,Trigger Expr ID,ID des Auslöseausdrucks,0
-field,"workflow.transition,trigger_model",0,Trigger Type,Typ Auslöser,0
-field,"workflow.transition-workflow.instance,inst_id",0,Instance,Instanz,0
-field,"workflow.transition-workflow.instance,rec_name",0,Name,Name,0
-field,"workflow.transition-workflow.instance,trans_id",0,Transition,Ãœbergang,0
-field,"workflow.trigger,instance",0,Destination Instance,Bestimmungsinstanz,0
-field,"workflow.trigger,model",0,Model,Modell,0
-field,"workflow.trigger,rec_name",0,Name,Name,0
-field,"workflow.trigger,res_id",0,Resource ID,ID Ressource,0
-field,"workflow.trigger,workitem",0,Workitem,Element,0
-field,"workflow.workitem,activity",0,Activity,Aktivität,0
-field,"workflow.workitem,instance",0,Instance,Instanz,0
-field,"workflow.workitem,rec_name",0,Name,Name,0
-field,"workflow.workitem,state",0,State,Status,0
-field,"workflow.workitem,subflow",0,Subflow,Unterflow,0
-model,"ir.action,name",act_activity_form,Activities,Aktivitäten,0
-model,"ir.action,name",act_instance_form,Instances,Instanzen,0
-model,"ir.action,name",act_transition_form,Transitions,Übergänge,0
-model,"ir.action,name",act_workflow_form,Workflows,Workflows,0
-model,"ir.action,name",act_workitem_form,Workitems,Elemente,0
-model,"ir.ui.menu,name",menu_activity_form,Activities,Aktivitäten,0
-model,"ir.ui.menu,name",menu_instance_form,Instances,Instanzen,0
-model,"ir.ui.menu,name",menu_transition_form,Transitions,Übergänge,0
-model,"ir.ui.menu,name",menu_workflow,Workflow,Workflow,0
-model,"ir.ui.menu,name",menu_workflow_form,Workflows,Workflows,0
-model,"ir.ui.menu,name",menu_workitem_form,Workitems,Elemente,0
-model,"workflow,name",0,Workflow,Workflow,0
-model,"workflow.activity,name",0,Workflow activity,Workflow Aktivität,0
-model,"workflow.instance,name",0,Workflow instance,Workflow Instanz,0
-model,"workflow.transition,name",0,Workflow transition,Workflow Ãœbergang,0
-model,"workflow.transition-workflow.instance,name",0,Workflow Transition - Instance,Workflow Ãœbergang - Instanz,0
-model,"workflow.trigger,name",0,Workflow trigger,Workflow Trigger,0
-model,"workflow.workitem,name",0,Workflow workitem,Workflow Element,0
-selection,"workflow.activity,join_mode",0,And,Und,0
-selection,"workflow.activity,join_mode",0,Xor,Oder (exklusiv),0
-selection,"workflow.activity,kind",0,Dummy,Dummy,0
-selection,"workflow.activity,kind",0,Function,Funktion,0
-selection,"workflow.activity,kind",0,Stop All,Alles anhalten,0
-selection,"workflow.activity,kind",0,Subflow,Unterflow,0
-selection,"workflow.activity,split_mode",0,And,Und,0
-selection,"workflow.activity,split_mode",0,Or,Oder,0
-selection,"workflow.activity,split_mode",0,Xor,Oder (exklusiv),0
-view,workflow,0,Workflow,Workflow,0
-view,workflow.activity,0,Activity,Aktivität,0
-view,workflow.activity,0,Transition,Ãœbergang,0
-view,workflow.activity,0,Transitions,Übergänge,0
-view,workflow.instance,0,Instance,Instanz,0
-view,workflow.instance,0,Instances,Instanzen,0
-view,workflow.transition,0,Transition,Ãœbergang,0
-view,workflow.transition,0,Transitions,Übergänge,0
-view,workflow.workitem,0,Workitem,Element,0
-view,workflow.workitem,0,Workitems,Elemente,0
diff --git a/trytond/workflow/es_CO.csv b/trytond/workflow/es_CO.csv
deleted file mode 100644
index a4a7852..0000000
--- a/trytond/workflow/es_CO.csv
+++ /dev/null
@@ -1,89 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,workflow,0,No workflow defined!,No ha definido un flujo de trabajo!,0
-error,workflow.instance,0,No workflow instance defined!,No ha definido la instancia de un flujo!,0
-field,"workflow,activities",0,Activities,Actividades,0
-field,"workflow.activity,action",0,Action,Acción,0
-field,"workflow.activity,flow_start",0,Flow Start,Comienzo de flujo,0
-field,"workflow.activity,flow_stop",0,Flow Stop,Fin de flujo,0
-field,"workflow.activity,in_transitions",0,Incoming transitions,Transiciones entrantes,0
-field,"workflow.activity,join_mode",0,Join Mode,Modo unión,0
-field,"workflow.activity,kind",0,Kind,Tipo,0
-field,"workflow.activity,name",0,Name,Nombre,0
-field,"workflow.activity,out_transitions",0,Outgoing transitions,Transiciones de Salida,0
-field,"workflow.activity,rec_name",0,Name,Nombre,0
-field,"workflow.activity,signal_send",0,Signal (subflow.*),Señal (subflujo.*),0
-field,"workflow.activity,split_mode",0,Split Mode,Modo dividido,0
-field,"workflow.activity,subflow",0,Subflow,Subflujo,0
-field,"workflow.activity,workflow",0,Workflow,Flujo de trabajo,0
-field,"workflow.instance,overflows",0,Overflow,Desbordamiento,0
-field,"workflow.instance,rec_name",0,Name,Nombre,0
-field,"workflow.instance,res_id",0,Resource ID,Identificador del Recurso,0
-field,"workflow.instance,res_type",0,Resource Model,Modelo del Recurso,0
-field,"workflow.instance,state",0,State,Estado,0
-field,"workflow.instance,transitions",0,,,0
-field,"workflow.instance,uid",0,User ID,Identificación del Usuario,0
-field,"workflow.instance,workflow",0,Workflow,Flujo de trabajo,0
-field,"workflow.instance,workitems",0,Workitems,Objetos de trabajo,0
-field,"workflow,model",0,Resource Model,Modelo del Recurso,0
-field,"workflow,name",0,Name,Nombre,0
-field,"workflow,on_create",0,On Create,Al Crear,0
-field,"workflow,rec_name",0,Name,Nombre,0
-field,"workflow.transition,act_from",0,Source Activity,Actividad Fuente,0
-field,"workflow.transition,act_to",0,Destination Activity,Actividad destino,0
-field,"workflow.transition,condition",0,Condition,Condición,0
-field,"workflow.transition,group",0,Group Required,Se requiere grupo,0
-field,"workflow.transition,instances",0,,,0
-field,"workflow.transition,rec_name",0,Name,Nombre,0
-field,"workflow.transition,signal",0,Signal (button Name),Señal (Nombre del botón),0
-field,"workflow.transition,trigger_expr_id",0,Trigger Expr ID,Identificador de la expresión de activación,0
-field,"workflow.transition,trigger_model",0,Trigger Type,Tipo de Activación,0
-field,"workflow.transition-workflow.instance,inst_id",0,Instance,Instancia,0
-field,"workflow.transition-workflow.instance,rec_name",0,Name,Nombre,0
-field,"workflow.transition-workflow.instance,trans_id",0,Transition,Transición,0
-field,"workflow.trigger,instance",0,Destination Instance,Instancia destino,0
-field,"workflow.trigger,model",0,Model,Modelo,0
-field,"workflow.trigger,rec_name",0,Name,Nombre,0
-field,"workflow.trigger,res_id",0,Resource ID,Identificador del Recurso,0
-field,"workflow.trigger,workitem",0,Workitem,Objeto de trabajo,0
-field,"workflow.workitem,activity",0,Activity,Actividad,0
-field,"workflow.workitem,instance",0,Instance,Instancia,0
-field,"workflow.workitem,rec_name",0,Name,Nombre,0
-field,"workflow.workitem,state",0,State,Estado,0
-field,"workflow.workitem,subflow",0,Subflow,Subflujo,0
-model,"ir.action,name",act_activity_form,Activities,Actividades,0
-model,"ir.action,name",act_instance_form,Instances,Instancias,0
-model,"ir.action,name",act_transition_form,Transitions,Transiciones,0
-model,"ir.action,name",act_workflow_form,Workflows,Flujos de trabajo,0
-model,"ir.action,name",act_workitem_form,Workitems,Objetos de trabajo,0
-model,"ir.ui.menu,name",menu_activity_form,Activities,Actividades,0
-model,"ir.ui.menu,name",menu_instance_form,Instances,Instancias,0
-model,"ir.ui.menu,name",menu_transition_form,Transitions,Transiciones,0
-model,"ir.ui.menu,name",menu_workflow,Workflow,Flujo de trabajo,0
-model,"ir.ui.menu,name",menu_workflow_form,Workflows,Flujos de trabajo,0
-model,"ir.ui.menu,name",menu_workitem_form,Workitems,Objetos de trabajo,0
-model,"workflow.activity,name",0,Workflow activity,Actividad de flujo de trabajo,0
-model,"workflow.instance,name",0,Workflow instance,Instancia de Flujo de trabajo,0
-model,"workflow,name",0,Workflow,Flujo de Trabajo,0
-model,"workflow.transition,name",0,Workflow transition,Transición de flujo de trabajo,0
-model,"workflow.transition-workflow.instance,name",0,Workflow Transition - Instance,Transición de flujo de trabajo - Instancia,0
-model,"workflow.trigger,name",0,Workflow trigger,Disparador de flujo de trabajo,0
-model,"workflow.workitem,name",0,Workflow workitem,elemento de flujo de trabajo,0
-selection,"workflow.activity,join_mode",0,And,Y,0
-selection,"workflow.activity,join_mode",0,Xor,Xor,0
-selection,"workflow.activity,kind",0,Dummy,Objeto ficticio,0
-selection,"workflow.activity,kind",0,Function,Función,0
-selection,"workflow.activity,kind",0,Stop All,Detener Todo,0
-selection,"workflow.activity,kind",0,Subflow,Subflujo,0
-selection,"workflow.activity,split_mode",0,And,Y,0
-selection,"workflow.activity,split_mode",0,Or,O,0
-selection,"workflow.activity,split_mode",0,Xor,Xor,0
-view,workflow,0,Workflow,Flujo de Trabajo,0
-view,workflow.activity,0,Activity,Actividad,0
-view,workflow.activity,0,Transition,Transición,0
-view,workflow.activity,0,Transitions,Transiciones,0
-view,workflow.instance,0,Instance,Instancia,0
-view,workflow.instance,0,Instances,Instancias,0
-view,workflow.transition,0,Transition,Transición,0
-view,workflow.transition,0,Transitions,Transiciones,0
-view,workflow.workitem,0,Workitem,Objeto de trabajo,0
-view,workflow.workitem,0,Workitems,Objetos de trabajo,0
diff --git a/trytond/workflow/es_ES.csv b/trytond/workflow/es_ES.csv
deleted file mode 100644
index e01b832..0000000
--- a/trytond/workflow/es_ES.csv
+++ /dev/null
@@ -1,89 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,workflow,0,No workflow defined!,No se ha definido ningún flujo de trabajo,0
-error,workflow.instance,0,No workflow instance defined!,No se ha definido ninguna instancia de flujo de trabajo,0
-field,"workflow,activities",0,Activities,Actividades,0
-field,"workflow.activity,action",0,Action,Acción,0
-field,"workflow.activity,flow_start",0,Flow Start,Inicio del flujo,0
-field,"workflow.activity,flow_stop",0,Flow Stop,Fin del flujo,0
-field,"workflow.activity,in_transitions",0,Incoming transitions,Transiciones entrantes,0
-field,"workflow.activity,join_mode",0,Join Mode,Modo unión,0
-field,"workflow.activity,kind",0,Kind,Tipo,0
-field,"workflow.activity,name",0,Name,Nombre,0
-field,"workflow.activity,out_transitions",0,Outgoing transitions,Transiciones de salida,0
-field,"workflow.activity,rec_name",0,Name,Nombre,0
-field,"workflow.activity,signal_send",0,Signal (subflow.*),Señal (subflujo.*),0
-field,"workflow.activity,split_mode",0,Split Mode,Modo dividido,0
-field,"workflow.activity,subflow",0,Subflow,Subflujo,0
-field,"workflow.activity,workflow",0,Workflow,Flujo de trabajo,0
-field,"workflow.instance,overflows",0,Overflow,Desbordamiento,0
-field,"workflow.instance,rec_name",0,Name,Nombre,0
-field,"workflow.instance,res_id",0,Resource ID,ID del recurso,0
-field,"workflow.instance,res_type",0,Resource Model,Modelo del recurso,0
-field,"workflow.instance,state",0,State,Estado,0
-field,"workflow.instance,transitions",0,,,0
-field,"workflow.instance,uid",0,User ID,ID del usuario,0
-field,"workflow.instance,workflow",0,Workflow,Flujo de trabajo,0
-field,"workflow.instance,workitems",0,Workitems,Elementos de trabajo,0
-field,"workflow,model",0,Resource Model,Modelo del recurso,0
-field,"workflow,name",0,Name,Nombre,0
-field,"workflow,on_create",0,On Create,Al ser creado,0
-field,"workflow,rec_name",0,Name,Nombre,0
-field,"workflow.transition,act_from",0,Source Activity,Actividad fuente,0
-field,"workflow.transition,act_to",0,Destination Activity,Actividad de destino,0
-field,"workflow.transition,condition",0,Condition,Condición,0
-field,"workflow.transition,group",0,Group Required,Se requiere un grupo,0
-field,"workflow.transition,instances",0,,,0
-field,"workflow.transition,rec_name",0,Name,Nombre,0
-field,"workflow.transition,signal",0,Signal (button Name),Señal (Nombre del botón),0
-field,"workflow.transition,trigger_expr_id",0,Trigger Expr ID,ID expr. del disparador,0
-field,"workflow.transition,trigger_model",0,Trigger Type,Tipo de disparador,0
-field,"workflow.transition-workflow.instance,inst_id",0,Instance,Instancia,0
-field,"workflow.transition-workflow.instance,rec_name",0,Name,Nombre,0
-field,"workflow.transition-workflow.instance,trans_id",0,Transition,Transición,0
-field,"workflow.trigger,instance",0,Destination Instance,Instancia de destino,0
-field,"workflow.trigger,model",0,Model,Modelo,0
-field,"workflow.trigger,rec_name",0,Name,Nombre,0
-field,"workflow.trigger,res_id",0,Resource ID,ID del recurso,0
-field,"workflow.trigger,workitem",0,Workitem,Elemento de trabajo,0
-field,"workflow.workitem,activity",0,Activity,Actividad,0
-field,"workflow.workitem,instance",0,Instance,Instancia,0
-field,"workflow.workitem,rec_name",0,Name,Nombre,0
-field,"workflow.workitem,state",0,State,Estado,0
-field,"workflow.workitem,subflow",0,Subflow,Subflujo,0
-model,"ir.action,name",act_activity_form,Activities,Actividades,0
-model,"ir.action,name",act_instance_form,Instances,Instancias,0
-model,"ir.action,name",act_transition_form,Transitions,Transiciones,0
-model,"ir.action,name",act_workflow_form,Workflows,Flujos de trabajo,0
-model,"ir.action,name",act_workitem_form,Workitems,Elementos de trabajo,0
-model,"ir.ui.menu,name",menu_activity_form,Activities,Actividades,0
-model,"ir.ui.menu,name",menu_instance_form,Instances,Instancias,0
-model,"ir.ui.menu,name",menu_transition_form,Transitions,Transiciones,0
-model,"ir.ui.menu,name",menu_workflow,Workflow,Flujo de trabajo,0
-model,"ir.ui.menu,name",menu_workflow_form,Workflows,Flujos de trabajo,0
-model,"ir.ui.menu,name",menu_workitem_form,Workitems,Elementos de trabajo,0
-model,"workflow.activity,name",0,Workflow activity,Actividad del flujo de trabajo,0
-model,"workflow.instance,name",0,Workflow instance,Instancia del flujo de trabajo,0
-model,"workflow,name",0,Workflow,Flujo de trabajo,0
-model,"workflow.transition,name",0,Workflow transition,Transición del flujo de trabajo,0
-model,"workflow.transition-workflow.instance,name",0,Workflow Transition - Instance,Transición del flujo de trabajo - Instancia,0
-model,"workflow.trigger,name",0,Workflow trigger,Disparador del flujo de trabajo,0
-model,"workflow.workitem,name",0,Workflow workitem,elemento del flujo de trabajo,0
-selection,"workflow.activity,join_mode",0,And,Y,0
-selection,"workflow.activity,join_mode",0,Xor,O exclusiva,0
-selection,"workflow.activity,kind",0,Dummy,Objeto ficticio,0
-selection,"workflow.activity,kind",0,Function,Función,0
-selection,"workflow.activity,kind",0,Stop All,Detener todo,0
-selection,"workflow.activity,kind",0,Subflow,Subflujo,0
-selection,"workflow.activity,split_mode",0,And,Y,0
-selection,"workflow.activity,split_mode",0,Or,O,0
-selection,"workflow.activity,split_mode",0,Xor,O exclusiva,0
-view,workflow,0,Workflow,Flujo de trabajo,0
-view,workflow.activity,0,Activity,Actividad,0
-view,workflow.activity,0,Transition,Transición,0
-view,workflow.activity,0,Transitions,Transiciones,0
-view,workflow.instance,0,Instance,Instancia,0
-view,workflow.instance,0,Instances,Instancias,0
-view,workflow.transition,0,Transition,Transición,0
-view,workflow.transition,0,Transitions,Transiciones,0
-view,workflow.workitem,0,Workitem,Elemento de trabajo,0
-view,workflow.workitem,0,Workitems,Elementos de trabajo,0
diff --git a/trytond/workflow/expr.py b/trytond/workflow/expr.py
deleted file mode 100644
index 268d1b0..0000000
--- a/trytond/workflow/expr.py
+++ /dev/null
@@ -1,80 +0,0 @@
-#This file is part of Tryton.  The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
-from trytond.pool import Pool
-from trytond.tools import safe_eval
-from trytond.transaction import Transaction
-
-
-class EnvCall(object):
-
-    def __init__(self, obj, method, obj_id):
-        self.obj = obj
-        self.method = method
-        self.obj_id = obj_id
-
-    def __call__(self, *args, **kargs):
-        return getattr(self.obj, self.method)(self.obj_id, *args, **kargs)
-
-
-class Env(dict):
-
-    def __init__(self, model, obj_id):
-        super(Env, self).__init__()
-        self.model = model
-        self.obj_id = obj_id
-        self.obj = Pool(Transaction().cursor.dbname).get(model)
-        self.browse = self.obj.browse(obj_id)
-        self.columns = self.obj._columns.keys() + \
-                self.obj._inherit_fields.keys()
-
-    def __getitem__(self, key):
-        if key == 'context':
-            return Transaction().context
-        elif key in self.columns:
-            res = self.browse[key]
-            return res
-        elif key in dir(self.obj):
-            return EnvCall(self.obj, key, self.obj_id)
-        else:
-            return super(Env, self).__getitem__(key)
-
-def eval_expr(model, obj_id, action):
-    res = False
-    env = Env(model, obj_id)
-    for line in action.split('\n'):
-        if line == 'True':
-            res = True
-        elif line =='False':
-            res = False
-        else:
-            res = safe_eval(line, env)
-    return res
-
-def execute(model, obj_id, activity):
-    '''
-    Execute
-
-    :param model: the model name
-    :param obj_id: the record id
-    :param activity: a BrowseRecord of workflow.activity
-    '''
-    return eval_expr(model, obj_id, activity.action)
-
-def check(model, obj_id, transition, signal):
-    '''
-    Check
-
-    :param model: the model name
-    :param obj_id: the record id
-    :param transition: a BrowseRecord of workflow.transition
-    '''
-    if transition.signal:
-        if signal != transition.signal:
-            return False
-
-    if transition.group and Transaction().user != 0:
-        user_obj = Pool(Transaction().cursor.dbname).get('res.user')
-        user_groups = user_obj.get_groups()
-        if transition.group.id not in user_groups:
-            return False
-    return eval_expr(model, obj_id, transition.condition)
diff --git a/trytond/workflow/fr_FR.csv b/trytond/workflow/fr_FR.csv
deleted file mode 100644
index 6e4dbea..0000000
--- a/trytond/workflow/fr_FR.csv
+++ /dev/null
@@ -1,89 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,workflow,0,No workflow defined!,Aucun workflow de défini !,0
-error,workflow.instance,0,No workflow instance defined!,Aucune instance de workflow de définie !,0
-field,"workflow,activities",0,Activities,Activités,0
-field,"workflow,model",0,Resource Model,Modèle de la ressource,0
-field,"workflow,name",0,Name,Nom,0
-field,"workflow,on_create",0,On Create,À la création,0
-field,"workflow,rec_name",0,Name,Nom,0
-field,"workflow.activity,action",0,Action,Action,0
-field,"workflow.activity,flow_start",0,Flow Start,Départ du flux,0
-field,"workflow.activity,flow_stop",0,Flow Stop,Arrêt du flux,0
-field,"workflow.activity,in_transitions",0,Incoming transitions,Transitions d'entrées,0
-field,"workflow.activity,join_mode",0,Join Mode,Mode de jonction,0
-field,"workflow.activity,kind",0,Kind,Type,0
-field,"workflow.activity,name",0,Name,Nom,0
-field,"workflow.activity,out_transitions",0,Outgoing transitions,Transitions de sortie,0
-field,"workflow.activity,rec_name",0,Name,Nom,0
-field,"workflow.activity,signal_send",0,Signal (subflow.*),Signal (subflow.*),0
-field,"workflow.activity,split_mode",0,Split Mode,Mode de division,0
-field,"workflow.activity,subflow",0,Subflow,Sous-flux,0
-field,"workflow.activity,workflow",0,Workflow,Workflow,0
-field,"workflow.instance,overflows",0,Overflow,Overflow,0
-field,"workflow.instance,rec_name",0,Name,Nom,0
-field,"workflow.instance,res_id",0,Resource ID,Identifiant de la ressource,0
-field,"workflow.instance,res_type",0,Resource Model,Modèle de la ressource,0
-field,"workflow.instance,state",0,State,État,0
-field,"workflow.instance,transitions",0,Transitions,Transitions,1
-field,"workflow.instance,uid",0,User ID,Identifiant de l'utilisateur,0
-field,"workflow.instance,workflow",0,Workflow,Workflow,0
-field,"workflow.instance,workitems",0,Workitems,Éléments,0
-field,"workflow.transition,act_from",0,Source Activity,Source de l'activité,0
-field,"workflow.transition,act_to",0,Destination Activity,Destination de l'activité,0
-field,"workflow.transition,condition",0,Condition,Condition,0
-field,"workflow.transition,group",0,Group Required,Groupe requis,0
-field,"workflow.transition,instances",0,Instances,Instances,1
-field,"workflow.transition,rec_name",0,Name,Nom,0
-field,"workflow.transition,signal",0,Signal (button Name),Signal (nom du bouton),0
-field,"workflow.transition,trigger_expr_id",0,Trigger Expr ID,Identifiant de l'expression de déclenchement,0
-field,"workflow.transition,trigger_model",0,Trigger Type,Type de déclenchement,0
-field,"workflow.transition-workflow.instance,inst_id",0,Instance,Instance,0
-field,"workflow.transition-workflow.instance,rec_name",0,Name,Nom,0
-field,"workflow.transition-workflow.instance,trans_id",0,Transition,Transition,0
-field,"workflow.trigger,instance",0,Destination Instance,Destination de l'instance,0
-field,"workflow.trigger,model",0,Model,Modèle,0
-field,"workflow.trigger,rec_name",0,Name,Nom,0
-field,"workflow.trigger,res_id",0,Resource ID,Identifiant de la ressource,0
-field,"workflow.trigger,workitem",0,Workitem,Élément,0
-field,"workflow.workitem,activity",0,Activity,Activité,0
-field,"workflow.workitem,instance",0,Instance,Instance,0
-field,"workflow.workitem,rec_name",0,Name,Nom,0
-field,"workflow.workitem,state",0,State,État,0
-field,"workflow.workitem,subflow",0,Subflow,Sous-flux,0
-model,"ir.action,name",act_activity_form,Activities,Activités,0
-model,"ir.action,name",act_instance_form,Instances,Instances,0
-model,"ir.action,name",act_transition_form,Transitions,Transitions,0
-model,"ir.action,name",act_workflow_form,Workflows,Workflows,0
-model,"ir.action,name",act_workitem_form,Workitems,Éléments,0
-model,"ir.ui.menu,name",menu_activity_form,Activities,Activités,0
-model,"ir.ui.menu,name",menu_instance_form,Instances,Instances,0
-model,"ir.ui.menu,name",menu_transition_form,Transitions,Transitions,0
-model,"ir.ui.menu,name",menu_workflow,Workflow,Workflow,0
-model,"ir.ui.menu,name",menu_workflow_form,Workflows,Workflows,0
-model,"ir.ui.menu,name",menu_workitem_form,Workitems,Éléments,0
-model,"workflow,name",0,Workflow,Workflow,0
-model,"workflow.activity,name",0,Workflow activity,Activité de workflow,0
-model,"workflow.instance,name",0,Workflow instance,Instance de workflow,0
-model,"workflow.transition,name",0,Workflow transition,Transition de workflow,0
-model,"workflow.transition-workflow.instance,name",0,Workflow Transition - Instance,Transition de workflow - Instance,0
-model,"workflow.trigger,name",0,Workflow trigger,Déclenchement de workflow,0
-model,"workflow.workitem,name",0,Workflow workitem,Workitem de workflow,0
-selection,"workflow.activity,join_mode",0,And,Et,0
-selection,"workflow.activity,join_mode",0,Xor,Ou exclusif,0
-selection,"workflow.activity,kind",0,Dummy,Fausse,0
-selection,"workflow.activity,kind",0,Function,Fonction,0
-selection,"workflow.activity,kind",0,Stop All,Arrêter tout,0
-selection,"workflow.activity,kind",0,Subflow,Sous-flux,0
-selection,"workflow.activity,split_mode",0,And,Et,0
-selection,"workflow.activity,split_mode",0,Or,Ou,0
-selection,"workflow.activity,split_mode",0,Xor,Ou exclusif,0
-view,workflow,0,Workflow,Workflow,0
-view,workflow.activity,0,Activity,Activité,0
-view,workflow.activity,0,Transition,Transition,0
-view,workflow.activity,0,Transitions,Transitions,0
-view,workflow.instance,0,Instance,Instance,0
-view,workflow.instance,0,Instances,Instances,0
-view,workflow.transition,0,Transition,Transition,0
-view,workflow.transition,0,Transitions,Transitions,0
-view,workflow.workitem,0,Workitem,Élément,0
-view,workflow.workitem,0,Workitems,Éléments,0
diff --git a/trytond/workflow/locale/bg_BG.po b/trytond/workflow/locale/bg_BG.po
new file mode 100644
index 0000000..8ab48c1
--- /dev/null
+++ b/trytond/workflow/locale/bg_BG.po
@@ -0,0 +1,340 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:workflow.instance:0"
+msgid "No workflow instance defined!"
+msgstr "Не е зададен екземпляр на работен процес!"
+
+msgctxt "error:workflow:0"
+msgid "No workflow defined!"
+msgstr "Не е зададен работен процес!"
+
+msgctxt "field:workflow,activities:0"
+msgid "Activities"
+msgstr "Дейности"
+
+msgctxt "field:workflow,model:0"
+msgid "Resource Model"
+msgstr "Модел на ресурс"
+
+msgctxt "field:workflow,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:workflow,on_create:0"
+msgid "On Create"
+msgstr "При създаване"
+
+msgctxt "field:workflow,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:workflow.activity,flow_start:0"
+msgid "Flow Start"
+msgstr "Стартиране на процес"
+
+msgctxt "field:workflow.activity,flow_stop:0"
+msgid "Flow Stop"
+msgstr "Спиране на процес"
+
+msgctxt "field:workflow.activity,in_transitions:0"
+msgid "Incoming transitions"
+msgstr "Входящи преходи"
+
+msgctxt "field:workflow.activity,join_mode:0"
+msgid "Join Mode"
+msgstr "Режим на свързаване"
+
+#, fuzzy
+msgctxt "field:workflow.activity,method:0"
+msgid "Method"
+msgstr "Метод"
+
+msgctxt "field:workflow.activity,name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:workflow.activity,out_transitions:0"
+msgid "Outgoing transitions"
+msgstr "Изходящи преходи"
+
+msgctxt "field:workflow.activity,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:workflow.activity,signal_send:0"
+msgid "Signal (subflow.*)"
+msgstr "Сигнал (subflow.*)"
+
+msgctxt "field:workflow.activity,split_mode:0"
+msgid "Split Mode"
+msgstr "Режим на разделяне"
+
+msgctxt "field:workflow.activity,stop_other:0"
+msgid "Stop Other"
+msgstr ""
+
+msgctxt "field:workflow.activity,subflow:0"
+msgid "Subflow"
+msgstr "Подпоток"
+
+msgctxt "field:workflow.activity,workflow:0"
+msgid "Workflow"
+msgstr "Работен процес"
+
+msgctxt "field:workflow.instance,overflows:0"
+msgid "Overflow"
+msgstr "Препълване"
+
+msgctxt "field:workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:workflow.instance,res_id:0"
+msgid "Resource ID"
+msgstr "ID на ресурс"
+
+msgctxt "field:workflow.instance,res_type:0"
+msgid "Resource Model"
+msgstr "Модел на ресурс"
+
+msgctxt "field:workflow.instance,state:0"
+msgid "State"
+msgstr "Състояние"
+
+msgctxt "field:workflow.instance,transitions:0"
+msgid "Transitions"
+msgstr "Преходи"
+
+msgctxt "field:workflow.instance,uid:0"
+msgid "User ID"
+msgstr "Потребителско ID"
+
+msgctxt "field:workflow.instance,workflow:0"
+msgid "Workflow"
+msgstr "Работен процес"
+
+msgctxt "field:workflow.instance,workitems:0"
+msgid "Workitems"
+msgstr "Задачи"
+
+msgctxt "field:workflow.transition,act_from:0"
+msgid "Source Activity"
+msgstr "Източник на действие"
+
+msgctxt "field:workflow.transition,act_to:0"
+msgid "Destination Activity"
+msgstr "Активност на местонахождение-цел"
+
+msgctxt "field:workflow.transition,condition:0"
+msgid "Condition"
+msgstr "Условие"
+
+msgctxt "field:workflow.transition,group:0"
+msgid "Group Required"
+msgstr "Групата е задължителна"
+
+msgctxt "field:workflow.transition,instances:0"
+msgid "Instances"
+msgstr "Екземпляри"
+
+msgctxt "field:workflow.transition,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:workflow.transition,signal:0"
+msgid "Signal (button Name)"
+msgstr "Сигнал (име на бутон)"
+
+msgctxt "field:workflow.transition,trigger_ids:0"
+msgid "Trigger Expr ID"
+msgstr ""
+
+msgctxt "field:workflow.transition,trigger_model:0"
+msgid "Trigger Type"
+msgstr "Вид превключвател"
+
+msgctxt "field:workflow.transition-workflow.instance,inst_id:0"
+msgid "Instance"
+msgstr "Екземпляр"
+
+msgctxt "field:workflow.transition-workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:workflow.transition-workflow.instance,trans_id:0"
+msgid "Transition"
+msgstr "Преход"
+
+msgctxt "field:workflow.trigger,instance:0"
+msgid "Destination Instance"
+msgstr "Ексемплят на местонахождение-цел"
+
+msgctxt "field:workflow.trigger,model:0"
+msgid "Model"
+msgstr "Модел"
+
+msgctxt "field:workflow.trigger,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:workflow.trigger,res_id:0"
+msgid "Resource ID"
+msgstr "ID на ресурс"
+
+msgctxt "field:workflow.trigger,workitem:0"
+msgid "Workitem"
+msgstr "Задача"
+
+msgctxt "field:workflow.workitem,activity:0"
+msgid "Activity"
+msgstr "Дейност"
+
+msgctxt "field:workflow.workitem,instance:0"
+msgid "Instance"
+msgstr "Екземпляр"
+
+msgctxt "field:workflow.workitem,rec_name:0"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:workflow.workitem,state:0"
+msgid "State"
+msgstr "Състояние"
+
+msgctxt "field:workflow.workitem,subflow:0"
+msgid "Subflow"
+msgstr "Подпоток"
+
+msgctxt "model:ir.action,name:act_activity_form"
+msgid "Activities"
+msgstr "Дейности"
+
+msgctxt "model:ir.action,name:act_instance_form"
+msgid "Instances"
+msgstr "Екземпляри"
+
+msgctxt "model:ir.action,name:act_transition_form"
+msgid "Transitions"
+msgstr "Преходи"
+
+msgctxt "model:ir.action,name:act_workflow_form"
+msgid "Workflows"
+msgstr "Работни процеси"
+
+msgctxt "model:ir.action,name:act_workitem_form"
+msgid "Workitems"
+msgstr "Задачи"
+
+msgctxt "model:ir.ui.menu,name:menu_activity_form"
+msgid "Activities"
+msgstr "Дейности"
+
+msgctxt "model:ir.ui.menu,name:menu_instance_form"
+msgid "Instances"
+msgstr "Екземпляри"
+
+msgctxt "model:ir.ui.menu,name:menu_transition_form"
+msgid "Transitions"
+msgstr "Преходи"
+
+msgctxt "model:ir.ui.menu,name:menu_workflow"
+msgid "Workflow"
+msgstr "Работен процес"
+
+msgctxt "model:ir.ui.menu,name:menu_workflow_form"
+msgid "Workflows"
+msgstr "Работни процеси"
+
+msgctxt "model:ir.ui.menu,name:menu_workitem_form"
+msgid "Workitems"
+msgstr "Задачи"
+
+msgctxt "model:workflow,name:0"
+msgid "Workflow"
+msgstr "Работен процес"
+
+msgctxt "model:workflow.activity,name:0"
+msgid "Workflow activity"
+msgstr "Дейности"
+
+msgctxt "model:workflow.instance,name:0"
+msgid "Workflow instance"
+msgstr "Екземплят на работен процес"
+
+msgctxt "model:workflow.transition,name:0"
+msgid "Workflow transition"
+msgstr "Преход на работен процес"
+
+msgctxt "model:workflow.transition-workflow.instance,name:0"
+msgid "Workflow Transition - Instance"
+msgstr "Преход на работен процес - екземпляр"
+
+msgctxt "model:workflow.trigger,name:0"
+msgid "Workflow trigger"
+msgstr "Задействане на работен процес"
+
+msgctxt "model:workflow.workitem,name:0"
+msgid "Workflow workitem"
+msgstr "Задачи от работен процес"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "And"
+msgstr "и"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "Xor"
+msgstr "Xor"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "And"
+msgstr "и"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Or"
+msgstr "Или"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Xor"
+msgstr "Xor"
+
+msgctxt "view:workflow.activity:0"
+msgid "Activity"
+msgstr "Дейност"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transition"
+msgstr "Преход"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transitions"
+msgstr "Преходи"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instance"
+msgstr "Екземпляр"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instances"
+msgstr "Екземпляри"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transition"
+msgstr "Преход"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transitions"
+msgstr "Преходи"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitem"
+msgstr "Задача"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitems"
+msgstr "Задачи"
+
+msgctxt "view:workflow:0"
+msgid "Workflow"
+msgstr "Работен процес"
diff --git a/trytond/workflow/locale/cs_CZ.po b/trytond/workflow/locale/cs_CZ.po
new file mode 100644
index 0000000..7598cf1
--- /dev/null
+++ b/trytond/workflow/locale/cs_CZ.po
@@ -0,0 +1,339 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:workflow.instance:0"
+msgid "No workflow instance defined!"
+msgstr ""
+
+msgctxt "error:workflow:0"
+msgid "No workflow defined!"
+msgstr ""
+
+msgctxt "field:workflow,activities:0"
+msgid "Activities"
+msgstr ""
+
+msgctxt "field:workflow,model:0"
+msgid "Resource Model"
+msgstr ""
+
+msgctxt "field:workflow,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:workflow,on_create:0"
+msgid "On Create"
+msgstr ""
+
+msgctxt "field:workflow,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:workflow.activity,flow_start:0"
+msgid "Flow Start"
+msgstr ""
+
+msgctxt "field:workflow.activity,flow_stop:0"
+msgid "Flow Stop"
+msgstr ""
+
+msgctxt "field:workflow.activity,in_transitions:0"
+msgid "Incoming transitions"
+msgstr ""
+
+msgctxt "field:workflow.activity,join_mode:0"
+msgid "Join Mode"
+msgstr ""
+
+msgctxt "field:workflow.activity,method:0"
+msgid "Method"
+msgstr ""
+
+msgctxt "field:workflow.activity,name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:workflow.activity,out_transitions:0"
+msgid "Outgoing transitions"
+msgstr ""
+
+msgctxt "field:workflow.activity,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:workflow.activity,signal_send:0"
+msgid "Signal (subflow.*)"
+msgstr ""
+
+msgctxt "field:workflow.activity,split_mode:0"
+msgid "Split Mode"
+msgstr ""
+
+msgctxt "field:workflow.activity,stop_other:0"
+msgid "Stop Other"
+msgstr ""
+
+msgctxt "field:workflow.activity,subflow:0"
+msgid "Subflow"
+msgstr ""
+
+msgctxt "field:workflow.activity,workflow:0"
+msgid "Workflow"
+msgstr ""
+
+msgctxt "field:workflow.instance,overflows:0"
+msgid "Overflow"
+msgstr ""
+
+msgctxt "field:workflow.instance,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:workflow.instance,res_id:0"
+msgid "Resource ID"
+msgstr ""
+
+msgctxt "field:workflow.instance,res_type:0"
+msgid "Resource Model"
+msgstr ""
+
+msgctxt "field:workflow.instance,state:0"
+msgid "State"
+msgstr ""
+
+msgctxt "field:workflow.instance,transitions:0"
+msgid "Transitions"
+msgstr ""
+
+msgctxt "field:workflow.instance,uid:0"
+msgid "User ID"
+msgstr ""
+
+msgctxt "field:workflow.instance,workflow:0"
+msgid "Workflow"
+msgstr ""
+
+msgctxt "field:workflow.instance,workitems:0"
+msgid "Workitems"
+msgstr ""
+
+msgctxt "field:workflow.transition,act_from:0"
+msgid "Source Activity"
+msgstr ""
+
+msgctxt "field:workflow.transition,act_to:0"
+msgid "Destination Activity"
+msgstr ""
+
+msgctxt "field:workflow.transition,condition:0"
+msgid "Condition"
+msgstr ""
+
+msgctxt "field:workflow.transition,group:0"
+msgid "Group Required"
+msgstr ""
+
+msgctxt "field:workflow.transition,instances:0"
+msgid "Instances"
+msgstr ""
+
+msgctxt "field:workflow.transition,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:workflow.transition,signal:0"
+msgid "Signal (button Name)"
+msgstr ""
+
+msgctxt "field:workflow.transition,trigger_ids:0"
+msgid "Trigger Expr ID"
+msgstr ""
+
+msgctxt "field:workflow.transition,trigger_model:0"
+msgid "Trigger Type"
+msgstr ""
+
+msgctxt "field:workflow.transition-workflow.instance,inst_id:0"
+msgid "Instance"
+msgstr ""
+
+msgctxt "field:workflow.transition-workflow.instance,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:workflow.transition-workflow.instance,trans_id:0"
+msgid "Transition"
+msgstr ""
+
+msgctxt "field:workflow.trigger,instance:0"
+msgid "Destination Instance"
+msgstr ""
+
+msgctxt "field:workflow.trigger,model:0"
+msgid "Model"
+msgstr ""
+
+msgctxt "field:workflow.trigger,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:workflow.trigger,res_id:0"
+msgid "Resource ID"
+msgstr ""
+
+msgctxt "field:workflow.trigger,workitem:0"
+msgid "Workitem"
+msgstr ""
+
+msgctxt "field:workflow.workitem,activity:0"
+msgid "Activity"
+msgstr ""
+
+msgctxt "field:workflow.workitem,instance:0"
+msgid "Instance"
+msgstr ""
+
+msgctxt "field:workflow.workitem,rec_name:0"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:workflow.workitem,state:0"
+msgid "State"
+msgstr ""
+
+msgctxt "field:workflow.workitem,subflow:0"
+msgid "Subflow"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_activity_form"
+msgid "Activities"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_instance_form"
+msgid "Instances"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_transition_form"
+msgid "Transitions"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_workflow_form"
+msgid "Workflows"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_workitem_form"
+msgid "Workitems"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_activity_form"
+msgid "Activities"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_instance_form"
+msgid "Instances"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_transition_form"
+msgid "Transitions"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_workflow"
+msgid "Workflow"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_workflow_form"
+msgid "Workflows"
+msgstr ""
+
+msgctxt "model:ir.ui.menu,name:menu_workitem_form"
+msgid "Workitems"
+msgstr ""
+
+msgctxt "model:workflow,name:0"
+msgid "Workflow"
+msgstr ""
+
+msgctxt "model:workflow.activity,name:0"
+msgid "Workflow activity"
+msgstr ""
+
+msgctxt "model:workflow.instance,name:0"
+msgid "Workflow instance"
+msgstr ""
+
+msgctxt "model:workflow.transition,name:0"
+msgid "Workflow transition"
+msgstr ""
+
+msgctxt "model:workflow.transition-workflow.instance,name:0"
+msgid "Workflow Transition - Instance"
+msgstr ""
+
+msgctxt "model:workflow.trigger,name:0"
+msgid "Workflow trigger"
+msgstr ""
+
+msgctxt "model:workflow.workitem,name:0"
+msgid "Workflow workitem"
+msgstr ""
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "And"
+msgstr ""
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "Xor"
+msgstr ""
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "And"
+msgstr ""
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Or"
+msgstr ""
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Xor"
+msgstr ""
+
+msgctxt "view:workflow.activity:0"
+msgid "Activity"
+msgstr ""
+
+msgctxt "view:workflow.activity:0"
+msgid "Transition"
+msgstr ""
+
+msgctxt "view:workflow.activity:0"
+msgid "Transitions"
+msgstr ""
+
+msgctxt "view:workflow.instance:0"
+msgid "Instance"
+msgstr ""
+
+msgctxt "view:workflow.instance:0"
+msgid "Instances"
+msgstr ""
+
+msgctxt "view:workflow.transition:0"
+msgid "Transition"
+msgstr ""
+
+msgctxt "view:workflow.transition:0"
+msgid "Transitions"
+msgstr ""
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitem"
+msgstr ""
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitems"
+msgstr ""
+
+msgctxt "view:workflow:0"
+msgid "Workflow"
+msgstr ""
diff --git a/trytond/workflow/locale/de_DE.po b/trytond/workflow/locale/de_DE.po
new file mode 100644
index 0000000..7f68ded
--- /dev/null
+++ b/trytond/workflow/locale/de_DE.po
@@ -0,0 +1,339 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:workflow.instance:0"
+msgid "No workflow instance defined!"
+msgstr "Keine Workflowinstanz definiert!"
+
+msgctxt "error:workflow:0"
+msgid "No workflow defined!"
+msgstr "Kein Workflow definiert!"
+
+msgctxt "field:workflow,activities:0"
+msgid "Activities"
+msgstr "Aktivitäten"
+
+msgctxt "field:workflow,model:0"
+msgid "Resource Model"
+msgstr "Modell Ressource"
+
+msgctxt "field:workflow,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow,on_create:0"
+msgid "On Create"
+msgstr "Bei der Erstellung"
+
+msgctxt "field:workflow,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.activity,flow_start:0"
+msgid "Flow Start"
+msgstr "Flow Start"
+
+msgctxt "field:workflow.activity,flow_stop:0"
+msgid "Flow Stop"
+msgstr "Flow Stop"
+
+msgctxt "field:workflow.activity,in_transitions:0"
+msgid "Incoming transitions"
+msgstr "Eingehende Übergänge"
+
+msgctxt "field:workflow.activity,join_mode:0"
+msgid "Join Mode"
+msgstr "Verbindungsmodus"
+
+msgctxt "field:workflow.activity,method:0"
+msgid "Method"
+msgstr "Methode"
+
+msgctxt "field:workflow.activity,name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.activity,out_transitions:0"
+msgid "Outgoing transitions"
+msgstr "Ausgehende Übergänge"
+
+msgctxt "field:workflow.activity,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.activity,signal_send:0"
+msgid "Signal (subflow.*)"
+msgstr "Signal (subflow.*)"
+
+msgctxt "field:workflow.activity,split_mode:0"
+msgid "Split Mode"
+msgstr "Geteilter Modus"
+
+msgctxt "field:workflow.activity,stop_other:0"
+msgid "Stop Other"
+msgstr "Andere stoppen"
+
+msgctxt "field:workflow.activity,subflow:0"
+msgid "Subflow"
+msgstr "Unterflow"
+
+msgctxt "field:workflow.activity,workflow:0"
+msgid "Workflow"
+msgstr "Workflow"
+
+msgctxt "field:workflow.instance,overflows:0"
+msgid "Overflow"
+msgstr "Ãœberlauf"
+
+msgctxt "field:workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.instance,res_id:0"
+msgid "Resource ID"
+msgstr "ID Ressource"
+
+msgctxt "field:workflow.instance,res_type:0"
+msgid "Resource Model"
+msgstr "Modell Ressource"
+
+msgctxt "field:workflow.instance,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:workflow.instance,transitions:0"
+msgid "Transitions"
+msgstr "Übergänge"
+
+msgctxt "field:workflow.instance,uid:0"
+msgid "User ID"
+msgstr "Benutzer ID"
+
+msgctxt "field:workflow.instance,workflow:0"
+msgid "Workflow"
+msgstr "Workflow"
+
+msgctxt "field:workflow.instance,workitems:0"
+msgid "Workitems"
+msgstr "Elemente"
+
+msgctxt "field:workflow.transition,act_from:0"
+msgid "Source Activity"
+msgstr "Quelle der Aktivität"
+
+msgctxt "field:workflow.transition,act_to:0"
+msgid "Destination Activity"
+msgstr "Bestimmung der Aktivität"
+
+msgctxt "field:workflow.transition,condition:0"
+msgid "Condition"
+msgstr "Bedingung"
+
+msgctxt "field:workflow.transition,group:0"
+msgid "Group Required"
+msgstr "Erforderliche Gruppe"
+
+msgctxt "field:workflow.transition,instances:0"
+msgid "Instances"
+msgstr "Instanzen"
+
+msgctxt "field:workflow.transition,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.transition,signal:0"
+msgid "Signal (button Name)"
+msgstr "Signal (Name des Knopfes)"
+
+msgctxt "field:workflow.transition,trigger_ids:0"
+msgid "Trigger Expr ID"
+msgstr "Trigger Ausdruck ID"
+
+msgctxt "field:workflow.transition,trigger_model:0"
+msgid "Trigger Type"
+msgstr "Typ Trigger"
+
+msgctxt "field:workflow.transition-workflow.instance,inst_id:0"
+msgid "Instance"
+msgstr "Instanz"
+
+msgctxt "field:workflow.transition-workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.transition-workflow.instance,trans_id:0"
+msgid "Transition"
+msgstr "Ãœbergang"
+
+msgctxt "field:workflow.trigger,instance:0"
+msgid "Destination Instance"
+msgstr "Bestimmungsinstanz"
+
+msgctxt "field:workflow.trigger,model:0"
+msgid "Model"
+msgstr "Modell"
+
+msgctxt "field:workflow.trigger,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.trigger,res_id:0"
+msgid "Resource ID"
+msgstr "ID Ressource"
+
+msgctxt "field:workflow.trigger,workitem:0"
+msgid "Workitem"
+msgstr "Element"
+
+msgctxt "field:workflow.workitem,activity:0"
+msgid "Activity"
+msgstr "Aktivität"
+
+msgctxt "field:workflow.workitem,instance:0"
+msgid "Instance"
+msgstr "Instanz"
+
+msgctxt "field:workflow.workitem,rec_name:0"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:workflow.workitem,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:workflow.workitem,subflow:0"
+msgid "Subflow"
+msgstr "Unterflow"
+
+msgctxt "model:ir.action,name:act_activity_form"
+msgid "Activities"
+msgstr "Aktivitäten"
+
+msgctxt "model:ir.action,name:act_instance_form"
+msgid "Instances"
+msgstr "Instanzen"
+
+msgctxt "model:ir.action,name:act_transition_form"
+msgid "Transitions"
+msgstr "Übergänge"
+
+msgctxt "model:ir.action,name:act_workflow_form"
+msgid "Workflows"
+msgstr "Workflows"
+
+msgctxt "model:ir.action,name:act_workitem_form"
+msgid "Workitems"
+msgstr "Elemente"
+
+msgctxt "model:ir.ui.menu,name:menu_activity_form"
+msgid "Activities"
+msgstr "Aktivitäten"
+
+msgctxt "model:ir.ui.menu,name:menu_instance_form"
+msgid "Instances"
+msgstr "Instanzen"
+
+msgctxt "model:ir.ui.menu,name:menu_transition_form"
+msgid "Transitions"
+msgstr "Übergänge"
+
+msgctxt "model:ir.ui.menu,name:menu_workflow"
+msgid "Workflow"
+msgstr "Workflow"
+
+msgctxt "model:ir.ui.menu,name:menu_workflow_form"
+msgid "Workflows"
+msgstr "Workflows"
+
+msgctxt "model:ir.ui.menu,name:menu_workitem_form"
+msgid "Workitems"
+msgstr "Elemente"
+
+msgctxt "model:workflow,name:0"
+msgid "Workflow"
+msgstr "Workflow"
+
+msgctxt "model:workflow.activity,name:0"
+msgid "Workflow activity"
+msgstr "Workflow Aktivität"
+
+msgctxt "model:workflow.instance,name:0"
+msgid "Workflow instance"
+msgstr "Workflow Instanz"
+
+msgctxt "model:workflow.transition,name:0"
+msgid "Workflow transition"
+msgstr "Workflow Ãœbergang"
+
+msgctxt "model:workflow.transition-workflow.instance,name:0"
+msgid "Workflow Transition - Instance"
+msgstr "Workflow Ãœbergang - Instanz"
+
+msgctxt "model:workflow.trigger,name:0"
+msgid "Workflow trigger"
+msgstr "Workflow Trigger"
+
+msgctxt "model:workflow.workitem,name:0"
+msgid "Workflow workitem"
+msgstr "Workflow Element"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "And"
+msgstr "Und"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "Xor"
+msgstr "Oder (exklusiv)"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "And"
+msgstr "Und"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Or"
+msgstr "Oder"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Xor"
+msgstr "Oder (exklusiv)"
+
+msgctxt "view:workflow.activity:0"
+msgid "Activity"
+msgstr "Aktivität"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transition"
+msgstr "Ãœbergang"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transitions"
+msgstr "Übergänge"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instance"
+msgstr "Instanz"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instances"
+msgstr "Instanzen"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transition"
+msgstr "Ãœbergang"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transitions"
+msgstr "Übergänge"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitem"
+msgstr "Element"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitems"
+msgstr "Elemente"
+
+msgctxt "view:workflow:0"
+msgid "Workflow"
+msgstr "Workflow"
diff --git a/trytond/workflow/locale/es_CO.po b/trytond/workflow/locale/es_CO.po
new file mode 100644
index 0000000..f3d9bf6
--- /dev/null
+++ b/trytond/workflow/locale/es_CO.po
@@ -0,0 +1,342 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:workflow.instance:0"
+msgid "No workflow instance defined!"
+msgstr "No ha definido la instancia de un flujo!"
+
+msgctxt "error:workflow:0"
+msgid "No workflow defined!"
+msgstr "No ha definido un flujo de trabajo!"
+
+msgctxt "field:workflow,activities:0"
+msgid "Activities"
+msgstr "Actividades"
+
+msgctxt "field:workflow,model:0"
+msgid "Resource Model"
+msgstr "Modelo del Recurso"
+
+msgctxt "field:workflow,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow,on_create:0"
+msgid "On Create"
+msgstr "Al Crear"
+
+msgctxt "field:workflow,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.activity,flow_start:0"
+msgid "Flow Start"
+msgstr "Comienzo de flujo"
+
+msgctxt "field:workflow.activity,flow_stop:0"
+msgid "Flow Stop"
+msgstr "Fin de flujo"
+
+msgctxt "field:workflow.activity,in_transitions:0"
+msgid "Incoming transitions"
+msgstr "Transiciones entrantes"
+
+msgctxt "field:workflow.activity,join_mode:0"
+msgid "Join Mode"
+msgstr "Modo unión"
+
+#, fuzzy
+msgctxt "field:workflow.activity,method:0"
+msgid "Method"
+msgstr "Método"
+
+msgctxt "field:workflow.activity,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.activity,out_transitions:0"
+msgid "Outgoing transitions"
+msgstr "Transiciones de Salida"
+
+msgctxt "field:workflow.activity,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.activity,signal_send:0"
+msgid "Signal (subflow.*)"
+msgstr "Señal (subflujo.*)"
+
+msgctxt "field:workflow.activity,split_mode:0"
+msgid "Split Mode"
+msgstr "Modo dividido"
+
+msgctxt "field:workflow.activity,stop_other:0"
+msgid "Stop Other"
+msgstr ""
+
+msgctxt "field:workflow.activity,subflow:0"
+msgid "Subflow"
+msgstr "Subflujo"
+
+msgctxt "field:workflow.activity,workflow:0"
+msgid "Workflow"
+msgstr "Flujo de trabajo"
+
+msgctxt "field:workflow.instance,overflows:0"
+msgid "Overflow"
+msgstr "Desbordamiento"
+
+msgctxt "field:workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.instance,res_id:0"
+msgid "Resource ID"
+msgstr "Identificador del Recurso"
+
+msgctxt "field:workflow.instance,res_type:0"
+msgid "Resource Model"
+msgstr "Modelo del Recurso"
+
+msgctxt "field:workflow.instance,state:0"
+msgid "State"
+msgstr "Estado"
+
+#, fuzzy
+msgctxt "field:workflow.instance,transitions:0"
+msgid "Transitions"
+msgstr "Transiciones"
+
+msgctxt "field:workflow.instance,uid:0"
+msgid "User ID"
+msgstr "Identificación del Usuario"
+
+msgctxt "field:workflow.instance,workflow:0"
+msgid "Workflow"
+msgstr "Flujo de trabajo"
+
+msgctxt "field:workflow.instance,workitems:0"
+msgid "Workitems"
+msgstr "Objetos de trabajo"
+
+msgctxt "field:workflow.transition,act_from:0"
+msgid "Source Activity"
+msgstr "Actividad Fuente"
+
+msgctxt "field:workflow.transition,act_to:0"
+msgid "Destination Activity"
+msgstr "Actividad destino"
+
+msgctxt "field:workflow.transition,condition:0"
+msgid "Condition"
+msgstr "Condición"
+
+msgctxt "field:workflow.transition,group:0"
+msgid "Group Required"
+msgstr "Se requiere grupo"
+
+#, fuzzy
+msgctxt "field:workflow.transition,instances:0"
+msgid "Instances"
+msgstr "Instancias"
+
+msgctxt "field:workflow.transition,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.transition,signal:0"
+msgid "Signal (button Name)"
+msgstr "Señal (Nombre del botón)"
+
+msgctxt "field:workflow.transition,trigger_ids:0"
+msgid "Trigger Expr ID"
+msgstr ""
+
+msgctxt "field:workflow.transition,trigger_model:0"
+msgid "Trigger Type"
+msgstr "Tipo de Activación"
+
+msgctxt "field:workflow.transition-workflow.instance,inst_id:0"
+msgid "Instance"
+msgstr "Instancia"
+
+msgctxt "field:workflow.transition-workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.transition-workflow.instance,trans_id:0"
+msgid "Transition"
+msgstr "Transición"
+
+msgctxt "field:workflow.trigger,instance:0"
+msgid "Destination Instance"
+msgstr "Instancia destino"
+
+msgctxt "field:workflow.trigger,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:workflow.trigger,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.trigger,res_id:0"
+msgid "Resource ID"
+msgstr "Identificador del Recurso"
+
+msgctxt "field:workflow.trigger,workitem:0"
+msgid "Workitem"
+msgstr "Objeto de trabajo"
+
+msgctxt "field:workflow.workitem,activity:0"
+msgid "Activity"
+msgstr "Actividad"
+
+msgctxt "field:workflow.workitem,instance:0"
+msgid "Instance"
+msgstr "Instancia"
+
+msgctxt "field:workflow.workitem,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.workitem,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:workflow.workitem,subflow:0"
+msgid "Subflow"
+msgstr "Subflujo"
+
+msgctxt "model:ir.action,name:act_activity_form"
+msgid "Activities"
+msgstr "Actividades"
+
+msgctxt "model:ir.action,name:act_instance_form"
+msgid "Instances"
+msgstr "Instancias"
+
+msgctxt "model:ir.action,name:act_transition_form"
+msgid "Transitions"
+msgstr "Transiciones"
+
+msgctxt "model:ir.action,name:act_workflow_form"
+msgid "Workflows"
+msgstr "Flujos de trabajo"
+
+msgctxt "model:ir.action,name:act_workitem_form"
+msgid "Workitems"
+msgstr "Objetos de trabajo"
+
+msgctxt "model:ir.ui.menu,name:menu_activity_form"
+msgid "Activities"
+msgstr "Actividades"
+
+msgctxt "model:ir.ui.menu,name:menu_instance_form"
+msgid "Instances"
+msgstr "Instancias"
+
+msgctxt "model:ir.ui.menu,name:menu_transition_form"
+msgid "Transitions"
+msgstr "Transiciones"
+
+msgctxt "model:ir.ui.menu,name:menu_workflow"
+msgid "Workflow"
+msgstr "Flujo de trabajo"
+
+msgctxt "model:ir.ui.menu,name:menu_workflow_form"
+msgid "Workflows"
+msgstr "Flujos de trabajo"
+
+msgctxt "model:ir.ui.menu,name:menu_workitem_form"
+msgid "Workitems"
+msgstr "Objetos de trabajo"
+
+msgctxt "model:workflow,name:0"
+msgid "Workflow"
+msgstr "Flujo de Trabajo"
+
+msgctxt "model:workflow.activity,name:0"
+msgid "Workflow activity"
+msgstr "Actividad de flujo de trabajo"
+
+msgctxt "model:workflow.instance,name:0"
+msgid "Workflow instance"
+msgstr "Instancia de Flujo de trabajo"
+
+msgctxt "model:workflow.transition,name:0"
+msgid "Workflow transition"
+msgstr "Transición de flujo de trabajo"
+
+msgctxt "model:workflow.transition-workflow.instance,name:0"
+msgid "Workflow Transition - Instance"
+msgstr "Transición de flujo de trabajo - Instancia"
+
+msgctxt "model:workflow.trigger,name:0"
+msgid "Workflow trigger"
+msgstr "Disparador de flujo de trabajo"
+
+msgctxt "model:workflow.workitem,name:0"
+msgid "Workflow workitem"
+msgstr "elemento de flujo de trabajo"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "And"
+msgstr "Y"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "Xor"
+msgstr "Xor"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "And"
+msgstr "Y"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Or"
+msgstr "O"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Xor"
+msgstr "Xor"
+
+msgctxt "view:workflow.activity:0"
+msgid "Activity"
+msgstr "Actividad"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transition"
+msgstr "Transición"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transitions"
+msgstr "Transiciones"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instance"
+msgstr "Instancia"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instances"
+msgstr "Instancias"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transition"
+msgstr "Transición"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transitions"
+msgstr "Transiciones"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitem"
+msgstr "Objeto de trabajo"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitems"
+msgstr "Objetos de trabajo"
+
+msgctxt "view:workflow:0"
+msgid "Workflow"
+msgstr "Flujo de Trabajo"
diff --git a/trytond/workflow/locale/es_ES.po b/trytond/workflow/locale/es_ES.po
new file mode 100644
index 0000000..784360d
--- /dev/null
+++ b/trytond/workflow/locale/es_ES.po
@@ -0,0 +1,342 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:workflow.instance:0"
+msgid "No workflow instance defined!"
+msgstr "No se ha definido ninguna instancia de flujo de trabajo"
+
+msgctxt "error:workflow:0"
+msgid "No workflow defined!"
+msgstr "No se ha definido ningún flujo de trabajo"
+
+msgctxt "field:workflow,activities:0"
+msgid "Activities"
+msgstr "Actividades"
+
+msgctxt "field:workflow,model:0"
+msgid "Resource Model"
+msgstr "Modelo del recurso"
+
+msgctxt "field:workflow,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow,on_create:0"
+msgid "On Create"
+msgstr "Al ser creado"
+
+msgctxt "field:workflow,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.activity,flow_start:0"
+msgid "Flow Start"
+msgstr "Inicio del flujo"
+
+msgctxt "field:workflow.activity,flow_stop:0"
+msgid "Flow Stop"
+msgstr "Fin del flujo"
+
+msgctxt "field:workflow.activity,in_transitions:0"
+msgid "Incoming transitions"
+msgstr "Transiciones entrantes"
+
+msgctxt "field:workflow.activity,join_mode:0"
+msgid "Join Mode"
+msgstr "Modo unión"
+
+#, fuzzy
+msgctxt "field:workflow.activity,method:0"
+msgid "Method"
+msgstr "Método"
+
+msgctxt "field:workflow.activity,name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.activity,out_transitions:0"
+msgid "Outgoing transitions"
+msgstr "Transiciones de salida"
+
+msgctxt "field:workflow.activity,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.activity,signal_send:0"
+msgid "Signal (subflow.*)"
+msgstr "Señal (subflujo.*)"
+
+msgctxt "field:workflow.activity,split_mode:0"
+msgid "Split Mode"
+msgstr "Modo dividido"
+
+msgctxt "field:workflow.activity,stop_other:0"
+msgid "Stop Other"
+msgstr ""
+
+msgctxt "field:workflow.activity,subflow:0"
+msgid "Subflow"
+msgstr "Subflujo"
+
+msgctxt "field:workflow.activity,workflow:0"
+msgid "Workflow"
+msgstr "Flujo de trabajo"
+
+msgctxt "field:workflow.instance,overflows:0"
+msgid "Overflow"
+msgstr "Desbordamiento"
+
+msgctxt "field:workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.instance,res_id:0"
+msgid "Resource ID"
+msgstr "ID del recurso"
+
+msgctxt "field:workflow.instance,res_type:0"
+msgid "Resource Model"
+msgstr "Modelo del recurso"
+
+msgctxt "field:workflow.instance,state:0"
+msgid "State"
+msgstr "Estado"
+
+#, fuzzy
+msgctxt "field:workflow.instance,transitions:0"
+msgid "Transitions"
+msgstr "Transiciones"
+
+msgctxt "field:workflow.instance,uid:0"
+msgid "User ID"
+msgstr "ID del usuario"
+
+msgctxt "field:workflow.instance,workflow:0"
+msgid "Workflow"
+msgstr "Flujo de trabajo"
+
+msgctxt "field:workflow.instance,workitems:0"
+msgid "Workitems"
+msgstr "Elementos de trabajo"
+
+msgctxt "field:workflow.transition,act_from:0"
+msgid "Source Activity"
+msgstr "Actividad fuente"
+
+msgctxt "field:workflow.transition,act_to:0"
+msgid "Destination Activity"
+msgstr "Actividad de destino"
+
+msgctxt "field:workflow.transition,condition:0"
+msgid "Condition"
+msgstr "Condición"
+
+msgctxt "field:workflow.transition,group:0"
+msgid "Group Required"
+msgstr "Se requiere un grupo"
+
+#, fuzzy
+msgctxt "field:workflow.transition,instances:0"
+msgid "Instances"
+msgstr "Instancias"
+
+msgctxt "field:workflow.transition,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.transition,signal:0"
+msgid "Signal (button Name)"
+msgstr "Señal (Nombre del botón)"
+
+msgctxt "field:workflow.transition,trigger_ids:0"
+msgid "Trigger Expr ID"
+msgstr ""
+
+msgctxt "field:workflow.transition,trigger_model:0"
+msgid "Trigger Type"
+msgstr "Tipo de disparador"
+
+msgctxt "field:workflow.transition-workflow.instance,inst_id:0"
+msgid "Instance"
+msgstr "Instancia"
+
+msgctxt "field:workflow.transition-workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.transition-workflow.instance,trans_id:0"
+msgid "Transition"
+msgstr "Transición"
+
+msgctxt "field:workflow.trigger,instance:0"
+msgid "Destination Instance"
+msgstr "Instancia de destino"
+
+msgctxt "field:workflow.trigger,model:0"
+msgid "Model"
+msgstr "Modelo"
+
+msgctxt "field:workflow.trigger,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.trigger,res_id:0"
+msgid "Resource ID"
+msgstr "ID del recurso"
+
+msgctxt "field:workflow.trigger,workitem:0"
+msgid "Workitem"
+msgstr "Elemento de trabajo"
+
+msgctxt "field:workflow.workitem,activity:0"
+msgid "Activity"
+msgstr "Actividad"
+
+msgctxt "field:workflow.workitem,instance:0"
+msgid "Instance"
+msgstr "Instancia"
+
+msgctxt "field:workflow.workitem,rec_name:0"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:workflow.workitem,state:0"
+msgid "State"
+msgstr "Estado"
+
+msgctxt "field:workflow.workitem,subflow:0"
+msgid "Subflow"
+msgstr "Subflujo"
+
+msgctxt "model:ir.action,name:act_activity_form"
+msgid "Activities"
+msgstr "Actividades"
+
+msgctxt "model:ir.action,name:act_instance_form"
+msgid "Instances"
+msgstr "Instancias"
+
+msgctxt "model:ir.action,name:act_transition_form"
+msgid "Transitions"
+msgstr "Transiciones"
+
+msgctxt "model:ir.action,name:act_workflow_form"
+msgid "Workflows"
+msgstr "Flujos de trabajo"
+
+msgctxt "model:ir.action,name:act_workitem_form"
+msgid "Workitems"
+msgstr "Elementos de trabajo"
+
+msgctxt "model:ir.ui.menu,name:menu_activity_form"
+msgid "Activities"
+msgstr "Actividades"
+
+msgctxt "model:ir.ui.menu,name:menu_instance_form"
+msgid "Instances"
+msgstr "Instancias"
+
+msgctxt "model:ir.ui.menu,name:menu_transition_form"
+msgid "Transitions"
+msgstr "Transiciones"
+
+msgctxt "model:ir.ui.menu,name:menu_workflow"
+msgid "Workflow"
+msgstr "Flujo de trabajo"
+
+msgctxt "model:ir.ui.menu,name:menu_workflow_form"
+msgid "Workflows"
+msgstr "Flujos de trabajo"
+
+msgctxt "model:ir.ui.menu,name:menu_workitem_form"
+msgid "Workitems"
+msgstr "Elementos de trabajo"
+
+msgctxt "model:workflow,name:0"
+msgid "Workflow"
+msgstr "Flujo de trabajo"
+
+msgctxt "model:workflow.activity,name:0"
+msgid "Workflow activity"
+msgstr "Actividad del flujo de trabajo"
+
+msgctxt "model:workflow.instance,name:0"
+msgid "Workflow instance"
+msgstr "Instancia del flujo de trabajo"
+
+msgctxt "model:workflow.transition,name:0"
+msgid "Workflow transition"
+msgstr "Transición del flujo de trabajo"
+
+msgctxt "model:workflow.transition-workflow.instance,name:0"
+msgid "Workflow Transition - Instance"
+msgstr "Transición del flujo de trabajo - Instancia"
+
+msgctxt "model:workflow.trigger,name:0"
+msgid "Workflow trigger"
+msgstr "Disparador del flujo de trabajo"
+
+msgctxt "model:workflow.workitem,name:0"
+msgid "Workflow workitem"
+msgstr "elemento del flujo de trabajo"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "And"
+msgstr "Y"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "Xor"
+msgstr "O exclusiva"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "And"
+msgstr "Y"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Or"
+msgstr "O"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Xor"
+msgstr "O exclusiva"
+
+msgctxt "view:workflow.activity:0"
+msgid "Activity"
+msgstr "Actividad"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transition"
+msgstr "Transición"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transitions"
+msgstr "Transiciones"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instance"
+msgstr "Instancia"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instances"
+msgstr "Instancias"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transition"
+msgstr "Transición"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transitions"
+msgstr "Transiciones"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitem"
+msgstr "Elemento de trabajo"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitems"
+msgstr "Elementos de trabajo"
+
+msgctxt "view:workflow:0"
+msgid "Workflow"
+msgstr "Flujo de trabajo"
diff --git a/trytond/workflow/locale/fr_FR.po b/trytond/workflow/locale/fr_FR.po
new file mode 100644
index 0000000..c10c0cc
--- /dev/null
+++ b/trytond/workflow/locale/fr_FR.po
@@ -0,0 +1,339 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:workflow.instance:0"
+msgid "No workflow instance defined!"
+msgstr "Aucune instance de workflow de définie !"
+
+msgctxt "error:workflow:0"
+msgid "No workflow defined!"
+msgstr "Aucun workflow de défini !"
+
+msgctxt "field:workflow,activities:0"
+msgid "Activities"
+msgstr "Activités"
+
+msgctxt "field:workflow,model:0"
+msgid "Resource Model"
+msgstr "Modèle de la ressource"
+
+msgctxt "field:workflow,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:workflow,on_create:0"
+msgid "On Create"
+msgstr "À la création"
+
+msgctxt "field:workflow,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:workflow.activity,flow_start:0"
+msgid "Flow Start"
+msgstr "Départ du flux"
+
+msgctxt "field:workflow.activity,flow_stop:0"
+msgid "Flow Stop"
+msgstr "Arrêt du flux"
+
+msgctxt "field:workflow.activity,in_transitions:0"
+msgid "Incoming transitions"
+msgstr "Transitions d'entrées"
+
+msgctxt "field:workflow.activity,join_mode:0"
+msgid "Join Mode"
+msgstr "Mode de jonction"
+
+msgctxt "field:workflow.activity,method:0"
+msgid "Method"
+msgstr "Méthode"
+
+msgctxt "field:workflow.activity,name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:workflow.activity,out_transitions:0"
+msgid "Outgoing transitions"
+msgstr "Transitions de sortie"
+
+msgctxt "field:workflow.activity,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:workflow.activity,signal_send:0"
+msgid "Signal (subflow.*)"
+msgstr "Signal (subflow.*)"
+
+msgctxt "field:workflow.activity,split_mode:0"
+msgid "Split Mode"
+msgstr "Mode de division"
+
+msgctxt "field:workflow.activity,stop_other:0"
+msgid "Stop Other"
+msgstr "Arrête les autres"
+
+msgctxt "field:workflow.activity,subflow:0"
+msgid "Subflow"
+msgstr "Sous-flux"
+
+msgctxt "field:workflow.activity,workflow:0"
+msgid "Workflow"
+msgstr "Workflow"
+
+msgctxt "field:workflow.instance,overflows:0"
+msgid "Overflow"
+msgstr "Overflow"
+
+msgctxt "field:workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:workflow.instance,res_id:0"
+msgid "Resource ID"
+msgstr "Identifiant de la ressource"
+
+msgctxt "field:workflow.instance,res_type:0"
+msgid "Resource Model"
+msgstr "Modèle de la ressource"
+
+msgctxt "field:workflow.instance,state:0"
+msgid "State"
+msgstr "État"
+
+msgctxt "field:workflow.instance,transitions:0"
+msgid "Transitions"
+msgstr "Transitions"
+
+msgctxt "field:workflow.instance,uid:0"
+msgid "User ID"
+msgstr "Identifiant de l'utilisateur"
+
+msgctxt "field:workflow.instance,workflow:0"
+msgid "Workflow"
+msgstr "Workflow"
+
+msgctxt "field:workflow.instance,workitems:0"
+msgid "Workitems"
+msgstr "Éléments"
+
+msgctxt "field:workflow.transition,act_from:0"
+msgid "Source Activity"
+msgstr "Source de l'activité"
+
+msgctxt "field:workflow.transition,act_to:0"
+msgid "Destination Activity"
+msgstr "Destination de l'activité"
+
+msgctxt "field:workflow.transition,condition:0"
+msgid "Condition"
+msgstr "Condition"
+
+msgctxt "field:workflow.transition,group:0"
+msgid "Group Required"
+msgstr "Groupe requis"
+
+msgctxt "field:workflow.transition,instances:0"
+msgid "Instances"
+msgstr "Instances"
+
+msgctxt "field:workflow.transition,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:workflow.transition,signal:0"
+msgid "Signal (button Name)"
+msgstr "Signal (nom du bouton)"
+
+msgctxt "field:workflow.transition,trigger_ids:0"
+msgid "Trigger Expr ID"
+msgstr "Expression des ID de déclenchements"
+
+msgctxt "field:workflow.transition,trigger_model:0"
+msgid "Trigger Type"
+msgstr "Type de déclenchement"
+
+msgctxt "field:workflow.transition-workflow.instance,inst_id:0"
+msgid "Instance"
+msgstr "Instance"
+
+msgctxt "field:workflow.transition-workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:workflow.transition-workflow.instance,trans_id:0"
+msgid "Transition"
+msgstr "Transition"
+
+msgctxt "field:workflow.trigger,instance:0"
+msgid "Destination Instance"
+msgstr "Destination de l'instance"
+
+msgctxt "field:workflow.trigger,model:0"
+msgid "Model"
+msgstr "Modèle"
+
+msgctxt "field:workflow.trigger,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:workflow.trigger,res_id:0"
+msgid "Resource ID"
+msgstr "Identifiant de la ressource"
+
+msgctxt "field:workflow.trigger,workitem:0"
+msgid "Workitem"
+msgstr "Élément"
+
+msgctxt "field:workflow.workitem,activity:0"
+msgid "Activity"
+msgstr "Activité"
+
+msgctxt "field:workflow.workitem,instance:0"
+msgid "Instance"
+msgstr "Instance"
+
+msgctxt "field:workflow.workitem,rec_name:0"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:workflow.workitem,state:0"
+msgid "State"
+msgstr "État"
+
+msgctxt "field:workflow.workitem,subflow:0"
+msgid "Subflow"
+msgstr "Sous-flux"
+
+msgctxt "model:ir.action,name:act_activity_form"
+msgid "Activities"
+msgstr "Activités"
+
+msgctxt "model:ir.action,name:act_instance_form"
+msgid "Instances"
+msgstr "Instances"
+
+msgctxt "model:ir.action,name:act_transition_form"
+msgid "Transitions"
+msgstr "Transitions"
+
+msgctxt "model:ir.action,name:act_workflow_form"
+msgid "Workflows"
+msgstr "Workflows"
+
+msgctxt "model:ir.action,name:act_workitem_form"
+msgid "Workitems"
+msgstr "Éléments"
+
+msgctxt "model:ir.ui.menu,name:menu_activity_form"
+msgid "Activities"
+msgstr "Activités"
+
+msgctxt "model:ir.ui.menu,name:menu_instance_form"
+msgid "Instances"
+msgstr "Instances"
+
+msgctxt "model:ir.ui.menu,name:menu_transition_form"
+msgid "Transitions"
+msgstr "Transitions"
+
+msgctxt "model:ir.ui.menu,name:menu_workflow"
+msgid "Workflow"
+msgstr "Workflow"
+
+msgctxt "model:ir.ui.menu,name:menu_workflow_form"
+msgid "Workflows"
+msgstr "Workflows"
+
+msgctxt "model:ir.ui.menu,name:menu_workitem_form"
+msgid "Workitems"
+msgstr "Éléments"
+
+msgctxt "model:workflow,name:0"
+msgid "Workflow"
+msgstr "Workflow"
+
+msgctxt "model:workflow.activity,name:0"
+msgid "Workflow activity"
+msgstr "Activité de workflow"
+
+msgctxt "model:workflow.instance,name:0"
+msgid "Workflow instance"
+msgstr "Instance de workflow"
+
+msgctxt "model:workflow.transition,name:0"
+msgid "Workflow transition"
+msgstr "Transition de workflow"
+
+msgctxt "model:workflow.transition-workflow.instance,name:0"
+msgid "Workflow Transition - Instance"
+msgstr "Transition de workflow - Instance"
+
+msgctxt "model:workflow.trigger,name:0"
+msgid "Workflow trigger"
+msgstr "Déclenchement de workflow"
+
+msgctxt "model:workflow.workitem,name:0"
+msgid "Workflow workitem"
+msgstr "Workitem de workflow"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "And"
+msgstr "Et"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "Xor"
+msgstr "Ou exclusif"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "And"
+msgstr "Et"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Or"
+msgstr "Ou"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Xor"
+msgstr "Ou exclusif"
+
+msgctxt "view:workflow.activity:0"
+msgid "Activity"
+msgstr "Activité"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transition"
+msgstr "Transition"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transitions"
+msgstr "Transitions"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instance"
+msgstr "Instance"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instances"
+msgstr "Instances"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transition"
+msgstr "Transition"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transitions"
+msgstr "Transitions"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitem"
+msgstr "Élément"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitems"
+msgstr "Éléments"
+
+msgctxt "view:workflow:0"
+msgid "Workflow"
+msgstr "Workflow"
diff --git a/trytond/workflow/locale/nl_NL.po b/trytond/workflow/locale/nl_NL.po
new file mode 100644
index 0000000..8ccfd44
--- /dev/null
+++ b/trytond/workflow/locale/nl_NL.po
@@ -0,0 +1,340 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:workflow.instance:0"
+msgid "No workflow instance defined!"
+msgstr "Geen werkgang verzoek gedefinieert!"
+
+msgctxt "error:workflow:0"
+msgid "No workflow defined!"
+msgstr "Geen werkgang gedefinieert!"
+
+msgctxt "field:workflow,activities:0"
+msgid "Activities"
+msgstr "Activiteiten"
+
+msgctxt "field:workflow,model:0"
+msgid "Resource Model"
+msgstr "Middel model"
+
+msgctxt "field:workflow,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:workflow,on_create:0"
+msgid "On Create"
+msgstr "Bij maken"
+
+msgctxt "field:workflow,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:workflow.activity,flow_start:0"
+msgid "Flow Start"
+msgstr "Werkgang start"
+
+msgctxt "field:workflow.activity,flow_stop:0"
+msgid "Flow Stop"
+msgstr "Werkgang stop"
+
+msgctxt "field:workflow.activity,in_transitions:0"
+msgid "Incoming transitions"
+msgstr "Inkomende overgangen"
+
+msgctxt "field:workflow.activity,join_mode:0"
+msgid "Join Mode"
+msgstr "Verzoeken"
+
+#, fuzzy
+msgctxt "field:workflow.activity,method:0"
+msgid "Method"
+msgstr "Methode"
+
+msgctxt "field:workflow.activity,name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:workflow.activity,out_transitions:0"
+msgid "Outgoing transitions"
+msgstr "Uitgaande overgangen"
+
+msgctxt "field:workflow.activity,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:workflow.activity,signal_send:0"
+msgid "Signal (subflow.*)"
+msgstr "Signaal (subwerkgang.*)"
+
+msgctxt "field:workflow.activity,split_mode:0"
+msgid "Split Mode"
+msgstr "Deel modus"
+
+msgctxt "field:workflow.activity,stop_other:0"
+msgid "Stop Other"
+msgstr ""
+
+msgctxt "field:workflow.activity,subflow:0"
+msgid "Subflow"
+msgstr "Subwerkgang"
+
+msgctxt "field:workflow.activity,workflow:0"
+msgid "Workflow"
+msgstr "Werkgang"
+
+msgctxt "field:workflow.instance,overflows:0"
+msgid "Overflow"
+msgstr "Overloop"
+
+msgctxt "field:workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:workflow.instance,res_id:0"
+msgid "Resource ID"
+msgstr "Middel ID"
+
+msgctxt "field:workflow.instance,res_type:0"
+msgid "Resource Model"
+msgstr "Middel model"
+
+msgctxt "field:workflow.instance,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:workflow.instance,transitions:0"
+msgid "Transitions"
+msgstr "Overgangen"
+
+msgctxt "field:workflow.instance,uid:0"
+msgid "User ID"
+msgstr "Gebruiker ID"
+
+msgctxt "field:workflow.instance,workflow:0"
+msgid "Workflow"
+msgstr "Werkgang"
+
+msgctxt "field:workflow.instance,workitems:0"
+msgid "Workitems"
+msgstr "Handelingen"
+
+msgctxt "field:workflow.transition,act_from:0"
+msgid "Source Activity"
+msgstr "Bron activiteit"
+
+msgctxt "field:workflow.transition,act_to:0"
+msgid "Destination Activity"
+msgstr "Bestemming activiteit"
+
+msgctxt "field:workflow.transition,condition:0"
+msgid "Condition"
+msgstr "Voorwaarde"
+
+msgctxt "field:workflow.transition,group:0"
+msgid "Group Required"
+msgstr "Benodigde groep"
+
+msgctxt "field:workflow.transition,instances:0"
+msgid "Instances"
+msgstr "Verzoeken"
+
+msgctxt "field:workflow.transition,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:workflow.transition,signal:0"
+msgid "Signal (button Name)"
+msgstr "Signaal (knop naam)"
+
+msgctxt "field:workflow.transition,trigger_ids:0"
+msgid "Trigger Expr ID"
+msgstr ""
+
+msgctxt "field:workflow.transition,trigger_model:0"
+msgid "Trigger Type"
+msgstr "Starter type"
+
+msgctxt "field:workflow.transition-workflow.instance,inst_id:0"
+msgid "Instance"
+msgstr "Verzoek"
+
+msgctxt "field:workflow.transition-workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:workflow.transition-workflow.instance,trans_id:0"
+msgid "Transition"
+msgstr "Overgang"
+
+msgctxt "field:workflow.trigger,instance:0"
+msgid "Destination Instance"
+msgstr "Bestemming verzoek"
+
+msgctxt "field:workflow.trigger,model:0"
+msgid "Model"
+msgstr "Model"
+
+msgctxt "field:workflow.trigger,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:workflow.trigger,res_id:0"
+msgid "Resource ID"
+msgstr "Middel ID"
+
+msgctxt "field:workflow.trigger,workitem:0"
+msgid "Workitem"
+msgstr "Handeling"
+
+msgctxt "field:workflow.workitem,activity:0"
+msgid "Activity"
+msgstr "Activiteit"
+
+msgctxt "field:workflow.workitem,instance:0"
+msgid "Instance"
+msgstr "Verzoek"
+
+msgctxt "field:workflow.workitem,rec_name:0"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:workflow.workitem,state:0"
+msgid "State"
+msgstr "Status"
+
+msgctxt "field:workflow.workitem,subflow:0"
+msgid "Subflow"
+msgstr "Subwerkgang"
+
+msgctxt "model:ir.action,name:act_activity_form"
+msgid "Activities"
+msgstr "Activiteiten"
+
+msgctxt "model:ir.action,name:act_instance_form"
+msgid "Instances"
+msgstr "Verzoeken"
+
+msgctxt "model:ir.action,name:act_transition_form"
+msgid "Transitions"
+msgstr "Overgangen"
+
+msgctxt "model:ir.action,name:act_workflow_form"
+msgid "Workflows"
+msgstr "Werkgangen"
+
+msgctxt "model:ir.action,name:act_workitem_form"
+msgid "Workitems"
+msgstr "Handelingen"
+
+msgctxt "model:ir.ui.menu,name:menu_activity_form"
+msgid "Activities"
+msgstr "Activiteiten"
+
+msgctxt "model:ir.ui.menu,name:menu_instance_form"
+msgid "Instances"
+msgstr "Verzoeken"
+
+msgctxt "model:ir.ui.menu,name:menu_transition_form"
+msgid "Transitions"
+msgstr "Overgangen"
+
+msgctxt "model:ir.ui.menu,name:menu_workflow"
+msgid "Workflow"
+msgstr "Werkgang"
+
+msgctxt "model:ir.ui.menu,name:menu_workflow_form"
+msgid "Workflows"
+msgstr "Werkgangen"
+
+msgctxt "model:ir.ui.menu,name:menu_workitem_form"
+msgid "Workitems"
+msgstr "Handelingen"
+
+msgctxt "model:workflow,name:0"
+msgid "Workflow"
+msgstr "Werkgang"
+
+msgctxt "model:workflow.activity,name:0"
+msgid "Workflow activity"
+msgstr "Werkgang activiteit"
+
+msgctxt "model:workflow.instance,name:0"
+msgid "Workflow instance"
+msgstr "Werkgang verzoek"
+
+msgctxt "model:workflow.transition,name:0"
+msgid "Workflow transition"
+msgstr "Werkgang overgang"
+
+msgctxt "model:workflow.transition-workflow.instance,name:0"
+msgid "Workflow Transition - Instance"
+msgstr "Werkgang overgan - Verzoek"
+
+msgctxt "model:workflow.trigger,name:0"
+msgid "Workflow trigger"
+msgstr "Werkgang starter"
+
+msgctxt "model:workflow.workitem,name:0"
+msgid "Workflow workitem"
+msgstr "Werkgang handeling"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "And"
+msgstr "En"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "Xor"
+msgstr "Exof"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "And"
+msgstr "En"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Or"
+msgstr "Of"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Xor"
+msgstr "Exof"
+
+msgctxt "view:workflow.activity:0"
+msgid "Activity"
+msgstr "Activiteit"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transition"
+msgstr "Overgang"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transitions"
+msgstr "Overgangen"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instance"
+msgstr "Verzoek"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instances"
+msgstr "Verzoeken"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transition"
+msgstr "Overgang"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transitions"
+msgstr "Overgangen"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitem"
+msgstr "Handeling"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitems"
+msgstr "Handelingen"
+
+msgctxt "view:workflow:0"
+msgid "Workflow"
+msgstr "Werkgang"
diff --git a/trytond/workflow/locale/ru_RU.po b/trytond/workflow/locale/ru_RU.po
new file mode 100644
index 0000000..97cf5ef
--- /dev/null
+++ b/trytond/workflow/locale/ru_RU.po
@@ -0,0 +1,339 @@
+# 
+msgid ""
+msgstr "Content-Type: text/plain; charset=utf-8\n"
+
+msgctxt "error:workflow.instance:0"
+msgid "No workflow instance defined!"
+msgstr "Не определен экземпляр процесса!"
+
+msgctxt "error:workflow:0"
+msgid "No workflow defined!"
+msgstr "Не определен процесс!"
+
+msgctxt "field:workflow,activities:0"
+msgid "Activities"
+msgstr "Активность"
+
+msgctxt "field:workflow,model:0"
+msgid "Resource Model"
+msgstr "Ресурс Шаблон"
+
+msgctxt "field:workflow,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:workflow,on_create:0"
+msgid "On Create"
+msgstr "Создать"
+
+msgctxt "field:workflow,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:workflow.activity,flow_start:0"
+msgid "Flow Start"
+msgstr "Запустить поток "
+
+msgctxt "field:workflow.activity,flow_stop:0"
+msgid "Flow Stop"
+msgstr "Остановить поток"
+
+msgctxt "field:workflow.activity,in_transitions:0"
+msgid "Incoming transitions"
+msgstr "Входящая операция"
+
+msgctxt "field:workflow.activity,join_mode:0"
+msgid "Join Mode"
+msgstr "Режим объединения"
+
+msgctxt "field:workflow.activity,method:0"
+msgid "Method"
+msgstr ""
+
+msgctxt "field:workflow.activity,name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:workflow.activity,out_transitions:0"
+msgid "Outgoing transitions"
+msgstr "Исходящая операция"
+
+msgctxt "field:workflow.activity,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:workflow.activity,signal_send:0"
+msgid "Signal (subflow.*)"
+msgstr "Сигнал (подпроцесс.*)"
+
+msgctxt "field:workflow.activity,split_mode:0"
+msgid "Split Mode"
+msgstr "Режим совмещения"
+
+msgctxt "field:workflow.activity,stop_other:0"
+msgid "Stop Other"
+msgstr ""
+
+msgctxt "field:workflow.activity,subflow:0"
+msgid "Subflow"
+msgstr "Подпоток"
+
+msgctxt "field:workflow.activity,workflow:0"
+msgid "Workflow"
+msgstr "Ход работ (WorkFlow)"
+
+msgctxt "field:workflow.instance,overflows:0"
+msgid "Overflow"
+msgstr "Переполнение"
+
+msgctxt "field:workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:workflow.instance,res_id:0"
+msgid "Resource ID"
+msgstr "Ресурс ID"
+
+msgctxt "field:workflow.instance,res_type:0"
+msgid "Resource Model"
+msgstr "Ресурс Шаблон"
+
+msgctxt "field:workflow.instance,state:0"
+msgid "State"
+msgstr "Состояние"
+
+msgctxt "field:workflow.instance,transitions:0"
+msgid "Transitions"
+msgstr "Резервный счет"
+
+msgctxt "field:workflow.instance,uid:0"
+msgid "User ID"
+msgstr "Пользователь ID"
+
+msgctxt "field:workflow.instance,workflow:0"
+msgid "Workflow"
+msgstr "Ход работ (WorkFlow)"
+
+msgctxt "field:workflow.instance,workitems:0"
+msgid "Workitems"
+msgstr "Рабочий пункт"
+
+msgctxt "field:workflow.transition,act_from:0"
+msgid "Source Activity"
+msgstr "Источник действия"
+
+msgctxt "field:workflow.transition,act_to:0"
+msgid "Destination Activity"
+msgstr "Получатель действия"
+
+msgctxt "field:workflow.transition,condition:0"
+msgid "Condition"
+msgstr "Состояние"
+
+msgctxt "field:workflow.transition,group:0"
+msgid "Group Required"
+msgstr "Требуется группа"
+
+msgctxt "field:workflow.transition,instances:0"
+msgid "Instances"
+msgstr "Резервный счет"
+
+msgctxt "field:workflow.transition,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:workflow.transition,signal:0"
+msgid "Signal (button Name)"
+msgstr "Сигнал (наименование кнопки)"
+
+msgctxt "field:workflow.transition,trigger_ids:0"
+msgid "Trigger Expr ID"
+msgstr ""
+
+msgctxt "field:workflow.transition,trigger_model:0"
+msgid "Trigger Type"
+msgstr "Тип триггера"
+
+msgctxt "field:workflow.transition-workflow.instance,inst_id:0"
+msgid "Instance"
+msgstr "Экземпляр"
+
+msgctxt "field:workflow.transition-workflow.instance,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:workflow.transition-workflow.instance,trans_id:0"
+msgid "Transition"
+msgstr "Переход"
+
+msgctxt "field:workflow.trigger,instance:0"
+msgid "Destination Instance"
+msgstr "Экземпляр получатель"
+
+msgctxt "field:workflow.trigger,model:0"
+msgid "Model"
+msgstr "Шаблон"
+
+msgctxt "field:workflow.trigger,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:workflow.trigger,res_id:0"
+msgid "Resource ID"
+msgstr "Ресурс ID"
+
+msgctxt "field:workflow.trigger,workitem:0"
+msgid "Workitem"
+msgstr "Пункт процесса"
+
+msgctxt "field:workflow.workitem,activity:0"
+msgid "Activity"
+msgstr "Деятельность"
+
+msgctxt "field:workflow.workitem,instance:0"
+msgid "Instance"
+msgstr "Экземпляр"
+
+msgctxt "field:workflow.workitem,rec_name:0"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:workflow.workitem,state:0"
+msgid "State"
+msgstr "Состояние"
+
+msgctxt "field:workflow.workitem,subflow:0"
+msgid "Subflow"
+msgstr "Подпоток"
+
+msgctxt "model:ir.action,name:act_activity_form"
+msgid "Activities"
+msgstr "Активность"
+
+msgctxt "model:ir.action,name:act_instance_form"
+msgid "Instances"
+msgstr "Экземпляры"
+
+msgctxt "model:ir.action,name:act_transition_form"
+msgid "Transitions"
+msgstr "Переходы"
+
+msgctxt "model:ir.action,name:act_workflow_form"
+msgid "Workflows"
+msgstr "Процессы"
+
+msgctxt "model:ir.action,name:act_workitem_form"
+msgid "Workitems"
+msgstr "Пункт процесса"
+
+msgctxt "model:ir.ui.menu,name:menu_activity_form"
+msgid "Activities"
+msgstr "Активность"
+
+msgctxt "model:ir.ui.menu,name:menu_instance_form"
+msgid "Instances"
+msgstr "Экземпляры"
+
+msgctxt "model:ir.ui.menu,name:menu_transition_form"
+msgid "Transitions"
+msgstr "Переходы"
+
+msgctxt "model:ir.ui.menu,name:menu_workflow"
+msgid "Workflow"
+msgstr "Ход работ (WorkFlow)"
+
+msgctxt "model:ir.ui.menu,name:menu_workflow_form"
+msgid "Workflows"
+msgstr "Процессы"
+
+msgctxt "model:ir.ui.menu,name:menu_workitem_form"
+msgid "Workitems"
+msgstr "Рабочий пункт"
+
+msgctxt "model:workflow,name:0"
+msgid "Workflow"
+msgstr "Ход работ (WorkFlow)"
+
+msgctxt "model:workflow.activity,name:0"
+msgid "Workflow activity"
+msgstr "Активный процесс"
+
+msgctxt "model:workflow.instance,name:0"
+msgid "Workflow instance"
+msgstr "Экземпляр процесса "
+
+msgctxt "model:workflow.transition,name:0"
+msgid "Workflow transition"
+msgstr "Переход процесса"
+
+msgctxt "model:workflow.transition-workflow.instance,name:0"
+msgid "Workflow Transition - Instance"
+msgstr "Процесс переход - экземпляр"
+
+msgctxt "model:workflow.trigger,name:0"
+msgid "Workflow trigger"
+msgstr "Триггер процесса"
+
+msgctxt "model:workflow.workitem,name:0"
+msgid "Workflow workitem"
+msgstr "Точка процесса"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "And"
+msgstr "и"
+
+msgctxt "selection:workflow.activity,join_mode:0"
+msgid "Xor"
+msgstr ""
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "And"
+msgstr "и"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Or"
+msgstr "или"
+
+msgctxt "selection:workflow.activity,split_mode:0"
+msgid "Xor"
+msgstr ""
+
+msgctxt "view:workflow.activity:0"
+msgid "Activity"
+msgstr "Деятельность"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transition"
+msgstr "Переход"
+
+msgctxt "view:workflow.activity:0"
+msgid "Transitions"
+msgstr "Переходы"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instance"
+msgstr "Экземпляр"
+
+msgctxt "view:workflow.instance:0"
+msgid "Instances"
+msgstr "Экземпляры"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transition"
+msgstr "Переход"
+
+msgctxt "view:workflow.transition:0"
+msgid "Transitions"
+msgstr "Переходы"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitem"
+msgstr "Пункт процесса"
+
+msgctxt "view:workflow.workitem:0"
+msgid "Workitems"
+msgstr "Пункты процесса"
+
+msgctxt "view:workflow:0"
+msgid "Workflow"
+msgstr "Ход работ (WorkFlow)"
diff --git a/trytond/workflow/nl_NL.csv b/trytond/workflow/nl_NL.csv
deleted file mode 100644
index b406d82..0000000
--- a/trytond/workflow/nl_NL.csv
+++ /dev/null
@@ -1,89 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,workflow,0,No workflow defined!,Geen werkgang gedefinieert!,0
-error,workflow.instance,0,No workflow instance defined!,Geen werkgang verzoek gedefinieert!,0
-field,"workflow,activities",0,Activities,Activiteiten,0
-field,"workflow,model",0,Resource Model,Middel model,0
-field,"workflow,name",0,Name,Naam,0
-field,"workflow,on_create",0,On Create,Bij maken,0
-field,"workflow,rec_name",0,Name,Naam,0
-field,"workflow.activity,action",0,Action,Actie,0
-field,"workflow.activity,flow_start",0,Flow Start,Werkgang start,0
-field,"workflow.activity,flow_stop",0,Flow Stop,Werkgang stop,0
-field,"workflow.activity,in_transitions",0,Incoming transitions,Inkomende overgangen,0
-field,"workflow.activity,join_mode",0,Join Mode,Verzoeken,0
-field,"workflow.activity,kind",0,Kind,Soort,0
-field,"workflow.activity,name",0,Name,Naam,0
-field,"workflow.activity,out_transitions",0,Outgoing transitions,Uitgaande overgangen,0
-field,"workflow.activity,rec_name",0,Name,Naam,0
-field,"workflow.activity,signal_send",0,Signal (subflow.*),Signaal (subwerkgang.*),0
-field,"workflow.activity,split_mode",0,Split Mode,Deel modus,0
-field,"workflow.activity,subflow",0,Subflow,Subwerkgang,0
-field,"workflow.activity,workflow",0,Workflow,Werkgang,0
-field,"workflow.instance,overflows",0,Overflow,Overloop,0
-field,"workflow.instance,rec_name",0,Name,Naam,0
-field,"workflow.instance,res_id",0,Resource ID,Middel ID,0
-field,"workflow.instance,res_type",0,Resource Model,Middel model,0
-field,"workflow.instance,state",0,State,Status,0
-field,"workflow.instance,transitions",0,Transitions,Overgangen,0
-field,"workflow.instance,uid",0,User ID,Gebruiker ID,0
-field,"workflow.instance,workflow",0,Workflow,Werkgang,0
-field,"workflow.instance,workitems",0,Workitems,Handelingen,0
-field,"workflow.transition,act_from",0,Source Activity,Bron activiteit,0
-field,"workflow.transition,act_to",0,Destination Activity,Bestemming activiteit,0
-field,"workflow.transition,condition",0,Condition,Voorwaarde,0
-field,"workflow.transition,group",0,Group Required,Benodigde groep,0
-field,"workflow.transition,instances",0,Instances,Verzoeken,0
-field,"workflow.transition,rec_name",0,Name,Naam,0
-field,"workflow.transition,signal",0,Signal (button Name),Signaal (knop naam),0
-field,"workflow.transition,trigger_expr_id",0,Trigger Expr ID,Starter uitdr ID,0
-field,"workflow.transition,trigger_model",0,Trigger Type,Starter type,0
-field,"workflow.transition-workflow.instance,inst_id",0,Instance,Verzoek,0
-field,"workflow.transition-workflow.instance,rec_name",0,Name,Naam,0
-field,"workflow.transition-workflow.instance,trans_id",0,Transition,Overgang,0
-field,"workflow.trigger,instance",0,Destination Instance,Bestemming verzoek,0
-field,"workflow.trigger,model",0,Model,Model,0
-field,"workflow.trigger,rec_name",0,Name,Naam,0
-field,"workflow.trigger,res_id",0,Resource ID,Middel ID,0
-field,"workflow.trigger,workitem",0,Workitem,Handeling,0
-field,"workflow.workitem,activity",0,Activity,Activiteit,0
-field,"workflow.workitem,instance",0,Instance,Verzoek,0
-field,"workflow.workitem,rec_name",0,Name,Naam,0
-field,"workflow.workitem,state",0,State,Status,0
-field,"workflow.workitem,subflow",0,Subflow,Subwerkgang,0
-model,"ir.action,name",act_activity_form,Activities,Activiteiten,0
-model,"ir.action,name",act_instance_form,Instances,Verzoeken,0
-model,"ir.action,name",act_transition_form,Transitions,Overgangen,0
-model,"ir.action,name",act_workflow_form,Workflows,Werkgangen,0
-model,"ir.action,name",act_workitem_form,Workitems,Handelingen,0
-model,"ir.ui.menu,name",menu_activity_form,Activities,Activiteiten,0
-model,"ir.ui.menu,name",menu_instance_form,Instances,Verzoeken,0
-model,"ir.ui.menu,name",menu_transition_form,Transitions,Overgangen,0
-model,"ir.ui.menu,name",menu_workflow,Workflow,Werkgang,0
-model,"ir.ui.menu,name",menu_workflow_form,Workflows,Werkgangen,0
-model,"ir.ui.menu,name",menu_workitem_form,Workitems,Handelingen,0
-model,"workflow,name",0,Workflow,Werkgang,0
-model,"workflow.activity,name",0,Workflow activity,Werkgang activiteit,0
-model,"workflow.instance,name",0,Workflow instance,Werkgang verzoek,0
-model,"workflow.transition,name",0,Workflow transition,Werkgang overgang,0
-model,"workflow.transition-workflow.instance,name",0,Workflow Transition - Instance,Werkgang overgan - Verzoek,0
-model,"workflow.trigger,name",0,Workflow trigger,Werkgang starter,0
-model,"workflow.workitem,name",0,Workflow workitem,Werkgang handeling,0
-selection,"workflow.activity,join_mode",0,And,En,0
-selection,"workflow.activity,join_mode",0,Xor,Exof,0
-selection,"workflow.activity,kind",0,Dummy,Loos,0
-selection,"workflow.activity,kind",0,Function,Functie,0
-selection,"workflow.activity,kind",0,Stop All,Alles stoppen,0
-selection,"workflow.activity,kind",0,Subflow,Subwerkgang,0
-selection,"workflow.activity,split_mode",0,And,En,0
-selection,"workflow.activity,split_mode",0,Or,Of,0
-selection,"workflow.activity,split_mode",0,Xor,Exof,0
-view,workflow,0,Workflow,Werkgang,0
-view,workflow.activity,0,Activity,Activiteit,0
-view,workflow.activity,0,Transition,Overgang,0
-view,workflow.activity,0,Transitions,Overgangen,0
-view,workflow.instance,0,Instance,Verzoek,0
-view,workflow.instance,0,Instances,Verzoeken,0
-view,workflow.transition,0,Transition,Overgang,0
-view,workflow.transition,0,Transitions,Overgangen,0
-view,workflow.workitem,0,Workitem,Handeling,0
-view,workflow.workitem,0,Workitems,Handelingen,0
diff --git a/trytond/workflow/ru_RU.csv b/trytond/workflow/ru_RU.csv
deleted file mode 100644
index 39dffa7..0000000
--- a/trytond/workflow/ru_RU.csv
+++ /dev/null
@@ -1,89 +0,0 @@
-type,name,res_id,src,value,fuzzy
-error,workflow,0,No workflow defined!,Не определен процесс!,0
-error,workflow.instance,0,No workflow instance defined!,Не определен экземпляр процесса!,0
-field,"workflow,activities",0,Activities,Активность,0
-field,"workflow.activity,action",0,Action,Действие,0
-field,"workflow.activity,flow_start",0,Flow Start,Запустить поток ,0
-field,"workflow.activity,flow_stop",0,Flow Stop,Остановить поток,0
-field,"workflow.activity,in_transitions",0,Incoming transitions,Входящая операция,0
-field,"workflow.activity,join_mode",0,Join Mode,Режим объединения,0
-field,"workflow.activity,kind",0,Kind,Тип,0
-field,"workflow.activity,name",0,Name,Наименование,0
-field,"workflow.activity,out_transitions",0,Outgoing transitions,Исходящая операция,0
-field,"workflow.activity,rec_name",0,Name,Наименование,0
-field,"workflow.activity,signal_send",0,Signal (subflow.*),Сигнал (подпроцесс.*),0
-field,"workflow.activity,split_mode",0,Split Mode,Режим совмещения,0
-field,"workflow.activity,subflow",0,Subflow,Подпоток,0
-field,"workflow.activity,workflow",0,Workflow,Ход работ (WorkFlow),0
-field,"workflow.instance,overflows",0,Overflow,Переполнение,0
-field,"workflow.instance,rec_name",0,Name,Наименование,0
-field,"workflow.instance,res_id",0,Resource ID,Ресурс ID,0
-field,"workflow.instance,res_type",0,Resource Model,Ресурс Шаблон,0
-field,"workflow.instance,state",0,State,Состояние,0
-field,"workflow.instance,transitions",0,Transitions,Резервный счет,0
-field,"workflow.instance,uid",0,User ID,Пользователь ID,0
-field,"workflow.instance,workflow",0,Workflow,Ход работ (WorkFlow),0
-field,"workflow.instance,workitems",0,Workitems,Рабочий пункт,0
-field,"workflow,model",0,Resource Model,Ресурс Шаблон,0
-field,"workflow,name",0,Name,Наименование,0
-field,"workflow,on_create",0,On Create,Создать,0
-field,"workflow,rec_name",0,Name,Наименование,0
-field,"workflow.transition,act_from",0,Source Activity,Источник действия,0
-field,"workflow.transition,act_to",0,Destination Activity,Получатель действия,0
-field,"workflow.transition,condition",0,Condition,Состояние,0
-field,"workflow.transition,group",0,Group Required,Требуется группа,0
-field,"workflow.transition,instances",0,Instances,Резервный счет,0
-field,"workflow.transition,rec_name",0,Name,Наименование,0
-field,"workflow.transition,signal",0,Signal (button Name),Сигнал (наименование кнопки),0
-field,"workflow.transition,trigger_expr_id",0,Trigger Expr ID,ИД триггера прерывания,0
-field,"workflow.transition,trigger_model",0,Trigger Type,Тип триггера,0
-field,"workflow.transition-workflow.instance,inst_id",0,Instance,Экземпляр,0
-field,"workflow.transition-workflow.instance,rec_name",0,Name,Наименование,0
-field,"workflow.transition-workflow.instance,trans_id",0,Transition,Переход,0
-field,"workflow.trigger,instance",0,Destination Instance,Экземпляр получатель,0
-field,"workflow.trigger,model",0,Model,Шаблон,0
-field,"workflow.trigger,rec_name",0,Name,Наименование,0
-field,"workflow.trigger,res_id",0,Resource ID,Ресурс ID,0
-field,"workflow.trigger,workitem",0,Workitem,Пункт процесса,0
-field,"workflow.workitem,activity",0,Activity,Деятельность,0
-field,"workflow.workitem,instance",0,Instance,Экземпляр,0
-field,"workflow.workitem,rec_name",0,Name,Наименование,0
-field,"workflow.workitem,state",0,State,Состояние,0
-field,"workflow.workitem,subflow",0,Subflow,Подпоток,0
-model,"ir.action,name",act_activity_form,Activities,Активность,0
-model,"ir.action,name",act_instance_form,Instances,Экземпляры,0
-model,"ir.action,name",act_transition_form,Transitions,Переходы,0
-model,"ir.action,name",act_workflow_form,Workflows,Процессы,0
-model,"ir.action,name",act_workitem_form,Workitems,Пункт процесса,0
-model,"ir.ui.menu,name",menu_activity_form,Activities,Активность,0
-model,"ir.ui.menu,name",menu_instance_form,Instances,Экземпляры,0
-model,"ir.ui.menu,name",menu_transition_form,Transitions,Переходы,0
-model,"ir.ui.menu,name",menu_workflow,Workflow,Ход работ (WorkFlow),0
-model,"ir.ui.menu,name",menu_workflow_form,Workflows,Процессы,0
-model,"ir.ui.menu,name",menu_workitem_form,Workitems,Рабочий пункт,0
-model,"workflow.activity,name",0,Workflow activity,Активный процесс,0
-model,"workflow.instance,name",0,Workflow instance,Экземпляр процесса ,0
-model,"workflow,name",0,Workflow,Ход работ (WorkFlow),0
-model,"workflow.transition,name",0,Workflow transition,Переход процесса,0
-model,"workflow.transition-workflow.instance,name",0,Workflow Transition - Instance,Процесс переход - экземпляр,0
-model,"workflow.trigger,name",0,Workflow trigger,Триггер процесса,0
-model,"workflow.workitem,name",0,Workflow workitem,Точка процесса,0
-selection,"workflow.activity,join_mode",0,And,и,0
-selection,"workflow.activity,join_mode",0,Xor,,0
-selection,"workflow.activity,kind",0,Dummy,Временный,0
-selection,"workflow.activity,kind",0,Function,Функция,0
-selection,"workflow.activity,kind",0,Stop All,Остановить все,0
-selection,"workflow.activity,kind",0,Subflow,Подпоток,0
-selection,"workflow.activity,split_mode",0,And,и,0
-selection,"workflow.activity,split_mode",0,Or,или,0
-selection,"workflow.activity,split_mode",0,Xor,,0
-view,workflow,0,Workflow,Ход работ (WorkFlow),0
-view,workflow.activity,0,Activity,Деятельность,0
-view,workflow.activity,0,Transition,Переход,0
-view,workflow.activity,0,Transitions,Переходы,0
-view,workflow.instance,0,Instance,Экземпляр,0
-view,workflow.instance,0,Instances,Экземпляры,0
-view,workflow.transition,0,Transition,Переход,0
-view,workflow.transition,0,Transitions,Переходы,0
-view,workflow.workitem,0,Workitem,Пункт процесса,0
-view,workflow.workitem,0,Workitems,Пункты процесса,0
diff --git a/trytond/workflow/workflow.py b/trytond/workflow/workflow.py
index c1075b9..8f39e57 100644
--- a/trytond/workflow/workflow.py
+++ b/trytond/workflow/workflow.py
@@ -1,15 +1,13 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-from __future__ import with_statement
 import os
-import expr
-import base64
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.report import Report
 from trytond.tools import exec_command_pipe
 from trytond.backend import TableHandler
-from trytond.pyson import Eval, Equal, Not
+from trytond.pyson import Eval, Bool
 from trytond.transaction import Transaction
+from trytond.pool import Pool
 
 
 class Workflow(ModelSQL, ModelView):
@@ -63,30 +61,27 @@ class WorkflowActivity(ModelSQL, ModelView):
        ('XOR', 'Xor'),
        ('AND', 'And'),
        ], 'Join Mode', required=True)
-    kind = fields.Selection([
-       ('dummy', 'Dummy'),
-       ('function', 'Function'),
-       ('subflow', 'Subflow'),
-       ('stopall', 'Stop All'),
-       ], 'Kind', required=True)
-    action = fields.Text('Action', states={
-        'readonly': Equal(Eval('kind'), 'dummy'),
-        'required': Equal(Eval('kind'), 'function'),
-        })
+    method = fields.Char('Method')
     flow_start = fields.Boolean('Flow Start')
     flow_stop = fields.Boolean('Flow Stop')
-    subflow =  fields.Many2One('workflow', 'Subflow', states={
-        'readonly': Not(Equal(Eval('kind'), 'subflow')),
-        'required': Equal(Eval('kind'), 'subflow'),
-        })
+    stop_other = fields.Boolean('Stop Other')
+    subflow =  fields.Many2One('workflow', 'Subflow')
     signal_send = fields.Char('Signal (subflow.*)')
     out_transitions = fields.One2Many('workflow.transition', 'act_from',
        'Outgoing transitions')
     in_transitions = fields.One2Many('workflow.transition', 'act_to',
        'Incoming transitions')
 
-    #TODO add a _constraint on subflow without action
-    #to have the same model than the workflow
+    def init(self, module_name):
+        super(WorkflowActivity, self).init(module_name)
+        cursor = Transaction().cursor
+        table = TableHandler(cursor, self, module_name)
+
+        # Migration from 2.0
+        if table.column_exist('kind'):
+            cursor.execute('UPDATE "%s" SET stop_other = %%s '
+                "WHERE kind='stopall'" % self._table, (True,))
+            table.drop_column('kind', exception=True)
 
     def default_kind(self):
         return 'dummy'
@@ -103,6 +98,9 @@ class WorkflowActivity(ModelSQL, ModelView):
     def default_flow_stop(self):
         return False
 
+    def default_stop_other(self):
+        return False
+
 WorkflowActivity()
 
 
@@ -113,7 +111,9 @@ class WorkflowTransition(ModelSQL, ModelView):
     _rec_name = 'signal'
     _description = __doc__
     trigger_model = fields.Char('Trigger Type')
-    trigger_expr_id = fields.Char('Trigger Expr ID')
+    trigger_ids = fields.Char('Trigger Expr ID', states={
+            'required': Bool(Eval('trigger_model')),
+            }, depends=['trigger_model'])
     signal = fields.Char('Signal (button Name)')
     group = fields.Many2One('res.group', 'Group Required')
     condition = fields.Char('Condition', required=True)
@@ -124,8 +124,16 @@ class WorkflowTransition(ModelSQL, ModelView):
     instances = fields.Many2Many('workflow.transition-workflow.instance',
             'trans_id', 'inst_id', 'Instances')
 
+    def init(self, module_name):
+        cursor = Transaction().cursor
+        super(WorkflowTransition, self).init(module_name)
+
+        # Migration from 2.0: condition is a method name
+        cursor.execute('UPDATE "%s" SET "condition" = %%s '
+            'WHERE "condition" = %%s' % self._table, ('', 'True'))
+
     def default_condition(self):
-        return 'True'
+        return ''
 
 WorkflowTransition()
 
@@ -172,8 +180,9 @@ class WorkflowInstance(ModelSQL, ModelView):
         return res
 
     def create(self, values):
-        activity_obj = self.pool.get('workflow.activity')
-        workitem_obj = self.pool.get('workflow.workitem')
+        pool = Pool()
+        activity_obj = pool.get('workflow.activity')
+        workitem_obj = pool.get('workflow.workitem')
 
         instance_id = super(WorkflowInstance, self).create(values)
 
@@ -196,7 +205,8 @@ class WorkflowInstance(ModelSQL, ModelView):
     def update(self, instance):
         '''
         '''
-        workitem_obj = self.pool.get('workflow.workitem')
+        pool = Pool()
+        workitem_obj = pool.get('workflow.workitem')
         for workitem in instance.workitems:
             workitem_obj.process(workitem)
         instance = self.browse(instance.id)
@@ -205,7 +215,8 @@ class WorkflowInstance(ModelSQL, ModelView):
     def validate(self, instance, signal, force_running=False):
         '''
         '''
-        workitem_obj = self.pool.get('workflow.workitem')
+        pool = Pool()
+        workitem_obj = pool.get('workflow.workitem')
         for workitem in instance.workitems:
             workitem_obj.process(workitem, signal=signal,
                     force_running=force_running)
@@ -213,7 +224,8 @@ class WorkflowInstance(ModelSQL, ModelView):
         return self._update_end(instance)
 
     def _update_end(self, instance):
-        workitem_obj = self.pool.get('workflow.workitem')
+        pool = Pool()
+        workitem_obj = pool.get('workflow.workitem')
         res = True
         for workitem in instance.workitems:
             if (workitem.state != 'complete') \
@@ -309,34 +321,34 @@ class WorkflowWorkitem(ModelSQL, ModelView):
         :param signal: the signal
         :param force_running: a boolean
         '''
-        trigger_obj = self.pool.get('workflow.trigger')
+        pool = Pool()
+        trigger_obj = pool.get('workflow.trigger')
         activity = workitem.activity
         triggers = False
         if workitem.state == 'active':
             triggers = True
             if not self._execute(workitem, activity):
                 return False
-        elif workitem.state == 'running':
-            pass
 
         if workitem.state == 'complete' or force_running:
             res = self._split_test(workitem, activity.split_mode, signal)
             triggers = triggers and not res
 
         if triggers:
-            for transition in activity.out_transitions:
-                if transition.trigger_model:
-                    ids = expr.eval_expr( workitem.instance.res_type,
-                            workitem.instance.res_id,
-                            transition.trigger_expr_id)
-                    with Transaction().set_user(0):
-                        for res_id in ids:
-                            trigger_obj.create({
-                                'model': transition.trigger_model,
-                                'res_id': res_id,
-                                'instance': workitem.instance.id,
-                                'workitem': workitem.id,
-                                })
+            trigger_transitions = (t for t in activity.out_transitions
+                if t.trigger_model)
+            for transition in trigger_transitions:
+                model_obj = pool.get(workitem.instance.res_type)
+                model_ids_fct = getattr(model_obj, transition.trigger_ids)
+                ids = model_ids_fct(model_obj.browse(workitem.instance.res_id))
+                with Transaction().set_user(0):
+                    for res_id in ids:
+                        trigger_obj.create({
+                            'model': transition.trigger_model,
+                            'res_id': res_id,
+                            'instance': workitem.instance.id,
+                            'workitem': workitem.id,
+                            })
         return True
 
     def _state_set(self, workitem, state):
@@ -347,25 +359,17 @@ class WorkflowWorkitem(ModelSQL, ModelView):
         workitem._data[workitem.id]['state'] = state
 
     def _execute(self, workitem, activity):
-        instance_obj = self.pool.get('workflow.instance')
+        pool = Pool()
+        instance_obj = pool.get('workflow.instance')
         #send a signal to overflow
         if (workitem.state == 'active') and activity.signal_send:
             for overflow in workitem.overflows:
                 instance_obj.validate(overflow.instance, activity.signal_send,
                         force_running=True)
 
-        if activity.kind == 'dummy':
-            if workitem.state == 'active':
-                self._state_set(workitem, 'complete')
-        elif activity.kind == 'function':
-            if workitem.state == 'active':
-                self._state_set(workitem, 'running')
-                expr.execute(workitem.instance.res_type,
-                        workitem.instance.res_id, activity)
-                self._state_set(workitem, 'complete')
-        elif activity.kind == 'stopall':
-            if workitem.state == 'active':
-                self._state_set(workitem, 'running')
+        if workitem.state == 'active':
+            self._state_set(workitem, 'running')
+            if activity.stop_other:
                 ids = self.search([
                     ('instance', '=', workitem.instance.id),
                     ('id', '!=', workitem.id),
@@ -373,49 +377,72 @@ class WorkflowWorkitem(ModelSQL, ModelView):
                 #XXX check if delete must not be replace by _state_set 'complete'
                 with Transaction().set_user(0):
                     self.delete(ids)
-                if activity.action:
-                    expr.execute(workitem.instance.res_type,
-                            workitem.instance.res_id, activity)
-                self._state_set(workitem, 'complete')
-        elif activity.kind == 'subflow':
-            if workitem.state == 'active':
-                self._state_set(workitem, 'running')
-                if activity.action:
-                    id_new = expr.execute(workitem.instance.res_type,
-                            workitem.instance.res_id, activity)
-                    if not id_new:
-                        with Transaction().set_user(0):
-                            self.delete(workitem.id)
-                        return False
+            if activity.method:
+                id_new = self._execute_action(workitem, activity)
+            else:
+                id_new = None
+            if activity.subflow:
+                if activity.method and id_new:
                     with Transaction().set_user(0):
                         instance_id = instance_obj.search([
                             ('res_id', '=', id_new),
                             ('workflow', '=', activity.subflow.id),
                             ], limit=1)[0]
-                else:
+                elif not activity.method:
                     instance_id = instance_obj.create({
                         'res_type': workitem.instance.res_type,
                         'res_id': workitem.instance.res_id,
                         'workflow': activity.subflow.id,
                         })
+                else:
+                    with Transaction().set_user(0):
+                        self.delete(workitem.id)
+                    return False
                 self.write(workitem.id, {
                     'subflow': instance_id,
                     })
                 #XXX must be changed with a cache reset on BrowseRecord
                 workitem._data[workitem.id]['subflow'] = instance_id
-            elif workitem.state == 'running':
-                if workitem.subflow.state == 'complete':
-                    self._state_set(workitem, 'complete')
+            else:
+                self._state_set(workitem, 'complete')
+        elif workitem.state == 'running' and activity.subflow:
+            if workitem.subflow.state == 'complete':
+                self._state_set(workitem, 'complete')
+
         return True
 
+    def _execute_action(self, workitem, activity):
+        model_obj = Pool().get(workitem.instance.res_type)
+        wkf_action = getattr(model_obj, activity.method)
+        return wkf_action(model_obj.browse(workitem.instance.res_id))
+
+    def _activate_transition(self, workitem, transition, signal):
+        pool = Pool()
+        user_obj = pool.get('res.user')
+        if transition.signal:
+            if signal != transition.signal:
+                return False
+
+        if transition.group and Transaction().user != 0:
+            user_groups = user_obj.get_groups()
+            if transition.group.id not in user_groups:
+                return False
+
+        model_obj = pool.get(workitem.instance.res_type)
+        if transition.condition:
+            test_fct = getattr(model_obj, transition.condition)
+            return test_fct(model_obj.browse(workitem.instance.res_id))
+        else:
+            return True
+
     def _split_test(self, workitem, split_mode, signal=None):
-        instance_obj = self.pool.get('workflow.instance')
+        pool = Pool()
+        instance_obj = pool.get('workflow.instance')
         test = False
         transitions = []
         if split_mode == 'XOR' or split_mode == 'OR':
             for transition in workitem.activity.out_transitions:
-                if expr.check(workitem.instance.res_type,
-                        workitem.instance.res_id, transition, signal):
+                if self._activate_transition(workitem, transition, signal):
                     test = True
                     transitions.append(transition)
                     if split_mode == 'XOR':
@@ -423,8 +450,7 @@ class WorkflowWorkitem(ModelSQL, ModelView):
         else:
             test = True
             for transition in workitem.activity.out_transitions:
-                if not expr.check(workitem.instance.res_type,
-                        workitem.instance.res_id, transition, signal):
+                if not self._activate_transition(workitem, transition, signal):
                     test = False
                     break
                 if transition.id not in \
@@ -443,7 +469,8 @@ class WorkflowWorkitem(ModelSQL, ModelView):
         return False
 
     def _join_test(self, transition, instance):
-        instance_obj = self.pool.get('workflow.instance')
+        pool = Pool()
+        instance_obj = pool.get('workflow.instance')
         activity = transition.act_to
         if activity.join_mode == 'XOR':
             self.create({
@@ -515,9 +542,10 @@ class InstanceGraph(Report):
 
     def execute(self, ids, datas):
         import pydot
-        lang_obj = self.pool.get('ir.lang')
-        workflow_obj = self.pool.get('workflow')
-        instance_obj = self.pool.get('workflow.instance')
+        pool = Pool()
+        lang_obj = pool.get('ir.lang')
+        workflow_obj = pool.get('workflow')
+        instance_obj = pool.get('workflow.instance')
 
         lang_id = lang_obj.search([
             ('code', '=', Transaction().language),
@@ -559,17 +587,19 @@ class InstanceGraph(Report):
                 graph.set('rankdir', 'RL')
         self.graph_instance_get(graph, instance_id, datas.get('nested', False))
         data = graph.create(prog='dot', format='png')
-        return ('png', base64.encodestring(data), False, workflow.name)
+        return ('png', buffer(data), False, workflow.name)
 
     def graph_instance_get(self, graph, instance_id, nested=False):
-        instance_obj = self.pool.get('workflow.instance')
+        pool = Pool()
+        instance_obj = pool.get('workflow.instance')
         instance = instance_obj.browse(instance_id)
         self.graph_get(graph, instance.workflow.id, nested,
                 self.workitem_get(instance.id))
 
     def workitem_get(self, instance_id):
         res = {}
-        workitem_obj = self.pool.get('workflow.workitem')
+        pool = Pool()
+        workitem_obj = pool.get('workflow.workitem')
         workitem_ids = workitem_obj.search([
             ('instance', '=', instance_id),
             ])
@@ -585,9 +615,10 @@ class InstanceGraph(Report):
         import pydot
         if workitem is None:
             workitem = {}
-        activity_obj = self.pool.get('workflow.activity')
-        workflow_obj = self.pool.get('workflow')
-        transition_obj = self.pool.get('workflow.transition')
+        pool = Pool()
+        activity_obj = pool.get('workflow.activity')
+        workflow_obj = pool.get('workflow')
+        transition_obj = pool.get('workflow.transition')
         activity_ids = activity_obj.search([
             ('workflow', '=', workflow_id),
             ])
@@ -637,9 +668,8 @@ class InstanceGraph(Report):
         for transition in transitions:
             args = {}
             args['label'] = ' '
-            if transition.condition != 'True':
-                args['label'] += str(transition.condition).replace(' or ',
-                        '\\nor ').replace(' and ', '\\nand ')
+            if transition.condition:
+                args['label'] += transition.condition
             if transition.signal:
                 args['label'] += '\\n' + str(transition.signal)
                 args['style'] = 'bold'
diff --git a/trytond/workflow/workflow.xml b/trytond/workflow/workflow.xml
index 1e09ef6..954c19c 100644
--- a/trytond/workflow/workflow.xml
+++ b/trytond/workflow/workflow.xml
@@ -4,7 +4,12 @@ this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
         <menuitem name="Workflow" id="menu_workflow"
-            parent="ir.menu_administration" groups="res.group_admin"/>
+            parent="ir.menu_administration"/>
+        <record model="ir.ui.menu-res.group" id="menu_workflow_group_admin">
+            <field name="menu" ref="menu_workflow"/>
+            <field name="group" ref="res.group_admin"/>
+        </record>
+
         <record model="ir.ui.view" id="workflow_view_form">
             <field name="model">workflow</field>
             <field name="type">form</field>
@@ -28,8 +33,8 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Workflow">
-                    <field name="name" select="1"/>
-                    <field name="model" select="1"/>
+                    <field name="name"/>
+                    <field name="model"/>
                     <field name="on_create"/>
                 </tree>
                 ]]>
@@ -51,8 +56,13 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="workflow_view_form"/>
             <field name="act_window" ref="act_workflow_form"/>
         </record>
-        <menuitem parent="menu_workflow" groups="res.group_admin"
+        <menuitem parent="menu_workflow"
             action="act_workflow_form" id="menu_workflow_form"/>
+        <record model="ir.ui.menu-res.group" id="menu_workflow_form_group_admin">
+            <field name="menu" ref="menu_workflow"/>
+            <field name="group" ref="res.group_admin"/>
+        </record>
+
         <record model="ir.model.access" id="access_workflow">
             <field name="model" search="[('model', '=', 'workflow')]"/>
             <field name="perm_read" eval="True"/>
@@ -78,10 +88,8 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="name" colspan="3"/>
                     <label name="workflow"/>
                     <field name="workflow"/>
-                    <label name="kind"/>
-                    <field name="kind"/>
-                    <label name="action"/>
-                    <field name="action" colspan="3"/>
+                    <label name="method"/>
+                    <field name="method"/>
                     <label name="subflow"/>
                     <field name="subflow"/>
                     <label name="signal_send"/>
@@ -95,7 +103,6 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="join_mode"/>
                     <label name="split_mode"/>
                     <field name="split_mode"/>
-                    <separator name="out_transitions" colspan="4"/>
                     <field name="out_transitions" colspan="4">
                         <tree string="Transitions">
                             <field name="act_to"/>
@@ -103,7 +110,7 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="group"/>
                             <field name="condition"/>
                             <field name="trigger_model"/>
-                            <field name="trigger_expr_id"/>
+                            <field name="trigger_ids"/>
                         </tree>
                         <form string="Transition">
                             <label name="act_to"/>
@@ -117,11 +124,10 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="group"/>
                             <label name="trigger_model"/>
                             <field name="trigger_model"/>
-                            <label name="trigger_expr_id"/>
-                            <field name="trigger_expr_id"/>
+                            <label name="trigger_ids"/>
+                            <field name="trigger_ids"/>
                         </form>
                     </field>
-                    <separator name="in_transitions" colspan="4"/>
                     <field name="in_transitions" colspan="4">
                         <tree string="Transitions">
                             <field name="act_from"/>
@@ -129,7 +135,7 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="group"/>
                             <field name="condition"/>
                             <field name="trigger_model"/>
-                            <field name="trigger_expr_id"/>
+                            <field name="trigger_ids"/>
                         </tree>
                         <form string="Transition">
                             <label name="act_from"/>
@@ -143,8 +149,8 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="group"/>
                             <label name="trigger_model"/>
                             <field name="trigger_model"/>
-                            <label name="trigger_expr_id"/>
-                            <field name="trigger_expr_id"/>
+                            <label name="trigger_ids"/>
+                            <field name="trigger_ids"/>
                         </form>
                     </field>
                 </form>
@@ -157,9 +163,9 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Activity">
-                    <field name="name" select="1"/>
-                    <field name="workflow" select="1"/>
-                    <field name="kind" select="1"/>
+                    <field name="name"/>
+                    <field name="workflow"/>
+                    <field name="method"/>
                     <field name="flow_start"/>
                     <field name="flow_stop"/>
                 </tree>
@@ -182,8 +188,13 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="activity_view_form"/>
             <field name="act_window" ref="act_activity_form"/>
         </record>
-        <menuitem parent="menu_workflow" groups="res.group_admin"
+        <menuitem parent="menu_workflow"
             action="act_activity_form" id="menu_activity_form"/>
+        <record model="ir.ui.menu-res.group" id="menu_activity_form_group_admin">
+            <field name="menu" ref="menu_activity_form"/>
+            <field name="group" ref="res.group_admin"/>
+        </record>
+
         <record model="ir.model.access" id="access_workflow_activity">
             <field name="model" search="[('model', '=', 'workflow.activity')]"/>
             <field name="perm_read" eval="True"/>
@@ -217,8 +228,8 @@ this repository contains the full copyright notices and license terms. -->
                     <field name="group"/>
                     <label name="trigger_model"/>
                     <field name="trigger_model"/>
-                    <label name="trigger_expr_id"/>
-                    <field name="trigger_expr_id"/>
+                    <label name="trigger_ids"/>
+                    <field name="trigger_ids"/>
                 </form>
                 ]]>
             </field>
@@ -229,13 +240,13 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Transitions">
-                    <field name="act_from" select="1"/>
-                    <field name="act_to" select="1"/>
+                    <field name="act_from"/>
+                    <field name="act_to"/>
                     <field name="signal"/>
                     <field name="group"/>
                     <field name="condition"/>
                     <field name="trigger_model"/>
-                    <field name="trigger_expr_id"/>
+                    <field name="trigger_ids"/>
                 </tree>
                 ]]>
             </field>
@@ -256,8 +267,13 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="transition_view_form"/>
             <field name="act_window" ref="act_transition_form"/>
         </record>
-        <menuitem parent="menu_workflow" groups="res.group_admin"
+        <menuitem parent="menu_workflow"
             action="act_transition_form" id="menu_transition_form"/>
+        <record model="ir.ui.menu-res.group" id="menu_transition_form_group_admin">
+            <field name="menu" ref="menu_transition_form"/>
+            <field name="group" ref="res.group_admin"/>
+        </record>
+
         <record model="ir.model.access" id="access_workflow_transition">
             <field name="model" search="[('model', '=', 'workflow.transition')]"/>
             <field name="perm_read" eval="True"/>
@@ -299,11 +315,11 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Instances">
-                    <field name="workflow" select="1"/>
-                    <field name="uid" select="2"/>
-                    <field name="res_id" select="1"/>
-                    <field name="res_type" select="1"/>
-                    <field name="state" select="2"/>
+                    <field name="workflow"/>
+                    <field name="uid"/>
+                    <field name="res_id"/>
+                    <field name="res_type"/>
+                    <field name="state"/>
                 </tree>
                 ]]>
             </field>
@@ -324,8 +340,12 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="instance_view_form"/>
             <field name="act_window" ref="act_instance_form"/>
         </record>
-        <menuitem parent="menu_workflow" groups="res.group_admin"
+        <menuitem parent="menu_workflow"
             action="act_instance_form" id="menu_instance_form"/>
+        <record model="ir.ui.menu-res.group" id="menu_instance_form_group_admin">
+            <field name="menu" ref="menu_instance_form"/>
+            <field name="group" ref="res.group_admin"/>
+        </record>
 
         <record model="ir.ui.view" id="workitem_view_form">
             <field name="model">workflow.workitem</field>
@@ -351,10 +371,10 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <tree string="Workitems">
-                    <field name="activity" select="1"/>
-                    <field name="subflow" select="1"/>
-                    <field name="instance" select="1"/>
-                    <field name="state" select="2"/>
+                    <field name="activity"/>
+                    <field name="subflow"/>
+                    <field name="instance"/>
+                    <field name="state"/>
                 </tree>
               ]]>
             </field>
@@ -375,7 +395,11 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="workitem_view_form"/>
             <field name="act_window" ref="act_workitem_form"/>
         </record>
-        <menuitem parent="menu_workflow" groups="res.group_admin"
+        <menuitem parent="menu_workflow"
             action="act_workitem_form" id="menu_workitem_form"/>
+        <record model="ir.ui.menu-res.group" id="menu_workitem_form_group_admin">
+            <field name="menu" ref="menu_workitem_form"/>
+            <field name="group" ref="res.group_admin"/>
+        </record>
     </data>
 </tryton>
commit 6738fb874b447405a64e73658bccb272be056707
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Dec 13 18:45:56 2011 +0100

    Merging upstream version 2.0.2+dfsg.

diff --git a/CHANGELOG b/CHANGELOG
index 97ddc4b..7f31f31 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.0.2 - 2011-10-01
+* Bug fixes (see mercurial logs for details)
+
 Version 2.0.1 - 2011-05-29
 * Bug fixes (see mercurial logs for details)
 
diff --git a/PKG-INFO b/PKG-INFO
index f084b01..bd75fa1 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond
-Version: 2.0.1
+Version: 2.0.2
 Summary: Tryton server
 Home-page: http://www.tryton.org/
 Author: B2CK
diff --git a/trytond.egg-info/PKG-INFO b/trytond.egg-info/PKG-INFO
index f084b01..bd75fa1 100644
--- a/trytond.egg-info/PKG-INFO
+++ b/trytond.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond
-Version: 2.0.1
+Version: 2.0.2
 Summary: Tryton server
 Home-page: http://www.tryton.org/
 Author: B2CK
diff --git a/trytond/backend/database.py b/trytond/backend/database.py
index 168d1f9..f144646 100644
--- a/trytond/backend/database.py
+++ b/trytond/backend/database.py
@@ -112,6 +112,8 @@ class CursorInterface(object):
         :param context: the context
         :return: the cache dictionary
         '''
+        from trytond.transaction import Transaction
+        user = Transaction().user
         if context is None:
             context = {}
         cache_ctx = context.copy()
@@ -119,7 +121,7 @@ class CursorInterface(object):
                 '_delete_records'):
             if i in cache_ctx:
                 del cache_ctx[i]
-        return self.cache.setdefault(repr(cache_ctx), {})
+        return self.cache.setdefault((user, repr(cache_ctx)), {})
 
     def execute(self, sql, params=None):
         '''
diff --git a/trytond/backend/mysql/init.sql b/trytond/backend/mysql/init.sql
index cbb2a56..853775c 100644
--- a/trytond/backend/mysql/init.sql
+++ b/trytond/backend/mysql/init.sql
@@ -76,6 +76,7 @@ ALTER TABLE res_user ADD CONSTRAINT res_user_login_uniq UNIQUE (login);
 
 INSERT INTO res_user (id, login, password, name, active) VALUES (0, 'root', NULL, 'Root', False);
 UPDATE res_user set id = 0;
+ALTER TABLE res_user AUTO_INCREMENT = 1;
 
 CREATE TABLE res_group (
     id BIGINT AUTO_INCREMENT NOT NULL,
@@ -121,7 +122,7 @@ CREATE TABLE wkf_transition (
     act_to BIGINT,
     `condition` VARCHAR(255),
     trigger_expr_id VARCHAR(255),
-    signal VARCHAR(255),
+    `signal` VARCHAR(255),
     `group` BIGINT,
     PRIMARY KEY(id),
     CONSTRAINT wkf_transition_act_from_fkey FOREIGN KEY (act_from) REFERENCES wkf_activity (id) ON DELETE CASCADE,
diff --git a/trytond/ir/rule.py b/trytond/ir/rule.py
index 9cf62eb..cce6520 100644
--- a/trytond/ir/rule.py
+++ b/trytond/ir/rule.py
@@ -191,8 +191,11 @@ class Rule(ModelSQL, ModelView):
         with contextlib.nested(Transaction().set_user(0),
                 Transaction().set_context(user=0)):
             for rule in self.browse(ids):
+                operator = rule.operator
+                if operator == '<>':
+                    operator = '!='
                 dom = safe_eval("[('%s', '%s', %s)]" % \
-                        (rule.field.name, rule.operator,
+                        (rule.field.name, operator,
                             operand2query[rule.operand]), {
                                 'user': self.pool.get('res.user').browse(user),
                                 'time': time,
diff --git a/trytond/ir/translation.py b/trytond/ir/translation.py
index 142b935..5206264 100644
--- a/trytond/ir/translation.py
+++ b/trytond/ir/translation.py
@@ -652,6 +652,7 @@ class ReportTranslationSet(Wizard):
 
     def _set_report_translation(self, data):
         report_obj = self.pool.get('ir.action.report')
+        translation_obj = self.pool.get('ir.translation')
 
         with Transaction().set_context(active_test=False):
             report_ids = report_obj.search([])
@@ -713,7 +714,7 @@ class ReportTranslationSet(Wizard):
                 strings += self._translate_report(document.documentElement)
 
             for string in {}.fromkeys(strings).keys():
-                src_md5 = self.get_src_md5(string)
+                src_md5 = translation_obj.get_src_md5(string)
                 done = False
                 if string in trans_reports:
                     del trans_reports[string]
diff --git a/trytond/ir/ui/board.rnc b/trytond/ir/ui/board.rnc
index 0666280..19fd9c1 100644
--- a/trytond/ir/ui/board.rnc
+++ b/trytond/ir/ui/board.rnc
@@ -144,5 +144,6 @@ attlist.xpath &=
   attribute position { "inside" | "replace" | "replace_attributes" | "after" | "before" }?
 action = element action { attlist.action, empty }
 attlist.action &= attribute name { text }
+attlist.action &= [ a:defaultValue = "1" ] attribute colspan { text }?
 label |= notAllowed
 start = data | board | label
diff --git a/trytond/ir/ui/board.rng b/trytond/ir/ui/board.rng
index a0c90e3..06d6850 100644
--- a/trytond/ir/ui/board.rng
+++ b/trytond/ir/ui/board.rng
@@ -447,6 +447,11 @@
   <define name="attlist.action" combine="interleave">
     <attribute name="name"/>
   </define>
+  <define name="attlist.action" combine="interleave">
+    <optional>
+      <attribute name="colspan" a:defaultValue="1"/>
+    </optional>
+  </define>
   <define name="label" combine="choice">
     <notAllowed/>
   </define>
diff --git a/trytond/model/browse.py b/trytond/model/browse.py
index a23ac30..d37cef1 100644
--- a/trytond/model/browse.py
+++ b/trytond/model/browse.py
@@ -114,12 +114,12 @@ class BrowseRecord(object):
                 ffields = {name: col}
 
             # add datetime_field
-            for field in ffields:
+            for field in ffields.values():
                 if hasattr(field, 'datetime_field') and field.datetime_field:
                     if field.datetime_field in self._model._columns:
-                        date_field = self._model._columns[field.datetime_field]
+                        datetime_field = self._model._columns[field.datetime_field]
                     else:
-                        date_field = self._model._inherit_fields[
+                        datetime_field = self._model._inherit_fields[
                                 field.datetime_field][2]
                     ffields[field.datetime_field] = datetime_field
 
@@ -172,7 +172,9 @@ class BrowseRecord(object):
                                 data[i] = BrowseRecordList(BrowseRecord(
                                     x, model, local_cache=self._local_cache)
                                     for x in data[i])
-                        if isinstance(j, fields.Function):
+                        if (isinstance(j, fields.Function)
+                                or isinstance(data[i], (BrowseRecord,
+                                        BrowseRecordList))):
                             self._local_data.setdefault(data['id'], {})[i] = data[i]
                             del data[i]
                     self._data[data['id']].update(data)
diff --git a/trytond/model/fields/field.py b/trytond/model/fields/field.py
index 93e74ed..72f3af4 100644
--- a/trytond/model/fields/field.py
+++ b/trytond/model/fields/field.py
@@ -11,11 +11,12 @@ def domain_validate(value):
             if isinstance(arg, basestring):
                 if arg not in ('AND', 'OR'):
                     return False
-            elif isinstance(arg, tuple) or \
-                    (isinstance(arg, list) and len(arg) > 2 and \
-                    (arg[1] in OPERATORS) or \
-                    (isinstance(arg[1], PYSON) and \
-                    arg[1].types() == set([str]))):
+            elif (isinstance(arg, tuple)
+                or (isinstance(arg, list)
+                    and len(arg) > 2
+                    and ((arg[1] in OPERATORS)
+                        or (isinstance(arg[1], PYSON)
+                            and arg[1].types() == set([str]))))):
                 pass
             elif isinstance(arg, list):
                 if not test_domain(arg):
diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py
index ba2de45..b3c1982 100644
--- a/trytond/model/modelsql.py
+++ b/trytond/model/modelsql.py
@@ -253,8 +253,9 @@ class ModelSQL(ModelStorage):
                             'write_uid', 'write_date'):
                 default.append(i)
         for i in self._inherit_fields.keys():
-            if (not i in values) \
-                    and (not self._inherit_fields[i][0] in avoid_table):
+            if ((not i in values)
+                    and (not self._inherit_fields[i][0] in avoid_table)
+                    and i in self._defaults):
                 default.append(i)
 
         if len(default):
@@ -265,6 +266,8 @@ class ModelSQL(ModelStorage):
                 if field in ('create_uid', 'create_date',
                         'write_uid', 'write_date'):
                     del defaults[field]
+                if field in values:
+                    del defaults[field]
             values.update(self._clean_defaults(defaults))
 
         (upd0, upd1, upd2) = ('', '', [])
@@ -1343,7 +1346,7 @@ class ModelSQL(ModelStorage):
                     table_query = '(' + table_query + ') AS '
                 table_join = 'LEFT JOIN ' + table_query + \
                         '"' + itable._table + '" ON ' \
-                        '"%s".id = "%s".%s' % (itable._table, self._table,
+                        '"%s".id = "%s"."%s"' % (itable._table, self._table,
                                 self._inherits[itable._name])
                 if table_join not in tables:
                     tables.append(table_join)
@@ -1600,7 +1603,7 @@ class ModelSQL(ModelStorage):
                     if isinstance(domain[i][2], basestring):
                         field_obj = self.pool.get(field.model_name)
                         res_ids = field_obj.search([
-                            (field_obj._rec_name, domain[i][1], domain[i][2]),
+                            ('rec_name', domain[i][1], domain[i][2]),
                             ], order=[])
                         domain[i] = (domain[i][0], 'in', res_ids, table)
                     else:
@@ -1835,7 +1838,7 @@ class ModelSQL(ModelStorage):
                             otype)
                     table_join = 'LEFT JOIN "' + table_name + '" AS ' \
                             '"' + table_name + '.' + link_field + '" ON ' \
-                            '"%s.%s".id = "%s".%s' % (table_name, link_field,
+                            '"%s.%s".id = "%s"."%s"' % (table_name, link_field,
                                     self._table, link_field)
                     for i in range(len(order_by)):
                         if table_name in order_by[i]:
@@ -1871,7 +1874,7 @@ class ModelSQL(ModelStorage):
 
                     table_join = 'LEFT JOIN "' + table_name + '" AS ' \
                             '"' + table_name + '.' + link_field + '" ON ' \
-                            '"%s.%s".id = "%s".%s' % \
+                            '"%s.%s".id = "%s"."%s"' % \
                             (table_name, link_field, self._table, link_field)
                     for i in range(len(order_by)):
                         if table_name in order_by[i]:
@@ -1890,7 +1893,7 @@ class ModelSQL(ModelStorage):
 
                     table_join2 = 'LEFT JOIN "' + table_name2 + '" AS ' \
                             '"' + table_name2 + '.' + link_field2 + '" ON ' \
-                            '"%s.%s".id = "%s.%s".%s' % \
+                            '"%s.%s".id = "%s.%s"."%s"' % \
                             (table_name2, link_field2, table_name, link_field,
                                     link_field2)
                     for i in range(len(order_by)):
@@ -1998,7 +2001,7 @@ class ModelSQL(ModelStorage):
             link_field = self._inherits[obj._name]
             order_by, tables, tables_args = obj._order_calc(field, otype)
             table_join = 'LEFT JOIN "' + table_name + '" ON ' \
-                    '"%s".id = "%s".%s' % \
+                    '"%s".id = "%s"."%s"' % \
                     (table_name, self._table, link_field)
             if table_join not in tables:
                 tables.insert(0, table_join)
diff --git a/trytond/model/modelstorage.py b/trytond/model/modelstorage.py
index b21b40d..2237562 100644
--- a/trytond/model/modelstorage.py
+++ b/trytond/model/modelstorage.py
@@ -21,6 +21,7 @@ from trytond.tools import safe_eval, reduce_domain
 from trytond.pyson import PYSONEncoder, PYSONDecoder, PYSON
 from trytond.const import OPERATORS
 from trytond.transaction import Transaction
+from trytond.config import CONFIG
 
 
 class ModelStorage(Model):
@@ -532,7 +533,13 @@ class ModelStorage(Model):
                     break
                 field_name = fields_tree[i]
                 model_obj = self.pool.get(value._model_name)
-                field = model_obj._columns[field_name]
+                if field_name in model_obj._columns:
+                    field = model_obj._columns[field_name]
+                elif field_name in model_obj._inherit_fields:
+                    field = model_obj._inherit_fields[field_name][2]
+                else:
+                    raise Exception('Field %s not available on object "%s"'
+                        % (field_name, model_obj._name))
                 if field.states and 'invisible' in field.states:
                     pyson_invisible = PYSONEncoder().encode(
                             field.states['invisible'])
@@ -1088,7 +1095,7 @@ class ModelStorage(Model):
                         if not (value.quantize(Decimal(str(10.0**-digits[1])))
                                 == value):
                             raise_user_error()
-                    else:
+                    elif CONFIG.options['db_type'] != 'mysql':
                         if not (round(value, digits[1]) == float(value)):
                             raise_user_error()
                 # validate digits
diff --git a/trytond/tests/test_tools.py b/trytond/tests/test_tools.py
index 60005ef..c6bb78c 100644
--- a/trytond/tests/test_tools.py
+++ b/trytond/tests/test_tools.py
@@ -118,6 +118,8 @@ class ToolsTestCase(unittest.TestCase):
                 ['OR', clause, ['AND', clause, ['OR', clause, clause]]]),
             (['OR', [clause]], ['OR', ['AND', clause]]),
             ([], []),
+            (['OR', clause, []], ['OR', clause, []]),
+            (['AND', clause, []], ['AND', clause, []]),
         )
         for i, j in tests:
             self.assertEqual(reduce_domain(i), j,
diff --git a/trytond/tools/misc.py b/trytond/tools/misc.py
index 0639eab..1868334 100644
--- a/trytond/tools/misc.py
+++ b/trytond/tools/misc.py
@@ -469,4 +469,6 @@ def reduce_domain(domain):
                 result.extend(sub_domain[1:])
             else:
                 result.append(sub_domain)
+        else:
+            result.append(arg)
     return result
diff --git a/trytond/version.py b/trytond/version.py
index 3728c3b..0d6af84 100644
--- a/trytond/version.py
+++ b/trytond/version.py
@@ -1,7 +1,7 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 PACKAGE = "trytond"
-VERSION = "2.0.1"
+VERSION = "2.0.2"
 LICENSE = "GPL-3"
 WEBSITE = "http://www.tryton.org/"
 
commit 8015736806cc9ddfcad9eeec7b74ad8f5bd6439e
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Dec 13 18:45:14 2011 +0100

    Merging upstream version 2.0.1+dfsg.

diff --git a/trytond/ir/ui/icons/LICENSE b/trytond/ir/ui/icons/LICENSE
deleted file mode 100644
index 11782c0..0000000
--- a/trytond/ir/ui/icons/LICENSE
+++ /dev/null
@@ -1,264 +0,0 @@
-                            [1]Creative Commons
-
-                        Creative Commons Legal Code
-
-                         Attribution-ShareAlike 2.0
-   CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
-   LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
-   ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
-   INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
-   REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
-   DAMAGES RESULTING FROM ITS USE.
-
-   License
-
-   THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS
-   CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS
-   PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE
-   WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS
-   PROHIBITED.
-
-   BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND
-   AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS
-   YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF
-   SUCH TERMS AND CONDITIONS.
-
-   1. Definitions
-    a. "Collective Work" means a work, such as a periodical issue,
-       anthology or encyclopedia, in which the Work in its entirety in
-       unmodified form, along with a number of other contributions,
-       constituting separate and independent works in themselves, are
-       assembled into a collective whole. A work that constitutes a
-       Collective Work will not be considered a Derivative Work (as
-       defined below) for the purposes of this License.
-    b. "Derivative Work" means a work based upon the Work or upon the
-       Work and other pre-existing works, such as a translation, musical
-       arrangement, dramatization, fictionalization, motion picture
-       version, sound recording, art reproduction, abridgment,
-       condensation, or any other form in which the Work may be recast,
-       transformed, or adapted, except that a work that constitutes a
-       Collective Work will not be considered a Derivative Work for the
-       purpose of this License. For the avoidance of doubt, where the
-       Work is a musical composition or sound recording, the
-       synchronization of the Work in timed-relation with a moving image
-       ("synching") will be considered a Derivative Work for the purpose
-       of this License.
-    c. "Licensor" means the individual or entity that offers the Work
-       under the terms of this License.
-    d. "Original Author" means the individual or entity who created the
-       Work.
-    e. "Work" means the copyrightable work of authorship offered under
-       the terms of this License.
-    f. "You" means an individual or entity exercising rights under this
-       License who has not previously violated the terms of this License
-       with respect to the Work, or who has received express permission
-       from the Licensor to exercise rights under this License despite a
-       previous violation.
-    g. "License Elements" means the following high-level license
-       attributes as selected by Licensor and indicated in the title of
-       this License: Attribution, ShareAlike.
-
-   2. Fair Use Rights. Nothing in this license is intended to reduce,
-   limit, or restrict any rights arising from fair use, first sale or
-   other limitations on the exclusive rights of the copyright owner under
-   copyright law or other applicable laws.
-
-   3. License Grant. Subject to the terms and conditions of this License,
-   Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
-   perpetual (for the duration of the applicable copyright) license to
-   exercise the rights in the Work as stated below:
-    a. to reproduce the Work, to incorporate the Work into one or more
-       Collective Works, and to reproduce the Work as incorporated in the
-       Collective Works;
-    b. to create and reproduce Derivative Works;
-    c. to distribute copies or phonorecords of, display publicly, perform
-       publicly, and perform publicly by means of a digital audio
-       transmission the Work including as incorporated in Collective
-       Works;
-    d. to distribute copies or phonorecords of, display publicly, perform
-       publicly, and perform publicly by means of a digital audio
-       transmission Derivative Works.
-    e. For the avoidance of doubt, where the work is a musical
-       composition:
-         i. Performance Royalties Under Blanket Licenses. Licensor waives
-            the exclusive right to collect, whether individually or via a
-            performance rights society (e.g. ASCAP, BMI, SESAC),
-            royalties for the public performance or public digital
-            performance (e.g. webcast) of the Work.
-        ii. Mechanical Rights and Statutory Royalties. Licensor waives
-            the exclusive right to collect, whether individually or via a
-            music rights society or designated agent (e.g. Harry Fox
-            Agency), royalties for any phonorecord You create from the
-            Work ("cover version") and distribute, subject to the
-            compulsory license created by 17 USC Section 115 of the US
-            Copyright Act (or the equivalent in other jurisdictions).
-    f. Webcasting Rights and Statutory Royalties. For the avoidance of
-       doubt, where the Work is a sound recording, Licensor waives the
-       exclusive right to collect, whether individually or via a
-       performance-rights society (e.g. SoundExchange), royalties for the
-       public digital performance (e.g. webcast) of the Work, subject to
-       the compulsory license created by 17 USC Section 114 of the US
-       Copyright Act (or the equivalent in other jurisdictions).
-
-   The above rights may be exercised in all media and formats whether now
-   known or hereafter devised. The above rights include the right to make
-   such modifications as are technically necessary to exercise the rights
-   in other media and formats. All rights not expressly granted by
-   Licensor are hereby reserved.
-
-   4. Restrictions.The license granted in Section 3 above is expressly
-   made subject to and limited by the following restrictions:
-    a. You may distribute, publicly display, publicly perform, or
-       publicly digitally perform the Work only under the terms of this
-       License, and You must include a copy of, or the Uniform Resource
-       Identifier for, this License with every copy or phonorecord of the
-       Work You distribute, publicly display, publicly perform, or
-       publicly digitally perform. You may not offer or impose any terms
-       on the Work that alter or restrict the terms of this License or
-       the recipients' exercise of the rights granted hereunder. You may
-       not sublicense the Work. You must keep intact all notices that
-       refer to this License and to the disclaimer of warranties. You may
-       not distribute, publicly display, publicly perform, or publicly
-       digitally perform the Work with any technological measures that
-       control access or use of the Work in a manner inconsistent with
-       the terms of this License Agreement. The above applies to the Work
-       as incorporated in a Collective Work, but this does not require
-       the Collective Work apart from the Work itself to be made subject
-       to the terms of this License. If You create a Collective Work,
-       upon notice from any Licensor You must, to the extent practicable,
-       remove from the Collective Work any reference to such Licensor or
-       the Original Author, as requested. If You create a Derivative
-       Work, upon notice from any Licensor You must, to the extent
-       practicable, remove from the Derivative Work any reference to such
-       Licensor or the Original Author, as requested.
-    b. You may distribute, publicly display, publicly perform, or
-       publicly digitally perform a Derivative Work only under the terms
-       of this License, a later version of this License with the same
-       License Elements as this License, or a Creative Commons iCommons
-       license that contains the same License Elements as this License
-       (e.g. Attribution-ShareAlike 2.0 Japan). You must include a copy
-       of, or the Uniform Resource Identifier for, this License or other
-       license specified in the previous sentence with every copy or
-       phonorecord of each Derivative Work You distribute, publicly
-       display, publicly perform, or publicly digitally perform. You may
-       not offer or impose any terms on the Derivative Works that alter
-       or restrict the terms of this License or the recipients' exercise
-       of the rights granted hereunder, and You must keep intact all
-       notices that refer to this License and to the disclaimer of
-       warranties. You may not distribute, publicly display, publicly
-       perform, or publicly digitally perform the Derivative Work with
-       any technological measures that control access or use of the Work
-       in a manner inconsistent with the terms of this License Agreement.
-       The above applies to the Derivative Work as incorporated in a
-       Collective Work, but this does not require the Collective Work
-       apart from the Derivative Work itself to be made subject to the
-       terms of this License.
-    c. If you distribute, publicly display, publicly perform, or publicly
-       digitally perform the Work or any Derivative Works or Collective
-       Works, You must keep intact all copyright notices for the Work and
-       give the Original Author credit reasonable to the medium or means
-       You are utilizing by conveying the name (or pseudonym if
-       applicable) of the Original Author if supplied; the title of the
-       Work if supplied; to the extent reasonably practicable, the
-       Uniform Resource Identifier, if any, that Licensor specifies to be
-       associated with the Work, unless such URI does not refer to the
-       copyright notice or licensing information for the Work; and in the
-       case of a Derivative Work, a credit identifying the use of the
-       Work in the Derivative Work (e.g., "French translation of the Work
-       by Original Author," or "Screenplay based on original Work by
-       Original Author"). Such credit may be implemented in any
-       reasonable manner; provided, however, that in the case of a
-       Derivative Work or Collective Work, at a minimum such credit will
-       appear where any other comparable authorship credit appears and in
-       a manner at least as prominent as such other comparable authorship
-       credit.
-
-   5. Representations, Warranties and Disclaimer
-
-   UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS
-   THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
-   CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
-   INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
-   FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
-   LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF
-   ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW
-   THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY
-   TO YOU.
-
-   6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY
-   APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY
-   LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR
-   EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK,
-   EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-   7. Termination
-    a. This License and the rights granted hereunder will terminate
-       automatically upon any breach by You of the terms of this License.
-       Individuals or entities who have received Derivative Works or
-       Collective Works from You under this License, however, will not
-       have their licenses terminated provided such individuals or
-       entities remain in full compliance with those licenses. Sections
-       1, 2, 5, 6, 7, and 8 will survive any termination of this License.
-    b. Subject to the above terms and conditions, the license granted
-       here is perpetual (for the duration of the applicable copyright in
-       the Work). Notwithstanding the above, Licensor reserves the right
-       to release the Work under different license terms or to stop
-       distributing the Work at any time; provided, however that any such
-       election will not serve to withdraw this License (or any other
-       license that has been, or is required to be, granted under the
-       terms of this License), and this License will continue in full
-       force and effect unless terminated as stated above.
-
-   8. Miscellaneous
-    a. Each time You distribute or publicly digitally perform the Work or
-       a Collective Work, the Licensor offers to the recipient a license
-       to the Work on the same terms and conditions as the license
-       granted to You under this License.
-    b. Each time You distribute or publicly digitally perform a
-       Derivative Work, Licensor offers to the recipient a license to the
-       original Work on the same terms and conditions as the license
-       granted to You under this License.
-    c. If any provision of this License is invalid or unenforceable under
-       applicable law, it shall not affect the validity or enforceability
-       of the remainder of the terms of this License, and without further
-       action by the parties to this agreement, such provision shall be
-       reformed to the minimum extent necessary to make such provision
-       valid and enforceable.
-    d. No term or provision of this License shall be deemed waived and no
-       breach consented to unless such waiver or consent shall be in
-       writing and signed by the party to be charged with such waiver or
-       consent.
-    e. This License constitutes the entire agreement between the parties
-       with respect to the Work licensed here. There are no
-       understandings, agreements or representations with respect to the
-       Work not specified here. Licensor shall not be bound by any
-       additional provisions that may appear in any communication from
-       You. This License may not be modified without the mutual written
-       agreement of the Licensor and You.
-
-   Creative Commons is not a party to this License, and makes no warranty
-   whatsoever in connection with the Work. Creative Commons will not be
-   liable to You or any party on any legal theory for any damages
-   whatsoever, including without limitation any general, special,
-   incidental or consequential damages arising in connection to this
-   license. Notwithstanding the foregoing two (2) sentences, if Creative
-   Commons has expressly identified itself as the Licensor hereunder, it
-   shall have all rights and obligations of Licensor.
-
-   Except for the limited purpose of indicating to the public that the
-   Work is licensed under the CCPL, neither party will use the trademark
-   "Creative Commons" or any related trademark or logo of Creative
-   Commons without the prior written consent of Creative Commons. Any
-   permitted use will be in compliance with Creative Commons'
-   then-current trademark usage guidelines, as may be published on its
-   website or otherwise made available upon request from time to time.
-
-   Creative Commons may be contacted at [2]http://creativecommons.org/.
-
-                                                [3]« Back to Commons Deed
-
-References
-
-   1. http://creativecommons.org/
-   2. http://creativecommons.org/
-   3. http://creativecommons.org/licenses/by-sa/2.0/
diff --git a/trytond/ir/ui/icons/tryton-calendar.svg b/trytond/ir/ui/icons/tryton-calendar.svg
deleted file mode 100644
index fb05f73..0000000
--- a/trytond/ir/ui/icons/tryton-calendar.svg
+++ /dev/null
@@ -1,314 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   sodipodi:docname="office-calendar.svg"
-   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/apps"
-   inkscape:version="0.43+devel"
-   sodipodi:version="0.32"
-   id="svg1288"
-   height="48px"
-   width="48px">
-  <defs
-     id="defs3">
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient6719"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5060">
-      <stop
-         style="stop-color:black;stop-opacity:1;"
-         offset="0"
-         id="stop5062" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5064" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient6717"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       id="linearGradient5048">
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="0"
-         id="stop5050" />
-      <stop
-         id="stop5056"
-         offset="0.5"
-         style="stop-color:black;stop-opacity:1;" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5052" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5048"
-       id="linearGradient6715"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
-       x1="302.85715"
-       y1="366.64789"
-       x2="302.85715"
-       y2="609.50507" />
-    <linearGradient
-       id="linearGradient2563">
-      <stop
-         id="stop2565"
-         offset="0"
-         style="stop-color:#e2e2e2;stop-opacity:1;" />
-      <stop
-         id="stop2567"
-         offset="1.0000000"
-         style="stop-color:#9f9f9f;stop-opacity:1.0000000;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2551"
-       inkscape:collect="always">
-      <stop
-         id="stop2553"
-         offset="0"
-         style="stop-color:#000000;stop-opacity:1;" />
-      <stop
-         id="stop2555"
-         offset="1"
-         style="stop-color:#000000;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2526">
-      <stop
-         id="stop2528"
-         offset="0.0000000"
-         style="stop-color:#e7ebeb;stop-opacity:1.0000000;" />
-      <stop
-         style="stop-color:#e6ebeb;stop-opacity:1.0000000;"
-         offset="0.50000000"
-         id="stop2534" />
-      <stop
-         id="stop2530"
-         offset="1.0000000"
-         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
-    </linearGradient>
-    <linearGradient
-       gradientTransform="translate(0.000000,0.785718)"
-       gradientUnits="userSpaceOnUse"
-       y2="28.428572"
-       x2="42.214283"
-       y1="14.428571"
-       x1="13.357142"
-       id="linearGradient2532"
-       xlink:href="#linearGradient2526"
-       inkscape:collect="always" />
-    <radialGradient
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000000,0.000000,0.000000,0.751938,1.196962e-16,7.193799)"
-       r="18.428572"
-       fy="29.000000"
-       fx="26.000000"
-       cy="29.000000"
-       cx="26.000000"
-       id="radialGradient2557"
-       xlink:href="#linearGradient2551"
-       inkscape:collect="always" />
-    <linearGradient
-       gradientTransform="translate(0.000000,0.785718)"
-       gradientUnits="userSpaceOnUse"
-       y2="30.785713"
-       x2="42.214284"
-       y1="30.785713"
-       x1="6.7857148"
-       id="linearGradient2569"
-       xlink:href="#linearGradient2563"
-       inkscape:collect="always" />
-    <linearGradient
-       y2="28.428572"
-       x2="42.214283"
-       y1="14.428571"
-       x1="13.357142"
-       gradientTransform="translate(2.045771e-15,0.785718)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient2582"
-       xlink:href="#linearGradient2526"
-       inkscape:collect="always" />
-  </defs>
-  <sodipodi:namedview
-     inkscape:window-y="393"
-     inkscape:window-x="713"
-     inkscape:window-height="701"
-     inkscape:window-width="872"
-     inkscape:document-units="px"
-     inkscape:grid-bbox="true"
-     showgrid="false"
-     inkscape:current-layer="layer1"
-     inkscape:cy="24.165113"
-     inkscape:cx="25.369574"
-     inkscape:zoom="1"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base" />
-  <metadata
-     id="metadata4">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title>Calendar</dc:title>
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Jakub Steiner</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:source>http://jimmac.musichall.cz</dc:source>
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>calendar</rdf:li>
-            <rdf:li>date</rdf:li>
-            <rdf:li>time</rdf:li>
-            <rdf:li>cal</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-        <cc:license
-           rdf:resource="http://creativecommons.org/licenses/by/2.0/" />
-      </cc:Work>
-      <cc:License
-         rdf:about="http://creativecommons.org/licenses/by/2.0/">
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Reproduction" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Distribution" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Notice" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Attribution" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/ShareAlike" />
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     inkscape:label="Layer 1"
-     id="layer1">
-    <g
-       transform="matrix(2.294847e-2,0,0,2.276812e-2,44.75587,36.74254)"
-       id="g6707">
-      <rect
-         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         id="rect6709"
-         width="1339.6335"
-         height="478.35718"
-         x="-1559.2523"
-         y="-150.69685" />
-      <path
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
-         id="path6711"
-         sodipodi:nodetypes="cccc" />
-      <path
-         sodipodi:nodetypes="cccc"
-         id="path6713"
-         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
-    </g>
-    <path
-       sodipodi:nodetypes="ccccccc"
-       id="path1316"
-       d="M 4.8571430,38.428571 C 4.6428572,39.428571 5.4642859,40.464285 6.8214287,40.428571 L 43.000000,40.428571 C 44.285714,40.392857 44.714286,39.214285 44.428572,38.249999 L 36.571429,9.4285713 L 10.571429,9.4285713 L 4.8571430,38.428571 z "
-       style="fill:#a7a7a7;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#656565;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
-    <path
-       sodipodi:nodetypes="ccccccccc"
-       id="path2575"
-       d="M 9.1625040,30.806458 L 39.395095,30.806458 C 40.252297,30.806458 40.942392,31.478744 40.942392,32.313825 L 42.269580,37.114760 C 42.269580,37.949841 41.579486,38.622127 40.722283,38.622127 L 8.2777114,38.622127 C 7.4205088,38.622127 6.7304142,37.949841 6.7304142,37.114760 L 7.6152068,32.313825 C 7.6152068,31.478744 8.3053014,30.806458 9.1625040,30.806458 z "
-       style="opacity:0.10857142;color:#000000;fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans" />
-    <path
-       style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999970px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.34463277"
-       d="M 6.0478436,37.805569 C 5.8479823,38.738255 5.6491963,39.385227 6.5227626,39.385227 L 42.837439,39.385227 C 43.753496,39.385227 43.579187,38.645537 43.312705,37.746161 L 35.770172,10.471961 L 11.520336,10.471961 L 6.0478436,37.805569 z "
-       id="path2520"
-       sodipodi:nodetypes="ccccccc" />
-    <path
-       style="opacity:1.0000000;color:#000000;fill:#c5c5c5;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#696969;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
-       d="M 9.6418018,29.928574 L 38.929626,29.928574 C 39.760041,29.928574 40.428570,30.579851 40.428570,31.388835 L 41.714284,36.039742 C 41.714284,36.848726 41.045755,37.500003 40.215340,37.500003 L 8.7846589,37.500003 C 7.9542438,37.500003 7.2857146,36.848726 7.2857146,36.039742 L 8.1428575,31.388835 C 8.1428575,30.579851 8.8113867,29.928574 9.6418018,29.928574 z "
-       id="path2518"
-       sodipodi:nodetypes="ccccccccc" />
-    <path
-       sodipodi:nodetypes="ccccccccc"
-       id="rect2225"
-       d="M 9.6418018,27.785717 L 38.929626,27.785717 C 39.760041,27.785717 40.428570,28.436994 40.428570,29.245978 L 41.714284,33.896885 C 41.714284,34.705869 41.045755,35.357146 40.215340,35.357146 L 8.7846589,35.357146 C 7.9542438,35.357146 7.2857146,34.705869 7.2857146,33.896885 L 8.1428575,29.245978 C 8.1428575,28.436994 8.8113867,27.785717 9.6418018,27.785717 z "
-       style="color:#000000;fill:url(#linearGradient2569);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#696969;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
-    <g
-       transform="matrix(0.942549,0.000000,0.000000,0.942549,-0.222619,1.855860)"
-       id="g2578">
-      <path
-         style="fill:url(#linearGradient2582);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#696969;stroke-width:1.0609524px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
-         d="M 10.891973,11.500004 L 6.5714281,33.214290 C 6.5714281,33.214290 32.857143,33.214291 32.857143,33.214291 C 45.441975,33.214291 48.085306,29.214290 48.085306,29.214290 C 48.085306,29.214290 44.728164,28.035719 43.299593,23.071433 C 43.299593,23.071433 40.238640,11.500004 40.238640,11.500004 L 10.891973,11.500004 z "
-         id="path2524"
-         sodipodi:nodetypes="cczczcc" />
-      <path
-         sodipodi:nodetypes="cccczcc"
-         id="path2571"
-         d="M 11.803734,12.474609 L 7.8122567,32.239668 C 7.8122567,32.239668 24.956518,32.239669 32.238382,32.239669 C 43.465021,32.239669 46.348811,29.388804 46.348811,29.388804 C 46.348811,29.388804 43.355751,27.525962 42.055419,23.007305 C 42.055419,23.007305 39.316856,12.546038 39.316856,12.546038 L 11.803734,12.474609 z "
-         style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0609519px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
-    </g>
-    <path
-       sodipodi:nodetypes="ccccccccc"
-       id="rect2522"
-       d="M 11.315699,7.4285707 L 36.494515,7.4285707 C 37.367632,7.4285707 38.070539,8.0973414 38.070539,8.9280566 L 38.427682,11.071942 C 38.427682,11.902657 37.724775,12.571428 36.851658,12.571428 L 10.958556,12.571428 C 10.085439,12.571428 9.3825323,11.902657 9.3825323,11.071942 L 9.7396752,8.9280566 C 9.7396752,8.0973414 10.442582,7.4285707 11.315699,7.4285707 z "
-       style="color:#000000;fill:#9b9b9b;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#696969;stroke-width:0.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" />
-    <path
-       id="text2541"
-       d="M 20.969159,22.393020 C 21.957574,22.486777 22.691543,22.765423 23.171063,23.228961 C 23.651181,23.687301 23.849054,24.273239 23.764680,24.986779 C 23.640870,26.033659 23.075908,26.877412 22.069796,27.518037 C 21.063667,28.158665 19.762256,28.478977 18.165559,28.478978 C 16.939741,28.478977 15.906445,28.286269 15.065668,27.900851 L 15.305880,25.869594 C 16.189321,26.478973 17.193659,26.783661 18.318897,26.783660 C 19.217824,26.783661 19.926554,26.637828 20.445092,26.346159 C 20.964233,26.049284 21.255527,25.632617 21.318975,25.096154 C 21.385488,24.533656 21.176411,24.122197 20.691744,23.861775 C 20.207063,23.601362 19.398966,23.471154 18.267450,23.471149 L 16.994488,23.471149 L 17.201440,21.721144 L 18.559266,21.721144 C 19.451905,21.721150 20.149975,21.585733 20.653477,21.314892 C 21.157582,21.038857 21.439509,20.648231 21.499262,20.143013 C 21.555304,19.669062 21.408536,19.288853 21.058960,19.002385 C 20.709369,18.715935 20.154261,18.572705 19.393634,18.572696 C 18.431836,18.572705 17.490216,18.853956 16.568772,19.416448 L 16.798822,17.471130 C 17.831208,17.033639 18.988597,16.814889 20.270993,16.814878 C 21.509374,16.814889 22.459536,17.072702 23.121484,17.588317 C 23.789700,18.103954 24.076386,18.762810 23.981543,19.564886 C 23.893455,20.309689 23.598230,20.919065 23.095869,21.393017 C 22.594104,21.861775 21.885201,22.195109 20.969159,22.393020"
-       style="font-size:17.577877;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:100.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Segoe" />
-    <path
-       id="text2545"
-       d="M 33.007379,28.455540 L 30.499173,28.455540 L 29.387875,19.096134 L 26.295373,19.893012 L 26.086657,18.135194 L 31.627997,16.838314 L 33.007379,28.455540"
-       style="font-size:17.577877;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:100.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Segoe" />
-    <path
-       transform="matrix(0.684211,0.000000,0.000000,0.684211,3.560154,2.278197)"
-       d="M 12.857143 9.9285717 A 1.3571428 1.3571428 0 1 1  10.142857,9.9285717 A 1.3571428 1.3571428 0 1 1  12.857143 9.9285717 z"
-       sodipodi:ry="1.3571428"
-       sodipodi:rx="1.3571428"
-       sodipodi:cy="9.9285717"
-       sodipodi:cx="11.500000"
-       id="path2559"
-       style="opacity:0.52571428;color:#000000;fill:#fefefe;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
-       sodipodi:type="arc" />
-    <path
-       sodipodi:nodetypes="cc"
-       id="path2561"
-       d="M 13.042053,8.6010151 L 36.371309,8.6010151"
-       style="opacity:0.30285713;fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0000001px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1.0000000" />
-  </g>
-</svg>
diff --git a/trytond/ir/ui/icons/tryton-clock.svg b/trytond/ir/ui/icons/tryton-clock.svg
deleted file mode 100644
index 30a6173..0000000
--- a/trytond/ir/ui/icons/tryton-clock.svg
+++ /dev/null
@@ -1,418 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   inkscape:export-ydpi="90.000000"
-   inkscape:export-xdpi="90.000000"
-   inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
-   width="48px"
-   height="48px"
-   id="svg11300"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   sodipodi:docbase="/home/tigert/cvs/freedesktop.org/tango-icon-theme/scalable/actions"
-   sodipodi:docname="tryton-clock.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs3">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 24 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="48 : 24 : 1"
-       inkscape:persp3d-origin="24 : 16 : 1"
-       id="perspective2667" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5204">
-      <stop
-         style="stop-color:#c4a000;stop-opacity:1;"
-         offset="0"
-         id="stop5206" />
-      <stop
-         style="stop-color:#c4a000;stop-opacity:0;"
-         offset="1"
-         id="stop5208" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5196">
-      <stop
-         style="stop-color:#c4a000;stop-opacity:1;"
-         offset="0"
-         id="stop5198" />
-      <stop
-         style="stop-color:#c4a000;stop-opacity:0;"
-         offset="1"
-         id="stop5200" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient12512">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop12513" />
-      <stop
-         style="stop-color:#fff520;stop-opacity:0.89108908;"
-         offset="0.50000000"
-         id="stop12517" />
-      <stop
-         style="stop-color:#fff300;stop-opacity:0.0000000;"
-         offset="1.0000000"
-         id="stop12514" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12512"
-       id="radialGradient278"
-       gradientUnits="userSpaceOnUse"
-       cx="55.000000"
-       cy="125.00000"
-       fx="55.000000"
-       fy="125.00000"
-       r="14.375000" />
-    <linearGradient
-       id="linearGradient10653">
-      <stop
-         style="stop-color:#f3f4ff;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop10655" />
-      <stop
-         style="stop-color:#9193af;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop10657" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient42174">
-      <stop
-         style="stop-color:#a0a0a0;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop42176" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop42178" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2145">
-      <stop
-         style="stop-color:#fffffd;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop2147" />
-      <stop
-         style="stop-color:#cbcbc9;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop2149" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient37935">
-      <stop
-         id="stop37937"
-         offset="0.0000000"
-         style="stop-color:#9497b3;stop-opacity:1.0000000;" />
-      <stop
-         id="stop37939"
-         offset="1.0000000"
-         style="stop-color:#4c4059;stop-opacity:1.0000000;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2152">
-      <stop
-         id="stop2154"
-         offset="0.0000000"
-         style="stop-color:#9aa29a;stop-opacity:1.0000000;" />
-      <stop
-         id="stop2156"
-         offset="1.0000000"
-         style="stop-color:#b5beb5;stop-opacity:1.0000000;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3816">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop3818" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop3820" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3816"
-       id="radialGradient3822"
-       cx="31.112698"
-       cy="19.008621"
-       fx="31.112698"
-       fy="19.008621"
-       r="8.6620579"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2152"
-       id="linearGradient4307"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(3.123841,0.000000,0.000000,0.969691,-31.88758,-19.59492)"
-       x1="8.9156475"
-       y1="37.197018"
-       x2="9.8855033"
-       y2="52.090678" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient10653"
-       id="radialGradient4309"
-       gradientUnits="userSpaceOnUse"
-       cx="11.329200"
-       cy="10.583970"
-       fx="11.329200"
-       fy="10.583970"
-       r="15.532059" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2145"
-       id="radialGradient4311"
-       gradientUnits="userSpaceOnUse"
-       cx="11.901996"
-       cy="10.045444"
-       fx="11.901996"
-       fy="10.045444"
-       r="29.292715" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient42174"
-       id="linearGradient4313"
-       gradientUnits="userSpaceOnUse"
-       x1="6.3422160"
-       y1="7.7893324"
-       x2="22.218424"
-       y2="25.884274" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5196"
-       id="radialGradient5202"
-       cx="23.375"
-       cy="10.972863"
-       fx="23.375"
-       fy="10.972863"
-       r="3.3478092"
-       gradientTransform="matrix(3.630420,1.654030e-15,-1.608743e-15,3.742066,-61.48607,-29.18618)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5204"
-       id="linearGradient5210"
-       x1="19.667364"
-       y1="4.2570662"
-       x2="20.329933"
-       y2="5.2845874"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient37935"
-       id="radialGradient5212"
-       gradientUnits="userSpaceOnUse"
-       cx="8.7468252"
-       cy="6.8283234"
-       fx="8.7468252"
-       fy="6.8283234"
-       r="29.889715" />
-  </defs>
-  <sodipodi:namedview
-     stroke="#c4a000"
-     fill="#babdb6"
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="0.25490196"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.313708"
-     inkscape:cx="27.543713"
-     inkscape:cy="25.106052"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:showpageshadow="false"
-     inkscape:window-width="1278"
-     inkscape:window-height="782"
-     inkscape:window-x="0"
-     inkscape:window-y="16" />
-  <metadata
-     id="metadata4">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Jakub Steiner</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:source>http://jimmac.musichall.cz</dc:source>
-        <cc:license
-           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
-        <dc:title>New Appointment</dc:title>
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>appointment</rdf:li>
-            <rdf:li>new</rdf:li>
-            <rdf:li>meeting</rdf:li>
-            <rdf:li>rvsp</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-      </cc:Work>
-      <cc:License
-         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Reproduction" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Distribution" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Notice" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Attribution" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/ShareAlike" />
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <path
-       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.45064,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
-       sodipodi:ry="8.6620579"
-       sodipodi:rx="8.6620579"
-       sodipodi:cy="19.008621"
-       sodipodi:cx="31.112698"
-       id="path4318"
-       style="opacity:1;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       sodipodi:type="arc"
-       transform="matrix(2.563158,0.000000,0.000000,1.219602,-55.98414,14.04144)" />
-    <path
-       sodipodi:nodetypes="cccc"
-       id="path14341"
-       d="M 18.587591,1.403729 L 4.226755,18.096665 L 5.4854717,19.339844 L 18.587591,1.403729 z "
-       style="color:#000000;fill:url(#linearGradient4307);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
-    <path
-       sodipodi:nodetypes="cccc"
-       id="path18921"
-       d="M 18.467176,1.3138035 L 5.6605716,19.072612 L 7.4900985,20.687913 L 18.467176,1.3138035 z "
-       style="fill:#fefefe;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
-    <path
-       transform="matrix(1.431529,0.000000,0.000000,1.431529,0.569459,-1.654618)"
-       d="M 31.160714 16.910715 A 14.910714 14.910714 0 1 1  1.3392859,16.910715 A 14.910714 14.910714 0 1 1  31.160714 16.910715 z"
-       sodipodi:ry="14.910714"
-       sodipodi:rx="14.910714"
-       sodipodi:cy="16.910715"
-       sodipodi:cx="16.25"
-       id="path27786"
-       style="fill:url(#radialGradient5212);fill-opacity:1;fill-rule:evenodd;stroke:#605773;stroke-width:0.69855404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
-       sodipodi:type="arc" />
-    <path
-       transform="matrix(1.163838,0.000000,0.000000,1.163838,4.824801,2.777556)"
-       d="M 31.160714 16.910715 A 14.910714 14.910714 0 1 1  1.3392859,16.910715 A 14.910714 14.910714 0 1 1  31.160714 16.910715 z"
-       sodipodi:ry="14.910714"
-       sodipodi:rx="14.910714"
-       sodipodi:cy="16.910715"
-       sodipodi:cx="16.25"
-       id="path35549"
-       style="fill:url(#radialGradient4311);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4313);stroke-width:0.71139598;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
-       sodipodi:type="arc" />
-    <path
-       sodipodi:type="arc"
-       style="opacity:1;color:#000000;fill:url(#radialGradient5202);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5210);stroke-width:0.56498736;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="path4120"
-       sodipodi:cx="23.375"
-       sodipodi:cy="11.875"
-       sodipodi:rx="8.5"
-       sodipodi:ry="8.5"
-       d="M 16.679382,6.6387137 A 8.5,8.5 0 0 1 23.332691,3.3751053 L 23.375,11.875 z"
-       transform="matrix(1.769951,0.000000,0.000000,1.769951,-17.02424,1.610741)"
-       sodipodi:start="3.8052902"
-       sodipodi:end="4.7074114" />
-    <path
-       transform="matrix(2.073295,0.000000,0.000000,2.073295,-7.310224,-13.13682)"
-       d="M 16.40625 17.28125 A 1.21875 1.21875 0 1 1  13.96875,17.28125 A 1.21875 1.21875 0 1 1  16.40625 17.28125 z"
-       sodipodi:ry="1.21875"
-       sodipodi:rx="1.21875"
-       sodipodi:cy="17.28125"
-       sodipodi:cx="15.1875"
-       id="path34778"
-       style="fill:#f3f3f3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.48232403;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;stroke-dasharray:none"
-       sodipodi:type="arc" />
-    <path
-       id="path35559"
-       d="M 22.176614,20.718014 L 13.155702,13.140282"
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    <path
-       id="path35561"
-       d="M 19.408614,29.776506 L 22.368655,25.283228"
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       sodipodi:nodetypes="cc" />
-    <path
-       transform="matrix(2.749493,0.000000,0.000000,2.749493,-22.30073,-12.40939)"
-       d="M 17.324117 7.6932044 A 0.61871845 0.61871845 0 1 1  16.08668,7.6932044 A 0.61871845 0.61871845 0 1 1  17.324117 7.6932044 z"
-       sodipodi:ry="0.61871845"
-       sodipodi:rx="0.61871845"
-       sodipodi:cy="7.6932044"
-       sodipodi:cx="16.705399"
-       id="path35563"
-       style="fill:#b6b9b1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.36871839;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1"
-       sodipodi:type="arc" />
-    <path
-       transform="matrix(2.749493,0.000000,0.000000,2.749493,-22.30073,14.80922)"
-       d="M 17.324117 7.6932044 A 0.61871845 0.61871845 0 1 1  16.08668,7.6932044 A 0.61871845 0.61871845 0 1 1  17.324117 7.6932044 z"
-       sodipodi:ry="0.61871845"
-       sodipodi:rx="0.61871845"
-       sodipodi:cy="7.6932044"
-       sodipodi:cx="16.705399"
-       id="path35565"
-       style="fill:#b6b9b1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.36871839;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1"
-       sodipodi:type="arc" />
-    <path
-       transform="matrix(2.749493,0.000000,0.000000,2.749493,-35.91004,1.199890)"
-       d="M 17.324117 7.6932044 A 0.61871845 0.61871845 0 1 1  16.08668,7.6932044 A 0.61871845 0.61871845 0 1 1  17.324117 7.6932044 z"
-       sodipodi:ry="0.61871845"
-       sodipodi:rx="0.61871845"
-       sodipodi:cy="7.6932044"
-       sodipodi:cx="16.705399"
-       id="path35567"
-       style="fill:#b6b9b1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.36871839;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1"
-       sodipodi:type="arc" />
-    <path
-       transform="matrix(2.749493,0.000000,0.000000,2.749493,-8.691448,1.199890)"
-       d="M 17.324117 7.6932044 A 0.61871845 0.61871845 0 1 1  16.08668,7.6932044 A 0.61871845 0.61871845 0 1 1  17.324117 7.6932044 z"
-       sodipodi:ry="0.61871845"
-       sodipodi:rx="0.61871845"
-       sodipodi:cy="7.6932044"
-       sodipodi:cx="16.705399"
-       id="path35569"
-       style="fill:#b6b9b1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.36871839;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1"
-       sodipodi:type="arc" />
-    <path
-       sodipodi:type="arc"
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient4309);stroke-width:0.73656511;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
-       id="path10651"
-       sodipodi:cx="16.25"
-       sodipodi:cy="16.910715"
-       sodipodi:rx="14.910714"
-       sodipodi:ry="14.910714"
-       d="M 31.160714 16.910715 A 14.910714 14.910714 0 1 1  1.3392859,16.910715 A 14.910714 14.910714 0 1 1  31.160714 16.910715 z"
-       transform="matrix(1.357654,0.000000,0.000000,1.357654,1.769896,-0.493735)" />
-  </g>
-</svg>
diff --git a/trytond/ir/ui/icons/tryton-graph.svg b/trytond/ir/ui/icons/tryton-graph.svg
deleted file mode 100644
index 720ea0e..0000000
--- a/trytond/ir/ui/icons/tryton-graph.svg
+++ /dev/null
@@ -1,637 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   sodipodi:docname="tryton-graph.svg"
-   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/mimetypes"
-   inkscape:version="0.46"
-   sodipodi:version="0.32"
-   id="svg13684"
-   height="48.000000px"
-   width="48.000000px"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs3">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 24 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="48 : 24 : 1"
-       inkscape:persp3d-origin="24 : 16 : 1"
-       id="perspective4705" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient6719"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5060">
-      <stop
-         style="stop-color:black;stop-opacity:1;"
-         offset="0"
-         id="stop5062" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5064" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient6717"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       id="linearGradient5048">
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="0"
-         id="stop5050" />
-      <stop
-         id="stop5056"
-         offset="0.5"
-         style="stop-color:black;stop-opacity:1;" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5052" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5048"
-       id="linearGradient6715"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
-       x1="302.85715"
-       y1="366.64789"
-       x2="302.85715"
-       y2="609.50507" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6687"
-       id="linearGradient6746"
-       gradientUnits="userSpaceOnUse"
-       x1="-20.750000"
-       y1="29.000000"
-       x2="-19.500000"
-       y2="18.750000" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient6687">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop6689" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop6691" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6687"
-       id="linearGradient6744"
-       gradientUnits="userSpaceOnUse"
-       x1="-20.750000"
-       y1="29.000000"
-       x2="-19.500000"
-       y2="18.750000" />
-    <linearGradient
-       id="linearGradient6719">
-      <stop
-         style="stop-color:#73d216;stop-opacity:1;"
-         offset="0"
-         id="stop6721" />
-      <stop
-         style="stop-color:#d5f7b3;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop6723" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6719"
-       id="linearGradient6742"
-       gradientUnits="userSpaceOnUse"
-       x1="-17.863041"
-       y1="30.827509"
-       x2="-20.821646"
-       y2="25.015009" />
-    <linearGradient
-       id="linearGradient6711">
-      <stop
-         style="stop-color:#5b8ccb;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop6713" />
-      <stop
-         style="stop-color:#3465a4;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop6715" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6711"
-       id="linearGradient6740"
-       gradientUnits="userSpaceOnUse"
-       x1="-16.387411"
-       y1="24.453547"
-       x2="-9.7352734"
-       y2="28.195539" />
-    <linearGradient
-       id="linearGradient6699">
-      <stop
-         style="stop-color:#ff7171;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop6701" />
-      <stop
-         style="stop-color:#cc0000;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop6703" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6699"
-       id="linearGradient6738"
-       gradientUnits="userSpaceOnUse"
-       x1="-22.976406"
-       y1="18.516047"
-       x2="-14.360273"
-       y2="33.016045" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4542">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop4544" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop4546" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4542"
-       id="radialGradient4548"
-       cx="24.306795"
-       cy="42.07798"
-       fx="24.306795"
-       fy="42.07798"
-       r="15.821514"
-       gradientTransform="matrix(1.000000,0.000000,0.000000,0.284916,-2.846681e-15,30.08928)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient2456">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop2458" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop2460" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient269">
-      <stop
-         id="stop270"
-         offset="0.0000000"
-         style="stop-color:#a3a3a3;stop-opacity:1.0000000;" />
-      <stop
-         id="stop271"
-         offset="1.0000000"
-         style="stop-color:#4c4c4c;stop-opacity:1.0000000;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient269"
-       id="radialGradient15656"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.971646,0.000000,0.000000,1.034707,3.240408,0.495684)"
-       cx="8.8244190"
-       cy="3.7561285"
-       fx="8.8244190"
-       fy="3.7561285"
-       r="37.751713" />
-    <linearGradient
-       id="linearGradient259">
-      <stop
-         id="stop260"
-         offset="0.0000000"
-         style="stop-color:#fafafa;stop-opacity:1.0000000;" />
-      <stop
-         id="stop261"
-         offset="1.0000000"
-         style="stop-color:#bbbbbb;stop-opacity:1.0000000;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient259"
-       id="radialGradient15658"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.963839,0.000000,0.000000,1.043088,-0.124825,-0.151970)"
-       cx="33.966679"
-       cy="35.736916"
-       fx="33.966679"
-       fy="35.736916"
-       r="86.708450" />
-    <linearGradient
-       id="linearGradient15662">
-      <stop
-         id="stop15664"
-         offset="0.0000000"
-         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
-      <stop
-         id="stop15666"
-         offset="1.0000000"
-         style="stop-color:#f8f8f8;stop-opacity:1.0000000;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient15662"
-       id="radialGradient15668"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.974777,0.000000,0.000000,1.034091,3.161873,0.559274)"
-       cx="8.1435566"
-       cy="7.2678967"
-       fx="8.1435566"
-       fy="7.2678967"
-       r="38.158695" />
-    <linearGradient
-       y2="99.2984"
-       x2="118.302"
-       y1="82.0938"
-       x1="97.2412"
-       gradientUnits="userSpaceOnUse"
-       id="aigrd13">
-      <stop
-         id="stop12995"
-         style="stop-color:#E8F066"
-         offset="0" />
-      <stop
-         id="stop12997"
-         style="stop-color:#949941"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       y2="100.6528"
-       x2="115.5175"
-       y1="89.1104"
-       x1="90.8311"
-       gradientUnits="userSpaceOnUse"
-       id="aigrd12">
-      <stop
-         id="stop12988"
-         style="stop-color:#E8F066"
-         offset="0" />
-      <stop
-         id="stop12990"
-         style="stop-color:#777A34"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       y2="92.6123"
-       x2="124.8197"
-       y1="75.1099"
-       x1="105.0923"
-       gradientUnits="userSpaceOnUse"
-       id="aigrd11">
-      <stop
-         id="stop12981"
-         style="stop-color:#3FA6CC"
-         offset="0" />
-      <stop
-         id="stop12983"
-         style="stop-color:#00687A"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       y2="94.8"
-       x2="126.1107"
-       y1="84.7578"
-       x1="107.8672"
-       gradientUnits="userSpaceOnUse"
-       id="aigrd10">
-      <stop
-         id="stop12974"
-         style="stop-color:#2C7894"
-         offset="0" />
-      <stop
-         id="stop12976"
-         style="stop-color:#0E3D47"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       y2="95.8999"
-       x2="118.2002"
-       y1="78.1079"
-       x1="105.8184"
-       gradientUnits="userSpaceOnUse"
-       id="aigrd9">
-      <stop
-         id="stop12967"
-         style="stop-color:#C1553A"
-         offset="0" />
-      <stop
-         id="stop12969"
-         style="stop-color:#803926"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       y2="98.8832"
-       x2="118.3481"
-       y1="81.1763"
-       x1="106.0254"
-       gradientUnits="userSpaceOnUse"
-       id="aigrd8">
-      <stop
-         id="stop12960"
-         style="stop-color:#C09287"
-         offset="0" />
-      <stop
-         id="stop12962"
-         style="stop-color:#803926"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd8"
-       id="linearGradient1681"
-       gradientUnits="userSpaceOnUse"
-       x1="106.0254"
-       y1="81.1763"
-       x2="118.3481"
-       y2="98.8832" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd9"
-       id="linearGradient1683"
-       gradientUnits="userSpaceOnUse"
-       x1="105.8184"
-       y1="78.1079"
-       x2="118.2002"
-       y2="95.8999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd10"
-       id="linearGradient1685"
-       gradientUnits="userSpaceOnUse"
-       x1="107.8672"
-       y1="84.7578"
-       x2="126.1107"
-       y2="94.8" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd11"
-       id="linearGradient1687"
-       gradientUnits="userSpaceOnUse"
-       x1="105.0923"
-       y1="75.1099"
-       x2="124.8197"
-       y2="92.6123" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd12"
-       id="linearGradient1689"
-       gradientUnits="userSpaceOnUse"
-       x1="90.8311"
-       y1="89.1104"
-       x2="115.5175"
-       y2="100.6528" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd13"
-       id="linearGradient1691"
-       gradientUnits="userSpaceOnUse"
-       x1="97.2412"
-       y1="82.0938"
-       x2="118.302"
-       y2="99.2984" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2456"
-       id="radialGradient2462"
-       gradientTransform="scale(1.164226,0.85894)"
-       cx="28.283663"
-       cy="47.400623"
-       fx="28.283663"
-       fy="47.400623"
-       r="13.804391"
-       gradientUnits="userSpaceOnUse" />
-  </defs>
-  <sodipodi:namedview
-     inkscape:showpageshadow="false"
-     inkscape:window-y="16"
-     inkscape:window-x="0"
-     inkscape:window-height="784"
-     inkscape:window-width="1280"
-     inkscape:document-units="px"
-     inkscape:grid-bbox="true"
-     showgrid="false"
-     inkscape:current-layer="layer2"
-     inkscape:cy="24"
-     inkscape:cx="24"
-     inkscape:zoom="12.083333"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     inkscape:grid-points="true" />
-  <metadata
-     id="metadata4">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title>Spreadsheet</dc:title>
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Jakub Steiner</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:source>http://jimmac.musichall.cz</dc:source>
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>spreadheet</rdf:li>
-            <rdf:li>document</rdf:li>
-            <rdf:li>office</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-        <cc:license
-           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
-      </cc:Work>
-      <cc:License
-         rdf:about="http://creativecommons.org/licenses/by/2.0/">
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Reproduction" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Distribution" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Notice" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Attribution" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/ShareAlike" />
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     inkscape:label="Layer 1"
-     id="layer1"
-     style="display:inline">
-    <g
-       style="display:inline"
-       transform="matrix(2.144924e-2,0,0,2.086758e-2,43.32772,41.1536)"
-       id="g6707">
-      <rect
-         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         id="rect6709"
-         width="1339.6335"
-         height="478.35718"
-         x="-1559.2523"
-         y="-150.69685" />
-      <path
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
-         id="path6711"
-         sodipodi:nodetypes="cccc" />
-      <path
-         sodipodi:nodetypes="cccc"
-         id="path6713"
-         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
-    </g>
-    <rect
-       style="color:#000000;fill:url(#radialGradient15658);fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15656);stroke-width:0.99999970;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
-       id="rect15391"
-       width="34.996506"
-       height="40.997345"
-       x="6.5017405"
-       y="3.5013213"
-       ry="1.1490481"
-       rx="1.1490482" />
-    <rect
-       style="color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15668);stroke-width:0.99999970;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
-       id="rect15660"
-       width="32.996056"
-       height="38.996326"
-       x="7.5033512"
-       y="4.5018268"
-       ry="0.14904855"
-       rx="0.14904846" />
-  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer2"
-     inkscape:label="emblem"
-     style="display:inline">
-    <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient2462);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="path1693"
-       sodipodi:cx="32.92857"
-       sodipodi:cy="40.714287"
-       sodipodi:rx="16.071428"
-       sodipodi:ry="11.857142"
-       d="M 48.999998,40.714287 A 16.071428,11.857142 0 1 1 16.857141,40.714287 A 16.071428,11.857142 0 1 1 48.999998,40.714287 z"
-       transform="matrix(0.9333333,0,0,1.0542169,-4.7333315,-16.421689)" />
-    <g
-       id="g6727"
-       transform="matrix(1.1528287,0,0,1.247629,45.327332,-8.4704995)"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true">
-      <path
-         id="path3931"
-         d="M -27.528542,18.092794 C -30.097576,19.791125 -31.511475,22.097833 -31.511475,24.590696 L -31.511475,26.659988 C -31.511475,29.150828 -30.097576,31.458211 -27.528542,33.156541 C -25.102053,34.760445 -21.895416,35.644009 -18.499359,35.644009 C -15.104587,35.644009 -11.89795,34.760445 -9.4701774,33.156541 C -6.9024275,31.458211 -5.4885277,29.151503 -5.4885277,26.659988 L -5.4885277,24.590696 C -5.4885277,22.097833 -6.9030696,19.79045 -9.4701774,18.092794 C -11.897308,16.490239 -15.103945,15.606001 -18.499359,15.606001 C -21.895416,15.606001 -25.102053,16.490239 -27.528542,18.092794 z"
-         style="fill:#670000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         id="path3933"
-         d="M -7.0244261,24.453547 C -8.4030105,21.067003 -13.077484,18.573465 -18.636768,18.573465 C -24.196053,18.573465 -28.870526,21.067003 -30.249111,24.453547 L -30.663906,24.453547 L -30.663906,26.523514 C -30.663906,30.913678 -25.27863,34.472213 -18.636768,34.472213 C -11.994265,34.472213 -6.6102729,30.913678 -6.6102729,26.523514 L -6.6102729,24.453547 L -7.0244261,24.453547 L -7.0244261,24.453547 z"
-         style="fill:#a40000;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         id="path3935"
-         d="M -6.6102729,24.453547 C -6.6102729,28.844385 -11.994265,32.402921 -18.636768,32.402921 C -25.279272,32.402921 -30.663906,28.844385 -30.663906,24.453547 C -30.663906,20.062708 -25.27863,16.504173 -18.636768,16.504173 C -11.994265,16.504173 -6.6102729,20.062708 -6.6102729,24.453547 L -6.6102729,24.453547 z"
-         style="fill:url(#linearGradient6738);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         id="path3937"
-         d="M -6.6102729,26.833098 L -6.6256833,24.666681 C -7.9297843,29.167459 -10.862246,31.074203 -14.549173,32.007678 L -14.549173,34.002103 C -10.558534,32.998483 -6.9871844,30.713358 -6.6102729,26.833098 L -6.6102729,26.833098 z"
-         style="fill:#204a87;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         id="path3939"
-         d="M -6.6102729,24.453547 C -6.8857329,29.533025 -13.16802,31.849176 -14.571646,31.937532 L -18.637411,24.453547 L -6.610915,24.453547 L -6.6102729,24.453547 z"
-         style="fill:url(#linearGradient6740);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         id="path3941"
-         d="M -21.154435,34.298198 L -21.154435,32.228906 C -18.891039,32.523652 -16.814494,32.575587 -14.571646,32.015097 L -14.549173,34.002778 C -16.428593,34.619249 -19.36876,34.648251 -21.154435,34.298873 L -21.154435,34.298198 z"
-         style="fill:#4e9a06;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         id="path3943"
-         d="M -18.637411,24.454221 L -14.571646,31.937532 C -17.06106,32.88652 -21.154435,32.228906 -21.154435,32.228906 L -18.637411,24.454221 z"
-         style="fill:url(#linearGradient6742);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         transform="matrix(0.979592,0,0,0.979592,-0.380102,0.497449)"
-         d="M -6.875,24.375 A 11.75,7.75 0 1 1 -30.375,24.375 A 11.75,7.75 0 1 1 -6.875,24.375 z"
-         sodipodi:ry="7.75"
-         sodipodi:rx="11.75"
-         sodipodi:cy="24.375"
-         sodipodi:cx="-18.625"
-         id="path5959"
-         style="opacity:0.31111115;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6744);stroke-width:1.02083337;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
-         sodipodi:type="arc"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         sodipodi:type="arc"
-         style="opacity:0.13333327;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6746);stroke-width:1.02083337;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
-         id="path6707"
-         sodipodi:cx="-18.625"
-         sodipodi:cy="24.375"
-         sodipodi:rx="11.75"
-         sodipodi:ry="7.75"
-         d="M -6.875,24.375 A 11.75,7.75 0 1 1 -30.375,24.375 A 11.75,7.75 0 1 1 -6.875,24.375 z"
-         transform="matrix(0.979592,0,0,0.979592,-0.380102,2.497449)"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-    </g>
-  </g>
-</svg>
diff --git a/trytond/ir/ui/icons/tryton-image-missing.svg b/trytond/ir/ui/icons/tryton-image-missing.svg
deleted file mode 100644
index e585fd8..0000000
--- a/trytond/ir/ui/icons/tryton-image-missing.svg
+++ /dev/null
@@ -1,318 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   inkscape:export-ydpi="90.000000"
-   inkscape:export-xdpi="90.000000"
-   inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
-   width="48px"
-   height="48px"
-   id="svg11300"
-   sodipodi:version="0.32"
-   inkscape:version="0.43+devel"
-   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/status"
-   sodipodi:docname="image-missing.svg">
-  <defs
-     id="defs3">
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient6719"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5060">
-      <stop
-         style="stop-color:black;stop-opacity:1;"
-         offset="0"
-         id="stop5062" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5064" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient6717"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       id="linearGradient5048">
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="0"
-         id="stop5050" />
-      <stop
-         id="stop5056"
-         offset="0.5"
-         style="stop-color:black;stop-opacity:1;" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5052" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5048"
-       id="linearGradient6715"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
-       x1="302.85715"
-       y1="366.64789"
-       x2="302.85715"
-       y2="609.50507" />
-    <linearGradient
-       id="linearGradient3563">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop3565" />
-      <stop
-         style="stop-color:#939393;stop-opacity:1;"
-         offset="1"
-         id="stop3567" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3555">
-      <stop
-         style="stop-color:#f2f2f2;stop-opacity:1;"
-         offset="0"
-         id="stop3557" />
-      <stop
-         style="stop-color:#d0d0d0;stop-opacity:1;"
-         offset="1"
-         id="stop3559" />
-    </linearGradient>
-    <linearGradient
-       style="stroke-dasharray:none;stroke-miterlimit:4.0000000;stroke-width:1.2166667"
-       y2="36.0328"
-       x2="31.0813"
-       y1="3.7319"
-       x1="12.4873"
-       gradientUnits="userSpaceOnUse"
-       id="aigrd1">
-      <stop
-         id="stop16177"
-         style="stop-color:#D2D2D2;stroke-dasharray:none;stroke-miterlimit:4.0000000;stroke-width:1.2166667"
-         offset="0" />
-      <stop
-         id="stop16179"
-         style="stop-color:#EDEDED;stroke-dasharray:none;stroke-miterlimit:4.0000000;stroke-width:1.2166667"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd1"
-       id="linearGradient16280"
-       gradientUnits="userSpaceOnUse"
-       x1="12.4873"
-       y1="3.7319"
-       x2="31.0813"
-       y2="36.0328"
-       gradientTransform="matrix(1.211383,0,0,1.211383,-2.021433,0.189894)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient12129">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop12131" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop12133" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12129"
-       id="radialGradient12135"
-       cx="24.218407"
-       cy="41.636040"
-       fx="24.218407"
-       fy="41.636040"
-       r="22.097088"
-       gradientTransform="matrix(1.000000,0.000000,0.000000,0.184000,0.000000,33.97501)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3555"
-       id="radialGradient3561"
-       cx="26.728037"
-       cy="38.34853"
-       fx="26.728037"
-       fy="38.34853"
-       r="17.926361"
-       gradientTransform="matrix(1.848501,-1.547102e-23,1.227926e-24,1.289078,-21.29931,-13.68176)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3563"
-       id="linearGradient3569"
-       x1="28.107494"
-       y1="34.868584"
-       x2="22.169001"
-       y2="9.8661737"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-1.056826e-16,0.883885)" />
-  </defs>
-  <sodipodi:namedview
-     stroke="#cc0000"
-     fill="#cc0000"
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="0.25490196"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="13.713462"
-     inkscape:cy="31.493755"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:showpageshadow="false"
-     inkscape:window-width="1107"
-     inkscape:window-height="1072"
-     inkscape:window-x="180"
-     inkscape:window-y="85"
-     gridempspacing="4" />
-  <metadata
-     id="metadata4">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Jakub Steiner</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:source>http://jimmac.musichall.cz</dc:source>
-        <cc:license
-           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
-        <dc:title>Broken Image</dc:title>
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>image</rdf:li>
-            <rdf:li>picture</rdf:li>
-            <rdf:li>photo</rdf:li>
-            <rdf:li>missing</rdf:li>
-            <rdf:li>broken</rdf:li>
-            <rdf:li>404</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-        <dc:contributor>
-          <cc:Agent>
-            <dc:title>Garrett LeSage</dc:title>
-          </cc:Agent>
-        </dc:contributor>
-      </cc:Work>
-      <cc:License
-         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Reproduction" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Distribution" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Notice" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Attribution" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/ShareAlike" />
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <g
-       style="display:inline"
-       transform="matrix(2.367169e-2,0,0,2.086758e-2,45.08634,40.14468)"
-       id="g6707">
-      <rect
-         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         id="rect6709"
-         width="1339.6335"
-         height="478.35718"
-         x="-1559.2523"
-         y="-150.69685" />
-      <path
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
-         id="path6711"
-         sodipodi:nodetypes="cccc" />
-      <path
-         sodipodi:nodetypes="cccc"
-         id="path6713"
-         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
-    </g>
-    <path
-       id="path16181"
-       d="M 45.343675,39.903974 C 45.343675,41.842189 43.768877,43.416987 41.830663,43.416987 L 6.3371177,43.416987 C 4.3989037,43.416987 2.8241047,41.842189 2.8241047,39.903974 L 2.8241047,7.0947821 C 2.8241047,5.1565681 4.3989037,3.581769 6.3371177,3.581769 L 41.830663,3.581769 C 43.768877,3.581769 45.343675,5.1565681 45.343675,7.0947821 L 45.343675,39.903974 L 45.343675,39.903974 z "
-       style="fill:url(#linearGradient16280);fill-rule:nonzero;stroke:#646464;stroke-width:0.99234736;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       sodipodi:nodetypes="cccccccccc"
-       transform="matrix(1.011299,0,0,1.004137,-0.356015,-9.658587e-2)"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true" />
-    <path
-       style="fill:url(#radialGradient3561);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3569);stroke-width:0.99794304;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.61658032"
-       d="M 41.467991,35.25247 L 6.6152692,35.25247 L 6.6152692,11.250058 L 41.467991,11.250058 L 41.467991,35.25247 L 41.467991,35.25247 z "
-       id="path12125"
-       sodipodi:nodetypes="cccccc"
-       transform="matrix(1.004226,0,0,0.9999,-0.143226,0.251056)"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true" />
-    <path
-       style="fill:none;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.99670035;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.86010359"
-       d="M 44.480104,39.32848 C 44.480104,41.187964 43.499604,42.345241 41.640121,42.345241 L 6.6160507,42.345241 C 4.7565677,42.345241 3.6876787,41.276353 3.6876787,39.416869 L 3.6876787,7.5970548 C 3.6876787,5.737571 5.1985087,4.403517 7.0579927,4.403517 L 41.198179,4.403517 C 43.057662,4.403517 44.480104,5.737571 44.480104,7.5970548 L 44.480104,38.974927 L 44.480104,39.32848 z "
-       id="path11975"
-       sodipodi:nodetypes="cccccccccc"
-       transform="matrix(1.005089,0,0,1.001536,-0.206445,8.971654e-2)"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true" />
-    <g
-       id="g3551"
-       transform="matrix(0.751031,0,0,0.764054,10.06196,10.18347)"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true">
-      <path
-         d="M 11.318692,9.2240568 C 16.641997,14.693047 22.769247,19.123651 29.210664,22.931105 L 27.441568,24.159843 C 21.101863,20.04489 15.052508,15.498993 9.1840818,10.652117 L 11.318692,9.2240568 z "
-         id="path2565"
-         style="opacity:1;color:#000000;fill:#cc0000;fill-opacity:1;fill-rule:nonzero;stroke:#cc0000;stroke-width:2.64021659;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         d="M 26.73892,8.9210568 C 21.867631,15.95255 15.247359,21.081199 7.9065151,25.28163 L 10.087564,23.520856 C 8.7241111,24.379297 25.574485,11.804168 23.852075,10.207903 L 26.73892,8.9210568 z "
-         id="path2575"
-         style="opacity:1;color:#000000;fill:#cc0000;fill-opacity:1;fill-rule:nonzero;stroke:#cc0000;stroke-width:2.64021564;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-    </g>
-  </g>
-</svg>
diff --git a/trytond/ir/ui/icons/tryton-list.svg b/trytond/ir/ui/icons/tryton-list.svg
deleted file mode 100644
index 34ae9d3..0000000
--- a/trytond/ir/ui/icons/tryton-list.svg
+++ /dev/null
@@ -1,348 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="48px"
-   height="48px"
-   id="svg4198"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/actions"
-   sodipodi:docname="tryton-list.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs4200">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 24 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="48 : 24 : 1"
-       inkscape:persp3d-origin="24 : 16 : 1"
-       id="perspective21117" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient5031"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5060">
-      <stop
-         style="stop-color:black;stop-opacity:1;"
-         offset="0"
-         id="stop5062" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5064" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient5029"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       id="linearGradient5048">
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="0"
-         id="stop5050" />
-      <stop
-         id="stop5056"
-         offset="0.5"
-         style="stop-color:black;stop-opacity:1;" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5052" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5048"
-       id="linearGradient5027"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
-       x1="302.85715"
-       y1="366.64789"
-       x2="302.85715"
-       y2="609.50507" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3558">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop3560" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop3562" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3558"
-       id="radialGradient3564"
-       cx="22.571428"
-       cy="30.857143"
-       fx="22.571428"
-       fy="30.857143"
-       r="15.571428"
-       gradientTransform="matrix(1.000000,0.000000,0.000000,0.651376,4.638648e-15,10.75754)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       id="linearGradient15218">
-      <stop
-         style="stop-color:#f8f8f7;stop-opacity:1;"
-         offset="0"
-         id="stop15220" />
-      <stop
-         id="stop2269"
-         offset="0.59928656"
-         style="stop-color:#e8e8e8;stop-opacity:1;" />
-      <stop
-         style="stop-color:#e2e2de;stop-opacity:1;"
-         offset="1"
-         id="stop15222" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient15218"
-       id="linearGradient15224"
-       x1="22.308331"
-       y1="18.992140"
-       x2="35.785294"
-       y2="39.498238"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.060837,0.000000,0.000000,0.987595,4.641161,4.108291)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient2259">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop2261" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop2263" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2259"
-       id="linearGradient2265"
-       x1="26.076092"
-       y1="26.696676"
-       x2="30.811172"
-       y2="42.007351"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.993566,0.000000,0.000000,1.000000,6.219859,4.033411)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient2216">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop2218" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop2220" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2216"
-       id="linearGradient2222"
-       x1="36.8125"
-       y1="39.15625"
-       x2="39.0625"
-       y2="42.0625"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(6.161836,4.033411)" />
-    <linearGradient
-       id="linearGradient2224">
-      <stop
-         style="stop-color:#7c7c7c;stop-opacity:1;"
-         offset="0"
-         id="stop2226" />
-      <stop
-         style="stop-color:#b8b8b8;stop-opacity:1;"
-         offset="1"
-         id="stop2228" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient15218"
-       id="linearGradient2240"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.342704,0.000000,0.000000,1.235378,-8.219611,-6.577189)"
-       x1="20.794008"
-       y1="18.378813"
-       x2="35.596001"
-       y2="39.60046" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#bebebe"
-     borderopacity="1.0000000"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="12.083333"
-     inkscape:cx="23.999999"
-     inkscape:cy="23.999999"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1278"
-     inkscape:window-height="782"
-     inkscape:window-x="0"
-     inkscape:window-y="16"
-     inkscape:showpageshadow="false" />
-  <metadata
-     id="metadata4203">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title>Justify Center</dc:title>
-        <dc:date>2005-10-29</dc:date>
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Andreas Nilsson</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>justify</rdf:li>
-            <rdf:li>center</rdf:li>
-            <rdf:li>format</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-        <cc:license
-           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
-      </cc:Work>
-      <cc:License
-         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Reproduction" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Distribution" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Notice" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Attribution" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/ShareAlike" />
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <g
-       style="display:inline"
-       id="g5022"
-       transform="matrix(2.330573e-2,0,0,1.227058e-2,44.47891,44.41691)">
-      <rect
-         y="-150.69685"
-         x="-1559.2523"
-         height="478.35718"
-         width="1339.6335"
-         id="rect4173"
-         style="opacity:0.40206185;color:black;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
-      <path
-         sodipodi:nodetypes="cccc"
-         id="path5058"
-         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
-      <path
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
-         id="path5018"
-         sodipodi:nodetypes="cccc" />
-    </g>
-    <rect
-       style="opacity:1;fill:url(#linearGradient2240);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4238"
-       width="38.996792"
-       height="45.003101"
-       x="4.5016017"
-       y="1.4968988"
-       rx="0.56650788"
-       ry="0.56650823" />
-    <rect
-       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="rect4248"
-       width="30"
-       height="2"
-       x="-39"
-       y="10"
-       transform="scale(-1,1)" />
-    <rect
-       y="16"
-       x="-39"
-       height="2"
-       width="30"
-       id="rect4250"
-       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       transform="scale(-1,1)" />
-    <rect
-       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="rect4252"
-       width="30"
-       height="2"
-       x="-39"
-       y="22"
-       transform="scale(-1,1)" />
-    <rect
-       y="28"
-       x="-39"
-       height="2"
-       width="30"
-       id="rect4254"
-       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       transform="scale(-1,1)" />
-    <rect
-       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="rect4256"
-       width="30"
-       height="2"
-       x="-39"
-       y="34"
-       transform="scale(-1,1)" />
-    <rect
-       style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect2245"
-       width="37.025566"
-       height="43.022316"
-       x="5.4997125"
-       y="2.4997177"
-       rx="0"
-       ry="0" />
-  </g>
-</svg>
diff --git a/trytond/ir/ui/icons/tryton-presentation.svg b/trytond/ir/ui/icons/tryton-presentation.svg
deleted file mode 100644
index b10a7c6..0000000
--- a/trytond/ir/ui/icons/tryton-presentation.svg
+++ /dev/null
@@ -1,565 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   inkscape:export-ydpi="90.000000"
-   inkscape:export-xdpi="90.000000"
-   inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
-   width="48px"
-   height="48px"
-   id="svg11300"
-   sodipodi:version="0.32"
-   inkscape:version="0.43+devel"
-   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/mimetypes"
-   sodipodi:docname="x-office-presentation.svg">
-  <defs
-     id="defs3">
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient10020">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop10022" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop10024" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient2456">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop2458" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop2460" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2456"
-       id="radialGradient2462"
-       gradientTransform="scale(1.164226,0.85894)"
-       cx="28.283663"
-       cy="47.400623"
-       fx="28.283663"
-       fy="47.400623"
-       r="13.804391"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient6687">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop6689" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop6691" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient6719">
-      <stop
-         style="stop-color:#73d216;stop-opacity:1;"
-         offset="0"
-         id="stop6721" />
-      <stop
-         style="stop-color:#d5f7b3;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop6723" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient6711">
-      <stop
-         style="stop-color:#5b8ccb;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop6713" />
-      <stop
-         style="stop-color:#3465a4;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop6715" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient6699">
-      <stop
-         style="stop-color:#ff7171;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop6701" />
-      <stop
-         style="stop-color:#cc0000;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop6703" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient9214">
-      <stop
-         style="stop-color:#5b5b5b;stop-opacity:1;"
-         offset="0"
-         id="stop9216" />
-      <stop
-         style="stop-color:#5b5b5b;stop-opacity:0;"
-         offset="1"
-         id="stop9218" />
-    </linearGradient>
-    <linearGradient
-       y2="11.0039"
-       x2="20.9453"
-       y1="25.4727"
-       x1="27.2949"
-       gradientUnits="userSpaceOnUse"
-       id="aigrd5">
-      <stop
-         id="stop13012"
-         style="stop-color:#f5f5f5;stop-opacity:1;"
-         offset="0" />
-      <stop
-         id="stop13014"
-         style="stop-color:#e1e1e1;stop-opacity:1;"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd5"
-       id="linearGradient1553"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.868867,0,0,1.5088,-20.39097,-10.01652)"
-       x1="27.2949"
-       y1="25.4727"
-       x2="20.9453"
-       y2="11.0039" />
-    <linearGradient
-       y2="10.4377"
-       x2="24.6035"
-       y1="9.3433"
-       x1="24.6035"
-       gradientUnits="userSpaceOnUse"
-       id="aigrd6">
-      <stop
-         id="stop13035"
-         style="stop-color:#F0F0F0"
-         offset="0" />
-      <stop
-         id="stop13037"
-         style="stop-color:#686868"
-         offset="1" />
-    </linearGradient>
-    <radialGradient
-       gradientUnits="userSpaceOnUse"
-       fy="30.9912"
-       fx="24.7744"
-       r="0.5902"
-       cy="30.9912"
-       cx="24.7744"
-       id="aigrd7">
-      <stop
-         id="stop13046"
-         style="stop-color:#F0F0F0"
-         offset="0" />
-      <stop
-         id="stop13048"
-         style="stop-color:#848484"
-         offset="1" />
-    </radialGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd7"
-       id="radialGradient1537"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(3.502527,0,0,3.502527,-61.93009,-72.87696)"
-       cx="24.7744"
-       cy="30.9912"
-       fx="24.7744"
-       fy="30.9912"
-       r="0.5902" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient9214"
-       id="radialGradient9220"
-       cx="26.162951"
-       cy="44.022526"
-       fx="26.162951"
-       fy="44.022526"
-       r="12.197592"
-       gradientTransform="matrix(1,0,0,0.181159,-2.871401e-15,36.04743)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd6"
-       id="linearGradient9224"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.905258,0,0,2.521777,-22.82065,-13.24604)"
-       x1="24.919374"
-       y1="6.1478682"
-       x2="24.919374"
-       y2="7.4600263" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6687"
-       id="linearGradient10002"
-       gradientUnits="userSpaceOnUse"
-       x1="-20.750000"
-       y1="29.000000"
-       x2="-19.500000"
-       y2="18.750000" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6699"
-       id="linearGradient10012"
-       gradientUnits="userSpaceOnUse"
-       x1="-22.976406"
-       y1="18.516047"
-       x2="-14.360273"
-       y2="33.016045" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6711"
-       id="linearGradient10014"
-       gradientUnits="userSpaceOnUse"
-       x1="-16.387411"
-       y1="24.453547"
-       x2="-9.7352734"
-       y2="28.195539" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6719"
-       id="linearGradient10016"
-       gradientUnits="userSpaceOnUse"
-       x1="-17.863041"
-       y1="30.827509"
-       x2="-20.821646"
-       y2="25.015009" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient10020"
-       id="linearGradient10026"
-       x1="23.379572"
-       y1="28.369167"
-       x2="24.24518"
-       y2="6.0000024"
-       gradientUnits="userSpaceOnUse" />
-  </defs>
-  <sodipodi:namedview
-     stroke="#ef2929"
-     fill="#eeeeec"
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="0.25490196"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="95.591611"
-     inkscape:cy="-8.1950324"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:showpageshadow="false"
-     inkscape:window-width="972"
-     inkscape:window-height="862"
-     inkscape:window-x="871"
-     inkscape:window-y="190" />
-  <metadata
-     id="metadata4">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Jakub Steiner</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:source>http://jimmac.musichall.cz</dc:source>
-        <cc:license
-           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
-        <dc:title />
-      </cc:Work>
-      <cc:License
-         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Reproduction" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Distribution" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Notice" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Attribution" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/ShareAlike" />
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <path
-       inkscape:r_cy="true"
-       inkscape:r_cx="true"
-       id="path10010"
-       d="M 26.482036,37.621562 L 24.499994,37.621562 L 24.499994,6 L 26.482036,6 L 26.482036,37.620112 L 26.482036,37.621562 z "
-       style="fill:#a4a4a4;fill-rule:nonzero;stroke:#555753;stroke-miterlimit:4;stroke-opacity:1" />
-    <path
-       style="fill:#a4a4a4;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-       d="M 26,37.621562 L 24.982042,37.621562 L 24.982042,6 L 26,6 L 26,37.620112 L 26,37.621562 z "
-       id="path13009"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true" />
-    <path
-       style="fill:url(#linearGradient1553);fill-rule:nonzero;stroke:#888a85;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 43.499996,32.499982 L 7.5000001,32.499982 L 7.5000001,5.4999944 L 43.499996,5.4999944 L 43.499996,32.499982 L 43.499996,32.499982 z "
-       id="path13016"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true" />
-    <path
-       sodipodi:type="arc"
-       style="opacity:0.39010991;color:#000000;fill:url(#radialGradient9220);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="path8339"
-       sodipodi:cx="26.162951"
-       sodipodi:cy="44.022526"
-       sodipodi:rx="12.197592"
-       sodipodi:ry="2.2097087"
-       d="M 38.360542 44.022526 A 12.197592 2.2097087 0 1 1  13.965359,44.022526 A 12.197592 2.2097087 0 1 1  38.360542 44.022526 z"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true"
-       transform="matrix(1.749254,0,0,1.452548,-20.38301,-20.43749)" />
-    <g
-       transform="matrix(1.539016,0,0,1.539016,-12.89862,-11.05731)"
-       style="fill:#a4a4a4;fill-rule:nonzero;stroke:#555753;stroke-miterlimit:4;stroke-opacity:1"
-       id="g13020"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true">
-      <path
-         d="M 31.492,35.959 L 25.217,31.321 L 25.151306,31.665948 L 30.016,35.955 L 31.492,35.959 z "
-         id="path13022"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true"
-         style="stroke:#555753;stroke-opacity:1"
-         sodipodi:nodetypes="ccccc" />
-      <path
-         d="M 18.408,35.959 L 24.683,31.321 L 24.63283,31.72338 L 19.883,35.955 L 18.408,35.959 z "
-         id="path13024"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true"
-         style="stroke:#555753;stroke-opacity:1"
-         sodipodi:nodetypes="ccccc" />
-    </g>
-    <path
-       inkscape:r_cy="true"
-       inkscape:r_cx="true"
-       id="path10018"
-       d="M 42.483508,31.500001 L 8.4999999,31.500001 L 8.4999999,6.5000025 L 42.483508,6.5000025 L 42.483508,31.500001 L 42.483508,31.500001 z "
-       style="fill:none;fill-rule:nonzero;stroke:url(#linearGradient10026);stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
-    <path
-       style="opacity:0.15999995;fill:#000000;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-       d="M 37.64607,5.8376811 L 8,5.8376811 L 8,8 C 9.671372,5.6514612 37.64607,5.8376811 37.64607,5.8376811 z "
-       id="path13041"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true" />
-    <rect
-       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="rect13420"
-       width="9"
-       height="1"
-       x="31"
-       y="9"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true" />
-    <rect
-       style="opacity:1;color:#000000;fill:url(#linearGradient9224);fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="rect9222"
-       width="40.779099"
-       height="4"
-       x="5.1403117"
-       y="1.5"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true"
-       rx="1.941476"
-       ry="1.9414761" />
-    <rect
-       inkscape:r_cy="true"
-       inkscape:r_cx="true"
-       y="11"
-       x="31"
-       height="1"
-       width="9"
-       id="rect9226"
-       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
-    <rect
-       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="rect9228"
-       width="9"
-       height="1"
-       x="31"
-       y="13"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true" />
-    <rect
-       inkscape:r_cy="true"
-       inkscape:r_cx="true"
-       y="15"
-       x="31"
-       height="1"
-       width="9"
-       id="rect9230"
-       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
-    <rect
-       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="rect9232"
-       width="6"
-       height="1"
-       x="31"
-       y="17"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true" />
-    <rect
-       inkscape:r_cy="true"
-       inkscape:r_cx="true"
-       y="22"
-       x="11"
-       height="1"
-       width="23"
-       id="rect9234"
-       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
-    <rect
-       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="rect9236"
-       width="23"
-       height="1"
-       x="11"
-       y="24"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true" />
-    <rect
-       inkscape:r_cy="true"
-       inkscape:r_cx="true"
-       y="26"
-       x="11"
-       height="1"
-       width="23"
-       id="rect9238"
-       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
-    <rect
-       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="rect9240"
-       width="16"
-       height="1"
-       x="11"
-       y="28"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true" />
-    <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient2462);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
-       id="path1693"
-       sodipodi:cx="32.92857"
-       sodipodi:cy="40.714287"
-       sodipodi:rx="16.071428"
-       sodipodi:ry="11.857142"
-       d="M 48.999998 40.714287 A 16.071428 11.857142 0 1 1  16.857141,40.714287 A 16.071428 11.857142 0 1 1  48.999998 40.714287 z"
-       transform="matrix(0.512138,0,0,0.512138,2.997478,-5.778852)"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true" />
-    <g
-       style="display:inline"
-       id="g6727"
-       transform="matrix(0.587368,0,0,0.587368,30.84597,-1.301179)"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true">
-      <path
-         id="path3931"
-         d="M -27.528542,18.092794 C -30.097576,19.791125 -31.511475,22.097833 -31.511475,24.590696 L -31.511475,26.659988 C -31.511475,29.150828 -30.097576,31.458211 -27.528542,33.156541 C -25.102053,34.760445 -21.895416,35.644009 -18.499359,35.644009 C -15.104587,35.644009 -11.89795,34.760445 -9.4701774,33.156541 C -6.9024275,31.458211 -5.4885277,29.151503 -5.4885277,26.659988 L -5.4885277,24.590696 C -5.4885277,22.097833 -6.9030696,19.79045 -9.4701774,18.092794 C -11.897308,16.490239 -15.103945,15.606001 -18.499359,15.606001 C -21.895416,15.606001 -25.102053,16.490239 -27.528542,18.092794 z "
-         style="fill:#670000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         id="path3933"
-         d="M -7.0244261,24.453547 C -8.4030105,21.067003 -13.077484,18.573465 -18.636768,18.573465 C -24.196053,18.573465 -28.870526,21.067003 -30.249111,24.453547 L -30.663906,24.453547 L -30.663906,26.523514 C -30.663906,30.913678 -25.27863,34.472213 -18.636768,34.472213 C -11.994265,34.472213 -6.6102729,30.913678 -6.6102729,26.523514 L -6.6102729,24.453547 L -7.0244261,24.453547 L -7.0244261,24.453547 z "
-         style="fill:#a40000;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         id="path3935"
-         d="M -6.6102729,24.453547 C -6.6102729,28.844385 -11.994265,32.402921 -18.636768,32.402921 C -25.279272,32.402921 -30.663906,28.844385 -30.663906,24.453547 C -30.663906,20.062708 -25.27863,16.504173 -18.636768,16.504173 C -11.994265,16.504173 -6.6102729,20.062708 -6.6102729,24.453547 L -6.6102729,24.453547 z "
-         style="fill:url(#linearGradient10012);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         id="path3937"
-         d="M -6.6102729,26.833098 L -6.6256833,24.666681 C -7.9297843,29.167459 -10.862246,31.074203 -14.549173,32.007678 L -14.549173,34.002103 C -10.558534,32.998483 -6.9871844,30.713358 -6.6102729,26.833098 L -6.6102729,26.833098 z "
-         style="fill:#204a87;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         id="path3939"
-         d="M -6.6102729,24.453547 C -6.8857329,29.533025 -13.16802,31.849176 -14.571646,31.937532 L -18.637411,24.453547 L -6.610915,24.453547 L -6.6102729,24.453547 z "
-         style="fill:url(#linearGradient10014);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         id="path3941"
-         d="M -21.154435,34.298198 L -21.154435,32.228906 C -18.891039,32.523652 -16.814494,32.575587 -14.571646,32.015097 L -14.549173,34.002778 C -16.428593,34.619249 -19.36876,34.648251 -21.154435,34.298873 L -21.154435,34.298198 z "
-         style="fill:#4e9a06;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         id="path3943"
-         d="M -18.637411,24.454221 L -14.571646,31.937532 C -17.06106,32.88652 -21.154435,32.228906 -21.154435,32.228906 L -18.637411,24.454221 z "
-         style="fill:url(#linearGradient10016);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-      <path
-         transform="matrix(0.946982,0,0,0.889701,-0.987461,2.688545)"
-         d="M -6.875 24.375 A 11.75 7.75 0 1 1  -30.375,24.375 A 11.75 7.75 0 1 1  -6.875 24.375 z"
-         sodipodi:ry="7.75"
-         sodipodi:rx="11.75"
-         sodipodi:cy="24.375"
-         sodipodi:cx="-18.625"
-         id="path5959"
-         style="opacity:0.31111115;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient10002);stroke-width:1.85479884;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
-         sodipodi:type="arc"
-         inkscape:r_cx="true"
-         inkscape:r_cy="true" />
-    </g>
-    <g
-       inkscape:r_cy="true"
-       inkscape:r_cx="true"
-       id="g10004"
-       style="fill:#a4a4a4;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
-       transform="matrix(1.539016,0,0,1.539016,-12.89862,-11.05731)">
-      <path
-         inkscape:r_cy="true"
-         inkscape:r_cx="true"
-         id="path10006"
-         d="M 30.015,35.956 L 31.492,35.959 L 25.217,31.321 L 24.778,31.307 L 30.016,35.955 L 30.015,35.956 z " />
-      <path
-         inkscape:r_cy="true"
-         inkscape:r_cx="true"
-         id="path10008"
-         d="M 19.884,35.956 L 18.408,35.959 L 24.683,31.321 L 25.121,31.307 L 19.883,35.955 L 19.884,35.956 z " />
-    </g>
-    <path
-       style="fill:url(#radialGradient1537);fill-rule:nonzero;stroke:#555753;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 27.839689,36.499985 C 27.839689,37.792418 26.79243,38.839676 25.499998,38.839676 C 24.207565,38.839676 23.160308,37.792418 23.160308,36.499985 C 23.160308,35.211057 24.207565,34.1603 25.499998,34.1603 C 26.79243,34.1603 27.839689,35.211057 27.839689,36.499985 z "
-       id="path13050"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true" />
-  </g>
-</svg>
diff --git a/trytond/ir/ui/icons/tryton-readonly.svg b/trytond/ir/ui/icons/tryton-readonly.svg
deleted file mode 100644
index 10cdd97..0000000
--- a/trytond/ir/ui/icons/tryton-readonly.svg
+++ /dev/null
@@ -1,298 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   inkscape:export-ydpi="90.000000"
-   inkscape:export-xdpi="90.000000"
-   inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
-   width="48px"
-   height="48px"
-   id="svg11300"
-   sodipodi:version="0.32"
-   inkscape:version="0.43+devel"
-   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/emblems"
-   sodipodi:docname="emblem-readonly.svg">
-  <defs
-     id="defs3">
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient6719"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5060">
-      <stop
-         style="stop-color:black;stop-opacity:1;"
-         offset="0"
-         id="stop5062" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5064" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient6717"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       id="linearGradient5048">
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="0"
-         id="stop5050" />
-      <stop
-         id="stop5056"
-         offset="0.5"
-         style="stop-color:black;stop-opacity:1;" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5052" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5048"
-       id="linearGradient6715"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
-       x1="302.85715"
-       y1="366.64789"
-       x2="302.85715"
-       y2="609.50507" />
-    <linearGradient
-       id="linearGradient11327">
-      <stop
-         style="stop-color:#7d6400;stop-opacity:1;"
-         offset="0"
-         id="stop11329" />
-      <stop
-         style="stop-color:#be9700;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop11331" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2092">
-      <stop
-         id="stop2094"
-         offset="0"
-         style="stop-color:#fff7b0;stop-opacity:1;" />
-      <stop
-         style="stop-color:#ffec41;stop-opacity:1.0000000;"
-         offset="0.20999999"
-         id="stop2098" />
-      <stop
-         id="stop2293"
-         offset="0.83999997"
-         style="stop-color:#e2cc00;stop-opacity:1;" />
-      <stop
-         id="stop2100"
-         offset="1"
-         style="stop-color:#c3af00;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient11335">
-      <stop
-         style="stop-color:#6f716d;stop-opacity:1;"
-         offset="0"
-         id="stop11337" />
-      <stop
-         style="stop-color:#9ea09c;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop11339" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient10591">
-      <stop
-         style="stop-color:#cad0c6;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop10593" />
-      <stop
-         id="stop10599"
-         offset="0.50000000"
-         style="stop-color:#eaece9;stop-opacity:1.0000000;" />
-      <stop
-         style="stop-color:#c5cbc0;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop10595" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient11520">
-      <stop
-         id="stop11522"
-         offset="0.0000000"
-         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
-      <stop
-         id="stop11524"
-         offset="1.0000000"
-         style="stop-color:#dcdcdc;stop-opacity:1.0000000;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient11508"
-       inkscape:collect="always">
-      <stop
-         id="stop11510"
-         offset="0"
-         style="stop-color:#000000;stop-opacity:1;" />
-      <stop
-         id="stop11512"
-         offset="1"
-         style="stop-color:#000000;stop-opacity:0;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11508"
-       id="radialGradient1348"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.000000,0.000000,0.000000,0.338462,-1.435476e-15,29.48178)"
-       cx="30.203562"
-       cy="44.565483"
-       fx="30.203562"
-       fy="44.565483"
-       r="6.5659914" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11520"
-       id="radialGradient1366"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.995058,-1.651527e-32,0.000000,1.995058,-24.32488,-35.70087)"
-       cx="24.445690"
-       cy="35.878170"
-       fx="24.445690"
-       fy="35.878170"
-       r="20.530962" />
-  </defs>
-  <sodipodi:namedview
-     stroke="#ef2929"
-     fill="#729fcf"
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="0.25490196"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="24.194962"
-     inkscape:cy="-13.983676"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:showpageshadow="false"
-     inkscape:window-width="872"
-     inkscape:window-height="707"
-     inkscape:window-x="155"
-     inkscape:window-y="230" />
-  <metadata
-     id="metadata4">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Jakub Steiner</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:source>http://jimmac.musichall.cz</dc:source>
-        <cc:license
-           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
-        <dc:title>Read Only Emblem</dc:title>
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>emblem</rdf:li>
-            <rdf:li>read-only</rdf:li>
-            <rdf:li>nowrite</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-      </cc:Work>
-      <cc:License
-         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Reproduction" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Distribution" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Notice" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Attribution" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/ShareAlike" />
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <g
-       transform="matrix(2.243788e-2,0,0,2.086758e-2,44.06795,40.547)"
-       id="g6707">
-      <rect
-         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         id="rect6709"
-         width="1339.6335"
-         height="478.35718"
-         x="-1559.2523"
-         y="-150.69685" />
-      <path
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
-         id="path6711"
-         sodipodi:nodetypes="cccc" />
-      <path
-         sodipodi:nodetypes="cccc"
-         id="path6713"
-         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
-    </g>
-    <rect
-       ry="5.4548240"
-       rx="5.4548240"
-       y="3.5233452"
-       x="4.4147282"
-       height="40.061924"
-       width="40.061924"
-       id="rect11518"
-       style="opacity:1.0000000;color:#000000;fill:url(#radialGradient1366);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#9b9b9b;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
-    <rect
-       style="opacity:1.0000000;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
-       id="rect11528"
-       width="37.696587"
-       height="37.696587"
-       x="5.5973887"
-       y="4.7060070"
-       rx="4.2426391"
-       ry="4.2426391" />
-    <path
-       style="opacity:0.69886361;color:#000000;fill:#888a85;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.9999997;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
-       d="M 23.906254,10.878347 C 19.835833,11.005873 17.137508,12.963117 17.137508,17.000087 L 17.137508,21.120489 L 16.221429,21.120489 C 15.54928,21.120489 15,21.583436 15,22.163203 L 15,32.993974 C 15,33.573741 15.54928,34.036689 16.221429,34.036688 L 32.795528,34.036688 C 33.467687,34.036688 34,33.57374 34,32.993974 L 34,22.163203 C 34,21.583437 33.467687,21.120489 32.795528,21.120489 L 31.862492,21.120489 L 31.87946,17.067359 C 31.87946,12.782023 28.950269,10.931241 24.516968,10.878347 C 24.310278,10.875868 24.10644,10.872076 23.906254,10.878347 z M 24.313392,13.58604 C 24.388241,13.584353 24.4735,13.58604 24.550894,13.58604 C 29.469737,13.58604 29.092541,17.084436 29.165175,18.126891 L 29.165175,21.120489 L 19.902675,21.120489 L 19.902675,18.143709 C 19.885214,17.109531 19.597992,13.692412 24.313392,13.58604 z "
-       id="path2086"
-       inkscape:r_cx="true"
-       inkscape:r_cy="true" />
-  </g>
-</svg>
diff --git a/trytond/ir/ui/icons/tryton-spreadsheet.svg b/trytond/ir/ui/icons/tryton-spreadsheet.svg
deleted file mode 100644
index 0f7eb3a..0000000
--- a/trytond/ir/ui/icons/tryton-spreadsheet.svg
+++ /dev/null
@@ -1,627 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   sodipodi:docname="tryton-spreadsheet.svg"
-   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/mimetypes"
-   inkscape:version="0.46"
-   sodipodi:version="0.32"
-   id="svg13684"
-   height="48.000000px"
-   width="48.000000px"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs3">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 24 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="48 : 24 : 1"
-       inkscape:persp3d-origin="24 : 16 : 1"
-       id="perspective13831" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient6719"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5060">
-      <stop
-         style="stop-color:black;stop-opacity:1;"
-         offset="0"
-         id="stop5062" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5064" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient6717"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       id="linearGradient5048">
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="0"
-         id="stop5050" />
-      <stop
-         id="stop5056"
-         offset="0.5"
-         style="stop-color:black;stop-opacity:1;" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5052" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5048"
-       id="linearGradient6715"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
-       x1="302.85715"
-       y1="366.64789"
-       x2="302.85715"
-       y2="609.50507" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6687"
-       id="linearGradient6746"
-       gradientUnits="userSpaceOnUse"
-       x1="-20.750000"
-       y1="29.000000"
-       x2="-19.500000"
-       y2="18.750000" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient6687">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop6689" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop6691" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6687"
-       id="linearGradient6744"
-       gradientUnits="userSpaceOnUse"
-       x1="-20.750000"
-       y1="29.000000"
-       x2="-19.500000"
-       y2="18.750000" />
-    <linearGradient
-       id="linearGradient6719">
-      <stop
-         style="stop-color:#73d216;stop-opacity:1;"
-         offset="0"
-         id="stop6721" />
-      <stop
-         style="stop-color:#d5f7b3;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop6723" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6719"
-       id="linearGradient6742"
-       gradientUnits="userSpaceOnUse"
-       x1="-17.863041"
-       y1="30.827509"
-       x2="-20.821646"
-       y2="25.015009" />
-    <linearGradient
-       id="linearGradient6711">
-      <stop
-         style="stop-color:#5b8ccb;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop6713" />
-      <stop
-         style="stop-color:#3465a4;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop6715" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6711"
-       id="linearGradient6740"
-       gradientUnits="userSpaceOnUse"
-       x1="-16.387411"
-       y1="24.453547"
-       x2="-9.7352734"
-       y2="28.195539" />
-    <linearGradient
-       id="linearGradient6699">
-      <stop
-         style="stop-color:#ff7171;stop-opacity:1.0000000;"
-         offset="0.0000000"
-         id="stop6701" />
-      <stop
-         style="stop-color:#cc0000;stop-opacity:1.0000000;"
-         offset="1.0000000"
-         id="stop6703" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6699"
-       id="linearGradient6738"
-       gradientUnits="userSpaceOnUse"
-       x1="-22.976406"
-       y1="18.516047"
-       x2="-14.360273"
-       y2="33.016045" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4542">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop4544" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop4546" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4542"
-       id="radialGradient4548"
-       cx="24.306795"
-       cy="42.07798"
-       fx="24.306795"
-       fy="42.07798"
-       r="15.821514"
-       gradientTransform="matrix(1.000000,0.000000,0.000000,0.284916,-2.846681e-15,30.08928)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient2456">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop2458" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop2460" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient269">
-      <stop
-         id="stop270"
-         offset="0.0000000"
-         style="stop-color:#a3a3a3;stop-opacity:1.0000000;" />
-      <stop
-         id="stop271"
-         offset="1.0000000"
-         style="stop-color:#4c4c4c;stop-opacity:1.0000000;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient269"
-       id="radialGradient15656"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.971646,0.000000,0.000000,1.034707,3.240408,0.495684)"
-       cx="8.8244190"
-       cy="3.7561285"
-       fx="8.8244190"
-       fy="3.7561285"
-       r="37.751713" />
-    <linearGradient
-       id="linearGradient259">
-      <stop
-         id="stop260"
-         offset="0.0000000"
-         style="stop-color:#fafafa;stop-opacity:1.0000000;" />
-      <stop
-         id="stop261"
-         offset="1.0000000"
-         style="stop-color:#bbbbbb;stop-opacity:1.0000000;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient259"
-       id="radialGradient15658"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.963839,0.000000,0.000000,1.043088,-0.124825,-0.151970)"
-       cx="33.966679"
-       cy="35.736916"
-       fx="33.966679"
-       fy="35.736916"
-       r="86.708450" />
-    <linearGradient
-       id="linearGradient15662">
-      <stop
-         id="stop15664"
-         offset="0.0000000"
-         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
-      <stop
-         id="stop15666"
-         offset="1.0000000"
-         style="stop-color:#f8f8f8;stop-opacity:1.0000000;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient15662"
-       id="radialGradient15668"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.974777,0.000000,0.000000,1.034091,3.161873,0.559274)"
-       cx="8.1435566"
-       cy="7.2678967"
-       fx="8.1435566"
-       fy="7.2678967"
-       r="38.158695" />
-    <linearGradient
-       y2="99.2984"
-       x2="118.302"
-       y1="82.0938"
-       x1="97.2412"
-       gradientUnits="userSpaceOnUse"
-       id="aigrd13">
-      <stop
-         id="stop12995"
-         style="stop-color:#E8F066"
-         offset="0" />
-      <stop
-         id="stop12997"
-         style="stop-color:#949941"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       y2="100.6528"
-       x2="115.5175"
-       y1="89.1104"
-       x1="90.8311"
-       gradientUnits="userSpaceOnUse"
-       id="aigrd12">
-      <stop
-         id="stop12988"
-         style="stop-color:#E8F066"
-         offset="0" />
-      <stop
-         id="stop12990"
-         style="stop-color:#777A34"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       y2="92.6123"
-       x2="124.8197"
-       y1="75.1099"
-       x1="105.0923"
-       gradientUnits="userSpaceOnUse"
-       id="aigrd11">
-      <stop
-         id="stop12981"
-         style="stop-color:#3FA6CC"
-         offset="0" />
-      <stop
-         id="stop12983"
-         style="stop-color:#00687A"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       y2="94.8"
-       x2="126.1107"
-       y1="84.7578"
-       x1="107.8672"
-       gradientUnits="userSpaceOnUse"
-       id="aigrd10">
-      <stop
-         id="stop12974"
-         style="stop-color:#2C7894"
-         offset="0" />
-      <stop
-         id="stop12976"
-         style="stop-color:#0E3D47"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       y2="95.8999"
-       x2="118.2002"
-       y1="78.1079"
-       x1="105.8184"
-       gradientUnits="userSpaceOnUse"
-       id="aigrd9">
-      <stop
-         id="stop12967"
-         style="stop-color:#C1553A"
-         offset="0" />
-      <stop
-         id="stop12969"
-         style="stop-color:#803926"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       y2="98.8832"
-       x2="118.3481"
-       y1="81.1763"
-       x1="106.0254"
-       gradientUnits="userSpaceOnUse"
-       id="aigrd8">
-      <stop
-         id="stop12960"
-         style="stop-color:#C09287"
-         offset="0" />
-      <stop
-         id="stop12962"
-         style="stop-color:#803926"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd8"
-       id="linearGradient1681"
-       gradientUnits="userSpaceOnUse"
-       x1="106.0254"
-       y1="81.1763"
-       x2="118.3481"
-       y2="98.8832" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd9"
-       id="linearGradient1683"
-       gradientUnits="userSpaceOnUse"
-       x1="105.8184"
-       y1="78.1079"
-       x2="118.2002"
-       y2="95.8999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd10"
-       id="linearGradient1685"
-       gradientUnits="userSpaceOnUse"
-       x1="107.8672"
-       y1="84.7578"
-       x2="126.1107"
-       y2="94.8" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd11"
-       id="linearGradient1687"
-       gradientUnits="userSpaceOnUse"
-       x1="105.0923"
-       y1="75.1099"
-       x2="124.8197"
-       y2="92.6123" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd12"
-       id="linearGradient1689"
-       gradientUnits="userSpaceOnUse"
-       x1="90.8311"
-       y1="89.1104"
-       x2="115.5175"
-       y2="100.6528" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#aigrd13"
-       id="linearGradient1691"
-       gradientUnits="userSpaceOnUse"
-       x1="97.2412"
-       y1="82.0938"
-       x2="118.302"
-       y2="99.2984" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2456"
-       id="radialGradient2462"
-       gradientTransform="scale(1.164226,0.85894)"
-       cx="28.283663"
-       cy="47.400623"
-       fx="28.283663"
-       fy="47.400623"
-       r="13.804391"
-       gradientUnits="userSpaceOnUse" />
-  </defs>
-  <sodipodi:namedview
-     inkscape:showpageshadow="false"
-     inkscape:window-y="16"
-     inkscape:window-x="0"
-     inkscape:window-height="784"
-     inkscape:window-width="1280"
-     inkscape:document-units="px"
-     inkscape:grid-bbox="true"
-     showgrid="false"
-     inkscape:current-layer="layer1"
-     inkscape:cy="24"
-     inkscape:cx="24"
-     inkscape:zoom="12.083333"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     inkscape:grid-points="true" />
-  <metadata
-     id="metadata4">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title>Spreadsheet</dc:title>
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Jakub Steiner</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:source>http://jimmac.musichall.cz</dc:source>
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>spreadheet</rdf:li>
-            <rdf:li>document</rdf:li>
-            <rdf:li>office</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-        <cc:license
-           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
-      </cc:Work>
-      <cc:License
-         rdf:about="http://creativecommons.org/licenses/by/2.0/">
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Reproduction" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Distribution" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Notice" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Attribution" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/ShareAlike" />
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     inkscape:label="Layer 1"
-     id="layer1"
-     style="display:inline">
-    <g
-       style="display:inline"
-       transform="matrix(2.144924e-2,0,0,2.086758e-2,43.32772,41.1536)"
-       id="g6707">
-      <rect
-         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         id="rect6709"
-         width="1339.6335"
-         height="478.35718"
-         x="-1559.2523"
-         y="-150.69685" />
-      <path
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
-         id="path6711"
-         sodipodi:nodetypes="cccc" />
-      <path
-         sodipodi:nodetypes="cccc"
-         id="path6713"
-         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
-    </g>
-    <rect
-       style="color:#000000;fill:url(#radialGradient15658);fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15656);stroke-width:0.99999970;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
-       id="rect15391"
-       width="34.996506"
-       height="40.997345"
-       x="6.5017405"
-       y="3.5013213"
-       ry="1.1490481"
-       rx="1.1490482" />
-    <rect
-       style="color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15668);stroke-width:0.99999970;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
-       id="rect15660"
-       width="32.996056"
-       height="38.996326"
-       x="7.5033512"
-       y="4.5018268"
-       ry="0.14904855"
-       rx="0.14904846" />
-    <path
-       id="rect13655"
-       d="M 10.000000,6.0022030 L 10.000000,10.966297 L 10.000000,41.002203 L 20.000000,41.000000 L 20.000000,11.000000 L 38.000000,11.000000 L 38.000000,6.0022030 L 10.000000,6.0022030 z "
-       style="color:#000000;fill:#000000;fill-opacity:0.21052630;fill-rule:evenodd;stroke:none;stroke-width:0.60787594;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
-       sodipodi:nodetypes="cccccccc" />
-    <path
-       id="path13660"
-       d="M 37.500415,10.502203 L 10.499583,10.502203"
-       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000001px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
-    <path
-       id="path13662"
-       d="M 37.500755,16.500000 L 10.499230,16.500000"
-       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
-    <path
-       id="path13664"
-       d="M 37.500755,22.500000 L 10.499230,22.500000"
-       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
-    <path
-       id="path13666"
-       d="M 37.500755,28.500000 L 10.499230,28.500000"
-       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
-    <path
-       id="path13668"
-       d="M 37.501332,34.500000 L 10.499823,34.500000"
-       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999964px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
-    <path
-       id="path13682"
-       d="M 37.500755,40.500000 L 10.499230,40.500000"
-       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
-    <path
-       id="path2464"
-       d="M 37.511644,13.500000 L 10.500000,13.500000"
-       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000001px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
-    <path
-       id="path2466"
-       d="M 37.500755,19.500000 L 10.499230,19.500000"
-       style="fill:none;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
-    <path
-       id="path2468"
-       d="M 37.500755,25.500000 L 10.499230,25.500000"
-       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
-    <path
-       id="path2470"
-       d="M 37.500755,31.500000 L 10.499230,31.500000"
-       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
-    <path
-       id="path2472"
-       d="M 37.500755,37.500000 L 10.499230,37.500000"
-       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
-    <path
-       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999982px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.15789469"
-       d="M 37.500000,6.4997386 L 37.500000,40.500300"
-       id="path2485" />
-    <path
-       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.15789469"
-       d="M 31.500000,6.4996867 L 31.500000,40.500315"
-       id="path2487" />
-    <path
-       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.15789469"
-       d="M 25.500000,6.4996865 L 25.500000,40.500314"
-       id="path2489" />
-    <path
-       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.15789469"
-       d="M 19.500000,6.4996867 L 19.500000,40.500315"
-       id="path2491" />
-    <path
-       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.15789469"
-       d="M 10.500000,6.4996867 L 10.500000,40.500315"
-       id="path2493" />
-    <path
-       id="path2495"
-       d="M 37.500227,6.5022030 L 10.499460,6.5022030"
-       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
-  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer2"
-     inkscape:label="emblem"
-     style="display:inline" />
-</svg>
diff --git a/trytond/ir/ui/icons/tryton-tree.svg b/trytond/ir/ui/icons/tryton-tree.svg
deleted file mode 100644
index 4be6463..0000000
--- a/trytond/ir/ui/icons/tryton-tree.svg
+++ /dev/null
@@ -1,348 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="48px"
-   height="48px"
-   id="svg4198"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/actions"
-   sodipodi:docname="tryton-tree.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs4200">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 24 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="48 : 24 : 1"
-       inkscape:persp3d-origin="24 : 16 : 1"
-       id="perspective21117" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient5031"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient5060">
-      <stop
-         style="stop-color:black;stop-opacity:1;"
-         offset="0"
-         id="stop5062" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5064" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5060"
-       id="radialGradient5029"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
-       cx="605.71429"
-       cy="486.64789"
-       fx="605.71429"
-       fy="486.64789"
-       r="117.14286" />
-    <linearGradient
-       id="linearGradient5048">
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="0"
-         id="stop5050" />
-      <stop
-         id="stop5056"
-         offset="0.5"
-         style="stop-color:black;stop-opacity:1;" />
-      <stop
-         style="stop-color:black;stop-opacity:0;"
-         offset="1"
-         id="stop5052" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5048"
-       id="linearGradient5027"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
-       x1="302.85715"
-       y1="366.64789"
-       x2="302.85715"
-       y2="609.50507" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3558">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop3560" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop3562" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3558"
-       id="radialGradient3564"
-       cx="22.571428"
-       cy="30.857143"
-       fx="22.571428"
-       fy="30.857143"
-       r="15.571428"
-       gradientTransform="matrix(1.000000,0.000000,0.000000,0.651376,4.638648e-15,10.75754)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       id="linearGradient15218">
-      <stop
-         style="stop-color:#f8f8f7;stop-opacity:1;"
-         offset="0"
-         id="stop15220" />
-      <stop
-         id="stop2269"
-         offset="0.59928656"
-         style="stop-color:#e8e8e8;stop-opacity:1;" />
-      <stop
-         style="stop-color:#e2e2de;stop-opacity:1;"
-         offset="1"
-         id="stop15222" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient15218"
-       id="linearGradient15224"
-       x1="22.308331"
-       y1="18.992140"
-       x2="35.785294"
-       y2="39.498238"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.060837,0.000000,0.000000,0.987595,4.641161,4.108291)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient2259">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop2261" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop2263" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2259"
-       id="linearGradient2265"
-       x1="26.076092"
-       y1="26.696676"
-       x2="30.811172"
-       y2="42.007351"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.993566,0.000000,0.000000,1.000000,6.219859,4.033411)" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient2216">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop2218" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop2220" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2216"
-       id="linearGradient2222"
-       x1="36.8125"
-       y1="39.15625"
-       x2="39.0625"
-       y2="42.0625"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(6.161836,4.033411)" />
-    <linearGradient
-       id="linearGradient2224">
-      <stop
-         style="stop-color:#7c7c7c;stop-opacity:1;"
-         offset="0"
-         id="stop2226" />
-      <stop
-         style="stop-color:#b8b8b8;stop-opacity:1;"
-         offset="1"
-         id="stop2228" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient15218"
-       id="linearGradient2240"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.342704,0.000000,0.000000,1.235378,-8.219611,-6.577189)"
-       x1="20.794008"
-       y1="18.378813"
-       x2="35.596001"
-       y2="39.60046" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#bebebe"
-     borderopacity="1.0000000"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="12.083333"
-     inkscape:cx="24"
-     inkscape:cy="24"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1280"
-     inkscape:window-height="784"
-     inkscape:window-x="0"
-     inkscape:window-y="16"
-     inkscape:showpageshadow="false" />
-  <metadata
-     id="metadata4203">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title>Justify Center</dc:title>
-        <dc:date>2005-10-29</dc:date>
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Andreas Nilsson</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>justify</rdf:li>
-            <rdf:li>center</rdf:li>
-            <rdf:li>format</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-        <cc:license
-           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
-      </cc:Work>
-      <cc:License
-         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Reproduction" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/Distribution" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Notice" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/Attribution" />
-        <cc:permits
-           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
-        <cc:requires
-           rdf:resource="http://web.resource.org/cc/ShareAlike" />
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <g
-       style="display:inline"
-       id="g5022"
-       transform="matrix(2.330573e-2,0,0,1.227058e-2,44.47891,44.41691)">
-      <rect
-         y="-150.69685"
-         x="-1559.2523"
-         height="478.35718"
-         width="1339.6335"
-         id="rect4173"
-         style="opacity:0.40206185;color:black;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
-      <path
-         sodipodi:nodetypes="cccc"
-         id="path5058"
-         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
-      <path
-         style="opacity:0.40206185;color:black;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
-         id="path5018"
-         sodipodi:nodetypes="cccc" />
-    </g>
-    <rect
-       style="opacity:1;fill:url(#linearGradient2240);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4238"
-       width="38.996792"
-       height="45.003101"
-       x="4.5016017"
-       y="1.4968988"
-       rx="0.56650788"
-       ry="0.56650823" />
-    <rect
-       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="rect4248"
-       width="15"
-       height="2"
-       x="-24"
-       y="10"
-       transform="scale(-1,1)" />
-    <rect
-       y="16"
-       x="-30"
-       height="2"
-       width="15"
-       id="rect4250"
-       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       transform="scale(-1,1)" />
-    <rect
-       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="rect4252"
-       width="15"
-       height="2"
-       x="-40"
-       y="22"
-       transform="scale(-1,1)" />
-    <rect
-       y="28"
-       x="-40"
-       height="2"
-       width="15"
-       id="rect4254"
-       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       transform="scale(-1,1)" />
-    <rect
-       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="rect4256"
-       width="15"
-       height="2"
-       x="-30"
-       y="34"
-       transform="scale(-1,1)" />
-    <rect
-       style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect2245"
-       width="37.025566"
-       height="43.022316"
-       x="5.4997125"
-       y="2.4997177"
-       rx="0"
-       ry="0" />
-  </g>
-</svg>
commit bf80579678ba61774667cc9194e8db234ecaf24c
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Sun Jun 5 13:15:00 2011 +0200

    Merging upstream version 2.0.1.

diff --git a/CHANGELOG b/CHANGELOG
index b25add9..97ddc4b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 2.0.1 - 2011-05-29
+* Bug fixes (see mercurial logs for details)
+
 Version 2.0.0 - 2011-04-26
 * Bug fixes (see mercurial logs for details)
 * Use md5 hash for indexing translation
diff --git a/PKG-INFO b/PKG-INFO
index 9a37e16..f084b01 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond
-Version: 2.0.0
+Version: 2.0.1
 Summary: Tryton server
 Home-page: http://www.tryton.org/
 Author: B2CK
diff --git a/setup.py b/setup.py
index 553412e..5bb69db 100644
--- a/setup.py
+++ b/setup.py
@@ -32,9 +32,11 @@ setup(name=PACKAGE,
         'trytond.ir': ['*.xml', '*.csv'],
         'trytond.ir.module': ['*.xml'],
         'trytond.ir.ui': ['*.xml', '*.rng', '*.rnc'],
+        'trytond.ir.ui.icons': ['*.svg'],
         'trytond.res': ['*.xml', '*.csv'],
         'trytond.webdav': ['*.xml', '*.csv'],
         'trytond.workflow': ['*.xml', '*.csv'],
+        'trytond.test': ['*.xml'],
     },
     scripts=['bin/trytond'],
     classifiers=[
diff --git a/trytond.egg-info/PKG-INFO b/trytond.egg-info/PKG-INFO
index 9a37e16..f084b01 100644
--- a/trytond.egg-info/PKG-INFO
+++ b/trytond.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: trytond
-Version: 2.0.0
+Version: 2.0.1
 Summary: Tryton server
 Home-page: http://www.tryton.org/
 Author: B2CK
diff --git a/trytond.egg-info/SOURCES.txt b/trytond.egg-info/SOURCES.txt
index 9dabba6..e3d84d9 100644
--- a/trytond.egg-info/SOURCES.txt
+++ b/trytond.egg-info/SOURCES.txt
@@ -125,6 +125,7 @@ trytond/ir/ui/ui.xml
 trytond/ir/ui/view.py
 trytond/ir/ui/view.xml
 trytond/ir/ui/icons/LICENSE
+trytond/ir/ui/icons/__init__.py
 trytond/ir/ui/icons/tryton-calendar.svg
 trytond/ir/ui/icons/tryton-clock.svg
 trytond/ir/ui/icons/tryton-graph.svg
diff --git a/trytond/ir/translation.py b/trytond/ir/translation.py
index ee9277c..142b935 100644
--- a/trytond/ir/translation.py
+++ b/trytond/ir/translation.py
@@ -713,6 +713,7 @@ class ReportTranslationSet(Wizard):
                 strings += self._translate_report(document.documentElement)
 
             for string in {}.fromkeys(strings).keys():
+                src_md5 = self.get_src_md5(string)
                 done = False
                 if string in trans_reports:
                     del trans_reports[string]
@@ -729,22 +730,24 @@ class ReportTranslationSet(Wizard):
                     if seqmatch.ratio() > 0.6:
                         cursor.execute('UPDATE ir_translation ' \
                                 'SET src = %s, ' \
-                                    'fuzzy = %s ' \
+                                    'fuzzy = %s, ' \
+                                    'src_md5 = %s ' \
                                 'WHERE name = %s ' \
                                     'AND type = %s ' \
                                     'AND src = %s ' \
                                     'AND module = %s',
-                                (string, True, report.report_name, 'odt',
-                                    string_trans, report.module))
+                                (string, True, src_md5, report.report_name,
+                                    'odt', string_trans, report.module))
                         del trans_reports[string_trans]
                         done = True
                         break
                 if not done:
                     cursor.execute('INSERT INTO ir_translation ' \
-                            '(name, lang, type, src, value, module, fuzzy)' \
-                            'VALUES (%s, %s, %s, %s, %s, %s, %s)',
+                            '(name, lang, type, src, value, module, fuzzy, '\
+                             'src_md5)' \
+                            'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)',
                             (report.report_name, 'en_US', 'odt', string, '',
-                                report.module, False))
+                                report.module, False, src_md5))
             if strings:
                 cursor.execute('DELETE FROM ir_translation ' \
                         'WHERE name = %s ' \
diff --git a/trytond/ir/ui/icons/__init__.py b/trytond/ir/ui/icons/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/trytond/protocols/dispatcher.py b/trytond/protocols/dispatcher.py
index 2faa818..3767b27 100644
--- a/trytond/protocols/dispatcher.py
+++ b/trytond/protocols/dispatcher.py
@@ -33,6 +33,7 @@ def dispatch(host, port, protocol, database_name, user, session, object_type,
             try:
                 database = Database(database_name).connect()
                 cursor = database.cursor()
+                cursor.close()
             except Exception:
                 return False
             res = security.login(database_name, user, session)
@@ -80,8 +81,10 @@ def dispatch(host, port, protocol, database_name, user, session, object_type,
             database = Database().connect()
             try:
                 cursor = database.cursor()
-                res = database.list(cursor)
-                cursor.close(close=True)
+                try:
+                    res = database.list(cursor)
+                finally:
+                    cursor.close(close=True)
             except Exception:
                 res = []
             return res
diff --git a/trytond/protocols/webdav.py b/trytond/protocols/webdav.py
index e29fe3d..f55d98e 100644
--- a/trytond/protocols/webdav.py
+++ b/trytond/protocols/webdav.py
@@ -170,12 +170,11 @@ class TrytonDAVInterface(iface.dav_interface):
         dbname, dburi = self._get_dburi(uri)
         if not dbname:
             database = Database().connect()
+            cursor = database.cursor()
             try:
-                try:
-                    cursor = database.cursor()
-                    lists = database.list(cursor)
-                except Exception:
-                    lists = []
+                lists = database.list(cursor)
+            except Exception:
+                lists = []
             finally:
                 cursor.close()
             for dbname in lists:
diff --git a/trytond/server.py b/trytond/server.py
index 419fb11..3822042 100644
--- a/trytond/server.py
+++ b/trytond/server.py
@@ -87,26 +87,30 @@ class TrytonServer(object):
             database = Database(db_name).connect()
             cursor = database.cursor()
 
-            if CONFIG['init']:
-                if not cursor.test():
-                    self.logger.info("init db")
-                    Database.init(cursor)
-                    init[db_name] = True
-                cursor.commit()
+            try:
+                if CONFIG['init']:
+                    if not cursor.test():
+                        self.logger.info("init db")
+                        Database.init(cursor)
+                        init[db_name] = True
+                    cursor.commit()
+                elif not cursor.test():
+                    raise Exception("'%s' is not a Tryton database!" % db_name)
+            finally:
                 cursor.close()
-            elif not cursor.test():
-                raise Exception("'%s' is not a Tryton database!" % db_name)
 
         Pool.start()
 
         for db_name in CONFIG["db_name"]:
             cursor = Database(db_name).connect().cursor()
-            if not cursor.test():
-                raise Exception("'%s' is not a Tryton database!" % db_name)
-            cursor.execute('SELECT code FROM ir_lang ' \
-                    'WHERE translatable')
-            lang = [x[0] for x in cursor.fetchall()]
-            cursor.close()
+            try:
+                if not cursor.test():
+                    raise Exception("'%s' is not a Tryton database!" % db_name)
+                cursor.execute('SELECT code FROM ir_lang ' \
+                        'WHERE translatable')
+                lang = [x[0] for x in cursor.fetchall()]
+            finally:
+                cursor.close()
             update = bool(CONFIG['init'] or CONFIG['update'])
             Pool(db_name).init(update=update, lang=lang)
 
@@ -129,17 +133,20 @@ class TrytonServer(object):
 
                 database = Database(db_name).connect()
                 cursor = database.cursor()
-                salt = ''.join(random.sample(string.letters + string.digits, 8))
-                password += salt
-                if hashlib:
-                    password = hashlib.sha1(password).hexdigest()
-                else:
-                    password = sha.new(password).hexdigest()
-                cursor.execute('UPDATE res_user ' \
-                        'SET password = %s, salt = %s ' \
-                        'WHERE login = \'admin\'', (password, salt))
-                cursor.commit()
-                cursor.close()
+                try:
+                    salt = ''.join(random.sample(
+                        string.letters + string.digits, 8))
+                    password += salt
+                    if hashlib:
+                        password = hashlib.sha1(password).hexdigest()
+                    else:
+                        password = sha.new(password).hexdigest()
+                    cursor.execute('UPDATE res_user ' \
+                            'SET password = %s, salt = %s ' \
+                            'WHERE login = \'admin\'', (password, salt))
+                    cursor.commit()
+                finally:
+                    cursor.close()
 
         if update:
             self.logger.info('Update/Init succeed!')
diff --git a/trytond/tools/misc.py b/trytond/tools/misc.py
index 95092ba..0639eab 100644
--- a/trytond/tools/misc.py
+++ b/trytond/tools/misc.py
@@ -119,6 +119,8 @@ def file_open(name, mode="r", subdir='modules'):
     name2 = False
     while True:
         head, tail = os.path.split(head)
+        if head == root_path:
+            break
         if not tail:
             break
         if zipname:
diff --git a/trytond/version.py b/trytond/version.py
index 6844287..3728c3b 100644
--- a/trytond/version.py
+++ b/trytond/version.py
@@ -1,7 +1,7 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 PACKAGE = "trytond"
-VERSION = "2.0.0"
+VERSION = "2.0.1"
 LICENSE = "GPL-3"
 WEBSITE = "http://www.tryton.org/"
 
commit 4d53dda6574ea93e2b1bc6500318499c5cd239f6
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue May 24 19:13:38 2011 +0200

    Merging upstream version 2.0.0.

diff --git a/CHANGELOG b/CHANGELOG
index 94ca191..b25add9 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,14 +1,21 @@
-Version 1.8.4 - 2011-10-01
-* Bug fixes (see mercurial logs for details)
-
-Version 1.8.3 - 2011-05-29
-* Bug fixes (see mercurial logs for details)
-
-Version 1.8.2 - 2011-02-13
-* Bug fixes (see mercurial logs for details)
-
-Version 1.8.1 - 2010-11-07
+Version 2.0.0 - 2011-04-26
 * Bug fixes (see mercurial logs for details)
+* Use md5 hash for indexing translation
+* Merge tree and list views
+* Added autocompletion on fields.Char
+* Remove ir.default
+* Add type, last user and last modification on ir.attachment
+* Rename datas into data on ir.attachment
+* Add new configuration option to prevent database listing
+* Add warning to wizards
+* Add server-side icons
+* Add support for file link to BinaryField
+* Add model field access
+* Add loading attribute on fields
+* Remove priority attribute on fields
+* Model doesn't convert anymore ids for inherited methods
+* Remove required attribute on Boolean fields
+* Add One2One field
 * Add AUTOINCREMENT to sqlite primary key
 
 Version 1.8.0 - 2010-11-01
diff --git a/MANIFEST.in b/MANIFEST.in
index a0c7156..86683d2 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -16,6 +16,8 @@ include trytond/ir/module/*.xml
 include trytond/ir/ui/*.xml
 include trytond/ir/ui/*.rng
 include trytond/ir/ui/*.rnc
+include trytond/ir/ui/icons/*.svg
+include trytond/ir/ui/icons/LICENSE
 include trytond/res/*.xml
 include trytond/res/*.csv
 include trytond/test/*.xml
diff --git a/PKG-INFO b/PKG-INFO
index a0e511e..9a37e16 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,23 +1,110 @@
 Metadata-Version: 1.0
 Name: trytond
-Version: 1.8.4
+Version: 2.0.0
 Summary: Tryton server
 Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/1.8/
-Description: UNKNOWN
+Download-URL: http://downloads.tryton.org/2.0/
+Description: trytond
+        =======
+        
+        The server of the Tryton application platform.
+        A three-tiers  high-level general purpose application platform
+        written in Python and use Postgresql as main database engine.
+        It is the core base of an Open Source ERP.
+        It provides modularity, scalability and security.
+        
+        Installing
+        ----------
+        
+        See INSTALL
+        
+        Package Contents
+        ----------------
+        
+          bin/
+              Script for startup.
+        
+          doc/
+              sphinx documentation in reStructuredText.
+              To generate the HTML (trytond module must be in PYTHONPATH):
+        
+                sphinx-build doc/ doc/
+        
+          etc/
+              Configuration files.
+        
+          trytond/
+              trytond sources.
+        
+        Database Backends
+        -----------------
+        
+        Tryton is mainly developed for PostgreSQL but there is some other backends
+        available. Here is some warnings about using other backends:
+        
+          * MySQL
+        
+            * The lock implementation of MySQL requires that Tryton locks all tables.
+        
+            * There are problems with floating-point comparisons.
+              See: http://dev.mysql.com/doc/refman/5.5/en/problems-with-float.html
+        
+            * Tryton uses a VARCHAR(255) for Char, Selection and Reference fields.
+        
+            * MySQL can not create indexes containing text or blob fields.
+        
+            * Tryton uses a DECIMAL(65, 30) for Decimal fields and DOUBLE(255, 30) for
+              Float fields.
+        
+          * SQLite
+        
+            * SQLite can not alter column definitions nor create foreign keys.
+        
+            * SQL constraints are validated by Tryton instead of database.
+        
+        Support
+        -------
+        
+        If you encounter any problems with Tryton, please don't hesitate to ask
+        questions on the Tryton bug tracker, mailing list, wiki or IRC channel:
+        
+          http://bugs.tryton.org/
+          http://groups.tryton.org/
+          http://wiki.tryton.org/
+          irc://irc.freenode.net/tryton
+        
+        License
+        -------
+        
+        See LICENSE
+        
+        Copyright
+        ---------
+        
+        See COPYRIGHT
+        
+        
+        For more information please visit the Tryton web site:
+        
+          http://www.tryton.org/
+        
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: No Input/Output (Daemon)
 Classifier: Intended Audience :: Developers
 Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Dutch
 Classifier: Natural Language :: English
 Classifier: Natural Language :: French
 Classifier: Natural Language :: German
 Classifier: Natural Language :: Russian
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
 Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
diff --git a/doc/conf.py b/doc/conf.py
index 762d79c..1a76d5b 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -40,16 +40,16 @@ master_doc = 'index'
 
 # General information about the project.
 project = u'trytond'
-copyright = u'2008-2010, Bertrand Chenal, Cédric Krier, Ian Wilson, Udo Spallek'
+copyright = u'2008-2011, Bertrand Chenal, Cédric Krier, Ian Wilson, Udo Spallek'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
 # built documents.
 #
 # The short X.Y version.
-version = '1.8'
+version = '2.0'
 # The full version, including alpha/beta/rc tags.
-release = '1.8'
+release = '2.0'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/doc/ref/models/fields.rst b/doc/ref/models/fields.rst
index 49fb439..e99a788 100644
--- a/doc/ref/models/fields.rst
+++ b/doc/ref/models/fields.rst
@@ -65,14 +65,6 @@ one. Possible keys are ``required``, ``readonly`` and ``invisible``.
 The values are :class:`~trytond.pyson.PYSON` statements that will be evaluated
 with the values of the record.
 
-``priority``
-------------
-
-.. attribute:: Field.priority
-
-Give the order in which setter methods (if exist) are called on a model.
-Default is 0. Lower priority called first.
-
 ``change_default``
 ------------------
 
@@ -156,6 +148,13 @@ This is often used to allow ordering on :class:`Function` fields.
 A dictionary which will update the current context when opening a *relation
 field*.
 
+``loading``
+-----------
+
+.. attribute:: Field.loading
+
+Define how the field must be loaded: ``lazy`` or ``eager``.
+
 Field types
 ===========
 
@@ -199,6 +198,22 @@ A single line string field.
     If true, the value of the field is translatable. The value readed and
     stored will depend on the ``language`` defined in the context.
 
+.. attribute:: Char.autocomplete
+
+    A list of field names. If this attribute is set, the client will call the
+    method ``autocomplete_<field name>`` of the model when the user changes one
+    of those field value. The method signature is::
+
+        autocomplete_<field name>(values)
+
+    This method must return a list of string that will populate the
+    ComboboxEntry in the client.
+
+.. warning::
+    Note that you may need to set :attribute:`Fields.loading` to ``lazy``
+    when :attribute:`Char.translate` is ``True``.
+..
+
 Sha
 ---
 
@@ -497,6 +512,28 @@ Instance methods:
 
     Return the target :class:`~trytond.model.Model`.
 
+One2One
+-------
+
+.. class:: One2One(relation_name, origin, target, string[, datetime_field[, \**options]])
+
+A one-to-one relation field.
+
+.. warning::
+    It is on the relation_name :class:`~trytond.model.Model` that the
+    unicity of the couple (origin, target) must be checked.
+..
+
+.. attribute:: One2One.datetime_field
+
+    Same as :attr:`Many2One.datetime_field`
+
+Instance methods:
+
+.. method:: One2One.get_target(pool)
+
+    Return the target :class:`~trytond.model.Model`.
+
 Function
 --------
 
diff --git a/doc/topics/views/index.rst b/doc/topics/views/index.rst
index f8bee3b..52d7f3f 100644
--- a/doc/topics/views/index.rst
+++ b/doc/topics/views/index.rst
@@ -22,6 +22,7 @@ So generally, they are defined in xml files with this kind of xml:
       <field name="model">model name</field>
       <field name="type">type name</field>
       <!--field name="inherit" ref="inherit_view_id"/-->
+      <!--field name="field_childs">field name</field-->
       <field name="arch" type="xml">
           <![CDATA[
           View XML ...
@@ -62,22 +63,36 @@ Elements of the view are put on the screen following the rules:
 XML description
 ---------------
 
-Here is the list of common attributes:
+List of attributes shared by many form elements:
 
-    * ``id``: A unique identifier for the tag if there is no name attribute
+    .. _common-attributes-id:
+
+    * ``id``: A unique identifier for the tag if there is no name attribute.
+
+    .. _common-attributes-expand:
 
     * ``expand``: A boolean to specify if the label should expand to take up
       any extra vertical space.
 
+    .. _common-attributes-fill:
+
     * ``fill``: A boolean to specify if the label should fill the vertical
       space allocated to it in the table cell.
 
+    .. _common-attributes-xexpand:
+
     * ``xexpand``: The same as expand but for horizontal space.
 
+    .. _common-attributes-xfill:
+
     * ``xfill``: The same as fill but for horizontal space.
 
+    .. _common-attributes-colspan:
+
     * ``colspan``: The number of columns the widget must take in the table.
 
+    .. _common-attributes-states:
+
     * ``states``: A string of :ref:`PYSON statement <topics-pyson>` that will
       be evaluated with the values of the current record.
 
@@ -92,8 +107,10 @@ Here is the list of common attributes:
         * ``icon``: Only for button, it must return the icon name to use or
           False.
 
-    * ``help``: The string that will be displayed when the cursor stay over the
-      widget.
+    .. _common-attributes-help:
+
+    * ``help``: The string that will be displayed when the cursor hovers over
+      the widget.
 
 
 form
@@ -109,7 +126,7 @@ Each form view must start with this tag.
 
       ``on_write(self, ids)``
 
-    * ``col``: The number of column for the view.
+    * ``col``: The number of columns for the view.
 
     * ``cursor``: The name of the field that must have the cursor by default.
 
@@ -127,6 +144,23 @@ Display static string.
       left.  0.0 means no free space to the left.  1.0 means all free space to
       the left.
 
+    * ``id``: see common-attributes-id_.
+
+    * ``expand``: see in common-attributes-expand_.
+
+    * ``fill``: see in common-attributes-fill_.
+
+    * ``xexpand``: see in common-attributes-xexpand_.
+
+    * ``xfill``: see in common-attributes-xfill_.
+
+    * ``colspan``: see in common-attributes-colspan_.
+
+    * ``states``: see in common-attributes-states_.
+
+    * ``help``: see in common-attributes-help_.
+
+    * Requires that either ``id`` or ``name`` is defined.
 
 field
 ^^^^^
@@ -164,6 +198,17 @@ Display a field of the object with the value of the current record.
     * ``domain``: Only for One2Many, Many2One, Many2Many fields, it defines the
       domain that must be used when searching for related records.
 
+    * ``expand``: see in common-attributes-expand_.
+
+    * ``fill``: see in common-attributes-fill_.
+
+    * ``xexpand``: see in common-attributes-xexpand_.
+
+    * ``xfill``: see in common-attributes-xfill_.
+
+    * ``colspan``: see in common-attributes-colspan_.
+
+    * ``help``: see in common-attributes-help_.
 
 image
 ^^^^^
@@ -173,6 +218,17 @@ Display an image.
     * ``name``: the name of the image. It must be the name with the extension
       of an image from ``tryton/share/pixmaps/``.
 
+    * ``expand``: see in common-attributes-expand_.
+
+    * ``fill``: see in common-attributes-fill_.
+
+    * ``colspan``: see in common-attributes-colspan_.
+
+    * ``states``: see in common-attributes-states_.
+
+    * ``help``: see in common-attributes-help_.
+
+
 separator
 ^^^^^^^^^
 
@@ -183,6 +239,20 @@ Display a horizontal separator.
     * ``name``: The name of the field from which the description will be used
       for string.
 
+    * ``id``: see in common-attributes-id_.
+
+    * ``expand``: see in common-attributes-expand_.
+
+    * ``fill``: see in common-attributes-fill_.
+
+    * ``colspan``: see in common-attributes-colspan_.
+
+    * ``states``: see in common-attributes-states_.
+
+    * ``help``: see in common-attributes-help_.
+
+    * Requires that either ``id`` or ``name`` is defined.
+
 newline
 ^^^^^^^
 
@@ -210,9 +280,17 @@ Display a button.
 
         * ``action``: the id of the ir.action that will be called.
 
+    * ``icon``
+
     * ``confirm``: A text that will be displayed in a confirmation popup when
       the button is clicked.
 
+    * ``colspan``: see in common-attributes-colspan_.
+
+    * ``states``: see in common-attributes-states_.
+
+    * ``help``: see in common-attributes-help_.
+
 notebook
 ^^^^^^^^
 
@@ -220,6 +298,8 @@ It adds a notebook widget which can contain page tags.
 
     * ``tabpos``: It can be ``up``, ``down``, ``left``, ``right``.
 
+    * ``colspan``: see in common-attributes-colspan_.
+
 page
 ^^^^
 
@@ -232,6 +312,12 @@ Define a new tab inside a notebook.
 
     * ``col``: The number of columns for the page view.
 
+    * ``id``: see in common-attributes-id_.
+
+    * ``states``: see in common-attributes-states_.
+
+    * Requires that either ``id`` or ``name`` is defined.
+
 group
 ^^^^^
 
@@ -244,12 +330,29 @@ Create a sub-table in a cell.
 
     * ``col``: The number of columns for the group contains.
 
+    * ``id``: see in common-attributes-id_.
+
+    * ``expand``: see in common-attributes-expand_.
+
+    * ``fill``: see in common-attributes-fill_.
+
+    * ``colspan``: see in common-attributes-colspan_.
+
+    * ``states``: see in common-attributes-states_.
+
+    * Requires that either ``id`` or ``name`` is defined.
+
 hpaned, vpaned
 ^^^^^^^^^^^^^^
 
     * ``position``: The pixel position of divider, a negative value means that
       the position is unset.
 
+    * ``id``: see in common-attributes-id_.
+
+    * ``colspan``: see in common-attributes-colspan_. The default
+      for panes is 4 columns.
+
 child1, child2
 ^^^^^^^^^^^^^^
 
@@ -302,6 +405,10 @@ trytond/ir/ui/tree.rng. There is also a RNC in trytond/ir/ui/tree.rnc.
 
 Tree view is used to display records inside a list or a tree.
 
+It is a tree if there is a `field_childs` defined and this tree will
+have drag and drop activated if the `field_childs` and the `parent
+field` are defined in the view.
+
 The columns of the view are put on the screen from left to right.
 
 
@@ -335,8 +442,8 @@ Each tree view must start with this tag.
     * ``fill``: A boolean to specify if the last column must fill the remaining
       free space in the view.
 
-    * ``toolbar``: A boolean to specify on tree, if there is a toolbar on the
-      left that takes the first elements of the tree (like for the menu).
+    * ``keyword_open``: A boolean to specify if the client should look for a
+      tree_open action on double click instead of switching view.
 
 field
 ^^^^^
diff --git a/etc/trytond.conf b/etc/trytond.conf
index 4d564cb..90e74c0 100644
--- a/etc/trytond.conf
+++ b/etc/trytond.conf
@@ -87,3 +87,6 @@
 
 # Enable auto-reload of modules if changed
 #auto_reload = True
+
+# Prevent database listing
+#prevent_dblist = False
diff --git a/setup.py b/setup.py
index 4ad58f7..553412e 100644
--- a/setup.py
+++ b/setup.py
@@ -12,9 +12,13 @@ SIMPLEJSON = []
 if sys.version_info < (2, 6):
     SIMPLEJSON = ['simplejson']
 
+def read(fname):
+    return open(os.path.join(os.path.dirname(__file__), fname)).read()
+
 setup(name=PACKAGE,
     version=VERSION,
     description='Tryton server',
+    long_description=read('README'),
     author='B2CK',
     author_email='info at b2ck.com',
     url=WEBSITE,
@@ -31,7 +35,6 @@ setup(name=PACKAGE,
         'trytond.res': ['*.xml', '*.csv'],
         'trytond.webdav': ['*.xml', '*.csv'],
         'trytond.workflow': ['*.xml', '*.csv'],
-        'trytond.test': ['*.xml'],
     },
     scripts=['bin/trytond'],
     classifiers=[
@@ -39,13 +42,17 @@ setup(name=PACKAGE,
         'Environment :: No Input/Output (Daemon)',
         'Intended Audience :: Developers',
         'License :: OSI Approved :: GNU General Public License (GPL)',
+        'Natural Language :: Bulgarian',
+        'Natural Language :: Dutch',
         'Natural Language :: English',
         'Natural Language :: French',
         'Natural Language :: German',
         'Natural Language :: Russian',
         'Natural Language :: Spanish',
         'Operating System :: OS Independent',
-        'Programming Language :: Python',
+        'Programming Language :: Python :: 2.5',
+        'Programming Language :: Python :: 2.6',
+        'Programming Language :: Python :: 2.7',
         'Topic :: Software Development :: Libraries :: Application Frameworks',
     ],
     license=LICENSE,
diff --git a/trytond.egg-info/PKG-INFO b/trytond.egg-info/PKG-INFO
index a0e511e..9a37e16 100644
--- a/trytond.egg-info/PKG-INFO
+++ b/trytond.egg-info/PKG-INFO
@@ -1,23 +1,110 @@
 Metadata-Version: 1.0
 Name: trytond
-Version: 1.8.4
+Version: 2.0.0
 Summary: Tryton server
 Home-page: http://www.tryton.org/
 Author: B2CK
 Author-email: info at b2ck.com
 License: GPL-3
-Download-URL: http://downloads.tryton.org/1.8/
-Description: UNKNOWN
+Download-URL: http://downloads.tryton.org/2.0/
+Description: trytond
+        =======
+        
+        The server of the Tryton application platform.
+        A three-tiers  high-level general purpose application platform
+        written in Python and use Postgresql as main database engine.
+        It is the core base of an Open Source ERP.
+        It provides modularity, scalability and security.
+        
+        Installing
+        ----------
+        
+        See INSTALL
+        
+        Package Contents
+        ----------------
+        
+          bin/
+              Script for startup.
+        
+          doc/
+              sphinx documentation in reStructuredText.
+              To generate the HTML (trytond module must be in PYTHONPATH):
+        
+                sphinx-build doc/ doc/
+        
+          etc/
+              Configuration files.
+        
+          trytond/
+              trytond sources.
+        
+        Database Backends
+        -----------------
+        
+        Tryton is mainly developed for PostgreSQL but there is some other backends
+        available. Here is some warnings about using other backends:
+        
+          * MySQL
+        
+            * The lock implementation of MySQL requires that Tryton locks all tables.
+        
+            * There are problems with floating-point comparisons.
+              See: http://dev.mysql.com/doc/refman/5.5/en/problems-with-float.html
+        
+            * Tryton uses a VARCHAR(255) for Char, Selection and Reference fields.
+        
+            * MySQL can not create indexes containing text or blob fields.
+        
+            * Tryton uses a DECIMAL(65, 30) for Decimal fields and DOUBLE(255, 30) for
+              Float fields.
+        
+          * SQLite
+        
+            * SQLite can not alter column definitions nor create foreign keys.
+        
+            * SQL constraints are validated by Tryton instead of database.
+        
+        Support
+        -------
+        
+        If you encounter any problems with Tryton, please don't hesitate to ask
+        questions on the Tryton bug tracker, mailing list, wiki or IRC channel:
+        
+          http://bugs.tryton.org/
+          http://groups.tryton.org/
+          http://wiki.tryton.org/
+          irc://irc.freenode.net/tryton
+        
+        License
+        -------
+        
+        See LICENSE
+        
+        Copyright
+        ---------
+        
+        See COPYRIGHT
+        
+        
+        For more information please visit the Tryton web site:
+        
+          http://www.tryton.org/
+        
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: No Input/Output (Daemon)
 Classifier: Intended Audience :: Developers
 Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: Natural Language :: Bulgarian
+Classifier: Natural Language :: Dutch
 Classifier: Natural Language :: English
 Classifier: Natural Language :: French
 Classifier: Natural Language :: German
 Classifier: Natural Language :: Russian
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
 Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
diff --git a/trytond.egg-info/SOURCES.txt b/trytond.egg-info/SOURCES.txt
index 8bb4ad9..9dabba6 100644
--- a/trytond.egg-info/SOURCES.txt
+++ b/trytond.egg-info/SOURCES.txt
@@ -33,6 +33,7 @@ trytond/cache.py
 trytond/config.py
 trytond/const.py
 trytond/convert.py
+trytond/error.py
 trytond/monitor.py
 trytond/pool.py
 trytond/pysocket.py
@@ -74,13 +75,12 @@ trytond/ir/action.py
 trytond/ir/action.xml
 trytond/ir/attachment.py
 trytond/ir/attachment.xml
+trytond/ir/bg_BG.csv
 trytond/ir/cache.py
 trytond/ir/cron.py
 trytond/ir/cron.xml
 trytond/ir/date.py
 trytond/ir/de_DE.csv
-trytond/ir/default.py
-trytond/ir/default.xml
 trytond/ir/es_CO.csv
 trytond/ir/es_ES.csv
 trytond/ir/export.py
@@ -92,6 +92,7 @@ trytond/ir/lang.py
 trytond/ir/lang.xml
 trytond/ir/model.py
 trytond/ir/model.xml
+trytond/ir/nl_NL.csv
 trytond/ir/property.py
 trytond/ir/property.xml
 trytond/ir/ru_RU.csv
@@ -114,6 +115,8 @@ trytond/ir/ui/form.rnc
 trytond/ir/ui/form.rng
 trytond/ir/ui/graph.rnc
 trytond/ir/ui/graph.rng
+trytond/ir/ui/icon.py
+trytond/ir/ui/icon.xml
 trytond/ir/ui/menu.py
 trytond/ir/ui/menu.xml
 trytond/ir/ui/tree.rnc
@@ -121,6 +124,16 @@ trytond/ir/ui/tree.rng
 trytond/ir/ui/ui.xml
 trytond/ir/ui/view.py
 trytond/ir/ui/view.xml
+trytond/ir/ui/icons/LICENSE
+trytond/ir/ui/icons/tryton-calendar.svg
+trytond/ir/ui/icons/tryton-clock.svg
+trytond/ir/ui/icons/tryton-graph.svg
+trytond/ir/ui/icons/tryton-image-missing.svg
+trytond/ir/ui/icons/tryton-list.svg
+trytond/ir/ui/icons/tryton-presentation.svg
+trytond/ir/ui/icons/tryton-readonly.svg
+trytond/ir/ui/icons/tryton-spreadsheet.svg
+trytond/ir/ui/icons/tryton-tree.svg
 trytond/model/__init__.py
 trytond/model/browse.py
 trytond/model/cacheable.py
@@ -143,6 +156,7 @@ trytond/model/fields/many2many.py
 trytond/model/fields/many2one.py
 trytond/model/fields/numeric.py
 trytond/model/fields/one2many.py
+trytond/model/fields/one2one.py
 trytond/model/fields/property.py
 trytond/model/fields/reference.py
 trytond/model/fields/selection.py
@@ -162,6 +176,7 @@ trytond/report/__init__.py
 trytond/report/report.py
 trytond/res/__init__.py
 trytond/res/__tryton__.py
+trytond/res/bg_BG.csv
 trytond/res/de_DE.csv
 trytond/res/es_CO.csv
 trytond/res/es_ES.csv
@@ -170,6 +185,7 @@ trytond/res/group.py
 trytond/res/group.xml
 trytond/res/ir.py
 trytond/res/ir.xml
+trytond/res/nl_NL.csv
 trytond/res/request.py
 trytond/res/request.xml
 trytond/res/res.xml
@@ -178,6 +194,7 @@ trytond/res/user.py
 trytond/res/user.xml
 trytond/test/__init__.py
 trytond/test/__tryton__.py
+trytond/test/access.py
 trytond/test/export_data.py
 trytond/test/import_data.py
 trytond/test/import_data.xml
@@ -187,6 +204,7 @@ trytond/test/sequence.xml
 trytond/test/test.py
 trytond/test/trigger.py
 trytond/tests/__init__.py
+trytond/tests/test_access.py
 trytond/tests/test_exportdata.py
 trytond/tests/test_fields.py
 trytond/tests/test_importdata.py
@@ -204,10 +222,12 @@ trytond/tools/misc.py
 trytond/tools/singleton.py
 trytond/webdav/__init__.py
 trytond/webdav/__tryton__.py
+trytond/webdav/bg_BG.csv
 trytond/webdav/de_DE.csv
 trytond/webdav/es_CO.csv
 trytond/webdav/es_ES.csv
 trytond/webdav/fr_FR.csv
+trytond/webdav/nl_NL.csv
 trytond/webdav/ru_RU.csv
 trytond/webdav/webdav.py
 trytond/webdav/webdav.xml
@@ -215,11 +235,13 @@ trytond/wizard/__init__.py
 trytond/wizard/wizard.py
 trytond/workflow/__init__.py
 trytond/workflow/__tryton__.py
+trytond/workflow/bg_BG.csv
 trytond/workflow/de_DE.csv
 trytond/workflow/es_CO.csv
 trytond/workflow/es_ES.csv
 trytond/workflow/expr.py
 trytond/workflow/fr_FR.csv
+trytond/workflow/nl_NL.csv
 trytond/workflow/ru_RU.csv
 trytond/workflow/workflow.py
 trytond/workflow/workflow.xml
\ No newline at end of file
diff --git a/trytond/backend/database.py b/trytond/backend/database.py
index f144646..168d1f9 100644
--- a/trytond/backend/database.py
+++ b/trytond/backend/database.py
@@ -112,8 +112,6 @@ class CursorInterface(object):
         :param context: the context
         :return: the cache dictionary
         '''
-        from trytond.transaction import Transaction
-        user = Transaction().user
         if context is None:
             context = {}
         cache_ctx = context.copy()
@@ -121,7 +119,7 @@ class CursorInterface(object):
                 '_delete_records'):
             if i in cache_ctx:
                 del cache_ctx[i]
-        return self.cache.setdefault((user, repr(cache_ctx)), {})
+        return self.cache.setdefault(repr(cache_ctx), {})
 
     def execute(self, sql, params=None):
         '''
diff --git a/trytond/backend/mysql/database.py b/trytond/backend/mysql/database.py
index 5a1b8e4..de7fc52 100644
--- a/trytond/backend/mysql/database.py
+++ b/trytond/backend/mysql/database.py
@@ -1,6 +1,6 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-
+from __future__ import with_statement
 from trytond.backend.database import DatabaseInterface, CursorInterface
 from trytond.config import CONFIG
 import MySQLdb
@@ -108,9 +108,8 @@ class Database(DatabaseInterface):
         cmd.append(database_name)
 
         fd, file_name = tempfile.mkstemp()
-        fd = os.fdopen(fd, 'wb+')
-        fd.write(data)
-        fd.close()
+        with os.fdopen(fd, 'wb+') as fd:
+            fd.write(data)
 
         cmd.append('<')
         cmd.append(file_name)
@@ -164,15 +163,17 @@ class Database(DatabaseInterface):
     def init(cursor):
         from trytond.tools import safe_eval
         sql_file = os.path.join(os.path.dirname(__file__), 'init.sql')
-        for line in open(sql_file).read().split(';'):
-            if (len(line)>0) and (not line.isspace()):
-                cursor.execute(line)
+        with open(sql_file) as fp:
+            for line in fp.read().split(';'):
+                if (len(line)>0) and (not line.isspace()):
+                    cursor.execute(line)
 
         for i in ('ir', 'workflow', 'res', 'webdav'):
             root_path = os.path.join(os.path.dirname(__file__), '..', '..')
             tryton_file = os.path.join(root_path, i, '__tryton__.py')
             mod_path = os.path.join(root_path, i)
-            info = safe_eval(open(tryton_file).read())
+            with open(tryton_file) as fp:
+                info = safe_eval(fp.read())
             active = info.get('active', False)
             if active:
                 state = 'to install'
@@ -299,7 +300,8 @@ class Cursor(CursorInterface):
     def lock(self, table):
         # Lock of table doesn't work because MySQL require
         # that the session locks all tables that will be accessed
-        self.cursor.execute('FLUSH TABLES WITH READ LOCK')
+        # but 'FLUSH TABLES WITH READ LOCK' creates deadlock
+        pass
 
     def has_constraint(self):
         return False
diff --git a/trytond/backend/mysql/init.sql b/trytond/backend/mysql/init.sql
index c26db83..cbb2a56 100644
--- a/trytond/backend/mysql/init.sql
+++ b/trytond/backend/mysql/init.sql
@@ -43,6 +43,7 @@ CREATE TABLE ir_translation (
     id BIGINT AUTO_INCREMENT NOT NULL,
     lang VARCHAR(255),
     src TEXT,
+    src_md5 VARCHAR(32) NOT NULL,
     name VARCHAR(255) NOT NULL,
     res_id BIGINT NOT NULL DEFAULT 0,
     value TEXT,
@@ -75,7 +76,6 @@ ALTER TABLE res_user ADD CONSTRAINT res_user_login_uniq UNIQUE (login);
 
 INSERT INTO res_user (id, login, password, name, active) VALUES (0, 'root', NULL, 'Root', False);
 UPDATE res_user set id = 0;
-ALTER TABLE res_user AUTO_INCREMENT = 1;
 
 CREATE TABLE res_group (
     id BIGINT AUTO_INCREMENT NOT NULL,
@@ -121,7 +121,7 @@ CREATE TABLE wkf_transition (
     act_to BIGINT,
     `condition` VARCHAR(255),
     trigger_expr_id VARCHAR(255),
-    `signal` VARCHAR(255),
+    signal VARCHAR(255),
     `group` BIGINT,
     PRIMARY KEY(id),
     CONSTRAINT wkf_transition_act_from_fkey FOREIGN KEY (act_from) REFERENCES wkf_activity (id) ON DELETE CASCADE,
diff --git a/trytond/backend/postgresql/database.py b/trytond/backend/postgresql/database.py
index f23ab38..c432fa9 100644
--- a/trytond/backend/postgresql/database.py
+++ b/trytond/backend/postgresql/database.py
@@ -1,6 +1,6 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-
+from __future__ import with_statement
 from trytond.backend.database import DatabaseInterface, CursorInterface
 from trytond.config import CONFIG
 from trytond.session import Session
@@ -130,7 +130,8 @@ class Database(DatabaseInterface):
 
         if os.name == "nt":
             tmpfile = (os.environ['TMP'] or 'C:\\') + os.tmpnam()
-            open(tmpfile, 'wb').write(data)
+            with open(tmpfile, 'wb') as fp:
+                fp.write(data)
             args2 = list(args2)
             args2.append(' ' + tmpfile)
             args2 = tuple(args2)
@@ -213,15 +214,17 @@ class Database(DatabaseInterface):
     def init(cursor):
         from trytond.tools import safe_eval
         sql_file = os.path.join(os.path.dirname(__file__), 'init.sql')
-        for line in open(sql_file).read().split(';'):
-            if (len(line)>0) and (not line.isspace()):
-                cursor.execute(line)
+        with open(sql_file) as fp:
+            for line in fp.read().split(';'):
+                if (len(line)>0) and (not line.isspace()):
+                    cursor.execute(line)
 
         for i in ('ir', 'workflow', 'res', 'webdav'):
             root_path = os.path.join(os.path.dirname(__file__), '..', '..')
             tryton_file = os.path.join(root_path, i, '__tryton__.py')
             mod_path = os.path.join(root_path, i)
-            info = safe_eval(open(tryton_file).read())
+            with open(tryton_file) as fp:
+                info = safe_eval(fp.read())
             active = info.get('active', False)
             if active:
                 state = 'to install'
diff --git a/trytond/backend/postgresql/init.sql b/trytond/backend/postgresql/init.sql
index 622b90b..be4da11 100644
--- a/trytond/backend/postgresql/init.sql
+++ b/trytond/backend/postgresql/init.sql
@@ -53,6 +53,7 @@ CREATE TABLE ir_translation (
     id INTEGER DEFAULT NEXTVAL('ir_translation_id_seq') NOT NULL,
     lang VARCHAR,
     src TEXT,
+    src_md5 VARCHAR(32) NOT NULL,
     name VARCHAR NOT NULL,
     res_id INTEGER NOT NULL DEFAULT 0,
     value TEXT,
diff --git a/trytond/backend/postgresql/table.py b/trytond/backend/postgresql/table.py
index 807b4f8..04f5c3d 100644
--- a/trytond/backend/postgresql/table.py
+++ b/trytond/backend/postgresql/table.py
@@ -208,7 +208,8 @@ class TableHandler(TableHandlerInterface):
             self.cursor.execute('COMMENT ON COLUMN "%s"."%s" IS \'%s\'' %
                     (self.table_name, column_name, string.replace("'", "''")))
         if self.column_exist(column_name):
-            if column_name in ('create_date', 'write_date'):
+            if (column_name in ('create_date', 'write_date')
+                    and column_type[1].lower() != 'timestamp(6)'):
                 #Migrate dates from timestamp(0) to timestamp
                 self.cursor.execute('ALTER TABLE "' + self.table_name + '" ' \
                         'ALTER COLUMN "' + column_name + '" TYPE timestamp')
diff --git a/trytond/backend/sqlite/database.py b/trytond/backend/sqlite/database.py
index aacd47f..0c4fa0a 100644
--- a/trytond/backend/sqlite/database.py
+++ b/trytond/backend/sqlite/database.py
@@ -1,6 +1,6 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-
+from __future__ import with_statement
 from trytond.backend.database import DatabaseInterface, CursorInterface
 from trytond.config import CONFIG
 from trytond.session import Session
@@ -166,9 +166,8 @@ class Database(DatabaseInterface):
             raise Exception('Wrong database name!')
         path = os.path.join(CONFIG['data_path'],
                 database_name + '.sqlite')
-        file_p = open(path, 'rb')
-        data = file_p.read()
-        file_p.close()
+        with open(path, 'rb') as file_p:
+            data = file_p.read()
         return data
 
     @staticmethod
@@ -181,9 +180,8 @@ class Database(DatabaseInterface):
                 database_name + '.sqlite')
         if os.path.isfile(path):
             raise Exception('Database already exists!')
-        file_p = open(path, 'wb')
-        file_p.write(data)
-        file_p.close()
+        with open(path, 'wb') as file_p:
+            file_p.write(data)
 
     @staticmethod
     def list(cursor):
@@ -213,15 +211,17 @@ class Database(DatabaseInterface):
     def init(cursor):
         from trytond.tools import safe_eval
         sql_file = os.path.join(os.path.dirname(__file__), 'init.sql')
-        for line in open(sql_file).read().split(';'):
-            if (len(line)>0) and (not line.isspace()):
-                cursor.execute(line)
+        with open(sql_file) as fp:
+            for line in fp.read().split(';'):
+                if (len(line)>0) and (not line.isspace()):
+                    cursor.execute(line)
 
         for i in ('ir', 'workflow', 'res', 'webdav'):
             root_path = os.path.join(os.path.dirname(__file__), '..', '..')
             tryton_file = os.path.join(root_path, i, '__tryton__.py')
             mod_path = os.path.join(root_path, i)
-            info = safe_eval(open(tryton_file).read())
+            with open(tryton_file) as fp:
+                info = safe_eval(fp.read())
             active = info.get('active', False)
             if active:
                 state = 'to install'
diff --git a/trytond/backend/sqlite/init.sql b/trytond/backend/sqlite/init.sql
index 95b4db5..52bbf66 100644
--- a/trytond/backend/sqlite/init.sql
+++ b/trytond/backend/sqlite/init.sql
@@ -38,6 +38,7 @@ CREATE TABLE ir_translation (
     id INTEGER PRIMARY KEY AUTOINCREMENT,
     lang VARCHAR,
     src TEXT,
+    src_md5 VARCHAR(32) NOT NULL,
     name VARCHAR,
     res_id INTEGER DEFAULT 0,
     value TEXT,
diff --git a/trytond/config.py b/trytond/config.py
index 05b0951..55e95b4 100644
--- a/trytond/config.py
+++ b/trytond/config.py
@@ -49,6 +49,7 @@ class ConfigManager(object):
             'session_timeout': 600,
             'psyco': False,
             'auto_reload': True,
+            'prevent_dblist': False,
             'init': {},
             'update': {},
         }
@@ -134,7 +135,11 @@ class ConfigManager(object):
         parser = ConfigParser.ConfigParser()
         if not self.configfile:
             return
-        parser.readfp(open(self.configfile))
+        fp = open(self.configfile)
+        try:
+            parser.readfp(fp)
+        finally:
+            fp.close()
         for (name, value) in parser.items('options'):
             if value == 'True' or value == 'true':
                 value = True
diff --git a/trytond/convert.py b/trytond/convert.py
index 1f1f0a1..03ba03d 100644
--- a/trytond/convert.py
+++ b/trytond/convert.py
@@ -62,7 +62,7 @@ class MenuitemTagHandler:
 
             # TODO maybe use a prefetch for this:
             cursor.execute(cursor.limit_clause(
-            "SELECT a.name, a.type, act.view_type, v.type " \
+            "SELECT a.name, a.type, v.type, v.field_childs, icon.name " \
             "FROM ir_action a " \
                 "LEFT JOIN ir_action_report report ON (a.id = report.action) " \
                 "LEFT JOIN ir_action_act_window act ON (a.id = act.action) " \
@@ -70,14 +70,15 @@ class MenuitemTagHandler:
                 "LEFT JOIN ir_action_url url ON (a.id = url.action) " \
                 "LEFT JOIN ir_action_act_window_view wv ON " \
                     "(act.id = wv.act_window) " \
-                "LEFT JOIN ir_ui_view v on (v.id = wv.view) " \
+                "LEFT JOIN ir_ui_view v ON (v.id = wv.view) " \
+                "LEFT JOIN ir_ui_icon icon ON (a.icon = icon.id) " \
             "WHERE report.id = %s " \
                 "OR act.id = %s " \
                 "OR wizard.id = %s " \
                 "OR url.id = %s " \
             "ORDER by wv.sequence", 1),
             (action_id, action_id, action_id, action_id))
-            action_name, action_type, view_type, view_mode = \
+            action_name, action_type, view_type, field_childs, icon_name = \
                     cursor.fetchone()
 
             values['action'] = '%s,%s' % (action_type, action_id)
@@ -85,20 +86,23 @@ class MenuitemTagHandler:
             icon = attributes.get('icon', '')
             if icon:
                 values['icon'] = icon
+            elif icon_name:
+                values['icon'] = icon_name
             elif action_type == 'ir.action.wizard':
                 values['icon'] = 'tryton-executable'
             elif action_type == 'ir.action.report':
                 values['icon'] = 'tryton-print'
             elif action_type == 'ir.action.act_window':
                 if view_type == 'tree':
-                    values['icon'] = 'tryton-tree'
-                elif view_mode and view_mode.startswith('tree'):
-                    values['icon'] = 'tryton-list'
-                elif view_mode and view_mode.startswith('form'):
+                    if field_childs:
+                        values['icon'] = 'tryton-tree'
+                    else:
+                        values['icon'] = 'tryton-list'
+                elif view_type == 'form':
                     values['icon'] = 'tryton-new'
-                elif view_mode and view_mode.startswith('graph'):
+                elif view_type == 'graph':
                     values['icon'] = 'tryton-graph'
-                elif view_mode and view_mode.startswith('calendar'):
+                elif view_type == 'calendar':
                     values['icon'] = 'tryton-calendar'
             elif action_type == 'ir.action.url':
                 values['icon'] = 'tryton-web-browser'
@@ -126,7 +130,6 @@ class MenuitemTagHandler:
 
         self.values = values
 
-
     def characters(self, data):
         pass
 
@@ -562,6 +565,7 @@ class TrytondXmlHandler(sax.handler.ContentHandler):
                         (module, fs_id))
 
         object_ref = self.pool.get(model)
+        translation_obj = self.pool.get('ir.translation')
 
         if self.fs2db.get(module, fs_id):
 
@@ -635,20 +639,22 @@ class TrytondXmlHandler(sax.handler.ContentHandler):
                                 (table_name + ',' + field_name,
                                     'en_US', 'model', res_id, module))
                         fetchone = cursor.fetchone()
+                        src_md5 = translation_obj.get_src_md5(
+                            values[field_name])
                         if fetchone:
                             trans_id = fetchone[0]
-                            cursor.execute('UPDATE ir_translation ' \
-                                    'SET src = %s, module = %s ' \
-                                    'WHERE id = %s',
-                                    (values[field_name], module, trans_id))
+                            cursor.execute('UPDATE ir_translation '
+                                'SET src = %s, src_md5 = %s, module = %s '
+                                'WHERE id = %s',
+                                (values[field_name], src_md5, module, trans_id))
                         else:
-                            cursor.execute('INSERT INTO ir_translation ' \
-                                    '(name, lang, type, src, res_id, ' \
-                                        'value, module, fuzzy) ' \
-                                    'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)',
-                                    (table_name + ',' + field_name,
-                                        'en_US', 'model', values[field_name],
-                                        res_id, '', module, False))
+                            cursor.execute('INSERT INTO ir_translation '
+                                '(name, lang, type, src, src_md5, res_id, '
+                                    'value, module, fuzzy) '
+                                'VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)',
+                                (table_name + ',' + field_name, 'en_US',
+                                    'model', values[field_name], src_md5,
+                                    res_id, '', module, False))
 
                 for table in inherit_db_ids.keys():
                     data_id = self.modeldata_obj.search([
@@ -780,20 +786,24 @@ class TrytondXmlHandler(sax.handler.ContentHandler):
                         fetchone = cursor.fetchone()
                         if fetchone:
                             if to_update.get(field_name):
+                                src_md5 = translation_obj.get_src_md5(
+                                    to_update[field_name])
                                 trans_id = fetchone[0]
-                                cursor.execute('UPDATE ir_translation ' \
-                                        'SET src = %s, module = %s ' \
-                                        'WHERE id = %s',
-                                        (to_update[field_name], module,
-                                            trans_id))
+                                cursor.execute('UPDATE ir_translation '
+                                    'SET src = %s, src_md5 = %s, module = %s '
+                                    'WHERE id = %s',
+                                    (to_update[field_name], src_md5, module,
+                                        trans_id))
                         elif values.get(field_name):
-                            cursor.execute('INSERT INTO ir_translation ' \
-                                    '(name, lang, type, src, res_id, ' \
-                                        'value, module, fuzzy) ' \
-                                    'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)',
-                                    (table_name + ',' + field_name,
-                                        'en_US', 'model', values[field_name],
-                                        res_id, '', module, False))
+                            src_md5 = translation_obj.get_src_md5(
+                                values[field_name])
+                            cursor.execute('INSERT INTO ir_translation '
+                                '(name, lang, type, src, src_md5, res_id, '
+                                        'value, module, fuzzy) '
+                                'VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)',
+                                (table_name + ',' + field_name, 'en_US',
+                                    'model', values[field_name], src_md5,
+                                    res_id, '', module, False))
 
             if to_update:
                 # re-read it: this ensure that we store the real value
@@ -874,19 +884,21 @@ class TrytondXmlHandler(sax.handler.ContentHandler):
                             trans_id, = data
                     elif cursor.rowcount != 0:
                         trans_id, = cursor.fetchone()
+                    src_md5 = translation_obj.get_src_md5(values[field_name]
+                        or '')
                     if trans_id:
-                        cursor.execute('UPDATE ir_translation ' \
-                                'SET src = %s, module = %s ' \
-                                'WHERE id = %s',
-                                (values[field_name], module, trans_id))
+                        cursor.execute('UPDATE ir_translation '
+                            'SET src = %s, src_md5 = %s, module = %s '
+                            'WHERE id = %s',
+                            (values[field_name], src_md5, module, trans_id))
                     else:
-                        cursor.execute('INSERT INTO ir_translation ' \
-                                '(name, lang, type, src, res_id, ' \
-                                    'value, module, fuzzy) ' \
-                                'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)',
-                                (table_name + ',' + field_name,
-                                    'en_US', 'model', values[field_name],
-                                    res_id, '', module, False))
+                        cursor.execute('INSERT INTO ir_translation '
+                            '(name, lang, type, src, src_md5, res_id, '
+                                'value, module, fuzzy) '
+                            'VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)',
+                            (table_name + ',' + field_name, 'en_US', 'model',
+                                values[field_name], src_md5, res_id, '',
+                                module, False))
 
             # re-read it: this ensure that we store the real value
             # in the model_data table:
diff --git a/trytond/error.py b/trytond/error.py
new file mode 100644
index 0000000..1ca8e42
--- /dev/null
+++ b/trytond/error.py
@@ -0,0 +1,108 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+from trytond.transaction import Transaction
+
+
+class WarningErrorMixin(object):
+
+    def raise_user_error(self, error, error_args=None,
+            error_description='', error_description_args=None,
+            raise_exception=True):
+        '''
+        Raise an exception that will be displayed as an error message
+        in the client.
+
+        :param error: the key of the dictionary _error_messages used
+            for error message
+        :param error_args: the arguments that will be used
+            for "%"-based substitution
+        :param error_description: the key of the dictionary
+            _error_messages used for error description
+        :param error_description_args: the arguments that will be used
+            for "%"-based substitution
+        :param raise_exception: if set to False return the error string
+            (or tuple if error_description is not empty) instead of raising an
+            exception.
+        '''
+        translation_obj = self.pool.get('ir.translation')
+
+        error = self._error_messages.get(error, error)
+
+        language = Transaction().context.get('language') or 'en_US'
+        res = translation_obj._get_source(self._name, 'error', language, error)
+        if not res:
+            res = translation_obj._get_source(error, 'error', language)
+        if not res:
+            res = translation_obj._get_source(error, 'error', 'en_US')
+
+        if res:
+            error = res
+
+        if error_args:
+            try:
+                error = error % error_args
+            except TypeError:
+                pass
+
+        if error_description:
+            error_description = self._error_messages.get(error_description,
+                    error_description)
+
+            res = translation_obj._get_source(self._name, 'error', language,
+                    error_description)
+            if not res:
+                res = translation_obj._get_source(error_description, 'error',
+                        language)
+            if not res:
+                res = translation_obj._get_source(error_description, 'error',
+                        'en_US')
+
+            if res:
+                error_description = res
+
+            if error_description_args:
+                try:
+                    error_description = error_description % \
+                            error_description_args
+                except TypeError:
+                    pass
+            if raise_exception:
+                raise Exception('UserError', error, error_description)
+            else:
+                return (error, error_description)
+        if raise_exception:
+            raise Exception('UserError', error)
+        else:
+            return error
+
+    def raise_user_warning(self, warning_name, warning,
+            warning_args=None, warning_description='',
+            warning_description_args=None):
+        '''
+        Raise an exception that will be displayed as a warning message
+        in the client, if the user has not yet bypassed it.
+
+        :param warning_name: the unique warning name
+        :param warning: the key of the dictionary _error_messages used
+            for warning message
+        :param warning_args: the arguments that will be used for
+            "%"-based substitution
+        :param warning_description: the key of the dictionary
+            _error_messages used for warning description
+        :param warning_description_args: the arguments that will be used
+            for "%"-based substitution
+        '''
+        warning_obj = self.pool.get('res.user.warning')
+        if warning_obj.check(warning_name):
+            if warning_description:
+                warning, warning_description = self.raise_user_error(warning,
+                        error_args=warning_args,
+                        error_description=warning_description,
+                        error_description_args=warning_description_args,
+                        raise_exception=False)
+                raise Exception('UserWarning', warning_name, warning,
+                        warning_description)
+            else:
+                warning = self.raise_user_error(warning,
+                        error_args=warning_args, raise_exception=False)
+                raise Exception('UserWarning', warning_name, warning)
diff --git a/trytond/ir/__init__.py b/trytond/ir/__init__.py
index ee6e216..853ff84 100644
--- a/trytond/ir/__init__.py
+++ b/trytond/ir/__init__.py
@@ -1,5 +1,6 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
+from translation import *
 from sequence import *
 import ui
 from property import *
@@ -8,11 +9,9 @@ from model import *
 from attachment import *
 from cron import *
 from lang import *
-from translation import *
 from export import *
 from rule import *
 import module
-from default import *
 from cache import *
 from date import *
 from trigger import *
diff --git a/trytond/ir/__tryton__.py b/trytond/ir/__tryton__.py
index c491d51..32800b5 100644
--- a/trytond/ir/__tryton__.py
+++ b/trytond/ir/__tryton__.py
@@ -2,13 +2,19 @@
 #this repository contains the full copyright notices and license terms.
 {
     'name': 'IR',
+    'name_bg_BG': 'Вътрешна администрация',
     'name_de_DE': 'Interne Administration',
     'name_es_ES': 'Administración interna',
     'name_fr_FR': 'Administration Interne',
+    'name_nl_NL': 'Interne administratie',
     'name_ru_RU': 'Внутреннее управление',
     'description': '''Basic module handling internal tasks of the application.
 Provides concepts and administration of models, actions, sequences, localizations, cron jobs etc.
 ''',
+    'description_bg_BG': '''Общ модул за вътрешните задачи на приложението
+
+ - Предлага предсатва и адмнинистрация на модули, десйтвия, последователности, преводи, планировщици и тн.
+''',
     'description_de_DE': '''Basismodul für interne Aufgaben der Anwendung
 
  - Stellt Konzept und Administration für Modelle, Aktionen, Sequenzen, Lokalisierungen, Zeitplaner etc. zur Verfügung
@@ -19,6 +25,10 @@ Provides concepts and administration of models, actions, sequences, localization
     'description_fr_FR': '''Module de base gérant les tâches internes de l'application.
 Fournit les concepts et l'administration des modèles, actions, séquences, localizations, planificateur de tâches etc.
 ''',
+    'description_nl_NL': '''Basismodule voor interne taken binnen het programma.
+
+ - Instellen en beheren van modellen, acties, reeksen, lokalisaties, herhalende taken enz.
+''',
     'description_ru_RU': '''Базовый модуль обработки внутренних задач приложения.
     Обеспечивает концепций и моделей, администрация, действия, последовательность, локализация, Cron Jobs т.д.
 ''',
@@ -26,6 +36,7 @@ Fournit les concepts et l'administration des modèles, actions, séquences, loca
     'xml': [
         'ir.xml',
         'ui/ui.xml',
+        'ui/icon.xml',
         'ui/menu.xml',
         'ui/view.xml',
         'action.xml',
@@ -39,14 +50,15 @@ Fournit les concepts et l'administration des modèles, actions, séquences, loca
         'rule.xml',
         'property.xml',
         'module/module.xml',
-        'default.xml',
         'trigger.xml',
         ],
     'translation': [
-        'fr_FR.csv',
+        'bg_BG.csv',
         'de_DE.csv',
-        'es_ES.csv',
         'es_CO.csv',
+        'es_ES.csv',
+        'fr_FR.csv',
+        'nl_NL.csv',
         'ru_RU.csv',
     ],
 }
diff --git a/trytond/ir/action.py b/trytond/ir/action.py
index dfd1973..6996c13 100644
--- a/trytond/ir/action.py
+++ b/trytond/ir/action.py
@@ -22,6 +22,7 @@ class Action(ModelSQL, ModelView):
             'Keywords')
     groups = fields.Many2Many('ir.action-res.group', 'action_id', 'gid',
             'Groups')
+    icon = fields.Many2One('ir.ui.icon', 'Icon')
     active = fields.Boolean('Active', select=2)
 
     def __init__(self):
@@ -173,7 +174,6 @@ class ActionKeyword(ModelSQL, ModelView):
             ('keyword', '=', keyword),
             ('model', '=', model + ',0'),
             ]))
-        encoder = PYSONEncoder()
         for action_keyword in self.browse(action_keyword_ids):
             try:
                 action_obj = self.pool.get(action_keyword.action.type)
@@ -183,16 +183,18 @@ class ActionKeyword(ModelSQL, ModelView):
                 ('action', '=', action_keyword.action.id),
                 ])
             if action_id:
-                res.append(action_obj.read(action_id[0]))
+                columns = set(action_obj._columns.keys()
+                    + action_obj._inherit_fields.keys())
+                columns.add('icon.rec_name')
                 if action_keyword.action.type == 'ir.action.report':
-                    del res[-1]['report_content_data']
-                    del res[-1]['report_content']
-                    del res[-1]['style_content']
-                    res[-1]['email'] = encoder.encode(safe_eval(res[-1]['email']
-                        or '{}', CONTEXT))
+                    to_remove = ('report_content_data', 'report_content',
+                        'style_content')
                 elif action_keyword.action.type == 'ir.action.act_window':
-                    for field in ('domain', 'context', 'search_value'):
-                        del res[-1][field]
+                    to_remove = ('domain', 'context', 'search_value')
+                else:
+                    to_remove = set()
+                columns.difference_update(to_remove)
+                res.append(action_obj.read(action_id[0], list(columns)))
         return res
 
 ActionKeyword()
@@ -222,6 +224,7 @@ class ActionReport(ModelSQL, ModelView):
         string='Extension', required=True)
     module = fields.Char('Module', readonly=True, select=1)
     email = fields.Char('Email')
+    pyson_email = fields.Function(fields.Char('PySON Email'), 'get_pyson')
 
     def __init__(self):
         super(ActionReport, self).__init__()
@@ -279,9 +282,9 @@ class ActionReport(ModelSQL, ModelView):
             data = report[name + '_data']
             if not data and report[name[:-8]]:
                 try:
-                    data = base64.encodestring(file_open(
-                        report[name[:-8]].replace('/', os.sep),
-                        mode='rb').read())
+                    with file_open( report[name[:-8]].replace('/', os.sep),
+                            mode='rb') as fp:
+                        data = base64.encodestring(fp.read())
                 except Exception:
                     data = False
             res[report.id] = data
@@ -294,14 +297,26 @@ class ActionReport(ModelSQL, ModelView):
         res = {}
         for report in self.browse(ids):
             try:
-                data = base64.encodestring(file_open(
-                    report.style.replace('/', os.sep),
-                    mode='rb').read())
+                with file_open( report.style.replace('/', os.sep),
+                        mode='rb') as fp:
+                    data = base64.encodestring(fp.read())
             except Exception:
                 data = False
             res[report.id] = data
         return res
 
+    def get_pyson(self, ids, name):
+        res = {}
+        encoder = PYSONEncoder()
+        field = name[6:]
+        defaults = {
+            'email': '{}',
+        }
+        for act in self.browse(ids):
+            res[act.id] = encoder.encode(safe_eval(act[field] or
+                defaults.get(field, 'False'), CONTEXT))
+        return res
+
     def copy(self, ids, default=None):
         if default is None:
             default = {}
@@ -375,11 +390,6 @@ class ActionActWindow(ModelSQL, ModelView):
     domain = fields.Char('Domain Value')
     context = fields.Char('Context Value')
     res_model = fields.Char('Model')
-    view_type = fields.Selection([
-        ('tree','Tree'),
-        ('form','Form'),
-        ('board', 'Board'),
-        ], string='Type of view')
     act_window_views = fields.One2Many('ir.action.act_window.view',
             'act_window', 'Views')
     views = fields.Function(fields.Binary('Views'), 'get_views')
@@ -402,11 +412,13 @@ class ActionActWindow(ModelSQL, ModelView):
     def __init__(self):
         super(ActionActWindow, self).__init__()
         self._constraints += [
+            ('check_views', 'invalid_views'),
             ('check_domain', 'invalid_domain'),
             ('check_context', 'invalid_context'),
             ('check_search_value', 'invalid_search_value'),
         ]
         self._error_messages.update({
+            'invalid_views': 'Invalid views!',
             'invalid_domain': 'Invalid domain!',
             'invalid_context': 'Invalid context!',
             'invalid_search_value': 'Invalid search criteria!',
@@ -433,6 +445,25 @@ class ActionActWindow(ModelSQL, ModelView):
     def default_search_value(self):
         return '{}'
 
+    def check_views(self, ids):
+        "Check views"
+        for action in self.browse(ids):
+            if action.res_model:
+                for act_window_view in action.act_window_views:
+                    view = act_window_view.view
+                    if view.model != action.res_model:
+                        return False
+                    if view.type == 'board':
+                        return False
+            else:
+                for act_window_view in action.act_window_views:
+                    view= act_window_view.view
+                    if view.model:
+                        return False
+                    if view.type != 'board':
+                        return False
+        return True
+
     def check_domain(self, ids):
         "Check domain"
         for action in self.browse(ids):
diff --git a/trytond/ir/action.xml b/trytond/ir/action.xml
index e5e7d5c..088ca1c 100644
--- a/trytond/ir/action.xml
+++ b/trytond/ir/action.xml
@@ -18,6 +18,8 @@ this repository contains the full copyright notices and license terms. -->
                         <page string="General" id="general">
                             <label name="usage"/>
                             <field name="usage"/>
+                            <label name="icon"/>
+                            <field name="icon"/>
                         </page>
                         <page name="keywords">
                             <field name="keywords" colspan="4">
@@ -55,7 +57,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Actions</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">ir.action</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_action_form_view1">
@@ -88,6 +89,9 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="model"/>
                             <label name="report_name"/>
                             <field name="report_name"/>
+                            <label name="icon"/>
+                            <field name="icon"/>
+                            <newline/>
                             <label name="report"/>
                             <field name="report" colspan="3"/>
                             <label name="report_content"/>
@@ -141,7 +145,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Reports</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">ir.action.report</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_action_report_form_view1">
@@ -172,10 +175,10 @@ this repository contains the full copyright notices and license terms. -->
                         <page string="General" id="general" col="6">
                             <label name="res_model"/>
                             <field name="res_model"/>
-                            <label name="view_type"/>
-                            <field name="view_type"/>
                             <label name="usage"/>
                             <field name="usage"/>
+                            <label name="icon"/>
+                            <field name="icon"/>
                             <field name="act_window_views" colspan="6">
                                 <form string="Views">
                                     <label name="sequence"/>
@@ -231,7 +234,6 @@ this repository contains the full copyright notices and license terms. -->
                 <tree string="Open Window">
                     <field name="name" select="1"/>
                     <field name="res_model" select="1"/>
-                    <field name="view_type" select="1"/>
                     <field name="domain"/>
                 </tree>
                 ]]>
@@ -241,7 +243,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Window Actions</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">ir.action.act_window</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view" id="act_action_act_window_view1">
             <field name="sequence" eval="1"/>
@@ -271,6 +272,8 @@ this repository contains the full copyright notices and license terms. -->
                             <field name="wiz_name"/>
                             <label name="model"/>
                             <field name="model"/>
+                            <label name="icon"/>
+                            <field name="icon"/>
                             <newline/>
                             <label name="email"/>
                             <field name="email" colspan="3"/>
@@ -316,7 +319,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Wizards</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">ir.action.wizard</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_action_wizard_form_view1">
@@ -374,7 +376,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Wizard Sizes</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">ir.action.wizard_size</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_action_wizard_size_form_view1">
@@ -405,6 +406,8 @@ this repository contains the full copyright notices and license terms. -->
                         <page string="General" id="general">
                             <label name="url"/>
                             <field name="url"/>
+                            <label name="icon"/>
+                            <field name="icon"/>
                         </page>
                         <page name="keywords">
                             <field name="keywords" colspan="4">
@@ -445,7 +448,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">URLs</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">ir.action.url</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_action_url_form_view1">
diff --git a/trytond/ir/attachment.py b/trytond/ir/attachment.py
index 7aa20bf..46d5df1 100644
--- a/trytond/ir/attachment.py
+++ b/trytond/ir/attachment.py
@@ -12,22 +12,43 @@ from trytond.model import ModelView, ModelSQL, fields
 from trytond.config import CONFIG
 from trytond.backend import TableHandler
 from trytond.transaction import Transaction
+from trytond.pyson import Not, Equal, Eval
+
+def firstline(description):
+    try:
+        return (x for x in description.splitlines() if x.strip()).next()
+    except StopIteration:
+        return ''
 
 
 class Attachment(ModelSQL, ModelView):
     "Attachment"
     _name = 'ir.attachment'
     _description = __doc__
-    name = fields.Char('Attachment Name', required=True)
-    datas = fields.Function(fields.Binary('Datas'), 'get_datas',
-            setter='set_datas')
+    name = fields.Char('Name', required=True)
+    type = fields.Selection([
+        ('data', 'Data'),
+        ('link', 'Link'),
+        ], 'Type', required=True)
+    data = fields.Function(fields.Binary('Data', filename='name', states={
+        'invisible': Not(Equal(Eval('type'), 'data')),
+        }, depends=['type']), 'get_data', setter='set_data')
     description = fields.Text('Description')
-    resource = fields.Reference('Resource', selection='models_get',
-            select=1)
-    link = fields.Char('Link')
+    summary = fields.Function(fields.Char('Summary',
+        on_change_with=['description']), 'get_summary')
+    resource = fields.Reference('Resource', selection='models_get', select=1)
+    link = fields.Char('Link', states={
+        'invisible': Not(Equal(Eval('type'), 'link')),
+        }, depends=['type'])
     digest = fields.Char('Digest', size=32)
     collision = fields.Integer('Collision')
-    datas_size = fields.Function(fields.Integer('Datas size'), 'get_datas')
+    data_size = fields.Function(fields.Integer('Data size', states={
+        'invisible': Not(Equal(Eval('type'), 'data')),
+        }, depends=['type']), 'get_data')
+    last_modification = fields.Function(fields.DateTime('Last Modification'),
+            'get_last_modification')
+    last_user = fields.Function(fields.Char('Last User'),
+        'get_last_user')
 
     def __init__(self):
         super(Attachment, self).__init__()
@@ -37,9 +58,10 @@ class Attachment(ModelSQL, ModelView):
         ]
 
     def init(self, module_name):
+        cursor = Transaction().cursor
+
         super(Attachment, self).init(module_name)
 
-        cursor = Transaction().cursor
         table = TableHandler(cursor, self, module_name)
 
         # Migration from 1.4 res_model and res_id merged into resource
@@ -52,6 +74,9 @@ class Attachment(ModelSQL, ModelView):
             table.drop_column('res_model')
             table.drop_column('res_id')
 
+    def default_type(self):
+        return 'data'
+
     def default_resource(self):
         return Transaction().context.get('resource')
 
@@ -66,12 +91,12 @@ class Attachment(ModelSQL, ModelView):
             res.append([model.model, model.name])
         return res
 
-    def get_datas(self, ids, name):
+    def get_data(self, ids, name):
         res = {}
         db_name = Transaction().cursor.dbname
         for attachment in self.browse(ids):
             value = False
-            if name == 'datas_size':
+            if name == 'data_size':
                 value = 0
             if attachment.digest:
                 filename = attachment.digest
@@ -79,7 +104,7 @@ class Attachment(ModelSQL, ModelView):
                     filename = filename + '-' + str(attachment.collision)
                 filename = os.path.join(CONFIG['data_path'], db_name,
                         filename[0:2], filename[2:4], filename)
-                if name == 'datas_size':
+                if name == 'data_size':
                     try:
                         statinfo = os.stat(filename)
                         value = statinfo.st_size
@@ -87,15 +112,14 @@ class Attachment(ModelSQL, ModelView):
                         pass
                 else:
                     try:
-                        file_p = open(filename, 'rb')
-                        value = base64.encodestring(file_p.read())
-                        file_p.close()
+                        with open(filename, 'rb') as file_p:
+                            value = base64.encodestring(file_p.read())
                     except IOError:
                         pass
             res[attachment.id] = value
         return res
 
-    def set_datas(self, ids, name, value):
+    def set_data(self, ids, name, value):
         if value is False or value is None:
             return
         cursor = Transaction().cursor
@@ -114,9 +138,8 @@ class Attachment(ModelSQL, ModelView):
         filename = os.path.join(directory, digest)
         collision = 0
         if os.path.isfile(filename):
-            file_p = open(filename, 'rb')
-            data2 = file_p.read()
-            file_p.close()
+            with open(filename, 'rb') as file_p:
+                data2 = file_p.read()
             if data != data2:
                 cursor.execute('SELECT DISTINCT(collision) FROM ir_attachment ' \
                         'WHERE digest = %s ' \
@@ -128,9 +151,8 @@ class Attachment(ModelSQL, ModelView):
                     filename = os.path.join(directory,
                             digest + '-' + str(collision2))
                     if os.path.isfile(filename):
-                        file_p = open(filename, 'rb')
-                        data2 = file_p.read()
-                        file_p.close()
+                        with open(filename, 'rb') as file_p:
+                            data2 = file_p.read()
                         if data == data2:
                             collision = collision2
                             break
@@ -138,18 +160,34 @@ class Attachment(ModelSQL, ModelView):
                     collision = collision2 + 1
                     filename = os.path.join(directory,
                             digest + '-' + str(collision))
-                    file_p = open(filename, 'wb')
-                    file_p.write(data)
-                    file_p.close()
+                    with open(filename, 'wb') as file_p:
+                        file_p.write(data)
         else:
-            file_p = open(filename, 'wb')
-            file_p.write(data)
-            file_p.close()
+            with open(filename, 'wb') as file_p:
+                file_p.write(data)
         self.write(ids, {
             'digest': digest,
             'collision': collision,
             })
 
+    def get_summary(self, ids, name):
+        return dict((x.id, firstline(x.description or ''))
+            for x in self.browse(ids))
+
+    def on_change_with_summary(self, values):
+        return firstline(values.get('description') or '')
+
+    def get_last_modification(self, ids, name):
+        return dict((x.id, (x.write_date if x.write_date else x.create_date
+            ).replace(microsecond=0))
+            for x in self.browse(ids))
+
+    def get_last_user(self, ids, name):
+        with Transaction().set_user(0):
+            return dict( (x.id, x.write_uid.rec_name if x.write_uid
+                else x.create_uid.rec_name) for x in self.browse(ids))
+
+
     def check_access(self, ids, mode='read'):
         model_access_obj = self.pool.get('ir.model.access')
         if Transaction().user == 0:
@@ -185,4 +223,18 @@ class Attachment(ModelSQL, ModelView):
         self.check_access(res, mode='create')
         return res
 
+    def view_header_get(self, value, view_type='form'):
+        ir_model_obj = self.pool.get('ir.model')
+        value = super(Attachment, self).view_header_get(value,
+                view_type=view_type)
+        resource = Transaction().context.get('resource')
+        if resource:
+            model_name, record_id = resource.split(',', 1)
+            ir_model_id, = ir_model_obj.search([('model', '=', model_name)])
+            ir_model = ir_model_obj.browse(ir_model_id)
+            model_obj = self.pool.get(model_name)
+            record = model_obj.browse(int(record_id))
+            value = '%s - %s - %s' % (ir_model.name, record.rec_name, value)
+        return value
+
 Attachment()
diff --git a/trytond/ir/attachment.xml b/trytond/ir/attachment.xml
index 3061e71..8386dff 100644
--- a/trytond/ir/attachment.xml
+++ b/trytond/ir/attachment.xml
@@ -9,22 +9,31 @@ this repository contains the full copyright notices and license terms. -->
             <field name="arch" type="xml">
               <![CDATA[
                 <form string="Attachments" col="2">
-                    <label name="resource"/>
-                    <field name="resource"/>
-                    <label name="name"/>
-                    <field name="name"/>
-                    <label name="datas"/>
-                    <field name="datas"/>
-                    <label name="link"/>
-                    <field name="link" widget="url"/>
-                    <notebook colspan="2">
-                        <page string="Preview" name="preview" col="1">
-                            <field name="datas" widget="image"/>
-                        </page>
+                    <group id="content" col="2" colspan="1">
+                        <label name="resource"/>
+                        <field name="resource"/>
+                        <label name="name"/>
+                        <group id="name_data" col="2" colspan="1">
+                            <field name="name"/>
+                            <field name="data" xexpand="0"/>
+                        </group>
+                        <label name="type"/>
+                        <field name="type"/>
+                        <label name="link"/>
+                        <field name="link" widget="url"/>
+                    </group>
+                    <field name="data" widget="image" readonly="1"/>
+                    <notebook>
                         <page name="description" col="1">
                             <field name="description"/>
                         </page>
                     </notebook>
+                    <group id="last" col="4" colspan="2">
+                        <label name="last_user"/>
+                        <field name="last_user"/>
+                        <label name="last_modification"/>
+                        <field name="last_modification"/>
+                    </group>
                 </form>
                 ]]>
             </field>
@@ -37,7 +46,10 @@ this repository contains the full copyright notices and license terms. -->
                 <tree string="Attachments" fill="1">
                     <field name="resource" select="1"/>
                     <field name="name" select="1"/>
-                    <field name="datas_size"/>
+                    <field name="data_size"/>
+                    <field name="summary"/>
+                    <field name="last_user"/>
+                    <field name="last_modification"/>
                 </tree>
                 ]]>
             </field>
@@ -46,7 +58,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Attachments</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">ir.attachment</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_attachment_form_view1">
diff --git a/trytond/ir/bg_BG.csv b/trytond/ir/bg_BG.csv
new file mode 100644
index 0000000..a6ed302
--- /dev/null
+++ b/trytond/ir/bg_BG.csv
@@ -0,0 +1,720 @@
+type,name,res_id,src,value,fuzzy
+error,access_error,0,"You try to bypass an access rule!
+(Document type: %s)","Опитвате се да прескочите право за достъп!
+(Вид документ: %s)",0
+error,delete_workflow_record,0,You cannot delete a record with a running workflow.,Не може да изтривате запис от работещ работен процес.,0
+error,delete_xml_record,0,You are not allowed to delete this record.,Нямате права да изтривате този запис.,0
+error,digits_validation_record,0,"The field ""%s"" on ""%s"" has too many decimal digits.","Полето ""%s"" от ""%s"" има много десетични цифри",0
+error,domain_validation_record,0,"The value of the field ""%s"" on ""%s"" is not valid according to its domain.","Стойността на полето ""%s"" от ""%s"" не е валидно според домейна.",0
+error,foreign_model_exist,0,"Could not delete ""%s"" records because they are used on field ""%s"" of ""%s"".","Не може да изтривате записи ""%s"" защото се използват в поле ""%s"" от ""%s"".",0
+error,foreign_model_missing,0,"The value of field ""%s"" on ""%s"" doesn't exist.","Стойността на полето ""%s"" от ""%s"" не съществува.",0
+error,ir.action.act_window,0,Invalid context!,Невалиден контекст!,0
+error,ir.action.act_window,0,Invalid domain!,Невалиден домайн!,0
+error,ir.action.act_window,0,Invalid search criteria!,Невалиден критерии за търсене!,0
+error,ir.action.act_window,0,Invalid views!,Невалидни изгледи!,0
+error,ir.action.keyword,0,Wrong wizard model!,Грешен модел на помощник!,0
+error,ir.action.report,0,The internal name must be unique by module!,Вътрепното име трябва да е уникално в модула!,0
+error,ir.attachment,0,The  names of attachments must be unique by resource!,Имената на прикачените файлове трябва да са уникални по ресурс!,0
+error,ir.cron,0,Scheduled action failed,Планираното действие неуспяло,0
+error,ir.cron,0,"The following action failed to execute properly: ""%s""
+ Traceback: 
+
+%s
+","Следното действие не е изпълнено успешно: ""%s""
+Информация:
+
+%s",0
+error,ir.lang,0,Invalid Grouping!,Невалидно групиране!,0
+error,ir.lang,0,The date format is not valid!,Формата на датата е невалиден!,0
+error,ir.lang,0,decimal_point and thousands_sep must be different!,десетична точка и разделител на хиляди трябва да са различни!,0
+error,ir.model,0,Module Name must be a python identifier!,Името на модула трябва да бъде python идентификатор!,0
+error,ir.model,0,The model must be unique!,Модела трябва да е уникален!,0
+error,ir.model.access,0,Only one record by model and group is allowed!,Разрешен е само един запис за модел и група!,0
+error,ir.model.access,0,You can not create this kind of document! (%s),Не може да създадете този вид документ! (%s),0
+error,ir.model.access,0,You can not delete this document! (%s),Не може да изтриете този документ! (%s),0
+error,ir.model.access,0,You can not read this document! (%s),Не може да четете този документ! (%s),0
+error,ir.model.access,0,You can not write in this document! (%s),Не може да пишете в този документ! (%s),0
+error,ir.model.data,0,"The triple (fs_id, module, model) must be unique!","Тройката (fs_id, module, model) трябва да е уникална!",0
+error,ir.model.field,0,Model Field Name must be a python identifier!,Името за поле на модел трябва да бъде python идентификатор!,0
+error,ir.model.field,0,The field name in model must be unique!,Името на полето трябва да е уникално!,0
+error,ir.model.field.access,0,Only one record by field and group is allowed!,Позволен е само един запис по поле и група!,0
+error,ir.model.field.access,0,You can not read the field! (%s.%s),Не може да прочетете полето! (%s.%s),0
+error,ir.model.field.access,0,You can not write on the field! (%s.%s),Не може да записвате полето! (%s.%s),0
+error,ir.module.module,0,"Missing dependencies %s for module ""%s""","Липсващи зависимости %s за модул ""%s""",0
+error,ir.module.module,0,The modules you are trying to uninstall depends on installed modules:,От модула който исакте да деинсталирате зависят следните инсталирани модули:,0
+error,ir.module.module,0,The name of the module must be unique!,Името на модула трябва да е уникално!,0
+error,ir.module.module,0,You can not remove a module that is installed or will be installed,Не може да изтривате модул който инсталиран или ще бъде инсталиран,0
+error,ir.module.module.dependency,0,Dependency must be unique by module!,Зависимостта трябва да е уникална за модул!,0
+error,ir.rule.group,0,Global and Default are mutually exclusive!,Глобален и По подразбиране са взаимно самоизключващи се!,0
+error,ir.sequence,0,Invalid prefix/suffix!,Невалиден префикс/суфикс!,0
+error,ir.sequence,0,Last Timestamp could not be in future!,Последния времеви маркер не може да е в бъдещето!,0
+error,ir.sequence,0,Missing sequence!,Липсва последователност!,0
+error,ir.sequence.strict,0,Invalid prefix/suffix!,Невалиден префикс/суфикс!,0
+error,ir.sequence.strict,0,Last Timestamp could not be in future!,Последния времеви маркер не може да е в бъдещето!,0
+error,ir.sequence.strict,0,Missing sequence!,Липсва последователност!,0
+error,ir.translation,0,Translation must be unique,Превода трябва да е уникален,0
+error,ir.translation,0,Translation of type 'model' must be unique!,Превод от вид 'модел' трябва да е уникален!,0
+error,ir.trigger,0,"""On Time"" and others are mutually exclusive!","""В даден момент"" и останалите са взаимно изключващи се!",0
+error,ir.trigger,0,Condition must be a python expression!,Условието трябва да е python израз!,0
+error,ir.ui.view,0,Invalid XML for View!,Невалиден XML за изглед!,0
+error,not_found_in_selection,0,Key %r not found in selection field %r,Ключа %r не е намерен в полето за избор %r,0
+error,read_error,0,"You try to read records that don't exist anymore!
+(Document type: %s)","Опитвате се да прочетете запис който вече не съществува!
+(Вид документ: %s)",0
+error,reference_syntax_error,0,Syntax error for reference %r in %s,Синтактична грешка за отпратка %r в %s,0
+error,relation_not_found,0,Relation not found: %r in %s,Не е намерена зависимост: %r в %s,0
+error,required_field,0,"The field ""%s"" on ""%s"" is required.","Полето ""%s"" от ""%s"" е задължително.",0
+error,required_validation_record,0,"The field ""%s"" on ""%s"" is required.","Полето ""%s"" от ""%s"" е задължително.",0
+error,search_function_missing,0,"Missing search function on field ""%s"".","Липсват функции за търсене върху поле ""%s"".",0
+error,size_validation_record,0,"The field ""%s"" on ""%s"" is too long.","Полето ""%s"" от ""%s"" е много дълго.",0
+error,too_many_relations_found,0,Too many relations found: %r in %s,Намерени са твърде много зависимости: %r в %s,0
+error,write_error,0,"You try to write on records that don't exist anymore!
+(Document type: %s)","Опитвате се да запишете в запис който вече не съшествува!
+(Вид документ: %s)",0
+error,write_xml_record,0,You are not allowed to modify this record.,Нямате права да променяте този запис.,0
+error,xml_id_syntax_error,0,Syntax error for XML id %r in %s,Ситактична грешка за XML id %r в %s,0
+error,xml_record_desc,0,This record is part of the base configuration.,Този запис е част от основната конфигурация.,0
+field,"ir.action,active",0,Active,Активен,0
+field,"ir.action,groups",0,Groups,Групи,0
+field,"ir.action,icon",0,Icon,Икона,0
+field,"ir.action,keywords",0,Keywords,Ключови думи,0
+field,"ir.action,name",0,Name,Име,0
+field,"ir.action,rec_name",0,Name,Име,0
+field,"ir.action,type",0,Type,Вид,0
+field,"ir.action,usage",0,Usage,Използване,0
+field,"ir.action.act_window,act_window_views",0,Views,Изгледи,0
+field,"ir.action.act_window,action",0,Action,Действие,0
+field,"ir.action.act_window,auto_refresh",0,Auto-Refresh,Самообновяване,0
+field,"ir.action.act_window,context",0,Context Value,Стойност на котекст,0
+field,"ir.action.act_window,domain",0,Domain Value,Стойност на домейн,0
+field,"ir.action.act_window,limit",0,Limit,Ограничение,0
+field,"ir.action.act_window,pyson_context",0,PySON Context,PySON контекст,0
+field,"ir.action.act_window,pyson_domain",0,PySON Domain,PySON контекст,0
+field,"ir.action.act_window,pyson_search_value",0,PySON Search Criteria,PySON критерии за търсене,0
+field,"ir.action.act_window,rec_name",0,Name,Име,0
+field,"ir.action.act_window,res_model",0,Model,Модел,0
+field,"ir.action.act_window,search_value",0,Search Criteria,Критерии за търсене,0
+field,"ir.action.act_window,view_type",0,Type of view,Вид изглед,0
+field,"ir.action.act_window,views",0,Views,Изгледи,0
+field,"ir.action.act_window,window_name",0,Window Name,Име на прозорец,0
+field,"ir.action.act_window.view,act_window",0,Action,Действие,0
+field,"ir.action.act_window.view,rec_name",0,Name,Име,0
+field,"ir.action.act_window.view,sequence",0,Sequence,Последователност,0
+field,"ir.action.act_window.view,view",0,View,Изглед,0
+field,"ir.action.keyword,action",0,Action,Действие,0
+field,"ir.action.keyword,keyword",0,Keyword,Ключова дума,0
+field,"ir.action.keyword,model",0,Model,Модел,0
+field,"ir.action.keyword,rec_name",0,Name,Име,0
+field,"ir.action.report,action",0,Action,Действие,0
+field,"ir.action.report,direct_print",0,Direct Print,Директен печат,0
+field,"ir.action.report,email",0,Email,Email,0
+field,"ir.action.report,extension",0,Extension,Разширение,0
+field,"ir.action.report,model",0,Model,Модел,0
+field,"ir.action.report,module",0,Module,Модул,0
+field,"ir.action.report,pyson_email",0,PySON Email,PySON Email,0
+field,"ir.action.report,rec_name",0,Name,Име,0
+field,"ir.action.report,report",0,Path,Път,0
+field,"ir.action.report,report_content",0,Content,Съдържание,0
+field,"ir.action.report,report_content_data",0,Content,Съдържание,0
+field,"ir.action.report,report_name",0,Internal Name,Вътрешно име,0
+field,"ir.action.report,style",0,Style,Стил,0
+field,"ir.action.report,style_content",0,Style,Стил,0
+field,"ir.action.url,action",0,Action,Действие,0
+field,"ir.action.url,rec_name",0,Name,Име,0
+field,"ir.action.url,url",0,Action Url,URL на действие,0
+field,"ir.action.wizard,action",0,Action,Действие,0
+field,"ir.action.wizard,email",0,Email,Email,0
+field,"ir.action.wizard,model",0,Model,Модел,0
+field,"ir.action.wizard,rec_name",0,Name,Име,0
+field,"ir.action.wizard,window",0,Window,Прозорец,0
+field,"ir.action.wizard,wiz_name",0,Wizard name,Име на помощник,0
+field,"ir.action.wizard_size,height",0,Height,Височина,0
+field,"ir.action.wizard_size,model",0,Model,Модел,0
+field,"ir.action.wizard_size,rec_name",0,Name,Име,0
+field,"ir.action.wizard_size,user",0,User,Потребител,0
+field,"ir.action.wizard_size,width",0,Width,Ширина,0
+field,"ir.action.wizard_size,wizard",0,Wizard,Помощник,0
+field,"ir.attachment,collision",0,Collision,Конфликт,0
+field,"ir.attachment,data",0,Data,Данни,0
+field,"ir.attachment,data_size",0,Data size,Размер на данни,0
+field,"ir.attachment,datas",0,Datas,Данни,0
+field,"ir.attachment,datas_size",0,Datas size,Размер на данните,0
+field,"ir.attachment,description",0,Description,Описание,0
+field,"ir.attachment,digest",0,Digest,Резюме,0
+field,"ir.attachment,last_modification",0,Last Modification,Последна промяна,0
+field,"ir.attachment,last_user",0,Last User,Последен потребител,0
+field,"ir.attachment,link",0,Link,Препратка,0
+field,"ir.attachment,name",0,Name,Име на прикачен файл,0
+field,"ir.attachment,rec_name",0,Name,Име,0
+field,"ir.attachment,resource",0,Resource,Ресурс,0
+field,"ir.attachment,summary",0,Summary,Обобщено,0
+field,"ir.attachment,type",0,Type,Вид,0
+field,"ir.cache,name",0,Name,Име,0
+field,"ir.cache,rec_name",0,Name,Име,0
+field,"ir.cache,timestamp",0,Timestamp,Дата,0
+field,"ir.cron,active",0,Active,Активен,0
+field,"ir.cron,args",0,Arguments,Аргументи,0
+field,"ir.cron,doall",0,Repeat missed,Повтаряне на липсващите,0
+field,"ir.cron,function",0,Function,Функция,0
+field,"ir.cron,interval_number",0,Interval Number,Номер на интервал,0
+field,"ir.cron,interval_type",0,Interval Unit,Единица за интервал,0
+field,"ir.cron,model",0,Model,Модел,0
+field,"ir.cron,name",0,Name,Име,0
+field,"ir.cron,nextcall",0,Next call date,Следващата дата на разговор,0
+field,"ir.cron,numbercall",0,Number of calls,Брой обаждания,0
+field,"ir.cron,priority",0,Priority,Важност,0
+field,"ir.cron,rec_name",0,Name,Име,0
+field,"ir.cron,request_user",0,Request User,Заявил потребител,0
+field,"ir.cron,running",0,Running,Работещ,0
+field,"ir.cron,user",0,Execution User,Изпълняващ потребител,0
+field,"ir.default,clause",0,Clause,Клауза,0
+field,"ir.default,field",0,Field,Поле,0
+field,"ir.default,model",0,Model,Модел,0
+field,"ir.default,rec_name",0,Name,Име,0
+field,"ir.default,user",0,User,Потребител,0
+field,"ir.default,value",0,Value,Стойност,0
+field,"ir.export,export_fields",0,Fields,Полета,0
+field,"ir.export,name",0,Name,Име,0
+field,"ir.export,rec_name",0,Name,Име,0
+field,"ir.export,resource",0,Resource,Ресурс,0
+field,"ir.export.line,export",0,Export,Извличане,0
+field,"ir.export.line,name",0,Name,Име,0
+field,"ir.export.line,rec_name",0,Name,Име,0
+field,"ir.lang,active",0,Active,Активен,0
+field,"ir.lang,code",0,Code,Код,0
+field,"ir.lang,date",0,Date,Дата,0
+field,"ir.lang,decimal_point",0,Decimal Separator,Десетичен разделител,0
+field,"ir.lang,direction",0,Direction,Посока,0
+field,"ir.lang,grouping",0,Grouping,Групиране,0
+field,"ir.lang,name",0,Name,Име,0
+field,"ir.lang,rec_name",0,Name,Име,0
+field,"ir.lang,thousands_sep",0,Thousands Separator,Разделител за хиляди,0
+field,"ir.lang,translatable",0,Translatable,За превод,0
+field,"ir.model,fields",0,Fields,Полета,0
+field,"ir.model,info",0,Information,Информация,0
+field,"ir.model,model",0,Model Name,Име на модел,0
+field,"ir.model,module",0,Module,Модул,0
+field,"ir.model,name",0,Model Description,Описание на модел,0
+field,"ir.model,rec_name",0,Name,Име,0
+field,"ir.model.access,description",0,Description,Описание,0
+field,"ir.model.access,group",0,Group,Група,0
+field,"ir.model.access,model",0,Model,Модел,0
+field,"ir.model.access,perm_create",0,Create Access,Права за създаване,0
+field,"ir.model.access,perm_delete",0,Delete Access,Права за изтриване,0
+field,"ir.model.access,perm_read",0,Read Access,Права за четене,0
+field,"ir.model.access,perm_write",0,Write Access,Права за писане,0
+field,"ir.model.access,rec_name",0,Name,Име,0
+field,"ir.model.data,date_init",0,Init Date,Начална дата,0
+field,"ir.model.data,date_update",0,Update Date,Дата на обновяване,0
+field,"ir.model.data,db_id",0,Resource ID,ID на ресурс,0
+field,"ir.model.data,fs_id",0,Identifier on File System,Идентификатор от файлова система,0
+field,"ir.model.data,inherit",0,Inherit,Наследяване,0
+field,"ir.model.data,model",0,Model,Модел,0
+field,"ir.model.data,module",0,Module,Модул,0
+field,"ir.model.data,noupdate",0,No Update,Без обновяване,0
+field,"ir.model.data,rec_name",0,Name,Име,0
+field,"ir.model.data,values",0,Values,Стойности,0
+field,"ir.model.field,field_description",0,Field Description,Описание на поле,0
+field,"ir.model.field,groups",0,Groups,Групи,0
+field,"ir.model.field,help",0,Help,Помощ,0
+field,"ir.model.field,model",0,Model,Модел,0
+field,"ir.model.field,module",0,Module,Модул,0
+field,"ir.model.field,name",0,Name,Име,0
+field,"ir.model.field,rec_name",0,Name,Име,0
+field,"ir.model.field,relation",0,Model Relation,Модел на връзка,0
+field,"ir.model.field,ttype",0,Field Type,Вид на поле,0
+field,"ir.model.field.access,description",0,Description,Описание,0
+field,"ir.model.field.access,field",0,Field,Поле,0
+field,"ir.model.field.access,group",0,Group,Група,0
+field,"ir.model.field.access,perm_read",0,Read Access,Права за четене,0
+field,"ir.model.field.access,perm_write",0,Write Access,Права за писане,0
+field,"ir.model.field.access,rec_name",0,Name,Име на прикачен файл,0
+field,"ir.model.print_model_graph.init,filter",0,Filter,Филтър,0
+field,"ir.model.print_model_graph.init,level",0,Level,Ниво,0
+field,"ir.module.module,author",0,Author,Автор,0
+field,"ir.module.module,dependencies",0,Dependencies,Зависимости,0
+field,"ir.module.module,description",0,Description,Описание,0
+field,"ir.module.module,name",0,Name,Име,0
+field,"ir.module.module,rec_name",0,Name,Име,0
+field,"ir.module.module,shortdesc",0,Short description,Кратко описание,0
+field,"ir.module.module,state",0,State,Състояние,0
+field,"ir.module.module,version",0,Version,Версия,0
+field,"ir.module.module,website",0,Website,Website,0
+field,"ir.module.module.config_wizard.item,name",0,Name,Име,0
+field,"ir.module.module.config_wizard.item,rec_name",0,Name,Име,0
+field,"ir.module.module.config_wizard.item,sequence",0,Sequence,Последователност,0
+field,"ir.module.module.config_wizard.item,state",0,State,Състояние,0
+field,"ir.module.module.dependency,module",0,Module,Модул,0
+field,"ir.module.module.dependency,name",0,Name,Име,0
+field,"ir.module.module.dependency,rec_name",0,Name,Име,0
+field,"ir.module.module.dependency,state",0,State,Състояние,0
+field,"ir.module.module.install_upgrade.init,module_info",0,Modules to update,Модули за обновяване,0
+field,"ir.property,field",0,Field,Поле,0
+field,"ir.property,name",0,Name,Име,0
+field,"ir.property,rec_name",0,Name,Име,0
+field,"ir.property,res",0,Resource,Ресурс,0
+field,"ir.property,value",0,Value,Стойност,0
+field,"ir.rule,field",0,Field,Поле,0
+field,"ir.rule,operand",0,Operand,Операнд,0
+field,"ir.rule,operator",0,Operator,Оператор,0
+field,"ir.rule,rec_name",0,Name,Име,0
+field,"ir.rule,rule_group",0,Group,Група,0
+field,"ir.rule.group,default_p",0,Default,По подразбиране,0
+field,"ir.rule.group,global_p",0,Global,Глобален,0
+field,"ir.rule.group,groups",0,Groups,Групи,0
+field,"ir.rule.group,model",0,Model,Модел,0
+field,"ir.rule.group,name",0,Name,Име,0
+field,"ir.rule.group,perm_create",0,Create Access,Права за създаване,0
+field,"ir.rule.group,perm_delete",0,Delete Access,Изтриване на достъп,0
+field,"ir.rule.group,perm_read",0,Read Access,Права за четене,0
+field,"ir.rule.group,perm_write",0,Write Access,Права за писане,0
+field,"ir.rule.group,rec_name",0,Name,Име,0
+field,"ir.rule.group,rules",0,Tests,Тестове,0
+field,"ir.rule.group,users",0,Users,Потребители,0
+field,"ir.sequence,active",0,Active,Активен,0
+field,"ir.sequence,code",0,Sequence Code,Вид последователност,0
+field,"ir.sequence,last_timestamp",0,Last Timestamp,Последен времеви маркер,0
+field,"ir.sequence,name",0,Sequence Name,Име на последователност,0
+field,"ir.sequence,number_increment",0,Increment Number,Стойност на увеличаване,0
+field,"ir.sequence,number_next",0,Next Number,Следващо число,0
+field,"ir.sequence,padding",0,Number padding,Фиксирана дължина (нули),0
+field,"ir.sequence,prefix",0,Prefix,Префикс,0
+field,"ir.sequence,rec_name",0,Name,Име,0
+field,"ir.sequence,suffix",0,Suffix,Суфикс,0
+field,"ir.sequence,timestamp_offset",0,Timestamp Offset,Отместване на времеви маркер,0
+field,"ir.sequence,timestamp_rounding",0,Timestamp Rounding,Закръгление на времеви маркер,0
+field,"ir.sequence,type",0,Type,Вид,0
+field,"ir.sequence.strict,active",0,Active,Активен,0
+field,"ir.sequence.strict,code",0,Sequence Code,Вид последователност,0
+field,"ir.sequence.strict,last_timestamp",0,Last Timestamp,Последен времеви маркер,0
+field,"ir.sequence.strict,name",0,Sequence Name,Име на последователност,0
+field,"ir.sequence.strict,number_increment",0,Increment Number,Стойност на увеличаване,0
+field,"ir.sequence.strict,number_next",0,Next Number,Следващо число,0
+field,"ir.sequence.strict,padding",0,Number padding,Фиксирана дължина (нули),0
+field,"ir.sequence.strict,prefix",0,Prefix,Префикс,0
+field,"ir.sequence.strict,rec_name",0,Name,Име,0
+field,"ir.sequence.strict,suffix",0,Suffix,Суфикс,0
+field,"ir.sequence.strict,timestamp_offset",0,Timestamp Offset,Отместване на времеви маркер,0
+field,"ir.sequence.strict,timestamp_rounding",0,Timestamp Rounding,Закръгление на времеви маркер,0
+field,"ir.sequence.strict,type",0,Type,Вид,0
+field,"ir.sequence.type,code",0,Sequence Code,Код на последователност,0
+field,"ir.sequence.type,name",0,Sequence Name,Име на последователност,0
+field,"ir.sequence.type,rec_name",0,Name,Име,0
+field,"ir.translation,fuzzy",0,Fuzzy,Неясен,0
+field,"ir.translation,lang",0,Language,Език,0
+field,"ir.translation,model",0,Model,Модел,0
+field,"ir.translation,module",0,Module,Модул,0
+field,"ir.translation,name",0,Field Name,Име на поле,0
+field,"ir.translation,rec_name",0,Name,Име,0
+field,"ir.translation,res_id",0,Resource ID,ID на ресурс,0
+field,"ir.translation,src",0,Source,Източник,0
+field,"ir.translation,src_md5",0,Source MD5,MD5 на източник,0
+field,"ir.translation,type",0,Type,Вид,0
+field,"ir.translation,value",0,Translation Value,Преведено значение,0
+field,"ir.translation.export.init,lang",0,Language,Език,0
+field,"ir.translation.export.init,module",0,Module,Модул,0
+field,"ir.translation.export.start,file",0,File,Файл,0
+field,"ir.translation.update.init,lang",0,Language,Език,0
+field,"ir.trigger,action_function",0,Action Function,Функция на действие,0
+field,"ir.trigger,action_model",0,Action Model,Модел на действие,0
+field,"ir.trigger,active",0,Active,Активен,0
+field,"ir.trigger,condition",0,Condition,Условие,0
+field,"ir.trigger,limit_number",0,Limit Number,Макс брой редове,0
+field,"ir.trigger,minimum_delay",0,Minimum Delay,Минимално забавяне,0
+field,"ir.trigger,model",0,Model,Модел,0
+field,"ir.trigger,name",0,Name,Име,0
+field,"ir.trigger,on_create",0,On Create,При създаване,0
+field,"ir.trigger,on_delete",0,On Delete,При изтриване,0
+field,"ir.trigger,on_time",0,On Time,В даден момент,0
+field,"ir.trigger,on_write",0,On Write,При запис,0
+field,"ir.trigger,rec_name",0,Name,Име,0
+field,"ir.trigger.log,rec_name",0,Name,Име,0
+field,"ir.trigger.log,record_id",0,Record ID,ID на запис,0
+field,"ir.trigger.log,trigger",0,Trigger,Превключвател,0
+field,"ir.ui.icon,icon",0,Icon,Икона,0
+field,"ir.ui.icon,module",0,Module,Модул,0
+field,"ir.ui.icon,name",0,Name,Име на прикачен файл,0
+field,"ir.ui.icon,path",0,SVG Path,Път към SVG файл,0
+field,"ir.ui.icon,rec_name",0,Name,Име на прикачен файл,0
+field,"ir.ui.icon,sequence",0,Sequence,Последователност,0
+field,"ir.ui.menu,action",0,Action,Действие,0
+field,"ir.ui.menu,active",0,Active,Активен,0
+field,"ir.ui.menu,childs",0,Children,Деца,0
+field,"ir.ui.menu,complete_name",0,Complete Name,Пълно име,0
+field,"ir.ui.menu,groups",0,Groups,Групи,0
+field,"ir.ui.menu,icon",0,Icon,Икона,0
+field,"ir.ui.menu,name",0,Menu,Меню,0
+field,"ir.ui.menu,parent",0,Parent Menu,Родителско меню,0
+field,"ir.ui.menu,rec_name",0,Name,Име,0
+field,"ir.ui.menu,sequence",0,Sequence,Последователност,0
+field,"ir.ui.view,arch",0,View Architecture,Архитектура на изгледа,0
+field,"ir.ui.view,domain",0,Domain,Домейн,0
+field,"ir.ui.view,field_childs",0,Children Field,Подчинено поле,0
+field,"ir.ui.view,inherit",0,Inherited View,Наследен изглед,0
+field,"ir.ui.view,model",0,Model,Модел,0
+field,"ir.ui.view,module",0,Module,Модул,0
+field,"ir.ui.view,priority",0,Priority,Важност,0
+field,"ir.ui.view,rec_name",0,Name,Име,0
+field,"ir.ui.view,type",0,View Type,Вид изглед,0
+field,"ir.ui.view_sc,name",0,Shortcut Name,Име на бърз клавиш,0
+field,"ir.ui.view_sc,rec_name",0,Name,Име,0
+field,"ir.ui.view_sc,res_id",0,Resource Ref.,Отпр. към ресурс,0
+field,"ir.ui.view_sc,resource",0,Resource Name,Име на ресурс,0
+field,"ir.ui.view_sc,sequence",0,Sequence,Последователност,0
+field,"ir.ui.view_sc,user_id",0,User Ref.,Препр. на потребител,0
+field,"ir.ui.view_tree_width,field",0,Field,Поле,0
+field,"ir.ui.view_tree_width,model",0,Model,Модел,0
+field,"ir.ui.view_tree_width,rec_name",0,Name,Име,0
+field,"ir.ui.view_tree_width,user",0,User,Потребител,0
+field,"ir.ui.view_tree_width,width",0,Width,Ширина,0
+help,"ir.action.act_window,auto_refresh",0,Add an auto-refresh on the view,Добавяне на самообновяване на изгледа,0
+help,"ir.action.act_window,limit",0,Default limit for the list view,Ограничение по подразбиране за изглед със списък,0
+help,"ir.action.act_window,search_value",0,Default search criteria for the list view,Условие за търсене по подразбиране върху изглед със списък ,0
+help,"ir.action.act_window,window_name",0,Use the action name as window name,Използване на името на действие като име на прозорец,0
+help,"ir.action.report,style",0,Define the style to apply on the report.,Задайте стила който да се приложа на тази справка.,0
+help,"ir.action.wizard,window",0,Run wizard in a new window,Стартиране на помощник в нов прозорец,0
+help,"ir.cron,numbercall",0,"Number of times the function is called,
+a negative number indicates that the function will always be called","Брой пъти на извикване на функцията,
+отрицателно число показва че фунцията ще се извиква винаги",0
+help,"ir.cron,priority",0,"0=Very Urgent
+10=Not urgent","0=Много спешно
+10=Не е спешно",0
+help,"ir.cron,request_user",0,The user who will receive requests in case of failure,Потребителя който получава заявки в случай на проблем,0
+help,"ir.cron,user",0,The user used to execute this action,Потребителя от чието име се изпълнява действието,0
+help,"ir.lang,code",0,RFC 4646 tag: http://tools.ietf.org/html/rfc4646,,0
+help,"ir.model,module",0,Module in which this model is defined,Модула в който този модел е зададен,0
+help,"ir.model.data,db_id",0,The id of the record in the database.,ID на записа в базата данни.,0
+help,"ir.model.data,fs_id",0,The id of the record as known on the file system.,ID на записа както е записан в файловата система,0
+help,"ir.model.field,module",0,Module in which this field is defined,Модул в който този модел е зададен,0
+help,"ir.model.print_model_graph.init,filter",0,Entering a Python Regular Expression will exclude matching models from the graph.,Въвеждането на регулярен израз на python ще изключи пасващия модел от диаграмата.,0
+help,"ir.rule.group,default_p",0,Add this rule to all users by default,По подразбиране добавете това правило за всички потребители,0
+help,"ir.rule.group,global_p",0,"Make the rule global 
+so every users must follow this rule","Направете правилото глобално
+така че всеки потребител да го прилага",0
+help,"ir.rule.group,rules",0,The rule is satisfied if at least one test is True,Правилото е удовлетворено ако поне един тест е успешен,0
+help,"ir.trigger,condition",0,"A Python statement evaluated with record represented by ""self""
+It triggers the action if true.","Python израз изчислен със запис представен със ""self""
+Извиква действието ако е истина.",0
+help,"ir.trigger,limit_number",0,"Limit the number of call to ""Action Function"" by records.
+0 for no limit.","Ограничаване на броя извиквания на ""Действие на фунция"" по записи.
+0 - няма ограничение",0
+help,"ir.trigger,minimum_delay",0,"Set a minimum delay in minutes between call to ""Action Function"" for the same record.
+0 for no delay.","Минимално забавяне в минути между извикването на ""Действие на функция"" за този запис.
+0 за да няма забавяне",0
+model,"ir.action,name",,Defaults,По подрабиране,0
+model,"ir.action,name",,Menus,Менюта,0
+model,"ir.action,name",0,Action,Действие,0
+model,"ir.action,name",act_action_act_window_form,Window Actions,Действия на прозорец,0
+model,"ir.action,name",act_action_form,Actions,Действия,0
+model,"ir.action,name",act_action_report_form,Reports,Справки,0
+model,"ir.action,name",act_action_url_form,URLs,URL-и,0
+model,"ir.action,name",act_action_wizard_form,Wizards,Помощници,0
+model,"ir.action,name",act_action_wizard_size_form,Wizard Sizes,Размери на помощник,0
+model,"ir.action,name",act_attachment_form,Attachments,Прикачени файлове,0
+model,"ir.action,name",act_config_wizard_item_form,Config Wizard Items,Елементи на помощника за конфигуриране,0
+model,"ir.action,name",act_cron_form,Scheduled Actions,Планирани действия,0
+model,"ir.action,name",act_export_form,Exports,Извличания,0
+model,"ir.action,name",act_icon_form,Icons,Икони,0
+model,"ir.action,name",act_lang_form,Languages,Езици,0
+model,"ir.action,name",act_menu_tree,Menu,Меню,0
+model,"ir.action,name",act_model_access_form,Models Access,Модел на достъп,0
+model,"ir.action,name",act_model_field_access_form,Fields Access,Достъп до полета,0
+model,"ir.action,name",act_model_fields_form,Fields,Полета,0
+model,"ir.action,name",act_model_form,Models,Модели,0
+model,"ir.action,name",act_module_config_wizard,Module Configuration,Конфицурация на модул,0
+model,"ir.action,name",act_module_form,Modules,Модули,0
+model,"ir.action,name",act_module_install_upgrade,Perform Pending Installation/Upgrade,Започване на изчакващите инталации/обновявания,0
+model,"ir.action,name",act_property_form,Properties,Свойства,0
+model,"ir.action,name",act_property_form_default,Default Properties,Свойства по подразбиране,0
+model,"ir.action,name",act_rule_group_form,Record Rules,Правила на запис,0
+model,"ir.action,name",act_sequence_form,Sequences,Последователности,0
+model,"ir.action,name",act_sequence_strict_form,Sequences Strict,Точни последователности,0
+model,"ir.action,name",act_sequence_type_form,Sequence Types,Видове последователности,0
+model,"ir.action,name",act_translation_clean,Clean Translations,Изчистване на преводи,0
+model,"ir.action,name",act_translation_export,Export Translations,Извличане на преводи,0
+model,"ir.action,name",act_translation_form,Translations,Преводи,0
+model,"ir.action,name",act_translation_set_report,Set Report Translations,Задаване на преводи на справки,0
+model,"ir.action,name",act_translation_update,Synchronize Translations,Синхронизиране на преводите,0
+model,"ir.action,name",act_trigger_form,Triggers,Превключватели,0
+model,"ir.action,name",act_view_form,Views,Изгледи,0
+model,"ir.action,name",act_view_sc_add,Add Shortcut,Добавяне на бърз клавиш,0
+model,"ir.action,name",act_view_sc_form,View Shortcuts,Преглед бързи клавиши,0
+model,"ir.action,name",act_view_sc_open,Open Shortcut,Отваряне на бързи клавиши,0
+model,"ir.action,name",act_view_tree_width_form,View Tree Width,Ширина на дървовиден изглед,0
+model,"ir.action,name",print_model_graph,Graph,Графика,0
+model,"ir.action,name",report_model_graph,Graph,Графика,0
+model,"ir.action.act_window,name",0,Action act window,Действие на активния прозорец,0
+model,"ir.action.act_window.view,name",0,Action act window view,Изглед на действие на активния на прозорец,0
+model,"ir.action.keyword,name",0,Action keyword,Бърз клавиш на действие,0
+model,"ir.action.report,name",0,Action report,Справка за сметка,0
+model,"ir.action.url,name",0,Action URL,URL на действие,0
+model,"ir.action.wizard,name",0,Action wizard,Помощник за действие,0
+model,"ir.action.wizard_size,name",0,Action Wizard Size,Размер на помощник на действие,0
+model,"ir.attachment,name",0,Attachment,Прикачен файл,0
+model,"ir.cache,name",0,Cache,Кеш,0
+model,"ir.cron,name",0,Cron,Планировщик,0
+model,"ir.date,name",0,Date,Дата,0
+model,"ir.default,name",0,Default,По подразбиране,0
+model,"ir.export,name",0,Export,Извличане,0
+model,"ir.export.line,name",0,Export line,Ред от извличане,0
+model,"ir.lang,name",0,Language,Език,0
+model,"ir.lang,name",lang_bg,Български,,0
+model,"ir.lang,name",lang_cs,Czech,Чешки,0
+model,"ir.lang,name",lang_de,German,Немски,0
+model,"ir.lang,name",lang_en,English,Англииски,0
+model,"ir.lang,name",lang_es,Spanish (Spain),Испански,0
+model,"ir.lang,name",lang_es_CO,Spanish (Colombia),Испански (Колумбия),0
+model,"ir.lang,name",lang_fr,French,Френски,0
+model,"ir.lang,name",lang_ru,Russian,Руски,0
+model,"ir.model,name",0,Model,Модел,0
+model,"ir.model.access,name",0,Model access,Модел на достъпа,0
+model,"ir.model.data,name",0,Model data,Модел на данни,0
+model,"ir.model.field,name",0,Model field,Поле на модел,0
+model,"ir.model.field.access,name",0,Model Field Access,Модел на достъп до поле,0
+model,"ir.model.print_model_graph.init,name",0,Print Model Graph Init,Начален печат на графика на модел,0
+model,"ir.module.module,name",0,Module,Модул,0
+model,"ir.module.module.config_wizard.first,name",0,Module Config Wizard First,Първи помощник на конфигуриране на модул,0
+model,"ir.module.module.config_wizard.item,name",0,Config wizard to run after installing module,Задаване на помощника да се стартира след инсталиране на модула,0
+model,"ir.module.module.dependency,name",0,Module dependency,Зависимости на модула,0
+model,"ir.module.module.install_upgrade.init,name",0,Module Install Upgrade Init,Начално инсталиране/обновяване на модул,0
+model,"ir.module.module.install_upgrade.start,name",0,Module Install Upgrade Start,Начало на инсталиране/обновяване на модул,0
+model,"ir.property,name",0,Property,Свойство,0
+model,"ir.rule,name",0,Rule,Правило,0
+model,"ir.rule.group,name",0,Rule group,Група правила,0
+model,"ir.sequence,name",0,Sequence,Последователност,0
+model,"ir.sequence.strict,name",0,Sequence Strict,Точна последователност,0
+model,"ir.sequence.type,name",0,Sequence type,Вид последователност,0
+model,"ir.translation,name",0,Translation,Превод,0
+model,"ir.translation.clean.init,name",0,Clean translation init,Начално изчистване на превод,0
+model,"ir.translation.clean.start,name",0,Clean translation start,Изчистване на преводи - начало,0
+model,"ir.translation.export.init,name",0,Export translation - language and module,Изчличане на превод - Език и модул,0
+model,"ir.translation.export.start,name",0,Export translation - file,Извличане на превод - файл,0
+model,"ir.translation.set_report.init,name",0,Update Report Translation,Обновяване на преводи на справки,0
+model,"ir.translation.set_report.start,name",0,Update Report Translation,Обновяване на превод на справка,0
+model,"ir.translation.update.init,name",0,Update translation - language,Обновяване на превод - език,0
+model,"ir.trigger,name",0,Trigger,Превключвател,0
+model,"ir.trigger.log,name",0,Trigger Log,Лог на превключвател,0
+model,"ir.ui.icon,name",0,Icon,Икона,0
+model,"ir.ui.menu,name",,Defaults,По подрабиране,0
+model,"ir.ui.menu,name",,Menus,Менюта,0
+model,"ir.ui.menu,name",0,UI menu,Потребителско меню,0
+model,"ir.ui.menu,name",menu_act_action,Actions,Действия,0
+model,"ir.ui.menu,name",menu_action,Actions,Действия,0
+model,"ir.ui.menu,name",menu_action_act_window,Window Actions,Действия на прозорец,0
+model,"ir.ui.menu,name",menu_action_report_form,Reports,Справки,0
+model,"ir.ui.menu,name",menu_action_url,URLs,URL-и,0
+model,"ir.ui.menu,name",menu_action_wizard,Wizards,Помощници,0
+model,"ir.ui.menu,name",menu_action_wizard_size,Wizard Sizes,Размери на помощник,0
+model,"ir.ui.menu,name",menu_administration,Administration,Администрация,0
+model,"ir.ui.menu,name",menu_attachment_form,Attachments,Прикачени файлове,0
+model,"ir.ui.menu,name",menu_config_wizard_item_form,Config Wizard Items,Елементи на помощника за конфигуриране,0
+model,"ir.ui.menu,name",menu_cron_form,Scheduled Actions,Планирани действия,0
+model,"ir.ui.menu,name",menu_export_form,Exports,Извличания,0
+model,"ir.ui.menu,name",menu_icon_form,Icons,Икони,0
+model,"ir.ui.menu,name",menu_ir_sequence_type,Sequence Types,Видове последователности,0
+model,"ir.ui.menu,name",menu_lang_form,Languages,Езици,0
+model,"ir.ui.menu,name",menu_localization,Localization,Превод,0
+model,"ir.ui.menu,name",menu_menu_tree,Menu,Меню,0
+model,"ir.ui.menu,name",menu_model_access_form,Models Access,Модел на достъп,0
+model,"ir.ui.menu,name",menu_model_field_access_form,Fields Access,Достъп до полета,0
+model,"ir.ui.menu,name",menu_model_form,Models,Модели,0
+model,"ir.ui.menu,name",menu_models,Models,Модели,0
+model,"ir.ui.menu,name",menu_module_form,Modules,Модули,0
+model,"ir.ui.menu,name",menu_module_install_upgrade,Perform Pending Installation/Upgrade,Започване на изчакващите инталации/обновявания,0
+model,"ir.ui.menu,name",menu_modules,Modules,Модули,0
+model,"ir.ui.menu,name",menu_property_form,Properties,Свойства,0
+model,"ir.ui.menu,name",menu_property_form_default,Default Properties,Свойства по подразбиране,0
+model,"ir.ui.menu,name",menu_rule_group_form,Record Rules,Правила на запис,0
+model,"ir.ui.menu,name",menu_scheduler,Scheduler,Планировщик,0
+model,"ir.ui.menu,name",menu_sequence_form,Sequences,Последователности,0
+model,"ir.ui.menu,name",menu_sequence_strict_form,Sequences Strict,Точни последователности,0
+model,"ir.ui.menu,name",menu_sequences,Sequences,Последователности,0
+model,"ir.ui.menu,name",menu_translation_clean,Clean Translations,Изчистване на преводи,0
+model,"ir.ui.menu,name",menu_translation_export,Export Translations,Извличане на преводи,0
+model,"ir.ui.menu,name",menu_translation_form,Translations,Преводи,0
+model,"ir.ui.menu,name",menu_translation_set_report,Set Report Translations,Задаване на преводи на справки,0
+model,"ir.ui.menu,name",menu_translation_update,Synchronize Translations,Синхронизиране на преводите,0
+model,"ir.ui.menu,name",menu_trigger_form,Triggers,Превключватели,0
+model,"ir.ui.menu,name",menu_ui,User Interface,Потребителски интерфейс,0
+model,"ir.ui.menu,name",menu_view,Views,Изгледи,0
+model,"ir.ui.menu,name",menu_view_sc,View Shortcuts,Преглед бързи клавиши,0
+model,"ir.ui.menu,name",menu_view_tree_width,View Tree Width,Ширина на дървовиден изглед,0
+model,"ir.ui.menu,name",model_model_fields_form,Fields,Полета,0
+model,"ir.ui.view,name",0,View,Изглед,0
+model,"ir.ui.view_sc,name",0,View shortcut,Изглед бърз клавиш,0
+model,"ir.ui.view_tree_width,name",0,View Tree Width,Ширина на дървовиден изглед,0
+selection,"ir.action.act_window,view_type",0,Board,Табло,0
+selection,"ir.action.act_window,view_type",0,Form,Форма,0
+selection,"ir.action.act_window,view_type",0,Tree,Дърво,0
+selection,"ir.action.keyword,keyword",0,Action form,Форма за действие,0
+selection,"ir.action.keyword,keyword",0,Action tree,Дърво с действия,0
+selection,"ir.action.keyword,keyword",0,Form relate,Свързана форма,0
+selection,"ir.action.keyword,keyword",0,Open Graph,Отваряне на графика,0
+selection,"ir.action.keyword,keyword",0,Open tree,Отваряне на дърво,0
+selection,"ir.action.keyword,keyword",0,Print form,Отпечатване на форма,0
+selection,"ir.action.report,extension",0,ODT Document,ODT документ,0
+selection,"ir.action.report,extension",0,PDF Document,PDF документ,0
+selection,"ir.attachment,type",0,Data,Данни,0
+selection,"ir.attachment,type",0,Link,Препратка,0
+selection,"ir.cron,interval_type",0,Days,Дни,0
+selection,"ir.cron,interval_type",0,Hours,Часове,0
+selection,"ir.cron,interval_type",0,Minutes,Минути,0
+selection,"ir.cron,interval_type",0,Months,Месеци,0
+selection,"ir.cron,interval_type",0,Weeks,Седмици,0
+selection,"ir.cron,interval_type",0,Work Days,Работни дни,0
+selection,"ir.lang,direction",0,Left-to-right,Отляво надясно,0
+selection,"ir.lang,direction",0,Right-to-left,Отдясно наляво,0
+selection,"ir.module.module,state",0,Installed,Инсталиран,0
+selection,"ir.module.module,state",0,Not Installed,Не е инсталиран,0
+selection,"ir.module.module,state",0,To be installed,За инсталиране,0
+selection,"ir.module.module,state",0,To be removed,За премахване,0
+selection,"ir.module.module,state",0,To be upgraded,За обновяване,0
+selection,"ir.module.module.config_wizard.item,state",0,Done,Приключен,0
+selection,"ir.module.module.config_wizard.item,state",0,Open,Отваряне,0
+selection,"ir.module.module.dependency,state",0,Installed,Инсталиран,0
+selection,"ir.module.module.dependency,state",0,Not Installed,Не е инсталиран,0
+selection,"ir.module.module.dependency,state",0,To be installed,За инсталиране,0
+selection,"ir.module.module.dependency,state",0,To be removed,За премахване,0
+selection,"ir.module.module.dependency,state",0,To be upgraded,За обновяване,0
+selection,"ir.module.module.dependency,state",0,Unknown,Неизвестен,0
+selection,"ir.sequence,type",0,Decimal Timestamp,Десетичен времеви маркер,0
+selection,"ir.sequence,type",0,Hexadecimal Timestamp,Шестнайсетичен времеви маркер,0
+selection,"ir.sequence,type",0,Incremental,Нарастване,0
+selection,"ir.sequence.strict,type",0,Decimal Timestamp,Десетичен времеви маркер,0
+selection,"ir.sequence.strict,type",0,Hexadecimal Timestamp,Шестнайсетичен времеви маркер,0
+selection,"ir.sequence.strict,type",0,Incremental,Нарастване,0
+selection,"ir.translation,type",0,Error,Грешка,0
+selection,"ir.translation,type",0,Field,Поле,0
+selection,"ir.translation,type",0,Help,Помощ,0
+selection,"ir.translation,type",0,Model,Модел,0
+selection,"ir.translation,type",0,ODT,ODT,0
+selection,"ir.translation,type",0,Selection,Избор,0
+selection,"ir.translation,type",0,View,Изглед,0
+selection,"ir.translation,type",0,Wizard Button,Бутон на помощник,0
+selection,"ir.ui.menu,action",0,ir.action.act_window,,0
+selection,"ir.ui.menu,action",0,ir.action.report,,0
+selection,"ir.ui.menu,action",0,ir.action.url,,0
+selection,"ir.ui.menu,action",0,ir.action.wizard,,0
+selection,"ir.ui.view,type",0,,,0
+selection,"ir.ui.view,type",0,Board,Табло,0
+selection,"ir.ui.view,type",0,Form,Форма,0
+selection,"ir.ui.view,type",0,Graph,Графика,0
+selection,"ir.ui.view,type",0,Tree,Дърво,0
+view,ir.action,0,Action,Действие,0
+view,ir.action,0,General,Основен,0
+view,ir.action,0,Keyword,Ключова дума,0
+view,ir.action,0,Keywords,Ключови думи,0
+view,ir.action.act_window,0,General,Основен,0
+view,ir.action.act_window,0,Keyword,Ключова дума,0
+view,ir.action.act_window,0,Keywords,Ключови думи,0
+view,ir.action.act_window,0,Open Window,Отваряне на прозорец,0
+view,ir.action.act_window,0,Open a Window,Отваряне на прозорец,0
+view,ir.action.act_window,0,Views,Изгледи,0
+view,ir.action.report,0,General,Основен,0
+view,ir.action.report,0,Keyword,Ключова дума,0
+view,ir.action.report,0,Keywords,Ключови думи,0
+view,ir.action.report,0,Report,Справка,0
+view,ir.action.report,0,Report xml,Xml на справка,0
+view,ir.action.url,0,General,Основен,0
+view,ir.action.url,0,Keyword,Ключова дума,0
+view,ir.action.url,0,Keywords,Ключови думи,0
+view,ir.action.url,0,URL,URL,0
+view,ir.action.wizard,0,General,Основен,0
+view,ir.action.wizard,0,Keyword,Ключова дума,0
+view,ir.action.wizard,0,Keywords,Ключови думи,0
+view,ir.action.wizard,0,Wizard,Помощник,0
+view,ir.action.wizard_size,0,Wizard Size,Размер на помощник,0
+view,ir.action.wizard_size,0,Wizard Sizes,Размери на помощник,0
+view,ir.attachment,0,Attachments,Прикачени файлове,0
+view,ir.attachment,0,Preview,Преглед,0
+view,ir.cron,0,Action to trigger,Действие за стартиране,0
+view,ir.cron,0,Scheduled Action,Планирано действие,0
+view,ir.cron,0,Scheduled Actions,Планирани действия,0
+view,ir.default,0,Default,По подразбиране,0
+view,ir.default,0,Defaults,По подрабиране,0
+view,ir.export,0,Exports,Извличания,0
+view,ir.lang,0,Date Formatting,Форматиране на дата,0
+view,ir.lang,0,Language,Език,0
+view,ir.lang,0,Languages,Езици,0
+view,ir.lang,0,Numbers Formatting,Форматиране на числа,0
+view,ir.model,0,Fields Description,Описание на полета,0
+view,ir.model,0,Model Description,Описание на модел,0
+view,ir.model.access,0,Access controls,Контрол на достъпа,0
+view,ir.model.field,0,Fields,Полета,0
+view,ir.model.field.access,0,Field Access,Достъп до поле,0
+view,ir.model.print_model_graph.init,0,Print Model Graph,Печат на графика на модел,0
+view,ir.module.module,0,Cancel Installation,Отказ от инсталалиране,0
+view,ir.module.module,0,Cancel Uninstallation,Отказ от деинсталиране,0
+view,ir.module.module,0,Cancel Upgrade,Отказ от обновяване,0
+view,ir.module.module,0,Dependencies,Зависимости,0
+view,ir.module.module,0,Mark for Installation,Отбелязване за инсталиране,0
+view,ir.module.module,0,Mark for Uninstallation (beta),Отбелязване за деинсталиране (beta),0
+view,ir.module.module,0,Mark for Upgrade,Отбелязване за обновяване,0
+view,ir.module.module,0,Module,Модул,0
+view,ir.module.module,0,Modules,Модули,0
+view,ir.module.module.config_wizard.first,0,Welcome to the module configuration wizard!,Добре дошли в помощника за конфигуриране на модула!,0
+view,ir.module.module.config_wizard.first,0,You will be able to configure your installation,Ще може да конфигурирате инсталацията си,0
+view,ir.module.module.config_wizard.first,0,depending on the modules you have installed.,в зависимост от модулите които сте инсталирали.,0
+view,ir.module.module.config_wizard.item,0,Config Wizard Items,Елементи на помощника за конфигуриране,0
+view,ir.module.module.install_upgrade.init,0,Note that this operation my take a few minutes.,Забележка: Операцията може да отнеме няколко минути,0
+view,ir.module.module.install_upgrade.init,0,System Upgrade,Обновяване на системата,0
+view,ir.module.module.install_upgrade.init,0,Your system will be upgraded.,Системата ще бъде обновена.,0
+view,ir.module.module.install_upgrade.start,0,System upgrade done,Обновяването на системата приключено,0
+view,ir.module.module.install_upgrade.start,0,The modules have been upgraded / installed !,Модулите са обновени / инсталирани !,0
+view,ir.property,0,Properties,Свойства,0
+view,ir.property,0,Property,Свойство,0
+view,ir.rule,0,Test,Тест,0
+view,ir.rule.group,0,"If there is no test defined, the rule is always satisfied if not global",Ако не указан тест правилото винаги е удовлетворено ако не е глобално,0
+view,ir.rule.group,0,Record rules,Правила на записи,0
+view,ir.rule.group,0,The rule is satisfied if at least one test is True,Правилото е удовлетворено ако поне един тест е успешен,0
+view,ir.sequence,0,${day},${ден},0
+view,ir.sequence,0,${month},${month} - месец,0
+view,ir.sequence,0,${year},${year} - година,0
+view,ir.sequence,0,Day:,Ден:,0
+view,ir.sequence,0,Incremental,Нарастване,0
+view,ir.sequence,0,"Legend (Placeholders for prefix, suffix)","Легенда (променливи за префикс, суфикс)",0
+view,ir.sequence,0,Month:,Месец:,0
+view,ir.sequence,0,Sequences,Последователности,0
+view,ir.sequence,0,Timestamp,Дата,0
+view,ir.sequence,0,Year:,Година:,0
+view,ir.sequence.type,0,Sequence Type,Вид последователност,0
+view,ir.translation,0,Translations,Преводи,0
+view,ir.translation.clean.init,0,Clean Translations,Изчистване на преводи,0
+view,ir.translation.clean.init,0,Clean Translations?,Изчистване на преводите?,0
+view,ir.translation.clean.start,0,Clean Translations,Изчистване на преводи,0
+view,ir.translation.clean.start,0,Clean Translations Succeed!,Изчистването на преводите е успешно!,0
+view,ir.translation.export.init,0,Export Translation,Извличане на превод,0
+view,ir.translation.export.start,0,Export Translation,Извличане на превод,0
+view,ir.translation.set_report.init,0,Set Report Translations,Задаване на преводи на справки,0
+view,ir.translation.set_report.init,0,Synchronize Report Translations?,Синхронизиране на преводи на справки?,0
+view,ir.translation.set_report.start,0,Set Report Translations,Задаване на преводи на справки,0
+view,ir.translation.set_report.start,0,Set Translations Succeed!,Преводите са успешно заредени!,0
+view,ir.translation.update.init,0,Synchronize Translations,Синхронизиране на преводите,0
+view,ir.trigger,0,Trigger,Превключвател,0
+view,ir.trigger,0,Triggers,Превключватели,0
+view,ir.ui.icon,0,Icon,Икона,0
+view,ir.ui.icon,0,Icons,Икони,0
+view,ir.ui.menu,0,Menu,Меню,0
+view,ir.ui.view,0,View,Изглед,0
+view,ir.ui.view_sc,0,Shortcut,Бърз клавиш,0
+view,ir.ui.view_sc,0,Shortcuts,Бързи клавиши,0
+view,ir.ui.view_tree_width,0,View Tree Width,Ширина на дървовиден изглед,0
+view,ir.ui.view_tree_width,0,Views Tree Width,Ширина на дърво с изгледи,0
+wizard_button,"ir.model.print_model_graph,init,end",0,Cancel,Отказ,0
+wizard_button,"ir.model.print_model_graph,init,print",0,Print,Печат,0
+wizard_button,"ir.module.module.config_wizard,first,end",0,Cancel,Отказ,0
+wizard_button,"ir.module.module.config_wizard,first,wizard",0,Ok,Добре,0
+wizard_button,"ir.module.module.install_upgrade,init,end",0,Cancel,Отказ,0
+wizard_button,"ir.module.module.install_upgrade,init,start",0,Start Upgrade,Започване на обновяване,0
+wizard_button,"ir.module.module.install_upgrade,start,menu",0,Ok,Добре,0
+wizard_button,"ir.translation.clean,init,end",0,Cancel,Отказ,0
+wizard_button,"ir.translation.clean,init,start",0,Start,Начало,0
+wizard_button,"ir.translation.clean,start,end",0,Ok,Добре,0
+wizard_button,"ir.translation.export,init,end",0,Cancel,Отказ,0
+wizard_button,"ir.translation.export,init,start",0,Start Export,Начало на извличане,0
+wizard_button,"ir.translation.export,start,end",0,Close,Затваряне,0
+wizard_button,"ir.translation.set_report,init,end",0,Cancel,Отказ,0
+wizard_button,"ir.translation.set_report,init,start",0,Start Update,Започване на обновление,0
+wizard_button,"ir.translation.set_report,start,end",0,Ok,Добре,0
+wizard_button,"ir.translation.update,init,end",0,Cancel,Отказ,0
+wizard_button,"ir.translation.update,init,start",0,Start Update,Започване на обновление,0
diff --git a/trytond/ir/cron.py b/trytond/ir/cron.py
index 5db9467..dfa81d2 100644
--- a/trytond/ir/cron.py
+++ b/trytond/ir/cron.py
@@ -112,7 +112,7 @@ class Cron(ModelSQL, ModelView):
                     continue
                 tb_s += line
             try:
-                tb_s += error.message.decode('utf-8', 'ignore')
+                tb_s += str(error).decode('utf-8', 'ignore')
             except Exception:
                 pass
 
diff --git a/trytond/ir/cron.xml b/trytond/ir/cron.xml
index 893bedb..ac7842a 100644
--- a/trytond/ir/cron.xml
+++ b/trytond/ir/cron.xml
@@ -69,7 +69,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_cron_form">
             <field name="name">Scheduled Actions</field>
             <field name="res_model">ir.cron</field>
-            <field name="view_type">form</field>
             <field name="context">{'active_test': False}</field>
         </record>
         <record model="ir.action.act_window.view"
diff --git a/trytond/ir/de_DE.csv b/trytond/ir/de_DE.csv
index efeec6d..0dc5726 100644
--- a/trytond/ir/de_DE.csv
+++ b/trytond/ir/de_DE.csv
@@ -12,6 +12,7 @@ error,foreign_model_missing,0,"The value of field ""%s"" on ""%s"" doesn't exist
 error,ir.action.act_window,0,Invalid context!,Ungültiger Kontext!,0
 error,ir.action.act_window,0,Invalid domain!,Ungültiger Wertebereich (Domain)!,0
 error,ir.action.act_window,0,Invalid search criteria!,Ungültige Suchkriterien!,0
+error,ir.action.act_window,0,Invalid views!,Ungültige Sicht!,0
 error,ir.action.keyword,0,Wrong wizard model!,Falsches Wizardmodell!,0
 error,ir.action.report,0,The internal name must be unique by module!,Der interne Name kann pro Modul nur einmal vergeben werden!,0
 error,ir.attachment,0,The  names of attachments must be unique by resource!,Der Name für einen Anhang kann nur einmal pro Ressource vergeben werden!,0
@@ -37,6 +38,9 @@ error,ir.model.access,0,You can not write in this document! (%s),Keine Schreibbe
 error,ir.model.data,0,"The triple (fs_id, module, model) must be unique!","Die Dreifachkombination (fs_id, module, model)  muss eindeuitg sein (kann nicht mehrfach vergeben werden)!",0
 error,ir.model.field,0,Model Field Name must be a python identifier!,Der Feldname eines Modells muss ein gültiger Python-Bezeichner sein!,0
 error,ir.model.field,0,The field name in model must be unique!,Der Feldname in Modell kann nicht mehrfach vergeben werden!,0
+error,ir.model.field.access,0,Only one record by field and group is allowed!,Nur ein Datensatz pro Feld und Gruppe möglich!,0
+error,ir.model.field.access,0,You can not read the field! (%s.%s),Keine Leseberechtigung für das Feld (%s.%s)!,0
+error,ir.model.field.access,0,You can not write on the field! (%s.%s),Keine Schreibberechtigung für das Feld (%s.%s)!,0
 error,ir.module.module,0,"Missing dependencies %s for module ""%s""","Fehlende Abhängigkeiten %s für Modul ""%s""",0
 error,ir.module.module,0,The modules you are trying to uninstall depends on installed modules:,Die zu deinstallierenden Module hängen von installierten Module ab:,0
 error,ir.module.module,0,The name of the module must be unique!,Der Name eines Moduls kann nicht mehrfach vergeben werden,0
@@ -73,6 +77,7 @@ error,xml_id_syntax_error,0,Syntax error for XML id %r in %s,Syntaxfehler für d
 error,xml_record_desc,0,This record is part of the base configuration.,Dieser Datensatz ist Teil der Basiskonfiguration,0
 field,"ir.action,active",0,Active,Aktiv,0
 field,"ir.action,groups",0,Groups,Gruppen,0
+field,"ir.action,icon",0,Icon,Symbol,0
 field,"ir.action,keywords",0,Keywords,Schlüsselworte,0
 field,"ir.action,name",0,Name,Name,0
 field,"ir.action,rec_name",0,Name,Name,0
@@ -90,7 +95,6 @@ field,"ir.action.act_window,pyson_search_value",0,PySON Search Criteria,PySON Su
 field,"ir.action.act_window,rec_name",0,Name,Name,0
 field,"ir.action.act_window,res_model",0,Model,Modell,0
 field,"ir.action.act_window,search_value",0,Search Criteria,Suchkriterien,0
-field,"ir.action.act_window,view_type",0,Type of view,Typ für Sichten,0
 field,"ir.action.act_window,views",0,Views,Sichten,0
 field,"ir.action.act_window,window_name",0,Window Name,Fenstername,0
 field,"ir.action.act_window.view,act_window",0,Action,Aktion,0
@@ -107,6 +111,7 @@ field,"ir.action.report,email",0,Email,E-Mail,0
 field,"ir.action.report,extension",0,Extension,Dokumententyp,0
 field,"ir.action.report,model",0,Model,Modell,0
 field,"ir.action.report,module",0,Module,Modul,0
+field,"ir.action.report,pyson_email",0,PySON Email,PySON E-Mail,0
 field,"ir.action.report,rec_name",0,Name,Name,0
 field,"ir.action.report,report",0,Path,Pfad,0
 field,"ir.action.report,report_content",0,Content,Inhalt,0
@@ -130,14 +135,18 @@ field,"ir.action.wizard_size,user",0,User,Benutzer,0
 field,"ir.action.wizard_size,width",0,Width,Breite,0
 field,"ir.action.wizard_size,wizard",0,Wizard,Wizard,0
 field,"ir.attachment,collision",0,Collision,Kollision,0
-field,"ir.attachment,datas",0,Datas,Daten,0
-field,"ir.attachment,datas_size",0,Datas size,Größe,0
+field,"ir.attachment,data",0,Data,Daten,0
+field,"ir.attachment,data_size",0,Data size,Größe,0
 field,"ir.attachment,description",0,Description,Beschreibung,0
-field,"ir.attachment,digest",0,Digest,Zusammenfassung,0
+field,"ir.attachment,digest",0,Digest,Auszug,0
+field,"ir.attachment,last_modification",0,Last Modification,Letzte Änderung,0
+field,"ir.attachment,last_user",0,Last User,Letzter Benutzer,0
 field,"ir.attachment,link",0,Link,Verknüpfung,0
-field,"ir.attachment,name",0,Attachment Name,Name Anhang,0
+field,"ir.attachment,name",0,Name,Name,0
 field,"ir.attachment,rec_name",0,Name,Name,0
 field,"ir.attachment,resource",0,Resource,Ressource,0
+field,"ir.attachment,summary",0,Summary,Zusammenfassung,0
+field,"ir.attachment,type",0,Type,Typ,0
 field,"ir.cache,name",0,Name,Name,0
 field,"ir.cache,rec_name",0,Name,Name,0
 field,"ir.cache,timestamp",0,Timestamp,Zeitstempel,0
@@ -156,12 +165,6 @@ field,"ir.cron,rec_name",0,Name,Name,0
 field,"ir.cron,request_user",0,Request User,Fehlermeldung an,0
 field,"ir.cron,running",0,Running,Wird zur Zeit ausgeführt,0
 field,"ir.cron,user",0,Execution User,Benutzer,0
-field,"ir.default,clause",0,Clause,Klausel,0
-field,"ir.default,field",0,Field,Feld,0
-field,"ir.default,model",0,Model,Modell,0
-field,"ir.default,rec_name",0,Name,Name,0
-field,"ir.default,user",0,User,Benutzer,0
-field,"ir.default,value",0,Value,Wert,0
 field,"ir.export,export_fields",0,Fields,Export ID,0
 field,"ir.export,name",0,Name,Name Export,0
 field,"ir.export,rec_name",0,Name,Name,0
@@ -212,6 +215,12 @@ field,"ir.model.field,name",0,Name,Name,0
 field,"ir.model.field,rec_name",0,Name,Name,0
 field,"ir.model.field,relation",0,Model Relation,Beziehung Modell,0
 field,"ir.model.field,ttype",0,Field Type,Feldtyp,0
+field,"ir.model.field.access,description",0,Description,Beschreibung,0
+field,"ir.model.field.access,field",0,Field,Feld,0
+field,"ir.model.field.access,group",0,Group,Gruppe,0
+field,"ir.model.field.access,perm_read",0,Read Access,Lesen,0
+field,"ir.model.field.access,perm_write",0,Write Access,Schreiben,0
+field,"ir.model.field.access,rec_name",0,Name,Name,0
 field,"ir.model.print_model_graph.init,filter",0,Filter,Filter,0
 field,"ir.model.print_model_graph.init,level",0,Level,Ebene,0
 field,"ir.module.module,author",0,Author,Autor,0
@@ -291,6 +300,7 @@ field,"ir.translation,name",0,Field Name,Feldname,0
 field,"ir.translation,rec_name",0,Name,Name,0
 field,"ir.translation,res_id",0,Resource ID,ID Ressource,0
 field,"ir.translation,src",0,Source,Quelle,0
+field,"ir.translation,src_md5",0,Source MD5,MD5 Quelle,0
 field,"ir.translation,type",0,Type,Typ,0
 field,"ir.translation,value",0,Translation Value,Ãœbersetzung,0
 field,"ir.translation.export.init,lang",0,Language,Sprache,0
@@ -313,6 +323,12 @@ field,"ir.trigger,rec_name",0,Name,Name,0
 field,"ir.trigger.log,rec_name",0,Name,Name,0
 field,"ir.trigger.log,record_id",0,Record ID,Datensatz ID,0
 field,"ir.trigger.log,trigger",0,Trigger,Trigger,0
+field,"ir.ui.icon,icon",0,Icon,Symbol,0
+field,"ir.ui.icon,module",0,Module,Modul,0
+field,"ir.ui.icon,name",0,Name,Name,0
+field,"ir.ui.icon,path",0,SVG Path,Pfad SVG,0
+field,"ir.ui.icon,rec_name",0,Name,Name,0
+field,"ir.ui.icon,sequence",0,Sequence,Reihenfolge,0
 field,"ir.ui.menu,action",0,Action,Aktion,0
 field,"ir.ui.menu,active",0,Active,Aktiv,0
 field,"ir.ui.menu,childs",0,Children,Untergeordnet (Menüs),0
@@ -332,7 +348,7 @@ field,"ir.ui.view,module",0,Module,Modul,0
 field,"ir.ui.view,priority",0,Priority,Priorität,0
 field,"ir.ui.view,rec_name",0,Name,Name,0
 field,"ir.ui.view,type",0,View Type,Sichtentyp,0
-field,"ir.ui.view_sc,name",0,Shortcut Name,Name Schnelltaste,0
+field,"ir.ui.view_sc,name",0,Shortcut Name,Name,0
 field,"ir.ui.view_sc,rec_name",0,Name,Name,0
 field,"ir.ui.view_sc,res_id",0,Resource Ref.,Ref. Ressource,0
 field,"ir.ui.view_sc,resource",0,Resource Name,Name Ressource,0
@@ -375,7 +391,7 @@ Die Aktion wird getriggert, wenn der Ausdruck Wahr ist (zutrifft).",0
 help,"ir.trigger,limit_number",0,"Limit the number of call to ""Action Function"" by records.
 0 for no limit.","Begrenzung der Anzahl von Aufrufen von ""Aktion Funktion"" durch Datensätze.
 0 bedeutet kein Limit.",0
-help,"ir.trigger,minimum_delay",0,"Set a minimu delay in minutes between call to ""Action Function"" for the same record.
+help,"ir.trigger,minimum_delay",0,"Set a minimum delay in minutes between call to ""Action Function"" for the same record.
 0 for no delay.","Minimale Verzögerung in Minuten zwischen Aufrufen von ""Aktion Funktion"" für den selben Datensatz.
 0 bedeutet keine Verzögerung.",0
 model,"ir.action,name",0,Action,Aktion,0
@@ -388,12 +404,12 @@ model,"ir.action,name",act_action_wizard_size_form,Wizard Sizes,Wizardmaße,0
 model,"ir.action,name",act_attachment_form,Attachments,Anhänge,0
 model,"ir.action,name",act_config_wizard_item_form,Config Wizard Items,Wizardelemente konfigurieren,0
 model,"ir.action,name",act_cron_form,Scheduled Actions,Geplante Aktionen,0
-model,"ir.action,name",act_default_form,Defaults,Standardeinstellungen,0
 model,"ir.action,name",act_export_form,Exports,Exporte,0
+model,"ir.action,name",act_icon_form,Icons,Symbole,0
 model,"ir.action,name",act_lang_form,Languages,Sprachen,0
-model,"ir.action,name",act_menu_form,Menus,Menüs,0
 model,"ir.action,name",act_menu_tree,Menu,Menü,0
 model,"ir.action,name",act_model_access_form,Models Access,Berechtigungen für Modelle,0
+model,"ir.action,name",act_model_field_access_form,Fields Access,Zugriffsberechtigung Feld,0
 model,"ir.action,name",act_model_fields_form,Fields,Felder,0
 model,"ir.action,name",act_model_form,Models,Modelle,0
 model,"ir.action,name",act_module_config_wizard,Module Configuration,Modulkonfiguration,0
@@ -412,7 +428,9 @@ model,"ir.action,name",act_translation_set_report,Set Report Translations,Ãœbers
 model,"ir.action,name",act_translation_update,Synchronize Translations,Ãœbersetzungen aktualisieren,0
 model,"ir.action,name",act_trigger_form,Triggers,Trigger,0
 model,"ir.action,name",act_view_form,Views,Sichten,0
-model,"ir.action,name",act_view_sc_form,View Shortcuts,Schnelltasten Sichten,0
+model,"ir.action,name",act_view_sc_add,Add Shortcut,Favorit Hinzufügen,0
+model,"ir.action,name",act_view_sc_form,View Shortcuts,Favoriten,0
+model,"ir.action,name",act_view_sc_open,Open Shortcut,Favorit Öffnen,0
 model,"ir.action,name",act_view_tree_width_form,View Tree Width,Spaltenbreiten Sicht,0
 model,"ir.action,name",print_model_graph,Graph,Graphik,0
 model,"ir.action,name",report_model_graph,Graph,Graphik,0
@@ -427,10 +445,10 @@ model,"ir.attachment,name",0,Attachment,Anhang,0
 model,"ir.cache,name",0,Cache,Cache,0
 model,"ir.cron,name",0,Cron,Cron,0
 model,"ir.date,name",0,Date,Datum,0
-model,"ir.default,name",0,Default,Standard,0
 model,"ir.export,name",0,Export,Export,0
 model,"ir.export.line,name",0,Export line,Export Zeile,0
 model,"ir.lang,name",0,Language,Sprache,0
+model,"ir.lang,name",lang_bg,Bulgarian,Bulgarisch,0
 model,"ir.lang,name",lang_cs,,,0
 model,"ir.lang,name",lang_cs,Czech,Tschechisch,0
 model,"ir.lang,name",lang_de,,,0
@@ -442,11 +460,13 @@ model,"ir.lang,name",lang_es_CO,,,0
 model,"ir.lang,name",lang_es_CO,Spanish (Colombia),Spanisch (Kolumbien),0
 model,"ir.lang,name",lang_fr,,,0
 model,"ir.lang,name",lang_fr,French,Französisch,0
+model,"ir.lang,name",lang_nl,Dutch,Niederländisch,0
 model,"ir.lang,name",lang_ru,Russian,Russisch,0
 model,"ir.model,name",0,Model,Modell,0
 model,"ir.model.access,name",0,Model access,Modell Zugriff,0
 model,"ir.model.data,name",0,Model data,Modell Daten,0
 model,"ir.model.field,name",0,Model field,Modell Feld,0
+model,"ir.model.field.access,name",0,Model Field Access,Modell Feld Zugriffsberechtigung,0
 model,"ir.model.print_model_graph.init,name",0,Print Model Graph Init,Druck Modell Graph,0
 model,"ir.module.module,name",0,Module,Module,0
 model,"ir.module.module.config_wizard.first,name",0,Module Config Wizard First,Konfigurationswizard Module Erster,0
@@ -470,6 +490,7 @@ model,"ir.translation.set_report.start,name",0,Update Report Translation,Aktuali
 model,"ir.translation.update.init,name",0,Update translation - language,Aktualisierung Ãœbersetzung Init,0
 model,"ir.trigger,name",0,Trigger,Trigger,0
 model,"ir.trigger.log,name",0,Trigger Log,Trigger Protokoll,0
+model,"ir.ui.icon,name",0,Icon,Symbol,0
 model,"ir.ui.menu,name",0,UI menu,Programmoberfläche Menü,0
 model,"ir.ui.menu,name",menu_act_action,Actions,Aktionen,0
 model,"ir.ui.menu,name",menu_action,Actions,Aktionen,0
@@ -482,13 +503,14 @@ model,"ir.ui.menu,name",menu_administration,Administration,Systemverwaltung,0
 model,"ir.ui.menu,name",menu_attachment_form,Attachments,Anhänge,0
 model,"ir.ui.menu,name",menu_config_wizard_item_form,Config Wizard Items,Wizardelemente konfigurieren,0
 model,"ir.ui.menu,name",menu_cron_form,Scheduled Actions,Geplante Aktionen,0
-model,"ir.ui.menu,name",menu_default_form,Defaults,Standardeinstellungen,0
 model,"ir.ui.menu,name",menu_export_form,Exports,Exporte,0
+model,"ir.ui.menu,name",menu_icon_form,Icons,Symbole,0
 model,"ir.ui.menu,name",menu_ir_sequence_type,Sequence Types,Typen Nummernkreise,0
 model,"ir.ui.menu,name",menu_lang_form,Languages,Sprachen,0
 model,"ir.ui.menu,name",menu_localization,Localization,Lokalisierung,0
-model,"ir.ui.menu,name",menu_menu_form,Menus,Menüs,0
+model,"ir.ui.menu,name",menu_menu_tree,Menu,Menü,0
 model,"ir.ui.menu,name",menu_model_access_form,Models Access,Berechtigungen für Modelle,0
+model,"ir.ui.menu,name",menu_model_field_access_form,Fields Access,Zugriffsberechtigungen Felder,0
 model,"ir.ui.menu,name",menu_model_form,Models,Modelle,0
 model,"ir.ui.menu,name",menu_models,Models,Modelle,0
 model,"ir.ui.menu,name",menu_module_form,Modules,Module,0
@@ -509,15 +531,12 @@ model,"ir.ui.menu,name",menu_translation_update,Synchronize Translations,Ãœberse
 model,"ir.ui.menu,name",menu_trigger_form,Triggers,Trigger,0
 model,"ir.ui.menu,name",menu_ui,User Interface,Programmoberfläche,0
 model,"ir.ui.menu,name",menu_view,Views,Sichten,0
-model,"ir.ui.menu,name",menu_view_sc,View Shortcuts,Schnelltasten,0
+model,"ir.ui.menu,name",menu_view_sc,View Shortcuts,Favoriten,0
 model,"ir.ui.menu,name",menu_view_tree_width,View Tree Width,Spaltenbreiten,0
 model,"ir.ui.menu,name",model_model_fields_form,Fields,Felder,0
 model,"ir.ui.view,name",0,View,Sicht,0
-model,"ir.ui.view_sc,name",0,View shortcut,Schnelltaste,0
+model,"ir.ui.view_sc,name",0,View shortcut,Favoriten,0
 model,"ir.ui.view_tree_width,name",0,View Tree Width,Spaltenbreiten Sicht,0
-selection,"ir.action.act_window,view_type",0,Board,Infoseite,0
-selection,"ir.action.act_window,view_type",0,Form,Formular,0
-selection,"ir.action.act_window,view_type",0,Tree,Baum,0
 selection,"ir.action.keyword,keyword",0,Action form,Formularaktion,0
 selection,"ir.action.keyword,keyword",0,Action tree,Baumaktion,0
 selection,"ir.action.keyword,keyword",0,Form relate,Bezugsformular,0
@@ -526,6 +545,8 @@ selection,"ir.action.keyword,keyword",0,Open tree,Baum öffnen,0
 selection,"ir.action.keyword,keyword",0,Print form,Formular drucken,0
 selection,"ir.action.report,extension",0,ODT Document,ODT Dokument,0
 selection,"ir.action.report,extension",0,PDF Document,PDF Dokument,0
+selection,"ir.attachment,type",0,Data,Daten,0
+selection,"ir.attachment,type",0,Link,Verknüpfung,0
 selection,"ir.cron,interval_type",0,Days,Tag(e),0
 selection,"ir.cron,interval_type",0,Hours,Stunde(n),0
 selection,"ir.cron,interval_type",0,Minutes,Minute(n),0
@@ -663,8 +684,6 @@ view,ir.attachment,0,Preview,Vorschau,0
 view,ir.cron,0,Action to trigger,Auszuführende Aktion,0
 view,ir.cron,0,Scheduled Action,Geplante Aktion,0
 view,ir.cron,0,Scheduled Actions,Geplante Aktionen,0
-view,ir.default,0,Default,Standard,0
-view,ir.default,0,Defaults,Standardeinstellungen,0
 view,ir.export,0,Exports,Exporte,0
 view,ir.lang,0,Date Formatting,Format Datum,0
 view,ir.lang,0,Language,Sprache,0
@@ -674,6 +693,7 @@ view,ir.model,0,Fields Description,Feld Beschreibung,0
 view,ir.model,0,Model Description,Modell Beschreibung,0
 view,ir.model.access,0,Access controls,Zugriffsberechtigungen,0
 view,ir.model.field,0,Fields,Felder,0
+view,ir.model.field.access,0,Field Access,Zugriffsberechtigung Felder,0
 view,ir.model.print_model_graph.init,0,Print Model Graph,Modellschaubild drucken,0
 view,ir.module.module,0,Cancel Installation,Vormerkung für Installation / Aktualisierung aufheben,0
 view,ir.module.module,0,Cancel Uninstallation,Deinstallation abbrechen,0
@@ -739,9 +759,12 @@ view,ir.translation.update.init,0,Synchronize Translations,Ãœbersetzungen synchr
 view,ir.translation.update.init,0,Update Translations,Ãœbersetzungen aktualisieren,0
 view,ir.trigger,0,Trigger,Trigger,0
 view,ir.trigger,0,Triggers,Trigger,0
+view,ir.ui.icon,0,Icon,Symbol,0
+view,ir.ui.icon,0,Icons,Symbole,0
 view,ir.ui.menu,0,Menu,Menü,0
 view,ir.ui.view,0,View,Sicht,0
-view,ir.ui.view_sc,0,Shortcut,Schnelltaste,0
+view,ir.ui.view_sc,0,Shortcut,Favorit,0
+view,ir.ui.view_sc,0,Shortcuts,Favoriten,0
 view,ir.ui.view_tree_width,0,View Tree Width,Spaltenbreiten Sicht,0
 view,ir.ui.view_tree_width,0,Views Tree Width,Spaltenbreiten Sichten,0
 wizard_button,"ir.model.print_model_graph,init,end",0,Cancel,Abbrechen,0
diff --git a/trytond/ir/default.py b/trytond/ir/default.py
deleted file mode 100644
index 1a0fe0e..0000000
--- a/trytond/ir/default.py
+++ /dev/null
@@ -1,147 +0,0 @@
-#This file is part of Tryton.  The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
-from decimal import Decimal
-import datetime
-import time
-from trytond.model import ModelView, ModelSQL, fields
-from trytond.tools import safe_eval
-from trytond.pyson import Eval
-from trytond.transaction import Transaction
-from trytond.cache import Cache
-
-
-class Default(ModelSQL, ModelView):
-    "Default"
-    _name = 'ir.default'
-    _description = __doc__
-    _rec_name = 'value'
-    model = fields.Many2One('ir.model', 'Model', required=True,
-       ondelete='CASCADE')
-    field = fields.Many2One('ir.model.field', 'Field', required=True,
-       ondelete='CASCADE', domain=[('model', '=', Eval('model'))])
-    value = fields.Text('Value')
-    clause = fields.Text('Clause')
-    user = fields.Many2One('res.user', 'User', ondelete='CASCADE')
-
-    def __init__(self):
-        super(Default, self).__init__()
-        self._rpc.update({
-            'get_default': False,
-            'set_default': True,
-            'reset_default': True,
-        })
-
-    @Cache('ir_default.get_default')
-    def get_default(self, model, clause):
-        res = {}
-        test_user = Transaction().user
-        test_clause = clause
-        default_ids = []
-        while True:
-            default_ids += self.search([
-                ('model.model', '=', model),
-                ('clause', '=', test_clause),
-                ('user', '=', test_user),
-                ])
-            if test_user:
-                test_user = False
-                continue
-            if test_clause:
-                test_clause = False
-                continue
-            break
-        for default in self.browse(default_ids):
-            if default.field.name not in res:
-                if default.field.ttype in ('reference', 'char', 'sha', 'text',
-                        'time', 'selection'):
-                    res[default.field.name] = default.value
-                elif default.field.ttype in ('integer', 'biginteger'):
-                    res[default.field.name] = int(default.value)
-                elif default.field.ttype == 'float':
-                    res[default.field.name] = float(default.value)
-                elif default.field.ttype == 'numeric':
-                    res[default.field.name] = Decimal(default.value)
-                elif default.field.ttype == 'date':
-                    res[default.field.name] = datetime.date(*time.strptime(
-                        default.value, '%Y-%m-%d')[:3])
-                elif default.field.ttype == 'datetime':
-                    res[default.field.name] = datetime.datetime(*time.strptime(
-                        default.value, '%Y-%m-%d %H:%M:%S')[:6])
-                else:
-                    res[default.field.name] = safe_eval(default.value)
-        return res
-
-    def set_default(self, model, field, clause, value, user_default):
-        ir_model_obj = self.pool.get('ir.model')
-        ir_field_obj = self.pool.get('ir.model.field')
-
-        model_obj = self.pool.get(model)
-        if field not in model_obj._columns:
-            model = self.pool.get(model_obj._inherit_fields[field][0])._name
-
-        model_id = ir_model_obj.search([
-            ('model', '=', model),
-            ])[0]
-        field_id = ir_field_obj.search([
-            ('name', '=', field),
-            ('model', '=', model_id),
-            ])[0]
-        default_ids = self.search([
-            ('model', '=', model_id),
-            ('field', '=', field_id),
-            ('clause', '=', clause),
-            ('user', '=', user_default),
-            ])
-        if default_ids:
-            self.delete(default_ids)
-        self.create({
-            'model': model_id,
-            'field': field_id,
-            'value': str(value),
-            'clause': clause,
-            'user': user_default,
-            })
-
-    def reset_default(self, model, field, clause, value, user_default):
-        ir_model_obj = self.pool.get('ir.model')
-        ir_field_obj = self.pool.get('ir.model.field')
-
-        model_obj = self.pool.get(model)
-        if field not in model_obj._columns:
-            model = self.pool.get(model_obj._inherit_fields[field][0])._name
-
-        model_id = ir_model_obj.search([
-            ('model', '=', model),
-            ])[0]
-        field_id = ir_field_obj.search([
-            ('name', '=', field),
-            ('model', '=', model_id),
-            ])[0]
-        default_ids = self.search([
-            ('model', '=', model_id),
-            ('field', '=', field_id),
-            ('clause', '=', clause),
-            ('user', '=', user_default),
-            ])
-        if default_ids:
-            self.delete(default_ids)
-
-    def create(self, vals):
-        res = super(Default, self).create(vals)
-        # Restart the cache for get_default method
-        self.get_default.reset()
-        return res
-
-    def write(self, ids, vals):
-        res = super(Default, self).write(ids, vals)
-        # Restart the cache for get_default method
-        self.get_default.reset()
-        return res
-
-    def delete(self, ids):
-        res = super(Default, self).delete(ids)
-        # Restart the cache for get_default method
-        self.get_default.reset()
-        return res
-
-Default()
diff --git a/trytond/ir/default.xml b/trytond/ir/default.xml
deleted file mode 100644
index b4f7abc..0000000
--- a/trytond/ir/default.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0"?>
-<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
-this repository contains the full copyright notices and license terms. -->
-<tryton>
-    <data>
-        <record model="ir.ui.view" id="default_view_form">
-            <field name="model">ir.default</field>
-            <field name="type">form</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <form string="Default" col="6">
-                    <label name="model"/>
-                    <field name="model"/>
-                    <label name="field"/>
-                    <field name="field"/>
-                    <label name="user"/>
-                    <field name="user"/>
-                    <group col="2" colspan="6" expand="1" id="value_clause">
-                        <separator name="value"/>
-                        <separator name="clause"/>
-                        <field name="value"/>
-                        <field name="clause"/>
-                    </group>
-                </form>
-                ]]>
-            </field>
-        </record>
-        <record model="ir.ui.view" id="default_view_tree">
-            <field name="model">ir.default</field>
-            <field name="type">tree</field>
-            <field name="arch" type="xml">
-                <![CDATA[
-                <tree string="Defaults">
-                    <field name="model" select="1"/>
-                    <field name="field" select="1"/>
-                    <field name="user" select="1"/>
-                </tree>
-                ]]>
-            </field>
-        </record>
-        <record model="ir.action.act_window" id="act_default_form">
-            <field name="name">Defaults</field>
-            <field name="res_model">ir.default</field>
-            <field name="view_type">form</field>
-        </record>
-        <record model="ir.action.act_window.view"
-            id="act_default_form_view1">
-            <field name="sequence" eval="1"/>
-            <field name="view" ref="default_view_tree"/>
-            <field name="act_window" ref="act_default_form"/>
-        </record>
-        <record model="ir.action.act_window.view"
-            id="act_default_form_view2">
-            <field name="sequence" eval="2"/>
-            <field name="view" ref="default_view_form"/>
-            <field name="act_window" ref="act_default_form"/>
-        </record>
-        <menuitem parent="ir.menu_models"
-            action="act_default_form" id="menu_default_form"/>
-    </data>
-</tryton>
diff --git a/trytond/ir/export.xml b/trytond/ir/export.xml
index 0ed716d..89452fb 100644
--- a/trytond/ir/export.xml
+++ b/trytond/ir/export.xml
@@ -34,7 +34,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Exports</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">ir.export</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_export_form_view1">
diff --git a/trytond/ir/fr_FR.csv b/trytond/ir/fr_FR.csv
index cccb0e8..92a62a2 100644
--- a/trytond/ir/fr_FR.csv
+++ b/trytond/ir/fr_FR.csv
@@ -11,6 +11,7 @@ error,foreign_model_missing,0,"The value of field ""%s"" on ""%s"" doesn't exist
 error,ir.action.act_window,0,Invalid context!,Contexte invalide !,0
 error,ir.action.act_window,0,Invalid domain!,Domaine invalide !,0
 error,ir.action.act_window,0,Invalid search criteria!,Critère de recherche invalide !,0
+error,ir.action.act_window,0,Invalid views!,Vues invalides !,0
 error,ir.action.keyword,0,Wrong wizard model!,Mauvais modèle d'assistant,0
 error,ir.action.report,0,The internal name must be unique by module!,Le nom interne doit être unique par module !,0
 error,ir.attachment,0,The  names of attachments must be unique by resource!,Le nom des pièces jointes doivent être unique pour une même ressource !,0
@@ -37,6 +38,9 @@ error,ir.model.access,0,You can not write in this document! (%s),Vous ne pouvez
 error,ir.model.data,0,"The triple (fs_id, module, model) must be unique!","Le triplet (fs_id, module, model) doit être unique !",0
 error,ir.model.field,0,Model Field Name must be a python identifier!,Le nom du champ doit être un identifiant Python valide !,0
 error,ir.model.field,0,The field name in model must be unique!,Le nom du champ doit être unique sur le modèle !,0
+error,ir.model.field.access,0,Only one record by field and group is allowed!,Seul un enregistrement par champs et par groupe est permis !,0
+error,ir.model.field.access,0,You can not read the field! (%s.%s),Vous ne pouvez lire le champs (%s.%s) !,0
+error,ir.model.field.access,0,You can not write on the field! (%s.%s),Vous ne pouvez écrire sur le champs (%s.%s) !,0
 error,ir.module.module,0,"Missing dependencies %s for module ""%s""","Dépendences %s manquante pour le module ""%s""",0
 error,ir.module.module,0,The modules you are trying to uninstall depends on installed modules:,Les modules que vous essayez de dés-installer dépendent de modules installés :,0
 error,ir.module.module,0,The name of the module must be unique!,Le nom du module doit être unique,0
@@ -73,6 +77,7 @@ error,xml_id_syntax_error,0,Syntax error for XML id %r in %s,Erreur de syntaxe X
 error,xml_record_desc,0,This record is part of the base configuration.,Cet enregistrement fait partie de la configuration de base.,0
 field,"ir.action,active",0,Active,Actif,0
 field,"ir.action,groups",0,Groups,Groupes,0
+field,"ir.action,icon",0,Icon,Icône,1
 field,"ir.action,keywords",0,Keywords,Mots-clés,0
 field,"ir.action,name",0,Name,Nom,0
 field,"ir.action,rec_name",0,Name,Nom,0
@@ -90,7 +95,6 @@ field,"ir.action.act_window,pyson_search_value",0,PySON Search Criteria,Critère
 field,"ir.action.act_window,rec_name",0,Name,Nom,0
 field,"ir.action.act_window,res_model",0,Model,Modèle,0
 field,"ir.action.act_window,search_value",0,Search Criteria,Critères de recherche,0
-field,"ir.action.act_window,view_type",0,Type of view,Type de vue,0
 field,"ir.action.act_window,views",0,Views,Vues,0
 field,"ir.action.act_window,window_name",0,Window Name,Nom de la fenêtre,0
 field,"ir.action.act_window.view,act_window",0,Action,Action,0
@@ -107,6 +111,7 @@ field,"ir.action.report,email",0,Email,E-mail,0
 field,"ir.action.report,extension",0,Extension,Extension,0
 field,"ir.action.report,model",0,Model,Modèle,0
 field,"ir.action.report,module",0,Module,Module,0
+field,"ir.action.report,pyson_email",0,PySON Email,,0
 field,"ir.action.report,rec_name",0,Name,Nom,0
 field,"ir.action.report,report",0,Path,Chemin,0
 field,"ir.action.report,report_content",0,Content,Contenu,0
@@ -130,14 +135,18 @@ field,"ir.action.wizard_size,user",0,User,Utilisateur,0
 field,"ir.action.wizard_size,width",0,Width,Largeur,0
 field,"ir.action.wizard_size,wizard",0,Wizard,Assistant,0
 field,"ir.attachment,collision",0,Collision,Collision,0
-field,"ir.attachment,datas",0,Datas,Données,0
-field,"ir.attachment,datas_size",0,Datas size,Taille des données,0
+field,"ir.attachment,data",0,Data,Données,0
+field,"ir.attachment,data_size",0,Data size,Taille des données,0
 field,"ir.attachment,description",0,Description,Description,0
 field,"ir.attachment,digest",0,Digest,Empreinte,0
+field,"ir.attachment,last_modification",0,Last Modification,Dernière modification,0
+field,"ir.attachment,last_user",0,Last User,Dernier utilisateur,0
 field,"ir.attachment,link",0,Link,Lien,0
-field,"ir.attachment,name",0,Attachment Name,Nom de la pièce jointe,0
+field,"ir.attachment,name",0,Name,Nom de la pièce jointe,0
 field,"ir.attachment,rec_name",0,Name,Nom,0
 field,"ir.attachment,resource",0,Resource,Ressource,0
+field,"ir.attachment,summary",0,Summary,Résumé,1
+field,"ir.attachment,type",0,Type,Type,1
 field,"ir.cache,name",0,Name,Nom,0
 field,"ir.cache,rec_name",0,Name,Nom,0
 field,"ir.cache,timestamp",0,Timestamp,Estampille,0
@@ -156,12 +165,6 @@ field,"ir.cron,rec_name",0,Name,Nom,0
 field,"ir.cron,request_user",0,Request User,Requête utilisateur,0
 field,"ir.cron,running",0,Running,En cours,0
 field,"ir.cron,user",0,Execution User,Utilisateur,0
-field,"ir.default,clause",0,Clause,Clause,0
-field,"ir.default,field",0,Field,Champ,0
-field,"ir.default,model",0,Model,Modèle,0
-field,"ir.default,rec_name",0,Name,Nom,0
-field,"ir.default,user",0,User,Utilisateur,0
-field,"ir.default,value",0,Value,Valeur,0
 field,"ir.export,export_fields",0,Fields,Champs,0
 field,"ir.export,name",0,Name,Nom,0
 field,"ir.export,rec_name",0,Name,Nom,0
@@ -212,6 +215,12 @@ field,"ir.model.field,name",0,Name,Nom,0
 field,"ir.model.field,rec_name",0,Name,Nom,0
 field,"ir.model.field,relation",0,Model Relation,Relation du modèle,0
 field,"ir.model.field,ttype",0,Field Type,Champ du type,0
+field,"ir.model.field.access,description",0,Description,Description,1
+field,"ir.model.field.access,field",0,Field,Champ,1
+field,"ir.model.field.access,group",0,Group,Groupe,1
+field,"ir.model.field.access,perm_read",0,Read Access,Accès en lecture,1
+field,"ir.model.field.access,perm_write",0,Write Access,Accès en écriture,1
+field,"ir.model.field.access,rec_name",0,Name,Nom de la pièce jointe,1
 field,"ir.model.print_model_graph.init,filter",0,Filter,Filtre,0
 field,"ir.model.print_model_graph.init,level",0,Level,Niveau,0
 field,"ir.module.module,author",0,Author,Auteur,0
@@ -291,6 +300,7 @@ field,"ir.translation,name",0,Field Name,Nom du champ,0
 field,"ir.translation,rec_name",0,Name,Nom,0
 field,"ir.translation,res_id",0,Resource ID,ID de la ressource,0
 field,"ir.translation,src",0,Source,Source,0
+field,"ir.translation,src_md5",0,Source MD5,MD5 de la source,0
 field,"ir.translation,type",0,Type,Type,0
 field,"ir.translation,value",0,Translation Value,Traduction,0
 field,"ir.translation.export.init,lang",0,Language,Langue,0
@@ -313,6 +323,12 @@ field,"ir.trigger,rec_name",0,Name,Nom,0
 field,"ir.trigger.log,rec_name",0,Name,Nom,0
 field,"ir.trigger.log,record_id",0,Record ID,ID du record,0
 field,"ir.trigger.log,trigger",0,Trigger,Déclencheur,0
+field,"ir.ui.icon,icon",0,Icon,Icône,1
+field,"ir.ui.icon,module",0,Module,Module,1
+field,"ir.ui.icon,name",0,Name,Nom de la pièce jointe,1
+field,"ir.ui.icon,path",0,SVG Path,Chemin vers le fichier SVG,0
+field,"ir.ui.icon,rec_name",0,Name,Nom de la pièce jointe,1
+field,"ir.ui.icon,sequence",0,Sequence,Séquence,1
 field,"ir.ui.menu,action",0,Action,Action,0
 field,"ir.ui.menu,active",0,Active,Actif,0
 field,"ir.ui.menu,childs",0,Children,Enfants,0
@@ -373,7 +389,7 @@ Déclenche une action si vrai.",0
 help,"ir.trigger,limit_number",0,"Limit the number of call to ""Action Function"" by records.
 0 for no limit.","Limite le nombre d'appel aux ""Fonction action"" par enregistrement.
 0 signifie pas de limite.",0
-help,"ir.trigger,minimum_delay",0,"Set a minimu delay in minutes between call to ""Action Function"" for the same record.
+help,"ir.trigger,minimum_delay",0,"Set a minimum delay in minutes between call to ""Action Function"" for the same record.
 0 for no delay.","Défini un délais minimum en minutes entre les appels aux ""Fonctions actions"" sur un même modèle.
 0 signifie pas de délais.",0
 model,"ir.action,name",0,Action,Action,0
@@ -386,12 +402,12 @@ model,"ir.action,name",act_action_wizard_size_form,Wizard Sizes,Tailles des assi
 model,"ir.action,name",act_attachment_form,Attachments,Attachements,0
 model,"ir.action,name",act_config_wizard_item_form,Config Wizard Items,Élements de l'assistant de configuration,0
 model,"ir.action,name",act_cron_form,Scheduled Actions,Actions planifiées,0
-model,"ir.action,name",act_default_form,Defaults,Valeurs par défaut,0
 model,"ir.action,name",act_export_form,Exports,Exports,0
+model,"ir.action,name",act_icon_form,Icons,Icônes,0
 model,"ir.action,name",act_lang_form,Languages,Langues,0
-model,"ir.action,name",act_menu_form,Menus,Menus,0
 model,"ir.action,name",act_menu_tree,Menu,Menu,0
 model,"ir.action,name",act_model_access_form,Models Access,Accès aux modèles,0
+model,"ir.action,name",act_model_field_access_form,Fields Access,Droits d'accès,0
 model,"ir.action,name",act_model_fields_form,Fields,Champs,0
 model,"ir.action,name",act_model_form,Models,Modèles,0
 model,"ir.action,name",act_module_config_wizard,Module Configuration,Configuration du module,0
@@ -410,7 +426,9 @@ model,"ir.action,name",act_translation_set_report,Set Report Translations,Mettre
 model,"ir.action,name",act_translation_update,Synchronize Translations,Synchroniser les traductions,0
 model,"ir.action,name",act_trigger_form,Triggers,Déclencheurs,0
 model,"ir.action,name",act_view_form,Views,Vues,0
+model,"ir.action,name",act_view_sc_add,Add Shortcut,Ajouter un raccourci,0
 model,"ir.action,name",act_view_sc_form,View Shortcuts,Raccourcis,0
+model,"ir.action,name",act_view_sc_open,Open Shortcut,Ouvrir le raccourci,0
 model,"ir.action,name",act_view_tree_width_form,View Tree Width,Largeur de la vue arbre,0
 model,"ir.action,name",print_model_graph,Graph,Graphique,0
 model,"ir.action,name",report_model_graph,Graph,Graphique,0
@@ -425,21 +443,23 @@ model,"ir.attachment,name",0,Attachment,Pièce jointe,0
 model,"ir.cache,name",0,Cache,Cache,0
 model,"ir.cron,name",0,Cron,Cron,0
 model,"ir.date,name",0,Date,Date,0
-model,"ir.default,name",0,Default,Défaut,0
 model,"ir.export,name",0,Export,Export,0
 model,"ir.export.line,name",0,Export line,Ligne d'export,0
 model,"ir.lang,name",0,Language,Langue,0
+model,"ir.lang,name",lang_bg,Bulgarian,Bulgare,0
 model,"ir.lang,name",lang_cs,Czech,Tchèque,0
 model,"ir.lang,name",lang_de,German,Allemand,0
 model,"ir.lang,name",lang_en,English,Anglais,0
 model,"ir.lang,name",lang_es,Spanish (Spain),Espagnol (Espagne),0
 model,"ir.lang,name",lang_es_CO,Spanish (Colombia),Espagnol (Colombie),0
 model,"ir.lang,name",lang_fr,French,Français,0
+model,"ir.lang,name",lang_nl,Dutch,Néerlandais,0
 model,"ir.lang,name",lang_ru,Russian,Russe,0
 model,"ir.model,name",0,Model,Modèle,0
 model,"ir.model.access,name",0,Model access,Accès au modèle,0
 model,"ir.model.data,name",0,Model data,Données de modèle,0
 model,"ir.model.field,name",0,Model field,Champ de modèle,0
+model,"ir.model.field.access,name",0,Model Field Access,Droit d'accès aux champs d'un Model,0
 model,"ir.model.print_model_graph.init,name",0,Print Model Graph Init,Imprimer le graphique de modèle - Init,0
 model,"ir.module.module,name",0,Module,Module,0
 model,"ir.module.module.config_wizard.first,name",0,Module Config Wizard First,Assistant de configuration de module - Première,0
@@ -463,6 +483,7 @@ model,"ir.translation.set_report.start,name",0,Update Report Translation,Mise à
 model,"ir.translation.update.init,name",0,Update translation - language,Mise à jour des traductions - Langue,0
 model,"ir.trigger,name",0,Trigger,Déclencheur,0
 model,"ir.trigger.log,name",0,Trigger Log,Journal des déclencheurs,0
+model,"ir.ui.icon,name",0,Icon,Icône,1
 model,"ir.ui.menu,name",0,UI menu,Menu de l'IU,0
 model,"ir.ui.menu,name",menu_act_action,Actions,Actions,0
 model,"ir.ui.menu,name",menu_action,Actions,Actions,0
@@ -475,13 +496,14 @@ model,"ir.ui.menu,name",menu_administration,Administration,Administration,0
 model,"ir.ui.menu,name",menu_attachment_form,Attachments,Pièces jointes,0
 model,"ir.ui.menu,name",menu_config_wizard_item_form,Config Wizard Items,Élements de l'assistant de configuration,0
 model,"ir.ui.menu,name",menu_cron_form,Scheduled Actions,Actions planifiées,0
-model,"ir.ui.menu,name",menu_default_form,Defaults,Valeurs par défaut,0
 model,"ir.ui.menu,name",menu_export_form,Exports,Exportations,0
+model,"ir.ui.menu,name",menu_icon_form,Icons,Icônes,0
 model,"ir.ui.menu,name",menu_ir_sequence_type,Sequence Types,Types de séquence,0
 model,"ir.ui.menu,name",menu_lang_form,Languages,Langues,0
 model,"ir.ui.menu,name",menu_localization,Localization,Localisation,0
-model,"ir.ui.menu,name",menu_menu_form,Menus,Menus,0
+model,"ir.ui.menu,name",menu_menu_tree,Menu,Menu,1
 model,"ir.ui.menu,name",menu_model_access_form,Models Access,Accès au modèles,0
+model,"ir.ui.menu,name",menu_model_field_access_form,Fields Access,Droits d'accès au champs,0
 model,"ir.ui.menu,name",menu_model_form,Models,Modèles,0
 model,"ir.ui.menu,name",menu_models,Models,Modèles,0
 model,"ir.ui.menu,name",menu_module_form,Modules,Modules,0
@@ -508,9 +530,6 @@ model,"ir.ui.menu,name",model_model_fields_form,Fields,Champs,0
 model,"ir.ui.view,name",0,View,Vue,0
 model,"ir.ui.view_sc,name",0,View shortcut,Vue raccourci,0
 model,"ir.ui.view_tree_width,name",0,View Tree Width,Largeur de vue arbre,0
-selection,"ir.action.act_window,view_type",0,Board,Tableau,0
-selection,"ir.action.act_window,view_type",0,Form,Formulaire,0
-selection,"ir.action.act_window,view_type",0,Tree,Arbre,0
 selection,"ir.action.keyword,keyword",0,Action form,Formulaire,0
 selection,"ir.action.keyword,keyword",0,Action tree,Arbre,0
 selection,"ir.action.keyword,keyword",0,Form relate,Formulaire relié,0
@@ -519,6 +538,8 @@ selection,"ir.action.keyword,keyword",0,Open tree,Ouvrir l'arbre,0
 selection,"ir.action.keyword,keyword",0,Print form,Imprimer le formulaire,0
 selection,"ir.action.report,extension",0,ODT Document,Document ODT,0
 selection,"ir.action.report,extension",0,PDF Document,Document PDF,0
+selection,"ir.attachment,type",0,Data,Données,0
+selection,"ir.attachment,type",0,Link,Lien,1
 selection,"ir.cron,interval_type",0,Days,Jours,0
 selection,"ir.cron,interval_type",0,Hours,Heures,0
 selection,"ir.cron,interval_type",0,Minutes,Minutes,0
@@ -656,8 +677,6 @@ view,ir.attachment,0,Preview,Aperçu,0
 view,ir.cron,0,Action to trigger,Action à suivre,0
 view,ir.cron,0,Scheduled Action,Action planifiée,0
 view,ir.cron,0,Scheduled Actions,Actions planifiées,0
-view,ir.default,0,Default,Valeur par défaut,0
-view,ir.default,0,Defaults,Valeurs par défaut,0
 view,ir.export,0,Exports,Exportations,0
 view,ir.lang,0,Date Formatting,Formatage des dates,0
 view,ir.lang,0,Language,Langues,0
@@ -667,6 +686,7 @@ view,ir.model,0,Fields Description,Champs de description,0
 view,ir.model,0,Model Description,Description du modèle,0
 view,ir.model.access,0,Access controls,Contrôles d'accès,0
 view,ir.model.field,0,Fields,Champs,0
+view,ir.model.field.access,0,Field Access,Droits d'accès au champs,0
 view,ir.model.print_model_graph.init,0,Print Model Graph,Imprimer le graphique de modèle,0
 view,ir.module.module,0,Cancel Install,Annuler l'installation,0
 view,ir.module.module,0,Cancel Installation,Annuler l'installation,0
@@ -737,9 +757,12 @@ view,ir.translation.update.init,0,Synchronize Translations,Synchroniser les trad
 view,ir.translation.update.init,0,Update Translations,Mettre à jour les traductions,0
 view,ir.trigger,0,Trigger,Déclencheur,0
 view,ir.trigger,0,Triggers,Déclencheurs,0
+view,ir.ui.icon,0,Icon,Icône,1
+view,ir.ui.icon,0,Icons,Icônes,0
 view,ir.ui.menu,0,Menu,Menu,0
 view,ir.ui.view,0,View,Vue,0
 view,ir.ui.view_sc,0,Shortcut,Raccourcis,0
+view,ir.ui.view_sc,0,Shortcuts,Raccourcis,0
 view,ir.ui.view_tree_width,0,View Tree Width,Largeur de vue arbre,0
 view,ir.ui.view_tree_width,0,Views Tree Width,Largeurs des vues arbres,0
 wizard_button,"ir.model.print_model_graph,init,end",0,Cancel,Annuler,0
diff --git a/trytond/ir/gen_time_locale.py b/trytond/ir/gen_time_locale.py
index 500c80e..72f8f29 100644
--- a/trytond/ir/gen_time_locale.py
+++ b/trytond/ir/gen_time_locale.py
@@ -1,6 +1,6 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
-
+from __future__ import with_statement
 import time
 import locale
 import os
@@ -180,17 +180,17 @@ def locale_strftime(lang):
     return time_locale
 
 if __name__ == '__main__':
-    fp = open(os.path.join(os.path.dirname(__file__), 'time_locale.py'), 'w')
-    fp.write('''# -*- coding: utf-8 -*-
+    with open(os.path.join(os.path.dirname(__file__), 'time_locale.py'),
+            'w') as fp:
+        fp.write('''# -*- coding: utf-8 -*-
 #This file is part of Tryton.  The COPYRIGHT file at the top level of')
 #this repository contains the full copyright notices and license terms.')
 ''')
-    time_locale = {}
-    fp.write('TIME_LOCALE = \\\n')
-    for lang in ('cs_CZ', 'de_DE', 'en_US', 'es_ES', 'es_CO', 'fr_FR'):
-        time_locale[lang] = locale_strftime(lang)
-        #fp.write('"' + lang + '": ' + repr(time_locale) + ',\n')
-    #fp.write('}\n')
-    pp = pprint.PrettyPrinter(stream=fp)
-    pp.pprint(time_locale)
-    fp.close()
+        time_locale = {}
+        fp.write('TIME_LOCALE = \\\n')
+        for lang in ('cs_CZ', 'de_DE', 'en_US', 'es_ES', 'es_CO', 'fr_FR'):
+            time_locale[lang] = locale_strftime(lang)
+            #fp.write('"' + lang + '": ' + repr(time_locale) + ',\n')
+        #fp.write('}\n')
+        pp = pprint.PrettyPrinter(stream=fp)
+        pp.pprint(time_locale)
diff --git a/trytond/ir/ir.xml b/trytond/ir/ir.xml
index 15f4752..8e9125b 100644
--- a/trytond/ir/ir.xml
+++ b/trytond/ir/ir.xml
@@ -17,6 +17,7 @@ this repository contains the full copyright notices and license terms. -->
         </record>
 
         <menuitem name="Administration" id="menu_administration"
-            icon="tryton-preferences-system"/>
+            icon="tryton-preferences-system"
+            sequence="9999"/>
     </data>
 </tryton>
diff --git a/trytond/ir/lang.xml b/trytond/ir/lang.xml
index 48cc8ec..0c035c5 100644
--- a/trytond/ir/lang.xml
+++ b/trytond/ir/lang.xml
@@ -5,7 +5,14 @@ this repository contains the full copyright notices and license terms. -->
     <data>
         <menuitem name="Localization" parent="menu_administration"
             id="menu_localization"/>
-
+         <record model="ir.lang" id="lang_bg">
+            <field name="code">bg_BG</field>
+            <field name="name">Bulgarian</field>
+            <field name="date">%d.%m.%Y</field>
+            <field name="grouping">[3, 3, 0]</field>
+            <field name="decimal_point">,</field>
+            <field name="thousands_sep"> </field>
+        </record>
         <record model="ir.lang" id="lang_cs">
             <field name="code">cs_CZ</field>
             <field name="name">Czech</field>
@@ -49,6 +56,14 @@ this repository contains the full copyright notices and license terms. -->
             <field name="decimal_point">,</field>
             <field name="thousands_sep"></field>
         </record>
+        <record model="ir.lang" id="lang_nl">
+            <field name="code">nl_NL</field>
+            <field name="name">Dutch</field>
+            <field name="date">%d-%m-%Y</field>
+            <field name="grouping">[3, 3, 0]</field>
+            <field name="decimal_point">,</field>
+            <field name="thousands_sep">.</field>
+        </record>
         <record model="ir.lang" id="lang_ru">
             <field name="code">ru_RU</field>
             <field name="name">Russian</field>
@@ -106,7 +121,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_lang_form">
             <field name="name">Languages</field>
             <field name="res_model">ir.lang</field>
-            <field name="view_type">form</field>
             <field name="context">{'active_test': False}</field>
         </record>
         <record model="ir.action.act_window.view"
diff --git a/trytond/ir/model.py b/trytond/ir/model.py
index 2cec660..bb36f8d 100644
--- a/trytond/ir/model.py
+++ b/trytond/ir/model.py
@@ -15,7 +15,7 @@ class Model(ModelSQL, ModelView):
     "Model"
     _name = 'ir.model'
     _description = __doc__
-    name = fields.Char('Model Description', translate=True)
+    name = fields.Char('Model Description', translate=True, loading='lazy')
     model = fields.Char('Model Name', required=True)
     info = fields.Text('Information')
     module = fields.Char('Module',
@@ -78,11 +78,12 @@ class ModelField(ModelSQL, ModelView):
     relation = fields.Char('Model Relation')
     model = fields.Many2One('ir.model', 'Model', required=True,
        select=1, ondelete='CASCADE')
-    field_description = fields.Char('Field Description', translate=True)
+    field_description = fields.Char('Field Description', translate=True,
+            loading='lazy')
     ttype = fields.Char('Field Type')
     groups = fields.Many2Many('ir.model.field-res.group', 'field_id',
             'group_id', 'Groups')
-    help = fields.Text('Help', translate=True)
+    help = fields.Text('Help', translate=True, loading='lazy')
     module = fields.Char('Module',
        help="Module in which this field is defined")
 
@@ -234,38 +235,36 @@ class ModelAccess(ModelSQL, ModelView):
 
     @Cache('ir_model_access.check')
     def check(self, model_name, mode='read', raise_exception=True):
+        '''
+        Check access for model_name
+
+        :param model_name: the model name
+        :param mode: 'read', 'write', 'create' or 'delete'
+        :param raise_exception: raise an exception if the test failed
+
+        :return: a boolean
+        '''
         assert mode in ['read', 'write', 'create', 'delete'], \
                 'Invalid access mode for security'
-        model_obj = self.pool.get(model_name)
-        if hasattr(model_obj, 'table_query') \
-                and model_obj.table_query():
-            return False
         if Transaction().user == 0:
             return True
+
         ir_model_obj = self.pool.get('ir.model')
         user_group_obj = self.pool.get('res.user-res.group')
         cursor = Transaction().cursor
-        cursor.execute('SELECT MAX(CASE WHEN a.perm_'+mode+' THEN 1 else 0 END) '
-            'FROM ir_model_access a '
-                'JOIN "' + ir_model_obj._table + '" m '
+
+        cursor.execute('SELECT MAX(CASE WHEN a.perm_%s THEN 1 ELSE 0 END) '
+                'FROM "%s" AS a '
+                'JOIN "%s" AS m '
                     'ON (a.model = m.id) '
-                'JOIN "' + user_group_obj._table + '" gu '
+                'LEFT JOIN "%s" AS gu '
                     'ON (gu.gid = a."group") '
-            'WHERE m.model = %s AND gu.uid = %s',
-            (model_name, Transaction().user,))
-        row = cursor.fetchall()
-        if row[0][0] is None:
-            cursor.execute('SELECT ' \
-                        'MAX(CASE WHEN perm_' + mode + ' THEN 1 else 0 END) ' \
-                    'FROM ir_model_access a ' \
-                    'JOIN ir_model m ' \
-                        'ON (a.model = m.id) ' \
-                    'WHERE a."group" IS NULL AND m.model = %s', (model_name,))
-            row = cursor.fetchall()
-            if row[0][0] is None:
-                return True
-
-        if not row[0][0]:
+                'WHERE m.model = %%s AND (gu.uid = %%s OR a."group" IS NULL)'
+                % (mode, self._table, ir_model_obj._table,
+                    user_group_obj._table),
+                (model_name, Transaction().user))
+        access, = cursor.fetchone()
+        if not access and access is not None:
             if raise_exception:
                 self.raise_user_error(mode, model_name)
             else:
@@ -308,6 +307,125 @@ class ModelAccess(ModelSQL, ModelView):
 ModelAccess()
 
 
+class ModelFieldAccess(ModelSQL, ModelView):
+    "Model Field Access"
+    _name = 'ir.model.field.access'
+    _description = __doc__
+    _rec_name = 'field'
+    field = fields.Many2One('ir.model.field', 'Field', required=True,
+            ondelete='CASCADE')
+    group = fields.Many2One('res.group', 'Group', ondelete='CASCADE')
+    perm_read = fields.Boolean('Read Access')
+    perm_write = fields.Boolean('Write Access')
+    description = fields.Text('Description')
+
+    def __init__(self):
+        super(ModelFieldAccess, self).__init__()
+        self._sql_constraints += [
+            ('field_group_uniq', 'UNIQUE("field", "group")',
+                'Only one record by field and group is allowed!'),
+        ]
+        self._error_messages.update({
+            'read': 'You can not read the field! (%s.%s)',
+            'write': 'You can not write on the field! (%s.%s)',
+            })
+
+    def check_xml_record(self, ids, values):
+        return True
+
+    def default_perm_read(self):
+        return False
+
+    def default_perm_write(self):
+        return False
+
+    @Cache('ir_model_field_access.check')
+    def check(self, model_name, fields, mode='read', raise_exception=True,
+            access=False):
+        '''
+        Check access for fields on model_name.
+
+        :param model_name: the model name
+        :param fields: a list of fields
+        :param mode: 'read' or 'write'
+        :param raise_exception: raise an exception if the test failed
+        :param access: return a dictionary with access right instead of boolean
+
+        :return: a boolean
+        '''
+        assert mode in ('read', 'write'), 'Invalid access mode'
+        if Transaction().user == 0:
+            if access:
+                return dict((x, True) for x in fields)
+            return True
+
+        ir_model_obj = self.pool.get('ir.model')
+        ir_model_field_obj = self.pool.get('ir.model.field')
+        user_group_obj = self.pool.get('res.user-res.group')
+
+        cursor = Transaction().cursor
+
+        cursor.execute('SELECT f.name, '
+                'MAX(CASE WHEN a.perm_%s THEN 1 ELSE 0 END) '
+                'FROM "%s" AS a '
+                'JOIN "%s" AS f '
+                    'ON (a.field = f.id) '
+                'JOIN "%s" AS m '
+                    'ON (f.model = m.id) '
+                'LEFT JOIN "%s" AS gu '
+                    'ON (gu.gid = a."group") '
+                'WHERE m.model = %%s AND (gu.uid = %%s OR a."group" IS NULL) '
+                'GROUP BY f.name'
+                % (mode, self._table, ir_model_field_obj._table,
+                    ir_model_obj._table, user_group_obj._table),
+                (model_name, Transaction().user))
+        accesses = dict(cursor.fetchall())
+        if access:
+            return accesses
+        for field in fields:
+            if not accesses.get(field, True):
+                if raise_exception:
+                    self.raise_user_error(mode, (model_name, field))
+                else:
+                    return False
+        return True
+
+    def write(self, ids, vals):
+        res = super(ModelFieldAccess, self).write(ids, vals)
+        # Restart the cache
+        self.check.reset()
+        for _, model in self.pool.iterobject():
+            try:
+                model.fields_view_get.reset()
+            except Exception:
+                pass
+        return res
+
+    def create(self, vals):
+        res = super(ModelFieldAccess, self).create(vals)
+        # Restart the cache
+        self.check.reset()
+        for _, model in self.pool.iterobject():
+            try:
+                model.fields_view_get.reset()
+            except Exception:
+                pass
+        return res
+
+    def delete(self, ids):
+        res = super(ModelFieldAccess, self).delete(ids)
+        # Restart the cache
+        self.check.reset()
+        for _, model in self.pool.iterobject():
+            try:
+                model.fields_view_get.reset()
+            except Exception:
+                pass
+        return res
+
+ModelFieldAccess()
+
+
 class ModelData(ModelSQL, ModelView):
     "Model data"
     _name = 'ir.model.data'
diff --git a/trytond/ir/model.xml b/trytond/ir/model.xml
index 3b9eecb..ff43acd 100644
--- a/trytond/ir/model.xml
+++ b/trytond/ir/model.xml
@@ -54,7 +54,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_model_form">
             <field name="name">Models</field>
             <field name="res_model">ir.model</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_model_form_view1">
@@ -113,7 +112,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_model_fields_form">
             <field name="name">Fields</field>
             <field name="res_model">ir.model.field</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_model_fields_form_view1">
@@ -173,7 +171,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_model_access_form">
             <field name="name">Models Access</field>
             <field name="res_model">ir.model.access</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_model_access_form_view1">
@@ -190,6 +187,62 @@ this repository contains the full copyright notices and license terms. -->
         <menuitem parent="ir.menu_models"
             action="act_model_access_form" id="menu_model_access_form"/>
 
+        <record model="ir.ui.view" id="model_field_access_view_tree">
+            <field name="model">ir.model.field.access</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <tree string="Field Access">
+                    <field name="perm_read" select="2"/>
+                    <field name="perm_write" select="2"/>
+                    <field name="field" select="1"/>
+                    <field name="group" select="1"/>
+                </tree>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="model_field_access_view_form">
+            <field name="model">ir.model.field.access</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <form string="Field Access">
+                    <label name="field"/>
+                    <field name="field"/>
+                    <label name="group"/>
+                    <field name="group"/>
+                    <newline/>
+                    <label name="perm_read"/>
+                    <field name="perm_read"/>
+                    <label name="perm_write"/>
+                    <field name="perm_write"/>
+                    <separator name="description" colspan="4"/>
+                    <field name="description" colspan="4"/>
+                </form>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.action.act_window" id="act_model_field_access_form">
+            <field name="name">Fields Access</field>
+            <field name="res_model">ir.model.field.access</field>
+        </record>
+        <record model="ir.action.act_window.view"
+            id="act_model_field_access_form_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="model_field_access_view_tree"/>
+            <field name="act_window" ref="act_model_field_access_form"/>
+        </record>
+        <record model="ir.action.act_window.view"
+            id="act_model_field_access_form_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="model_field_access_view_form"/>
+            <field name="act_window" ref="act_model_field_access_form"/>
+        </record>
+        <menuitem parent="menu_model_access_form"
+            action="act_model_field_access_form" id="menu_model_field_access_form"/>
+
         <record model="ir.action.report" id="report_model_graph">
             <field name="name">Graph</field>
             <field name="model">ir.model</field>
diff --git a/trytond/ir/module/module.py b/trytond/ir/module/module.py
index 7ec5e71..4f3ee3e 100644
--- a/trytond/ir/module/module.py
+++ b/trytond/ir/module/module.py
@@ -66,9 +66,9 @@ class Module(ModelSQL, ModelView):
                 file_p = tools.file_open(os.path.join(name, '__tryton__.py'))
             else:
                 file_p = tools.file_open(os.path.join(name, '__tryton__.py'))
-            data = file_p.read()
+            with file_p:
+                data = file_p.read()
             info = tools.safe_eval(data)
-            file_p.close()
         except Exception:
             return {}
         return info
diff --git a/trytond/ir/module/module.xml b/trytond/ir/module/module.xml
index 5373dbb..b55964f 100644
--- a/trytond/ir/module/module.xml
+++ b/trytond/ir/module/module.xml
@@ -76,7 +76,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Modules</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">ir.module.module</field>
-            <field name="view_type">form</field>
             <field name="domain">[('name', '!=', 'test')]</field>
         </record>
         <record model="ir.action.act_window.view"
@@ -110,7 +109,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_config_wizard_item_form">
             <field name="name">Config Wizard Items</field>
             <field name="res_model">ir.module.module.config_wizard.item</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_config_wizard_item_form_view1">
diff --git a/trytond/ir/nl_NL.csv b/trytond/ir/nl_NL.csv
new file mode 100644
index 0000000..f005f57
--- /dev/null
+++ b/trytond/ir/nl_NL.csv
@@ -0,0 +1,679 @@
+type,name,res_id,src,value,fuzzy
+error,access_error,0,"You try to bypass an access rule!
+(Document type: %s)","U probeert een toegangsregel te omzeilen!
+(Document type: %s)",0
+error,delete_workflow_record,0,You cannot delete a record with a running workflow.,U kunt een item in een actieve werkgang niet verwijderen.,0
+error,delete_xml_record,0,You are not allowed to delete this record.,Het is u niet toegestaan dit item te verwijderen.,0
+error,digits_validation_record,0,"The field ""%s"" on ""%s"" has too many decimal digits.","Het veld ""%s"" in ""%s"" heeft te veel decimalen.",0
+error,domain_validation_record,0,"The value of the field ""%s"" on ""%s"" is not valid according to its domain.","De waarde van het veld ""%s"" in ""%s"" is niet geldig binnen zijn domein.",0
+error,foreign_model_exist,0,"Could not delete ""%s"" records because they are used on field ""%s"" of ""%s"".","Kon items ""%s"" niet verwijderen omdat ze in gebruik waren in veld ""%s"" van ""%s"".",0
+error,foreign_model_missing,0,"The value of field ""%s"" on ""%s"" doesn't exist.","De waarde van veld ""%s"" in ""%s"" bestaat niet.",0
+error,ir.action.act_window,0,Invalid context!,Ongeldig verband!,0
+error,ir.action.act_window,0,Invalid domain!,Ongeldig domein!,0
+error,ir.action.act_window,0,Invalid search criteria!,Ongeldig zoek argument!,0
+error,ir.action.keyword,0,Wrong wizard model!,Verkeerde assistent model!,0
+error,ir.action.report,0,The internal name must be unique by module!,De interne naam moet uniek zijn per module!,0
+error,ir.attachment,0,The  names of attachments must be unique by resource!,De namen van de bijlagen moeten uniek zijn per bron!,0
+error,ir.cron,0,Scheduled action failed,Geplande actie mislukt,0
+error,ir.cron,0,"The following action failed to execute properly: ""%s""
+ Traceback: 
+
+%s
+","Deze aktie is niet goed uitgevoerd: ""%s""
+Spoor:
+
+%s",0
+error,ir.lang,0,Invalid Grouping!,Ongeldigegroep,0
+error,ir.lang,0,The date format is not valid!,Datum samenstelling is niet geldig!,0
+error,ir.lang,0,decimal_point and thousands_sep must be different!,Decimaal teken en duizendtal teken moet verschillend zijn!,0
+error,ir.model,0,Module Name must be a python identifier!,Module naam moet een python variabele zijn!,0
+error,ir.model,0,The model must be unique!,Het model moet uniek zijn!,0
+error,ir.model.access,0,Only one record by model and group is allowed!,Slechts één item per model en groep is toegestaan!,0
+error,ir.model.access,0,You can not create this kind of document! (%s),U kunt dit type document niet aanmaken! (%s),0
+error,ir.model.access,0,You can not delete this document! (%s),U kunt dit document niet verwijderen! (%s),0
+error,ir.model.access,0,You can not read this document! (%s),U kunt dit document openen! (%s),0
+error,ir.model.access,0,You can not write in this document! (%s),U kunt dit document niet muteren! (%s),0
+error,ir.model.data,0,"The triple (fs_id, module, model) must be unique!","Het drietal (fs_id, module, model) moet uniek zijn!",0
+error,ir.model.field,0,Model Field Name must be a python identifier!,Model veldnaam moet een python variabele zijn!,0
+error,ir.model.field,0,The field name in model must be unique!,De veldnaam in het model moet uniek zijn!,0
+error,ir.module.module,0,"Missing dependencies %s for module ""%s""","Afhankelijkheid %s ontbreekt voor module ""%s""",0
+error,ir.module.module,0,The modules you are trying to uninstall depends on installed modules:,De module die u wilt verwijderen is afhankelijk van geïnstalleerde modules:,0
+error,ir.module.module,0,The name of the module must be unique!,De naam van de module moet uniek zijn!,0
+error,ir.module.module,0,You can not remove a module that is installed or will be installed,U kunt een module niet verwijderen als die geïnstalleerd is of wordt.,0
+error,ir.module.module.dependency,0,Dependency must be unique by module!,Afhankelijkheid moet uniek zijn per module!,0
+error,ir.rule.group,0,Global and Default are mutually exclusive!,Globaal en standaard sluiten elkaar uit!,0
+error,ir.sequence,0,Invalid prefix/suffix!,Ongeldig voorvoegsel / toevoeging,0
+error,ir.sequence,0,Last Timestamp could not be in future!,Laatste tijdmarkering kan niet in de toekomst zijn!,0
+error,ir.sequence,0,Missing sequence!,Reeks ontbreekt!,0
+error,ir.sequence.strict,0,Invalid prefix/suffix!,Ongeldig voorvoegsel / toevoeging,0
+error,ir.sequence.strict,0,Last Timestamp could not be in future!,Laatste tijdmarkering kan niet in de toekomst zijn!,0
+error,ir.sequence.strict,0,Missing sequence!,Reeks ontbreekt!,0
+error,ir.translation,0,Translation must be unique,Vertaling moet uniek zijn!,0
+error,ir.translation,0,Translation of type 'model' must be unique!,Vertaling van type 'model' moet uniek zijn!,0
+error,ir.trigger,0,"""On Time"" and others are mutually exclusive!","""Op tijd"" en anderen sluiten elkaar uit!",0
+error,ir.trigger,0,Condition must be a python expression!,Voorwaarde moet een python formule zijn!,0
+error,ir.ui.view,0,Invalid XML for View!,Ongeldig XML code in aanzicht!,0
+error,not_found_in_selection,0,Key %r not found in selection field %r,Sleutel %r niet gevonden in selectie veld %r,0
+error,read_error,0,"You try to read records that don't exist anymore!
+(Document type: %s)","U probeert items te lezen die niet meer bestaan!
+(Document type: %s)",0
+error,reference_syntax_error,0,Syntax error for reference %r in %s,Foutieve verwijzing voor %r in %s,0
+error,relation_not_found,0,Relation not found: %r in %s,Relatie niet gevonden: %r in %s,0
+error,required_field,0,"The field ""%s"" on ""%s"" is required.","Het veld ""%s"" in ""%s"" is vereist.",0
+error,required_validation_record,0,"The field ""%s"" on ""%s"" is required.","Het veld ""%s"" in ""%s"" is vereist.",0
+error,search_function_missing,0,"Missing search function on field ""%s"".","Zoekfunctie ontbreekt voor veld "" %s"".",0
+error,size_validation_record,0,"The field ""%s"" on ""%s"" is too long.","Veld ""%s"" op ""%s"" is te lang.",0
+error,too_many_relations_found,0,Too many relations found: %r in %s,Te veel relaties gevonden: %r in %s,0
+error,write_error,0,"You try to write on records that don't exist anymore!
+(Document type: %s)","U probeert items te muteren die niet meer bestaan!
+(Document type: %s)",0
+error,write_xml_record,0,You are not allowed to modify this record.,Het is u niet toegestaan dit item te muteren.,0
+error,xml_id_syntax_error,0,Syntax error for XML id %r in %s,Foutieve verwijzing voor XML id %r in %s,0
+error,xml_record_desc,0,This record is part of the base configuration.,Dit item is onderdeel van de basis configuratie.,0
+field,"ir.action,active",0,Active,Actief,0
+field,"ir.action,groups",0,Groups,Groepen,0
+field,"ir.action,keywords",0,Keywords,Trefwoorden,0
+field,"ir.action,name",0,Name,Naam,0
+field,"ir.action,rec_name",0,Name,Naam,0
+field,"ir.action,type",0,Type,Type,0
+field,"ir.action,usage",0,Usage,Gebruik,0
+field,"ir.action.act_window,act_window_views",0,Views,Aanzichten,0
+field,"ir.action.act_window,action",0,Action,Actie,0
+field,"ir.action.act_window,auto_refresh",0,Auto-Refresh,Automatisch verversen,0
+field,"ir.action.act_window,context",0,Context Value,Samenhang waarde,0
+field,"ir.action.act_window,domain",0,Domain Value,Domein waarde,0
+field,"ir.action.act_window,limit",0,Limit,Begrenzing,0
+field,"ir.action.act_window,pyson_context",0,PySON Context,PySON verband,0
+field,"ir.action.act_window,pyson_domain",0,PySON Domain,PySON domein,0
+field,"ir.action.act_window,pyson_search_value",0,PySON Search Criteria,PySON zoekargument,0
+field,"ir.action.act_window,rec_name",0,Name,Naam,0
+field,"ir.action.act_window,res_model",0,Model,Model,0
+field,"ir.action.act_window,search_value",0,Search Criteria,Zoekargumenten,0
+field,"ir.action.act_window,view_type",0,Type of view,Type aanzicht,0
+field,"ir.action.act_window,views",0,Views,Aanzichten,0
+field,"ir.action.act_window,window_name",0,Window Name,Aanzicht naam,0
+field,"ir.action.act_window.view,act_window",0,Action,Actie,0
+field,"ir.action.act_window.view,rec_name",0,Name,Naam,0
+field,"ir.action.act_window.view,sequence",0,Sequence,Reeks,0
+field,"ir.action.act_window.view,view",0,View,Overzicht,0
+field,"ir.action.keyword,action",0,Action,Actie,0
+field,"ir.action.keyword,keyword",0,Keyword,Trefwoord,0
+field,"ir.action.keyword,model",0,Model,Model,0
+field,"ir.action.keyword,rec_name",0,Name,Naam,0
+field,"ir.action.report,action",0,Action,Actie,0
+field,"ir.action.report,direct_print",0,Direct Print,Direct afdrukken,0
+field,"ir.action.report,email",0,Email,E-mail,0
+field,"ir.action.report,extension",0,Extension,Uitbreiding,0
+field,"ir.action.report,model",0,Model,Model,0
+field,"ir.action.report,module",0,Module,Module,0
+field,"ir.action.report,rec_name",0,Name,Naam,0
+field,"ir.action.report,report",0,Path,Pad,0
+field,"ir.action.report,report_content",0,Content,Inhoud,0
+field,"ir.action.report,report_content_data",0,Content,Inhoud,0
+field,"ir.action.report,report_name",0,Internal Name,Interne naam,0
+field,"ir.action.report,style",0,Style,Stijl,0
+field,"ir.action.report,style_content",0,Style,Stijl,0
+field,"ir.action.url,action",0,Action,Actie,0
+field,"ir.action.url,rec_name",0,Name,Naam,0
+field,"ir.action.url,url",0,Action Url,Actie URL,0
+field,"ir.action.wizard,action",0,Action,Actie,0
+field,"ir.action.wizard,email",0,Email,E-mail,0
+field,"ir.action.wizard,model",0,Model,Model,0
+field,"ir.action.wizard,rec_name",0,Name,Naam,0
+field,"ir.action.wizard,window",0,Window,Scherm,0
+field,"ir.action.wizard,wiz_name",0,Wizard name,Assistent naam,0
+field,"ir.action.wizard_size,height",0,Height,Hoogte,0
+field,"ir.action.wizard_size,model",0,Model,Model,0
+field,"ir.action.wizard_size,rec_name",0,Name,Naam,0
+field,"ir.action.wizard_size,user",0,User,Gebruiker,0
+field,"ir.action.wizard_size,width",0,Width,Breedte,0
+field,"ir.action.wizard_size,wizard",0,Wizard,Assistent,0
+field,"ir.attachment,collision",0,Collision,Botsing,0
+field,"ir.attachment,datas",0,Datas,Gegevens,0
+field,"ir.attachment,datas_size",0,Datas size,Gegevens grote,0
+field,"ir.attachment,description",0,Description,Omschrijving,0
+field,"ir.attachment,digest",0,Digest,Verwerken,0
+field,"ir.attachment,link",0,Link,Verbinding,0
+field,"ir.attachment,name",0,Attachment Name,Naam bijlage,0
+field,"ir.attachment,rec_name",0,Name,Naam,0
+field,"ir.attachment,resource",0,Resource,Middel,0
+field,"ir.cache,name",0,Name,Naam,0
+field,"ir.cache,rec_name",0,Name,Naam,0
+field,"ir.cache,timestamp",0,Timestamp,Tijdmarkering,0
+field,"ir.cron,active",0,Active,Actief,0
+field,"ir.cron,args",0,Arguments,Argumenten,0
+field,"ir.cron,doall",0,Repeat missed,Herhaal gemiste,0
+field,"ir.cron,function",0,Function,Functie,0
+field,"ir.cron,interval_number",0,Interval Number,Interval nummer,0
+field,"ir.cron,interval_type",0,Interval Unit,Interval eenheid,0
+field,"ir.cron,model",0,Model,Model,0
+field,"ir.cron,name",0,Name,Naam,0
+field,"ir.cron,nextcall",0,Next call date,Volgende datum uitvoering,0
+field,"ir.cron,numbercall",0,Number of calls,Aantal aanroepen,0
+field,"ir.cron,priority",0,Priority,Prioriteit,0
+field,"ir.cron,rec_name",0,Name,Naam,0
+field,"ir.cron,request_user",0,Request User,Verzoek gebruiker,0
+field,"ir.cron,running",0,Running,Bezig,0
+field,"ir.cron,user",0,Execution User,Uitvoerende gebruiker,0
+field,"ir.default,clause",0,Clause,Clausule,0
+field,"ir.default,field",0,Field,Veld,0
+field,"ir.default,model",0,Model,Model,0
+field,"ir.default,rec_name",0,Name,Naam,0
+field,"ir.default,user",0,User,Gebruiker,0
+field,"ir.default,value",0,Value,Waarde,0
+field,"ir.export,export_fields",0,Fields,Velden,0
+field,"ir.export,name",0,Name,Naam,0
+field,"ir.export,rec_name",0,Name,Naam,0
+field,"ir.export,resource",0,Resource,Middel,0
+field,"ir.export.line,export",0,Export,Exporteren,0
+field,"ir.export.line,name",0,Name,Naam,0
+field,"ir.export.line,rec_name",0,Name,Naam,0
+field,"ir.lang,active",0,Active,Actief,0
+field,"ir.lang,code",0,Code,Code,0
+field,"ir.lang,date",0,Date,Datum,0
+field,"ir.lang,decimal_point",0,Decimal Separator,Decimaalteken,0
+field,"ir.lang,direction",0,Direction,Richting,0
+field,"ir.lang,grouping",0,Grouping,Groeperen,0
+field,"ir.lang,name",0,Name,Naam,0
+field,"ir.lang,rec_name",0,Name,Naam,0
+field,"ir.lang,thousands_sep",0,Thousands Separator,Duizendtal teken,0
+field,"ir.lang,translatable",0,Translatable,Vertaalbaar,0
+field,"ir.model,fields",0,Fields,Velden,0
+field,"ir.model,info",0,Information,Informatie,0
+field,"ir.model,model",0,Model Name,Naam module,0
+field,"ir.model,module",0,Module,Module,0
+field,"ir.model,name",0,Model Description,Model omschrijving,0
+field,"ir.model,rec_name",0,Name,Naam,0
+field,"ir.model.access,description",0,Description,Omschrijving,0
+field,"ir.model.access,group",0,Group,Groep,0
+field,"ir.model.access,model",0,Model,Model,0
+field,"ir.model.access,perm_create",0,Create Access,Mag aanmaken,0
+field,"ir.model.access,perm_delete",0,Delete Access,Toegang verwijderen,0
+field,"ir.model.access,perm_read",0,Read Access,Leesrecht,0
+field,"ir.model.access,perm_write",0,Write Access,Schrijfrecht,0
+field,"ir.model.access,rec_name",0,Name,Naam,0
+field,"ir.model.data,date_init",0,Init Date,Datum aanmaken,0
+field,"ir.model.data,date_update",0,Update Date,Datum bijgewerkt,0
+field,"ir.model.data,db_id",0,Resource ID,Middel ID,0
+field,"ir.model.data,fs_id",0,Identifier on File System,Kenmerk voor bestandssysteem,0
+field,"ir.model.data,inherit",0,Inherit,Erven,0
+field,"ir.model.data,model",0,Model,Model,0
+field,"ir.model.data,module",0,Module,Module,0
+field,"ir.model.data,noupdate",0,No Update,Niet bij te werken,0
+field,"ir.model.data,rec_name",0,Name,Naam,0
+field,"ir.model.data,values",0,Values,Waarden,0
+field,"ir.model.field,field_description",0,Field Description,Veld omschrijving,0
+field,"ir.model.field,groups",0,Groups,Groepen,0
+field,"ir.model.field,help",0,Help,Help,0
+field,"ir.model.field,model",0,Model,Model,0
+field,"ir.model.field,module",0,Module,Module,0
+field,"ir.model.field,name",0,Name,Naam,0
+field,"ir.model.field,rec_name",0,Name,Naam,0
+field,"ir.model.field,relation",0,Model Relation,Model relatie,0
+field,"ir.model.field,ttype",0,Field Type,Veld type,0
+field,"ir.model.print_model_graph.init,filter",0,Filter,Filter,0
+field,"ir.model.print_model_graph.init,level",0,Level,Niveau,0
+field,"ir.module.module,author",0,Author,Auteur,0
+field,"ir.module.module,dependencies",0,Dependencies,Afhankelijkheden,0
+field,"ir.module.module,description",0,Description,Omschrijving,0
+field,"ir.module.module,name",0,Name,Naam,0
+field,"ir.module.module,rec_name",0,Name,Naam,0
+field,"ir.module.module,shortdesc",0,Short description,Korte omschrijving,0
+field,"ir.module.module,state",0,State,Status,0
+field,"ir.module.module,version",0,Version,Versie,0
+field,"ir.module.module,website",0,Website,Website,0
+field,"ir.module.module.config_wizard.item,name",0,Name,Naam,0
+field,"ir.module.module.config_wizard.item,rec_name",0,Name,Naam,0
+field,"ir.module.module.config_wizard.item,sequence",0,Sequence,Reeks,0
+field,"ir.module.module.config_wizard.item,state",0,State,Status,0
+field,"ir.module.module.dependency,module",0,Module,Module,0
+field,"ir.module.module.dependency,name",0,Name,Naam,0
+field,"ir.module.module.dependency,rec_name",0,Name,Naam,0
+field,"ir.module.module.dependency,state",0,State,Status,0
+field,"ir.module.module.install_upgrade.init,module_info",0,Modules to update,Modules om bij te werken,0
+field,"ir.property,field",0,Field,Veld,0
+field,"ir.property,name",0,Name,Naam,0
+field,"ir.property,rec_name",0,Name,Naam,0
+field,"ir.property,res",0,Resource,Middel,0
+field,"ir.property,value",0,Value,Waarde,0
+field,"ir.rule,field",0,Field,Veld,0
+field,"ir.rule,operand",0,Operand,Invoerwaarde,0
+field,"ir.rule,operator",0,Operator,Bewerker,0
+field,"ir.rule,rec_name",0,Name,Naam,0
+field,"ir.rule,rule_group",0,Group,Groep,0
+field,"ir.rule.group,default_p",0,Default,Standaard,0
+field,"ir.rule.group,global_p",0,Global,Globaal,0
+field,"ir.rule.group,groups",0,Groups,Groepen,0
+field,"ir.rule.group,model",0,Model,Model,0
+field,"ir.rule.group,name",0,Name,Naam,0
+field,"ir.rule.group,perm_create",0,Create Access,Mag aanmaken,0
+field,"ir.rule.group,perm_delete",0,Delete Access,Toegang verwijderen,0
+field,"ir.rule.group,perm_read",0,Read Access,Leesrecht,0
+field,"ir.rule.group,perm_write",0,Write Access,Schrijfrecht,0
+field,"ir.rule.group,rec_name",0,Name,Naam,0
+field,"ir.rule.group,rules",0,Tests,Testen,0
+field,"ir.rule.group,users",0,Users,Gebruikers,0
+field,"ir.sequence,active",0,Active,Actief,0
+field,"ir.sequence,code",0,Sequence Code,Reeks code,0
+field,"ir.sequence,last_timestamp",0,Last Timestamp,Laatste tijdmarkering,0
+field,"ir.sequence,name",0,Sequence Name,Reeks naam,0
+field,"ir.sequence,number_increment",0,Increment Number,Oplopende stap,0
+field,"ir.sequence,number_next",0,Next Number,Volgende nummer,0
+field,"ir.sequence,padding",0,Number padding,Voorloopnullen,0
+field,"ir.sequence,prefix",0,Prefix,Voorvoegsel,0
+field,"ir.sequence,rec_name",0,Name,Naam,0
+field,"ir.sequence,suffix",0,Suffix,Toevoeging,0
+field,"ir.sequence,timestamp_offset",0,Timestamp Offset,Tijdmarkering verschuiving,0
+field,"ir.sequence,timestamp_rounding",0,Timestamp Rounding,Tijdmarkering afronding,0
+field,"ir.sequence,type",0,Type,Type,0
+field,"ir.sequence.strict,active",0,Active,Actief,0
+field,"ir.sequence.strict,code",0,Sequence Code,Reeks code,0
+field,"ir.sequence.strict,last_timestamp",0,Last Timestamp,Laatste tijdmarkering,0
+field,"ir.sequence.strict,name",0,Sequence Name,Reeks naam,0
+field,"ir.sequence.strict,number_increment",0,Increment Number,Oplopende stap,0
+field,"ir.sequence.strict,number_next",0,Next Number,Volgende nummer,0
+field,"ir.sequence.strict,padding",0,Number padding,Voorloopnullen,0
+field,"ir.sequence.strict,prefix",0,Prefix,Voorvoegsel,0
+field,"ir.sequence.strict,rec_name",0,Name,Naam,0
+field,"ir.sequence.strict,suffix",0,Suffix,Toevoeging,0
+field,"ir.sequence.strict,timestamp_offset",0,Timestamp Offset,Tijdmarkering verschuiving,0
+field,"ir.sequence.strict,timestamp_rounding",0,Timestamp Rounding,Tijdmarkering afronding,0
+field,"ir.sequence.strict,type",0,Type,Type,0
+field,"ir.sequence.type,code",0,Sequence Code,Reeks code,0
+field,"ir.sequence.type,name",0,Sequence Name,Reeks naam,0
+field,"ir.sequence.type,rec_name",0,Name,Naam,0
+field,"ir.translation,fuzzy",0,Fuzzy,Onzeker,0
+field,"ir.translation,lang",0,Language,Taal,0
+field,"ir.translation,model",0,Model,Model,0
+field,"ir.translation,module",0,Module,Module,0
+field,"ir.translation,name",0,Field Name,Veldnaam,0
+field,"ir.translation,rec_name",0,Name,Naam,0
+field,"ir.translation,res_id",0,Resource ID,Middel ID,0
+field,"ir.translation,src",0,Source,Bron,0
+field,"ir.translation,type",0,Type,Type,0
+field,"ir.translation,value",0,Translation Value,Vertaling,0
+field,"ir.translation.export.init,lang",0,Language,Taal,0
+field,"ir.translation.export.init,module",0,Module,Module,0
+field,"ir.translation.export.start,file",0,File,Bestand,0
+field,"ir.translation.update.init,lang",0,Language,Taal,0
+field,"ir.trigger,action_function",0,Action Function,Actiefunctie,0
+field,"ir.trigger,action_model",0,Action Model,Actie model,0
+field,"ir.trigger,active",0,Active,Actief,0
+field,"ir.trigger,condition",0,Condition,Voorwaarde,0
+field,"ir.trigger,limit_number",0,Limit Number,Begrenzing nummer,0
+field,"ir.trigger,minimum_delay",0,Minimum Delay,Minimum vertraging,0
+field,"ir.trigger,model",0,Model,Model,0
+field,"ir.trigger,name",0,Name,Naam,0
+field,"ir.trigger,on_create",0,On Create,Bij aanmaken,0
+field,"ir.trigger,on_delete",0,On Delete,Bij verwijderen,0
+field,"ir.trigger,on_time",0,On Time,Op tijd,0
+field,"ir.trigger,on_write",0,On Write,Bij muteren,0
+field,"ir.trigger,rec_name",0,Name,Naam,0
+field,"ir.trigger.log,rec_name",0,Name,Naam,0
+field,"ir.trigger.log,record_id",0,Record ID,Item ID,0
+field,"ir.trigger.log,trigger",0,Trigger,Starter,0
+field,"ir.ui.menu,action",0,Action,Actie,0
+field,"ir.ui.menu,active",0,Active,Actief,0
+field,"ir.ui.menu,childs",0,Children,Onderliggende niveaus,0
+field,"ir.ui.menu,complete_name",0,Complete Name,Volledige naam,0
+field,"ir.ui.menu,groups",0,Groups,Groepen,0
+field,"ir.ui.menu,icon",0,Icon,Icoon,0
+field,"ir.ui.menu,name",0,Menu,Menu,0
+field,"ir.ui.menu,parent",0,Parent Menu,Hoofdmenu,0
+field,"ir.ui.menu,rec_name",0,Name,Naam,0
+field,"ir.ui.menu,sequence",0,Sequence,Reeks,0
+field,"ir.ui.view,arch",0,View Architecture,Bekijk opbouw,0
+field,"ir.ui.view,domain",0,Domain,Domein,0
+field,"ir.ui.view,field_childs",0,Children Field,Veld onderliggende niveaus,0
+field,"ir.ui.view,inherit",0,Inherited View,Aanzicht overnemen,0
+field,"ir.ui.view,model",0,Model,Model,0
+field,"ir.ui.view,module",0,Module,Module,0
+field,"ir.ui.view,priority",0,Priority,Prioriteit,0
+field,"ir.ui.view,rec_name",0,Name,Naam,0
+field,"ir.ui.view,type",0,View Type,Aanzicht type,0
+field,"ir.ui.view_sc,name",0,Shortcut Name,Sneltoets naam,0
+field,"ir.ui.view_sc,rec_name",0,Name,Naam,0
+field,"ir.ui.view_sc,res_id",0,Resource Ref.,Middelreferentie,0
+field,"ir.ui.view_sc,resource",0,Resource Name,Middelnaam,0
+field,"ir.ui.view_sc,sequence",0,Sequence,Reeks,0
+field,"ir.ui.view_sc,user_id",0,User Ref.,Referentie gebruiker,0
+field,"ir.ui.view_tree_width,field",0,Field,Veld,0
+field,"ir.ui.view_tree_width,model",0,Model,Model,0
+field,"ir.ui.view_tree_width,rec_name",0,Name,Naam,0
+field,"ir.ui.view_tree_width,user",0,User,Gebruiker,0
+field,"ir.ui.view_tree_width,width",0,Width,Breedte,0
+help,"ir.action.act_window,auto_refresh",0,Add an auto-refresh on the view,Voegt automatisch verversen toe,0
+help,"ir.action.act_window,limit",0,Default limit for the list view,Standaard begrenzing voor dit aanzicht,0
+help,"ir.action.act_window,search_value",0,Default search criteria for the list view,Standaard zoekopdracht voor lijst,0
+help,"ir.action.act_window,window_name",0,Use the action name as window name,Gebruik de naam van de actie als schermnaam,0
+help,"ir.action.report,style",0,Define the style to apply on the report.,Definieer de toe te passen stijl voor dit verslag.,0
+help,"ir.action.wizard,window",0,Run wizard in a new window,Start assistent in nieuw venster,0
+help,"ir.cron,numbercall",0,"Number of times the function is called,
+a negative number indicates that the function will always be called","Aantal keren dat deze functie zal worden aangeroepen,
+een negatief getal betekend dat deze functie altijd wordt aangeroepen.",0
+help,"ir.cron,priority",0,"0=Very Urgent
+10=Not urgent","0=erg urgent
+10=niet urgent",0
+help,"ir.cron,request_user",0,The user who will receive requests in case of failure,De gebruiker die de verzoeken krijgt in geval van falen,0
+help,"ir.cron,user",0,The user used to execute this action,De gebruiker die gebruikt wordt voor deze actie,0
+help,"ir.lang,code",0,RFC 4646 tag: http://tools.ietf.org/html/rfc4646,,0
+help,"ir.model,module",0,Module in which this model is defined,Module waarin dit veld is gedefinieerd,0
+help,"ir.model.data,db_id",0,The id of the record in the database.,Het ID van het item in de database.,0
+help,"ir.model.data,fs_id",0,The id of the record as known on the file system.,Het ID van het item zoals bekend in het bestandssysteem.,0
+help,"ir.model.field,module",0,Module in which this field is defined,Module waarin dit veld is gedefinieerd,0
+help,"ir.model.print_model_graph.init,filter",0,Entering a Python Regular Expression will exclude matching models from the graph.,Invoering van een geldige Python formule zal overeenkomende modellen uitsluiten van de grafiek.,0
+help,"ir.rule.group,default_p",0,Add this rule to all users by default,Voeg deze regel standaard toe bij alle gebruikers,0
+help,"ir.rule.group,global_p",0,"Make the rule global 
+so every users must follow this rule",Maak de regel globaal,0
+help,"ir.rule.group,rules",0,The rule is satisfied if at least one test is True,De regel is waar als tenminste aan één voorwaarde wordt voldaan,0
+help,"ir.trigger,condition",0,"A Python statement evaluated with record represented by ""self""
+It triggers the action if true.","Een Python uitdrukking gekoppeld aan item ""self""
+Het start de actie als het waar is.",0
+help,"ir.trigger,limit_number",0,"Limit the number of call to ""Action Function"" by records.
+0 for no limit.","Beperk het aantal aanroepen van ""Uitvoerende functie"" door items.
+Gebruik 0 voor geen beperking.",0
+help,"ir.trigger,minimum_delay",0,"Set a minimu delay in minutes between call to ""Action Function"" for the same record.
+0 for no delay.","Stelt de minimum vertraging in tussen afzonderlijke aanroepen van ""Uitvoerende functie"" door hetzelfde item.
+Gebruik 0 voor geen vertraging.",0
+model,"ir.action,name",0,Action,Actie,0
+model,"ir.action,name",act_action_act_window_form,Window Actions,Schermacties,0
+model,"ir.action,name",act_action_form,Actions,Acties,0
+model,"ir.action,name",act_action_report_form,Reports,Rapportage,0
+model,"ir.action,name",act_action_url_form,URLs,"URL's
+",0
+model,"ir.action,name",act_action_wizard_form,Wizards,Assistenten,0
+model,"ir.action,name",act_action_wizard_size_form,Wizard Sizes,Assistent groten,0
+model,"ir.action,name",act_attachment_form,Attachments,Bijlagen,0
+model,"ir.action,name",act_config_wizard_item_form,Config Wizard Items,Conf. assistent items,0
+model,"ir.action,name",act_cron_form,Scheduled Actions,Geplande acties,0
+model,"ir.action,name",act_default_form,Defaults,Standaarden,0
+model,"ir.action,name",act_export_form,Exports,Export,0
+model,"ir.action,name",act_lang_form,Languages,Talen,0
+model,"ir.action,name",act_menu_form,Menus,Menu's,0
+model,"ir.action,name",act_menu_tree,Menu,Menu,0
+model,"ir.action,name",act_model_access_form,Models Access,Toegang tot modellen,0
+model,"ir.action,name",act_model_fields_form,Fields,Velden,0
+model,"ir.action,name",act_model_form,Models,Modellen,0
+model,"ir.action,name",act_module_config_wizard,Module Configuration,Module configuratie,0
+model,"ir.action,name",act_module_form,Modules,Modulen,0
+model,"ir.action,name",act_module_install_upgrade,Perform Pending Installation/Upgrade,Voer installatie / bijwerken uit,0
+model,"ir.action,name",act_property_form,Properties,Eigenschappen,0
+model,"ir.action,name",act_property_form_default,Default Properties,Standaard eigenschappen,0
+model,"ir.action,name",act_rule_group_form,Record Rules,Item regels,0
+model,"ir.action,name",act_sequence_form,Sequences,Reeksen,0
+model,"ir.action,name",act_sequence_strict_form,Sequences Strict,Vaste reeksen,0
+model,"ir.action,name",act_sequence_type_form,Sequence Types,Reeks typen,0
+model,"ir.action,name",act_translation_clean,Clean Translations,Vertalingen opschonen,0
+model,"ir.action,name",act_translation_export,Export Translations,Vertalingen exporteren,0
+model,"ir.action,name",act_translation_form,Translations,Vertalingen,0
+model,"ir.action,name",act_translation_set_report,Set Report Translations,Vertaling rapport instellen,0
+model,"ir.action,name",act_translation_update,Synchronize Translations,Vertaling synchroniseren,0
+model,"ir.action,name",act_trigger_form,Triggers,Starters,0
+model,"ir.action,name",act_view_form,Views,Aanzichten,0
+model,"ir.action,name",act_view_sc_form,View Shortcuts,Bekijk sneltoetsen,0
+model,"ir.action,name",act_view_tree_width_form,View Tree Width,Aanzicht boomstructuurbreedte,0
+model,"ir.action,name",print_model_graph,Graph,Grafiek,0
+model,"ir.action,name",report_model_graph,Graph,Grafiek,0
+model,"ir.action.act_window,name",0,Action act window,Actie uitvoerend scherm,0
+model,"ir.action.act_window.view,name",0,Action act window view,Actie uitvoerend schermaanzicht,0
+model,"ir.action.keyword,name",0,Action keyword,Actietrefwoord,0
+model,"ir.action.report,name",0,Action report,Actie rapport,0
+model,"ir.action.url,name",0,Action URL,Actie URL,0
+model,"ir.action.wizard,name",0,Action wizard,Actie assistent,0
+model,"ir.action.wizard_size,name",0,Action Wizard Size,Actie assistent grote,0
+model,"ir.attachment,name",0,Attachment,Bijlage,0
+model,"ir.cache,name",0,Cache,Tijdelijk geheugen,0
+model,"ir.cron,name",0,Cron,Cyclische opdracht,0
+model,"ir.date,name",0,Date,Datum,0
+model,"ir.default,name",0,Default,Standaard,0
+model,"ir.export,name",0,Export,Exporteren,0
+model,"ir.export.line,name",0,Export line,Exporterregel,0
+model,"ir.lang,name",0,Language,Taal,0
+model,"ir.lang,name",lang_cs,Czech,Tsjechisch,0
+model,"ir.lang,name",lang_de,German,Duits,0
+model,"ir.lang,name",lang_en,English,Engels,0
+model,"ir.lang,name",lang_es,Spanish (Spain),Spaans (Spanje),0
+model,"ir.lang,name",lang_es_CO,Spanish (Colombia),Spaans (Colombia),0
+model,"ir.lang,name",lang_fr,French,Frans,0
+model,"ir.lang,name",lang_ru,Russian,Russisch,0
+model,"ir.model,name",0,Model,Model,0
+model,"ir.model.access,name",0,Model access,Toegang tot model,0
+model,"ir.model.data,name",0,Model data,Model gegevens,0
+model,"ir.model.field,name",0,Model field,Model veld,0
+model,"ir.model.print_model_graph.init,name",0,Print Model Graph Init,Grafiek gaan afdrukken,0
+model,"ir.module.module,name",0,Module,Module,0
+model,"ir.module.module.config_wizard.first,name",0,Module Config Wizard First,Module EHBC,0
+model,"ir.module.module.config_wizard.item,name",0,Config wizard to run after installing module,Configuratie assistent die start na installatie van de module,0
+model,"ir.module.module.dependency,name",0,Module dependency,Module afhankelijkheid,0
+model,"ir.module.module.install_upgrade.init,name",0,Module Install Upgrade Init,Module gaan bijwerken,0
+model,"ir.module.module.install_upgrade.start,name",0,Module Install Upgrade Start,Start module gaan bijwerken,0
+model,"ir.property,name",0,Property,Eigenschap,0
+model,"ir.rule,name",0,Rule,Regel,0
+model,"ir.rule.group,name",0,Rule group,Regelgroep,0
+model,"ir.sequence,name",0,Sequence,Reeks,0
+model,"ir.sequence.strict,name",0,Sequence Strict,Vaste reeks,0
+model,"ir.sequence.type,name",0,Sequence type,Reeks type,0
+model,"ir.translation,name",0,Translation,Vertaling,0
+model,"ir.translation.clean.init,name",0,Clean translation init,Vertalingen gaan opschonen,0
+model,"ir.translation.clean.start,name",0,Clean translation start,Start vertalingen opschonen,0
+model,"ir.translation.export.init,name",0,Export translation - language and module,Vertaling exporteren - taal en module,0
+model,"ir.translation.export.start,name",0,Export translation - file,Vertaling exporteren - bestand,0
+model,"ir.translation.set_report.init,name",0,Update Report Translation,Vertaling rapport bijwerken,0
+model,"ir.translation.set_report.start,name",0,Update Report Translation,Vertaling rapport bijwerken,0
+model,"ir.translation.update.init,name",0,Update translation - language,Vertaling rapport bijwerken,0
+model,"ir.trigger,name",0,Trigger,Starter,0
+model,"ir.trigger.log,name",0,Trigger Log,Starter logboek,0
+model,"ir.ui.menu,name",0,UI menu,Gebruiker menu,0
+model,"ir.ui.menu,name",menu_act_action,Actions,Acties,0
+model,"ir.ui.menu,name",menu_action,Actions,Acties,0
+model,"ir.ui.menu,name",menu_action_act_window,Window Actions,Schermacties,0
+model,"ir.ui.menu,name",menu_action_report_form,Reports,Rapportage,0
+model,"ir.ui.menu,name",menu_action_url,URLs,URL's,0
+model,"ir.ui.menu,name",menu_action_wizard,Wizards,Assistenten,0
+model,"ir.ui.menu,name",menu_action_wizard_size,Wizard Sizes,Assistent groten,0
+model,"ir.ui.menu,name",menu_administration,Administration,Systeembeheer,0
+model,"ir.ui.menu,name",menu_attachment_form,Attachments,Bijlagen,0
+model,"ir.ui.menu,name",menu_config_wizard_item_form,Config Wizard Items,Conf. assistent items,0
+model,"ir.ui.menu,name",menu_cron_form,Scheduled Actions,Geplande acties,0
+model,"ir.ui.menu,name",menu_default_form,Defaults,Standaarden,0
+model,"ir.ui.menu,name",menu_export_form,Exports,Export,0
+model,"ir.ui.menu,name",menu_ir_sequence_type,Sequence Types,Reeks typen,0
+model,"ir.ui.menu,name",menu_lang_form,Languages,Talen,0
+model,"ir.ui.menu,name",menu_localization,Localization,Lokalisatie,0
+model,"ir.ui.menu,name",menu_menu_form,Menus,Menu's,0
+model,"ir.ui.menu,name",menu_model_access_form,Models Access,Toegang tot modellen,0
+model,"ir.ui.menu,name",menu_model_form,Models,Modellen,0
+model,"ir.ui.menu,name",menu_models,Models,Modellen,0
+model,"ir.ui.menu,name",menu_module_form,Modules,Modulen,0
+model,"ir.ui.menu,name",menu_module_install_upgrade,Perform Pending Installation/Upgrade,Voer installatie / bijwerken uit,0
+model,"ir.ui.menu,name",menu_modules,Modules,Modulen,0
+model,"ir.ui.menu,name",menu_property_form,Properties,Eigenschappen,0
+model,"ir.ui.menu,name",menu_property_form_default,Default Properties,Standaard eigenschappen,0
+model,"ir.ui.menu,name",menu_rule_group_form,Record Rules,Item regels,0
+model,"ir.ui.menu,name",menu_scheduler,Scheduler,Planner,0
+model,"ir.ui.menu,name",menu_sequence_form,Sequences,Reeksen,0
+model,"ir.ui.menu,name",menu_sequence_strict_form,Sequences Strict,Vaste reeksen,0
+model,"ir.ui.menu,name",menu_sequences,Sequences,Reeksen,0
+model,"ir.ui.menu,name",menu_translation_clean,Clean Translations,Vertalingen opschonen,0
+model,"ir.ui.menu,name",menu_translation_export,Export Translations,Vertalingen exporteren,0
+model,"ir.ui.menu,name",menu_translation_form,Translations,Vertalingen,0
+model,"ir.ui.menu,name",menu_translation_set_report,Set Report Translations,Vertaling rapport instellen,0
+model,"ir.ui.menu,name",menu_translation_update,Synchronize Translations,Vertaling synchroniseren,0
+model,"ir.ui.menu,name",menu_trigger_form,Triggers,Starters,0
+model,"ir.ui.menu,name",menu_ui,User Interface,Gebruikers omgeving,0
+model,"ir.ui.menu,name",menu_view,Views,Aanzichten,0
+model,"ir.ui.menu,name",menu_view_sc,View Shortcuts,Bekijk sneltoetsen,0
+model,"ir.ui.menu,name",menu_view_tree_width,View Tree Width,Aanzicht boomstructuurbreedte,0
+model,"ir.ui.menu,name",model_model_fields_form,Fields,Velden,0
+model,"ir.ui.view,name",0,View,Overzicht,0
+model,"ir.ui.view_sc,name",0,View shortcut,Bekijk sneltoets,0
+model,"ir.ui.view_tree_width,name",0,View Tree Width,Aanzicht boomstructuurbreedte,0
+selection,"ir.action.act_window,view_type",0,Board,Bord,0
+selection,"ir.action.act_window,view_type",0,Form,Formulier,0
+selection,"ir.action.act_window,view_type",0,Tree,Boomstructuur,0
+selection,"ir.action.keyword,keyword",0,Action form,Actieformulier,0
+selection,"ir.action.keyword,keyword",0,Action tree,Actie boomstructuur,0
+selection,"ir.action.keyword,keyword",0,Form relate,Formulier relatie,0
+selection,"ir.action.keyword,keyword",0,Open Graph,Open een grafiek,0
+selection,"ir.action.keyword,keyword",0,Open tree,Open boomstructuur,0
+selection,"ir.action.keyword,keyword",0,Print form,Formulier afdrukken,0
+selection,"ir.action.report,extension",0,ODT Document,ODT document,0
+selection,"ir.action.report,extension",0,PDF Document,PDF document,0
+selection,"ir.cron,interval_type",0,Days,Dagen,0
+selection,"ir.cron,interval_type",0,Hours,Uren,0
+selection,"ir.cron,interval_type",0,Minutes,Minuten,0
+selection,"ir.cron,interval_type",0,Months,Maanden,0
+selection,"ir.cron,interval_type",0,Weeks,Weken,0
+selection,"ir.cron,interval_type",0,Work Days,Werkdagen,0
+selection,"ir.lang,direction",0,Left-to-right,Van links naar rechts,0
+selection,"ir.lang,direction",0,Right-to-left,Van rechts naar links,0
+selection,"ir.module.module,state",0,Installed,Geïnstalleerd,0
+selection,"ir.module.module,state",0,Not Installed,Niet geïnstalleerd,0
+selection,"ir.module.module,state",0,To be installed,Te installeren,0
+selection,"ir.module.module,state",0,To be removed,Te verwijderen,0
+selection,"ir.module.module,state",0,To be upgraded,Bij te werken,0
+selection,"ir.module.module.config_wizard.item,state",0,Done,Klaar,0
+selection,"ir.module.module.config_wizard.item,state",0,Open,Open,0
+selection,"ir.module.module.dependency,state",0,Installed,Geïnstalleerd,0
+selection,"ir.module.module.dependency,state",0,Not Installed,Niet geïnstalleerd,0
+selection,"ir.module.module.dependency,state",0,To be installed,Te installeren,0
+selection,"ir.module.module.dependency,state",0,To be removed,Te verwijderen,0
+selection,"ir.module.module.dependency,state",0,To be upgraded,Bij te werken,0
+selection,"ir.module.module.dependency,state",0,Unknown,Onbekend,0
+selection,"ir.sequence,type",0,Decimal Timestamp,Tijdmarkering,0
+selection,"ir.sequence,type",0,Hexadecimal Timestamp,Hexadecimale tijdmarkering,0
+selection,"ir.sequence,type",0,Incremental,Oplopend,0
+selection,"ir.sequence.strict,type",0,Decimal Timestamp,Tijdmarkering,0
+selection,"ir.sequence.strict,type",0,Hexadecimal Timestamp,Hexadecimale tijdmarkering,0
+selection,"ir.sequence.strict,type",0,Incremental,Oplopend,0
+selection,"ir.translation,type",0,Error,Fout,0
+selection,"ir.translation,type",0,Field,Veld,0
+selection,"ir.translation,type",0,Help,Help,0
+selection,"ir.translation,type",0,Model,Model,0
+selection,"ir.translation,type",0,ODT,ODT,0
+selection,"ir.translation,type",0,Selection,Selectie,0
+selection,"ir.translation,type",0,View,Aanzicht,0
+selection,"ir.translation,type",0,Wizard Button,Assistent knop,0
+selection,"ir.ui.menu,action",0,ir.action.act_window,,0
+selection,"ir.ui.menu,action",0,ir.action.report,,0
+selection,"ir.ui.menu,action",0,ir.action.url,,0
+selection,"ir.ui.menu,action",0,ir.action.wizard,,0
+selection,"ir.ui.view,type",0,,,0
+selection,"ir.ui.view,type",0,Board,Bord,0
+selection,"ir.ui.view,type",0,Form,Formulier,0
+selection,"ir.ui.view,type",0,Graph,Grafiek,0
+selection,"ir.ui.view,type",0,Tree,Boomstructuur,0
+view,ir.action,0,Action,Actie,0
+view,ir.action,0,General,Algemeen,0
+view,ir.action,0,Keyword,Trefwoord,0
+view,ir.action,0,Keywords,Trefwoorden,0
+view,ir.action.act_window,0,General,Algemeen,0
+view,ir.action.act_window,0,Keyword,Trefwoord,0
+view,ir.action.act_window,0,Keywords,Trefwoorden,0
+view,ir.action.act_window,0,Open Window,Open scherm,0
+view,ir.action.act_window,0,Open a Window,Open een scherm,0
+view,ir.action.act_window,0,Views,Aanzichten,0
+view,ir.action.report,0,General,Algemeen,0
+view,ir.action.report,0,Keyword,Trefwoord,0
+view,ir.action.report,0,Keywords,Trefwoorden,0
+view,ir.action.report,0,Report,Verslag,0
+view,ir.action.report,0,Report xml,Rapportage xml,0
+view,ir.action.url,0,General,Algemeen,0
+view,ir.action.url,0,Keyword,Trefwoord,0
+view,ir.action.url,0,Keywords,Trefwoorden,0
+view,ir.action.url,0,URL,URL,0
+view,ir.action.wizard,0,General,Algemeen,0
+view,ir.action.wizard,0,Keyword,Trefwoord,0
+view,ir.action.wizard,0,Keywords,Trefwoorden,0
+view,ir.action.wizard,0,Wizard,Assistent,0
+view,ir.action.wizard_size,0,Wizard Size,Assistent grote,0
+view,ir.action.wizard_size,0,Wizard Sizes,Assistent groten,0
+view,ir.attachment,0,Attachments,Bijlagen,0
+view,ir.attachment,0,Preview,Voorbeeld,0
+view,ir.cron,0,Action to trigger,Actie om uit te voeren,0
+view,ir.cron,0,Scheduled Action,Geplande actie,0
+view,ir.cron,0,Scheduled Actions,Geplande acties,0
+view,ir.default,0,Default,Standaard,0
+view,ir.default,0,Defaults,Standaarden,0
+view,ir.export,0,Exports,Export,0
+view,ir.lang,0,Date Formatting,Datum format,0
+view,ir.lang,0,Language,Taal,0
+view,ir.lang,0,Languages,Talen,0
+view,ir.lang,0,Numbers Formatting,Getal weergave,0
+view,ir.model,0,Fields Description,Veld omschrijving,0
+view,ir.model,0,Model Description,Model omschrijving,0
+view,ir.model.access,0,Access controls,Toegangcontrole,0
+view,ir.model.field,0,Fields,Velden,0
+view,ir.model.print_model_graph.init,0,Print Model Graph,Grafiek afdrukken,0
+view,ir.module.module,0,Cancel Installation,Installatie annuleren,0
+view,ir.module.module,0,Cancel Uninstallation,Verwijderen ongedaan maken,0
+view,ir.module.module,0,Cancel Upgrade,Bijwerken annuleren,0
+view,ir.module.module,0,Dependencies,Afhankelijkheden,0
+view,ir.module.module,0,Mark for Installation,Selecteer voor installatie,0
+view,ir.module.module,0,Mark for Uninstallation (beta),Selecteer voor verwijderen (beta),0
+view,ir.module.module,0,Mark for Upgrade,Selecteer voor bijwerken,0
+view,ir.module.module,0,Module,Module,0
+view,ir.module.module,0,Modules,Modulen,0
+view,ir.module.module.config_wizard.first,0,Welcome to the module configuration wizard!,Welkom bij de module configuratie assistent!,0
+view,ir.module.module.config_wizard.first,0,You will be able to configure your installation,U kunt uw installatie instellingen maken,0
+view,ir.module.module.config_wizard.first,0,depending on the modules you have installed.,afhankelijk van de geïnstalleerde modules.,0
+view,ir.module.module.config_wizard.item,0,Config Wizard Items,Configuratie assistent items,0
+view,ir.module.module.install_upgrade.init,0,Note that this operation my take a few minutes.,Let op; deze handeling kan een paar minuten duren.,0
+view,ir.module.module.install_upgrade.init,0,System Upgrade,Systeem opwaarderen,0
+view,ir.module.module.install_upgrade.init,0,Your system will be upgraded.,Uw systeem wordt opgewaardeerd.,0
+view,ir.module.module.install_upgrade.start,0,System upgrade done,Systeem opwaarderen klaar,0
+view,ir.module.module.install_upgrade.start,0,The modules have been upgraded / installed !,De modules zijn bijgewerkt / geïnstalleerd!,0
+view,ir.property,0,Properties,Eigenschappen,0
+view,ir.property,0,Property,Eigenschap,0
+view,ir.rule,0,Test,Test,0
+view,ir.rule.group,0,"If there is no test defined, the rule is always satisfied if not global",Als er geen test is gedefinieerd is de regel altijd waar mits niet globaal,0
+view,ir.rule.group,0,Record rules,Item regels,0
+view,ir.rule.group,0,The rule is satisfied if at least one test is True,De regel is waar als tenminste aan één voorwaarde wordt voldaan,0
+view,ir.sequence,0,${day},${dag},0
+view,ir.sequence,0,${month},${maand},0
+view,ir.sequence,0,${year},${jaar},0
+view,ir.sequence,0,Day:,Dag:,0
+view,ir.sequence,0,Incremental,Oplopend,0
+view,ir.sequence,0,"Legend (Placeholders for prefix, suffix)","Legenda (sjabloon voor voorvoegsel, toevoeging)",0
+view,ir.sequence,0,Month:,Maand:,0
+view,ir.sequence,0,Sequences,Reeksen,0
+view,ir.sequence,0,Timestamp,Tijdmarkering,0
+view,ir.sequence,0,Year:,Jaar:,0
+view,ir.sequence.type,0,Sequence Type,Reeks type,0
+view,ir.translation,0,Translations,Vertalingen,0
+view,ir.translation.clean.init,0,Clean Translations,Vertalingen opschonen,0
+view,ir.translation.clean.init,0,Clean Translations?,Vertalingen opschonen?,0
+view,ir.translation.clean.start,0,Clean Translations,Vertalingen opschonen,0
+view,ir.translation.clean.start,0,Clean Translations Succeed!,Vertalingen opschonen gelukt!,0
+view,ir.translation.export.init,0,Export Translation,Vertaling exporteren,0
+view,ir.translation.export.start,0,Export Translation,Vertaling exporteren,0
+view,ir.translation.set_report.init,0,Set Report Translations,Vertaling rapport instellen,0
+view,ir.translation.set_report.init,0,Synchronize Report Translations?,Synchoniseer rapport vertalingen?,0
+view,ir.translation.set_report.start,0,Set Report Translations,Vertaling rapport instellen,0
+view,ir.translation.set_report.start,0,Set Translations Succeed!,Vertaling instellen gelukt!,0
+view,ir.translation.update.init,0,Synchronize Translations,Vertaling synchroniseren,0
+view,ir.trigger,0,Trigger,Starter,0
+view,ir.trigger,0,Triggers,Starters,0
+view,ir.ui.menu,0,Menu,Menu,0
+view,ir.ui.view,0,View,Overzicht,0
+view,ir.ui.view_sc,0,Shortcut,Sneltoets,0
+view,ir.ui.view_tree_width,0,View Tree Width,Aanzicht boomstructuurbreedte,0
+view,ir.ui.view_tree_width,0,Views Tree Width,Aanzichten boomstructuurbreedte,0
+wizard_button,"ir.model.print_model_graph,init,end",0,Cancel,Annuleren,0
+wizard_button,"ir.model.print_model_graph,init,print",0,Print,Afdrukken,0
+wizard_button,"ir.module.module.config_wizard,first,end",0,Cancel,Annuleren,0
+wizard_button,"ir.module.module.config_wizard,first,wizard",0,Ok,Oké,0
+wizard_button,"ir.module.module.install_upgrade,init,end",0,Cancel,Annuleren,0
+wizard_button,"ir.module.module.install_upgrade,init,start",0,Start Upgrade,Start opwaarderen,0
+wizard_button,"ir.module.module.install_upgrade,start,menu",0,Ok,Oké,0
+wizard_button,"ir.translation.clean,init,end",0,Cancel,Annuleren,0
+wizard_button,"ir.translation.clean,init,start",0,Start,Start,0
+wizard_button,"ir.translation.clean,start,end",0,Ok,Oké,0
+wizard_button,"ir.translation.export,init,end",0,Cancel,Annuleren,0
+wizard_button,"ir.translation.export,init,start",0,Start Export,Start exporteren,0
+wizard_button,"ir.translation.export,start,end",0,Close,Sluiten,0
+wizard_button,"ir.translation.set_report,init,end",0,Cancel,Annuleren,0
+wizard_button,"ir.translation.set_report,init,start",0,Start Update,Start bijwerken,0
+wizard_button,"ir.translation.set_report,start,end",0,Ok,Oké,0
+wizard_button,"ir.translation.update,init,end",0,Cancel,Annuleren,0
+wizard_button,"ir.translation.update,init,start",0,Start Update,Start bijwerken,0
diff --git a/trytond/ir/property.xml b/trytond/ir/property.xml
index 1bfba3a..a2a4c8e 100644
--- a/trytond/ir/property.xml
+++ b/trytond/ir/property.xml
@@ -39,7 +39,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Default Properties</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">ir.property</field>
-            <field name="view_type">form</field>
             <field name="domain">[('res','=',False)]</field>
         </record>
         <record model="ir.action.act_window.view"
@@ -60,7 +59,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Properties</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">ir.property</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_property_form_view1">
diff --git a/trytond/ir/rule.py b/trytond/ir/rule.py
index cce6520..9cf62eb 100644
--- a/trytond/ir/rule.py
+++ b/trytond/ir/rule.py
@@ -191,11 +191,8 @@ class Rule(ModelSQL, ModelView):
         with contextlib.nested(Transaction().set_user(0),
                 Transaction().set_context(user=0)):
             for rule in self.browse(ids):
-                operator = rule.operator
-                if operator == '<>':
-                    operator = '!='
                 dom = safe_eval("[('%s', '%s', %s)]" % \
-                        (rule.field.name, operator,
+                        (rule.field.name, rule.operator,
                             operand2query[rule.operand]), {
                                 'user': self.pool.get('res.user').browse(user),
                                 'time': time,
diff --git a/trytond/ir/rule.xml b/trytond/ir/rule.xml
index fd91f6f..5d17fc2 100644
--- a/trytond/ir/rule.xml
+++ b/trytond/ir/rule.xml
@@ -57,7 +57,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_rule_group_form">
             <field name="name">Record Rules</field>
             <field name="res_model">ir.rule.group</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_rule_group_form_view1">
diff --git a/trytond/ir/sequence.xml b/trytond/ir/sequence.xml
index df63ac6..1c0bd9d 100644
--- a/trytond/ir/sequence.xml
+++ b/trytond/ir/sequence.xml
@@ -71,7 +71,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Sequences</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">ir.sequence</field>
-            <field name="view_type">form</field>
             <field name="context">{'active_test': False}</field>
         </record>
         <record model="ir.action.act_window.view"
@@ -111,7 +110,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Sequences Strict</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">ir.sequence.strict</field>
-            <field name="view_type">form</field>
             <field name="context">{'active_test': False}</field>
         </record>
         <record model="ir.action.act_window.view"
@@ -160,7 +158,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Sequence Types</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">ir.sequence.type</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_sequence_type_form_view1">
diff --git a/trytond/ir/time_locale.py b/trytond/ir/time_locale.py
index 5b52d13..94617fb 100644
--- a/trytond/ir/time_locale.py
+++ b/trytond/ir/time_locale.py
@@ -2,7 +2,48 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of')
 #this repository contains the full copyright notices and license terms.')
 TIME_LOCALE = \
-{'cs_CZ': {'%A': [u'Pond\u011bl\xed',
+{'bg_BG': {'%A': [u'\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a',
+                  u'\u0432\u0442\u043e\u0440\u043d\u0438\u043a',
+                  u'\u0441\u0440\u044f\u0434\u0430',
+                  u'\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a',
+                  u'\u043f\u0435\u0442\u044a\u043a',
+                  u'\u0441\u044a\u0431\u043e\u0442\u0430',
+                  u'\u043d\u0435\u0434\u0435\u043b\u044f'],
+           '%B': [None,
+                  u'\u044f\u043d\u0443\u0430\u0440\u0438',
+                  u'\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438',
+                  u'\u043c\u0430\u0440\u0442',
+                  u'\u0430\u043f\u0440\u0438\u043b',
+                  u'\u043c\u0430\u0439',
+                  u'\u044e\u043d\u0438',
+                  u'\u044e\u043b\u0438',
+                  u'\u0430\u0432\u0433\u0443\u0441\u0442',
+                  u'\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438',
+                  u'\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438',
+                  u'\u043d\u043e\u0435\u043c\u0432\u0440\u0438',
+                  u'\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438'],
+           '%a': [u'\u043f\u043d',
+                  u'\u0432\u0442',
+                  u'\u0441\u0440',
+                  u'\u0447\u0442',
+                  u'\u043f\u0442',
+                  u'\u0441\u0431',
+                  u'\u043d\u0434'],
+           '%b': [None,
+                  u'\u044f\u043d\u0443',
+                  u'\u0444\u0435\u0432',
+                  u'\u043c\u0430\u0440',
+                  u'\u0430\u043f\u0440',
+                  u'\u043c\u0430\u0439',
+                  u'\u044e\u043d\u0438',
+                  u'\u044e\u043b\u0438',
+                  u'\u0430\u0432\u0433',
+                  u'\u0441\u0435\u043f',
+                  u'\u043e\u043a\u0442',
+                  u'\u043d\u043e\u0435',
+                  u'\u0434\u0435\u043a'],
+           '%p': [u'', u'']},
+'cs_CZ': {'%A': [u'Pond\u011bl\xed',
                   u'\xdater\xfd',
                   u'St\u0159eda',
                   u'\u010ctvrtek',
diff --git a/trytond/ir/translation.py b/trytond/ir/translation.py
index 5dd7756..ee9277c 100644
--- a/trytond/ir/translation.py
+++ b/trytond/ir/translation.py
@@ -13,12 +13,16 @@ from xml.dom import minidom
 from difflib import SequenceMatcher
 import csv
 import os
+try:
+    from hashlib import md5
+except ImportError:
+    from md5 import md5
 from trytond.model import ModelView, ModelSQL, fields
 from trytond.model.cacheable import Cacheable
 from trytond.wizard import Wizard
 from trytond import tools
 from trytond.tools import file_open, reduce_ids
-from trytond.backend import TableHandler
+from trytond.backend import TableHandler, FIELDS
 from trytond.pyson import PYSONEncoder
 from trytond.transaction import Transaction
 
@@ -52,6 +56,7 @@ class Translation(ModelSQL, ModelView, Cacheable):
     type = fields.Selection(TRANSLATION_TYPE, string='Type',
        required=True)
     src = fields.Text('Source')
+    src_md5 = fields.Char('Source MD5', size=32, required=True)
     value = fields.Text('Translation Value')
     module = fields.Char('Module', readonly=True)
     fuzzy = fields.Boolean('Fuzzy')
@@ -61,8 +66,8 @@ class Translation(ModelSQL, ModelView, Cacheable):
     def __init__(self):
         super(Translation, self).__init__()
         self._sql_constraints += [
-            ('translation_uniq',
-                'UNIQUE (name, res_id, lang, type, src, module)',
+            ('translation_md5_uniq',
+                'UNIQUE (name, res_id, lang, type, src_md5, module)',
                 'Translation must be unique'),
         ]
         self._constraints += [
@@ -74,11 +79,38 @@ class Translation(ModelSQL, ModelView, Cacheable):
         self._max_len = 10240
 
     def init(self, module_name):
+        cursor = Transaction().cursor
+        table = TableHandler(cursor, self, module_name)
+        # Migration from 1.8: new field src_md5
+        src_md5_exist = table.column_exist('src_md5')
+        if not src_md5_exist:
+            table.add_raw_column('src_md5',
+                FIELDS[self.src_md5._type].sql_type(self.src_md5),
+                FIELDS[self.src_md5._type].sql_format, None,
+                self.src_md5.size, string=self.src_md5.string)
+        table.drop_constraint('translation_uniq')
+        table.index_action(['lang', 'type', 'name', 'src'], 'remove')
+
         super(Translation, self).init(module_name)
 
+        # Migration from 1.8: fill new field src_md5
+        if not src_md5_exist:
+            offset = 0
+            limit = cursor.IN_MAX
+            translation_ids = True
+            while translation_ids:
+                translation_ids = self.search([], offset=offset, limit=limit)
+                offset += limit
+                for translation in self.browse(translation_ids):
+                    src_md5 = self.get_src_md5(translation.src)
+                    self.write(translation.id, {
+                        'src_md5': src_md5,
+                    })
+            table = TableHandler(cursor, self, module_name)
+            table.not_null_action('src_md5', action='add')
+
         table = TableHandler(Transaction().cursor, self, module_name)
         table.index_action(['lang', 'type', 'name'], 'add')
-        table.index_action(['lang', 'type', 'name', 'src'], 'add')
 
     def default_fuzzy(self):
         return False
@@ -117,6 +149,9 @@ class Translation(ModelSQL, ModelView, Cacheable):
         res = [(lang.code, lang.name) for lang in langs]
         return res
 
+    def get_src_md5(self, src):
+        return md5((src or '').encode('utf-8')).hexdigest()
+
     def _get_ids(self, name, ttype, lang, ids):
         model_fields_obj = self.pool.get('ir.model.field')
         model_obj = self.pool.get('ir.model')
@@ -391,11 +426,16 @@ class Translation(ModelSQL, ModelView, Cacheable):
                 if fetchone:
                     vals = vals.copy()
                     vals['module'], vals['src'] = fetchone
+        vals = vals.copy()
+        vals['src_md5'] = self.get_src_md5(vals.get('src'))
         return super(Translation, self).create(vals)
 
     def write(self, ids, vals):
         self.clear()
         self.fields_view_get.reset()
+        if 'src' in vals:
+            vals = vals.copy()
+            vals['src_md5'] = self.get_src_md5(vals.get('src'))
         return super(Translation, self).write(ids, vals)
 
     def translation_import(self, lang, module, datas):
@@ -636,8 +676,9 @@ class ReportTranslationSet(Wizard):
 
             odt_content = ''
             if report.report:
-                odt_content = file_open(report.report.replace('/', os.sep),
-                        mode='rb').read()
+                with file_open(report.report.replace('/', os.sep),
+                        mode='rb') as fp:
+                    odt_content = fp.read()
             for content in (report.report_content_data, odt_content):
                 if not content:
                     continue
@@ -957,6 +998,9 @@ class TranslationUpdateInit(ModelView):
     lang = fields.Selection('get_language', string='Language',
         required=True)
 
+    def default_lang(self):
+        return Transaction().context.get('language', False)
+
     def get_language(self):
         lang_obj = self.pool.get('ir.lang')
         lang_ids = lang_obj.search([('translatable', '=', True)])
@@ -1110,6 +1154,9 @@ class TranslationExportInit(ModelView):
     module = fields.Selection('get_module', string='Module',
        required=True)
 
+    def default_lang(self):
+        return Transaction().context.get('language', False)
+
     def get_language(self):
         lang_obj = self.pool.get('ir.lang')
         lang_ids = lang_obj.search([
diff --git a/trytond/ir/translation.xml b/trytond/ir/translation.xml
index 9cecb86..ed6b528 100644
--- a/trytond/ir/translation.xml
+++ b/trytond/ir/translation.xml
@@ -52,7 +52,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_translation_form">
             <field name="name">Translations</field>
             <field name="res_model">ir.translation</field>
-            <field name="view_type">form</field>
             <field name="domain">[('module', '!=', False)]</field>
         </record>
         <record model="ir.action.act_window.view"
diff --git a/trytond/ir/trigger.py b/trytond/ir/trigger.py
index af7a84d..971f29f 100644
--- a/trytond/ir/trigger.py
+++ b/trytond/ir/trigger.py
@@ -41,7 +41,7 @@ class Trigger(ModelSQL, ModelView):
     limit_number = fields.Integer('Limit Number', help='Limit the number of '
             'call to "Action Function" by records.\n'
             '0 for no limit.')
-    minimum_delay = fields.Float('Minimum Delay', help='Set a minimu delay '
+    minimum_delay = fields.Float('Minimum Delay', help='Set a minimum delay '
             'in minutes between call to "Action Function" for the same record.\n'
             '0 for no delay.')
     action_model = fields.Many2One('ir.model', 'Action Model', required=True)
diff --git a/trytond/ir/trigger.xml b/trytond/ir/trigger.xml
index c7dacf1..1c42a6a 100644
--- a/trytond/ir/trigger.xml
+++ b/trytond/ir/trigger.xml
@@ -59,7 +59,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_trigger_form">
             <field name="name">Triggers</field>
             <field name="res_model">ir.trigger</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view" id="act_trigger_form_view1">
             <field name="sequence" eval="10"/>
diff --git a/trytond/ir/ui/__init__.py b/trytond/ir/ui/__init__.py
index f202ab8..8b1589c 100644
--- a/trytond/ir/ui/__init__.py
+++ b/trytond/ir/ui/__init__.py
@@ -2,3 +2,4 @@
 #this repository contains the full copyright notices and license terms.
 from menu import *
 from view import *
+from icon import *
diff --git a/trytond/ir/ui/board.rnc b/trytond/ir/ui/board.rnc
index 19fd9c1..0666280 100644
--- a/trytond/ir/ui/board.rnc
+++ b/trytond/ir/ui/board.rnc
@@ -144,6 +144,5 @@ attlist.xpath &=
   attribute position { "inside" | "replace" | "replace_attributes" | "after" | "before" }?
 action = element action { attlist.action, empty }
 attlist.action &= attribute name { text }
-attlist.action &= [ a:defaultValue = "1" ] attribute colspan { text }?
 label |= notAllowed
 start = data | board | label
diff --git a/trytond/ir/ui/board.rng b/trytond/ir/ui/board.rng
index 06d6850..a0c90e3 100644
--- a/trytond/ir/ui/board.rng
+++ b/trytond/ir/ui/board.rng
@@ -447,11 +447,6 @@
   <define name="attlist.action" combine="interleave">
     <attribute name="name"/>
   </define>
-  <define name="attlist.action" combine="interleave">
-    <optional>
-      <attribute name="colspan" a:defaultValue="1"/>
-    </optional>
-  </define>
   <define name="label" combine="choice">
     <notAllowed/>
   </define>
diff --git a/trytond/ir/ui/form.rnc b/trytond/ir/ui/form.rnc
index ecda2bd..a3c97b8 100644
--- a/trytond/ir/ui/form.rnc
+++ b/trytond/ir/ui/form.rnc
@@ -105,8 +105,6 @@ attlist.field &=
   [ a:defaultValue = "0" ] attribute tree_invisible { "0" | "1" }?
 attlist.field &= attribute mode { text }?
 attlist.field &=
-  [ a:defaultValue = "0" ] attribute completion { "0" | "1" }?
-attlist.field &=
   [ a:defaultValue = "0" ] attribute invisible { "0" | "1" }?
 attlist.field &= attribute sum { text }?
 attlist.field &= attribute key { text }?
@@ -125,6 +123,8 @@ attlist.field &= attribute spell { text }?
 attlist.field &= attribute float_time { text }?
 attlist.field &= attribute img_width { text }?
 attlist.field &= attribute img_height { text }?
+attlist.field &=
+  [a:defaultValue = "0"] attribute filename_visible { "0" | "1" }?
 image = element image { attlist.image, empty }
 attlist.image &= attribute name { text }
 attlist.image &= [ a:defaultValue = "1" ] attribute colspan { text }?
@@ -179,6 +179,7 @@ page =
      | vpaned)*
   }
 attlist.page &= attribute angle { text }?
+attlist.page &= attribute icon { text }?
 attlist.page &=
   [ a:defaultValue = "Unknown" ] attribute string { text }?
 attlist.page &= [ a:defaultValue = "4" ] attribute col { text }?
diff --git a/trytond/ir/ui/form.rng b/trytond/ir/ui/form.rng
index ba1c5c2..8540f19 100644
--- a/trytond/ir/ui/form.rng
+++ b/trytond/ir/ui/form.rng
@@ -371,16 +371,6 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="completion" a:defaultValue="0">
-        <choice>
-          <value>0</value>
-          <value>1</value>
-        </choice>
-      </attribute>
-    </optional>
-  </define>
-  <define name="attlist.field" combine="interleave">
-    <optional>
       <attribute name="invisible" a:defaultValue="0">
         <choice>
           <value>0</value>
@@ -452,6 +442,16 @@
       <attribute name="img_height"/>
     </optional>
   </define>
+  <define name="attlist.field" combine="interleave">
+    <optional>
+      <attribute name="filename_visible" a:defaultValue="0">
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
   <define name="image">
     <element name="image">
       <ref name="attlist.image"/>
@@ -663,6 +663,11 @@
   </define>
   <define name="attlist.page" combine="interleave">
     <optional>
+      <attribute name="icon"/>
+    </optional>
+  </define>
+  <define name="attlist.page" combine="interleave">
+    <optional>
       <attribute name="string" a:defaultValue="Unknown"/>
     </optional>
   </define>
diff --git a/trytond/ir/ui/icon.py b/trytond/ir/ui/icon.py
new file mode 100644
index 0000000..ef64c96
--- /dev/null
+++ b/trytond/ir/ui/icon.py
@@ -0,0 +1,52 @@
+# This file is part of Tryton.  The COPYRIGHT file at the top level of this
+# repository contains the full copyright notices and license terms.
+from __future__ import with_statement
+
+import os
+
+from trytond.model import ModelView, ModelSQL, fields
+from trytond.tools import file_open
+from trytond.transaction import Transaction
+
+
+class Icon(ModelSQL, ModelView):
+    'Icon'
+    _name = 'ir.ui.icon'
+    _description = __doc__
+
+    name = fields.Char('Name', required=True, select=1)
+    module = fields.Char('Module', readonly=True, required=True)
+    path = fields.Char('SVG Path', readonly=True, required=True)
+    icon = fields.Function(fields.Char('Icon', depends=['path']), 'get_icon')
+    sequence = fields.Integer('Sequence')
+
+    def __init__(self):
+        super(Icon, self).__init__()
+        self._order.insert(0, ('sequence', 'ASC'))
+        self._rpc.update({
+            'list_icons': False,
+        })
+
+    def default_module(self):
+        return Transaction().context.get('module') or ''
+
+    def default_sequence(self):
+        return 10
+
+    def list_icons(self):
+        icons = {}
+        for icon in self.browse(self.search([],
+                order=[('sequence', 'ASC'), ('id', 'ASC')])):
+            if icon.name not in icons:
+                icons[icon.name] = icon.id
+        return sorted((icon_id, name) for name, icon_id in icons.iteritems())
+
+    def get_icon(self, ids, name):
+        result = {}
+        for icon in self.browse(ids):
+            path = os.path.join(icon.module, icon.path.replace('/', os.sep))
+            with file_open(path, subdir='modules') as fp:
+                result[icon.id] = fp.read()
+        return result
+
+Icon()
diff --git a/trytond/ir/ui/icon.xml b/trytond/ir/ui/icon.xml
new file mode 100644
index 0000000..636292f
--- /dev/null
+++ b/trytond/ir/ui/icon.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
+     this repository contains the full copyright notices and license terms. -->
+<tryton>
+    <data>
+        <record model="ir.ui.view" id="icon_view_tree">
+            <field name="model">ir.ui.icon</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <tree string="Icons" sequence="sequence">
+                    <field name="name" select="1" icon="name"/>
+                    <field name="module" select="1"/>
+                    <field name="path" select="2"/>
+                    <field name="sequence" tree_invisible="1"/>
+                </tree>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.ui.view" id="icon_view_form">
+            <field name="model">ir.ui.icon</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <form string="Icon">
+                    <label name="name"/>
+                    <field name="name"/>
+                    <label name="sequence"/>
+                    <field name="sequence"/>
+                    <label name="module"/>
+                    <field name="module"/>
+                    <label name="path"/>
+                    <field name="path"/>
+                </form>
+                ]]>
+            </field>
+        </record>
+        <record model="ir.action.act_window" id="act_icon_form">
+            <field name="name">Icons</field>
+            <field name="res_model">ir.ui.icon</field>
+        </record>
+        <record model="ir.action.act_window.view"
+            id="act_icon_form_view1">
+            <field name="sequence" eval="10"/>
+            <field name="view" ref="icon_view_tree"/>
+            <field name="act_window" ref="act_icon_form"/>
+        </record>
+        <record model="ir.action.act_window.view"
+            id="act_icon_form_view2">
+            <field name="sequence" eval="20"/>
+            <field name="view" ref="icon_view_form"/>
+            <field name="act_window" ref="act_icon_form"/>
+        </record>
+        <menuitem parent="menu_ui"
+            action="act_icon_form" id="menu_icon_form"/>
+    </data>
+</tryton>
diff --git a/trytond/ir/ui/icons/LICENSE b/trytond/ir/ui/icons/LICENSE
new file mode 100644
index 0000000..11782c0
--- /dev/null
+++ b/trytond/ir/ui/icons/LICENSE
@@ -0,0 +1,264 @@
+                            [1]Creative Commons
+
+                        Creative Commons Legal Code
+
+                         Attribution-ShareAlike 2.0
+   CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+   LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
+   ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+   INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+   REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
+   DAMAGES RESULTING FROM ITS USE.
+
+   License
+
+   THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS
+   CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS
+   PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE
+   WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS
+   PROHIBITED.
+
+   BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND
+   AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS
+   YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF
+   SUCH TERMS AND CONDITIONS.
+
+   1. Definitions
+    a. "Collective Work" means a work, such as a periodical issue,
+       anthology or encyclopedia, in which the Work in its entirety in
+       unmodified form, along with a number of other contributions,
+       constituting separate and independent works in themselves, are
+       assembled into a collective whole. A work that constitutes a
+       Collective Work will not be considered a Derivative Work (as
+       defined below) for the purposes of this License.
+    b. "Derivative Work" means a work based upon the Work or upon the
+       Work and other pre-existing works, such as a translation, musical
+       arrangement, dramatization, fictionalization, motion picture
+       version, sound recording, art reproduction, abridgment,
+       condensation, or any other form in which the Work may be recast,
+       transformed, or adapted, except that a work that constitutes a
+       Collective Work will not be considered a Derivative Work for the
+       purpose of this License. For the avoidance of doubt, where the
+       Work is a musical composition or sound recording, the
+       synchronization of the Work in timed-relation with a moving image
+       ("synching") will be considered a Derivative Work for the purpose
+       of this License.
+    c. "Licensor" means the individual or entity that offers the Work
+       under the terms of this License.
+    d. "Original Author" means the individual or entity who created the
+       Work.
+    e. "Work" means the copyrightable work of authorship offered under
+       the terms of this License.
+    f. "You" means an individual or entity exercising rights under this
+       License who has not previously violated the terms of this License
+       with respect to the Work, or who has received express permission
+       from the Licensor to exercise rights under this License despite a
+       previous violation.
+    g. "License Elements" means the following high-level license
+       attributes as selected by Licensor and indicated in the title of
+       this License: Attribution, ShareAlike.
+
+   2. Fair Use Rights. Nothing in this license is intended to reduce,
+   limit, or restrict any rights arising from fair use, first sale or
+   other limitations on the exclusive rights of the copyright owner under
+   copyright law or other applicable laws.
+
+   3. License Grant. Subject to the terms and conditions of this License,
+   Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
+   perpetual (for the duration of the applicable copyright) license to
+   exercise the rights in the Work as stated below:
+    a. to reproduce the Work, to incorporate the Work into one or more
+       Collective Works, and to reproduce the Work as incorporated in the
+       Collective Works;
+    b. to create and reproduce Derivative Works;
+    c. to distribute copies or phonorecords of, display publicly, perform
+       publicly, and perform publicly by means of a digital audio
+       transmission the Work including as incorporated in Collective
+       Works;
+    d. to distribute copies or phonorecords of, display publicly, perform
+       publicly, and perform publicly by means of a digital audio
+       transmission Derivative Works.
+    e. For the avoidance of doubt, where the work is a musical
+       composition:
+         i. Performance Royalties Under Blanket Licenses. Licensor waives
+            the exclusive right to collect, whether individually or via a
+            performance rights society (e.g. ASCAP, BMI, SESAC),
+            royalties for the public performance or public digital
+            performance (e.g. webcast) of the Work.
+        ii. Mechanical Rights and Statutory Royalties. Licensor waives
+            the exclusive right to collect, whether individually or via a
+            music rights society or designated agent (e.g. Harry Fox
+            Agency), royalties for any phonorecord You create from the
+            Work ("cover version") and distribute, subject to the
+            compulsory license created by 17 USC Section 115 of the US
+            Copyright Act (or the equivalent in other jurisdictions).
+    f. Webcasting Rights and Statutory Royalties. For the avoidance of
+       doubt, where the Work is a sound recording, Licensor waives the
+       exclusive right to collect, whether individually or via a
+       performance-rights society (e.g. SoundExchange), royalties for the
+       public digital performance (e.g. webcast) of the Work, subject to
+       the compulsory license created by 17 USC Section 114 of the US
+       Copyright Act (or the equivalent in other jurisdictions).
+
+   The above rights may be exercised in all media and formats whether now
+   known or hereafter devised. The above rights include the right to make
+   such modifications as are technically necessary to exercise the rights
+   in other media and formats. All rights not expressly granted by
+   Licensor are hereby reserved.
+
+   4. Restrictions.The license granted in Section 3 above is expressly
+   made subject to and limited by the following restrictions:
+    a. You may distribute, publicly display, publicly perform, or
+       publicly digitally perform the Work only under the terms of this
+       License, and You must include a copy of, or the Uniform Resource
+       Identifier for, this License with every copy or phonorecord of the
+       Work You distribute, publicly display, publicly perform, or
+       publicly digitally perform. You may not offer or impose any terms
+       on the Work that alter or restrict the terms of this License or
+       the recipients' exercise of the rights granted hereunder. You may
+       not sublicense the Work. You must keep intact all notices that
+       refer to this License and to the disclaimer of warranties. You may
+       not distribute, publicly display, publicly perform, or publicly
+       digitally perform the Work with any technological measures that
+       control access or use of the Work in a manner inconsistent with
+       the terms of this License Agreement. The above applies to the Work
+       as incorporated in a Collective Work, but this does not require
+       the Collective Work apart from the Work itself to be made subject
+       to the terms of this License. If You create a Collective Work,
+       upon notice from any Licensor You must, to the extent practicable,
+       remove from the Collective Work any reference to such Licensor or
+       the Original Author, as requested. If You create a Derivative
+       Work, upon notice from any Licensor You must, to the extent
+       practicable, remove from the Derivative Work any reference to such
+       Licensor or the Original Author, as requested.
+    b. You may distribute, publicly display, publicly perform, or
+       publicly digitally perform a Derivative Work only under the terms
+       of this License, a later version of this License with the same
+       License Elements as this License, or a Creative Commons iCommons
+       license that contains the same License Elements as this License
+       (e.g. Attribution-ShareAlike 2.0 Japan). You must include a copy
+       of, or the Uniform Resource Identifier for, this License or other
+       license specified in the previous sentence with every copy or
+       phonorecord of each Derivative Work You distribute, publicly
+       display, publicly perform, or publicly digitally perform. You may
+       not offer or impose any terms on the Derivative Works that alter
+       or restrict the terms of this License or the recipients' exercise
+       of the rights granted hereunder, and You must keep intact all
+       notices that refer to this License and to the disclaimer of
+       warranties. You may not distribute, publicly display, publicly
+       perform, or publicly digitally perform the Derivative Work with
+       any technological measures that control access or use of the Work
+       in a manner inconsistent with the terms of this License Agreement.
+       The above applies to the Derivative Work as incorporated in a
+       Collective Work, but this does not require the Collective Work
+       apart from the Derivative Work itself to be made subject to the
+       terms of this License.
+    c. If you distribute, publicly display, publicly perform, or publicly
+       digitally perform the Work or any Derivative Works or Collective
+       Works, You must keep intact all copyright notices for the Work and
+       give the Original Author credit reasonable to the medium or means
+       You are utilizing by conveying the name (or pseudonym if
+       applicable) of the Original Author if supplied; the title of the
+       Work if supplied; to the extent reasonably practicable, the
+       Uniform Resource Identifier, if any, that Licensor specifies to be
+       associated with the Work, unless such URI does not refer to the
+       copyright notice or licensing information for the Work; and in the
+       case of a Derivative Work, a credit identifying the use of the
+       Work in the Derivative Work (e.g., "French translation of the Work
+       by Original Author," or "Screenplay based on original Work by
+       Original Author"). Such credit may be implemented in any
+       reasonable manner; provided, however, that in the case of a
+       Derivative Work or Collective Work, at a minimum such credit will
+       appear where any other comparable authorship credit appears and in
+       a manner at least as prominent as such other comparable authorship
+       credit.
+
+   5. Representations, Warranties and Disclaimer
+
+   UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS
+   THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
+   CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
+   INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
+   FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
+   LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF
+   ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW
+   THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY
+   TO YOU.
+
+   6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY
+   APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY
+   LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR
+   EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK,
+   EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+   7. Termination
+    a. This License and the rights granted hereunder will terminate
+       automatically upon any breach by You of the terms of this License.
+       Individuals or entities who have received Derivative Works or
+       Collective Works from You under this License, however, will not
+       have their licenses terminated provided such individuals or
+       entities remain in full compliance with those licenses. Sections
+       1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+    b. Subject to the above terms and conditions, the license granted
+       here is perpetual (for the duration of the applicable copyright in
+       the Work). Notwithstanding the above, Licensor reserves the right
+       to release the Work under different license terms or to stop
+       distributing the Work at any time; provided, however that any such
+       election will not serve to withdraw this License (or any other
+       license that has been, or is required to be, granted under the
+       terms of this License), and this License will continue in full
+       force and effect unless terminated as stated above.
+
+   8. Miscellaneous
+    a. Each time You distribute or publicly digitally perform the Work or
+       a Collective Work, the Licensor offers to the recipient a license
+       to the Work on the same terms and conditions as the license
+       granted to You under this License.
+    b. Each time You distribute or publicly digitally perform a
+       Derivative Work, Licensor offers to the recipient a license to the
+       original Work on the same terms and conditions as the license
+       granted to You under this License.
+    c. If any provision of this License is invalid or unenforceable under
+       applicable law, it shall not affect the validity or enforceability
+       of the remainder of the terms of this License, and without further
+       action by the parties to this agreement, such provision shall be
+       reformed to the minimum extent necessary to make such provision
+       valid and enforceable.
+    d. No term or provision of this License shall be deemed waived and no
+       breach consented to unless such waiver or consent shall be in
+       writing and signed by the party to be charged with such waiver or
+       consent.
+    e. This License constitutes the entire agreement between the parties
+       with respect to the Work licensed here. There are no
+       understandings, agreements or representations with respect to the
+       Work not specified here. Licensor shall not be bound by any
+       additional provisions that may appear in any communication from
+       You. This License may not be modified without the mutual written
+       agreement of the Licensor and You.
+
+   Creative Commons is not a party to this License, and makes no warranty
+   whatsoever in connection with the Work. Creative Commons will not be
+   liable to You or any party on any legal theory for any damages
+   whatsoever, including without limitation any general, special,
+   incidental or consequential damages arising in connection to this
+   license. Notwithstanding the foregoing two (2) sentences, if Creative
+   Commons has expressly identified itself as the Licensor hereunder, it
+   shall have all rights and obligations of Licensor.
+
+   Except for the limited purpose of indicating to the public that the
+   Work is licensed under the CCPL, neither party will use the trademark
+   "Creative Commons" or any related trademark or logo of Creative
+   Commons without the prior written consent of Creative Commons. Any
+   permitted use will be in compliance with Creative Commons'
+   then-current trademark usage guidelines, as may be published on its
+   website or otherwise made available upon request from time to time.
+
+   Creative Commons may be contacted at [2]http://creativecommons.org/.
+
+                                                [3]« Back to Commons Deed
+
+References
+
+   1. http://creativecommons.org/
+   2. http://creativecommons.org/
+   3. http://creativecommons.org/licenses/by-sa/2.0/
diff --git a/trytond/ir/ui/icons/tryton-calendar.svg b/trytond/ir/ui/icons/tryton-calendar.svg
new file mode 100644
index 0000000..fb05f73
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-calendar.svg
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="office-calendar.svg"
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/apps"
+   inkscape:version="0.43+devel"
+   sodipodi:version="0.32"
+   id="svg1288"
+   height="48px"
+   width="48px">
+  <defs
+     id="defs3">
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6719"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6717"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient6715"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       id="linearGradient2563">
+      <stop
+         id="stop2565"
+         offset="0"
+         style="stop-color:#e2e2e2;stop-opacity:1;" />
+      <stop
+         id="stop2567"
+         offset="1.0000000"
+         style="stop-color:#9f9f9f;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2551"
+       inkscape:collect="always">
+      <stop
+         id="stop2553"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop2555"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2526">
+      <stop
+         id="stop2528"
+         offset="0.0000000"
+         style="stop-color:#e7ebeb;stop-opacity:1.0000000;" />
+      <stop
+         style="stop-color:#e6ebeb;stop-opacity:1.0000000;"
+         offset="0.50000000"
+         id="stop2534" />
+      <stop
+         id="stop2530"
+         offset="1.0000000"
+         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(0.000000,0.785718)"
+       gradientUnits="userSpaceOnUse"
+       y2="28.428572"
+       x2="42.214283"
+       y1="14.428571"
+       x1="13.357142"
+       id="linearGradient2532"
+       xlink:href="#linearGradient2526"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.751938,1.196962e-16,7.193799)"
+       r="18.428572"
+       fy="29.000000"
+       fx="26.000000"
+       cy="29.000000"
+       cx="26.000000"
+       id="radialGradient2557"
+       xlink:href="#linearGradient2551"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="translate(0.000000,0.785718)"
+       gradientUnits="userSpaceOnUse"
+       y2="30.785713"
+       x2="42.214284"
+       y1="30.785713"
+       x1="6.7857148"
+       id="linearGradient2569"
+       xlink:href="#linearGradient2563"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="28.428572"
+       x2="42.214283"
+       y1="14.428571"
+       x1="13.357142"
+       gradientTransform="translate(2.045771e-15,0.785718)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2582"
+       xlink:href="#linearGradient2526"
+       inkscape:collect="always" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-y="393"
+     inkscape:window-x="713"
+     inkscape:window-height="701"
+     inkscape:window-width="872"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     showgrid="false"
+     inkscape:current-layer="layer1"
+     inkscape:cy="24.165113"
+     inkscape:cx="25.369574"
+     inkscape:zoom="1"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Calendar</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>calendar</rdf:li>
+            <rdf:li>date</rdf:li>
+            <rdf:li>time</rdf:li>
+            <rdf:li>cal</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by/2.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     id="layer1">
+    <g
+       transform="matrix(2.294847e-2,0,0,2.276812e-2,44.75587,36.74254)"
+       id="g6707">
+      <rect
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="rect6709"
+         width="1339.6335"
+         height="478.35718"
+         x="-1559.2523"
+         y="-150.69685" />
+      <path
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+         id="path6711"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path6713"
+         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccccc"
+       id="path1316"
+       d="M 4.8571430,38.428571 C 4.6428572,39.428571 5.4642859,40.464285 6.8214287,40.428571 L 43.000000,40.428571 C 44.285714,40.392857 44.714286,39.214285 44.428572,38.249999 L 36.571429,9.4285713 L 10.571429,9.4285713 L 4.8571430,38.428571 z "
+       style="fill:#a7a7a7;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#656565;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+    <path
+       sodipodi:nodetypes="ccccccccc"
+       id="path2575"
+       d="M 9.1625040,30.806458 L 39.395095,30.806458 C 40.252297,30.806458 40.942392,31.478744 40.942392,32.313825 L 42.269580,37.114760 C 42.269580,37.949841 41.579486,38.622127 40.722283,38.622127 L 8.2777114,38.622127 C 7.4205088,38.622127 6.7304142,37.949841 6.7304142,37.114760 L 7.6152068,32.313825 C 7.6152068,31.478744 8.3053014,30.806458 9.1625040,30.806458 z "
+       style="opacity:0.10857142;color:#000000;fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans" />
+    <path
+       style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999970px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.34463277"
+       d="M 6.0478436,37.805569 C 5.8479823,38.738255 5.6491963,39.385227 6.5227626,39.385227 L 42.837439,39.385227 C 43.753496,39.385227 43.579187,38.645537 43.312705,37.746161 L 35.770172,10.471961 L 11.520336,10.471961 L 6.0478436,37.805569 z "
+       id="path2520"
+       sodipodi:nodetypes="ccccccc" />
+    <path
+       style="opacity:1.0000000;color:#000000;fill:#c5c5c5;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#696969;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+       d="M 9.6418018,29.928574 L 38.929626,29.928574 C 39.760041,29.928574 40.428570,30.579851 40.428570,31.388835 L 41.714284,36.039742 C 41.714284,36.848726 41.045755,37.500003 40.215340,37.500003 L 8.7846589,37.500003 C 7.9542438,37.500003 7.2857146,36.848726 7.2857146,36.039742 L 8.1428575,31.388835 C 8.1428575,30.579851 8.8113867,29.928574 9.6418018,29.928574 z "
+       id="path2518"
+       sodipodi:nodetypes="ccccccccc" />
+    <path
+       sodipodi:nodetypes="ccccccccc"
+       id="rect2225"
+       d="M 9.6418018,27.785717 L 38.929626,27.785717 C 39.760041,27.785717 40.428570,28.436994 40.428570,29.245978 L 41.714284,33.896885 C 41.714284,34.705869 41.045755,35.357146 40.215340,35.357146 L 8.7846589,35.357146 C 7.9542438,35.357146 7.2857146,34.705869 7.2857146,33.896885 L 8.1428575,29.245978 C 8.1428575,28.436994 8.8113867,27.785717 9.6418018,27.785717 z "
+       style="color:#000000;fill:url(#linearGradient2569);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#696969;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+    <g
+       transform="matrix(0.942549,0.000000,0.000000,0.942549,-0.222619,1.855860)"
+       id="g2578">
+      <path
+         style="fill:url(#linearGradient2582);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#696969;stroke-width:1.0609524px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+         d="M 10.891973,11.500004 L 6.5714281,33.214290 C 6.5714281,33.214290 32.857143,33.214291 32.857143,33.214291 C 45.441975,33.214291 48.085306,29.214290 48.085306,29.214290 C 48.085306,29.214290 44.728164,28.035719 43.299593,23.071433 C 43.299593,23.071433 40.238640,11.500004 40.238640,11.500004 L 10.891973,11.500004 z "
+         id="path2524"
+         sodipodi:nodetypes="cczczcc" />
+      <path
+         sodipodi:nodetypes="cccczcc"
+         id="path2571"
+         d="M 11.803734,12.474609 L 7.8122567,32.239668 C 7.8122567,32.239668 24.956518,32.239669 32.238382,32.239669 C 43.465021,32.239669 46.348811,29.388804 46.348811,29.388804 C 46.348811,29.388804 43.355751,27.525962 42.055419,23.007305 C 42.055419,23.007305 39.316856,12.546038 39.316856,12.546038 L 11.803734,12.474609 z "
+         style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0609519px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccccccc"
+       id="rect2522"
+       d="M 11.315699,7.4285707 L 36.494515,7.4285707 C 37.367632,7.4285707 38.070539,8.0973414 38.070539,8.9280566 L 38.427682,11.071942 C 38.427682,11.902657 37.724775,12.571428 36.851658,12.571428 L 10.958556,12.571428 C 10.085439,12.571428 9.3825323,11.902657 9.3825323,11.071942 L 9.7396752,8.9280566 C 9.7396752,8.0973414 10.442582,7.4285707 11.315699,7.4285707 z "
+       style="color:#000000;fill:#9b9b9b;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#696969;stroke-width:0.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" />
+    <path
+       id="text2541"
+       d="M 20.969159,22.393020 C 21.957574,22.486777 22.691543,22.765423 23.171063,23.228961 C 23.651181,23.687301 23.849054,24.273239 23.764680,24.986779 C 23.640870,26.033659 23.075908,26.877412 22.069796,27.518037 C 21.063667,28.158665 19.762256,28.478977 18.165559,28.478978 C 16.939741,28.478977 15.906445,28.286269 15.065668,27.900851 L 15.305880,25.869594 C 16.189321,26.478973 17.193659,26.783661 18.318897,26.783660 C 19.217824,26.783661 19.926554,26.637828 20.445092,26.346159 C 20.964233,26.049284 21.255527,25.632617 21.318975,25.096154 C 21.385488,24.533656 21.176411,24.122197 20.691744,23.861775 C 20.207063,23.601362 19.398966,23.471154 18.267450,23.471149 L 16.994488,23.471149 L 17.201440,21.721144 L 18.559266,21.721144 C 19.451905,21.721150 20.149975,21.585733 20.653477,21.314892 C 21.157582,21.038857 21.439509,20.648231 21.499262,20.143013 C 21.555304,19.669062 21.408536,19.288853 21.058960,19.002385 C 20.709369,18.715935 20.154261,18.572705 19.393634,18.572696 C 18.431836,18.572705 17.490216,18.853956 16.568772,19.416448 L 16.798822,17.471130 C 17.831208,17.033639 18.988597,16.814889 20.270993,16.814878 C 21.509374,16.814889 22.459536,17.072702 23.121484,17.588317 C 23.789700,18.103954 24.076386,18.762810 23.981543,19.564886 C 23.893455,20.309689 23.598230,20.919065 23.095869,21.393017 C 22.594104,21.861775 21.885201,22.195109 20.969159,22.393020"
+       style="font-size:17.577877;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:100.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Segoe" />
+    <path
+       id="text2545"
+       d="M 33.007379,28.455540 L 30.499173,28.455540 L 29.387875,19.096134 L 26.295373,19.893012 L 26.086657,18.135194 L 31.627997,16.838314 L 33.007379,28.455540"
+       style="font-size:17.577877;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:100.00000%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Segoe" />
+    <path
+       transform="matrix(0.684211,0.000000,0.000000,0.684211,3.560154,2.278197)"
+       d="M 12.857143 9.9285717 A 1.3571428 1.3571428 0 1 1  10.142857,9.9285717 A 1.3571428 1.3571428 0 1 1  12.857143 9.9285717 z"
+       sodipodi:ry="1.3571428"
+       sodipodi:rx="1.3571428"
+       sodipodi:cy="9.9285717"
+       sodipodi:cx="11.500000"
+       id="path2559"
+       style="opacity:0.52571428;color:#000000;fill:#fefefe;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:nodetypes="cc"
+       id="path2561"
+       d="M 13.042053,8.6010151 L 36.371309,8.6010151"
+       style="opacity:0.30285713;fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0000001px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1.0000000" />
+  </g>
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-clock.svg b/trytond/ir/ui/icons/tryton-clock.svg
new file mode 100644
index 0000000..30a6173
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-clock.svg
@@ -0,0 +1,418 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   inkscape:export-ydpi="90.000000"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
+   width="48px"
+   height="48px"
+   id="svg11300"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docbase="/home/tigert/cvs/freedesktop.org/tango-icon-theme/scalable/actions"
+   sodipodi:docname="tryton-clock.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs3">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective2667" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5204">
+      <stop
+         style="stop-color:#c4a000;stop-opacity:1;"
+         offset="0"
+         id="stop5206" />
+      <stop
+         style="stop-color:#c4a000;stop-opacity:0;"
+         offset="1"
+         id="stop5208" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5196">
+      <stop
+         style="stop-color:#c4a000;stop-opacity:1;"
+         offset="0"
+         id="stop5198" />
+      <stop
+         style="stop-color:#c4a000;stop-opacity:0;"
+         offset="1"
+         id="stop5200" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient12512">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop12513" />
+      <stop
+         style="stop-color:#fff520;stop-opacity:0.89108908;"
+         offset="0.50000000"
+         id="stop12517" />
+      <stop
+         style="stop-color:#fff300;stop-opacity:0.0000000;"
+         offset="1.0000000"
+         id="stop12514" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient12512"
+       id="radialGradient278"
+       gradientUnits="userSpaceOnUse"
+       cx="55.000000"
+       cy="125.00000"
+       fx="55.000000"
+       fy="125.00000"
+       r="14.375000" />
+    <linearGradient
+       id="linearGradient10653">
+      <stop
+         style="stop-color:#f3f4ff;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop10655" />
+      <stop
+         style="stop-color:#9193af;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop10657" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient42174">
+      <stop
+         style="stop-color:#a0a0a0;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop42176" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop42178" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2145">
+      <stop
+         style="stop-color:#fffffd;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop2147" />
+      <stop
+         style="stop-color:#cbcbc9;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop2149" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient37935">
+      <stop
+         id="stop37937"
+         offset="0.0000000"
+         style="stop-color:#9497b3;stop-opacity:1.0000000;" />
+      <stop
+         id="stop37939"
+         offset="1.0000000"
+         style="stop-color:#4c4059;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2152">
+      <stop
+         id="stop2154"
+         offset="0.0000000"
+         style="stop-color:#9aa29a;stop-opacity:1.0000000;" />
+      <stop
+         id="stop2156"
+         offset="1.0000000"
+         style="stop-color:#b5beb5;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3816">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop3820" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3816"
+       id="radialGradient3822"
+       cx="31.112698"
+       cy="19.008621"
+       fx="31.112698"
+       fy="19.008621"
+       r="8.6620579"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2152"
+       id="linearGradient4307"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.123841,0.000000,0.000000,0.969691,-31.88758,-19.59492)"
+       x1="8.9156475"
+       y1="37.197018"
+       x2="9.8855033"
+       y2="52.090678" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10653"
+       id="radialGradient4309"
+       gradientUnits="userSpaceOnUse"
+       cx="11.329200"
+       cy="10.583970"
+       fx="11.329200"
+       fy="10.583970"
+       r="15.532059" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2145"
+       id="radialGradient4311"
+       gradientUnits="userSpaceOnUse"
+       cx="11.901996"
+       cy="10.045444"
+       fx="11.901996"
+       fy="10.045444"
+       r="29.292715" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient42174"
+       id="linearGradient4313"
+       gradientUnits="userSpaceOnUse"
+       x1="6.3422160"
+       y1="7.7893324"
+       x2="22.218424"
+       y2="25.884274" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5196"
+       id="radialGradient5202"
+       cx="23.375"
+       cy="10.972863"
+       fx="23.375"
+       fy="10.972863"
+       r="3.3478092"
+       gradientTransform="matrix(3.630420,1.654030e-15,-1.608743e-15,3.742066,-61.48607,-29.18618)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5204"
+       id="linearGradient5210"
+       x1="19.667364"
+       y1="4.2570662"
+       x2="20.329933"
+       y2="5.2845874"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient37935"
+       id="radialGradient5212"
+       gradientUnits="userSpaceOnUse"
+       cx="8.7468252"
+       cy="6.8283234"
+       fx="8.7468252"
+       fy="6.8283234"
+       r="29.889715" />
+  </defs>
+  <sodipodi:namedview
+     stroke="#c4a000"
+     fill="#babdb6"
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="0.25490196"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313708"
+     inkscape:cx="27.543713"
+     inkscape:cy="25.106052"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:showpageshadow="false"
+     inkscape:window-width="1278"
+     inkscape:window-height="782"
+     inkscape:window-x="0"
+     inkscape:window-y="16" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+        <dc:title>New Appointment</dc:title>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>appointment</rdf:li>
+            <rdf:li>new</rdf:li>
+            <rdf:li>meeting</rdf:li>
+            <rdf:li>rvsp</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <path
+       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.45064,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
+       sodipodi:ry="8.6620579"
+       sodipodi:rx="8.6620579"
+       sodipodi:cy="19.008621"
+       sodipodi:cx="31.112698"
+       id="path4318"
+       style="opacity:1;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       sodipodi:type="arc"
+       transform="matrix(2.563158,0.000000,0.000000,1.219602,-55.98414,14.04144)" />
+    <path
+       sodipodi:nodetypes="cccc"
+       id="path14341"
+       d="M 18.587591,1.403729 L 4.226755,18.096665 L 5.4854717,19.339844 L 18.587591,1.403729 z "
+       style="color:#000000;fill:url(#linearGradient4307);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    <path
+       sodipodi:nodetypes="cccc"
+       id="path18921"
+       d="M 18.467176,1.3138035 L 5.6605716,19.072612 L 7.4900985,20.687913 L 18.467176,1.3138035 z "
+       style="fill:#fefefe;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
+    <path
+       transform="matrix(1.431529,0.000000,0.000000,1.431529,0.569459,-1.654618)"
+       d="M 31.160714 16.910715 A 14.910714 14.910714 0 1 1  1.3392859,16.910715 A 14.910714 14.910714 0 1 1  31.160714 16.910715 z"
+       sodipodi:ry="14.910714"
+       sodipodi:rx="14.910714"
+       sodipodi:cy="16.910715"
+       sodipodi:cx="16.25"
+       id="path27786"
+       style="fill:url(#radialGradient5212);fill-opacity:1;fill-rule:evenodd;stroke:#605773;stroke-width:0.69855404;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(1.163838,0.000000,0.000000,1.163838,4.824801,2.777556)"
+       d="M 31.160714 16.910715 A 14.910714 14.910714 0 1 1  1.3392859,16.910715 A 14.910714 14.910714 0 1 1  31.160714 16.910715 z"
+       sodipodi:ry="14.910714"
+       sodipodi:rx="14.910714"
+       sodipodi:cy="16.910715"
+       sodipodi:cx="16.25"
+       id="path35549"
+       style="fill:url(#radialGradient4311);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4313);stroke-width:0.71139598;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:url(#radialGradient5202);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5210);stroke-width:0.56498736;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path4120"
+       sodipodi:cx="23.375"
+       sodipodi:cy="11.875"
+       sodipodi:rx="8.5"
+       sodipodi:ry="8.5"
+       d="M 16.679382,6.6387137 A 8.5,8.5 0 0 1 23.332691,3.3751053 L 23.375,11.875 z"
+       transform="matrix(1.769951,0.000000,0.000000,1.769951,-17.02424,1.610741)"
+       sodipodi:start="3.8052902"
+       sodipodi:end="4.7074114" />
+    <path
+       transform="matrix(2.073295,0.000000,0.000000,2.073295,-7.310224,-13.13682)"
+       d="M 16.40625 17.28125 A 1.21875 1.21875 0 1 1  13.96875,17.28125 A 1.21875 1.21875 0 1 1  16.40625 17.28125 z"
+       sodipodi:ry="1.21875"
+       sodipodi:rx="1.21875"
+       sodipodi:cy="17.28125"
+       sodipodi:cx="15.1875"
+       id="path34778"
+       style="fill:#f3f3f3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.48232403;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;stroke-dasharray:none"
+       sodipodi:type="arc" />
+    <path
+       id="path35559"
+       d="M 22.176614,20.718014 L 13.155702,13.140282"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    <path
+       id="path35561"
+       d="M 19.408614,29.776506 L 22.368655,25.283228"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       sodipodi:nodetypes="cc" />
+    <path
+       transform="matrix(2.749493,0.000000,0.000000,2.749493,-22.30073,-12.40939)"
+       d="M 17.324117 7.6932044 A 0.61871845 0.61871845 0 1 1  16.08668,7.6932044 A 0.61871845 0.61871845 0 1 1  17.324117 7.6932044 z"
+       sodipodi:ry="0.61871845"
+       sodipodi:rx="0.61871845"
+       sodipodi:cy="7.6932044"
+       sodipodi:cx="16.705399"
+       id="path35563"
+       style="fill:#b6b9b1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.36871839;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(2.749493,0.000000,0.000000,2.749493,-22.30073,14.80922)"
+       d="M 17.324117 7.6932044 A 0.61871845 0.61871845 0 1 1  16.08668,7.6932044 A 0.61871845 0.61871845 0 1 1  17.324117 7.6932044 z"
+       sodipodi:ry="0.61871845"
+       sodipodi:rx="0.61871845"
+       sodipodi:cy="7.6932044"
+       sodipodi:cx="16.705399"
+       id="path35565"
+       style="fill:#b6b9b1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.36871839;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(2.749493,0.000000,0.000000,2.749493,-35.91004,1.199890)"
+       d="M 17.324117 7.6932044 A 0.61871845 0.61871845 0 1 1  16.08668,7.6932044 A 0.61871845 0.61871845 0 1 1  17.324117 7.6932044 z"
+       sodipodi:ry="0.61871845"
+       sodipodi:rx="0.61871845"
+       sodipodi:cy="7.6932044"
+       sodipodi:cx="16.705399"
+       id="path35567"
+       style="fill:#b6b9b1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.36871839;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(2.749493,0.000000,0.000000,2.749493,-8.691448,1.199890)"
+       d="M 17.324117 7.6932044 A 0.61871845 0.61871845 0 1 1  16.08668,7.6932044 A 0.61871845 0.61871845 0 1 1  17.324117 7.6932044 z"
+       sodipodi:ry="0.61871845"
+       sodipodi:rx="0.61871845"
+       sodipodi:cy="7.6932044"
+       sodipodi:cx="16.705399"
+       id="path35569"
+       style="fill:#b6b9b1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.36871839;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;opacity:1"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient4309);stroke-width:0.73656511;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       id="path10651"
+       sodipodi:cx="16.25"
+       sodipodi:cy="16.910715"
+       sodipodi:rx="14.910714"
+       sodipodi:ry="14.910714"
+       d="M 31.160714 16.910715 A 14.910714 14.910714 0 1 1  1.3392859,16.910715 A 14.910714 14.910714 0 1 1  31.160714 16.910715 z"
+       transform="matrix(1.357654,0.000000,0.000000,1.357654,1.769896,-0.493735)" />
+  </g>
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-graph.svg b/trytond/ir/ui/icons/tryton-graph.svg
new file mode 100644
index 0000000..720ea0e
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-graph.svg
@@ -0,0 +1,637 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="tryton-graph.svg"
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/mimetypes"
+   inkscape:version="0.46"
+   sodipodi:version="0.32"
+   id="svg13684"
+   height="48.000000px"
+   width="48.000000px"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs3">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective4705" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6719"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6717"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient6715"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6687"
+       id="linearGradient6746"
+       gradientUnits="userSpaceOnUse"
+       x1="-20.750000"
+       y1="29.000000"
+       x2="-19.500000"
+       y2="18.750000" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6687">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop6689" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop6691" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6687"
+       id="linearGradient6744"
+       gradientUnits="userSpaceOnUse"
+       x1="-20.750000"
+       y1="29.000000"
+       x2="-19.500000"
+       y2="18.750000" />
+    <linearGradient
+       id="linearGradient6719">
+      <stop
+         style="stop-color:#73d216;stop-opacity:1;"
+         offset="0"
+         id="stop6721" />
+      <stop
+         style="stop-color:#d5f7b3;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6723" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6719"
+       id="linearGradient6742"
+       gradientUnits="userSpaceOnUse"
+       x1="-17.863041"
+       y1="30.827509"
+       x2="-20.821646"
+       y2="25.015009" />
+    <linearGradient
+       id="linearGradient6711">
+      <stop
+         style="stop-color:#5b8ccb;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop6713" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6715" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6711"
+       id="linearGradient6740"
+       gradientUnits="userSpaceOnUse"
+       x1="-16.387411"
+       y1="24.453547"
+       x2="-9.7352734"
+       y2="28.195539" />
+    <linearGradient
+       id="linearGradient6699">
+      <stop
+         style="stop-color:#ff7171;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop6701" />
+      <stop
+         style="stop-color:#cc0000;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6703" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6699"
+       id="linearGradient6738"
+       gradientUnits="userSpaceOnUse"
+       x1="-22.976406"
+       y1="18.516047"
+       x2="-14.360273"
+       y2="33.016045" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4542">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4544" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop4546" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4542"
+       id="radialGradient4548"
+       cx="24.306795"
+       cy="42.07798"
+       fx="24.306795"
+       fy="42.07798"
+       r="15.821514"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.284916,-2.846681e-15,30.08928)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2456">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop2458" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop2460" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient269">
+      <stop
+         id="stop270"
+         offset="0.0000000"
+         style="stop-color:#a3a3a3;stop-opacity:1.0000000;" />
+      <stop
+         id="stop271"
+         offset="1.0000000"
+         style="stop-color:#4c4c4c;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient269"
+       id="radialGradient15656"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.971646,0.000000,0.000000,1.034707,3.240408,0.495684)"
+       cx="8.8244190"
+       cy="3.7561285"
+       fx="8.8244190"
+       fy="3.7561285"
+       r="37.751713" />
+    <linearGradient
+       id="linearGradient259">
+      <stop
+         id="stop260"
+         offset="0.0000000"
+         style="stop-color:#fafafa;stop-opacity:1.0000000;" />
+      <stop
+         id="stop261"
+         offset="1.0000000"
+         style="stop-color:#bbbbbb;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient259"
+       id="radialGradient15658"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.963839,0.000000,0.000000,1.043088,-0.124825,-0.151970)"
+       cx="33.966679"
+       cy="35.736916"
+       fx="33.966679"
+       fy="35.736916"
+       r="86.708450" />
+    <linearGradient
+       id="linearGradient15662">
+      <stop
+         id="stop15664"
+         offset="0.0000000"
+         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
+      <stop
+         id="stop15666"
+         offset="1.0000000"
+         style="stop-color:#f8f8f8;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15662"
+       id="radialGradient15668"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.974777,0.000000,0.000000,1.034091,3.161873,0.559274)"
+       cx="8.1435566"
+       cy="7.2678967"
+       fx="8.1435566"
+       fy="7.2678967"
+       r="38.158695" />
+    <linearGradient
+       y2="99.2984"
+       x2="118.302"
+       y1="82.0938"
+       x1="97.2412"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd13">
+      <stop
+         id="stop12995"
+         style="stop-color:#E8F066"
+         offset="0" />
+      <stop
+         id="stop12997"
+         style="stop-color:#949941"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="100.6528"
+       x2="115.5175"
+       y1="89.1104"
+       x1="90.8311"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd12">
+      <stop
+         id="stop12988"
+         style="stop-color:#E8F066"
+         offset="0" />
+      <stop
+         id="stop12990"
+         style="stop-color:#777A34"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="92.6123"
+       x2="124.8197"
+       y1="75.1099"
+       x1="105.0923"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd11">
+      <stop
+         id="stop12981"
+         style="stop-color:#3FA6CC"
+         offset="0" />
+      <stop
+         id="stop12983"
+         style="stop-color:#00687A"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="94.8"
+       x2="126.1107"
+       y1="84.7578"
+       x1="107.8672"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd10">
+      <stop
+         id="stop12974"
+         style="stop-color:#2C7894"
+         offset="0" />
+      <stop
+         id="stop12976"
+         style="stop-color:#0E3D47"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="95.8999"
+       x2="118.2002"
+       y1="78.1079"
+       x1="105.8184"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd9">
+      <stop
+         id="stop12967"
+         style="stop-color:#C1553A"
+         offset="0" />
+      <stop
+         id="stop12969"
+         style="stop-color:#803926"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="98.8832"
+       x2="118.3481"
+       y1="81.1763"
+       x1="106.0254"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd8">
+      <stop
+         id="stop12960"
+         style="stop-color:#C09287"
+         offset="0" />
+      <stop
+         id="stop12962"
+         style="stop-color:#803926"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd8"
+       id="linearGradient1681"
+       gradientUnits="userSpaceOnUse"
+       x1="106.0254"
+       y1="81.1763"
+       x2="118.3481"
+       y2="98.8832" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd9"
+       id="linearGradient1683"
+       gradientUnits="userSpaceOnUse"
+       x1="105.8184"
+       y1="78.1079"
+       x2="118.2002"
+       y2="95.8999" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd10"
+       id="linearGradient1685"
+       gradientUnits="userSpaceOnUse"
+       x1="107.8672"
+       y1="84.7578"
+       x2="126.1107"
+       y2="94.8" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd11"
+       id="linearGradient1687"
+       gradientUnits="userSpaceOnUse"
+       x1="105.0923"
+       y1="75.1099"
+       x2="124.8197"
+       y2="92.6123" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd12"
+       id="linearGradient1689"
+       gradientUnits="userSpaceOnUse"
+       x1="90.8311"
+       y1="89.1104"
+       x2="115.5175"
+       y2="100.6528" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd13"
+       id="linearGradient1691"
+       gradientUnits="userSpaceOnUse"
+       x1="97.2412"
+       y1="82.0938"
+       x2="118.302"
+       y2="99.2984" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2456"
+       id="radialGradient2462"
+       gradientTransform="scale(1.164226,0.85894)"
+       cx="28.283663"
+       cy="47.400623"
+       fx="28.283663"
+       fy="47.400623"
+       r="13.804391"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:showpageshadow="false"
+     inkscape:window-y="16"
+     inkscape:window-x="0"
+     inkscape:window-height="784"
+     inkscape:window-width="1280"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     showgrid="false"
+     inkscape:current-layer="layer2"
+     inkscape:cy="24"
+     inkscape:cx="24"
+     inkscape:zoom="12.083333"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:grid-points="true" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Spreadsheet</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>spreadheet</rdf:li>
+            <rdf:li>document</rdf:li>
+            <rdf:li>office</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     id="layer1"
+     style="display:inline">
+    <g
+       style="display:inline"
+       transform="matrix(2.144924e-2,0,0,2.086758e-2,43.32772,41.1536)"
+       id="g6707">
+      <rect
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="rect6709"
+         width="1339.6335"
+         height="478.35718"
+         x="-1559.2523"
+         y="-150.69685" />
+      <path
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+         id="path6711"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path6713"
+         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    </g>
+    <rect
+       style="color:#000000;fill:url(#radialGradient15658);fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15656);stroke-width:0.99999970;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
+       id="rect15391"
+       width="34.996506"
+       height="40.997345"
+       x="6.5017405"
+       y="3.5013213"
+       ry="1.1490481"
+       rx="1.1490482" />
+    <rect
+       style="color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15668);stroke-width:0.99999970;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
+       id="rect15660"
+       width="32.996056"
+       height="38.996326"
+       x="7.5033512"
+       y="4.5018268"
+       ry="0.14904855"
+       rx="0.14904846" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="emblem"
+     style="display:inline">
+    <path
+       sodipodi:type="arc"
+       style="fill:url(#radialGradient2462);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1693"
+       sodipodi:cx="32.92857"
+       sodipodi:cy="40.714287"
+       sodipodi:rx="16.071428"
+       sodipodi:ry="11.857142"
+       d="M 48.999998,40.714287 A 16.071428,11.857142 0 1 1 16.857141,40.714287 A 16.071428,11.857142 0 1 1 48.999998,40.714287 z"
+       transform="matrix(0.9333333,0,0,1.0542169,-4.7333315,-16.421689)" />
+    <g
+       id="g6727"
+       transform="matrix(1.1528287,0,0,1.247629,45.327332,-8.4704995)"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true">
+      <path
+         id="path3931"
+         d="M -27.528542,18.092794 C -30.097576,19.791125 -31.511475,22.097833 -31.511475,24.590696 L -31.511475,26.659988 C -31.511475,29.150828 -30.097576,31.458211 -27.528542,33.156541 C -25.102053,34.760445 -21.895416,35.644009 -18.499359,35.644009 C -15.104587,35.644009 -11.89795,34.760445 -9.4701774,33.156541 C -6.9024275,31.458211 -5.4885277,29.151503 -5.4885277,26.659988 L -5.4885277,24.590696 C -5.4885277,22.097833 -6.9030696,19.79045 -9.4701774,18.092794 C -11.897308,16.490239 -15.103945,15.606001 -18.499359,15.606001 C -21.895416,15.606001 -25.102053,16.490239 -27.528542,18.092794 z"
+         style="fill:#670000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3933"
+         d="M -7.0244261,24.453547 C -8.4030105,21.067003 -13.077484,18.573465 -18.636768,18.573465 C -24.196053,18.573465 -28.870526,21.067003 -30.249111,24.453547 L -30.663906,24.453547 L -30.663906,26.523514 C -30.663906,30.913678 -25.27863,34.472213 -18.636768,34.472213 C -11.994265,34.472213 -6.6102729,30.913678 -6.6102729,26.523514 L -6.6102729,24.453547 L -7.0244261,24.453547 L -7.0244261,24.453547 z"
+         style="fill:#a40000;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3935"
+         d="M -6.6102729,24.453547 C -6.6102729,28.844385 -11.994265,32.402921 -18.636768,32.402921 C -25.279272,32.402921 -30.663906,28.844385 -30.663906,24.453547 C -30.663906,20.062708 -25.27863,16.504173 -18.636768,16.504173 C -11.994265,16.504173 -6.6102729,20.062708 -6.6102729,24.453547 L -6.6102729,24.453547 z"
+         style="fill:url(#linearGradient6738);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3937"
+         d="M -6.6102729,26.833098 L -6.6256833,24.666681 C -7.9297843,29.167459 -10.862246,31.074203 -14.549173,32.007678 L -14.549173,34.002103 C -10.558534,32.998483 -6.9871844,30.713358 -6.6102729,26.833098 L -6.6102729,26.833098 z"
+         style="fill:#204a87;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3939"
+         d="M -6.6102729,24.453547 C -6.8857329,29.533025 -13.16802,31.849176 -14.571646,31.937532 L -18.637411,24.453547 L -6.610915,24.453547 L -6.6102729,24.453547 z"
+         style="fill:url(#linearGradient6740);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3941"
+         d="M -21.154435,34.298198 L -21.154435,32.228906 C -18.891039,32.523652 -16.814494,32.575587 -14.571646,32.015097 L -14.549173,34.002778 C -16.428593,34.619249 -19.36876,34.648251 -21.154435,34.298873 L -21.154435,34.298198 z"
+         style="fill:#4e9a06;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3943"
+         d="M -18.637411,24.454221 L -14.571646,31.937532 C -17.06106,32.88652 -21.154435,32.228906 -21.154435,32.228906 L -18.637411,24.454221 z"
+         style="fill:url(#linearGradient6742);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         transform="matrix(0.979592,0,0,0.979592,-0.380102,0.497449)"
+         d="M -6.875,24.375 A 11.75,7.75 0 1 1 -30.375,24.375 A 11.75,7.75 0 1 1 -6.875,24.375 z"
+         sodipodi:ry="7.75"
+         sodipodi:rx="11.75"
+         sodipodi:cy="24.375"
+         sodipodi:cx="-18.625"
+         id="path5959"
+         style="opacity:0.31111115;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6744);stroke-width:1.02083337;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+         sodipodi:type="arc"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         sodipodi:type="arc"
+         style="opacity:0.13333327;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6746);stroke-width:1.02083337;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+         id="path6707"
+         sodipodi:cx="-18.625"
+         sodipodi:cy="24.375"
+         sodipodi:rx="11.75"
+         sodipodi:ry="7.75"
+         d="M -6.875,24.375 A 11.75,7.75 0 1 1 -30.375,24.375 A 11.75,7.75 0 1 1 -6.875,24.375 z"
+         transform="matrix(0.979592,0,0,0.979592,-0.380102,2.497449)"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+    </g>
+  </g>
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-image-missing.svg b/trytond/ir/ui/icons/tryton-image-missing.svg
new file mode 100644
index 0000000..e585fd8
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-image-missing.svg
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   inkscape:export-ydpi="90.000000"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
+   width="48px"
+   height="48px"
+   id="svg11300"
+   sodipodi:version="0.32"
+   inkscape:version="0.43+devel"
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/status"
+   sodipodi:docname="image-missing.svg">
+  <defs
+     id="defs3">
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6719"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6717"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient6715"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       id="linearGradient3563">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3565" />
+      <stop
+         style="stop-color:#939393;stop-opacity:1;"
+         offset="1"
+         id="stop3567" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3555">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1;"
+         offset="0"
+         id="stop3557" />
+      <stop
+         style="stop-color:#d0d0d0;stop-opacity:1;"
+         offset="1"
+         id="stop3559" />
+    </linearGradient>
+    <linearGradient
+       style="stroke-dasharray:none;stroke-miterlimit:4.0000000;stroke-width:1.2166667"
+       y2="36.0328"
+       x2="31.0813"
+       y1="3.7319"
+       x1="12.4873"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd1">
+      <stop
+         id="stop16177"
+         style="stop-color:#D2D2D2;stroke-dasharray:none;stroke-miterlimit:4.0000000;stroke-width:1.2166667"
+         offset="0" />
+      <stop
+         id="stop16179"
+         style="stop-color:#EDEDED;stroke-dasharray:none;stroke-miterlimit:4.0000000;stroke-width:1.2166667"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd1"
+       id="linearGradient16280"
+       gradientUnits="userSpaceOnUse"
+       x1="12.4873"
+       y1="3.7319"
+       x2="31.0813"
+       y2="36.0328"
+       gradientTransform="matrix(1.211383,0,0,1.211383,-2.021433,0.189894)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient12129">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop12131" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop12133" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient12129"
+       id="radialGradient12135"
+       cx="24.218407"
+       cy="41.636040"
+       fx="24.218407"
+       fy="41.636040"
+       r="22.097088"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.184000,0.000000,33.97501)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3555"
+       id="radialGradient3561"
+       cx="26.728037"
+       cy="38.34853"
+       fx="26.728037"
+       fy="38.34853"
+       r="17.926361"
+       gradientTransform="matrix(1.848501,-1.547102e-23,1.227926e-24,1.289078,-21.29931,-13.68176)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3563"
+       id="linearGradient3569"
+       x1="28.107494"
+       y1="34.868584"
+       x2="22.169001"
+       y2="9.8661737"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-1.056826e-16,0.883885)" />
+  </defs>
+  <sodipodi:namedview
+     stroke="#cc0000"
+     fill="#cc0000"
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="0.25490196"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="13.713462"
+     inkscape:cy="31.493755"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:showpageshadow="false"
+     inkscape:window-width="1107"
+     inkscape:window-height="1072"
+     inkscape:window-x="180"
+     inkscape:window-y="85"
+     gridempspacing="4" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+        <dc:title>Broken Image</dc:title>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>image</rdf:li>
+            <rdf:li>picture</rdf:li>
+            <rdf:li>photo</rdf:li>
+            <rdf:li>missing</rdf:li>
+            <rdf:li>broken</rdf:li>
+            <rdf:li>404</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Garrett LeSage</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       style="display:inline"
+       transform="matrix(2.367169e-2,0,0,2.086758e-2,45.08634,40.14468)"
+       id="g6707">
+      <rect
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="rect6709"
+         width="1339.6335"
+         height="478.35718"
+         x="-1559.2523"
+         y="-150.69685" />
+      <path
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+         id="path6711"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path6713"
+         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    </g>
+    <path
+       id="path16181"
+       d="M 45.343675,39.903974 C 45.343675,41.842189 43.768877,43.416987 41.830663,43.416987 L 6.3371177,43.416987 C 4.3989037,43.416987 2.8241047,41.842189 2.8241047,39.903974 L 2.8241047,7.0947821 C 2.8241047,5.1565681 4.3989037,3.581769 6.3371177,3.581769 L 41.830663,3.581769 C 43.768877,3.581769 45.343675,5.1565681 45.343675,7.0947821 L 45.343675,39.903974 L 45.343675,39.903974 z "
+       style="fill:url(#linearGradient16280);fill-rule:nonzero;stroke:#646464;stroke-width:0.99234736;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       sodipodi:nodetypes="cccccccccc"
+       transform="matrix(1.011299,0,0,1.004137,-0.356015,-9.658587e-2)"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <path
+       style="fill:url(#radialGradient3561);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3569);stroke-width:0.99794304;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.61658032"
+       d="M 41.467991,35.25247 L 6.6152692,35.25247 L 6.6152692,11.250058 L 41.467991,11.250058 L 41.467991,35.25247 L 41.467991,35.25247 z "
+       id="path12125"
+       sodipodi:nodetypes="cccccc"
+       transform="matrix(1.004226,0,0,0.9999,-0.143226,0.251056)"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <path
+       style="fill:none;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.99670035;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.86010359"
+       d="M 44.480104,39.32848 C 44.480104,41.187964 43.499604,42.345241 41.640121,42.345241 L 6.6160507,42.345241 C 4.7565677,42.345241 3.6876787,41.276353 3.6876787,39.416869 L 3.6876787,7.5970548 C 3.6876787,5.737571 5.1985087,4.403517 7.0579927,4.403517 L 41.198179,4.403517 C 43.057662,4.403517 44.480104,5.737571 44.480104,7.5970548 L 44.480104,38.974927 L 44.480104,39.32848 z "
+       id="path11975"
+       sodipodi:nodetypes="cccccccccc"
+       transform="matrix(1.005089,0,0,1.001536,-0.206445,8.971654e-2)"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <g
+       id="g3551"
+       transform="matrix(0.751031,0,0,0.764054,10.06196,10.18347)"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true">
+      <path
+         d="M 11.318692,9.2240568 C 16.641997,14.693047 22.769247,19.123651 29.210664,22.931105 L 27.441568,24.159843 C 21.101863,20.04489 15.052508,15.498993 9.1840818,10.652117 L 11.318692,9.2240568 z "
+         id="path2565"
+         style="opacity:1;color:#000000;fill:#cc0000;fill-opacity:1;fill-rule:nonzero;stroke:#cc0000;stroke-width:2.64021659;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         d="M 26.73892,8.9210568 C 21.867631,15.95255 15.247359,21.081199 7.9065151,25.28163 L 10.087564,23.520856 C 8.7241111,24.379297 25.574485,11.804168 23.852075,10.207903 L 26.73892,8.9210568 z "
+         id="path2575"
+         style="opacity:1;color:#000000;fill:#cc0000;fill-opacity:1;fill-rule:nonzero;stroke:#cc0000;stroke-width:2.64021564;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+    </g>
+  </g>
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-list.svg b/trytond/ir/ui/icons/tryton-list.svg
new file mode 100644
index 0000000..34ae9d3
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-list.svg
@@ -0,0 +1,348 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48px"
+   height="48px"
+   id="svg4198"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/actions"
+   sodipodi:docname="tryton-list.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4200">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective21117" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient5031"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient5029"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient5027"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3558">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop3560" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop3562" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3558"
+       id="radialGradient3564"
+       cx="22.571428"
+       cy="30.857143"
+       fx="22.571428"
+       fy="30.857143"
+       r="15.571428"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.651376,4.638648e-15,10.75754)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient15218">
+      <stop
+         style="stop-color:#f8f8f7;stop-opacity:1;"
+         offset="0"
+         id="stop15220" />
+      <stop
+         id="stop2269"
+         offset="0.59928656"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#e2e2de;stop-opacity:1;"
+         offset="1"
+         id="stop15222" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15218"
+       id="linearGradient15224"
+       x1="22.308331"
+       y1="18.992140"
+       x2="35.785294"
+       y2="39.498238"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.060837,0.000000,0.000000,0.987595,4.641161,4.108291)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2259">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop2261" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop2263" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2259"
+       id="linearGradient2265"
+       x1="26.076092"
+       y1="26.696676"
+       x2="30.811172"
+       y2="42.007351"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.993566,0.000000,0.000000,1.000000,6.219859,4.033411)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2216">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop2218" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop2220" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2216"
+       id="linearGradient2222"
+       x1="36.8125"
+       y1="39.15625"
+       x2="39.0625"
+       y2="42.0625"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(6.161836,4.033411)" />
+    <linearGradient
+       id="linearGradient2224">
+      <stop
+         style="stop-color:#7c7c7c;stop-opacity:1;"
+         offset="0"
+         id="stop2226" />
+      <stop
+         style="stop-color:#b8b8b8;stop-opacity:1;"
+         offset="1"
+         id="stop2228" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15218"
+       id="linearGradient2240"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.342704,0.000000,0.000000,1.235378,-8.219611,-6.577189)"
+       x1="20.794008"
+       y1="18.378813"
+       x2="35.596001"
+       y2="39.60046" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#bebebe"
+     borderopacity="1.0000000"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="12.083333"
+     inkscape:cx="23.999999"
+     inkscape:cy="23.999999"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:window-width="1278"
+     inkscape:window-height="782"
+     inkscape:window-x="0"
+     inkscape:window-y="16"
+     inkscape:showpageshadow="false" />
+  <metadata
+     id="metadata4203">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Justify Center</dc:title>
+        <dc:date>2005-10-29</dc:date>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Andreas Nilsson</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>justify</rdf:li>
+            <rdf:li>center</rdf:li>
+            <rdf:li>format</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       style="display:inline"
+       id="g5022"
+       transform="matrix(2.330573e-2,0,0,1.227058e-2,44.47891,44.41691)">
+      <rect
+         y="-150.69685"
+         x="-1559.2523"
+         height="478.35718"
+         width="1339.6335"
+         id="rect4173"
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path5058"
+         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+      <path
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+         id="path5018"
+         sodipodi:nodetypes="cccc" />
+    </g>
+    <rect
+       style="opacity:1;fill:url(#linearGradient2240);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4238"
+       width="38.996792"
+       height="45.003101"
+       x="4.5016017"
+       y="1.4968988"
+       rx="0.56650788"
+       ry="0.56650823" />
+    <rect
+       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect4248"
+       width="30"
+       height="2"
+       x="-39"
+       y="10"
+       transform="scale(-1,1)" />
+    <rect
+       y="16"
+       x="-39"
+       height="2"
+       width="30"
+       id="rect4250"
+       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       transform="scale(-1,1)" />
+    <rect
+       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect4252"
+       width="30"
+       height="2"
+       x="-39"
+       y="22"
+       transform="scale(-1,1)" />
+    <rect
+       y="28"
+       x="-39"
+       height="2"
+       width="30"
+       id="rect4254"
+       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       transform="scale(-1,1)" />
+    <rect
+       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect4256"
+       width="30"
+       height="2"
+       x="-39"
+       y="34"
+       transform="scale(-1,1)" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2245"
+       width="37.025566"
+       height="43.022316"
+       x="5.4997125"
+       y="2.4997177"
+       rx="0"
+       ry="0" />
+  </g>
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-presentation.svg b/trytond/ir/ui/icons/tryton-presentation.svg
new file mode 100644
index 0000000..b10a7c6
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-presentation.svg
@@ -0,0 +1,565 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   inkscape:export-ydpi="90.000000"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
+   width="48px"
+   height="48px"
+   id="svg11300"
+   sodipodi:version="0.32"
+   inkscape:version="0.43+devel"
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/mimetypes"
+   sodipodi:docname="x-office-presentation.svg">
+  <defs
+     id="defs3">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient10020">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop10022" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop10024" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2456">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop2458" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop2460" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2456"
+       id="radialGradient2462"
+       gradientTransform="scale(1.164226,0.85894)"
+       cx="28.283663"
+       cy="47.400623"
+       fx="28.283663"
+       fy="47.400623"
+       r="13.804391"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6687">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop6689" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop6691" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6719">
+      <stop
+         style="stop-color:#73d216;stop-opacity:1;"
+         offset="0"
+         id="stop6721" />
+      <stop
+         style="stop-color:#d5f7b3;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6723" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6711">
+      <stop
+         style="stop-color:#5b8ccb;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop6713" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6715" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6699">
+      <stop
+         style="stop-color:#ff7171;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop6701" />
+      <stop
+         style="stop-color:#cc0000;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6703" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient9214">
+      <stop
+         style="stop-color:#5b5b5b;stop-opacity:1;"
+         offset="0"
+         id="stop9216" />
+      <stop
+         style="stop-color:#5b5b5b;stop-opacity:0;"
+         offset="1"
+         id="stop9218" />
+    </linearGradient>
+    <linearGradient
+       y2="11.0039"
+       x2="20.9453"
+       y1="25.4727"
+       x1="27.2949"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd5">
+      <stop
+         id="stop13012"
+         style="stop-color:#f5f5f5;stop-opacity:1;"
+         offset="0" />
+      <stop
+         id="stop13014"
+         style="stop-color:#e1e1e1;stop-opacity:1;"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd5"
+       id="linearGradient1553"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.868867,0,0,1.5088,-20.39097,-10.01652)"
+       x1="27.2949"
+       y1="25.4727"
+       x2="20.9453"
+       y2="11.0039" />
+    <linearGradient
+       y2="10.4377"
+       x2="24.6035"
+       y1="9.3433"
+       x1="24.6035"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd6">
+      <stop
+         id="stop13035"
+         style="stop-color:#F0F0F0"
+         offset="0" />
+      <stop
+         id="stop13037"
+         style="stop-color:#686868"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       fy="30.9912"
+       fx="24.7744"
+       r="0.5902"
+       cy="30.9912"
+       cx="24.7744"
+       id="aigrd7">
+      <stop
+         id="stop13046"
+         style="stop-color:#F0F0F0"
+         offset="0" />
+      <stop
+         id="stop13048"
+         style="stop-color:#848484"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd7"
+       id="radialGradient1537"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.502527,0,0,3.502527,-61.93009,-72.87696)"
+       cx="24.7744"
+       cy="30.9912"
+       fx="24.7744"
+       fy="30.9912"
+       r="0.5902" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient9214"
+       id="radialGradient9220"
+       cx="26.162951"
+       cy="44.022526"
+       fx="26.162951"
+       fy="44.022526"
+       r="12.197592"
+       gradientTransform="matrix(1,0,0,0.181159,-2.871401e-15,36.04743)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd6"
+       id="linearGradient9224"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.905258,0,0,2.521777,-22.82065,-13.24604)"
+       x1="24.919374"
+       y1="6.1478682"
+       x2="24.919374"
+       y2="7.4600263" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6687"
+       id="linearGradient10002"
+       gradientUnits="userSpaceOnUse"
+       x1="-20.750000"
+       y1="29.000000"
+       x2="-19.500000"
+       y2="18.750000" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6699"
+       id="linearGradient10012"
+       gradientUnits="userSpaceOnUse"
+       x1="-22.976406"
+       y1="18.516047"
+       x2="-14.360273"
+       y2="33.016045" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6711"
+       id="linearGradient10014"
+       gradientUnits="userSpaceOnUse"
+       x1="-16.387411"
+       y1="24.453547"
+       x2="-9.7352734"
+       y2="28.195539" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6719"
+       id="linearGradient10016"
+       gradientUnits="userSpaceOnUse"
+       x1="-17.863041"
+       y1="30.827509"
+       x2="-20.821646"
+       y2="25.015009" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10020"
+       id="linearGradient10026"
+       x1="23.379572"
+       y1="28.369167"
+       x2="24.24518"
+       y2="6.0000024"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     stroke="#ef2929"
+     fill="#eeeeec"
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="0.25490196"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="95.591611"
+     inkscape:cy="-8.1950324"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:showpageshadow="false"
+     inkscape:window-width="972"
+     inkscape:window-height="862"
+     inkscape:window-x="871"
+     inkscape:window-y="190" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+        <dc:title />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <path
+       inkscape:r_cy="true"
+       inkscape:r_cx="true"
+       id="path10010"
+       d="M 26.482036,37.621562 L 24.499994,37.621562 L 24.499994,6 L 26.482036,6 L 26.482036,37.620112 L 26.482036,37.621562 z "
+       style="fill:#a4a4a4;fill-rule:nonzero;stroke:#555753;stroke-miterlimit:4;stroke-opacity:1" />
+    <path
+       style="fill:#a4a4a4;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+       d="M 26,37.621562 L 24.982042,37.621562 L 24.982042,6 L 26,6 L 26,37.620112 L 26,37.621562 z "
+       id="path13009"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <path
+       style="fill:url(#linearGradient1553);fill-rule:nonzero;stroke:#888a85;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 43.499996,32.499982 L 7.5000001,32.499982 L 7.5000001,5.4999944 L 43.499996,5.4999944 L 43.499996,32.499982 L 43.499996,32.499982 z "
+       id="path13016"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:0.39010991;color:#000000;fill:url(#radialGradient9220);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path8339"
+       sodipodi:cx="26.162951"
+       sodipodi:cy="44.022526"
+       sodipodi:rx="12.197592"
+       sodipodi:ry="2.2097087"
+       d="M 38.360542 44.022526 A 12.197592 2.2097087 0 1 1  13.965359,44.022526 A 12.197592 2.2097087 0 1 1  38.360542 44.022526 z"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true"
+       transform="matrix(1.749254,0,0,1.452548,-20.38301,-20.43749)" />
+    <g
+       transform="matrix(1.539016,0,0,1.539016,-12.89862,-11.05731)"
+       style="fill:#a4a4a4;fill-rule:nonzero;stroke:#555753;stroke-miterlimit:4;stroke-opacity:1"
+       id="g13020"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true">
+      <path
+         d="M 31.492,35.959 L 25.217,31.321 L 25.151306,31.665948 L 30.016,35.955 L 31.492,35.959 z "
+         id="path13022"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true"
+         style="stroke:#555753;stroke-opacity:1"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         d="M 18.408,35.959 L 24.683,31.321 L 24.63283,31.72338 L 19.883,35.955 L 18.408,35.959 z "
+         id="path13024"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true"
+         style="stroke:#555753;stroke-opacity:1"
+         sodipodi:nodetypes="ccccc" />
+    </g>
+    <path
+       inkscape:r_cy="true"
+       inkscape:r_cx="true"
+       id="path10018"
+       d="M 42.483508,31.500001 L 8.4999999,31.500001 L 8.4999999,6.5000025 L 42.483508,6.5000025 L 42.483508,31.500001 L 42.483508,31.500001 z "
+       style="fill:none;fill-rule:nonzero;stroke:url(#linearGradient10026);stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
+    <path
+       style="opacity:0.15999995;fill:#000000;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+       d="M 37.64607,5.8376811 L 8,5.8376811 L 8,8 C 9.671372,5.6514612 37.64607,5.8376811 37.64607,5.8376811 z "
+       id="path13041"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <rect
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect13420"
+       width="9"
+       height="1"
+       x="31"
+       y="9"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <rect
+       style="opacity:1;color:#000000;fill:url(#linearGradient9224);fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect9222"
+       width="40.779099"
+       height="4"
+       x="5.1403117"
+       y="1.5"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true"
+       rx="1.941476"
+       ry="1.9414761" />
+    <rect
+       inkscape:r_cy="true"
+       inkscape:r_cx="true"
+       y="11"
+       x="31"
+       height="1"
+       width="9"
+       id="rect9226"
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    <rect
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect9228"
+       width="9"
+       height="1"
+       x="31"
+       y="13"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <rect
+       inkscape:r_cy="true"
+       inkscape:r_cx="true"
+       y="15"
+       x="31"
+       height="1"
+       width="9"
+       id="rect9230"
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    <rect
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect9232"
+       width="6"
+       height="1"
+       x="31"
+       y="17"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <rect
+       inkscape:r_cy="true"
+       inkscape:r_cx="true"
+       y="22"
+       x="11"
+       height="1"
+       width="23"
+       id="rect9234"
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    <rect
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect9236"
+       width="23"
+       height="1"
+       x="11"
+       y="24"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <rect
+       inkscape:r_cy="true"
+       inkscape:r_cx="true"
+       y="26"
+       x="11"
+       height="1"
+       width="23"
+       id="rect9238"
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    <rect
+       style="color:#000000;fill:#000000;fill-opacity:0.22807013;fill-rule:nonzero;stroke:none;stroke-width:0.99813098;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect9240"
+       width="16"
+       height="1"
+       x="11"
+       y="28"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <path
+       sodipodi:type="arc"
+       style="fill:url(#radialGradient2462);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
+       id="path1693"
+       sodipodi:cx="32.92857"
+       sodipodi:cy="40.714287"
+       sodipodi:rx="16.071428"
+       sodipodi:ry="11.857142"
+       d="M 48.999998 40.714287 A 16.071428 11.857142 0 1 1  16.857141,40.714287 A 16.071428 11.857142 0 1 1  48.999998 40.714287 z"
+       transform="matrix(0.512138,0,0,0.512138,2.997478,-5.778852)"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+    <g
+       style="display:inline"
+       id="g6727"
+       transform="matrix(0.587368,0,0,0.587368,30.84597,-1.301179)"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true">
+      <path
+         id="path3931"
+         d="M -27.528542,18.092794 C -30.097576,19.791125 -31.511475,22.097833 -31.511475,24.590696 L -31.511475,26.659988 C -31.511475,29.150828 -30.097576,31.458211 -27.528542,33.156541 C -25.102053,34.760445 -21.895416,35.644009 -18.499359,35.644009 C -15.104587,35.644009 -11.89795,34.760445 -9.4701774,33.156541 C -6.9024275,31.458211 -5.4885277,29.151503 -5.4885277,26.659988 L -5.4885277,24.590696 C -5.4885277,22.097833 -6.9030696,19.79045 -9.4701774,18.092794 C -11.897308,16.490239 -15.103945,15.606001 -18.499359,15.606001 C -21.895416,15.606001 -25.102053,16.490239 -27.528542,18.092794 z "
+         style="fill:#670000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3933"
+         d="M -7.0244261,24.453547 C -8.4030105,21.067003 -13.077484,18.573465 -18.636768,18.573465 C -24.196053,18.573465 -28.870526,21.067003 -30.249111,24.453547 L -30.663906,24.453547 L -30.663906,26.523514 C -30.663906,30.913678 -25.27863,34.472213 -18.636768,34.472213 C -11.994265,34.472213 -6.6102729,30.913678 -6.6102729,26.523514 L -6.6102729,24.453547 L -7.0244261,24.453547 L -7.0244261,24.453547 z "
+         style="fill:#a40000;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3935"
+         d="M -6.6102729,24.453547 C -6.6102729,28.844385 -11.994265,32.402921 -18.636768,32.402921 C -25.279272,32.402921 -30.663906,28.844385 -30.663906,24.453547 C -30.663906,20.062708 -25.27863,16.504173 -18.636768,16.504173 C -11.994265,16.504173 -6.6102729,20.062708 -6.6102729,24.453547 L -6.6102729,24.453547 z "
+         style="fill:url(#linearGradient10012);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3937"
+         d="M -6.6102729,26.833098 L -6.6256833,24.666681 C -7.9297843,29.167459 -10.862246,31.074203 -14.549173,32.007678 L -14.549173,34.002103 C -10.558534,32.998483 -6.9871844,30.713358 -6.6102729,26.833098 L -6.6102729,26.833098 z "
+         style="fill:#204a87;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3939"
+         d="M -6.6102729,24.453547 C -6.8857329,29.533025 -13.16802,31.849176 -14.571646,31.937532 L -18.637411,24.453547 L -6.610915,24.453547 L -6.6102729,24.453547 z "
+         style="fill:url(#linearGradient10014);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3941"
+         d="M -21.154435,34.298198 L -21.154435,32.228906 C -18.891039,32.523652 -16.814494,32.575587 -14.571646,32.015097 L -14.549173,34.002778 C -16.428593,34.619249 -19.36876,34.648251 -21.154435,34.298873 L -21.154435,34.298198 z "
+         style="fill:#4e9a06;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         id="path3943"
+         d="M -18.637411,24.454221 L -14.571646,31.937532 C -17.06106,32.88652 -21.154435,32.228906 -21.154435,32.228906 L -18.637411,24.454221 z "
+         style="fill:url(#linearGradient10016);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+      <path
+         transform="matrix(0.946982,0,0,0.889701,-0.987461,2.688545)"
+         d="M -6.875 24.375 A 11.75 7.75 0 1 1  -30.375,24.375 A 11.75 7.75 0 1 1  -6.875 24.375 z"
+         sodipodi:ry="7.75"
+         sodipodi:rx="11.75"
+         sodipodi:cy="24.375"
+         sodipodi:cx="-18.625"
+         id="path5959"
+         style="opacity:0.31111115;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient10002);stroke-width:1.85479884;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+         sodipodi:type="arc"
+         inkscape:r_cx="true"
+         inkscape:r_cy="true" />
+    </g>
+    <g
+       inkscape:r_cy="true"
+       inkscape:r_cx="true"
+       id="g10004"
+       style="fill:#a4a4a4;fill-rule:nonzero;stroke:none;stroke-miterlimit:4"
+       transform="matrix(1.539016,0,0,1.539016,-12.89862,-11.05731)">
+      <path
+         inkscape:r_cy="true"
+         inkscape:r_cx="true"
+         id="path10006"
+         d="M 30.015,35.956 L 31.492,35.959 L 25.217,31.321 L 24.778,31.307 L 30.016,35.955 L 30.015,35.956 z " />
+      <path
+         inkscape:r_cy="true"
+         inkscape:r_cx="true"
+         id="path10008"
+         d="M 19.884,35.956 L 18.408,35.959 L 24.683,31.321 L 25.121,31.307 L 19.883,35.955 L 19.884,35.956 z " />
+    </g>
+    <path
+       style="fill:url(#radialGradient1537);fill-rule:nonzero;stroke:#555753;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 27.839689,36.499985 C 27.839689,37.792418 26.79243,38.839676 25.499998,38.839676 C 24.207565,38.839676 23.160308,37.792418 23.160308,36.499985 C 23.160308,35.211057 24.207565,34.1603 25.499998,34.1603 C 26.79243,34.1603 27.839689,35.211057 27.839689,36.499985 z "
+       id="path13050"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+  </g>
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-readonly.svg b/trytond/ir/ui/icons/tryton-readonly.svg
new file mode 100644
index 0000000..10cdd97
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-readonly.svg
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   inkscape:export-ydpi="90.000000"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
+   width="48px"
+   height="48px"
+   id="svg11300"
+   sodipodi:version="0.32"
+   inkscape:version="0.43+devel"
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/emblems"
+   sodipodi:docname="emblem-readonly.svg">
+  <defs
+     id="defs3">
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6719"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6717"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient6715"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       id="linearGradient11327">
+      <stop
+         style="stop-color:#7d6400;stop-opacity:1;"
+         offset="0"
+         id="stop11329" />
+      <stop
+         style="stop-color:#be9700;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop11331" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2092">
+      <stop
+         id="stop2094"
+         offset="0"
+         style="stop-color:#fff7b0;stop-opacity:1;" />
+      <stop
+         style="stop-color:#ffec41;stop-opacity:1.0000000;"
+         offset="0.20999999"
+         id="stop2098" />
+      <stop
+         id="stop2293"
+         offset="0.83999997"
+         style="stop-color:#e2cc00;stop-opacity:1;" />
+      <stop
+         id="stop2100"
+         offset="1"
+         style="stop-color:#c3af00;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient11335">
+      <stop
+         style="stop-color:#6f716d;stop-opacity:1;"
+         offset="0"
+         id="stop11337" />
+      <stop
+         style="stop-color:#9ea09c;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop11339" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10591">
+      <stop
+         style="stop-color:#cad0c6;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop10593" />
+      <stop
+         id="stop10599"
+         offset="0.50000000"
+         style="stop-color:#eaece9;stop-opacity:1.0000000;" />
+      <stop
+         style="stop-color:#c5cbc0;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop10595" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient11520">
+      <stop
+         id="stop11522"
+         offset="0.0000000"
+         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
+      <stop
+         id="stop11524"
+         offset="1.0000000"
+         style="stop-color:#dcdcdc;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient11508"
+       inkscape:collect="always">
+      <stop
+         id="stop11510"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop11512"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient11508"
+       id="radialGradient1348"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.338462,-1.435476e-15,29.48178)"
+       cx="30.203562"
+       cy="44.565483"
+       fx="30.203562"
+       fy="44.565483"
+       r="6.5659914" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient11520"
+       id="radialGradient1366"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.995058,-1.651527e-32,0.000000,1.995058,-24.32488,-35.70087)"
+       cx="24.445690"
+       cy="35.878170"
+       fx="24.445690"
+       fy="35.878170"
+       r="20.530962" />
+  </defs>
+  <sodipodi:namedview
+     stroke="#ef2929"
+     fill="#729fcf"
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="0.25490196"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="24.194962"
+     inkscape:cy="-13.983676"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:showpageshadow="false"
+     inkscape:window-width="872"
+     inkscape:window-height="707"
+     inkscape:window-x="155"
+     inkscape:window-y="230" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+        <dc:title>Read Only Emblem</dc:title>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>emblem</rdf:li>
+            <rdf:li>read-only</rdf:li>
+            <rdf:li>nowrite</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       transform="matrix(2.243788e-2,0,0,2.086758e-2,44.06795,40.547)"
+       id="g6707">
+      <rect
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="rect6709"
+         width="1339.6335"
+         height="478.35718"
+         x="-1559.2523"
+         y="-150.69685" />
+      <path
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+         id="path6711"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path6713"
+         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    </g>
+    <rect
+       ry="5.4548240"
+       rx="5.4548240"
+       y="3.5233452"
+       x="4.4147282"
+       height="40.061924"
+       width="40.061924"
+       id="rect11518"
+       style="opacity:1.0000000;color:#000000;fill:url(#radialGradient1366);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#9b9b9b;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
+    <rect
+       style="opacity:1.0000000;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+       id="rect11528"
+       width="37.696587"
+       height="37.696587"
+       x="5.5973887"
+       y="4.7060070"
+       rx="4.2426391"
+       ry="4.2426391" />
+    <path
+       style="opacity:0.69886361;color:#000000;fill:#888a85;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.9999997;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
+       d="M 23.906254,10.878347 C 19.835833,11.005873 17.137508,12.963117 17.137508,17.000087 L 17.137508,21.120489 L 16.221429,21.120489 C 15.54928,21.120489 15,21.583436 15,22.163203 L 15,32.993974 C 15,33.573741 15.54928,34.036689 16.221429,34.036688 L 32.795528,34.036688 C 33.467687,34.036688 34,33.57374 34,32.993974 L 34,22.163203 C 34,21.583437 33.467687,21.120489 32.795528,21.120489 L 31.862492,21.120489 L 31.87946,17.067359 C 31.87946,12.782023 28.950269,10.931241 24.516968,10.878347 C 24.310278,10.875868 24.10644,10.872076 23.906254,10.878347 z M 24.313392,13.58604 C 24.388241,13.584353 24.4735,13.58604 24.550894,13.58604 C 29.469737,13.58604 29.092541,17.084436 29.165175,18.126891 L 29.165175,21.120489 L 19.902675,21.120489 L 19.902675,18.143709 C 19.885214,17.109531 19.597992,13.692412 24.313392,13.58604 z "
+       id="path2086"
+       inkscape:r_cx="true"
+       inkscape:r_cy="true" />
+  </g>
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-spreadsheet.svg b/trytond/ir/ui/icons/tryton-spreadsheet.svg
new file mode 100644
index 0000000..0f7eb3a
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-spreadsheet.svg
@@ -0,0 +1,627 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="tryton-spreadsheet.svg"
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/mimetypes"
+   inkscape:version="0.46"
+   sodipodi:version="0.32"
+   id="svg13684"
+   height="48.000000px"
+   width="48.000000px"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs3">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective13831" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6719"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient6717"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient6715"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6687"
+       id="linearGradient6746"
+       gradientUnits="userSpaceOnUse"
+       x1="-20.750000"
+       y1="29.000000"
+       x2="-19.500000"
+       y2="18.750000" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6687">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop6689" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop6691" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6687"
+       id="linearGradient6744"
+       gradientUnits="userSpaceOnUse"
+       x1="-20.750000"
+       y1="29.000000"
+       x2="-19.500000"
+       y2="18.750000" />
+    <linearGradient
+       id="linearGradient6719">
+      <stop
+         style="stop-color:#73d216;stop-opacity:1;"
+         offset="0"
+         id="stop6721" />
+      <stop
+         style="stop-color:#d5f7b3;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6723" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6719"
+       id="linearGradient6742"
+       gradientUnits="userSpaceOnUse"
+       x1="-17.863041"
+       y1="30.827509"
+       x2="-20.821646"
+       y2="25.015009" />
+    <linearGradient
+       id="linearGradient6711">
+      <stop
+         style="stop-color:#5b8ccb;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop6713" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6715" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6711"
+       id="linearGradient6740"
+       gradientUnits="userSpaceOnUse"
+       x1="-16.387411"
+       y1="24.453547"
+       x2="-9.7352734"
+       y2="28.195539" />
+    <linearGradient
+       id="linearGradient6699">
+      <stop
+         style="stop-color:#ff7171;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop6701" />
+      <stop
+         style="stop-color:#cc0000;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop6703" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6699"
+       id="linearGradient6738"
+       gradientUnits="userSpaceOnUse"
+       x1="-22.976406"
+       y1="18.516047"
+       x2="-14.360273"
+       y2="33.016045" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4542">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4544" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop4546" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4542"
+       id="radialGradient4548"
+       cx="24.306795"
+       cy="42.07798"
+       fx="24.306795"
+       fy="42.07798"
+       r="15.821514"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.284916,-2.846681e-15,30.08928)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2456">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop2458" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop2460" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient269">
+      <stop
+         id="stop270"
+         offset="0.0000000"
+         style="stop-color:#a3a3a3;stop-opacity:1.0000000;" />
+      <stop
+         id="stop271"
+         offset="1.0000000"
+         style="stop-color:#4c4c4c;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient269"
+       id="radialGradient15656"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.971646,0.000000,0.000000,1.034707,3.240408,0.495684)"
+       cx="8.8244190"
+       cy="3.7561285"
+       fx="8.8244190"
+       fy="3.7561285"
+       r="37.751713" />
+    <linearGradient
+       id="linearGradient259">
+      <stop
+         id="stop260"
+         offset="0.0000000"
+         style="stop-color:#fafafa;stop-opacity:1.0000000;" />
+      <stop
+         id="stop261"
+         offset="1.0000000"
+         style="stop-color:#bbbbbb;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient259"
+       id="radialGradient15658"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.963839,0.000000,0.000000,1.043088,-0.124825,-0.151970)"
+       cx="33.966679"
+       cy="35.736916"
+       fx="33.966679"
+       fy="35.736916"
+       r="86.708450" />
+    <linearGradient
+       id="linearGradient15662">
+      <stop
+         id="stop15664"
+         offset="0.0000000"
+         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
+      <stop
+         id="stop15666"
+         offset="1.0000000"
+         style="stop-color:#f8f8f8;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15662"
+       id="radialGradient15668"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.974777,0.000000,0.000000,1.034091,3.161873,0.559274)"
+       cx="8.1435566"
+       cy="7.2678967"
+       fx="8.1435566"
+       fy="7.2678967"
+       r="38.158695" />
+    <linearGradient
+       y2="99.2984"
+       x2="118.302"
+       y1="82.0938"
+       x1="97.2412"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd13">
+      <stop
+         id="stop12995"
+         style="stop-color:#E8F066"
+         offset="0" />
+      <stop
+         id="stop12997"
+         style="stop-color:#949941"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="100.6528"
+       x2="115.5175"
+       y1="89.1104"
+       x1="90.8311"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd12">
+      <stop
+         id="stop12988"
+         style="stop-color:#E8F066"
+         offset="0" />
+      <stop
+         id="stop12990"
+         style="stop-color:#777A34"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="92.6123"
+       x2="124.8197"
+       y1="75.1099"
+       x1="105.0923"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd11">
+      <stop
+         id="stop12981"
+         style="stop-color:#3FA6CC"
+         offset="0" />
+      <stop
+         id="stop12983"
+         style="stop-color:#00687A"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="94.8"
+       x2="126.1107"
+       y1="84.7578"
+       x1="107.8672"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd10">
+      <stop
+         id="stop12974"
+         style="stop-color:#2C7894"
+         offset="0" />
+      <stop
+         id="stop12976"
+         style="stop-color:#0E3D47"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="95.8999"
+       x2="118.2002"
+       y1="78.1079"
+       x1="105.8184"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd9">
+      <stop
+         id="stop12967"
+         style="stop-color:#C1553A"
+         offset="0" />
+      <stop
+         id="stop12969"
+         style="stop-color:#803926"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="98.8832"
+       x2="118.3481"
+       y1="81.1763"
+       x1="106.0254"
+       gradientUnits="userSpaceOnUse"
+       id="aigrd8">
+      <stop
+         id="stop12960"
+         style="stop-color:#C09287"
+         offset="0" />
+      <stop
+         id="stop12962"
+         style="stop-color:#803926"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd8"
+       id="linearGradient1681"
+       gradientUnits="userSpaceOnUse"
+       x1="106.0254"
+       y1="81.1763"
+       x2="118.3481"
+       y2="98.8832" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd9"
+       id="linearGradient1683"
+       gradientUnits="userSpaceOnUse"
+       x1="105.8184"
+       y1="78.1079"
+       x2="118.2002"
+       y2="95.8999" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd10"
+       id="linearGradient1685"
+       gradientUnits="userSpaceOnUse"
+       x1="107.8672"
+       y1="84.7578"
+       x2="126.1107"
+       y2="94.8" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd11"
+       id="linearGradient1687"
+       gradientUnits="userSpaceOnUse"
+       x1="105.0923"
+       y1="75.1099"
+       x2="124.8197"
+       y2="92.6123" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd12"
+       id="linearGradient1689"
+       gradientUnits="userSpaceOnUse"
+       x1="90.8311"
+       y1="89.1104"
+       x2="115.5175"
+       y2="100.6528" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#aigrd13"
+       id="linearGradient1691"
+       gradientUnits="userSpaceOnUse"
+       x1="97.2412"
+       y1="82.0938"
+       x2="118.302"
+       y2="99.2984" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2456"
+       id="radialGradient2462"
+       gradientTransform="scale(1.164226,0.85894)"
+       cx="28.283663"
+       cy="47.400623"
+       fx="28.283663"
+       fy="47.400623"
+       r="13.804391"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:showpageshadow="false"
+     inkscape:window-y="16"
+     inkscape:window-x="0"
+     inkscape:window-height="784"
+     inkscape:window-width="1280"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     showgrid="false"
+     inkscape:current-layer="layer1"
+     inkscape:cy="24"
+     inkscape:cx="24"
+     inkscape:zoom="12.083333"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:grid-points="true" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Spreadsheet</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>http://jimmac.musichall.cz</dc:source>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>spreadheet</rdf:li>
+            <rdf:li>document</rdf:li>
+            <rdf:li>office</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     id="layer1"
+     style="display:inline">
+    <g
+       style="display:inline"
+       transform="matrix(2.144924e-2,0,0,2.086758e-2,43.32772,41.1536)"
+       id="g6707">
+      <rect
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="rect6709"
+         width="1339.6335"
+         height="478.35718"
+         x="-1559.2523"
+         y="-150.69685" />
+      <path
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+         id="path6711"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path6713"
+         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    </g>
+    <rect
+       style="color:#000000;fill:url(#radialGradient15658);fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15656);stroke-width:0.99999970;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
+       id="rect15391"
+       width="34.996506"
+       height="40.997345"
+       x="6.5017405"
+       y="3.5013213"
+       ry="1.1490481"
+       rx="1.1490482" />
+    <rect
+       style="color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15668);stroke-width:0.99999970;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
+       id="rect15660"
+       width="32.996056"
+       height="38.996326"
+       x="7.5033512"
+       y="4.5018268"
+       ry="0.14904855"
+       rx="0.14904846" />
+    <path
+       id="rect13655"
+       d="M 10.000000,6.0022030 L 10.000000,10.966297 L 10.000000,41.002203 L 20.000000,41.000000 L 20.000000,11.000000 L 38.000000,11.000000 L 38.000000,6.0022030 L 10.000000,6.0022030 z "
+       style="color:#000000;fill:#000000;fill-opacity:0.21052630;fill-rule:evenodd;stroke:none;stroke-width:0.60787594;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+       sodipodi:nodetypes="cccccccc" />
+    <path
+       id="path13660"
+       d="M 37.500415,10.502203 L 10.499583,10.502203"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000001px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path13662"
+       d="M 37.500755,16.500000 L 10.499230,16.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path13664"
+       d="M 37.500755,22.500000 L 10.499230,22.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path13666"
+       d="M 37.500755,28.500000 L 10.499230,28.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path13668"
+       d="M 37.501332,34.500000 L 10.499823,34.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999964px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path13682"
+       d="M 37.500755,40.500000 L 10.499230,40.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path2464"
+       d="M 37.511644,13.500000 L 10.500000,13.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000001px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path2466"
+       d="M 37.500755,19.500000 L 10.499230,19.500000"
+       style="fill:none;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path2468"
+       d="M 37.500755,25.500000 L 10.499230,25.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path2470"
+       d="M 37.500755,31.500000 L 10.499230,31.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       id="path2472"
+       d="M 37.500755,37.500000 L 10.499230,37.500000"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999970px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+    <path
+       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999982px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.15789469"
+       d="M 37.500000,6.4997386 L 37.500000,40.500300"
+       id="path2485" />
+    <path
+       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.15789469"
+       d="M 31.500000,6.4996867 L 31.500000,40.500315"
+       id="path2487" />
+    <path
+       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.15789469"
+       d="M 25.500000,6.4996865 L 25.500000,40.500314"
+       id="path2489" />
+    <path
+       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.15789469"
+       d="M 19.500000,6.4996867 L 19.500000,40.500315"
+       id="path2491" />
+    <path
+       style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.15789469"
+       d="M 10.500000,6.4996867 L 10.500000,40.500315"
+       id="path2493" />
+    <path
+       id="path2495"
+       d="M 37.500227,6.5022030 L 10.499460,6.5022030"
+       style="fill:#000000;fill-opacity:0.15789469;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.19298245" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="emblem"
+     style="display:inline" />
+</svg>
diff --git a/trytond/ir/ui/icons/tryton-tree.svg b/trytond/ir/ui/icons/tryton-tree.svg
new file mode 100644
index 0000000..4be6463
--- /dev/null
+++ b/trytond/ir/ui/icons/tryton-tree.svg
@@ -0,0 +1,348 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48px"
+   height="48px"
+   id="svg4198"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/actions"
+   sodipodi:docname="tryton-tree.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4200">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective21117" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient5031"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient5029"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient5027"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
+       x1="302.85715"
+       y1="366.64789"
+       x2="302.85715"
+       y2="609.50507" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3558">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop3560" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop3562" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3558"
+       id="radialGradient3564"
+       cx="22.571428"
+       cy="30.857143"
+       fx="22.571428"
+       fy="30.857143"
+       r="15.571428"
+       gradientTransform="matrix(1.000000,0.000000,0.000000,0.651376,4.638648e-15,10.75754)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient15218">
+      <stop
+         style="stop-color:#f8f8f7;stop-opacity:1;"
+         offset="0"
+         id="stop15220" />
+      <stop
+         id="stop2269"
+         offset="0.59928656"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#e2e2de;stop-opacity:1;"
+         offset="1"
+         id="stop15222" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15218"
+       id="linearGradient15224"
+       x1="22.308331"
+       y1="18.992140"
+       x2="35.785294"
+       y2="39.498238"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.060837,0.000000,0.000000,0.987595,4.641161,4.108291)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2259">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop2261" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop2263" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2259"
+       id="linearGradient2265"
+       x1="26.076092"
+       y1="26.696676"
+       x2="30.811172"
+       y2="42.007351"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.993566,0.000000,0.000000,1.000000,6.219859,4.033411)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2216">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop2218" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop2220" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2216"
+       id="linearGradient2222"
+       x1="36.8125"
+       y1="39.15625"
+       x2="39.0625"
+       y2="42.0625"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(6.161836,4.033411)" />
+    <linearGradient
+       id="linearGradient2224">
+      <stop
+         style="stop-color:#7c7c7c;stop-opacity:1;"
+         offset="0"
+         id="stop2226" />
+      <stop
+         style="stop-color:#b8b8b8;stop-opacity:1;"
+         offset="1"
+         id="stop2228" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15218"
+       id="linearGradient2240"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.342704,0.000000,0.000000,1.235378,-8.219611,-6.577189)"
+       x1="20.794008"
+       y1="18.378813"
+       x2="35.596001"
+       y2="39.60046" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#bebebe"
+     borderopacity="1.0000000"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="12.083333"
+     inkscape:cx="24"
+     inkscape:cy="24"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:window-width="1280"
+     inkscape:window-height="784"
+     inkscape:window-x="0"
+     inkscape:window-y="16"
+     inkscape:showpageshadow="false" />
+  <metadata
+     id="metadata4203">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Justify Center</dc:title>
+        <dc:date>2005-10-29</dc:date>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Andreas Nilsson</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>justify</rdf:li>
+            <rdf:li>center</rdf:li>
+            <rdf:li>format</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Attribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       style="display:inline"
+       id="g5022"
+       transform="matrix(2.330573e-2,0,0,1.227058e-2,44.47891,44.41691)">
+      <rect
+         y="-150.69685"
+         x="-1559.2523"
+         height="478.35718"
+         width="1339.6335"
+         id="rect4173"
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path5058"
+         d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+      <path
+         style="opacity:0.40206185;color:black;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
+         id="path5018"
+         sodipodi:nodetypes="cccc" />
+    </g>
+    <rect
+       style="opacity:1;fill:url(#linearGradient2240);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4238"
+       width="38.996792"
+       height="45.003101"
+       x="4.5016017"
+       y="1.4968988"
+       rx="0.56650788"
+       ry="0.56650823" />
+    <rect
+       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect4248"
+       width="15"
+       height="2"
+       x="-24"
+       y="10"
+       transform="scale(-1,1)" />
+    <rect
+       y="16"
+       x="-30"
+       height="2"
+       width="15"
+       id="rect4250"
+       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       transform="scale(-1,1)" />
+    <rect
+       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect4252"
+       width="15"
+       height="2"
+       x="-40"
+       y="22"
+       transform="scale(-1,1)" />
+    <rect
+       y="28"
+       x="-40"
+       height="2"
+       width="15"
+       id="rect4254"
+       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       transform="scale(-1,1)" />
+    <rect
+       style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="rect4256"
+       width="15"
+       height="2"
+       x="-30"
+       y="34"
+       transform="scale(-1,1)" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2245"
+       width="37.025566"
+       height="43.022316"
+       x="5.4997125"
+       y="2.4997177"
+       rx="0"
+       ry="0" />
+  </g>
+</svg>
diff --git a/trytond/ir/ui/menu.py b/trytond/ir/ui/menu.py
index 117ea03..4e72203 100644
--- a/trytond/ir/ui/menu.py
+++ b/trytond/ir/ui/menu.py
@@ -12,65 +12,52 @@ def one_in(i, j):
             return True
     return False
 
-ICONS = [(x, x) for x in [
-    'tryton-accessories',
+CLIENT_ICONS = [(x, x) for x in (
+    'tryton-attachment-hi',
     'tryton-attachment',
+    'tryton-cancel',
     'tryton-clear',
     'tryton-close',
-    'tryton-calculator',
-    'tryton-calendar',
-    'tryton-clock',
     'tryton-connect',
     'tryton-copy',
-    'tryton-currency',
     'tryton-delete',
-    'tryton-development',
     'tryton-dialog-error',
     'tryton-dialog-information',
     'tryton-dialog-warning',
     'tryton-disconnect',
     'tryton-executable',
-    'tryton-find',
     'tryton-find-replace',
+    'tryton-find',
     'tryton-folder-new',
-    'tryton-folder-saved-search',
     'tryton-fullscreen',
-    'tryton-graph',
     'tryton-go-home',
     'tryton-go-jump',
     'tryton-go-next',
     'tryton-go-previous',
     'tryton-help',
-    'tryton-image-missing',
-    'tryton-information',
-    'tryton-lock',
-    'tryton-list',
+    'tryton-icon',
     'tryton-list-add',
     'tryton-list-remove',
     'tryton-locale',
+    'tryton-lock',
     'tryton-log-out',
     'tryton-mail-message-new',
+    'tryton-mail-message',
     'tryton-new',
-    'tryton-noimage',
+    'tryton-ok',
     'tryton-open',
-    'tryton-package',
-    'tryton-preferences',
-    'tryton-preferences-system',
     'tryton-preferences-system-session',
-    'tryton-presentation',
+    'tryton-preferences-system',
+    'tryton-preferences',
     'tryton-print',
-    'tryton-readonly',
     'tryton-refresh',
     'tryton-save-as',
     'tryton-save',
-    'tryton-spreadsheet',
     'tryton-start-here',
-    'tryton-tree',
-    'tryton-system',
     'tryton-system-file-manager',
-    'tryton-users',
-    'tryton-web-browser',
-]]
+    'tryton-system',
+    'tryton-undo',
+    'tryton-web-browser')]
 
 
 class UIMenu(ModelSQL, ModelView):
@@ -80,12 +67,13 @@ class UIMenu(ModelSQL, ModelView):
     name = fields.Char('Menu', required=True, translate=True)
     sequence = fields.Integer('Sequence')
     childs = fields.One2Many('ir.ui.menu', 'parent', 'Children')
-    parent = fields.Many2One('ir.ui.menu', 'Parent Menu', select=1)
+    parent = fields.Many2One('ir.ui.menu', 'Parent Menu', select=1,
+            ondelete='CASCADE')
     groups = fields.Many2Many('ir.ui.menu-res.group',
        'menu_id', 'gid', 'Groups')
     complete_name = fields.Function(fields.Char('Complete Name',
         order_field='name'), 'get_full_name')
-    icon = fields.Selection(ICONS, 'Icon', translate=False)
+    icon = fields.Selection('list_icons', 'Icon')
     action = fields.Function(fields.Reference('Action',
         selection=[
             ('ir.action.report', 'ir.action.report'),
@@ -108,6 +96,11 @@ class UIMenu(ModelSQL, ModelView):
     def default_active(self):
         return True
 
+    def list_icons(self):
+        icon_obj = self.pool.get('ir.ui.icon')
+        return sorted(CLIENT_ICONS
+            + [(name, name) for _, name in icon_obj.list_icons()])
+
     def get_full_name(self, ids, name):
         res = {}
         for menu in self.browse(ids):
@@ -130,19 +123,15 @@ class UIMenu(ModelSQL, ModelView):
         if query_string:
             return res
 
-        def check_menu(res):
-            if not res:
-                return []
+        if res:
             menus = self.browse(res)
             parent_ids = [x.parent.id for x in menus if x.parent]
             parent_ids = self.search([
                 ('id', 'in', parent_ids),
                 ])
-            parent_ids = check_menu(parent_ids)
-            return [x.id for x in menus
+            res = [x.id for x in menus
                     if (x.parent.id in parent_ids) or not x.parent]
 
-        res = check_menu(res)
         if count:
             return len(res)
         return res
diff --git a/trytond/ir/ui/menu.xml b/trytond/ir/ui/menu.xml
index 15b2238..c0dd633 100644
--- a/trytond/ir/ui/menu.xml
+++ b/trytond/ir/ui/menu.xml
@@ -7,42 +7,29 @@ this repository contains the full copyright notices and license terms. -->
             <field name="model">ir.ui.menu</field>
             <field name="type">tree</field>
             <field name="field_childs">childs</field>
+            <field name="priority" eval="20"/>
             <field name="arch" type="xml">
                 <![CDATA[
-                <tree string="Menu" toolbar="1">
+                <tree string="Menu" keyword_open="1" fill="1">
                     <field name="name" icon="icon"/>
                 </tree>
                 ]]>
             </field>
         </record>
-        <record model="ir.action.act_window" id="act_menu_tree">
-            <field name="name">Menu</field>
-            <field name="res_model">ir.ui.menu</field>
-            <field name="view_type">tree</field>
-            <field name="usage">menu</field>
-            <field name="domain" eval="'[(\'parent\', \'=\', False)]'"/>
-        </record>
-        <record model="ir.action.act_window.view"
-            id="act_menu_tree_view1">
-            <field name="sequence" eval="1"/>
-            <field name="view" ref="menu_view_tree_tree"/>
-            <field name="act_window" ref="act_menu_tree"/>
-        </record>
-        <record model="ir.ui.view" id="menu_view_tree">
+
+        <record model="ir.ui.view" id="menu_view_list">
             <field name="model">ir.ui.menu</field>
             <field name="type">tree</field>
-            <field name="priority" eval="8"/>
+            <field name="priority" eval="10"/>
             <field name="arch" type="xml">
                 <![CDATA[
-                <tree string="Menu">
-                    <field name="complete_name" icon="icon"/>
-                    <field name="name" tree_invisible="1" select="1"/>
-                    <field name="parent" tree_invisible="1" select="1"/>
-                    <field name="active" tree_invisible="1" select="1"/>
+                <tree string="Menu" fill="1">
+                    <field name="rec_name" icon="icon"/>
                 </tree>
                 ]]>
             </field>
         </record>
+
         <record model="ir.ui.view" id="menu_view_form">
             <field name="model">ir.ui.menu</field>
             <field name="type">form</field>
@@ -69,24 +56,27 @@ this repository contains the full copyright notices and license terms. -->
                 ]]>
             </field>
         </record>
-        <record model="ir.action.act_window" id="act_menu_form">
-            <field name="name">Menus</field>
+
+        <record model="ir.action.act_window" id="act_menu_tree">
+            <field name="name">Menu</field>
             <field name="res_model">ir.ui.menu</field>
-            <field name="view_type">form</field>
+            <field name="usage">menu</field>
+            <field name="domain" eval="'[(\'parent\', \'=\', False)]'"/>
         </record>
         <record model="ir.action.act_window.view"
-            id="act_menu_form_view1">
+            id="act_menu_tree_view1">
             <field name="sequence" eval="1"/>
-            <field name="view" ref="menu_view_tree"/>
-            <field name="act_window" ref="act_menu_form"/>
+            <field name="view" ref="menu_view_tree_tree"/>
+            <field name="act_window" ref="act_menu_tree"/>
         </record>
         <record model="ir.action.act_window.view"
             id="act_menu_form_view2">
             <field name="sequence" eval="2"/>
             <field name="view" ref="menu_view_form"/>
-            <field name="act_window" ref="act_menu_form"/>
+            <field name="act_window" ref="act_menu_tree"/>
         </record>
+
         <menuitem parent="menu_ui"
-            action="act_menu_form" id="menu_menu_form"/>
+            action="act_menu_tree" id="menu_menu_tree"/>
     </data>
 </tryton>
diff --git a/trytond/ir/ui/tree.rnc b/trytond/ir/ui/tree.rnc
index 47334de..7d46342 100644
--- a/trytond/ir/ui/tree.rnc
+++ b/trytond/ir/ui/tree.rnc
@@ -13,7 +13,7 @@ attlist.tree &= attribute colors { text }?
 attlist.tree &=
   [ a:defaultValue = "0" ] attribute fill { "0" | "1" }?
 attlist.tree &=
-  [ a:defaultValue = "0" ] attribute toolbar { "0" | "1" }?
+  [ a:defaultValue = "0" ] attribute keyword_open { "0" | "1" }?
 field = element field { attlist.field, empty }
 attlist.field &= attribute name { text }
 attlist.field &= attribute readonly { "0" | "1" }?
diff --git a/trytond/ir/ui/tree.rng b/trytond/ir/ui/tree.rng
index 5c33c33..1dfdd18 100644
--- a/trytond/ir/ui/tree.rng
+++ b/trytond/ir/ui/tree.rng
@@ -53,7 +53,7 @@
   </define>
   <define name="attlist.tree" combine="interleave">
     <optional>
-      <attribute name="toolbar" a:defaultValue="0">
+      <attribute name="keyword_open" a:defaultValue="0">
         <choice>
           <value>0</value>
           <value>1</value>
diff --git a/trytond/ir/ui/ui.xml b/trytond/ir/ui/ui.xml
index b2132ce..5183fe6 100644
--- a/trytond/ir/ui/ui.xml
+++ b/trytond/ir/ui/ui.xml
@@ -3,6 +3,43 @@
 this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
+        <record model="ir.ui.icon" id="calendar_icon">
+            <field name="name">tryton-calendar</field>
+            <field name="path">ui/icons/tryton-calendar.svg</field>
+        </record>
+        <record model="ir.ui.icon" id="clock_icon">
+            <field name="name">tryton-clock</field>
+            <field name="path">ui/icons/tryton-clock.svg</field>
+        </record>
+        <record model="ir.ui.icon" id="graph_icon">
+            <field name="name">tryton-graph</field>
+            <field name="path">ui/icons/tryton-graph.svg</field>
+        </record>
+        <record model="ir.ui.icon" id="image_missing_icon">
+            <field name="name">tryton-image-missing</field>
+            <field name="path">ui/icons/tryton-image-missing.svg</field>
+        </record>
+        <record model="ir.ui.icon" id="list_icon">
+            <field name="name">tryton-list</field>
+            <field name="path">ui/icons/tryton-list.svg</field>
+        </record>
+        <record model="ir.ui.icon" id="presentation_icon">
+            <field name="name">tryton-presentation</field>
+            <field name="path">ui/icons/tryton-presentation.svg</field>
+        </record>
+        <record model="ir.ui.icon" id="readonly_icon">
+            <field name="name">tryton-readonly</field>
+            <field name="path">ui/icons/tryton-readonly.svg</field>
+        </record>
+        <record model="ir.ui.icon" id="spreadsheet_icon">
+            <field name="name">tryton-spreadsheet</field>
+            <field name="path">ui/icons/tryton-spreadsheet.svg</field>
+        </record>
+        <record model="ir.ui.icon" id="tree_icon">
+            <field name="name">tryton-tree</field>
+            <field name="path">ui/icons/tryton-tree.svg</field>
+        </record>
+
         <menuitem name="User Interface" parent="menu_administration" id="menu_ui"/>
     </data>
 </tryton>
diff --git a/trytond/ir/ui/view.py b/trytond/ir/ui/view.py
index cad1cd7..f2d2b5e 100644
--- a/trytond/ir/ui/view.py
+++ b/trytond/ir/ui/view.py
@@ -10,6 +10,7 @@ from trytond.backend import TableHandler
 from trytond.pyson import PYSONEncoder, CONTEXT, Eval, Not, Bool, Equal
 from trytond.tools import safe_eval
 from trytond.transaction import Transaction
+from trytond.wizard import Wizard
 
 
 class View(ModelSQL, ModelView):
@@ -65,6 +66,7 @@ class View(ModelSQL, ModelView):
 
     def check_xml(self, ids):
         "Check XML"
+        translation_obj = self.pool.get('ir.translation')
         cursor = Transaction().cursor
         views = self.browse(ids)
         for view in views:
@@ -145,6 +147,7 @@ class View(ModelSQL, ModelView):
                 if string in trans_views:
                     del trans_views[string]
                     continue
+                string_md5 = translation_obj.get_src_md5(string)
                 for string_trans in trans_views:
                     if string_trans in strings:
                         continue
@@ -155,19 +158,22 @@ class View(ModelSQL, ModelView):
                         done = True
                         break
                     if seqmatch.ratio() > 0.6:
-                        cursor.execute('UPDATE ir_translation ' \
-                            'SET src = %s, ' \
-                                'fuzzy = %s ' \
+                        cursor.execute('UPDATE ir_translation '
+                            'SET src = %s, '
+                                'src_md5 = %s, '
+                                'fuzzy = %s '
                             'WHERE id = %s ',
-                            (string, True, trans_views[string_trans]['id']))
+                            (string, string_md5, True,
+                                trans_views[string_trans]['id']))
                         del trans_views[string_trans]
                         done = True
                         break
                 if not done:
-                    cursor.execute('INSERT INTO ir_translation ' \
-                        '(name, lang, type, src, value, module, fuzzy)' \
-                        'VALUES (%s, %s, %s, %s, %s, %s, %s)',
-                        (view.model, 'en_US', 'view', string, '',
+                    cursor.execute('INSERT INTO ir_translation '
+                        '(name, lang, type, src, src_md5, value, module, '
+                            'fuzzy) '
+                        'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)',
+                        (view.model, 'en_US', 'view', string, string_md5, '',
                             view.module, False))
             if strings:
                 cursor.execute('DELETE FROM ir_translation ' \
@@ -253,6 +259,81 @@ class ViewShortcut(ModelSQL, ModelView):
 ViewShortcut()
 
 
+class AddShortcut(Wizard):
+    'Add shortcut'
+    _name = 'ir.ui.view_sc.add'
+
+    states = {
+        'init': {
+            'result': {
+                'type': 'action',
+                'action': '_add_shortcut',
+                'state': 'end',
+            },
+        },
+    }
+
+    def _add_shortcut(self, data):
+        view_sc_obj = self.pool.get('ir.ui.view_sc')
+        model_obj = self.pool.get(data['model'])
+
+        record = model_obj.browse(data['id'])
+        view_sc_obj.create({
+            'name': record.rec_name,
+            'res_id': record.id,
+            'user_id': Transaction().user,
+            'resource': model_obj._name,
+            })
+        return {}
+
+AddShortcut()
+
+
+class OpenShortcut(Wizard):
+    'Open a shortcut'
+    _name = 'ir.ui.view_sc.open'
+
+    states = {
+        'init': {
+            'result': {
+                'type': 'action',
+                'action': '_open',
+                'state': 'end',
+            }
+        }
+    }
+
+    def _open(self, data):
+        view_sc_obj = self.pool.get('ir.ui.view_sc')
+        action_keyword_obj = self.pool.get('ir.action.keyword')
+
+        view_sc = view_sc_obj.browse(data['id'])
+        models = (
+                '%s,%d' % (view_sc.resource, view_sc.res_id),
+                '%s,0' % (view_sc.resource),
+                )
+        action_keyword_ids = None
+        for model in models:
+            action_keyword_ids = action_keyword_obj.search([
+                ('keyword', '=', 'tree_open'),
+                ('model', '=', model),
+                ])
+            if action_keyword_ids:
+                break
+        if not action_keyword_ids:
+            return {}
+        action_keyword = action_keyword_obj.browse(action_keyword_ids[0])
+        action_obj = self.pool.get(action_keyword.action.type)
+        action_ids = action_obj.search([
+            ('action.id', '=', action_keyword.action.id),
+            ])
+        if not action_ids:
+            return {}
+        return action_obj.read(action_ids[0])
+
+OpenShortcut()
+
+
 class ViewTreeWidth(ModelSQL, ModelView):
     "View Tree Width"
     _name = 'ir.ui.view_tree_width'
diff --git a/trytond/ir/ui/view.xml b/trytond/ir/ui/view.xml
index cdbcd28..33d6fd2 100644
--- a/trytond/ir/ui/view.xml
+++ b/trytond/ir/ui/view.xml
@@ -69,7 +69,9 @@ this repository contains the full copyright notices and license terms. -->
                 <![CDATA[
                 <form string="Shortcut">
                     <label name="name"/>
-                    <field name="name"/>
+                    <field name="name" colspan="3"/>
+                    <label name="resource"/>
+                    <field name="resource"/>
                     <label name="res_id"/>
                     <field name="res_id"/>
                     <label name="user_id"/>
@@ -113,6 +115,35 @@ this repository contains the full copyright notices and license terms. -->
         <menuitem parent="menu_ui"
             action="act_view_sc_form" id="menu_view_sc"/>
 
+        <record model="ir.ui.view" id="view_sc_view_board">
+            <field name="model">ir.ui.view_sc</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <![CDATA[
+                <tree string="Shortcuts" keyword_open="1" fill="1"
+                    sequence="sequence">
+                    <field name="name"/>
+                </tree>
+                ]]>
+            </field>
+        </record>
+
+        <record model="ir.action.wizard" id="act_view_sc_add">
+            <field name="name">Add Shortcut</field>
+            <field name="wiz_name">ir.ui.view_sc.add</field>
+        </record>
+
+        <record model="ir.action.wizard" id="act_view_sc_open">
+            <field name="name">Open Shortcut</field>
+            <field name="wiz_name">ir.ui.view_sc.open</field>
+        </record>
+
+        <record model="ir.action.keyword" id="act_view_sc_open_keyword1">
+            <field name="action" ref="act_view_sc_open"/>
+            <field name="keyword">tree_open</field>
+            <field name="model">ir.ui.view_sc,0</field>
+        </record>
+
         <record model="ir.ui.view" id="view_tree_width_view_form">
             <field name="model">ir.ui.view_tree_width</field>
             <field name="type">form</field>
diff --git a/trytond/model/browse.py b/trytond/model/browse.py
index f66a9eb..a23ac30 100644
--- a/trytond/model/browse.py
+++ b/trytond/model/browse.py
@@ -89,38 +89,39 @@ class BrowseRecord(object):
                         'does not exist in model "%s"!' \
                         % (name, self._model._name))
 
-            if not hasattr(col, 'get'):
-                # gen the list of "local" (ie not inherited)
-                ffields = [x for x in self._model._columns.items() \
-                        if not hasattr(x[1], 'get') \
-                        and (x[0] not in self._data[self._id] \
-                            or x[0] not in self._local_data[self._id]) \
-                        and ((not getattr(x[1], 'translate', False) \
-                                and x[1]._type not in ('text', 'binary')) \
-                            or x[0] == name)]
-                # gen the list of inherited fields
-                inherits = [(x[0], x[1][2]) for x in \
-                        self._model._inherit_fields.items()]
-                # complete the field list with the inherited fields
-                ffields += [x for x in inherits if not hasattr(x[1], 'get') \
-                        and (x[0] not in self._data[self._id] \
-                            or x[0] not in self._local_data[self._id]) \
-                        and x[0] not in self._model._columns \
-                        and ((not getattr(x[1], 'translate', False) \
-                                and x[1]._type not in ('text', 'binary')) \
-                            or x[0] == name)]
-            # otherwise we fetch only that field
+            if col.loading == 'eager':
+                field_access_obj = self._model.pool.get('ir.model.field.access')
+                fread_accesses = {}
+                for inherit_name in self._model._inherits:
+                    inherit_obj = self._model.pool.get(inherit_name)
+                    fread_accesses.update(field_access_obj.check(inherit_name,
+                        inherit_obj._columns.keys(), 'read', access=True))
+                fread_accesses.update(field_access_obj.check(self._model._name,
+                    self._model._columns.keys(), 'read', access=True))
+                to_remove = set(x for x, y in fread_accesses.iteritems()
+                        if not y and x != name)
+
+                ffields = dict((fname, field) for fname, (_, _, field)
+                        in self._model._inherit_fields.iteritems()
+                        if field.loading == 'eager'
+                        and fname not in self._model._columns
+                        and fname not in to_remove)
+                ffields.update(dict((fname, field) for fname, field
+                        in self._model._columns.iteritems()
+                        if field.loading == 'eager'
+                        and fname not in to_remove))
             else:
-                ffields = [(name, col)]
+                ffields = {name: col}
 
             # add datetime_field
-            for i, j in ffields:
-                if hasattr(j, 'datetime_field') and j.datetime_field:
-                    if j.datetime_field in self._model._columns:
-                        col = self._model._columns[j.datetime_field]
+            for field in ffields:
+                if hasattr(field, 'datetime_field') and field.datetime_field:
+                    if field.datetime_field in self._model._columns:
+                        date_field = self._model._columns[field.datetime_field]
                     else:
-                        col = self._model._inherit_fields[j.datetime_field][2]
-                    ffields.append((j.datetime_field, col))
+                        date_field = self._model._inherit_fields[
+                                field.datetime_field][2]
+                    ffields[field.datetime_field] = datetime_field
 
             if len(self._data) <= self._cursor.IN_MAX:
                 iterids = self._data.iterkeys()
@@ -133,11 +134,11 @@ class BrowseRecord(object):
             with contextlib.nested(Transaction().set_cursor(self._cursor),
                     Transaction().set_user(self._user),
                     Transaction().set_context(self._context)):
-                datas = self._model.read(ids, [x[0] for x in ffields])
+                datas = self._model.read(ids, ffields.keys())
 
                 # create browse records for 'remote' models
                 for data in datas:
-                    for i, j in ffields:
+                    for i, j in ffields.iteritems():
                         model = None
                         if (hasattr(j, 'model_name') and
                                 j.model_name in
@@ -145,7 +146,7 @@ class BrowseRecord(object):
                             model = self._model.pool.get(j.model_name)
                         elif hasattr(j, 'get_target'):
                             model = j.get_target(self._model.pool)
-                        if model and j._type in ('many2one',):
+                        if model and j._type in ('many2one', 'one2one'):
                             if (not data[i]
                                     and not (isinstance(data[i], (int, long))
                                         and not isinstance(data[i],
@@ -171,9 +172,7 @@ class BrowseRecord(object):
                                 data[i] = BrowseRecordList(BrowseRecord(
                                     x, model, local_cache=self._local_cache)
                                     for x in data[i])
-                        if (isinstance(j, fields.Function)
-                                or isinstance(data[i], (BrowseRecord,
-                                        BrowseRecordList))):
+                        if isinstance(j, fields.Function):
                             self._local_data.setdefault(data['id'], {})[i] = data[i]
                             del data[i]
                     self._data[data['id']].update(data)
diff --git a/trytond/model/fields/__init__.py b/trytond/model/fields/__init__.py
index b3cc710..eb8e16d 100644
--- a/trytond/model/fields/__init__.py
+++ b/trytond/model/fields/__init__.py
@@ -18,3 +18,4 @@ from one2many import *
 from many2many import *
 from function import *
 from property import *
+from one2one import *
diff --git a/trytond/model/fields/binary.py b/trytond/model/fields/binary.py
index 8263484..e7b2b8e 100644
--- a/trytond/model/fields/binary.py
+++ b/trytond/model/fields/binary.py
@@ -10,6 +10,22 @@ class Binary(Field):
     '''
     _type = 'binary'
 
+    def __init__(self, string='', help='', required=False, readonly=False,
+            domain=None, states=None, change_default=False, select=0,
+            on_change=None, on_change_with=None, depends=None, filename=None,
+            order_field=None, context=None, loading='lazy'):
+        if filename is not None:
+            self.filename = filename
+            if depends is None:
+                depends = [filename]
+            else:
+                depends.append(filename)
+        super(Binary, self).__init__(string=string, help=help,
+            required=required, readonly=readonly, domain=domain, states=states,
+            change_default=change_default, select=select, on_change=on_change,
+            on_change_with=on_change_with, depends=depends,
+            order_field=order_field, context=context, loading=loading)
+
     @staticmethod
     def get(ids, model, name, values=None):
         '''
diff --git a/trytond/model/fields/boolean.py b/trytond/model/fields/boolean.py
index 57ec0b5..046e2af 100644
--- a/trytond/model/fields/boolean.py
+++ b/trytond/model/fields/boolean.py
@@ -9,3 +9,16 @@ class Boolean(Field):
     Define a boolean field (``True`` or ``False``).
     '''
     _type = 'boolean'
+
+    def __init__(self, string='', help='', readonly=False, domain=None,
+            states=None, change_default=False, select=0, on_change=None,
+            on_change_with=None, depends=None, order_field=None, context=None,
+            loading='eager'):
+        super(Boolean, self).__init__(string=string, help=help, required=False,
+                readonly=readonly, domain=domain, states=states,
+                change_default=change_default, select=select,
+                on_change=on_change, on_change_with=on_change_with,
+                depends=depends, order_field=order_field, context=context,
+                loading=loading)
+
+    __init__.__doc__ = Field.__init__.__doc__
diff --git a/trytond/model/fields/char.py b/trytond/model/fields/char.py
index 1948b6b..09bba2b 100644
--- a/trytond/model/fields/char.py
+++ b/trytond/model/fields/char.py
@@ -3,6 +3,10 @@
 
 from trytond.model.fields.field import Field
 
+def autocomplete_validate(value):
+    if value:
+        assert isinstance(value, list), 'autocomplete must be a list'
+
 
 class Char(Field):
     '''
@@ -11,19 +15,31 @@ class Char(Field):
     _type = 'char'
 
     def __init__(self, string='', size=None, help='', required=False,
-            readonly=False, domain=None, states=None, priority=0,
-            change_default=False, translate=False, select=0, on_change=None,
-            on_change_with=None, depends=None, order_field=None, context=None):
+            readonly=False, domain=None, states=None, change_default=False,
+            translate=False, select=0, on_change=None, on_change_with=None,
+            depends=None, order_field=None, context=None, loading='eager',
+            autocomplete=None):
         '''
         :param translate: A boolean. If ``True`` the field is translatable.
         :param size: A integer. If set defines the maximum size of the values.
         '''
         super(Char, self).__init__(string=string, help=help, required=required,
                 readonly=readonly, domain=domain, states=states,
-                priority=priority, change_default=change_default,
-                select=select, on_change=on_change,
-                on_change_with=on_change_with, depends=depends,
-                order_field=order_field, context=context)
+                change_default=change_default, select=select,
+                on_change=on_change, on_change_with=on_change_with,
+                depends=depends, order_field=order_field, context=context,
+                loading=loading)
+        self.__autocomplete = None
+        self.autocomplete = autocomplete if autocomplete else None
         self.translate = translate
         self.size = size
     __init__.__doc__ += Field.__init__.__doc__
+
+    def _get_autocomplete(self):
+        return self.__autocomplete
+
+    def _set_autocomplete(self, value):
+        autocomplete_validate(value)
+        self.__autocomplete = value
+
+    autocomplete = property(_get_autocomplete, _set_autocomplete)
diff --git a/trytond/model/fields/field.py b/trytond/model/fields/field.py
index e9e7ec7..93e74ed 100644
--- a/trytond/model/fields/field.py
+++ b/trytond/model/fields/field.py
@@ -11,12 +11,11 @@ def domain_validate(value):
             if isinstance(arg, basestring):
                 if arg not in ('AND', 'OR'):
                     return False
-            elif (isinstance(arg, tuple)
-                or (isinstance(arg, list)
-                    and len(arg) > 2
-                    and ((arg[1] in OPERATORS)
-                        or (isinstance(arg[1], PYSON)
-                            and arg[1].types() == set([str]))))):
+            elif isinstance(arg, tuple) or \
+                    (isinstance(arg, list) and len(arg) > 2 and \
+                    (arg[1] in OPERATORS) or \
+                    (isinstance(arg[1], PYSON) and \
+                    arg[1].types() == set([str]))):
                 pass
             elif isinstance(arg, list):
                 if not test_domain(arg):
@@ -54,9 +53,9 @@ class Field(object):
     _type = None
 
     def __init__(self, string='', help='', required=False, readonly=False,
-            domain=None, states=None, priority=0, change_default=False,
-            select=0, on_change=None, on_change_with=None,
-            depends=None, order_field=None, context=None):
+            domain=None, states=None, change_default=False, select=0,
+            on_change=None, on_change_with=None, depends=None,
+            order_field=None, context=None, loading='eager'):
         '''
         :param string: A string for label of the field.
         :param help: A multi-line help string.
@@ -68,7 +67,6 @@ class Field(object):
             ``readonly`` and ``invisible``. Values are pyson expressions that
             will be evaluated with record values. This allows to change
             dynamically the attributes of the field.
-        :param priority: Give the order in which setter methods are called.
         :param change_default: A boolean. If ``True`` the field can be used as
         condition for a custom default value.
         :param select: An integer. When equal to ``1``, the field appears in the
@@ -86,6 +84,8 @@ class Field(object):
             ordering records on the field.
         :param context: A dictionary which will be given to open the relation
             fields.
+        :param loading: Define how the field must be loaded:
+            ``lazy`` or ``eager``.
         '''
         assert string, 'a string is required'
         self.string = string
@@ -96,7 +96,6 @@ class Field(object):
         self.domain = domain or []
         self.__states = None
         self.states = states or {}
-        self.priority = priority
         self.change_default = change_default
         self.select = select
         self.__on_change = None
@@ -108,6 +107,8 @@ class Field(object):
         self.order_field = order_field
         self.__context = None
         self.context = context or {}
+        assert loading in ('lazy', 'eager'), 'loading must be "lazy" or "eager"'
+        self.loading = loading
 
     def _get_domain(self):
         return self.__domain
diff --git a/trytond/model/fields/float.py b/trytond/model/fields/float.py
index 1fba8d8..d411c3f 100644
--- a/trytond/model/fields/float.py
+++ b/trytond/model/fields/float.py
@@ -22,19 +22,19 @@ class Float(Field):
     _type = 'float'
 
     def __init__(self, string='', digits=None,  help='', required=False,
-            readonly=False, domain=None, states=None, priority=0,
-            change_default=False, select=0, on_change=None,
-            on_change_with=None, depends=None, order_field=None, context=None):
+            readonly=False, domain=None, states=None, change_default=False,
+            select=0, on_change=None, on_change_with=None, depends=None,
+            order_field=None, context=None, loading='eager'):
         '''
         :param digits: a list of two integers defining the total
             of digits and the number of decimals of the float.
         '''
         super(Float, self).__init__(string=string, help=help,
                 required=required, readonly=readonly, domain=domain,
-                states=states, priority=priority,
-                change_default=change_default, select=select,
+                states=states, change_default=change_default, select=select,
                 on_change=on_change, on_change_with=on_change_with,
-                depends=depends, order_field=order_field, context=context)
+                depends=depends, order_field=order_field, context=context,
+                loading=loading)
         self.__digits = None
         self.digits = digits
 
diff --git a/trytond/model/fields/function.py b/trytond/model/fields/function.py
index 2c1f8bc..edc639b 100644
--- a/trytond/model/fields/function.py
+++ b/trytond/model/fields/function.py
@@ -14,12 +14,15 @@ class Function(Field):
     Define function field (any).
     '''
 
-    def __init__(self, field, getter, setter=None, searcher=None):
+    def __init__(self, field, getter, setter=None, searcher=None,
+            loading='lazy'):
         '''
         :param field: The field of the function.
         :param getter: The name of the function for getting values.
         :param setter: The name of the function to set value.
         :param searcher: The name of the function to search.
+        :param loading: Define how the field must be loaded:
+            ``lazy`` or ``eager``.
         '''
         assert isinstance(field, Field)
         self._field = field
@@ -29,6 +32,8 @@ class Function(Field):
         if not self.setter:
             self._field.readonly = True
         self.searcher = searcher
+        assert loading in ('lazy', 'eager'), 'loading must be "lazy" or "eager"'
+        self.loading = loading
 
     __init__.__doc__ += Field.__init__.__doc__
 
diff --git a/trytond/model/fields/many2many.py b/trytond/model/fields/many2many.py
index c5c07da..9a8769b 100644
--- a/trytond/model/fields/many2many.py
+++ b/trytond/model/fields/many2many.py
@@ -13,9 +13,9 @@ class Many2Many(Field):
 
     def __init__(self, relation_name, origin, target, string='', order=None,
             datetime_field=None, help='', required=False, readonly=False,
-            domain=None, states=None, priority=0, change_default=False,
-            select=0, on_change=None, on_change_with=None, depends=None,
-            order_field=None, context=None):
+            domain=None, states=None, change_default=False, select=0,
+            on_change=None, on_change_with=None, depends=None,
+            order_field=None, context=None, loading='lazy'):
         '''
         :param relation_name: The name of the relation model
             or the name of the target model for ModelView only.
@@ -34,10 +34,10 @@ class Many2Many(Field):
                 depends = [datetime_field]
         super(Many2Many, self).__init__(string=string, help=help,
                 required=required, readonly=readonly, domain=domain,
-                states=states, priority=priority,
-                change_default=change_default, select=select,
+                states=states, change_default=change_default, select=select,
                 on_change=on_change, on_change_with=on_change_with,
-                depends=depends, order_field=order_field, context=context)
+                depends=depends, order_field=order_field, context=context,
+                loading=loading)
         self.relation_name = relation_name
         self.origin = origin
         self.target = target
diff --git a/trytond/model/fields/many2one.py b/trytond/model/fields/many2one.py
index fa3a750..f544399 100644
--- a/trytond/model/fields/many2one.py
+++ b/trytond/model/fields/many2one.py
@@ -12,9 +12,9 @@ class Many2One(Field):
 
     def __init__(self, model_name, string='', left=None, right=None,
             ondelete='SET NULL', datetime_field=None, help='', required=False,
-            readonly=False, domain=None, states=None, priority=0,
-            change_default=False, select=0, on_change=None,
-            on_change_with=None, depends=None, order_field=None, context=None):
+            readonly=False, domain=None, states=None, change_default=False,
+            select=0, on_change=None, on_change_with=None, depends=None,
+            order_field=None, context=None, loading='eager'):
         '''
         :param model_name: The name of the target model.
         :param left: The name of the field to store the left value for
@@ -38,10 +38,10 @@ class Many2One(Field):
                 depends = [datetime_field]
         super(Many2One, self).__init__(string=string, help=help,
                 required=required, readonly=readonly, domain=domain,
-                states=states, priority=priority,
-                change_default=change_default, select=select,
+                states=states, change_default=change_default, select=select,
                 on_change=on_change, on_change_with=on_change_with,
-                depends=depends, order_field=order_field, context=context)
+                depends=depends, order_field=order_field, context=context,
+                loading=loading)
         self.model_name = model_name
         self.left = left
         self.right = right
diff --git a/trytond/model/fields/one2many.py b/trytond/model/fields/one2many.py
index bde2f1d..a02a4f9 100644
--- a/trytond/model/fields/one2many.py
+++ b/trytond/model/fields/one2many.py
@@ -17,9 +17,9 @@ class One2Many(Field):
 
     def __init__(self, model_name, field, string='', add_remove=None,
             order=None, datetime_field=None, help='', required=False,
-            readonly=False, domain=None, states=None, priority=0,
-            change_default=False, select=0, on_change=None,
-            on_change_with=None, depends=None, order_field=None, context=None):
+            readonly=False, domain=None, states=None, change_default=False,
+            select=0, on_change=None, on_change_with=None, depends=None,
+            order_field=None, context=None, loading='lazy'):
         '''
         :param model_name: The name of the target model.
         :param field: The name of the field that handle the reverse many2one.
@@ -38,10 +38,10 @@ class One2Many(Field):
                 depends = [datetime_field]
         super(One2Many, self).__init__(string=string, help=help,
                 required=required, readonly=readonly, domain=domain,
-                states=states, priority=priority,
-                change_default=change_default, select=select,
+                states=states, change_default=change_default, select=select,
                 on_change=on_change, on_change_with=on_change_with,
-                depends=depends, order_field=order_field, context=context)
+                depends=depends, order_field=order_field, context=context,
+                loading=loading)
         self.model_name = model_name
         self.field = field
         self.__add_remove = None
diff --git a/trytond/model/fields/one2one.py b/trytond/model/fields/one2one.py
new file mode 100644
index 0000000..d3ad640
--- /dev/null
+++ b/trytond/model/fields/one2one.py
@@ -0,0 +1,48 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+
+from trytond.model.fields.many2many import Many2Many
+from trytond.transaction import Transaction
+
+
+class One2One(Many2Many):
+    '''
+    Define one2one field (``int``).
+    '''
+    _type = 'one2one'
+
+    def get(self, ids, model, name, values=None):
+        '''
+        Return target record.
+
+        :param ids: a list of ids
+        :param model: a string with the name of the model
+        :param name: a string with the name of the field
+        :param values: a dictionary with the read values
+        :return: a dictionary with ids as key and target id as value
+        '''
+        res = super(One2One, self).get(ids, model, name, values=values)
+        for i, vals in res.iteritems():
+            res[i] = vals[0] if vals else False
+        return res
+
+    def set(self, ids, model, name, value):
+        '''
+        Set the values.
+
+        :param ids: A list of ids
+        :param model: A string with the name of the model
+        :param name: A string with the name of the field
+        :param value: The id to link
+        '''
+        relation_obj = model.pool.get(self.relation_name)
+        relation_ids = relation_obj.search([
+            (self.origin, 'in', ids),
+            ])
+        relation_obj.delete(relation_ids)
+        if value:
+            for record_id in ids:
+                relation_obj.create({
+                    self.origin: record_id,
+                    self.target: value,
+                    })
diff --git a/trytond/model/fields/reference.py b/trytond/model/fields/reference.py
index ea6dcb0..db66492 100644
--- a/trytond/model/fields/reference.py
+++ b/trytond/model/fields/reference.py
@@ -14,9 +14,9 @@ class Reference(Field):
     _type = 'reference'
 
     def __init__(self, string='', selection=None, help='', required=False,
-            readonly=False, domain=None, states=None, priority=0,
-            change_default=False, select=0, on_change=None,
-            on_change_with=None, depends=None, order_field=None, context=None):
+            readonly=False, domain=None, states=None, change_default=False,
+            select=0, on_change=None, on_change_with=None, depends=None,
+            order_field=None, context=None, loading='eager'):
         '''
         :param selection: A list or a function name that returns a list.
             The list must be a list of tuples. First member is an internal name
@@ -24,10 +24,10 @@ class Reference(Field):
         '''
         super(Reference, self).__init__(string=string, help=help,
                 required=required, readonly=readonly, domain=domain,
-                states=states, priority=priority,
-                change_default=change_default, select=select,
+                states=states, change_default=change_default, select=select,
                 on_change=on_change, on_change_with=on_change_with,
-                depends=depends, order_field=order_field, context=context)
+                depends=depends, order_field=order_field, context=context,
+                loading=loading)
         self.selection = selection or None
 
     __init__.__doc__ += Field.__init__.__doc__
diff --git a/trytond/model/fields/selection.py b/trytond/model/fields/selection.py
index 1b4ffd1..66ff9f3 100644
--- a/trytond/model/fields/selection.py
+++ b/trytond/model/fields/selection.py
@@ -12,8 +12,9 @@ class Selection(Field):
 
     def __init__(self, selection, string='', sort=True, translate=True,
             help='', required=False, readonly=False, domain=None, states=None,
-            priority=0, change_default=False, select=0, on_change=None,
-            on_change_with=None, depends=None, order_field=None, context=None):
+            change_default=False, select=0, on_change=None,
+            on_change_with=None, depends=None, order_field=None, context=None,
+            loading='eager'):
         '''
         :param selection: A list or a function name that returns a list.
             The list must be a list of tuples. First member is the value
@@ -22,10 +23,10 @@ class Selection(Field):
         '''
         super(Selection, self).__init__(string=string,  help=help,
                 required=required, readonly=readonly, domain=domain,
-                states=states, priority=priority, change_default=change_default,
-                select=select, on_change=on_change,
-                on_change_with=on_change_with, depends=depends,
-                order_field=order_field, context=context)
+                states=states, change_default=change_default, select=select,
+                on_change=on_change, on_change_with=on_change_with,
+                depends=depends, order_field=order_field, context=context,
+                loading=loading)
         if hasattr(selection, 'copy'):
             self.selection = selection.copy()
         else:
diff --git a/trytond/model/model.py b/trytond/model/model.py
index bc1d952..716752a 100644
--- a/trytond/model/model.py
+++ b/trytond/model/model.py
@@ -3,12 +3,13 @@
 
 import copy
 from trytond.model import fields
+from trytond.error import WarningErrorMixin
 from trytond.pool import Pool
 from trytond.pyson import PYSONEncoder
 from trytond.transaction import Transaction
 
 
-class Model(object):
+class Model(WarningErrorMixin):
     """
     Define a model in Tryton.
     """
@@ -52,8 +53,9 @@ class Model(object):
         fields_names = self._columns.keys()
         fields_names += self._inherit_fields.keys()
         for field_name in fields_names:
-            if getattr(self, 'default_' + field_name, False):
-                res[field_name] = getattr(self, 'default_' + field_name)
+            default_method = getattr(self, 'default_%s' % field_name, False)
+            if callable(default_method):
+                res[field_name] = default_method
         self.__defaults = res
         return res
 
@@ -92,14 +94,12 @@ class Model(object):
                     and not isinstance(field.selection, (list, tuple)) \
                     and field.selection not in self._rpc:
                 self._rpc[field.selection] = False
-            if field.on_change:
-                on_change = 'on_change_' + field_name
-                if on_change not in self._rpc:
-                    self._rpc[on_change] = False
-            if field.on_change_with:
-                on_change_with = 'on_change_with_' + field_name
-                if on_change_with not in self._rpc:
-                    self._rpc[on_change_with] = False
+
+            for attribute in ('on_change', 'on_change_with', 'autocomplete'):
+                function_name = '%s_%s' % (attribute, field_name)
+                if (getattr(field, attribute, False)
+                        and callable(getattr(self, function_name, False))):
+                    self._rpc.setdefault(function_name, False)
 
     def __getattr__(self, name):
         # Search if a function exists in inherits parents
@@ -107,24 +107,8 @@ class Model(object):
             model_obj = self.pool.get(model_name)
             if hasattr(model_obj, name) and \
                     callable(getattr(model_obj, name)):
-                def func(*args, **kwargs):
-                    if args:
-                        ids = args[0]
-                        int_id = False
-                        if isinstance(ids, (int, long)):
-                            int_id = True
-                            ids = [ids]
-                        if reduce(lambda x, y: x and
-                                isinstance(y, (int, long)), ids, True):
-                            # Replace ids by the parent ids
-                            ids = [getattr(x, field_name).id for x in
-                                    self.browse(ids)]
-                        if int_id:
-                            ids = ids[0]
-                        args = tuple([ids] + list(args[1:]))
-                    return getattr(model_obj, name)(*args, **kwargs)
-                return func
-        raise AttributeError
+                return getattr(model_obj, name)
+        raise AttributeError(name)
 
     def _inherits_reload(self):
         """
@@ -202,6 +186,7 @@ class Model(object):
 
         :param module_name: the module name
         """
+        translation_obj = self.pool.get('ir.translation')
 
         cursor = Transaction().cursor
         # Add model in ir_model
@@ -244,16 +229,18 @@ class Model(object):
                     trans_id, = data
             elif cursor.rowcount != 0:
                 trans_id, = cursor.fetchone()
+            src_md5 = translation_obj.get_src_md5(src)
             if not trans_id:
-                cursor.execute('INSERT INTO ir_translation ' \
-                        '(name, lang, type, src, value, module, fuzzy) ' \
-                        'VALUES (%s, %s, %s, %s, %s, %s, %s)',
-                        (name, 'en_US', 'model', src, '', module_name, False))
+                cursor.execute('INSERT INTO ir_translation '
+                    '(name, lang, type, src, src_md5, value, module, fuzzy) '
+                    'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)',
+                    (name, 'en_US', 'model', src, src_md5, '', module_name,
+                        False))
             else:
-                cursor.execute('UPDATE ir_translation ' \
-                        'SET src = %s ' \
-                        'WHERE id = %s',
-                        (src, trans_id))
+                cursor.execute('UPDATE ir_translation '
+                    'SET src = %s, src_md5 = %s '
+                    'WHERE id = %s',
+                        (src, src_md5, trans_id))
 
         # Add field in ir_model_field and update translation
         cursor.execute('SELECT f.id AS id, f.name AS name, ' \
@@ -317,31 +304,33 @@ class Model(object):
                         (field.string, field._type, relation,
                             field.help, model_fields[field_name]['id']))
             trans_name = self._name + ',' + field_name
+            string_md5 = translation_obj.get_src_md5(field.string)
             if trans_name not in trans_fields:
                 if field_name not in ('create_uid', 'create_date',
                             'write_uid', 'write_date', 'id'):
-                    cursor.execute('INSERT INTO ir_translation ' \
-                            '(name, lang, type, src, value, module, fuzzy) ' \
-                            'VALUES (%s, %s, %s, %s, %s, %s, %s)',
-                            (trans_name, 'en_US', 'field',
-                                field.string, '', module_name, False))
+                    cursor.execute('INSERT INTO ir_translation '
+                        '(name, lang, type, src, src_md5, value, module, fuzzy) '
+                        'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)',
+                        (trans_name, 'en_US', 'field', field.string,
+                            string_md5, '', module_name, False))
             elif trans_fields[trans_name]['src'] != field.string:
-                cursor.execute('UPDATE ir_translation ' \
-                        'SET src = %s ' \
-                        'WHERE id = %s ',
-                        (field.string, trans_fields[trans_name]['id']))
+                cursor.execute('UPDATE ir_translation '
+                    'SET src = %s, src_md5 = %s '
+                    'WHERE id = %s ',
+                    (field.string, string_md5, trans_fields[trans_name]['id']))
+            help_md5 = translation_obj.get_src_md5(field.help)
             if trans_name not in trans_help:
                 if field.help:
-                    cursor.execute('INSERT INTO ir_translation ' \
-                            '(name, lang, type, src, value, module, fuzzy) ' \
-                            'VALUES (%s, %s, %s, %s, %s, %s, %s)',
-                            (trans_name, 'en_US', 'help',
-                                field.help, '', module_name, False))
+                    cursor.execute('INSERT INTO ir_translation '
+                        '(name, lang, type, src, src_md5, value, module, fuzzy) '
+                        'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)',
+                        (trans_name, 'en_US', 'help', field.help, help_md5, '',
+                            module_name, False))
             elif trans_help[trans_name]['src'] != field.help:
-                cursor.execute('UPDATE ir_translation ' \
-                        'SET src = %s ' \
-                        'WHERE id = %s ',
-                        (field.help, trans_help[trans_name]['id']))
+                cursor.execute('UPDATE ir_translation '
+                    'SET src = %s, src_md5 = %s '
+                    'WHERE id = %s ',
+                    (field.help, help_md5, trans_help[trans_name]['id']))
             if hasattr(field, 'selection') \
                     and isinstance(field.selection, (tuple, list)) \
                     and ((hasattr(field, 'translate_selection') \
@@ -350,12 +339,13 @@ class Model(object):
                 for (_, val) in field.selection:
                     if trans_name not in trans_selection \
                             or val not in trans_selection[trans_name]:
-                        cursor.execute('INSERT INTO ir_translation ' \
-                                '(name, lang, type, src, value, ' \
-                                    'module, fuzzy) ' \
-                                'VALUES (%s, %s, %s, %s, %s, %s, %s)',
-                                (trans_name, 'en_US', 'selection', val, '',
-                                    module_name, False))
+                        val_md5 = translation_obj.get_src_md5(val)
+                        cursor.execute('INSERT INTO ir_translation '
+                            '(name, lang, type, src, src_md5, value, module, '
+                                'fuzzy) '
+                            'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)',
+                            (trans_name, 'en_US', 'selection', val, val_md5,
+                                '', module_name, False))
         # Clean ir_model_field from field that are no more existing.
         for field_name in model_fields:
             if model_fields[field_name]['module'] == module_name \
@@ -379,117 +369,16 @@ class Model(object):
         errors = self._get_error_messages()
         for error in set(errors):
             if error not in trans_error:
-                cursor.execute('INSERT INTO ir_translation ' \
-                        '(name, lang, type, src, value, module, fuzzy) ' \
-                        'VALUES (%s, %s, %s, %s, %s, %s, %s)',
-                        (self._name, 'en_US', 'error', error, '', module_name,
-                            False))
+                error_md5 = translation_obj.get_src_md5(error)
+                cursor.execute('INSERT INTO ir_translation '
+                    '(name, lang, type, src, src_md5, value, module, fuzzy) '
+                    'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)',
+                    (self._name, 'en_US', 'error', error, error_md5, '',
+                        module_name, False))
 
     def _get_error_messages(self):
         return self._error_messages.values()
 
-    def raise_user_error(self, error, error_args=None,
-            error_description='', error_description_args=None,
-            raise_exception=True):
-        '''
-        Raise an exception that will be displayed as an error message
-        in the client.
-
-        :param error: the key of the dictionary _error_messages used
-            for error message
-        :param error_args: the arguments that will be used
-            for "%"-based substitution
-        :param error_description: the key of the dictionary
-            _error_messages used for error description
-        :param error_description_args: the arguments that will be used
-            for "%"-based substitution
-        :param raise_exception: if set to False return the error string
-            (or tuple if error_description is not empty) instead of raising an
-            exception.
-        '''
-        translation_obj = self.pool.get('ir.translation')
-
-        error = self._error_messages.get(error, error)
-
-        language = Transaction().context.get('language') or 'en_US'
-        res = translation_obj._get_source(self._name, 'error', language, error)
-        if not res:
-            res = translation_obj._get_source(error, 'error', language)
-        if not res:
-            res = translation_obj._get_source(error, 'error', 'en_US')
-
-        if res:
-            error = res
-
-        if error_args:
-            try:
-                error = error % error_args
-            except TypeError:
-                pass
-
-        if error_description:
-            error_description = self._error_messages.get(error_description,
-                    error_description)
-
-            res = translation_obj._get_source(self._name, 'error', language,
-                    error_description)
-            if not res:
-                res = translation_obj._get_source(error_description, 'error',
-                        language)
-            if not res:
-                res = translation_obj._get_source(error_description, 'error',
-                        'en_US')
-
-            if res:
-                error_description = res
-
-            if error_description_args:
-                try:
-                    error_description = error_description % \
-                            error_description_args
-                except TypeError:
-                    pass
-            if raise_exception:
-                raise Exception('UserError', error, error_description)
-            else:
-                return (error, error_description)
-        if raise_exception:
-            raise Exception('UserError', error)
-        else:
-            return error
-
-    def raise_user_warning(self, warning_name, warning,
-            warning_args=None, warning_description='',
-            warning_description_args=None):
-        '''
-        Raise an exception that will be displayed as a warning message
-        in the client, if the user has not yet bypassed it.
-
-        :param warning_name: the unique warning name
-        :param warning: the key of the dictionary _error_messages used
-            for warning message
-        :param warning_args: the arguments that will be used for
-            "%"-based substitution
-        :param warning_description: the key of the dictionary
-            _error_messages used for warning description
-        :param warning_description_args: the arguments that will be used
-            for "%"-based substitution
-        '''
-        warning_obj = self.pool.get('res.user.warning')
-        if warning_obj.check(warning_name):
-            if warning_description:
-                warning, warning_description = self.raise_user_error(warning,
-                        error_args=warning_args,
-                        error_description=warning_description,
-                        error_description_args=warning_description_args,
-                        raise_exception=False)
-                raise Exception('UserWarning', warning_name, warning,
-                        warning_description)
-            else:
-                warning = self.raise_user_error(warning,
-                        error_args=warning_args, raise_exception=False)
-                raise Exception('UserWarning', warning_name, warning)
-
     def default_get(self, fields_names, with_rec_name=True):
         '''
         Return a dict with the default values for each field in fields_names.
@@ -500,7 +389,6 @@ class Model(object):
             and default value as value
         '''
         property_obj = self.pool.get('ir.property')
-        ir_default_obj = self.pool.get('ir.default')
         value = {}
 
         # get the default values defined in the object
@@ -524,70 +412,6 @@ class Model(object):
                     value[field_name + '.rec_name'] = obj.browse(
                         value[field_name]).rec_name
 
-        # get the default values set by the user and override the default
-        # values defined in the object
-        for name in (self._inherits.keys() + [self._name]):
-            defaults = ir_default_obj.get_default(name, False)
-            for field_name, field_value in defaults.items():
-                if field_name in fields_names:
-                    if field_name in self._columns:
-                        field = self._columns[field_name]
-                    else:
-                        field = self._inherit_fields[field_name][2]
-                    if field._type in ('many2one',):
-                        if not isinstance(field_value, (int, long)):
-                            continue
-                        obj = self.pool.get(field.model_name)
-                        if not hasattr(obj, 'search') \
-                                or not obj.search([
-                                    ('id', '=', field_value),
-                                    ]):
-                            continue
-                        if with_rec_name and 'rec_name' in obj._columns:
-                            value[field_name + '.rec_name'] = obj.browse(
-                                    field_value).rec_name
-                    if field._type in ('many2many'):
-                        if not isinstance(field_value, list):
-                            continue
-                        obj = field.get_target(self.pool)
-                        field_value2 = []
-                        for i in range(len(field_value)):
-                            if not hasattr(obj, 'search') \
-                                    or not obj.search([
-                                        ('id', '=', field_value[i]),
-                                        ]):
-                                continue
-                            field_value2.append(field_value[i])
-                        field_value = field_value2
-                    if field._type in ('one2many'):
-                        if not isinstance(field_value, list):
-                            continue
-                        obj = self.pool.get(field.model_name)
-                        field_value2 = []
-                        for i in range(len(field_value or [])):
-                            field_value2.append({})
-                            for field2 in field_value[i].keys():
-                                if (field2 in obj._columns
-                                        and obj._columns[field2]._type
-                                        in ('many2one',)):
-                                    obj2 = self.pool.get(
-                                            obj._columns[field2].model_name)
-                                    if not hasattr(obj2, 'search'):
-                                        continue
-                                    if not obj2.search([
-                                        ('id', '=', field_value[i][field2]),
-                                        ]):
-                                        continue
-                                    if (with_rec_name
-                                            and 'rec_name' in obj2._columns):
-                                        field_value[i][field2 + '.rec_name'] = (
-                                                obj2.browse(
-                                                    field_value[i][field2],
-                                                    ).rec_name)
-                                # TODO add test for many2many and one2many
-                                field_value2[i][field2] = field_value[i][field2]
-                        field_value = field_value2
-                    value[field_name] = field_value
         value = self._default_on_change(value)
         if not with_rec_name:
             for field in value.keys():
@@ -635,6 +459,8 @@ class Model(object):
         res = {}
         translation_obj = self.pool.get('ir.translation')
         model_access_obj = self.pool.get('ir.model.access')
+        field_access_obj = self.pool.get('ir.model.field.access')
+
         for parent in self._inherits:
             res.update(self.pool.get(parent).fields_get(fields_names))
         write_access = model_access_obj.check(self._name, 'write',
@@ -664,6 +490,8 @@ class Model(object):
 
         encoder = PYSONEncoder()
 
+        fwrite_accesses = field_access_obj.check(self._name, fields_names or
+                self._columns.keys(), 'write', access=True)
         for field in (x for x in self._columns.keys()
                 if ((not fields_names) or x in fields_names)):
             res[field] = {'type': self._columns[field]._type}
@@ -680,13 +508,16 @@ class Model(object):
                     'on_change',
                     'add_remove',
                     'on_change_with',
+                    'autocomplete',
                     'sort',
                     'datetime_field',
+                    'loading',
+                    'filename',
                     ):
-                if getattr(self._columns[field], arg, None) != None:
+                if getattr(self._columns[field], arg, None) is not None:
                     res[field][arg] = copy.copy(getattr(self._columns[field],
                         arg))
-            if not write_access:
+            if not write_access or not fwrite_accesses.get(field, True):
                 res[field]['readonly'] = True
                 if res[field].get('states') and \
                         'readonly' in res[field]['states']:
@@ -740,6 +571,7 @@ class Model(object):
                     'one2many',
                     'many2many',
                     'many2one',
+                    'one2one',
                     ):
                 if hasattr(self._columns[field], 'model_name'):
                     relation = copy.copy(self._columns[field].model_name)
diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py
index d3a9914..ba2de45 100644
--- a/trytond/model/modelsql.py
+++ b/trytond/model/modelsql.py
@@ -253,9 +253,8 @@ class ModelSQL(ModelStorage):
                             'write_uid', 'write_date'):
                 default.append(i)
         for i in self._inherit_fields.keys():
-            if ((not i in values)
-                    and (not self._inherit_fields[i][0] in avoid_table)
-                    and i in self._defaults):
+            if (not i in values) \
+                    and (not self._inherit_fields[i][0] in avoid_table):
                 default.append(i)
 
         if len(default):
@@ -266,8 +265,6 @@ class ModelSQL(ModelStorage):
                 if field in ('create_uid', 'create_date',
                         'write_uid', 'write_date'):
                     del defaults[field]
-                if field in values:
-                    del defaults[field]
             values.update(self._clean_defaults(defaults))
 
         (upd0, upd1, upd2) = ('', '', [])
@@ -394,8 +391,6 @@ class ModelSQL(ModelStorage):
                         self._name + ',' + field, 'model',
                         Transaction().language, [id_new], values[field])
 
-        upd_todo.sort(lambda x, y: self._columns[x].priority - \
-                self._columns[y].priority)
         for field in upd_todo:
             self._columns[field].set([id_new], self, field, values[field])
 
@@ -635,8 +630,11 @@ class ModelSQL(ModelStorage):
             if field not in fields_related.keys():
                 continue
             fields_related2values.setdefault(field, {})
-            if self._columns[field]._type == 'many2one':
-                obj = self.pool.get(self._columns[field].model_name)
+            if self._columns[field]._type in ('many2one', 'one2one'):
+                if hasattr(self._columns[field], 'model_name'):
+                    obj = self.pool.get(self._columns[field].model_name)
+                else:
+                    obj = self._columns[field].get_target(self.pool)
                 if hasattr(self._columns[field], 'datetime_field') \
                         and self._columns[field].datetime_field:
                     for record in res:
@@ -681,7 +679,7 @@ class ModelSQL(ModelStorage):
                     if field not in self._columns:
                         continue
                     for related in fields_related[field]:
-                        if self._columns[field]._type == 'many2one':
+                        if self._columns[field]._type in ('many2one', 'one2one'):
                             if record[field]:
                                 record[field + '.' + related] = \
                                         fields_related2values[field]\
@@ -898,8 +896,6 @@ class ModelSQL(ModelStorage):
                         Transaction().language, ids, values[field])
 
         # call the 'set' method of fields
-        upd_todo.sort(lambda x, y: self._columns[x].priority - \
-                self._columns[y].priority)
         for field in upd_todo:
             self._columns[field].set(ids, self, field, values[field])
 
@@ -1178,12 +1174,12 @@ class ModelSQL(ModelStorage):
                     self._table + '".create_date) AS _datetime']
         if not query_string:
             select_fields += [
-                    '"' + self._table + '"."' + x[0] + '" AS "' + x[0] + '"' \
-                    for x in self._columns.iteritems() \
-                    if not hasattr(x[1], 'get') \
-                    and (x[0] != 'id')
-                    and (not getattr(x[1], 'translate', False) \
-                        and x[1]._type not in ('text', 'binary'))]
+                    '"' + self._table + '"."' + name + '" AS "' + name + '"' \
+                    for name, field in self._columns.iteritems() \
+                    if not hasattr(field, 'get')
+                    and name != 'id'
+                    and not getattr(field, 'translate', False)
+                    and field.loading == 'eager']
             if not self.table_query():
                 select_fields += ['CAST(EXTRACT(EPOCH FROM '
                         '(COALESCE("' + self._table + '".write_date, '
@@ -1347,7 +1343,7 @@ class ModelSQL(ModelStorage):
                     table_query = '(' + table_query + ') AS '
                 table_join = 'LEFT JOIN ' + table_query + \
                         '"' + itable._table + '" ON ' \
-                        '"%s".id = "%s"."%s"' % (itable._table, self._table,
+                        '"%s".id = "%s".%s' % (itable._table, self._table,
                                 self._inherits[itable._name])
                 if table_join not in tables:
                     tables.append(table_join)
@@ -1361,18 +1357,41 @@ class ModelSQL(ModelStorage):
                 field = table._columns.get(fargs[0], False)
             if len(fargs) > 1:
                 if field._type == 'many2one':
+                    target_obj = self.pool.get(field.model_name)
                     if hasattr(field, 'search'):
-                        domain.extend([(fargs[0], 'in',
-                                self.pool.get(field.model_name).search([
-                                        (fargs[1], domain[i][1], domain[i][2]),
-                                    ], order=[]))])
+                        domain.extend([(fargs[0], 'in', target_obj.search([
+                            (fargs[1], domain[i][1], domain[i][2]),
+                            ], order=[]))])
                         domain.pop(i)
                     else:
-                        domain[i] = (fargs[0], 'inselect',
-                                self.pool.get(field.model_name).search([
-                                        (fargs[1], domain[i][1], domain[i][2]),
-                                    ], order=[], query_string=True),
-                                table)
+                        domain[i] = (fargs[0], 'inselect', target_obj.search([
+                            (fargs[1], domain[i][1], domain[i][2]),
+                            ], order=[], query_string=True), table)
+                        i += 1
+                    continue
+                elif field._type in ('one2one', 'many2many', 'one2many'):
+                    if hasattr(field, 'model_name'):
+                        target_obj = self.pool.get(field.model_name)
+                    else:
+                        target_obj = field.get_target(self.pool)
+                    if hasattr(field, 'relation_name'):
+                        relation_obj = self.pool.get(field.relation_name)
+                        origin, target = field.origin, field.target
+                    else:
+                        relation_obj = target_obj
+                        origin, target = field.field, 'id'
+                    if hasattr(field, 'search'):
+                        domain.extend([(fargs[0], 'in', target_obj.search([
+                            (fargs[1], domain[i][1], domain[i][2]),
+                            ], order=[]))])
+                        domain.pop(i)
+                    else:
+                        query1, query2 = target_obj.search([
+                            (fargs[1], domain[i][1], domain[i][2]),
+                            ], order=[], query_string=True)
+                        query1 = ('SELECT "%s" FROM "%s" WHERE "%s" IN (%s)' %
+                                (origin, relation_obj._table, target, query1))
+                        domain[i] = ('id', 'inselect', (query1, query2))
                         i += 1
                     continue
                 else:
@@ -1436,7 +1455,7 @@ class ModelSQL(ModelStorage):
 
                         domain[i] = ('id', 'in', ids3)
                 i += 1
-            elif field._type == 'many2many':
+            elif field._type in ('many2many', 'one2one'):
                 # XXX must find a solution for long id list
                 if hasattr(field, 'model_name'):
                     target_obj = self.pool.get(field.model_name)
@@ -1581,7 +1600,7 @@ class ModelSQL(ModelStorage):
                     if isinstance(domain[i][2], basestring):
                         field_obj = self.pool.get(field.model_name)
                         res_ids = field_obj.search([
-                            ('rec_name', domain[i][1], domain[i][2]),
+                            (field_obj._rec_name, domain[i][1], domain[i][2]),
                             ], order=[])
                         domain[i] = (domain[i][0], 'in', res_ids, table)
                     else:
@@ -1816,7 +1835,7 @@ class ModelSQL(ModelStorage):
                             otype)
                     table_join = 'LEFT JOIN "' + table_name + '" AS ' \
                             '"' + table_name + '.' + link_field + '" ON ' \
-                            '"%s.%s".id = "%s"."%s"' % (table_name, link_field,
+                            '"%s.%s".id = "%s".%s' % (table_name, link_field,
                                     self._table, link_field)
                     for i in range(len(order_by)):
                         if table_name in order_by[i]:
@@ -1852,7 +1871,7 @@ class ModelSQL(ModelStorage):
 
                     table_join = 'LEFT JOIN "' + table_name + '" AS ' \
                             '"' + table_name + '.' + link_field + '" ON ' \
-                            '"%s.%s".id = "%s"."%s"' % \
+                            '"%s.%s".id = "%s".%s' % \
                             (table_name, link_field, self._table, link_field)
                     for i in range(len(order_by)):
                         if table_name in order_by[i]:
@@ -1871,7 +1890,7 @@ class ModelSQL(ModelStorage):
 
                     table_join2 = 'LEFT JOIN "' + table_name2 + '" AS ' \
                             '"' + table_name2 + '.' + link_field2 + '" ON ' \
-                            '"%s.%s".id = "%s.%s"."%s"' % \
+                            '"%s.%s".id = "%s.%s".%s' % \
                             (table_name2, link_field2, table_name, link_field,
                                     link_field2)
                     for i in range(len(order_by)):
@@ -1979,7 +1998,7 @@ class ModelSQL(ModelStorage):
             link_field = self._inherits[obj._name]
             order_by, tables, tables_args = obj._order_calc(field, otype)
             table_join = 'LEFT JOIN "' + table_name + '" ON ' \
-                    '"%s".id = "%s"."%s"' % \
+                    '"%s".id = "%s".%s' % \
                     (table_name, self._table, link_field)
             if table_join not in tables:
                 tables.insert(0, table_join)
diff --git a/trytond/model/modelstorage.py b/trytond/model/modelstorage.py
index 8203d01..b21b40d 100644
--- a/trytond/model/modelstorage.py
+++ b/trytond/model/modelstorage.py
@@ -21,7 +21,6 @@ from trytond.tools import safe_eval, reduce_domain
 from trytond.pyson import PYSONEncoder, PYSONDecoder, PYSON
 from trytond.const import OPERATORS
 from trytond.transaction import Transaction
-from trytond.config import CONFIG
 
 
 class ModelStorage(Model):
@@ -83,7 +82,11 @@ class ModelStorage(Model):
         :return: the id of the created record
         '''
         model_access_obj = self.pool.get('ir.model.access')
+        model_field_access_obj = self.pool.get('ir.model.field.access')
+
         model_access_obj.check(self._name, 'create')
+        model_field_access_obj.check(self._name,
+                [x for x in values if x in self._columns], 'write')
         self.__clean_xxx2many_cache()
         return False
 
@@ -114,8 +117,11 @@ class ModelStorage(Model):
             and fields value as value. The list will not be in the same order.
         '''
         model_access_obj = self.pool.get('ir.model.access')
+        model_field_access_obj = self.pool.get('ir.model.field.access')
 
         model_access_obj.check(self._name, 'read')
+        model_field_access_obj.check(self._name,
+                fields_names or self._columns.keys(), 'read')
         if isinstance(ids, (int, long)):
             return {}
         return []
@@ -130,8 +136,11 @@ class ModelStorage(Model):
         :return: True if succeed
         '''
         model_access_obj = self.pool.get('ir.model.access')
+        model_field_access_obj = self.pool.get('ir.model.field.access')
 
         model_access_obj.check(self._name, 'write')
+        model_field_access_obj.check(self._name,
+                [x for x in values if x in self._columns], 'write')
         if not self.check_xml_record(ids, values):
             self.raise_user_error('write_xml_record',
                     error_description='xml_record_desc')
@@ -279,7 +288,7 @@ class ModelStorage(Model):
                     data[field_name] = default[field_name]
                 elif ftype == 'function':
                     del data[field_name]
-                elif ftype == 'many2one':
+                elif ftype in ('many2one', 'one2one'):
                     try:
                         data[field_name] = data[field_name] and \
                                 data[field_name][0]
@@ -523,13 +532,7 @@ class ModelStorage(Model):
                     break
                 field_name = fields_tree[i]
                 model_obj = self.pool.get(value._model_name)
-                if field_name in model_obj._columns:
-                    field = model_obj._columns[field_name]
-                elif field_name in model_obj._inherit_fields:
-                    field = model_obj._inherit_fields[field_name][2]
-                else:
-                    raise Exception('Field %s not available on object "%s"'
-                        % (field_name, model_obj._name))
+                field = model_obj._columns[field_name]
                 if field.states and 'invisible' in field.states:
                     pyson_invisible = PYSONEncoder().encode(
                             field.states['invisible'])
@@ -656,6 +659,9 @@ class ModelStorage(Model):
                     res = [('set', res)]
                 return res
 
+            def get_one2one(relation, value):
+                return ('set', get_many2one(relation, value))
+
             def get_reference(value):
                 if not value:
                     return False
@@ -757,6 +763,8 @@ class ModelStorage(Model):
                         res = get_many2one(this_field_def['relation'], value)
                     elif field_type == 'many2many':
                         res = get_many2many(this_field_def['relation'], value)
+                    elif field_type == 'one2one':
+                        res = get_one2one(this_field_def['relation'], value)
                     elif field_type == 'reference':
                         res = get_reference(value)
                     else:
@@ -977,8 +985,9 @@ class ModelStorage(Model):
                         not field.setter:
                     continue
                 # validate domain
-                if field._type in ('many2one', 'many2many', 'one2many') \
-                        and field.domain:
+                if (field._type in
+                        ('many2one', 'many2many', 'one2many', 'one2one')
+                    and field.domain):
                     if field._type in ('many2one', 'one2many'):
                         relation_obj = self.pool.get(field.model_name)
                     else:
@@ -1071,9 +1080,19 @@ class ModelStorage(Model):
                                     'size_validation_record',
                                     error_args=self._get_error_args(field_name))
 
+                def digits_test(value, digits, field_name):
+                    def raise_user_error():
+                        self.raise_user_error('digits_validation_record',
+                            error_args=self._get_error_args(field_name))
+                    if isinstance(value, Decimal):
+                        if not (value.quantize(Decimal(str(10.0**-digits[1])))
+                                == value):
+                            raise_user_error()
+                    else:
+                        if not (round(value, digits[1]) == float(value)):
+                            raise_user_error()
                 # validate digits
-                if (hasattr(field, 'digits') and field.digits
-                        and CONFIG.options['db_type'] != 'mysql'):
+                if hasattr(field, 'digits') and field.digits:
                     if is_pyson(field.digits):
                         pyson_digits = PYSONEncoder().encode(field.digits)
                         for record in records:
@@ -1084,27 +1103,18 @@ class ModelStorage(Model):
                             env['context'] = Transaction().context
                             env['active_id'] = record.id
                             digits = PYSONDecoder(env).decode(pyson_digits)
-                            if not round(record[field_name], digits[1]) == \
-                                    float(record[field_name]):
-                                self.raise_user_error(
-                                        'digits_validation_record',
-                                        error_args=self._get_error_args(
-                                            field_name))
+                            digits_test(record[field_name], digits, field_name)
                     else:
                         for record in records:
-                            if not round(record[field_name], field.digits[1]) == \
-                                    float(record[field_name]):
-                                self.raise_user_error(
-                                        'digits_validation_record',
-                                        error_args=self._get_error_args(
-                                            field_name))
+                            digits_test(record[field_name], field.digits,
+                                field_name)
 
     def _clean_defaults(self, defaults):
         vals = {}
         for field in defaults.keys():
             fld_def = (field in self._columns) and self._columns[field] \
                     or self._inherit_fields[field][2]
-            if fld_def._type in ('many2one',):
+            if fld_def._type in ('many2one', 'one2one'):
                 if isinstance(defaults[field], (list, tuple)):
                     vals[field] = defaults[field][0]
                 else:
diff --git a/trytond/model/modelview.py b/trytond/model/modelview.py
index 8960019..55b4fcc 100644
--- a/trytond/model/modelview.py
+++ b/trytond/model/modelview.py
@@ -219,7 +219,8 @@ class ModelView(Model):
         # Update arch and compute fields from arch
         parser = etree.XMLParser(remove_blank_text=True)
         tree = etree.fromstring(result['arch'], parser)
-        xarch, xfields = self._view_look_dom_arch(tree, result['type'])
+        xarch, xfields = self._view_look_dom_arch(tree, result['type'],
+                result['field_childs'])
         result['arch'] = xarch
         result['fields'] = xfields
 
@@ -255,10 +256,46 @@ class ModelView(Model):
         """
         return value
 
-    def _view_look_dom_arch(self, tree, type):
+    def _view_look_dom_arch(self, tree, type, field_children=None):
+        field_access_obj = self.pool.get('ir.model.field.access')
+
         fields_width = {}
         tree_root = tree.getroottree().getroot()
 
+        # Find field without read access
+        fread_accesses = field_access_obj.check(self._name,
+                self._columns.keys(), 'read', access=True)
+        fields_to_remove = list(x for x, y in fread_accesses.iteritems()
+                if not y)
+        for name, field in self._columns.iteritems():
+            for field_to_remove in fields_to_remove:
+                if field_to_remove in field.depends:
+                    fields_to_remove.append(name)
+
+        # Find field inherited without read access
+        for inherit_name in self._inherits:
+            inherit_obj = self.pool.get(inherit_name)
+            fread_accesses = field_access_obj.check(inherit_obj._name,
+                    inherit_obj._columns.keys(), 'read', access=True)
+            fields_to_remove += list(x for x, y in fread_accesses.iteritems()
+                    if not y and x not in self._columns.keys())
+            for name, field in inherit_obj._columns.iteritems():
+                for field_to_remove in fields_to_remove:
+                    if field_to_remove in field.depends:
+                        fields_to_remove.append(name)
+
+        # Remove field without read access
+        for field in fields_to_remove:
+            for element in tree.xpath(
+                    '//field[@name="%s"] | //label[@name="%s"]'
+                    % (field, field)):
+                if type == 'form':
+                    element.tag = 'label'
+                    element.attrib.clear()
+                elif type == 'tree':
+                    parent = element.getparent()
+                    parent.remove(element)
+
         if type == 'tree':
             viewtreewidth_obj = self.pool.get('ir.ui.view_tree_width')
             viewtreewidth_ids = viewtreewidth_obj.search([
@@ -272,6 +309,17 @@ class ModelView(Model):
         fields_def = self.__view_look_dom(tree_root, type,
                 fields_width=fields_width)
 
+        if field_children:
+            fields_def.setdefault(field_children, {'name': field_children})
+            model, field = None, None
+            if field_children in self._columns:
+                model = self
+                field = self._columns[field_children]
+            elif field_children in self._inherit_fields:
+                model_name, model, field = self._inherit_fields[field_children]
+            if model and field and field.model_name == model._name:
+                fields_def.setdefault(field.field, {'name': field.field})
+
         for field_name in fields_def.keys():
             if field_name in self._columns:
                 field = self._columns[field_name]
diff --git a/trytond/modules/__init__.py b/trytond/modules/__init__.py
index 82429c5..dfd41fc 100644
--- a/trytond/modules/__init__.py
+++ b/trytond/modules/__init__.py
@@ -133,7 +133,6 @@ def create_graph(module_list, force=None):
         force = []
     graph = Graph()
     packages = []
-    logger = logging.getLogger('modules')
 
     for module in module_list:
         tryton_file = OPJ(MODULES_PATH, module, '__tryton__.py')
@@ -154,15 +153,11 @@ def create_graph(module_list, force=None):
                 tryton_file = OPJ(ep.dist.location, '__tryton__.py')
                 mod_path = os.path.dirname(ep.dist.location)
         if os.path.isfile(tryton_file) or zipfile.is_zipfile(mod_path+'.zip'):
-            try:
-                info = tools.safe_eval(tools.file_open(tryton_file,
-                    subdir='').read())
-            except Exception:
-                logger.error('%s:eval file %s' % (module, tryton_file))
-                raise
+            with tools.file_open(tryton_file, subdir='') as fp:
+                info = tools.safe_eval(fp.read())
             packages.append((module, info.get('depends', []), info))
         elif module != 'all':
-            logger.error('%s:Module not found!' % (module,))
+            raise Exception('Module %s not found' % module)
 
     current, later = set([x[0] for x in packages]), set()
     while packages and current > later:
@@ -194,7 +189,7 @@ def create_graph(module_list, force=None):
         if package not in later:
             continue
         missings = [x for x in deps if x not in graph]
-        logger.error('%s:Unmet dependency %s' % (package, missings))
+        raise Exception('%s unmet dependencies: %s' % (package, missings))
     return graph, packages, later
 
 def load_module_graph(graph, pool, lang=None):
@@ -246,16 +241,16 @@ def load_module_graph(graph, pool, lang=None):
                 ext = os.path.splitext(filename)[1]
                 if ext == '.sql':
                     if mode == 'init':
-                        queries = tools.file_open(OPJ(module,
-                            filename)).read().split(';')
+                        with tools.file_open(OPJ(module, filename)) as fp:
+                            queries = fp.read().split(';')
                         for query in queries:
                             new_query = ' '.join(query.split())
                             if new_query:
                                 cursor.execute(new_query)
                 else:
                     # Feed the parser with xml content:
-                    tryton_parser.parse_xmlstream(
-                        tools.file_open(OPJ(module, filename)))
+                    with tools.file_open(OPJ(module, filename)) as fp:
+                        tryton_parser.parse_xmlstream(fp)
 
             modules_todo.append((module, list(tryton_parser.to_delete)))
 
@@ -264,14 +259,10 @@ def load_module_graph(graph, pool, lang=None):
                 lang2 = os.path.splitext(filename)[0]
                 if lang2 not in lang:
                     continue
-                try:
-                    trans_file = tools.file_open(OPJ(module, filename))
-                except IOError:
-                    logger.error('%s:file %s not found!' % (module, filename))
-                    continue
                 logger.info('%s:loading %s' % (module, filename))
-                translation_obj = pool.get('ir.translation')
-                translation_obj.translation_import(lang2, module, trans_file)
+                with tools.file_open(OPJ(module, filename)) as trans_file:
+                    translation_obj = pool.get('ir.translation')
+                    translation_obj.translation_import(lang2, module, trans_file)
 
             cursor.execute("UPDATE ir_module_module SET state = 'installed' " \
                     "WHERE name = %s", (package.name,))
@@ -312,6 +303,8 @@ def get_module_list():
     module_list = set()
     if os.path.exists(MODULES_PATH) and os.path.isdir(MODULES_PATH):
         for file in os.listdir(MODULES_PATH):
+            if file.startswith('.'):
+                continue
             if os.path.isdir(OPJ(MODULES_PATH, file)):
                 module_list.add(file)
             elif file[-4:] == '.zip':
diff --git a/trytond/protocols/dispatcher.py b/trytond/protocols/dispatcher.py
index 501812a..2faa818 100644
--- a/trytond/protocols/dispatcher.py
+++ b/trytond/protocols/dispatcher.py
@@ -30,6 +30,11 @@ def dispatch(host, port, protocol, database_name, user, session, object_type,
 
     if object_type == 'common':
         if method == 'login':
+            try:
+                database = Database(database_name).connect()
+                cursor = database.cursor()
+            except Exception:
+                return False
             res = security.login(database_name, user, session)
             Cache.clean(database_name)
             logger = logging.getLogger('dispatcher')
@@ -51,12 +56,14 @@ def dispatch(host, port, protocol, database_name, user, session, object_type,
             return time.tzname[0]
         elif method == 'list_lang':
             return [
+                ('bg_BG', 'Български'),
                 ('cs_CZ', 'Čeština'),
                 ('de_DE', 'Deutsch'),
                 ('en_US', 'English'),
                 ('es_ES', 'Español (España)'),
                 ('es_CO', 'Español (Colombia)'),
                 ('fr_FR', 'Français'),
+                ('nl_NL', 'Nederlands'),
                 ('ru_RU', 'Russian'),
             ]
         elif method == 'db_exist':
@@ -68,13 +75,13 @@ def dispatch(host, port, protocol, database_name, user, session, object_type,
             except Exception:
                 return False
         elif method == 'list':
+            if CONFIG['prevent_dblist']:
+                raise Exception('AccessDenied')
             database = Database().connect()
             try:
                 cursor = database.cursor()
-                try:
-                    res = database.list(cursor)
-                finally:
-                    cursor.close(close=True)
+                res = database.list(cursor)
+                cursor.close(close=True)
             except Exception:
                 res = []
             return res
diff --git a/trytond/protocols/webdav.py b/trytond/protocols/webdav.py
index f55d98e..e29fe3d 100644
--- a/trytond/protocols/webdav.py
+++ b/trytond/protocols/webdav.py
@@ -170,11 +170,12 @@ class TrytonDAVInterface(iface.dav_interface):
         dbname, dburi = self._get_dburi(uri)
         if not dbname:
             database = Database().connect()
-            cursor = database.cursor()
             try:
-                lists = database.list(cursor)
-            except Exception:
-                lists = []
+                try:
+                    cursor = database.cursor()
+                    lists = database.list(cursor)
+                except Exception:
+                    lists = []
             finally:
                 cursor.close()
             for dbname in lists:
diff --git a/trytond/report/report.py b/trytond/report/report.py
index fc4d4cf..2138023 100644
--- a/trytond/report/report.py
+++ b/trytond/report/report.py
@@ -2,8 +2,6 @@
 #this repository contains the full copyright notices and license terms.
 import copy
 import xml
-from xml import dom
-from xml.dom import minidom
 import sys
 import base64
 try:
@@ -28,6 +26,7 @@ try:
 except ImportError:
     Manifest = None
 from genshi.filters import Translator
+import lxml.etree
 from trytond.config import CONFIG
 from trytond.backend import DatabaseIntegrityError
 from trytond.pool import Pool
@@ -176,37 +175,40 @@ class Report(object):
 
         if report.style_content:
             pictures = []
-            dom_style = xml.dom.minidom.parseString(style_xml)
-            node_style = dom_style.documentElement
 
             #cStringIO difference:
             #calling StringIO() with a string parameter creates a read-only object
-            style2_io = StringIO.StringIO()
-            style2_io.write(base64.decodestring(report.style_content))
-            style2_z = zipfile.ZipFile(style2_io, mode='r')
-            style2_xml = style2_z.read('styles.xml')
-            for file in style2_z.namelist():
+            new_style_io = StringIO.StringIO()
+            new_style_io.write(base64.decodestring(report.style_content))
+            new_style_z = zipfile.ZipFile(new_style_io, mode='r')
+            new_style_xml = new_style_z.read('styles.xml')
+            for file in new_style_z.namelist():
                 if file.startswith('Pictures'):
-                    picture = style2_z.read(file)
+                    picture = new_style_z.read(file)
                     pictures.append((file, picture))
                     if manifest:
                         manifest.add_file_entry(file)
-            style2_z.close()
-            style2_io.close()
-            dom_style2 = xml.dom.minidom.parseString(style2_xml)
-            node_style2 = dom_style2.documentElement
-            style_header_node2 = self.find(node_style2, 'master-styles')
-            style_header_node = self.find(node_style, 'master-styles')
-            style_header_node.parentNode.replaceChild(style_header_node2,
-                    style_header_node)
-            style_header_node2 = self.find(node_style2, 'automatic-styles')
-            style_header_node = self.find(node_style, 'automatic-styles')
-            style_header_node.parentNode.replaceChild(style_header_node2,
-                    style_header_node)
+            new_style_z.close()
+            new_style_io.close()
+
+            style_tree = lxml.etree.parse(StringIO.StringIO(style_xml))
+            style_root = style_tree.getroot()
+
+            new_style_tree = lxml.etree.parse(StringIO.StringIO(new_style_xml))
+            new_style_root = new_style_tree.getroot()
+
+            for style in ('master-styles', 'automatic-styles'):
+                node, = style_tree.xpath(
+                        '/office:document-styles/office:%s' % style,
+                        namespaces=style_root.nsmap)
+                new_node, = new_style_tree.xpath(
+                        '/office:document-styles/office:%s' % style,
+                        namespaces=new_style_root.nsmap)
+                node.getparent().replace(node, new_node)
 
             outzip.writestr(style_info,
-                    '<?xml version="1.0" encoding="UTF-8"?>' + \
-                            dom_style.documentElement.toxml('utf-8'))
+                    lxml.etree.tostring(style_tree, encoding='utf-8',
+                        xml_declaration=True))
 
             for file, picture in pictures:
                 outzip.writestr(file, picture)
@@ -293,16 +295,6 @@ class Report(object):
             Exception('Error', 'Error converting to PDF')
         return res_data
 
-    def find(self, tnode, tag):
-        for node in tnode.childNodes:
-            if node.nodeType == node.ELEMENT_NODE \
-                    and node.localName == tag:
-                return node
-            res = self.find(node, tag)
-            if res is not None:
-                return res
-        return None
-
     def format_lang(self, value, lang, digits=2, grouping=True, monetary=False,
             date=False, currency=None, symbol=True):
         lang_obj = self.pool.get('ir.lang')
diff --git a/trytond/res/__tryton__.py b/trytond/res/__tryton__.py
index 61c69fd..e8f4d87 100644
--- a/trytond/res/__tryton__.py
+++ b/trytond/res/__tryton__.py
@@ -2,13 +2,19 @@
 #this repository contains the full copyright notices and license terms.
 {
     'name': 'Res',
+    'name_bg_BG': 'Ресурс',
     'name_de_DE': 'Benutzerverwaltung',
     'name_es_ES': 'Gestión de usuarios',
     'name_fr_FR': 'Ressource',
+    'name_nl_NL': 'Interne handelingen',
     'name_ru_RU': 'Базовые ресурсы сервера',
     'description': '''Basic module handling internal tasks of the application.
 Provides concepts and administration of users and internal communication.
 ''',
+    'description_bg_BG': '''Основен модул управляващ вътрешните задачи на приложението
+
+ - Предоставя идеи и администрация на потребители и вътрешна комуникация
+''',
     'description_de_DE': '''Basismodul für interne Aufgaben der Anwendung
 
  - Stellt Konzept und Administration für die Benutzerverwaltung und interne Kommunikation zur Verfügung
@@ -20,6 +26,9 @@ Provides concepts and administration of users and internal communication.
     'description_fr_FR': '''Module de base gérant les tâches internes de l'application.
 Fournit les concepts et l'administration des utilisateurs et de la communication interne.
 ''',
+    'description_nl_NL': '''Basis module voor de afhandeling van interne taken.
+    Regelt instellingen en beheer van gebruikers en interne communicatie.
+''',
     'description_ru_RU': '''Базовый модуль обработки внутренних задач приложения.
     Обеспечивает концепции и администрирование пользователей и внутренней связи.
 ''',
@@ -33,6 +42,7 @@ Fournit les concepts et l'administration des utilisateurs et de la communication
         'ir.xml',
         ],
     'translation': [
+        'bg_BG.csv',
         'fr_FR.csv',
         'de_DE.csv',
         'es_ES.csv',
diff --git a/trytond/res/bg_BG.csv b/trytond/res/bg_BG.csv
new file mode 100644
index 0000000..ebe729d
--- /dev/null
+++ b/trytond/res/bg_BG.csv
@@ -0,0 +1,171 @@
+type,name,res_id,src,value,fuzzy
+error,res.group,0,The name of the group must be unique!,Името на групата трябва да е уникално!,0
+error,res.user,0,Wrong password!,Грешна парола!,0
+error,res.user,0,You can not have two users with the same login!,Не може да имате двама потребители с еднакво потребителско име,0
+error,res.user,0,"You can not remove the root user
+as it is used internally for resources
+created by the system (updates, module installation, ...)","Не може да премахнете потребител root
+тъй като вътрешно се използва за ресурси
+създадени от системата (обновяване, инсталиране на модули, ....)",0
+field,"ir.action-res.group,action_id",0,Action,Действие,0
+field,"ir.action-res.group,gid",0,Group,Група,0
+field,"ir.action-res.group,rec_name",0,Name,Име,0
+field,"ir.model.field-res.group,field_id",0,Model Field,Поле от модел,0
+field,"ir.model.field-res.group,group_id",0,Group,Група,0
+field,"ir.model.field-res.group,rec_name",0,Name,Име,0
+field,"ir.rule.group-res.group,group_id",0,Group,Група,0
+field,"ir.rule.group-res.group,rec_name",0,Name,Име,0
+field,"ir.rule.group-res.group,rule_group_id",0,Rule Group,Правила на група,0
+field,"ir.rule.group-res.user,rec_name",0,Name,Име,0
+field,"ir.rule.group-res.user,rule_group_id",0,Rule Group,Правила на група,0
+field,"ir.rule.group-res.user,user_id",0,User,Потребител,0
+field,"ir.sequence,groups",0,User Groups,Групи потребители,0
+field,"ir.sequence.strict,groups",0,User Groups,Групи потребители,0
+field,"ir.sequence.type,groups",0,User Groups,Групи потребители,0
+field,"ir.sequence.type-res.group,group",0,User Groups,Групи потребители,0
+field,"ir.sequence.type-res.group,rec_name",0,Name,Име,0
+field,"ir.sequence.type-res.group,sequence_type",0,Sequence Type,Вид последователност,0
+field,"ir.ui.menu-res.group,gid",0,Group,Група,0
+field,"ir.ui.menu-res.group,menu_id",0,Menu,Меню,0
+field,"ir.ui.menu-res.group,rec_name",0,Name,Име,0
+field,"res.group,field_access",0,Access Field,Достъп до поле,0
+field,"res.group,menu_access",0,Access Menu,Достъп до меню,0
+field,"res.group,model_access",0,Access Model,Модел на достъпа,0
+field,"res.group,name",0,Name,Име,0
+field,"res.group,rec_name",0,Name,Име,0
+field,"res.group,rule_groups",0,Rules,Правила,0
+field,"res.group,users",0,Users,Потребители,0
+field,"res.request,act_from",0,From,От,0
+field,"res.request,act_to",0,To,До,0
+field,"res.request,active",0,Active,Активен,0
+field,"res.request,body",0,Body,Тяло,0
+field,"res.request,date_sent",0,Date,Дата,0
+field,"res.request,history",0,History,Изтория,0
+field,"res.request,name",0,Subject,Относно,0
+field,"res.request,number_references",0,Number of References,Брой препратки,0
+field,"res.request,priority",0,Priority,Важност,0
+field,"res.request,rec_name",0,Name,Име,0
+field,"res.request,references",0,References,Отпратки,0
+field,"res.request,state",0,State,Състояние,0
+field,"res.request,trigger_date",0,Trigger Date,Дата на активиране,0
+field,"res.request.history,act_from",0,From,От,0
+field,"res.request.history,act_to",0,To,До,0
+field,"res.request.history,body",0,Body,Тяло,0
+field,"res.request.history,date_sent",0,Date sent,Дата на изпращане,0
+field,"res.request.history,name",0,Summary,Обобщено,0
+field,"res.request.history,number_references",0,References,Отпратки,0
+field,"res.request.history,priority",0,Priority,Важност,0
+field,"res.request.history,rec_name",0,Name,Име,0
+field,"res.request.history,request",0,Request,Заявка,0
+field,"res.request.history,state",0,State,Състояние,0
+field,"res.request.history,subject",0,Subject,Относно,0
+field,"res.request.link,model",0,Model,Модел,0
+field,"res.request.link,name",0,Name,Име,0
+field,"res.request.link,priority",0,Priority,Важност,0
+field,"res.request.link,rec_name",0,Name,Име,0
+field,"res.request.reference,rec_name",0,Name,Име,0
+field,"res.request.reference,reference",0,Reference,Отпратка,0
+field,"res.request.reference,request",0,Request,Заявка,0
+field,"res.user,action",0,Home Action,Начално действие,0
+field,"res.user,active",0,Active,Активен,0
+field,"res.user,connections",0,Connections,Връзки,0
+field,"res.user,email",0,Email,Email,0
+field,"res.user,groups",0,Groups,Групи,0
+field,"res.user,language",0,Language,Език,0
+field,"res.user,language_direction",0,Language Direction,Посока на езика,0
+field,"res.user,login",0,Login,Потребителско име,0
+field,"res.user,menu",0,Menu Action,Действие на меню,0
+field,"res.user,name",0,Name,Име,0
+field,"res.user,password",0,Password,Парола,0
+field,"res.user,rec_name",0,Name,Име,0
+field,"res.user,rule_groups",0,Rules,Правила,0
+field,"res.user,salt",0,Salt,Ключ,0
+field,"res.user,signature",0,Signature,Подпис,0
+field,"res.user,status_bar",0,Status Bar,Лента със статус,0
+field,"res.user,timezone",0,Timezone,Времева зона,0
+field,"res.user,warnings",0,Warnings,Предупреждения,0
+field,"res.user-res.group,gid",0,Group,Група,0
+field,"res.user-res.group,rec_name",0,Name,Име,0
+field,"res.user-res.group,uid",0,User,Потребител,0
+field,"res.user.warning,always",0,Always,Винаги,0
+field,"res.user.warning,name",0,Name,Име,0
+field,"res.user.warning,rec_name",0,Name,Име,0
+field,"res.user.warning,user",0,User,Потребител,0
+help,"ir.sequence.type,groups",0,Groups allowed to edit the sequences of this type,Групите на които е позволено да редактират този вид последователност,0
+model,"ir.action,name",act_group_form,Groups,Групи,0
+model,"ir.action,name",act_request_form,Requests,Заявки,0
+model,"ir.action,name",act_request_link_form,Request Links,Връзки към заявка,0
+model,"ir.action,name",act_user_form,Users,Потребители,0
+model,"ir.action-res.group,name",0,Action - Group,Действие - група,0
+model,"ir.cron,name",cron_trigger_time,Run On Time Triggers,Стартиране при настъпване на време,0
+model,"ir.model.field-res.group,name",0,Model Field Group Rel,Връзка на група за модел на поле,0
+model,"ir.rule.group-res.group,name",0,Rule Group - Group,Група правила - Група,0
+model,"ir.rule.group-res.user,name",0,Rule Group - User,Правило на група - Потребител,0
+model,"ir.sequence.type-res.group,name",0,Sequence Type - Group,Вид последователност - Група,0
+model,"ir.ui.menu,name",menu_group_form,Groups,Групи,0
+model,"ir.ui.menu,name",menu_request_form,Requests,Заявки,0
+model,"ir.ui.menu,name",menu_request_link_form,Request Links,Връзки към заявки,0
+model,"ir.ui.menu,name",menu_res,Users,Потребители,0
+model,"ir.ui.menu,name",menu_user_form,Users,Потребители,0
+model,"ir.ui.menu-res.group,name",0,UI Menu - Group,Потребителско меню - група,0
+model,"res.group,name",0,Group,Група,0
+model,"res.group,name",group_admin,Administration,Администрация,0
+model,"res.request,name",0,Request,Заявка,0
+model,"res.request.history,name",0,Request history,Изтория на заявка,0
+model,"res.request.link,name",0,Request link,Връзка към заявка,0
+model,"res.request.link,name",request_link_cron,Scheduler,Планировщик,0
+model,"res.request.reference,name",0,Request Reference,Отпратка към заявка,0
+model,"res.user,name",0,User,Потребител,0
+model,"res.user,name",user_admin,Administrator,Администратор,0
+model,"res.user,name",user_trigger,Cron Trigger,Превключвател на планировщик,0
+model,"res.user-res.group,name",0,User - Group,Потребител - група,0
+model,"res.user.config.init,name",0,User Config Init,Начално конфигуриране на потребител,0
+model,"res.user.warning,name",0,User Warning,Потребителско предупреждение,0
+selection,"res.request,priority",0,High,Висок,0
+selection,"res.request,priority",0,Low,Ниска,0
+selection,"res.request,priority",0,Normal,Нормален,0
+selection,"res.request,state",0,Chatting,Преговори,0
+selection,"res.request,state",0,Closed,Приключен,0
+selection,"res.request,state",0,Draft,Проект,0
+selection,"res.request,state",0,Waiting,Изчакващ,0
+selection,"res.request.history,priority",0,High,Висок,0
+selection,"res.request.history,priority",0,Low,Ниска,0
+selection,"res.request.history,priority",0,Normal,Нормален,0
+selection,"res.request.history,state",0,Chatting,Преговори,0
+selection,"res.request.history,state",0,Closed,Приключен,0
+selection,"res.request.history,state",0,Draft,Проект,0
+selection,"res.request.history,state",0,Waiting,Изчакващ,0
+view,ir.module.module,0,Cancel Installation,Отказ от инсталалиране,0
+view,ir.module.module,0,Cancel Uninstallation,Отказ от деинсталиране,0
+view,ir.module.module,0,Cancel Upgrade,Отказ от обновяване,0
+view,ir.module.module,0,Mark for Installation,Отбелязване за инсталиране,0
+view,ir.module.module,0,Mark for Uninstallation (beta),Маркиране за деинсталиране (beta),0
+view,ir.module.module,0,Mark for Upgrade,Отбелязване за обновяване,0
+view,res.group,0,Access Permissions,Фактура,0
+view,res.group,0,Group,Група,0
+view,res.group,0,Groups,Групи,0
+view,res.group,0,Members,Членове,0
+view,res.request,0,Close,Затваряне,0
+view,res.request,0,References,Отпратки,0
+view,res.request,0,Reply,Отговор,0
+view,res.request,0,Request,Заявка,0
+view,res.request,0,Requests,Заявки,0
+view,res.request,0,Send,Изпратен,0
+view,res.request.history,0,Request History,Истоярия на заявка,0
+view,res.request.link,0,Request Link,Връзка към заявка,0
+view,res.request.reference,0,Request Reference,Отпратка към заявка,0
+view,res.request.reference,0,Request References,Отпратки към заявка,0
+view,res.user,0,Access Permissions,Права за достъп,0
+view,res.user,0,Group Membership,Членство към група,0
+view,res.user,0,Preferences,Предпочитания,0
+view,res.user,0,User,Потребител,0
+view,res.user,0,Users,Потребители,0
+view,res.user.config.init,0,Add Users,Добавяне на потребители,0
+view,res.user.config.init,0,Be careful that the login must be unique!,Вмимавайте потребителско име да е уникално,0
+view,res.user.config.init,0,You can now add some users into the system.,Сега може да добавите потребители към системата.,0
+view,res.user.warning,0,Warning,Предупреждение,0
+view,res.user.warning,0,Warnings,Предупреждения,0
+wizard_button,"res.user.config,init,end",0,Cancel,Отказ,0
+wizard_button,"res.user.config,init,user",0,Ok,Добре,0
+wizard_button,"res.user.config,user,add",0,Add,Добавяне,0
+wizard_button,"res.user.config,user,end",0,End,Край,0
diff --git a/trytond/res/de_DE.csv b/trytond/res/de_DE.csv
index ab88c76..f12889f 100644
--- a/trytond/res/de_DE.csv
+++ b/trytond/res/de_DE.csv
@@ -29,6 +29,7 @@ field,"ir.ui.menu-res.group,menu_id",0,Menu,Menü,0
 field,"ir.ui.menu-res.group,rec_name",0,Name,Name,0
 field,"res.group,create_date",0,Creation date,Erstellungsdatum,0
 field,"res.group,create_uid",0,Creation user,Ersteller,0
+field,"res.group,field_access",0,Access Field,Zugriffsberechtigung Feld,0
 field,"res.group,id",0,ID,ID,0
 field,"res.group,menu_access",0,Access Menu,Menü Berechtigungen,0
 field,"res.group,model_access",0,Access Model,Rechteverwaltung,0
diff --git a/trytond/res/fr_FR.csv b/trytond/res/fr_FR.csv
index 8b565c0..8fc76cb 100644
--- a/trytond/res/fr_FR.csv
+++ b/trytond/res/fr_FR.csv
@@ -28,6 +28,7 @@ field,"ir.sequence.type-res.group,sequence_type",0,Sequence Type,Type de séquen
 field,"ir.ui.menu-res.group,gid",0,Group,Groupe,0
 field,"ir.ui.menu-res.group,menu_id",0,Menu,Menu,0
 field,"ir.ui.menu-res.group,rec_name",0,Name,Nom,0
+field,"res.group,field_access",0,Access Field,Droit d'accès,0
 field,"res.group,menu_access",0,Access Menu,Accès aux menus,0
 field,"res.group,model_access",0,Access Model,Accès aux modèles,0
 field,"res.group,name",0,Name,Nom,0
diff --git a/trytond/res/group.py b/trytond/res/group.py
index 01eef03..d5407f1 100644
--- a/trytond/res/group.py
+++ b/trytond/res/group.py
@@ -1,9 +1,31 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 "Group"
+from itertools import chain
 from trytond.model import ModelView, ModelSQL, fields
+from trytond.transaction import Transaction
 
 
+class MenuMany2Many(fields.Many2Many):
+
+    def get(self, ids, model, name, values=None):
+        menu_obj = self.get_target(model.pool)
+        res = super(MenuMany2Many, self).get(ids, model, name,
+                values=values)
+        menu_ids = list(set(chain(*res.values())))
+        test_ids = []
+        for i in range(0, len(menu_ids), Transaction().cursor.IN_MAX):
+            sub_ids = menu_ids[i:i + Transaction().cursor.IN_MAX]
+            test_ids.append(menu_obj.search([
+                ('id', 'in', sub_ids),
+                ]))
+        menu_ids = set(chain(*test_ids))
+        for ids in res.itervalues():
+            for id_ in ids[:]:
+                if id_ not in menu_ids:
+                    ids.remove(id_)
+        return res
+
 class Group(ModelSQL, ModelView):
     "Group"
     _name = "res.group"
@@ -11,10 +33,12 @@ class Group(ModelSQL, ModelView):
     name = fields.Char('Name', required=True, select=1, translate=True)
     model_access = fields.One2Many('ir.model.access', 'group',
        'Access Model')
+    field_access = fields.One2Many('ir.model.field.access', 'group',
+        'Access Field')
     rule_groups = fields.Many2Many('ir.rule.group-res.group',
        'group_id', 'rule_group_id', 'Rules',
        domain=[('global_p', '!=', True), ('default_p', '!=', True)])
-    menu_access = fields.Many2Many('ir.ui.menu-res.group',
+    menu_access = MenuMany2Many('ir.ui.menu-res.group',
        'gid', 'menu_id', 'Access Menu')
 
     def __init__(self):
@@ -23,6 +47,29 @@ class Group(ModelSQL, ModelView):
             ('name_uniq', 'unique (name)', 'The name of the group must be unique!')
         ]
 
+    def copy(self, ids, default=None):
+        int_id = isinstance(ids, (int, long))
+        if int_id:
+            ids = [ids]
+
+        if default is None:
+            default = {}
+        default = default.copy()
+
+        new_ids = []
+        for group in self.browse(ids):
+            i = 1
+            while True:
+                name = '%s (%d)' % (group.name, i)
+                if not self.search([('name', '=', name)], order=[]):
+                    break
+                i += 1
+            default['name'] = name
+            new_ids.append(super(Group, self).copy(group.id, default=default))
+        if int_id:
+            return new_ids[0]
+        return new_ids
+
     def create(self, vals):
         res = super(Group, self).create(vals)
         # Restart the cache on the domain_get method
diff --git a/trytond/res/group.xml b/trytond/res/group.xml
index 9c690e0..6a17c65 100644
--- a/trytond/res/group.xml
+++ b/trytond/res/group.xml
@@ -6,9 +6,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="res.group" id="group_admin">
             <field name="name">Administration</field>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_administration">
-            <field name="groups" eval="[('add', ref('group_admin'))]"/>
-        </record>
         <record model="ir.ui.view" id="group_view_form">
             <field name="model">res.group</field>
             <field name="type">form</field>
@@ -22,13 +19,13 @@ this repository contains the full copyright notices and license terms. -->
                             <separator name="users" colspan="2"/>
                             <field name="users" colspan="2"/>
                         </page>
-                        <page string="Access Permissions" col="1" id="permissions">
-                            <separator name="model_access"/>
+                        <page string="Access Permissions" col="2" id="permissions">
                             <field name="model_access"/>
-                            <separator name="menu_access"/>
-                            <field name="menu_access"/>
-                            <separator name="rule_groups"/>
-                            <field name="rule_groups"/>
+                            <field name="field_access"/>
+                            <separator name="menu_access" colspan="2"/>
+                            <field name="menu_access" colspan="2"/>
+                            <separator name="rule_groups" colspan="2"/>
+                            <field name="rule_groups" colspan="2"/>
                         </page>
                     </notebook>
                 </form>
@@ -50,7 +47,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Groups</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">res.group</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_group_form_view1">
@@ -64,7 +60,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="group_view_form"/>
             <field name="act_window" ref="act_group_form"/>
         </record>
-        <menuitem parent="res.menu_res"
+        <menuitem parent="res.menu_res" groups="group_admin"
             action="act_group_form" id="menu_group_form"/>
         <record model="ir.model.access" id="access_group">
             <field name="model" search="[('model', '=', 'res.group')]"/>
diff --git a/trytond/res/ir.xml b/trytond/res/ir.xml
index 7d10b14..eb98952 100644
--- a/trytond/res/ir.xml
+++ b/trytond/res/ir.xml
@@ -33,6 +33,21 @@ this repository contains the full copyright notices and license terms. -->
             <field name="perm_create" eval="True"/>
             <field name="perm_delete" eval="True"/>
         </record>
+        <record model="ir.model.access" id="access_ir_ui_icon">
+            <field name="model" search="[('model', '=', 'ir.ui.icon')]"/>
+            <field name="perm_read" eval="True"/>
+            <field name="perm_write" eval="False"/>
+            <field name="perm_create" eval="False"/>
+            <field name="perm_delete" eval="False"/>
+        </record>
+        <record model="ir.model.access" id="access_ir_ui_icon_admin">
+            <field name="model" search="[('model', '=', 'ir.ui.icon')]"/>
+            <field name="group" ref="group_admin"/>
+            <field name="perm_read" eval="True"/>
+            <field name="perm_write" eval="True"/>
+            <field name="perm_create" eval="True"/>
+            <field name="perm_delete" eval="True"/>
+        </record>
         <record model="ir.model.access" id="access_ir_ui_menu">
             <field name="model" search="[('model', '=', 'ir.ui.menu')]"/>
             <field name="perm_read" eval="True"/>
@@ -413,21 +428,139 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.wizard" id="ir.act_module_install_upgrade">
             <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_module_install_upgrade">
+        <record model="ir.action.wizard" id="ir.act_translation_update">
             <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
         </record>
-        <record model="ir.action.wizard" id="ir.act_translation_update">
+        <record model="ir.action.wizard" id="ir.act_translation_export">
             <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
         </record>
-        <record model="ir.ui.menu" id="ir.menu_translation_update">
+
+        <record model="ir.ui.menu" id="ir.menu_administration">
+            <field name="groups" eval="[('add', ref('group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_ui">
             <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
         </record>
-        <record model="ir.action.wizard" id="ir.act_translation_export">
+        <record model="ir.ui.menu" id="ir.menu_icon_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_menu_tree">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_view">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_view_sc">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_view_tree_width">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_action">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_act_action">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_action_report_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_action_act_window">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_action_wizard">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_action_wizard_size">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_action_url">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_models">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_model_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.model_model_fields_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_model_access_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_model_field_access_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_sequences">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_sequence_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_sequence_strict_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_ir_sequence_type">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_attachment_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_scheduler">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_cron_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_localization">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_lang_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_translation_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_translation_set_report">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_translation_clean">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_translation_update">
             <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
         </record>
         <record model="ir.ui.menu" id="ir.menu_translation_export">
             <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
         </record>
+        <record model="ir.ui.menu" id="ir.menu_export_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_rule_group_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_property_form_default">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_property_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_modules">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_module_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_config_wizard_item_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_module_install_upgrade">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
+        <record model="ir.ui.menu" id="ir.menu_trigger_form">
+            <field name="groups" eval="[('add', ref('res.group_admin'))]"/>
+        </record>
         <record model="ir.ui.view" id="module_view_form">
             <field name="model">ir.module.module</field>
             <field name="inherit" ref="ir.module_view_form"/>
diff --git a/trytond/res/nl_NL.csv b/trytond/res/nl_NL.csv
new file mode 100644
index 0000000..8dcfd48
--- /dev/null
+++ b/trytond/res/nl_NL.csv
@@ -0,0 +1,170 @@
+type,name,res_id,src,value,fuzzy
+error,res.group,0,The name of the group must be unique!,De naam van de groep moet uniek zijn!,0
+error,res.user,0,Wrong password!,Verkeerd wachtwoord!,0
+error,res.user,0,You can not have two users with the same login!,U kunt geen twee gebruikers met dezelfde login hebben!,0
+error,res.user,0,"You can not remove the root user
+as it is used internally for resources
+created by the system (updates, module installation, ...)","De hoofdgebruiker kan niet verwijderd worden
+omdat deze gebruikt wordt voor interne
+doeleinden  (bijwerken, installatie, ...)",0
+field,"ir.action-res.group,action_id",0,Action,Actie,0
+field,"ir.action-res.group,gid",0,Group,Groep,0
+field,"ir.action-res.group,rec_name",0,Name,Naam,0
+field,"ir.model.field-res.group,field_id",0,Model Field,Model veld,0
+field,"ir.model.field-res.group,group_id",0,Group,Groep,0
+field,"ir.model.field-res.group,rec_name",0,Name,Naam,0
+field,"ir.rule.group-res.group,group_id",0,Group,Groep,0
+field,"ir.rule.group-res.group,rec_name",0,Name,Naam,0
+field,"ir.rule.group-res.group,rule_group_id",0,Rule Group,Regel groep,0
+field,"ir.rule.group-res.user,rec_name",0,Name,Naam,0
+field,"ir.rule.group-res.user,rule_group_id",0,Rule Group,Regel groep,0
+field,"ir.rule.group-res.user,user_id",0,User,Gebruiker,0
+field,"ir.sequence,groups",0,User Groups,Gebruikersgroepen,0
+field,"ir.sequence.strict,groups",0,User Groups,Gebruikersgroepen,0
+field,"ir.sequence.type,groups",0,User Groups,Gebruikersgroepen,0
+field,"ir.sequence.type-res.group,group",0,User Groups,Gebruikersgroepen,0
+field,"ir.sequence.type-res.group,rec_name",0,Name,Naam,0
+field,"ir.sequence.type-res.group,sequence_type",0,Sequence Type,Verzoek type,0
+field,"ir.ui.menu-res.group,gid",0,Group,Groep,0
+field,"ir.ui.menu-res.group,menu_id",0,Menu,Menu,0
+field,"ir.ui.menu-res.group,rec_name",0,Name,Naam,0
+field,"res.group,menu_access",0,Access Menu,Toegang menu,0
+field,"res.group,model_access",0,Access Model,Toegang model,0
+field,"res.group,name",0,Name,Naam,0
+field,"res.group,rec_name",0,Name,Naam,0
+field,"res.group,rule_groups",0,Rules,Regels,0
+field,"res.group,users",0,Users,Gebruikers,0
+field,"res.request,act_from",0,From,Vanaf,0
+field,"res.request,act_to",0,To,Aan,0
+field,"res.request,active",0,Active,Actief,0
+field,"res.request,body",0,Body,Tekstgebied,0
+field,"res.request,date_sent",0,Date,Verzenddatum,0
+field,"res.request,history",0,History,Geschiedenis,0
+field,"res.request,name",0,Subject,Onderwerp,0
+field,"res.request,number_references",0,Number of References,Aantal referenties,0
+field,"res.request,priority",0,Priority,Prioriteit,0
+field,"res.request,rec_name",0,Name,Naam,0
+field,"res.request,references",0,References,Referenties,0
+field,"res.request,state",0,State,Status,0
+field,"res.request,trigger_date",0,Trigger Date,Start datum,0
+field,"res.request.history,act_from",0,From,Vanaf,0
+field,"res.request.history,act_to",0,To,Aan,0
+field,"res.request.history,body",0,Body,Tekstgebied,0
+field,"res.request.history,date_sent",0,Date sent,Datum verzonden,0
+field,"res.request.history,name",0,Summary,Samenvatting,0
+field,"res.request.history,number_references",0,References,Referenties,0
+field,"res.request.history,priority",0,Priority,Prioriteit,0
+field,"res.request.history,rec_name",0,Name,Naam,0
+field,"res.request.history,request",0,Request,Verzoek,0
+field,"res.request.history,state",0,State,Status,0
+field,"res.request.history,subject",0,Subject,Onderwerp,0
+field,"res.request.link,model",0,Model,Model,0
+field,"res.request.link,name",0,Name,Naam,0
+field,"res.request.link,priority",0,Priority,Prioriteit,0
+field,"res.request.link,rec_name",0,Name,Naam,0
+field,"res.request.reference,rec_name",0,Name,Naam,0
+field,"res.request.reference,reference",0,Reference,Referentie,0
+field,"res.request.reference,request",0,Request,Verzoek,0
+field,"res.user,action",0,Home Action,Basis actie,0
+field,"res.user,active",0,Active,Actief,0
+field,"res.user,connections",0,Connections,Verbindingen,0
+field,"res.user,email",0,Email,E-mail,0
+field,"res.user,groups",0,Groups,Groepen,0
+field,"res.user,language",0,Language,Taal,0
+field,"res.user,language_direction",0,Language Direction,Leesrichting,0
+field,"res.user,login",0,Login,Login,0
+field,"res.user,menu",0,Menu Action,Menu actie,0
+field,"res.user,name",0,Name,Naam,0
+field,"res.user,password",0,Password,Wachtwoord,0
+field,"res.user,rec_name",0,Name,Naam,0
+field,"res.user,rule_groups",0,Rules,Regels,0
+field,"res.user,salt",0,Salt,Zout,0
+field,"res.user,signature",0,Signature,Handtekening,0
+field,"res.user,status_bar",0,Status Bar,Staus balk,0
+field,"res.user,timezone",0,Timezone,Tijdzone,0
+field,"res.user,warnings",0,Warnings,Waarschuwingen,0
+field,"res.user-res.group,gid",0,Group,Groep,0
+field,"res.user-res.group,rec_name",0,Name,Naam,0
+field,"res.user-res.group,uid",0,User,Gebruiker,0
+field,"res.user.warning,always",0,Always,Altijd,0
+field,"res.user.warning,name",0,Name,Naam,0
+field,"res.user.warning,rec_name",0,Name,Naam,0
+field,"res.user.warning,user",0,User,Gebruiker,0
+help,"ir.sequence.type,groups",0,Groups allowed to edit the sequences of this type,Groepen die de reeksen van dit type mogen bewerken,0
+model,"ir.action,name",act_group_form,Groups,Groepen,0
+model,"ir.action,name",act_request_form,Requests,Verzoeken,0
+model,"ir.action,name",act_request_link_form,Request Links,Verzoek koppelingen,0
+model,"ir.action,name",act_user_form,Users,Gebruikers,0
+model,"ir.action-res.group,name",0,Action - Group,Actie-groep,0
+model,"ir.cron,name",cron_trigger_time,Run On Time Triggers,Uitvoeren op tijd starters,0
+model,"ir.model.field-res.group,name",0,Model Field Group Rel,Model veld groep naam,0
+model,"ir.rule.group-res.group,name",0,Rule Group - Group,Regel groep - Groep,0
+model,"ir.rule.group-res.user,name",0,Rule Group - User,Regel groep - Gebruiker,0
+model,"ir.sequence.type-res.group,name",0,Sequence Type - Group,Verzoek type  - Groep,0
+model,"ir.ui.menu,name",menu_group_form,Groups,Groepen,0
+model,"ir.ui.menu,name",menu_request_form,Requests,Verzoeken,0
+model,"ir.ui.menu,name",menu_request_link_form,Request Links,Verzoek koppelingen,0
+model,"ir.ui.menu,name",menu_res,Users,Gebruikers,0
+model,"ir.ui.menu,name",menu_user_form,Users,Gebruikers,0
+model,"ir.ui.menu-res.group,name",0,UI Menu - Group,UI menu - Groep,0
+model,"res.group,name",0,Group,Groep,0
+model,"res.group,name",group_admin,Administration,Systeembeheer,0
+model,"res.request,name",0,Request,Verzoek,0
+model,"res.request.history,name",0,Request history,Verzoek geschiedenis,0
+model,"res.request.link,name",0,Request link,Verzoek koppeling,0
+model,"res.request.link,name",request_link_cron,Scheduler,Planner,0
+model,"res.request.reference,name",0,Request Reference,Verzoek referentie,0
+model,"res.user,name",0,User,Gebruiker,0
+model,"res.user,name",user_admin,Administrator,Systeem beheerder,0
+model,"res.user,name",user_trigger,Cron Trigger,Cyclus starter,0
+model,"res.user-res.group,name",0,User - Group,Gebruiker - Groep,0
+model,"res.user.config.init,name",0,User Config Init,Gebruiker gaan instellen,0
+model,"res.user.warning,name",0,User Warning,Waarschuwwing gebruikers,0
+selection,"res.request,priority",0,High,Hoog,0
+selection,"res.request,priority",0,Low,Laag,0
+selection,"res.request,priority",0,Normal,Normaal,0
+selection,"res.request,state",0,Chatting,In gesprek,0
+selection,"res.request,state",0,Closed,Afgesloten,0
+selection,"res.request,state",0,Draft,Concept,0
+selection,"res.request,state",0,Waiting,Aan het wachten,0
+selection,"res.request.history,priority",0,High,Hoog,0
+selection,"res.request.history,priority",0,Low,Laag,0
+selection,"res.request.history,priority",0,Normal,Normaal,0
+selection,"res.request.history,state",0,Chatting,In gesprek,0
+selection,"res.request.history,state",0,Closed,Afgesloten,0
+selection,"res.request.history,state",0,Draft,Concept,0
+selection,"res.request.history,state",0,Waiting,Aan het wachten,0
+view,ir.module.module,0,Cancel Installation,Installatie annuleren,0
+view,ir.module.module,0,Cancel Uninstallation,Verwijdren ongedaan maken,0
+view,ir.module.module,0,Cancel Upgrade,Bijwerken annuleren,0
+view,ir.module.module,0,Mark for Installation,Selecteer voor installatie,0
+view,ir.module.module,0,Mark for Uninstallation (beta),Selecteer voor verwijderen (beta),0
+view,ir.module.module,0,Mark for Upgrade,Selecteer voor bijwerken,0
+view,res.group,0,Access Permissions,Toegangsrecht,0
+view,res.group,0,Group,Groep,0
+view,res.group,0,Groups,Groepen,0
+view,res.group,0,Members,Leden,0
+view,res.request,0,Close,Afsluiten,0
+view,res.request,0,References,Referenties,0
+view,res.request,0,Reply,Beantwoorden,0
+view,res.request,0,Request,Verzoek,0
+view,res.request,0,Requests,Verzoeken,0
+view,res.request,0,Send,Verzenden,0
+view,res.request.history,0,Request History,Verzoek geschiedenis,0
+view,res.request.link,0,Request Link,Verzoek koppeling,0
+view,res.request.reference,0,Request Reference,Verzoek referentie,0
+view,res.request.reference,0,Request References,Verzoek referenties,0
+view,res.user,0,Access Permissions,Toegangsrecht,0
+view,res.user,0,Group Membership,Groep lidmaatschap,0
+view,res.user,0,Preferences,Voorkeuren,0
+view,res.user,0,User,Gebruiker,0
+view,res.user,0,Users,Gebruikers,0
+view,res.user.config.init,0,Add Users,Gebruikers toevoegen,0
+view,res.user.config.init,0,Be careful that the login must be unique!,Let op; login moet uniek zijn!,0
+view,res.user.config.init,0,You can now add some users into the system.,U kunt nu gebruikers toevoegen aan het systeem.,0
+view,res.user.warning,0,Warning,Waarschuwing,0
+view,res.user.warning,0,Warnings,Waarschuwingen,0
+wizard_button,"res.user.config,init,end",0,Cancel,Annuleren,0
+wizard_button,"res.user.config,init,user",0,Ok,Oké,0
+wizard_button,"res.user.config,user,add",0,Add,Toevoegen,0
+wizard_button,"res.user.config,user,end",0,End,Einde,0
diff --git a/trytond/res/request.xml b/trytond/res/request.xml
index 4ce4eda..29819e4 100644
--- a/trytond/res/request.xml
+++ b/trytond/res/request.xml
@@ -77,7 +77,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_request_form">
             <field name="name">Requests</field>
             <field name="res_model">res.request</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_request_form_view1">
@@ -91,7 +90,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="request_view_form"/>
             <field name="act_window" ref="act_request_form"/>
         </record>
-        <menuitem parent="res.menu_res"
+        <menuitem parent="res.menu_res" groups="group_admin"
             action="act_request_form" id="menu_request_form"/>
         <record model="ir.ui.view" id="request_link_view_form">
             <field name="model">res.request.link</field>
@@ -124,7 +123,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_request_link_form">
             <field name="name">Request Links</field>
             <field name="res_model">res.request.link</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_request_link_form_view1">
@@ -138,7 +136,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="request_link_view_form"/>
             <field name="act_window" ref="act_request_link_form"/>
         </record>
-        <menuitem parent="res.menu_res"
+        <menuitem parent="res.menu_res" groups="group_admin"
             action="act_request_link_form" id="menu_request_link_form"/>
 
         <record model="ir.ui.view" id="request_history_view_tree">
diff --git a/trytond/res/user.xml b/trytond/res/user.xml
index 4217f41..2383bdd 100644
--- a/trytond/res/user.xml
+++ b/trytond/res/user.xml
@@ -109,7 +109,6 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Users</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">res.user</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_user_form_view1">
@@ -123,8 +122,9 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="user_view_form"/>
             <field name="act_window" ref="act_user_form"/>
         </record>
-        <menuitem parent="res.menu_res"
+        <menuitem parent="res.menu_res" groups="group_admin"
             action="act_user_form" id="menu_user_form"/>
+
         <record model="ir.model.access" id="access_user">
             <field name="model" search="[('model', '=', 'res.user')]"/>
             <field name="perm_read" eval="True"/>
diff --git a/trytond/server.py b/trytond/server.py
index 5674253..419fb11 100644
--- a/trytond/server.py
+++ b/trytond/server.py
@@ -3,6 +3,7 @@
 """
 %prog [options]
 """
+from __future__ import with_statement
 import logging
 import logging.handlers
 import sys, os, signal
@@ -86,30 +87,26 @@ class TrytonServer(object):
             database = Database(db_name).connect()
             cursor = database.cursor()
 
-            try:
-                if CONFIG['init']:
-                    if not cursor.test():
-                        self.logger.info("init db")
-                        Database.init(cursor)
-                        init[db_name] = True
-                    cursor.commit()
-                elif not cursor.test():
-                    raise Exception("'%s' is not a Tryton database!" % db_name)
-            finally:
+            if CONFIG['init']:
+                if not cursor.test():
+                    self.logger.info("init db")
+                    Database.init(cursor)
+                    init[db_name] = True
+                cursor.commit()
                 cursor.close()
+            elif not cursor.test():
+                raise Exception("'%s' is not a Tryton database!" % db_name)
 
         Pool.start()
 
         for db_name in CONFIG["db_name"]:
             cursor = Database(db_name).connect().cursor()
-            try:
-                if not cursor.test():
-                    raise Exception("'%s' is not a Tryton database!" % db_name)
-                cursor.execute('SELECT code FROM ir_lang ' \
-                        'WHERE translatable')
-                lang = [x[0] for x in cursor.fetchall()]
-            finally:
-                cursor.close()
+            if not cursor.test():
+                raise Exception("'%s' is not a Tryton database!" % db_name)
+            cursor.execute('SELECT code FROM ir_lang ' \
+                    'WHERE translatable')
+            lang = [x[0] for x in cursor.fetchall()]
+            cursor.close()
             update = bool(CONFIG['init'] or CONFIG['update'])
             Pool(db_name).init(update=update, lang=lang)
 
@@ -132,20 +129,17 @@ class TrytonServer(object):
 
                 database = Database(db_name).connect()
                 cursor = database.cursor()
-                try:
-                    salt = ''.join(random.sample(
-                        string.letters + string.digits, 8))
-                    password += salt
-                    if hashlib:
-                        password = hashlib.sha1(password).hexdigest()
-                    else:
-                        password = sha.new(password).hexdigest()
-                    cursor.execute('UPDATE res_user ' \
-                            'SET password = %s, salt = %s ' \
-                            'WHERE login = \'admin\'', (password, salt))
-                    cursor.commit()
-                finally:
-                    cursor.close()
+                salt = ''.join(random.sample(string.letters + string.digits, 8))
+                password += salt
+                if hashlib:
+                    password = hashlib.sha1(password).hexdigest()
+                else:
+                    password = sha.new(password).hexdigest()
+                cursor.execute('UPDATE res_user ' \
+                        'SET password = %s, salt = %s ' \
+                        'WHERE login = \'admin\'', (password, salt))
+                cursor.commit()
+                cursor.close()
 
         if update:
             self.logger.info('Update/Init succeed!')
@@ -209,10 +203,8 @@ class TrytonServer(object):
             sys.exit(0)
 
         if CONFIG['pidfile']:
-            fd_pid = open(CONFIG['pidfile'], 'w')
-            pidtext = "%d" % (os.getpid())
-            fd_pid.write(pidtext)
-            fd_pid.close()
+            with open(CONFIG['pidfile'], 'w') as fd_pid:
+                fd_pid.write("%d" % (os.getpid()))
 
         signal.signal(signal.SIGINT, handler)
         signal.signal(signal.SIGTERM, handler)
diff --git a/trytond/test/__init__.py b/trytond/test/__init__.py
index 0af27ec..0325085 100644
--- a/trytond/test/__init__.py
+++ b/trytond/test/__init__.py
@@ -7,3 +7,4 @@ from mptt import *
 from import_data import *
 from export_data import *
 from trigger import *
+from access import *
diff --git a/trytond/test/access.py b/trytond/test/access.py
new file mode 100644
index 0000000..9a64c16
--- /dev/null
+++ b/trytond/test/access.py
@@ -0,0 +1,14 @@
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+from trytond.model import ModelSQL, fields
+
+
+class TestAccess(ModelSQL):
+    'Test Access'
+    _name = 'test.access'
+    _description = __doc__
+
+    field1 = fields.Char('Field 1')
+    field2 = fields.Char('Field 2')
+
+TestAccess()
diff --git a/trytond/test/test.py b/trytond/test/test.py
index be7f8c8..abca5df 100644
--- a/trytond/test/test.py
+++ b/trytond/test/test.py
@@ -11,8 +11,7 @@ class Boolean(ModelSQL):
     'Boolean'
     _name = 'test.boolean'
     _description = __doc__
-    boolean = fields.Boolean(string='Boolean', help='Test boolean',
-            required=False)
+    boolean = fields.Boolean(string='Boolean', help='Test boolean')
 
 Boolean()
 
@@ -21,8 +20,7 @@ class BooleanDefault(ModelSQL):
     'Boolean Default'
     _name = 'test.boolean_default'
     _description = __doc__
-    boolean = fields.Boolean(string='Boolean', help='Test boolean',
-            required=False)
+    boolean = fields.Boolean(string='Boolean', help='Test boolean')
 
     def default_boolean(self):
         return True
@@ -354,3 +352,72 @@ class DateTimeRequired(ModelSQL):
             required=True)
 
 DateTimeRequired()
+
+
+class One2One(ModelSQL):
+    'One2One'
+    _name = 'test.one2one'
+    _description = __doc__
+    name = fields.Char('Name', required=True)
+    one2one = fields.One2One('test.one2one.relation', 'origin', 'target',
+            string='One2One', help='Test one2one', required=False)
+
+One2One()
+
+
+class One2OneTarget(ModelSQL):
+    'One2One Target'
+    _name = 'test.one2one.target'
+    name = fields.Char('Name', required=True)
+
+One2OneTarget()
+
+
+class One2OneRelation(ModelSQL):
+    'One2One Relation'
+    _name = 'test.one2one.relation'
+    _description = __doc__
+    origin = fields.Many2One('test.one2one', 'Origin')
+    target = fields.Many2One('test.one2one.target', 'Target')
+
+    def __init__(self):
+        super(One2OneRelation, self).__init__()
+        self._sql_constraints += [
+            ('origin_unique', 'UNIQUE(origin)',
+                'Origin must be unique'),
+            ('target_unique', 'UNIQUE(target)',
+                'Target must be unique'),
+        ]
+
+One2OneRelation()
+
+
+class One2OneRequired(ModelSQL):
+    'One2One'
+    _name = 'test.one2one_required'
+    _description = __doc__
+    name = fields.Char('Name', required=True)
+    one2one = fields.One2One('test.one2one_required.relation', 'origin', 'target',
+            string='One2One', help='Test one2one', required=True)
+
+One2OneRequired()
+
+
+class One2OneRequiredRelation(ModelSQL):
+    'One2One Relation'
+    _name = 'test.one2one_required.relation'
+    _description = __doc__
+    origin = fields.Many2One('test.one2one_required', 'Origin')
+    target = fields.Many2One('test.one2one.target', 'Target')
+
+    def __init__(self):
+        super(One2OneRequiredRelation, self).__init__()
+        self._sql_constraints += [
+            ('origin_unique', 'UNIQUE(origin)',
+                'Origin must be unique'),
+            ('target_unique', 'UNIQUE(target)',
+                'Target must be unique'),
+        ]
+
+One2OneRequiredRelation()
+
diff --git a/trytond/tests/test_access.py b/trytond/tests/test_access.py
new file mode 100644
index 0000000..7a21a25
--- /dev/null
+++ b/trytond/tests/test_access.py
@@ -0,0 +1,794 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#This file is part of Tryton.  The COPYRIGHT file at the top level of
+#this repository contains the full copyright notices and license terms.
+from __future__ import with_statement
+import unittest
+from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, \
+        install_module
+from trytond.transaction import Transaction
+
+
+class ModelAccessTestCase(unittest.TestCase):
+    '''
+    Test Model Access
+    '''
+
+    def setUp(self):
+        install_module('test')
+        self.model_access = POOL.get('ir.model.access')
+        self.test_access = POOL.get('test.access')
+        self.model = POOL.get('ir.model')
+        self.group = POOL.get('res.group')
+
+    def test0010perm_read(self):
+        '''
+        Test Read Access
+        '''
+        with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+            model_id, = self.model.search([('model', '=', 'test.access')])
+
+            test_id = self.test_access.create({})
+
+            # Without model access
+            self.test_access.read(test_id)
+
+            # With model access
+
+            # One access allowed for any group
+            model_access_wo_group_id = self.model_access.create({
+                'model': model_id,
+                'group': False,
+                'perm_read': True,
+                })
+            self.test_access.read(test_id)
+
+            # One access disallowed for any group
+            self.model_access.write(model_access_wo_group_id, {
+                'perm_read': False,
+                })
+            self.failUnlessRaises(Exception, self.test_access.read,
+                    test_id)
+
+            # Two access rules with one group allowed
+            group_id = self.group.search([('users', '=', USER)])[0]
+            model_access_w_group_id = self.model_access.create({
+                'model': model_id,
+                'group': group_id,
+                'perm_read': True,
+                })
+
+            self.test_access.read(test_id)
+
+            # Two access rules with both allowed
+            self.model_access.write(model_access_wo_group_id, {
+                'perm_read': True,
+                })
+            self.test_access.read(test_id)
+
+            # Two access rules with any group allowed
+            self.model_access.write(model_access_w_group_id, {
+                'perm_read': False,
+                })
+            self.test_access.read(test_id)
+
+            # Two access rules with both disallowed
+            self.model_access.write(model_access_wo_group_id, {
+                'perm_read': False,
+                })
+            self.failUnlessRaises(Exception, self.test_access.read,
+                    test_id)
+
+            # One access disallowed for one group
+            self.model_access.delete(model_access_wo_group_id)
+            self.failUnlessRaises(Exception, self.test_access.read,
+                    test_id)
+
+            # One access allowed for one group
+            self.model_access.write(model_access_w_group_id, {
+                'perm_read': True,
+                })
+            self.test_access.read(test_id)
+
+            # One access allowed for one other group
+            group_id = self.group.create({'name': 'Test'})
+            self.model_access.write(model_access_w_group_id, {
+                'group': group_id,
+                })
+            self.test_access.read(test_id)
+
+            # One access disallowed for one other group
+            self.model_access.write(model_access_w_group_id, {
+                'perm_read': False,
+                })
+            self.test_access.read(test_id)
+
+            transaction.cursor.rollback()
+
+    def test0020perm_write(self):
+        '''
+        Test Write Access
+        '''
+        with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+            model_id, = self.model.search([('model', '=', 'test.access')])
+
+            test_id = self.test_access.create({})
+
+            # Without model access
+            self.test_access.write(test_id, {})
+
+            # With model access
+
+            # One access allowed for any group
+            model_access_wo_group_id = self.model_access.create({
+                'model': model_id,
+                'group': False,
+                'perm_write': True,
+                })
+            self.test_access.write(test_id, {})
+
+            # One access disallowed for any group
+            self.model_access.write(model_access_wo_group_id, {
+                'perm_write': False,
+                })
+            self.failUnlessRaises(Exception, self.test_access.write,
+                    test_id, {})
+
+            # Two access rules with one group allowed
+            group_id = self.group.search([('users', '=', USER)])[0]
+            model_access_w_group_id = self.model_access.create({
+                'model': model_id,
+                'group': group_id,
+                'perm_write': True,
+                })
+
+            self.test_access.write(test_id, {})
+
+            # Two access rules with both allowed
+            self.model_access.write(model_access_wo_group_id, {
+                'perm_write': True,
+                })
+            self.test_access.write(test_id, {})
+
+            # Two access rules with any group allowed
+            self.model_access.write(model_access_w_group_id, {
+                'perm_write': False,
+                })
+            self.test_access.write(test_id, {})
+
+            # Two access rules with both disallowed
+            self.model_access.write(model_access_wo_group_id, {
+                'perm_write': False,
+                })
+            self.failUnlessRaises(Exception, self.test_access.write,
+                    test_id, {})
+
+            # One access disallowed for one group
+            self.model_access.delete(model_access_wo_group_id)
+            self.failUnlessRaises(Exception, self.test_access.write,
+                    test_id, {})
+
+            # One access allowed for one group
+            self.model_access.write(model_access_w_group_id, {
+                'perm_write': True,
+                })
+            self.test_access.write(test_id, {})
+
+            # One access allowed for one other group
+            group_id = self.group.create({'name': 'Test'})
+            self.model_access.write(model_access_w_group_id, {
+                'group': group_id,
+                })
+            self.test_access.write(test_id, {})
+
+            # One access disallowed for one other group
+            self.model_access.write(model_access_w_group_id, {
+                'perm_write': False,
+                })
+            self.test_access.write(test_id, {})
+
+            transaction.cursor.rollback()
+
+    def test0030perm_create(self):
+        '''
+        Test Create Access
+        '''
+        with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+            model_id, = self.model.search([('model', '=', 'test.access')])
+
+            # Without model access
+            test_id = self.test_access.create({})
+
+            # With model access
+
+            # One access allowed for any group
+            model_access_wo_group_id = self.model_access.create({
+                'model': model_id,
+                'group': False,
+                'perm_create': True,
+                })
+            self.test_access.create({})
+
+            # One access disallowed for any group
+            self.model_access.write(model_access_wo_group_id, {
+                'perm_create': False,
+                })
+            self.failUnlessRaises(Exception, self.test_access.create, {})
+
+            # Two access rules with one group allowed
+            group_id = self.group.search([('users', '=', USER)])[0]
+            model_access_w_group_id = self.model_access.create({
+                'model': model_id,
+                'group': group_id,
+                'perm_create': True,
+                })
+
+            self.test_access.create({})
+
+            # Two access rules with both allowed
+            self.model_access.write(model_access_wo_group_id, {
+                'perm_create': True,
+                })
+            self.test_access.create({})
+
+            # Two access rules with any group allowed
+            self.model_access.write(model_access_w_group_id, {
+                'perm_create': False,
+                })
+            self.test_access.create({})
+
+            # Two access rules with both disallowed
+            self.model_access.write(model_access_wo_group_id, {
+                'perm_create': False,
+                })
+            self.failUnlessRaises(Exception, self.test_access.create, {})
+
+            # One access disallowed for one group
+            self.model_access.delete(model_access_wo_group_id)
+            self.failUnlessRaises(Exception, self.test_access.create, {})
+
+            # One access allowed for one group
+            self.model_access.write(model_access_w_group_id, {
+                'perm_create': True,
+                })
+            self.test_access.create({})
+
+            # One access allowed for one other group
+            group_id = self.group.create({'name': 'Test'})
+            self.model_access.write(model_access_w_group_id, {
+                'group': group_id,
+                })
+            self.test_access.create({})
+
+            # One access disallowed for one other group
+            self.model_access.write(model_access_w_group_id, {
+                'perm_create': False,
+                })
+            self.test_access.create({})
+
+            transaction.cursor.rollback()
+
+    def test0040perm_delete(self):
+        '''
+        Test Delete Access
+        '''
+        with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+            model_id, = self.model.search([('model', '=', 'test.access')])
+
+            test_ids = [self.test_access.create({}) for x in range(11)]
+
+            # Without model access
+            test_id = self.test_access.delete(test_ids.pop())
+
+            # With model access
+
+            # One access allowed for any group
+            model_access_wo_group_id = self.model_access.create({
+                'model': model_id,
+                'group': False,
+                'perm_delete': True,
+                })
+            self.test_access.delete(test_ids.pop())
+
+            # One access disallowed for any group
+            self.model_access.write(model_access_wo_group_id, {
+                'perm_delete': False,
+                })
+            self.failUnlessRaises(Exception, self.test_access.delete,
+                    test_ids.pop())
+
+            # Two access rules with one group allowed
+            group_id = self.group.search([('users', '=', USER)])[0]
+            model_access_w_group_id = self.model_access.create({
+                'model': model_id,
+                'group': group_id,
+                'perm_delete': True,
+                })
+
+            self.test_access.delete(test_ids.pop())
+
+            # Two access rules with both allowed
+            self.model_access.write(model_access_wo_group_id, {
+                'perm_delete': True,
+                })
+            self.test_access.delete(test_ids.pop())
+
+            # Two access rules with any group allowed
+            self.model_access.write(model_access_w_group_id, {
+                'perm_delete': False,
+                })
+            self.test_access.delete(test_ids.pop())
+
+            # Two access rules with both disallowed
+            self.model_access.write(model_access_wo_group_id, {
+                'perm_delete': False,
+                })
+            self.failUnlessRaises(Exception, self.test_access.delete,
+                    test_ids.pop())
+
+            # One access disallowed for one group
+            self.model_access.delete(model_access_wo_group_id)
+            self.failUnlessRaises(Exception, self.test_access.delete,
+                    test_ids.pop())
+
+            # One access allowed for one group
+            self.model_access.write(model_access_w_group_id, {
+                'perm_delete': True,
+                })
+            self.test_access.delete(test_ids.pop())
+
+            # One access allowed for one other group
+            group_id = self.group.create({'name': 'Test'})
+            self.model_access.write(model_access_w_group_id, {
+                'group': group_id,
+                })
+            self.test_access.delete(test_ids.pop())
+
+            # One access disallowed for one other group
+            self.model_access.write(model_access_w_group_id, {
+                'perm_delete': False,
+                })
+            self.test_access.delete(test_ids.pop())
+
+            transaction.cursor.rollback()
+
+
+class ModelFieldAccessTestCase(unittest.TestCase):
+    '''
+    Test Model Field Access
+    '''
+
+    def setUp(self):
+        install_module('test')
+        self.field_access = POOL.get('ir.model.field.access')
+        self.test_access = POOL.get('test.access')
+        self.field = POOL.get('ir.model.field')
+        self.group = POOL.get('res.group')
+
+    def test0010perm_read(self):
+        '''
+        Test Read Access
+        '''
+        with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+            field1_id, = self.field.search([
+                ('model.model', '=', 'test.access'),
+                ('name', '=', 'field1'),
+                ])
+            field2_id, = self.field.search([
+                ('model.model', '=', 'test.access'),
+                ('name', '=', 'field2'),
+                ])
+
+            test_id = self.test_access.create({
+                'field1': 'ham',
+                'field2': 'spam',
+                })
+
+            # Without field access
+            self.test_access.read(test_id, ['field1'])
+            self.test_access.read(test_id, ['field2'])
+            self.test_access.read(test_id)
+            test_access = self.test_access.browse(test_id)
+            test_access.field1
+            test_access.field2
+            transaction.cursor.cache.clear()
+
+            # With field access
+
+            # One access allowed for any group
+            field_access_wo_group_id = self.field_access.create({
+                'field': field1_id,
+                'group': False,
+                'perm_read': True,
+                })
+            self.test_access.read(test_id, ['field1'])
+            self.test_access.read(test_id, ['field2'])
+            self.test_access.read(test_id)
+            test_access = self.test_access.browse(test_id)
+            test_access.field1
+            test_access.field2
+            transaction.cursor.cache.clear()
+
+            # One access disallowed for any group
+            self.field_access.write(field_access_wo_group_id, {
+                'perm_read': False,
+                })
+
+            self.failUnlessRaises(Exception, self.test_access.read, test_id,
+                    ['field1'])
+            self.test_access.read(test_id, ['field2'])
+            self.failUnlessRaises(Exception, self.test_access.read, test_id)
+            test_access = self.test_access.browse(test_id)
+            self.failUnlessRaises(Exception, getattr, test_access, 'field1')
+            test_access.field2
+            transaction.cursor.cache.clear()
+
+            # Two access rules with one group allowed
+            group_id = self.group.search([('users', '=', USER)])[0]
+            field_access_w_group_id = self.field_access.create({
+                'field': field1_id,
+                'group': group_id,
+                'perm_read': True,
+                })
+
+            self.test_access.read(test_id, ['field1'])
+            self.test_access.read(test_id, ['field2'])
+            self.test_access.read(test_id)
+            test_access = self.test_access.browse(test_id)
+            test_access.field1
+            test_access.field2
+            transaction.cursor.cache.clear()
+
+            # Two access rules with both allowed
+            self.field_access.write(field_access_wo_group_id, {
+                'perm_read': True,
+                })
+            self.test_access.read(test_id, ['field1'])
+            self.test_access.read(test_id, ['field2'])
+            self.test_access.read(test_id)
+            test_access = self.test_access.browse(test_id)
+            test_access.field1
+            test_access.field2
+            transaction.cursor.cache.clear()
+
+            # Two access rules with any group allowed
+            self.field_access.write(field_access_w_group_id, {
+                'perm_read': False,
+                })
+            self.test_access.read(test_id, ['field1'])
+            self.test_access.read(test_id, ['field2'])
+            self.test_access.read(test_id)
+            test_access = self.test_access.browse(test_id)
+            test_access.field1
+            test_access.field2
+            transaction.cursor.cache.clear()
+
+            # Two access rules with both disallowed
+            self.field_access.write(field_access_wo_group_id, {
+                'perm_read': False,
+                })
+            self.failUnlessRaises(Exception, self.test_access.read, test_id,
+                    ['field1'])
+            self.test_access.read(test_id, ['field2'])
+            self.failUnlessRaises(Exception, self.test_access.read, test_id)
+            test_access = self.test_access.browse(test_id)
+            self.failUnlessRaises(Exception, getattr, test_access, 'field1')
+            test_access.field2
+            transaction.cursor.cache.clear()
+
+            # One access disallowed for one group
+            self.field_access.delete(field_access_wo_group_id)
+            self.failUnlessRaises(Exception, self.test_access.read, test_id,
+                    ['field1'])
+            self.test_access.read(test_id, ['field2'])
+            self.failUnlessRaises(Exception, self.test_access.read, test_id)
+            test_access = self.test_access.browse(test_id)
+            self.failUnlessRaises(Exception, getattr, test_access, 'field1')
+            test_access.field2
+            transaction.cursor.cache.clear()
+
+            # One access allowed for one group
+            self.field_access.write(field_access_w_group_id, {
+                'perm_read': True,
+                })
+            self.test_access.read(test_id, ['field1'])
+            self.test_access.read(test_id, ['field2'])
+            self.test_access.read(test_id)
+            test_access = self.test_access.browse(test_id)
+            test_access.field1
+            test_access.field2
+            transaction.cursor.cache.clear()
+
+            # One access allowed for one other group
+            group_id = self.group.create({'name': 'Test'})
+            self.field_access.write(field_access_w_group_id, {
+                'group': group_id,
+                })
+            self.test_access.read(test_id, ['field1'])
+            self.test_access.read(test_id, ['field2'])
+            self.test_access.read(test_id)
+            test_access = self.test_access.browse(test_id)
+            test_access.field1
+            test_access.field2
+            transaction.cursor.cache.clear()
+
+            # One access disallowed for one other group
+            self.field_access.write(field_access_w_group_id, {
+                'perm_read': False,
+                })
+            self.test_access.read(test_id, ['field1'])
+            self.test_access.read(test_id, ['field2'])
+            self.test_access.read(test_id)
+            test_access = self.test_access.browse(test_id)
+            test_access.field1
+            test_access.field2
+            transaction.cursor.cache.clear()
+
+            # Two access rules on both fields allowed
+            self.field_access.delete(field_access_w_group_id)
+
+            field_access1 = self.field_access.create({
+                'field': field1_id,
+                'group': False,
+                'perm_read': True,
+                })
+            field_access2 = self.field_access.create({
+                'field': field2_id,
+                'group': False,
+                'perm_read': True,
+                })
+
+            self.test_access.read(test_id, ['field1'])
+            self.test_access.read(test_id, ['field2'])
+            self.test_access.read(test_id)
+            test_access = self.test_access.browse(test_id)
+            test_access.field1
+            test_access.field2
+            transaction.cursor.cache.clear()
+
+            # Two access rules on both fields one allowed and one disallowed
+            self.field_access.write(field_access2, {
+                'perm_read': False,
+                })
+            self.test_access.read(test_id, ['field1'])
+            self.failUnlessRaises(Exception, self.test_access.read, test_id,
+                    ['field2'])
+            self.failUnlessRaises(Exception, self.test_access.read, test_id)
+            test_access = self.test_access.browse(test_id)
+            test_access.field1
+            self.failUnlessRaises(Exception, getattr, test_access, 'field2')
+            transaction.cursor.cache.clear()
+
+            # Two access rules on both fields disallowed
+            self.field_access.write(field_access1, {
+                'perm_read': False,
+                })
+            self.failUnlessRaises(Exception, self.test_access.read, test_id,
+                    ['field1'])
+            self.failUnlessRaises(Exception, self.test_access.read, test_id,
+                    ['field2'])
+            self.failUnlessRaises(Exception, self.test_access.read, test_id)
+            test_access = self.test_access.browse(test_id)
+            self.failUnlessRaises(Exception, getattr, test_access, 'field1')
+            self.failUnlessRaises(Exception, getattr, test_access, 'field2')
+            transaction.cursor.cache.clear()
+
+            transaction.cursor.rollback()
+
+    def test0010perm_write(self):
+        '''
+        Test Write Access
+        '''
+        with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+            field1_id, = self.field.search([
+                ('model.model', '=', 'test.access'),
+                ('name', '=', 'field1'),
+                ])
+            field2_id, = self.field.search([
+                ('model.model', '=', 'test.access'),
+                ('name', '=', 'field2'),
+                ])
+
+            test_id = self.test_access.create({
+                'field1': 'ham',
+                'field2': 'spam',
+                })
+
+            # Without field access
+            self.test_access.write(test_id, {})
+            self.test_access.write(test_id, {'field1': 'ham'})
+            self.test_access.write(test_id, {'field2': 'spam'})
+
+            # With field access
+
+            # One access allowed for any group
+            field_access_wo_group_id = self.field_access.create({
+                'field': field1_id,
+                'group': False,
+                'perm_write': True,
+                })
+            self.test_access.write(test_id, {})
+            self.test_access.write(test_id, {'field1': 'ham'})
+            self.test_access.write(test_id, {'field2': 'spam'})
+            self.test_access.write(test_id, {
+                'field1': 'ham',
+                'field2': 'spam',
+                })
+
+            # One access disallowed for any group
+            self.field_access.write(field_access_wo_group_id, {
+                'perm_write': False,
+                })
+
+            self.test_access.write(test_id, {})
+            self.failUnlessRaises(Exception, self.test_access.write, test_id,
+                    {'field1': 'ham'})
+            self.test_access.write(test_id, {'field2': 'spam'})
+            self.failUnlessRaises(Exception, self.test_access.write, test_id, {
+                    'field1': 'ham',
+                    'field2': 'spam',
+                    })
+
+            # Two access rules with one group allowed
+            group_id = self.group.search([('users', '=', USER)])[0]
+            field_access_w_group_id = self.field_access.create({
+                'field': field1_id,
+                'group': group_id,
+                'perm_write': True,
+                })
+
+            self.test_access.write(test_id, {})
+            self.test_access.write(test_id, {'field1': 'ham'})
+            self.test_access.write(test_id, {'field2': 'spam'})
+            self.test_access.write(test_id, {
+                'field1': 'ham',
+                'field2': 'spam',
+                })
+
+            # Two access rules with both allowed
+            self.field_access.write(field_access_wo_group_id, {
+                'perm_write': True,
+                })
+            self.test_access.write(test_id, {})
+            self.test_access.write(test_id, {'field1': 'ham'})
+            self.test_access.write(test_id, {'field2': 'spam'})
+            self.test_access.write(test_id, {
+                'field1': 'ham',
+                'field2': 'spam',
+                })
+
+            # Two access rules with any group allowed
+            self.field_access.write(field_access_w_group_id, {
+                'perm_write': False,
+                })
+            self.test_access.write(test_id, {})
+            self.test_access.write(test_id, {'field1': 'ham'})
+            self.test_access.write(test_id, {'field2': 'spam'})
+            self.test_access.write(test_id, {
+                'field1': 'ham',
+                'field2': 'spam',
+                })
+
+            # Two access rules with both disallowed
+            self.field_access.write(field_access_wo_group_id, {
+                'perm_write': False,
+                })
+            self.test_access.write(test_id, {})
+            self.failUnlessRaises(Exception, self.test_access.write, test_id,
+                    {'field1': 'ham'})
+            self.test_access.write(test_id, {'field2': 'spam'})
+            self.failUnlessRaises(Exception, self.test_access.write, test_id, {
+                    'field1': 'ham',
+                    'field2': 'spam',
+                    })
+
+            # One access disallowed for one group
+            self.field_access.delete(field_access_wo_group_id)
+            self.test_access.write(test_id, {})
+            self.failUnlessRaises(Exception, self.test_access.write, test_id,
+                    {'field1': 'ham'})
+            self.test_access.write(test_id, {'field2': 'ham'})
+            self.failUnlessRaises(Exception, self.test_access.write, test_id, {
+                    'field1': 'ham',
+                    'field2': 'spam',
+                    })
+
+            # One access allowed for one group
+            self.field_access.write(field_access_w_group_id, {
+                'perm_write': True,
+                })
+            self.test_access.write(test_id, {})
+            self.test_access.write(test_id, {'field1': 'ham'})
+            self.test_access.write(test_id, {'field2': 'spam'})
+            self.test_access.write(test_id, {
+                'field1': 'ham',
+                'field2': 'spam',
+                })
+
+            # One access allowed for one other group
+            group_id = self.group.create({'name': 'Test'})
+            self.field_access.write(field_access_w_group_id, {
+                'group': group_id,
+                })
+            self.test_access.write(test_id, {})
+            self.test_access.write(test_id, {'field1': 'ham'})
+            self.test_access.write(test_id, {'field2': 'spam'})
+            self.test_access.write(test_id, {
+                'field1': 'ham',
+                'field2': 'spam',
+                })
+
+            # One access disallowed for one other group
+            self.field_access.write(field_access_w_group_id, {
+                'perm_write': False,
+                })
+            self.test_access.write(test_id, {})
+            self.test_access.write(test_id, {'field1': 'ham'})
+            self.test_access.write(test_id, {'field2': 'spam'})
+            self.test_access.write(test_id, {
+                'field1': 'ham',
+                'field2': 'spam',
+                })
+
+            # Two access rules on both fields allowed
+            self.field_access.delete(field_access_w_group_id)
+
+            field_access1 = self.field_access.create({
+                'field': field1_id,
+                'group': False,
+                'perm_write': True,
+                })
+            field_access2 = self.field_access.create({
+                'field': field2_id,
+                'group': False,
+                'perm_write': True,
+                })
+
+            self.test_access.write(test_id, {})
+            self.test_access.write(test_id, {'field1': 'ham'})
+            self.test_access.write(test_id, {'field2': 'spam'})
+            self.test_access.write(test_id, {
+                'field1': 'ham',
+                'field2': 'spam',
+                })
+
+            # Two access rules on both fields one allowed and one disallowed
+            self.field_access.write(field_access2, {
+                'perm_write': False,
+                })
+            self.test_access.write(test_id, {})
+            self.test_access.write(test_id, {'field1': 'ham'})
+            self.failUnlessRaises(Exception, self.test_access.write, test_id,
+                    {'field2': 'spam'})
+            self.failUnlessRaises(Exception, self.test_access.write, test_id, {
+                    'field1': 'ham',
+                    'field2': 'spam',
+                    })
+
+            # Two access rules on both fields disallowed
+            self.field_access.write(field_access1, {
+                'perm_write': False,
+                })
+            self.test_access.write(test_id, {})
+            self.failUnlessRaises(Exception, self.test_access.write, test_id,
+                    {'field1': 'ham'})
+            self.failUnlessRaises(Exception, self.test_access.write, test_id,
+                    {'field2': 'spam'})
+            self.failUnlessRaises(Exception, self.test_access.write, test_id, {
+                    'field1': 'ham',
+                    'field2': 'spam',
+                    })
+
+            transaction.cursor.rollback()
+
+def suite():
+    suite_ = unittest.TestSuite()
+    suite_.addTests(unittest.TestLoader(
+        ).loadTestsFromTestCase(ModelAccessTestCase))
+    suite_.addTests(unittest.TestLoader(
+        ).loadTestsFromTestCase(ModelFieldAccessTestCase))
+    return suite_
+
+if __name__ == '__main__':
+    suite = suite()
+    unittest.TextTestRunner(verbosity=2).run(suite)
diff --git a/trytond/tests/test_fields.py b/trytond/tests/test_fields.py
index 0976295..fd44d29 100644
--- a/trytond/tests/test_fields.py
+++ b/trytond/tests/test_fields.py
@@ -60,6 +60,10 @@ class FieldsTestCase(unittest.TestCase):
         self.datetime_default = POOL.get('test.datetime_default')
         self.datetime_required = POOL.get('test.datetime_required')
 
+        self.one2one = POOL.get('test.one2one')
+        self.one2one_target = POOL.get('test.one2one.target')
+        self.one2one_required = POOL.get('test.one2one_required')
+
     def test0010boolean(self):
         '''
         Test Boolean.
@@ -759,6 +763,11 @@ class FieldsTestCase(unittest.TestCase):
 
             self.failUnlessRaises(Exception, self.numeric_digits.write,
                     numeric6_id, {
+                        'numeric': Decimal('0.10000000000000001'),
+                        })
+
+            self.failUnlessRaises(Exception, self.numeric_digits.write,
+                    numeric6_id, {
                         'digits': 0,
                         })
 
@@ -2072,6 +2081,130 @@ class FieldsTestCase(unittest.TestCase):
 
             transaction.cursor.rollback()
 
+    def test0100one2one(self):
+        '''
+        Test One2One.
+        '''
+        with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
+            target1_id = self.one2one_target.create({
+                'name': 'target1',
+                })
+            one2one1_id = self.one2one.create({
+                'name': 'origin1',
+                'one2one': target1_id,
+                })
+            self.assert_(one2one1_id)
+
+            one2one1 = self.one2one.read(one2one1_id, ['one2one',
+                'one2one.name'])
+            self.assert_(one2one1['one2one'] == target1_id)
+            self.assert_(one2one1['one2one.name'] == 'target1')
+
+            one2one_ids = self.one2one.search([
+                ('one2one', '=', 'target1'),
+                ])
+            self.assert_(one2one_ids == [one2one1_id])
+
+            one2one_ids = self.one2one.search([
+                ('one2one', '!=', 'target1'),
+                ])
+            self.assert_(one2one_ids == [])
+
+            one2one_ids = self.one2one.search([
+                ('one2one', 'in', [target1_id]),
+                ])
+            self.assert_(one2one_ids == [one2one1_id])
+
+            one2one_ids = self.one2one.search([
+                ('one2one', 'in', [0]),
+                ])
+            self.assert_(one2one_ids == [])
+
+            one2one_ids = self.one2one.search([
+                ('one2one', 'not in', [target1_id]),
+                ])
+            self.assert_(one2one_ids == [])
+
+            one2one_ids = self.one2one.search([
+                ('one2one', 'not in', [0]),
+                ])
+            self.assert_(one2one_ids == [one2one1_id])
+
+            one2one_ids = self.one2one.search([
+                ('one2one.name', '=', 'target1'),
+                ])
+            self.assert_(one2one_ids == [one2one1_id])
+
+            one2one_ids = self.one2one.search([
+                ('one2one.name', '!=', 'target1'),
+                ])
+            self.assert_(one2one_ids == [])
+
+            one2one = self.one2one.browse(one2one1_id)
+            self.assert_(one2one.one2one.name == 'target1')
+
+            one2one2_id = self.one2one.create({
+                'name': 'origin2',
+                })
+            self.assert_(one2one2_id)
+
+            one2one2 = self.one2one.read(one2one2_id, ['one2one'])
+            self.assert_(one2one2['one2one'] == False)
+
+            one2one_ids = self.one2one.search([
+                ('one2one', '=', False),
+                ])
+            self.assert_(one2one_ids == [one2one2_id])
+
+            target2_id = self.one2one_target.create({
+                'name': 'target2',
+                })
+            self.one2one.write(one2one2_id, {
+                'one2one': target2_id,
+                })
+            target2_id = self.one2one_target.search([
+                ('name', '=', 'target2'),
+                ])[0]
+            one2one2 = self.one2one.read(one2one2_id, ['one2one'])
+            self.assert_(one2one2['one2one'] == target2_id)
+
+            self.one2one.write(one2one2_id, {
+                'one2one': False,
+                })
+            one2one2 = self.one2one.read(one2one2_id, ['one2one'])
+            self.assert_(one2one2['one2one'] == False)
+
+            one2one2 = self.one2one.browse(one2one2_id)
+            self.assert_(not one2one2.one2one)
+
+            self.failUnlessRaises(Exception, self.one2one.create, {
+                'name': 'one2one3',
+                'one2one': target1_id,
+                })
+            transaction.cursor.rollback()
+
+            self.failUnlessRaises(Exception, self.one2one.write, one2one2_id, {
+                'one2one': target1_id,
+                })
+            transaction.cursor.rollback()
+
+            self.failUnlessRaises(Exception, self.one2one_required.create, {
+                'name': 'one2one3',
+                })
+            transaction.cursor.rollback()
+
+            target3_id = self.one2one_target.create({
+                'name': 'target3_id',
+                })
+
+            one2one3_id = self.one2one_required.create({
+                'name': 'one2one3',
+                'one2one': target3_id,
+                })
+            self.assert_(one2one3_id)
+
+            transaction.cursor.rollback()
+
 def suite():
     return unittest.TestLoader().loadTestsFromTestCase(FieldsTestCase)
 
diff --git a/trytond/tests/test_modelsingleton.py b/trytond/tests/test_modelsingleton.py
index 079b5fe..b94a8f1 100644
--- a/trytond/tests/test_modelsingleton.py
+++ b/trytond/tests/test_modelsingleton.py
@@ -28,7 +28,7 @@ class ModelSingletonTestCase(unittest.TestCase):
             self.assert_(singleton['name'] == 'test')
             self.assert_(singleton['id'] == 1)
 
-            singleton = self.singleton.read([1], ['name'])[0]
+            singleton, = self.singleton.read([1], ['name'])
             self.assert_(singleton['name'] == 'test')
             self.assert_(singleton['id'] == 1)
 
diff --git a/trytond/tests/test_tools.py b/trytond/tests/test_tools.py
index c6bb78c..60005ef 100644
--- a/trytond/tests/test_tools.py
+++ b/trytond/tests/test_tools.py
@@ -118,8 +118,6 @@ class ToolsTestCase(unittest.TestCase):
                 ['OR', clause, ['AND', clause, ['OR', clause, clause]]]),
             (['OR', [clause]], ['OR', ['AND', clause]]),
             ([], []),
-            (['OR', clause, []], ['OR', clause, []]),
-            (['AND', clause, []], ['AND', clause, []]),
         )
         for i, j in tests:
             self.assertEqual(reduce_domain(i), j,
diff --git a/trytond/tests/test_trigger.py b/trytond/tests/test_trigger.py
index f233840..c283452 100644
--- a/trytond/tests/test_trigger.py
+++ b/trytond/tests/test_trigger.py
@@ -6,6 +6,7 @@ from __future__ import with_statement
 import unittest
 import sys
 import time
+from xmlrpclib import MAXINT
 try:
     from itertools import combinations
 except ImportError:
@@ -225,7 +226,7 @@ class TriggerTestCase(unittest.TestCase):
             # With minimum delay
             self.trigger.write(trigger_id, {
                 'limit_number': 0,
-                'minimum_delay': sys.maxint,
+                'minimum_delay': MAXINT,
                 })
             triggered_id = self.triggered.create({
                 'name': 'Foo',
@@ -410,7 +411,7 @@ class TriggerTestCase(unittest.TestCase):
             # With minimum delay
             self.trigger.write(trigger_id, {
                 'limit_number': 0,
-                'minimum_delay': sys.maxint,
+                'minimum_delay': MAXINT,
                 })
             self.trigger.trigger_time()
             self.trigger.trigger_time()
diff --git a/trytond/tests/test_tryton.py b/trytond/tests/test_tryton.py
index ea334b4..ad9f1df 100644
--- a/trytond/tests/test_tryton.py
+++ b/trytond/tests/test_tryton.py
@@ -11,7 +11,15 @@ DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
 if os.path.isdir(DIR):
     sys.path.insert(0, os.path.dirname(DIR))
 
+if sys.version_info[:2] <= (2, 5):
+    # ugly monkeypatch to make doctests work. For the reasons see
+    # http://mail.python.org/pipermail/python-dev/2008-July/081420.html
+    # It can go away once we drop Python 2.5
+    import decimal
+    decimal.Decimal.__repr__ = lambda s: "Decimal('%s')" % str(s)
+
 import unittest
+import doctest
 from lxml import etree
 import time
 import imp
@@ -134,6 +142,7 @@ def test_view(module_name):
         view_obj = POOL.get('ir.ui.view')
         view_ids = view_obj.search([
             ('module', '=', module_name),
+            ('model', '!=', ''),
             ])
         assert view_ids, "No views for %s" % module_name
         for view in view_obj.browse(view_ids):
@@ -186,6 +195,8 @@ def all_suite():
     suite_.addTests(test_protocols_datatype.suite())
     import trytond.tests.test_sequence as test_sequence
     suite_.addTests(test_sequence.suite())
+    import trytond.tests.test_access as test_access
+    suite_.addTests(test_access.suite())
     return suite_
 
 def modules_suite():
@@ -215,19 +226,27 @@ def modules_suite():
         else:
             continue
         for test in test_mod.suite():
-            if hasattr(test, '__eq__'):
-                if test not in suite_:
-                    suite_.addTest(test)
-            else:
-                found = False
-                for other in suite_:
-                    if type(test) == type(other) and \
-                            test._testMethodName == other._testMethodName:
+            found = False
+            for other in suite_:
+                if type(test) == type(other):
+                    if isinstance(test, doctest.DocTestCase):
+                        if str(test) == str(other):
+                            found = True
+                            break
+                    elif test._testMethodName == other._testMethodName:
                         found = True
                         break
-                if not found:
-                    suite_.addTest(test)
-    return suite_
+            if not found:
+                suite_.addTest(test)
+    tests = []
+    doc_tests = []
+    for test in suite_:
+        if isinstance(test, doctest.DocTestCase):
+            doc_tests.append(test)
+        else:
+            tests.append(test)
+    tests.extend(doc_tests)
+    return unittest.TestSuite(tests)
 
 if __name__ == '__main__':
     if not _MODULES:
diff --git a/trytond/tools/misc.py b/trytond/tools/misc.py
index 1868334..95092ba 100644
--- a/trytond/tools/misc.py
+++ b/trytond/tools/misc.py
@@ -119,8 +119,6 @@ def file_open(name, mode="r", subdir='modules'):
     name2 = False
     while True:
         head, tail = os.path.split(head)
-        if head == root_path:
-            break
         if not tail:
             break
         if zipname:
@@ -469,6 +467,4 @@ def reduce_domain(domain):
                 result.extend(sub_domain[1:])
             else:
                 result.append(sub_domain)
-        else:
-            result.append(arg)
     return result
diff --git a/trytond/version.py b/trytond/version.py
index 6867bf1..6844287 100644
--- a/trytond/version.py
+++ b/trytond/version.py
@@ -1,7 +1,7 @@
 #This file is part of Tryton.  The COPYRIGHT file at the top level of
 #this repository contains the full copyright notices and license terms.
 PACKAGE = "trytond"
-VERSION = "1.8.4"
+VERSION = "2.0.0"
 LICENSE = "GPL-3"
 WEBSITE = "http://www.tryton.org/"
 
diff --git a/trytond/webdav/__tryton__.py b/trytond/webdav/__tryton__.py
index a7b99b6..bef9645 100644
--- a/trytond/webdav/__tryton__.py
+++ b/trytond/webdav/__tryton__.py
@@ -2,30 +2,41 @@
 #this repository contains the full copyright notices and license terms.
 {
     'name': 'WebDAV',
+    'name_bg_BG': 'WebDAV',
     'name_de_DE': 'WebDAV',
     'name_es_ES': 'WebDAV',
     'name_fr_FR': 'WebDAV',
+    'name_nl_NL': 'WebDAV',
     'name_ru_RU': 'WebDAV',
     'description': '''Basic module providing concept and administration of integrated WebDAV features.
 ''',
+    'description_bg_BG': '''Общ модул предоставящ представа и администрация на интегрирани WebDAV услуги.
+''',
     'description_de_DE': '''Basismodul für Konzept und Administration der integrierten WebDAV-Komponente
 ''',
     'description_es_ES': '''Módulo basico que provee el concepto y la administración de servicios WebDAV integrados.
 ''',
     'description_fr_FR': '''Module de base fournissant les concepts et l'administration des fonctionnalités integrées de WebDAV.
 ''',
+    'description_nl_NL': '''Basismodule voor het instellen en beheren van de geïntegreerde WebDAV functionaliteit
+''',
     'description_ru_RU': '''Базовый модуль обеспечения и управления встроенными функциями WebDAV.
 ''',
     'active': True,
-    'depends': ['ir'],
+    'depends': [
+        'ir',
+        'res',
+    ],
     'xml': [
         'webdav.xml',
     ],
     'translation': [
+        'bg_BG.csv',
         'fr_FR.csv',
         'de_DE.csv',
         'es_ES.csv',
         'es_CO.csv',
+        'nl_NL.csv',
         'ru_RU.csv',
     ],
 }
diff --git a/trytond/webdav/bg_BG.csv b/trytond/webdav/bg_BG.csv
new file mode 100644
index 0000000..f0ac505
--- /dev/null
+++ b/trytond/webdav/bg_BG.csv
@@ -0,0 +1,28 @@
+type,name,res_id,src,value,fuzzy
+error,ir.attachment,0,"You can not create an attachment
+in a collection with the name
+of an existing child collection!","Не може да създадете 
+прикачен файл в колекция
+с име като на съществуваща
+подчинена колекция!",0
+error,webdav.collection,0,The collection name must be unique inside a collection!,Името на колекцията трябва да уникално вътре в колекцията!,0
+error,webdav.collection,0,"You can not create a collection
+in a collection with the name of an existing file!","Не може да създадете колекция
+в колекция с име на съществуващ файл!",0
+error,webdav.collection,0,You can not create recursive collections!,Не може да създавате взаимно вложени колекции!,0
+field,"webdav.collection,childs",0,Children,Деца,0
+field,"webdav.collection,domain",0,Domain,Домейн,0
+field,"webdav.collection,model",0,Model,Модел,0
+field,"webdav.collection,name",0,Name,Име,0
+field,"webdav.collection,parent",0,Parent,Родител,0
+field,"webdav.collection,rec_name",0,Name,Име,0
+model,"ir.action,name",,Collections,Колекции,0
+model,"ir.action,name",act_collection_form,Collections,Колекции,0
+model,"ir.action,name",act_collection_tree,Collections,Колекции,0
+model,"ir.ui.menu,name",,New Collection,Нова колекция,0
+model,"ir.ui.menu,name",menu_collection_form,New Collection,Редактиране на колекции,0
+model,"ir.ui.menu,name",menu_collection_tree,Collections,Колекции,0
+model,"ir.ui.menu,name",menu_webdav,WebDAV,WebDAV,0
+model,"webdav.collection,name",0,Collection,Колекция,0
+view,webdav.collection,0,Collection,Колекция,0
+view,webdav.collection,0,Collections,Колекции,0
diff --git a/trytond/webdav/de_DE.csv b/trytond/webdav/de_DE.csv
index 4eea8e1..9f84d1f 100644
--- a/trytond/webdav/de_DE.csv
+++ b/trytond/webdav/de_DE.csv
@@ -67,10 +67,8 @@ field,"workflow.workitem,rec_name",0,Name,Name,0
 field,"workflow.workitem,state",0,State,Status,0
 field,"workflow.workitem,subflow",0,Subflow,Unterflow,0
 model,"ir.action,name",act_collection_form,Collections,Sammlungen,0
-model,"ir.action,name",act_collection_form2,Collections,Sammlungen,0
 model,"ir.action,name",act_collection_tree,Collections,Sammlungen,0
-model,"ir.ui.menu,name",menu_collection_form,Edit Collections,Sammlungen bearbeiten,0
-model,"ir.ui.menu,name",menu_collection_form2,New Collection,Neue Sammlung,0
+model,"ir.ui.menu,name",menu_collection_form,New Collection,Neue Sammlung,0
 model,"ir.ui.menu,name",menu_collection_tree,Collections,Sammlungen,0
 model,"ir.ui.menu,name",menu_webdav,WebDAV,WebDAV,0
 model,"webdav.collection,name",0,Collection,Sammlung,0
diff --git a/trytond/webdav/fr_FR.csv b/trytond/webdav/fr_FR.csv
index cbf48ab..b0b52c0 100644
--- a/trytond/webdav/fr_FR.csv
+++ b/trytond/webdav/fr_FR.csv
@@ -15,12 +15,10 @@ field,"webdav.collection,model",0,Model,Modèle,0
 field,"webdav.collection,name",0,Name,Nom,0
 field,"webdav.collection,parent",0,Parent,Parent,0
 field,"webdav.collection,rec_name",0,Name,Nom,0
-model,"ir.action,name",act_collection_tree,Collections,Collections,0
 model,"ir.action,name",act_collection_form,Collections,Collections,0
-model,"ir.action,name",act_collection_form2,Collections,Collections,0
+model,"ir.action,name",act_collection_tree,Collections,Collections,0
+model,"ir.ui.menu,name",menu_collection_form,New Collection,Nouvelle collection,0
 model,"ir.ui.menu,name",menu_collection_tree,Collections,Collections,0
-model,"ir.ui.menu,name",menu_collection_form,Edit Collections,Editer les collections,0
-model,"ir.ui.menu,name",menu_collection_form2,New Collection,Nouvelle collection,0
 model,"ir.ui.menu,name",menu_webdav,WebDAV,WebDAV,0
 model,"webdav.collection,name",0,Collection,Collection,0
 view,webdav.collection,0,Collection,Collection,0
diff --git a/trytond/webdav/nl_NL.csv b/trytond/webdav/nl_NL.csv
new file mode 100644
index 0000000..7055fd9
--- /dev/null
+++ b/trytond/webdav/nl_NL.csv
@@ -0,0 +1,27 @@
+type,name,res_id,src,value,fuzzy
+error,ir.attachment,0,"You can not create an attachment
+in a collection with the name
+of an existing child collection!","U kunt geen bijlage toevoegen
+met een naam gelijk aan een naam
+van een deelverzameling!",0
+error,webdav.collection,0,The collection name must be unique inside a collection!,De naam van de verzameling moet uniek zijn binnen de verzameling!,0
+error,webdav.collection,0,"You can not create a collection
+in a collection with the name of an existing file!","U kunt geen deelverzameling aanmaken met 
+dezelfde naam als die van een bestaand bestand!",0
+error,webdav.collection,0,You can not create recursive collections!,U kunt geen verzamelingen maken die naar zichzelf verwijzen!,0
+field,"webdav.collection,childs",0,Children,Onderliggende niveaus,0
+field,"webdav.collection,domain",0,Domain,Domein,0
+field,"webdav.collection,model",0,Model,Model,0
+field,"webdav.collection,name",0,Name,Naam,0
+field,"webdav.collection,parent",0,Parent,Bovenliggend niveau,0
+field,"webdav.collection,rec_name",0,Name,Naam,0
+model,"ir.action,name",act_collection_form,Collections,Verzamelingen,0
+model,"ir.action,name",act_collection_form2,Collections,Verzamelingen,0
+model,"ir.action,name",act_collection_tree,Collections,Verzamelingen,0
+model,"ir.ui.menu,name",menu_collection_form,Edit Collections,Verzamelingen muteren,0
+model,"ir.ui.menu,name",menu_collection_form2,New Collection,Nieuwe verzameling,0
+model,"ir.ui.menu,name",menu_collection_tree,Collections,Verzamelingen,0
+model,"ir.ui.menu,name",menu_webdav,WebDAV,WebDAV,0
+model,"webdav.collection,name",0,Collection,Verzameling,0
+view,webdav.collection,0,Collection,Verzameling,0
+view,webdav.collection,0,Collections,Verzamelingen,0
diff --git a/trytond/webdav/webdav.py b/trytond/webdav/webdav.py
index 44ea623..3ab5d75 100644
--- a/trytond/webdav/webdav.py
+++ b/trytond/webdav/webdav.py
@@ -337,8 +337,8 @@ class Collection(ModelSQL, ModelView):
             for attachment in attachments:
                 size = '0'
                 try:
-                    if attachment.datas_size:
-                        size = str(attachment.datas_size)
+                    if attachment.data_size:
+                        size = str(attachment.data_size)
                 except Exception:
                     pass
                 if attachment.id == object_id:
@@ -455,8 +455,8 @@ class Collection(ModelSQL, ModelView):
                 for attachment in attachments:
                     data = DAV_NotFound
                     try:
-                        if attachment.datas is not False:
-                            data = base64.decodestring(attachment.datas)
+                        if attachment.data is not False:
+                            data = base64.decodestring(attachment.data)
                     except Exception:
                         pass
                     if attachment.id == object_id:
@@ -496,7 +496,7 @@ class Collection(ModelSQL, ModelView):
             try:
                 attachment_obj.create({
                     'name': name,
-                    'datas': base64.encodestring(data or ''),
+                    'data': base64.encodestring(data or ''),
                     'name': name,
                     'resource': '%s,%s' % (object_name, object_id),
                     })
@@ -505,7 +505,7 @@ class Collection(ModelSQL, ModelView):
         else:
             try:
                 attachment_obj.write(object_id2, {
-                    'datas': base64.encodestring(data or ''),
+                    'data': base64.encodestring(data or ''),
                     })
             except Exception:
                 raise DAV_Forbidden
diff --git a/trytond/webdav/webdav.xml b/trytond/webdav/webdav.xml
index 835dd42..7706a2a 100644
--- a/trytond/webdav/webdav.xml
+++ b/trytond/webdav/webdav.xml
@@ -3,7 +3,7 @@
 this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
-        <menuitem name="WebDAV" id="menu_webdav"
+        <menuitem name="WebDAV" id="menu_webdav" groups="res.group_admin"
             parent="ir.menu_administration"/>
         <record model="ir.ui.view" id="collection_view_tree">
             <field name="model">webdav.collection</field>
@@ -14,6 +14,8 @@ this repository contains the full copyright notices and license terms. -->
                     <tree string="Collections">
                         <field name="name"/>
                         <field name="model"/>
+                        <field name="parent" tree_invisible="1"/>
+                        <field name="childs" tree_invisible="1"/>
                     </tree>
                 ]]>
             </field>
@@ -32,6 +34,7 @@ this repository contains the full copyright notices and license terms. -->
                         <field name="model"/>
                         <label name="domain"/>
                         <field name="domain"/>
+                        <field name="childs" colspan="4"/>
                     </form>
                 ]]>
             </field>
@@ -40,54 +43,41 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Collections</field>
             <field name="type">ir.action.act_window</field>
             <field name="res_model">webdav.collection</field>
-            <field name="view_type">tree</field>
             <field name="domain">[('parent', '=', False)]</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_collection_tree_view1">
-            <field name="sequence" eval="1"/>
-            <field name="view" ref="collection_view_tree"/>
-            <field name="act_window" ref="act_collection_tree"/>
-        </record>
-        <menuitem parent="menu_webdav"
-            action="act_collection_tree" id="menu_collection_tree"/>
-        <record model="ir.action.act_window" id="act_collection_form">
-            <field name="name">Collections</field>
-            <field name="res_model">webdav.collection</field>
-            <field name="view_type">form</field>
-        </record>
-        <record model="ir.action.act_window.view"
-            id="act_collection_form_view1">
             <field name="sequence" eval="10"/>
             <field name="view" ref="collection_view_tree"/>
-            <field name="act_window" ref="act_collection_form"/>
+            <field name="act_window" ref="act_collection_tree"/>
         </record>
         <record model="ir.action.act_window.view"
-            id="act_collection_form_view2">
+            id="act_collection_tree_view2">
             <field name="sequence" eval="20"/>
             <field name="view" ref="collection_view_form"/>
-            <field name="act_window" ref="act_collection_form"/>
+            <field name="act_window" ref="act_collection_tree"/>
         </record>
-        <menuitem name="Edit Collections" parent="menu_collection_tree"
-            action="act_collection_form" id="menu_collection_form"/>
-        <record model="ir.action.act_window" id="act_collection_form2">
+        <menuitem parent="menu_webdav" groups="res.group_admin"
+            action="act_collection_tree" id="menu_collection_tree"/>
+
+        <record model="ir.action.act_window" id="act_collection_form">
             <field name="name">Collections</field>
             <field name="res_model">webdav.collection</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
-            id="act_collection_form2_view1">
+            id="act_collection_form_view1">
             <field name="sequence" eval="10"/>
             <field name="view" ref="collection_view_form"/>
-            <field name="act_window" ref="act_collection_form2"/>
+            <field name="act_window" ref="act_collection_form"/>
         </record>
         <record model="ir.action.act_window.view"
-            id="act_collection_form2_view2">
+            id="act_collection_form_view2">
             <field name="sequence" eval="20"/>
             <field name="view" ref="collection_view_tree"/>
-            <field name="act_window" ref="act_collection_form2"/>
+            <field name="act_window" ref="act_collection_form"/>
         </record>
         <menuitem name="New Collection" parent="menu_collection_tree"
-            action="act_collection_form2" id="menu_collection_form2"/>
+            action="act_collection_form" id="menu_collection_form"
+            groups="res.group_admin"/>
     </data>
 </tryton>
diff --git a/trytond/wizard/wizard.py b/trytond/wizard/wizard.py
index 92956ed..65ecec4 100644
--- a/trytond/wizard/wizard.py
+++ b/trytond/wizard/wizard.py
@@ -6,9 +6,10 @@ from random import randint
 from xmlrpclib import MAXINT
 from trytond.pool import Pool
 from trytond.transaction import Transaction
+from trytond.error import WarningErrorMixin
 
 
-class Wizard(object):
+class Wizard(WarningErrorMixin):
     _name = ""
     states = {}
     pool = None
@@ -28,6 +29,7 @@ class Wizard(object):
         self._datas = {}
 
     def init(self, module_name):
+        translation_obj = self.pool.get('ir.translation')
         cursor = Transaction().cursor
         for state in self.states.keys():
             if self.states[state]['result']['type'] == 'form':
@@ -44,19 +46,20 @@ class Wizard(object):
                             (module_name, 'en_US', 'wizard_button',
                                 self._name + ',' + state + ',' + button_name))
                     res = cursor.dictfetchall()
+                    value_md5 = translation_obj.get_src_md5(button_value)
                     if not res:
-                        cursor.execute('INSERT INTO ir_translation ' \
-                                '(name, lang, type, src, value, module, fuzzy)'\
-                                ' VALUES (%s, %s, %s, %s, %s, %s, %s)',
-                                (self._name + ',' + state + ',' + button_name,
-                                    'en_US', 'wizard_button', button_value,
-                                    '', module_name, False))
+                        cursor.execute('INSERT INTO ir_translation '
+                            '(name, lang, type, src, src_md5, value, module, '
+                                'fuzzy) '
+                            'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)',
+                            (self._name + ',' + state + ',' + button_name,
+                                'en_US', 'wizard_button', button_value,
+                                value_md5, '', module_name, False))
                     elif res[0]['src'] != button_value:
-                        cursor.execute('UPDATE ir_translation ' \
-                                'SET src = %s, ' \
-                                    'fuzzy = %s '
-                                'WHERE id = %s', (button_value, True,
-                                    res[0]['id']))
+                        cursor.execute('UPDATE ir_translation '
+                            'SET src = %s, src_md5 = %s '
+                            'WHERE id = %s',
+                            (button_value, value_md5, res[0]['id']))
 
         cursor.execute('SELECT id, src FROM ir_translation ' \
                 'WHERE lang = %s ' \
@@ -69,40 +72,12 @@ class Wizard(object):
 
         for error in self._error_messages.values():
             if error not in trans_error:
-                cursor.execute('INSERT INTO ir_translation ' \
-                        '(name, lang, type, src, value, module, fuzzy) ' \
-                        'VALUES (%s, %s, %s, %s, %s, %s, %s)',
-                        (self._name, 'en_US', 'error', error, '', module_name,
-                            False))
-
-    def raise_user_error(self, error, error_args=None, error_description='',
-            error_description_args=None):
-        translation_obj = self.pool.get('ir.translation')
-
-        error = self._error_messages.get(error, error)
-
-        res = translation_obj._get_source(self._name, 'error',
-                Transaction().language, error)
-        if res:
-            error = res
-
-        if error_args:
-            error = error % error_args
-
-        if error_description:
-            error_description = self._error_messages.get(error_description,
-                    error_description)
-
-            res = translation_obj._get_source(self._name, 'error',
-                    Transaction().language, error_description)
-            if res:
-                error_description = res
-
-            if error_description_args:
-                error_description = error_description % error_description_args
-
-            raise Exception('UserError', error, error_description)
-        raise Exception('UserError', error)
+                error_md5 = translation_obj.get_src_md5(error)
+                cursor.execute('INSERT INTO ir_translation '
+                    '(name, lang, type, src, src_md5,  value, module, fuzzy) '
+                    'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)',
+                    (self._name, 'en_US', 'error', error, error_md5, '',
+                        module_name, False))
 
     def create(self):
         self._lock.acquire()
diff --git a/trytond/workflow/__tryton__.py b/trytond/workflow/__tryton__.py
index fb37597..b0bd94f 100644
--- a/trytond/workflow/__tryton__.py
+++ b/trytond/workflow/__tryton__.py
@@ -2,18 +2,24 @@
 #this repository contains the full copyright notices and license terms.
 {
     'name': 'Workflow',
+    'name_bg_BG': 'Работен процес',
     'name_de_DE': 'Workflow',
     'name_es_ES': 'Flujo de trabajo',
     'name_fr_FR': 'Workflow',
+    'name_nl_NL': 'Werkgang',
     'name_ru_RU': 'Бизнес процессы',
     'description': '''Basic module providing concept and administration of workflows.
 ''',
+    'description_bg_BG': '''Основен модул даващ идея и администрация на работни процеси.
+''',
     'description_de_DE': '''Basismodul für Konzept und Administration von Workflows
 ''',
     'description_es_ES': '''Módulo básico que provee el concepto y administración de flujos de trabajo.
 ''',
     'description_fr_FR': '''Module de base fournissant les concepts et l'administration de workflows.
 ''',
+    'description_nl_NL': '''Basismodule voor het instellen en beheren van werkgangen.
+''',
     'description_ru_RU': '''Базовый модуль концепция обеспечения и администрирования рабочих процессов.
 ''',
     'active': True,
@@ -22,10 +28,12 @@
         'workflow.xml',
         ],
     'translation': [
-        'fr_FR.csv',
+        'bg_BG.csv',
         'de_DE.csv',
-        'es_ES.csv',
         'es_CO.csv',
+        'es_ES.csv',
+        'fr_FR.csv',
+        'nl_NL.csv',
         'ru_RU.csv',
     ],
 }
diff --git a/trytond/workflow/bg_BG.csv b/trytond/workflow/bg_BG.csv
new file mode 100644
index 0000000..f6c334f
--- /dev/null
+++ b/trytond/workflow/bg_BG.csv
@@ -0,0 +1,89 @@
+type,name,res_id,src,value,fuzzy
+error,workflow,0,No workflow defined!,Не е зададен работен процес!,0
+error,workflow.instance,0,No workflow instance defined!,Не е зададен екземпляр на работен процес!,0
+field,"workflow,activities",0,Activities,Дейности,0
+field,"workflow,model",0,Resource Model,Модел на ресурс,0
+field,"workflow,name",0,Name,Име,0
+field,"workflow,on_create",0,On Create,При създаване,0
+field,"workflow,rec_name",0,Name,Име,0
+field,"workflow.activity,action",0,Action,Действие,0
+field,"workflow.activity,flow_start",0,Flow Start,Стартиране на процес,0
+field,"workflow.activity,flow_stop",0,Flow Stop,Спиране на процес,0
+field,"workflow.activity,in_transitions",0,Incoming transitions,Входящи преходи,0
+field,"workflow.activity,join_mode",0,Join Mode,Режим на свързаване,0
+field,"workflow.activity,kind",0,Kind,Вид,0
+field,"workflow.activity,name",0,Name,Име,0
+field,"workflow.activity,out_transitions",0,Outgoing transitions,Изходящи преходи,0
+field,"workflow.activity,rec_name",0,Name,Име,0
+field,"workflow.activity,signal_send",0,Signal (subflow.*),Сигнал (subflow.*),0
+field,"workflow.activity,split_mode",0,Split Mode,Режим на разделяне,0
+field,"workflow.activity,subflow",0,Subflow,Подпоток,0
+field,"workflow.activity,workflow",0,Workflow,Работен процес,0
+field,"workflow.instance,overflows",0,Overflow,Препълване,0
+field,"workflow.instance,rec_name",0,Name,Име,0
+field,"workflow.instance,res_id",0,Resource ID,ID на ресурс,0
+field,"workflow.instance,res_type",0,Resource Model,Модел на ресурс,0
+field,"workflow.instance,state",0,State,Състояние,0
+field,"workflow.instance,transitions",0,Transitions,Преходи,0
+field,"workflow.instance,uid",0,User ID,Потребителско ID,0
+field,"workflow.instance,workflow",0,Workflow,Работен процес,0
+field,"workflow.instance,workitems",0,Workitems,Задачи,0
+field,"workflow.transition,act_from",0,Source Activity,Източник на действие,0
+field,"workflow.transition,act_to",0,Destination Activity,Активност на местонахождение-цел,0
+field,"workflow.transition,condition",0,Condition,Условие,0
+field,"workflow.transition,group",0,Group Required,Групата е задължителна,0
+field,"workflow.transition,instances",0,Instances,Екземпляри,0
+field,"workflow.transition,rec_name",0,Name,Име,0
+field,"workflow.transition,signal",0,Signal (button Name),Сигнал (име на бутон),0
+field,"workflow.transition,trigger_expr_id",0,Trigger Expr ID,ID на израз на задействащ механизъм,0
+field,"workflow.transition,trigger_model",0,Trigger Type,Вид превключвател,0
+field,"workflow.transition-workflow.instance,inst_id",0,Instance,Екземпляр,0
+field,"workflow.transition-workflow.instance,rec_name",0,Name,Име,0
+field,"workflow.transition-workflow.instance,trans_id",0,Transition,Преход,0
+field,"workflow.trigger,instance",0,Destination Instance,Ексемплят на местонахождение-цел,0
+field,"workflow.trigger,model",0,Model,Модел,0
+field,"workflow.trigger,rec_name",0,Name,Име,0
+field,"workflow.trigger,res_id",0,Resource ID,ID на ресурс,0
+field,"workflow.trigger,workitem",0,Workitem,Задача,0
+field,"workflow.workitem,activity",0,Activity,Дейност,0
+field,"workflow.workitem,instance",0,Instance,Екземпляр,0
+field,"workflow.workitem,rec_name",0,Name,Име,0
+field,"workflow.workitem,state",0,State,Състояние,0
+field,"workflow.workitem,subflow",0,Subflow,Подпоток,0
+model,"ir.action,name",act_activity_form,Activities,Дейности,0
+model,"ir.action,name",act_instance_form,Instances,Екземпляри,0
+model,"ir.action,name",act_transition_form,Transitions,Преходи,0
+model,"ir.action,name",act_workflow_form,Workflows,Работни процеси,0
+model,"ir.action,name",act_workitem_form,Workitems,Задачи,0
+model,"ir.ui.menu,name",menu_activity_form,Activities,Дейности,0
+model,"ir.ui.menu,name",menu_instance_form,Instances,Екземпляри,0
+model,"ir.ui.menu,name",menu_transition_form,Transitions,Преходи,0
+model,"ir.ui.menu,name",menu_workflow,Workflow,Работен процес,0
+model,"ir.ui.menu,name",menu_workflow_form,Workflows,Работни процеси,0
+model,"ir.ui.menu,name",menu_workitem_form,Workitems,Задачи,0
+model,"workflow,name",0,Workflow,Работен процес,0
+model,"workflow.activity,name",0,Workflow activity,Дейности,0
+model,"workflow.instance,name",0,Workflow instance,Екземплят на работен процес,0
+model,"workflow.transition,name",0,Workflow transition,Преход на работен процес,0
+model,"workflow.transition-workflow.instance,name",0,Workflow Transition - Instance,Преход на работен процес - екземпляр,0
+model,"workflow.trigger,name",0,Workflow trigger,Задействане на работен процес,0
+model,"workflow.workitem,name",0,Workflow workitem,Задачи от работен процес,0
+selection,"workflow.activity,join_mode",0,And,и,0
+selection,"workflow.activity,join_mode",0,Xor,Xor,0
+selection,"workflow.activity,kind",0,Dummy,Фиктивен,0
+selection,"workflow.activity,kind",0,Function,Функция,0
+selection,"workflow.activity,kind",0,Stop All,Спиране на всички,0
+selection,"workflow.activity,kind",0,Subflow,Подпоток,0
+selection,"workflow.activity,split_mode",0,And,и,0
+selection,"workflow.activity,split_mode",0,Or,Или,0
+selection,"workflow.activity,split_mode",0,Xor,Xor,0
+view,workflow,0,Workflow,Работен процес,0
+view,workflow.activity,0,Activity,Дейност,0
+view,workflow.activity,0,Transition,Преход,0
+view,workflow.activity,0,Transitions,Преходи,0
+view,workflow.instance,0,Instance,Екземпляр,0
+view,workflow.instance,0,Instances,Екземпляри,0
+view,workflow.transition,0,Transition,Преход,0
+view,workflow.transition,0,Transitions,Преходи,0
+view,workflow.workitem,0,Workitem,Задача,0
+view,workflow.workitem,0,Workitems,Задачи,0
diff --git a/trytond/workflow/fr_FR.csv b/trytond/workflow/fr_FR.csv
index 7b44e3d..6e4dbea 100644
--- a/trytond/workflow/fr_FR.csv
+++ b/trytond/workflow/fr_FR.csv
@@ -2,6 +2,10 @@ type,name,res_id,src,value,fuzzy
 error,workflow,0,No workflow defined!,Aucun workflow de défini !,0
 error,workflow.instance,0,No workflow instance defined!,Aucune instance de workflow de définie !,0
 field,"workflow,activities",0,Activities,Activités,0
+field,"workflow,model",0,Resource Model,Modèle de la ressource,0
+field,"workflow,name",0,Name,Nom,0
+field,"workflow,on_create",0,On Create,À la création,0
+field,"workflow,rec_name",0,Name,Nom,0
 field,"workflow.activity,action",0,Action,Action,0
 field,"workflow.activity,flow_start",0,Flow Start,Départ du flux,0
 field,"workflow.activity,flow_stop",0,Flow Stop,Arrêt du flux,0
@@ -20,19 +24,15 @@ field,"workflow.instance,rec_name",0,Name,Nom,0
 field,"workflow.instance,res_id",0,Resource ID,Identifiant de la ressource,0
 field,"workflow.instance,res_type",0,Resource Model,Modèle de la ressource,0
 field,"workflow.instance,state",0,State,État,0
-field,"workflow.instance,transitions",0,,,0
+field,"workflow.instance,transitions",0,Transitions,Transitions,1
 field,"workflow.instance,uid",0,User ID,Identifiant de l'utilisateur,0
 field,"workflow.instance,workflow",0,Workflow,Workflow,0
 field,"workflow.instance,workitems",0,Workitems,Éléments,0
-field,"workflow,model",0,Resource Model,Modèle de la ressource,0
-field,"workflow,name",0,Name,Nom,0
-field,"workflow,on_create",0,On Create,À la création,0
-field,"workflow,rec_name",0,Name,Nom,0
 field,"workflow.transition,act_from",0,Source Activity,Source de l'activité,0
 field,"workflow.transition,act_to",0,Destination Activity,Destination de l'activité,0
 field,"workflow.transition,condition",0,Condition,Condition,0
 field,"workflow.transition,group",0,Group Required,Groupe requis,0
-field,"workflow.transition,instances",0,,,0
+field,"workflow.transition,instances",0,Instances,Instances,1
 field,"workflow.transition,rec_name",0,Name,Nom,0
 field,"workflow.transition,signal",0,Signal (button Name),Signal (nom du bouton),0
 field,"workflow.transition,trigger_expr_id",0,Trigger Expr ID,Identifiant de l'expression de déclenchement,0
@@ -61,9 +61,9 @@ model,"ir.ui.menu,name",menu_transition_form,Transitions,Transitions,0
 model,"ir.ui.menu,name",menu_workflow,Workflow,Workflow,0
 model,"ir.ui.menu,name",menu_workflow_form,Workflows,Workflows,0
 model,"ir.ui.menu,name",menu_workitem_form,Workitems,Éléments,0
+model,"workflow,name",0,Workflow,Workflow,0
 model,"workflow.activity,name",0,Workflow activity,Activité de workflow,0
 model,"workflow.instance,name",0,Workflow instance,Instance de workflow,0
-model,"workflow,name",0,Workflow,Workflow,0
 model,"workflow.transition,name",0,Workflow transition,Transition de workflow,0
 model,"workflow.transition-workflow.instance,name",0,Workflow Transition - Instance,Transition de workflow - Instance,0
 model,"workflow.trigger,name",0,Workflow trigger,Déclenchement de workflow,0
diff --git a/trytond/workflow/nl_NL.csv b/trytond/workflow/nl_NL.csv
new file mode 100644
index 0000000..b406d82
--- /dev/null
+++ b/trytond/workflow/nl_NL.csv
@@ -0,0 +1,89 @@
+type,name,res_id,src,value,fuzzy
+error,workflow,0,No workflow defined!,Geen werkgang gedefinieert!,0
+error,workflow.instance,0,No workflow instance defined!,Geen werkgang verzoek gedefinieert!,0
+field,"workflow,activities",0,Activities,Activiteiten,0
+field,"workflow,model",0,Resource Model,Middel model,0
+field,"workflow,name",0,Name,Naam,0
+field,"workflow,on_create",0,On Create,Bij maken,0
+field,"workflow,rec_name",0,Name,Naam,0
+field,"workflow.activity,action",0,Action,Actie,0
+field,"workflow.activity,flow_start",0,Flow Start,Werkgang start,0
+field,"workflow.activity,flow_stop",0,Flow Stop,Werkgang stop,0
+field,"workflow.activity,in_transitions",0,Incoming transitions,Inkomende overgangen,0
+field,"workflow.activity,join_mode",0,Join Mode,Verzoeken,0
+field,"workflow.activity,kind",0,Kind,Soort,0
+field,"workflow.activity,name",0,Name,Naam,0
+field,"workflow.activity,out_transitions",0,Outgoing transitions,Uitgaande overgangen,0
+field,"workflow.activity,rec_name",0,Name,Naam,0
+field,"workflow.activity,signal_send",0,Signal (subflow.*),Signaal (subwerkgang.*),0
+field,"workflow.activity,split_mode",0,Split Mode,Deel modus,0
+field,"workflow.activity,subflow",0,Subflow,Subwerkgang,0
+field,"workflow.activity,workflow",0,Workflow,Werkgang,0
+field,"workflow.instance,overflows",0,Overflow,Overloop,0
+field,"workflow.instance,rec_name",0,Name,Naam,0
+field,"workflow.instance,res_id",0,Resource ID,Middel ID,0
+field,"workflow.instance,res_type",0,Resource Model,Middel model,0
+field,"workflow.instance,state",0,State,Status,0
+field,"workflow.instance,transitions",0,Transitions,Overgangen,0
+field,"workflow.instance,uid",0,User ID,Gebruiker ID,0
+field,"workflow.instance,workflow",0,Workflow,Werkgang,0
+field,"workflow.instance,workitems",0,Workitems,Handelingen,0
+field,"workflow.transition,act_from",0,Source Activity,Bron activiteit,0
+field,"workflow.transition,act_to",0,Destination Activity,Bestemming activiteit,0
+field,"workflow.transition,condition",0,Condition,Voorwaarde,0
+field,"workflow.transition,group",0,Group Required,Benodigde groep,0
+field,"workflow.transition,instances",0,Instances,Verzoeken,0
+field,"workflow.transition,rec_name",0,Name,Naam,0
+field,"workflow.transition,signal",0,Signal (button Name),Signaal (knop naam),0
+field,"workflow.transition,trigger_expr_id",0,Trigger Expr ID,Starter uitdr ID,0
+field,"workflow.transition,trigger_model",0,Trigger Type,Starter type,0
+field,"workflow.transition-workflow.instance,inst_id",0,Instance,Verzoek,0
+field,"workflow.transition-workflow.instance,rec_name",0,Name,Naam,0
+field,"workflow.transition-workflow.instance,trans_id",0,Transition,Overgang,0
+field,"workflow.trigger,instance",0,Destination Instance,Bestemming verzoek,0
+field,"workflow.trigger,model",0,Model,Model,0
+field,"workflow.trigger,rec_name",0,Name,Naam,0
+field,"workflow.trigger,res_id",0,Resource ID,Middel ID,0
+field,"workflow.trigger,workitem",0,Workitem,Handeling,0
+field,"workflow.workitem,activity",0,Activity,Activiteit,0
+field,"workflow.workitem,instance",0,Instance,Verzoek,0
+field,"workflow.workitem,rec_name",0,Name,Naam,0
+field,"workflow.workitem,state",0,State,Status,0
+field,"workflow.workitem,subflow",0,Subflow,Subwerkgang,0
+model,"ir.action,name",act_activity_form,Activities,Activiteiten,0
+model,"ir.action,name",act_instance_form,Instances,Verzoeken,0
+model,"ir.action,name",act_transition_form,Transitions,Overgangen,0
+model,"ir.action,name",act_workflow_form,Workflows,Werkgangen,0
+model,"ir.action,name",act_workitem_form,Workitems,Handelingen,0
+model,"ir.ui.menu,name",menu_activity_form,Activities,Activiteiten,0
+model,"ir.ui.menu,name",menu_instance_form,Instances,Verzoeken,0
+model,"ir.ui.menu,name",menu_transition_form,Transitions,Overgangen,0
+model,"ir.ui.menu,name",menu_workflow,Workflow,Werkgang,0
+model,"ir.ui.menu,name",menu_workflow_form,Workflows,Werkgangen,0
+model,"ir.ui.menu,name",menu_workitem_form,Workitems,Handelingen,0
+model,"workflow,name",0,Workflow,Werkgang,0
+model,"workflow.activity,name",0,Workflow activity,Werkgang activiteit,0
+model,"workflow.instance,name",0,Workflow instance,Werkgang verzoek,0
+model,"workflow.transition,name",0,Workflow transition,Werkgang overgang,0
+model,"workflow.transition-workflow.instance,name",0,Workflow Transition - Instance,Werkgang overgan - Verzoek,0
+model,"workflow.trigger,name",0,Workflow trigger,Werkgang starter,0
+model,"workflow.workitem,name",0,Workflow workitem,Werkgang handeling,0
+selection,"workflow.activity,join_mode",0,And,En,0
+selection,"workflow.activity,join_mode",0,Xor,Exof,0
+selection,"workflow.activity,kind",0,Dummy,Loos,0
+selection,"workflow.activity,kind",0,Function,Functie,0
+selection,"workflow.activity,kind",0,Stop All,Alles stoppen,0
+selection,"workflow.activity,kind",0,Subflow,Subwerkgang,0
+selection,"workflow.activity,split_mode",0,And,En,0
+selection,"workflow.activity,split_mode",0,Or,Of,0
+selection,"workflow.activity,split_mode",0,Xor,Exof,0
+view,workflow,0,Workflow,Werkgang,0
+view,workflow.activity,0,Activity,Activiteit,0
+view,workflow.activity,0,Transition,Overgang,0
+view,workflow.activity,0,Transitions,Overgangen,0
+view,workflow.instance,0,Instance,Verzoek,0
+view,workflow.instance,0,Instances,Verzoeken,0
+view,workflow.transition,0,Transition,Overgang,0
+view,workflow.transition,0,Transitions,Overgangen,0
+view,workflow.workitem,0,Workitem,Handeling,0
+view,workflow.workitem,0,Workitems,Handelingen,0
diff --git a/trytond/workflow/workflow.xml b/trytond/workflow/workflow.xml
index a2bd730..1e09ef6 100644
--- a/trytond/workflow/workflow.xml
+++ b/trytond/workflow/workflow.xml
@@ -4,7 +4,7 @@ this repository contains the full copyright notices and license terms. -->
 <tryton>
     <data>
         <menuitem name="Workflow" id="menu_workflow"
-            parent="ir.menu_administration"/>
+            parent="ir.menu_administration" groups="res.group_admin"/>
         <record model="ir.ui.view" id="workflow_view_form">
             <field name="model">workflow</field>
             <field name="type">form</field>
@@ -38,7 +38,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_workflow_form">
             <field name="name">Workflows</field>
             <field name="res_model">workflow</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_workflow_form_view1">
@@ -52,7 +51,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="workflow_view_form"/>
             <field name="act_window" ref="act_workflow_form"/>
         </record>
-        <menuitem parent="menu_workflow"
+        <menuitem parent="menu_workflow" groups="res.group_admin"
             action="act_workflow_form" id="menu_workflow_form"/>
         <record model="ir.model.access" id="access_workflow">
             <field name="model" search="[('model', '=', 'workflow')]"/>
@@ -170,7 +169,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_activity_form">
             <field name="name">Activities</field>
             <field name="res_model">workflow.activity</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_activity_form_view1">
@@ -184,7 +182,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="activity_view_form"/>
             <field name="act_window" ref="act_activity_form"/>
         </record>
-        <menuitem parent="menu_workflow"
+        <menuitem parent="menu_workflow" groups="res.group_admin"
             action="act_activity_form" id="menu_activity_form"/>
         <record model="ir.model.access" id="access_workflow_activity">
             <field name="model" search="[('model', '=', 'workflow.activity')]"/>
@@ -245,7 +243,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_transition_form">
             <field name="name">Transitions</field>
             <field name="res_model">workflow.transition</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_transition_form_view1">
@@ -259,7 +256,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="transition_view_form"/>
             <field name="act_window" ref="act_transition_form"/>
         </record>
-        <menuitem parent="menu_workflow"
+        <menuitem parent="menu_workflow" groups="res.group_admin"
             action="act_transition_form" id="menu_transition_form"/>
         <record model="ir.model.access" id="access_workflow_transition">
             <field name="model" search="[('model', '=', 'workflow.transition')]"/>
@@ -314,7 +311,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_instance_form">
             <field name="name">Instances</field>
             <field name="res_model">workflow.instance</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_instance_form_view1">
@@ -328,7 +324,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="instance_view_form"/>
             <field name="act_window" ref="act_instance_form"/>
         </record>
-        <menuitem parent="menu_workflow"
+        <menuitem parent="menu_workflow" groups="res.group_admin"
             action="act_instance_form" id="menu_instance_form"/>
 
         <record model="ir.ui.view" id="workitem_view_form">
@@ -366,7 +362,6 @@ this repository contains the full copyright notices and license terms. -->
         <record model="ir.action.act_window" id="act_workitem_form">
             <field name="name">Workitems</field>
             <field name="res_model">workflow.workitem</field>
-            <field name="view_type">form</field>
         </record>
         <record model="ir.action.act_window.view"
             id="act_workitem_form_view1">
@@ -380,7 +375,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="view" ref="workitem_view_form"/>
             <field name="act_window" ref="act_workitem_form"/>
         </record>
-        <menuitem parent="menu_workflow"
+        <menuitem parent="menu_workflow" groups="res.group_admin"
             action="act_workitem_form" id="menu_workitem_form"/>
     </data>
 </tryton>
-- 
tryton-server



More information about the tryton-debian-vcs mailing list