[tryton-debian-vcs] tryton-server branch debian updated. debian/4.4.4-1-11-g4852dc4

Mathias Behrle tryton-debian-vcs at alioth.debian.org
Fri Nov 10 12:25:09 UTC 2017


The following commit has been merged in the debian branch:
https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi/?p=tryton/tryton-server.git;a=commitdiff;h=debian/4.4.4-1-11-g4852dc4

commit 4852dc4094491618eb8259c4e66c85fa3e91d585
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Nov 7 16:22:46 2017 +0100

    Releasing debian version 4.6.0-1.
    
    Signed-off-by: Mathias Behrle <mathiasb at m9s.biz>

diff --git a/debian/NEWS b/debian/NEWS
index d59f88e..222d205 100644
--- a/debian/NEWS
+++ b/debian/NEWS
@@ -16,7 +16,7 @@ tryton-server (4.6.0-1) unstable; urgency=medium
   $ sudo service tryton-server restart
   $ sudo service tryton-server-cron restart
 
- -- Mathias Behrle <mathiasb at m9s.biz>  Mon, 06 Nov 2017 15:31:18 +0100
+ -- Mathias Behrle <mathiasb at m9s.biz>  Tue, 07 Nov 2017 10:20:49 +0100
 
 tryton-server (4.4.1-1) unstable; urgency=medium
 
diff --git a/debian/changelog b/debian/changelog
index 3e76cd2..d449db6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,19 @@
+tryton-server (4.6.0-1) unstable; urgency=medium
+
+  * Bump the Standards-Version to 4.1.1, no changes needed.
+  * Merging upstream version 4.6.0.
+  * Refresh patches.
+  * Updating debian/manpages.
+  * Prepare the NEWS for 4.6.0.
+  * Remove superseded BD on dh_systemd.
+  * Add 02_avoid_call_to_pypi.patch.
+  * Add versioned dependency for relatorio to be safe with respect to BD
+    python-magic.
+  * Correcting a typo in a man page.
+  * Use https in the watch file.
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Tue, 07 Nov 2017 10:20:49 +0100
+
 tryton-server (4.4.4-1) unstable; urgency=medium
 
   * Bump the Standards-Version to 4.1.0, no changes needed.
commit 5aee2043a4cbf8c03f79bb50c4f6b2a4c7525e56
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Tue Nov 7 10:16:46 2017 +0100

    Use https in the watch file.

diff --git a/debian/watch b/debian/watch
index 79e77ca..e706f95 100644
--- a/debian/watch
+++ b/debian/watch
@@ -1,2 +1,2 @@
 version=3
-opts=pgpsigurlmangle=s/$/.asc/ http://downloads.tryton.org/current/ .*trytond-(\d.*)\.(?:tgz|tbz2|txz|tar\.(?:gz|bz2|xz))
+opts=pgpsigurlmangle=s/$/.asc/ https://downloads.tryton.org/current/ .*trytond-(\d.*)\.(?:tgz|tbz2|txz|tar\.(?:gz|bz2|xz))
commit c89ebd9dd8143b54e38524971f34ff87e6ad7abb
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Nov 6 18:27:15 2017 +0100

    Correcting a typo.

diff --git a/debian/manpages/trytond-admin.1 b/debian/manpages/trytond-admin.1
index fc483ff..a1f4bfb 100644
--- a/debian/manpages/trytond-admin.1
+++ b/debian/manpages/trytond-admin.1
@@ -1,6 +1,6 @@
 .TH TRYTOND-ADMIN 1 "2017\-11\-06" "4.6" "Tryton Application Platform"
 .SH NAME
-trytond-admin \- Tryton Application Platform (Database Adminstration)
+trytond-admin \- Tryton Application Platform (Database Administration)
 .SH SYNOPSIS
 \fBtrytond-admin\fR
 .SH DESCRIPTION
commit 2f9fdbfc3da73780a0c232d1a588ee00d7028aca
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Nov 6 18:24:56 2017 +0100

    Add versioned dependency for relatorio to be safe with respect to BD
    python-magic.

diff --git a/debian/control b/debian/control
index c771494..db5e10d 100644
--- a/debian/control
+++ b/debian/control
@@ -12,7 +12,7 @@ Build-Depends:
  python3-lxml,
  python3-mock,
  python3-polib,
- python3-relatorio,
+ python3-relatorio (>= 0.7),
  python3-setuptools,
  python3-sphinx,
  python3-sql,
@@ -33,7 +33,7 @@ Depends:
  python3-lxml,
  python3-pkg-resources,
  python3-polib,
- python3-relatorio,
+ python3-relatorio (>= 0.7),
  python3-sql,
  python3-werkzeug,
  python3-wrapt,
commit 826ab4852e699f8c35ebd0f9c76a32c4531c50d9
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Nov 6 18:23:22 2017 +0100

    Add 02_avoid_call_to_pypi.patch.

diff --git a/debian/patches/02_avoid_call_to_pypi.patch b/debian/patches/02_avoid_call_to_pypi.patch
new file mode 100644
index 0000000..1406f57
--- /dev/null
+++ b/debian/patches/02_avoid_call_to_pypi.patch
@@ -0,0 +1,25 @@
+Description: Avoid the call for python-magic to PyPi.
+ The Build-Dependency relatorio >=0.7 contains a code copy of
+ python-magic[pypi].
+ .
+ This patch is subject to be removed, once python-magic from pypi (or an
+ equivalent alternative) is available.
+ Relevant discussions:
+ https://lists.debian.org/debian-python/2017/09/msg00008.html
+ https://lists.debian.org/debian-python/2017/09/msg00015.html
+ https://lists.debian.org/debian-python/2017/10/msg00021.html
+Author: Mathias Behrle <mathiasb at m9s.biz>
+Bug-Debian: https://bugs.debian.org/877849
+Last-Update: 2017-11-06
+
+--- tryton-server-4.6.0.orig/setup.py
++++ tryton-server-4.6.0/setup.py
+@@ -94,7 +94,7 @@ setup(name=name,
+     license='GPL-3',
+     install_requires=[
+         'lxml >= 2.0',
+-        'relatorio[fodt] >= 0.7.0',
++        'relatorio >= 0.7.0',
+         'Genshi',
+         'python-dateutil',
+         'polib',
diff --git a/debian/patches/series b/debian/patches/series
index 40b8409..e448a8d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
 01_migrate_obsolete_modules.patch
+02_avoid_call_to_pypi.patch
commit e4758c2d00d5934164ee20ba7eddc7ea2221178c
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Nov 6 18:14:05 2017 +0100

    Remove superseeded BD on dh_systemd.

diff --git a/debian/control b/debian/control
index 87c2004..c771494 100644
--- a/debian/control
+++ b/debian/control
@@ -4,9 +4,8 @@ Priority: optional
 Maintainer: Debian Tryton Maintainers <tryton-debian at lists.alioth.debian.org>
 Uploaders: Mathias Behrle <mathiasb at m9s.biz>
 Build-Depends:
- debhelper (>= 9),
+ debhelper (>= 9.20160709),
  dh-python,
- dh-systemd (>= 1.3),
  python3,
  python3-dateutil,
  python3-genshi,
commit eb561d9c2ae7ccb3bb0d4a7fa10fbf1585ca4d55
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Nov 6 15:33:23 2017 +0100

    Prepare the NEWS for 4.6.0.

diff --git a/debian/NEWS b/debian/NEWS
index 5a04cd9..d59f88e 100644
--- a/debian/NEWS
+++ b/debian/NEWS
@@ -1,3 +1,23 @@
+tryton-server (4.6.0-1) unstable; urgency=medium
+
+  This is the new major release 4.6.0
+
+  As for each major release don't forget to backup your database(s) and
+  follow the upgrade procedures.
+
+  Run the database update with
+  $ sudo -u tryton trytond-admin -v -c /etc/tryton/trytond.conf --all \
+    -d <your_database_name>
+
+  For further information refer also to
+  https://discuss.tryton.org/t/migration-from-4-4-to-4-6/383
+
+  Restart the server(s) with
+  $ sudo service tryton-server restart
+  $ sudo service tryton-server-cron restart
+
+ -- Mathias Behrle <mathiasb at m9s.biz>  Mon, 06 Nov 2017 15:31:18 +0100
+
 tryton-server (4.4.1-1) unstable; urgency=medium
 
   This is the new major release 4.4.1.
commit 94ead3851e5aac0d4ba002f7e975723ee771f5d9
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Nov 6 15:22:29 2017 +0100

    Updating debian/manpages.

diff --git a/debian/manpages/trytond-admin.1 b/debian/manpages/trytond-admin.1
index 6572c08..fc483ff 100644
--- a/debian/manpages/trytond-admin.1
+++ b/debian/manpages/trytond-admin.1
@@ -1,4 +1,4 @@
-.TH TRYTOND-ADMIN 1 "2017\-06\-07" "4.4" "Tryton Application Platform"
+.TH TRYTOND-ADMIN 1 "2017\-11\-06" "4.6" "Tryton Application Platform"
 .SH NAME
 trytond-admin \- Tryton Application Platform (Database Adminstration)
 .SH SYNOPSIS
@@ -76,5 +76,5 @@ More information about the Tryton server and the Tryton project can be found at
 .SH AUTHOR
 Tryton server was written by the Tryton project <\fIhttp://www.tryton.org/\fR>.
 .PP
-This manual page was written by Daniel Baumann <\fIdaniel at debian.org\fR> and Mathias Behrle <\fImathiasb at m9s.biz\fR>.
+This manual page was written by Daniel Baumann <\fIdaniel at debian.org\fR> and Mathias Behrle <\fImbehrle at debian.org\fR>.
 
diff --git a/debian/manpages/trytond-cron.1 b/debian/manpages/trytond-cron.1
index 522debf..81f7f1b 100644
--- a/debian/manpages/trytond-cron.1
+++ b/debian/manpages/trytond-cron.1
@@ -1,4 +1,4 @@
-.TH TRYTOND-CRON 1 "2017\-06\-07" "4.4" "Tryton Application Platform"
+.TH TRYTOND-CRON 1 "2017\-11\-06" "4.6" "Tryton Application Platform"
 .SH NAME
 trytond-cron \- Tryton Application Platform (Cron)
 .SH SYNOPSIS
@@ -51,5 +51,5 @@ More information about the Tryton server and the Tryton project can be found at
 .SH AUTHOR
 Tryton server was written by the Tryton project <\fIhttp://www.tryton.org/\fR>.
 .PP
-This manual page was written by Daniel Baumann <\fIdaniel at debian.org\fR> and Mathias Behrle <\fImathiasb at m9s.biz\fR>.
+This manual page was written by Daniel Baumann <\fIdaniel at debian.org\fR> and Mathias Behrle <\fImbehrle at debian.org\fR>.
 
diff --git a/debian/manpages/trytond.1 b/debian/manpages/trytond.1
index f0c3f44..e628569 100644
--- a/debian/manpages/trytond.1
+++ b/debian/manpages/trytond.1
@@ -1,4 +1,4 @@
-.TH TRYTOND 1 "2017\-06\-07" "4.4" "Tryton Application Platform"
+.TH TRYTOND 1 "2017\-11\-06" "4.6" "Tryton Application Platform"
 .SH NAME
 trytond \- Tryton Application Platform (Server)
 .SH SYNOPSIS
@@ -51,4 +51,4 @@ More information about the Tryton server and the Tryton project can be found at
 .SH AUTHOR
 Tryton server was written by the Tryton project <\fIhttp://www.tryton.org/\fR>.
 .PP
-This manual page was written by Daniel Baumann <\fIdaniel at debian.org\fR> and Mathias Behrle <\fImathiasb at m9s.biz\fR>.
+This manual page was written by Daniel Baumann <\fIdaniel at debian.org\fR> and Mathias Behrle <\fImbehrle at debian.org\fR>.
commit e448637337b025210666c5d4c397a36ba9899ac8
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Nov 6 15:11:36 2017 +0100

    Refresh patches.

diff --git a/debian/patches/01_migrate_obsolete_modules.patch b/debian/patches/01_migrate_obsolete_modules.patch
index f281532..301004a 100644
--- a/debian/patches/01_migrate_obsolete_modules.patch
+++ b/debian/patches/01_migrate_obsolete_modules.patch
@@ -10,7 +10,7 @@ Forwarded: https://bugs.tryton.org/issue4280
 
 --- a/trytond/modules/__init__.py
 +++ b/trytond/modules/__init__.py
-@@ -406,6 +406,16 @@
+@@ -411,6 +411,16 @@
                          where=ir_module.state == 'uninstalled'))
  
              if update:
commit 60ade556ba4945c5252f3ffa08c9ccd80fe10a60
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Mon Nov 6 14:41:39 2017 +0100

    Merging upstream version 4.6.0.

diff --git a/.drone.yml b/.drone.yml
new file mode 100644
index 0000000..e0bc2f7
--- /dev/null
+++ b/.drone.yml
@@ -0,0 +1,51 @@
+clone:
+    hg:
+        image: plugins/hg
+
+pipeline:
+    tox:
+        image: ${IMAGE}
+        environment:
+            - CFLAGS=-O0
+            - DB_CACHE=/cache
+            - TOX_TESTENV_PASSENV=CFLAGS DB_CACHE
+            - POSTGRESQL_URI=postgresql://postgres@postgresql:5432/
+        commands:
+            - pip install tox
+            - tox -e "${TOXENV}-${DATABASE}"
+        volumes:
+            - cache:/root/.cache
+
+services:
+    postgresql:
+        image: postgres
+        when:
+            matrix:
+                DATABASE: postgresql
+
+matrix:
+    include:
+        - IMAGE: python:2.7
+          TOXENV: py27
+          DATABASE: sqlite
+        - IMAGE: python:2.7
+          TOXENV: py27
+          DATABASE: postgresql
+        - IMAGE: python:3.4
+          TOXENV: py34
+          DATABASE: sqlite
+        - IMAGE: python:3.4
+          TOXENV: py34
+          DATABASE: postgresql
+        - IMAGE: python:3.5
+          TOXENV: py35
+          DATABASE: sqlite
+        - IMAGE: python:3.5
+          TOXENV: py35
+          DATABASE: postgresql
+        - IMAGE: python:3.6
+          TOXENV: py36
+          DATABASE: sqlite
+        - IMAGE: python:3.6
+          TOXENV: py36
+          DATABASE: postgresql
diff --git a/CHANGELOG b/CHANGELOG
index 4e48db8..fe9e38c 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,14 +1,28 @@
-Version 4.4.4 - 2017-10-03
-* Bug fixes (see mercurial logs for details)
-
-Version 4.4.3 - 2017-08-08
-* Bug fixes (see mercurial logs for details)
-
-Version 4.4.2 - 2017-07-01
-* Bug fixes (see mercurial logs for details)
-
-Version 4.4.1 - 2017-05-19
+Version 4.6.0 - 2017-10-30
 * Bug fixes (see mercurial logs for details)
+* Add support for Python 3.6
+* Remove support for Python 3.3
+* Move handling of sequences to the Database object
+* Allow to add tests through entry points
+* Add translated descriptor for Reference field
+* Implement alter_type and alter_size for sqlite backend
+* Add a maximum size for request
+* Add support for single record report
+* Add support for Flat OpenDocument
+* Add get_email in trytond.report
+* Replace plain extension by txt
+* Support test database cache for remote postgresql
+* Increase session randomness to 32 bytes
+* Allow to specify datetime related values in XML files
+* Add environment variables to wsgi script
+* Add unique ids check on RPC
+* Assert unique records on ModelView.button and Workflow.transition
+* Add test for function field methods
+* Add option install module dependencies with trytond-admin
+* Add localhost_name and timeout as get_smtp_server uri parameters
+* Delete missing modules not activated when updating module list
+* Remove empty pages from notebook
+* Allow to store Dict as JSON on the database
 
 Version 4.4.0 - 2017-05-01
 * Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index 3e54787..74bce5a 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond
-Version: 4.4.4
+Version: 4.6.0
 Summary: Tryton server
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: issue_tracker at tryton.org
 License: GPL-3
-Download-URL: http://downloads.tryton.org/4.4/
+Download-URL: http://downloads.tryton.org/4.6/
 Description: trytond
         =======
         
@@ -121,9 +121,9 @@ Classifier: Natural Language :: Slovenian
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.3
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
diff --git a/bin/trytond b/bin/trytond
index f5b6cf4..e0e8438 100755
--- a/bin/trytond
+++ b/bin/trytond
@@ -21,11 +21,12 @@ commandline.config_log(options)
 config.update_etc(options.configfile)
 
 # Import trytond things after it is configured
-from trytond.application import app
+from trytond.wsgi import app
 from trytond.pool import Pool
 from trytond.modules import get_module_list, get_module_info
 
 with commandline.pidfile(options):
+    Pool.start()
     for name in options.database_names:
         Pool(name).init()
     hostname, port = split_netloc(config.get('web', 'listen'))
diff --git a/doc/conf.py b/doc/conf.py
index 245b621..19b4650 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -48,9 +48,9 @@ copyright = (u'2008-2011, Bertrand Chenal, Cédric Krier, Ian Wilson, '
 # built documents.
 #
 # The short X.Y version.
-version = '4.4'
+version = '4.6'
 # The full version, including alpha/beta/rc tags.
-release = '4.4'
+release = '4.6'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/doc/ref/index.rst b/doc/ref/index.rst
index eeeecc2..be55fd5 100644
--- a/doc/ref/index.rst
+++ b/doc/ref/index.rst
@@ -17,3 +17,4 @@ API Reference
     sendmail
     filestore
     cache
+    tests
diff --git a/doc/ref/models/fields.rst b/doc/ref/models/fields.rst
index 7b3ceca..cb6bfda 100644
--- a/doc/ref/models/fields.rst
+++ b/doc/ref/models/fields.rst
@@ -507,6 +507,12 @@ But a ``tuple`` can be used to search or set value.
 
     Same as :attr:`Many2One.datetime_field`
 
+Instance methods:
+
+.. method:: Reference.translated([name])
+
+    Same as :meth:`~Selection.translated` but for the translated name of the
+    target model.
 
 Many2One
 --------
@@ -846,6 +852,10 @@ Dict
 
 A dictionary field with predefined keys.
 
+.. note::
+    It is possible to store the dict as JSON in the database if the backend
+    supports by manually altering the column type to JSON on the database.
+
 :class:`Dict` has one extra required argument:
 
 .. attribute:: Dict.schema_model
diff --git a/doc/ref/models/models.rst b/doc/ref/models/models.rst
index 5f59d16..42c663d 100644
--- a/doc/ref/models/models.rst
+++ b/doc/ref/models/models.rst
@@ -372,19 +372,7 @@ Class attributes are:
 
 .. attribute:: ModelSQL._order
 
-    A list of tuples defining the default order of the records:
-
-        [ ('field name', 'ASC'), ('other field name', 'DESC'), ... ]
-
-    where the first element of the tuple is a field name of the model and the
-    second is the sort ordering as `ASC` for ascending or `DESC` for
-    descending. This second element may contain 'NULLS FIRST' or 'NULLS LAST'
-    to sort null values before or after non-null values. If neither is
-    specified the default behavior of the backend is used.
-
-    In case the field used for the first element is a :class:`fields.Many2One`,
-    it is also possible to use the dotted notation to sort on a specific field
-    from the target record.
+    The default `order` parameter of :meth:`ModelStorage.search` method.
 
 .. attribute:: ModelSQL._order_name
 
@@ -455,8 +443,28 @@ Class methods:
 
 .. classmethod:: ModelStorage.search(domain[, offset[, limit[, order[, count[, query]]]]])
 
-    Return a list of records that match the :ref:`domain <topics-domain>` or
-    the sql query if query is True.
+    Return a list of records that match the :ref:`domain <topics-domain>`.
+
+    If `offset` or `limit` are set, the result starts at the offset and has the
+    length of the limit.
+
+    The `order` is a list of tuples defining the order of the result:
+
+            [ ('field name', 'ASC'), ('other field name', 'DESC'), ... ]
+
+    The first element of the tuple is a field name of the model and the second
+    is the sort ordering as `ASC` for ascending or `DESC` for descending. This
+    second element may contain 'NULLS FIRST' or 'NULLS LAST' to sort null
+    values before or after non-null values. If neither is specified the default
+    behavior of the backend is used.
+
+    In case the field used is a :class:`fields.Many2One`, it is also possible
+    to use the dotted notation to sort on a specific field from the target
+    record.
+
+    If `count` is set to `True`, then the result is the number of records.
+
+    If `query` is set to `True`, the the result is the SQL query.
 
 .. classmethod:: ModelSQL.search_domain(domain[, active_test[, tables]])
 
@@ -737,9 +745,12 @@ Instance methods:
 
     Return the value of the field `name` for the pattern.
 
-.. method:: MultiValueMixin.set_multivalue(name, value, \*\*pattern)
+.. method:: MultiValueMixin.set_multivalue(name, value[, save], \*\*pattern)
 
     Store the value of the field `name` for the pattern.
+    If `save` is true, it will be stored in the database, otherwise the
+    modified :class:`ValueMixin` records are returned unsaved. `save` is true
+    by default.
 
 .. warning::
     To customize the pattern, both methods must be override the same way.
diff --git a/doc/ref/tests.rst b/doc/ref/tests.rst
new file mode 100644
index 0000000..5e3313f
--- /dev/null
+++ b/doc/ref/tests.rst
@@ -0,0 +1,102 @@
+.. _ref-test:
+.. module:: trytond.tests.test_tryton
+
+====
+Test
+====
+
+.. attribute:: DB_NAME
+
+    The name of the database to use for testing. Its value is taken from the
+    environment variable of the same name.
+
+.. attribute:: USER
+
+    The user id used to test the transactions
+
+.. attribute:: CONTEXT
+
+    The context used to test the transactions
+
+.. function:: activate_module(name)
+
+Activates the module `name` for the tested database.
+
+In case database does not exist and the `DB_CACHE` environment variable is set
+then Tryton will restore a backup found in the directory pointed by `DB_CACHE`.
+Otherwise it will proceed to the creation of the database and the activation of
+the module.
+
+==============
+ModuleTestCase
+==============
+
+.. class:: ModuleTestCase()
+
+A subclass of `unittest.TestCase`_ that tests a Tryton module. Some tests are
+included to ensure that the module works properly.
+
+This class creates a temporary database with the module activated in
+`setUpClass`_ and drops it in the `tearDownClass` method.
+
+.. attribute:: ModuleTestCase.module
+
+    Name of the tested module.
+
+.. _`unittest.TestCase`: https://docs.python.org/library/unittest.html#test-cases
+.. _setUpClass: https://docs.python.org/library/unittest.html#unittest.TestCase.setUpClass
+.. _tearDownClass: https://docs.python.org/library/unittest.html#unittest.TestCase.tearDownClass
+
+=======
+Helpers
+=======
+
+.. function:: with_transaction(user=1, context=None)
+
+This function returns a decorator to run a test case inside a transaction. The
+transaction is rolled back and the cache cleared at the end of the test.
+
+doctest helpers
+---------------
+
+.. function:: doctest_setup
+
+A function that prepares the run of the `doctest`_ by creating a database and
+dropping it beforehand if necessary. This function should be used as the
+`setUp` parameter 
+
+.. deprecated::
+    The `doctest_setup` function should not be used anymore to set up
+    `DocFileSuite`. New modules should use :func:`activate_modules` instead.
+
+.. _doctest: https://docs.python.org/library/doctest.html
+
+.. function:: doctest_teardown()
+
+A function that cleans up after the run of the doctest by dropping the
+database. It should be used as `tearDown` parameter when creating a
+`DocFileSuite`.
+
+.. attribute:: doctest_checker
+
+    A specialized doctest checker to ensure the Python 2/3 compatibility
+
+.. function:: suite()
+
+A function returning a subclass of `unittest.TestSuite` that will drop the
+database if it does not exist prior to the run of the tests.
+
+.. module:: trytond.tests.tools
+
+===========
+Tests tools
+===========
+
+.. function:: activate_modules(modules)
+
+This function is used in proteus doctests to activate a list of `modules` in
+the scenario.
+
+.. function:: set_user(user, config)
+
+This function will set the user of the `config` proteus connection to `user`.
diff --git a/doc/topics/configuration.rst b/doc/topics/configuration.rst
index 1ed05e6..0b2698b 100644
--- a/doc/topics/configuration.rst
+++ b/doc/topics/configuration.rst
@@ -119,6 +119,24 @@ table for translations.
 
 Default: `en`
 
+request
+-------
+
+max_size
+~~~~~~~~
+
+The maximum size in bytes of unauthenticated request (zero means no limit).
+
+Default: 2MB
+
+max_size_authenticated
+~~~~~~~~~~~~~~~~~~~~~~
+
+The maximum size in bytes of an authenticated request (zero means no limit).
+
+Default: 2GB
+
+
 cache
 -----
 
@@ -191,6 +209,15 @@ The available protocols are:
     - `smtp+tls`: SMTP with STARTTLS
     - `smtps`: SMTP with SSL
 
+The uri accepts the following additional parameters:
+
+* `local_hostname`: used as FQDN of the local host in the HELO/EHLO commands,
+  if omited it will use the value of `socket.getfqdn()`.
+* `timeout`: A number of seconds used as timeout for blocking operations. A
+  `socket.timeout` will be raised when exceeded. If omited the default timeout
+  will be used.
+
+
 Default: `smtp://localhost:25`
 
 from
diff --git a/doc/topics/index.rst b/doc/topics/index.rst
index f05bf19..853e6da 100644
--- a/doc/topics/index.rst
+++ b/doc/topics/index.rst
@@ -31,3 +31,4 @@ Introduction to all the key parts of trytond:
     user_application
     modules/index
     translation
+    testing
diff --git a/doc/topics/install.rst b/doc/topics/install.rst
index a449ead..e95d80b 100644
--- a/doc/topics/install.rst
+++ b/doc/topics/install.rst
@@ -11,7 +11,7 @@ Prerequisites
     * Werkzeug (http://werkzeug.pocoo.org/)
     * wrapt (https://github.com/GrahamDumpleton/wrapt)
     * lxml 2.0 or later (http://lxml.de/)
-    * relatorio 0.2.0 or later (http://code.google.com/p/python-relatorio/)
+    * relatorio 0.7.0 or later (http://relatorio.tryton.org/)
     * Genshi (http://genshi.edgewall.org/)
     * python-dateutil (http://labix.org/python-dateutil)
     * polib (https://bitbucket.org/izi/polib/wiki/Home)
@@ -27,6 +27,7 @@ Prerequisites
     * Optional: python-Levenshtein
       (http://github.com/miohtama/python-Levenshtein)
     * Optional: bcrypt (https://github.com/pyca/bcrypt)
+    * Optional: html2text (https://pypi.python.org/pypi/html2text)
     * Optional: mock (http://www.voidspace.org.uk/python/mock/)
 
 Install Tryton
diff --git a/doc/topics/modules/index.rst b/doc/topics/modules/index.rst
index 21d0638..1343f5a 100644
--- a/doc/topics/modules/index.rst
+++ b/doc/topics/modules/index.rst
@@ -138,6 +138,13 @@ Here is the list of the tags:
           an ending dot, if the record is defined in an other module.
 
         * ``eval``: Python code to evaluate and use result as value.
+          The following expressions are available:
+
+            * ``time``: The python time_ module
+            * ``version``: The current Tryton version
+            * ``ref``: A function that converts an XML id into a database id.
+            * ``Decimal``: The python Decimal_ object
+            * ``datetime``: The python datetime_ module
 
         * ``pyson``: convert the evaluated value into :ref:`PYSON <ref-pyson>`
           string.
@@ -171,3 +178,6 @@ Here is the list of the tags:
 
 
 .. _ConfigParser: http://docs.python.org/library/configparser.html
+.. _time: http://docs.python.org/library/time.html
+.. _Decimal: https://docs.python.org/library/decimal.html
+.. _datetime: https://docs.python.org/library/datetime.html
diff --git a/doc/topics/reports/index.rst b/doc/topics/reports/index.rst
index ab7bbf8..d389af2 100644
--- a/doc/topics/reports/index.rst
+++ b/doc/topics/reports/index.rst
@@ -50,6 +50,10 @@ When defining an `ir.action.report` the following attributes are available:
 
     * ``template_extension``: The template format.
 
+    * ``single``: `True` if the template works only for one record. If such
+      report is called with more than one record, a zip file containing all the
+      reports will be generated.
+
 
 Report Usage
 ============
@@ -129,12 +133,12 @@ Accessing models from within the report
 ---------------------------------------
 
 By default instances of the models the report is for are passed in to the
-report via a list of objects called `objects`.  These objects behave just as
-they would within trytond itself. You can access any of the models relations as
-well.  For example within the invoice report each object is an invoice and you
-can access the name of the party of the invoice via `invoice.party.name`.
-Additional objects can be passed to a report. This is discussed below in
-`Passing custom data to a report`.
+report via a list of objects called `records` (or `record` if `single` is
+`True`).  These records behave just as they would within trytond itself. You
+can access any of the models relations as well.  For example within the invoice
+report each object is an invoice and you can access the name of the party of
+the invoice via `invoice.party.name`.  Additional objects can be passed to a
+report. This is discussed below in `Passing custom data to a report`.
 
 Within Tryton the underlying model the report can be found by following the
 Menu to ``Administration > UI > Actions > Report``. Furthermore in tryton the
diff --git a/doc/topics/start_server.rst b/doc/topics/start_server.rst
index dcd446f..ffb6148 100644
--- a/doc/topics/start_server.rst
+++ b/doc/topics/start_server.rst
@@ -21,9 +21,13 @@ WSGI server
 -----------
 
 If you prefer to run Tryton inside your own WSGI server instead of the simple
-server of Werkzeug, you can use the application `trytond.application.app` and
-set the environment variable `TRYTOND_CONFIG` to point to the
-:ref:`configuration <topics-configuration>`.
+server of Werkzeug, you can use the application `trytond.application.app`.
+Following environment variables can be set:
+
+ * `TRYTOND_CONFIG`: Point to :ref:`configuration <topics-configuration>` file.
+ * `TRYTOND_LOGGING_CONFIG`: Point to :ref:`logging <topics-logs>` file.
+ * `TRYTOND_DATABASE_NAMES`: A list of database names in CSV format, using
+   python default dialect.
 
 .. warning:: You must manage to serve the static files from the web root.
 
diff --git a/doc/topics/testing.rst b/doc/topics/testing.rst
new file mode 100644
index 0000000..ca76749
--- /dev/null
+++ b/doc/topics/testing.rst
@@ -0,0 +1,105 @@
+.. _topics-testing:
+
+=======
+Testing
+=======
+
+Tryton supports both functional and unit tests.
+
+Testing your module
+~~~~~~~~~~~~~~~~~~~
+
+Functional tests
+----------------
+
+Functional tests are written as doctests_ using proteus.
+
+Unit tests
+----------
+
+Tryton provides the :class:`ModuleTestCase` class that bundles a set of tests
+that are useful for every module.
+
+Unit tests in `ModuleTestCase` can be decorated with
+:func:`trytond.tests.test_tryton.with_transaction` to run the test in a
+transaction.
+
+To use it in your own module you just have to inherit from
+:class:`ModuleTestCase` and set the class attribute 
+:attr:`module <ModuleTestCase.module>` to the name of your module.
+
+.. highlight:: python
+
+::
+
+    from trytond.tests.test_tryton import ModuleTestCase, with_transaction
+
+    class MyModuleTestCase(ModuleTestCase):
+        "My Module Test Case"
+        module = 'my_module'
+
+        @with_transaction()
+        def test_method(self):
+            "Test method"
+            self.assert_(True)
+
+
+Tests from this modules are found by the function
+`trytond.modules.my_module.tests.suite` which must return a
+`unittest.TestSuite` containing all the module's tests. This function is called
+by the Tryton test runner script to gather all the tests.
+
+A typical `suite()` function thus looks like this:
+
+.. highlight:: python
+
+::
+
+    def suite():
+        suite = trytond.tests.test_tryton.suite()
+        suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
+            MyModuleTestCase))
+        suite.addTests(doctest.DocFileSuite('scenario_my_module.rst',
+                tearDown=doctest_teardown, encoding='utf-8',
+                optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
+                checker=doctest_checker))
+        return suite
+
+.. _doctests: https://docs.python.org/library/doctest.html
+.. _unittest: https://docs.python.org/library/unittest.html
+
+Running your module's tests
+---------------------------
+
+Tryton provides the script `trytond/tests/run-tests.py`, just invoke it like
+that::
+
+    run-tests.py -m my_module
+
+Testing trytond
+~~~~~~~~~~~~~~~
+
+Extending tests
+---------------
+
+Python modules extending tryton core can define additional tests that should be
+added to the existing ones.
+
+Those modules must create an entry point `trytond.tests`. Any file in the
+module path specified by this entry point starting with `test_` and ending by
+`.py` will be imported. Each of those file must define a `suite()` function
+that returns a `unittest.TestSuite` that will be included in the trytond test
+suite.  If the module from the entry point defines a `register` function it
+will be called when registering the test-specific models in the
+:class:`trytond.pool.Pool`.
+
+Running trytond tests
+---------------------
+
+You should use the script `trytond/tests/run-tests.py` by invoking it like
+that::
+
+    run-tests.py [-c configuration]
+
+You can use a different configuration file to check trytond against different
+backend.
diff --git a/doc/topics/user_application.rst b/doc/topics/user_application.rst
index b5b7f3c..38123cf 100644
--- a/doc/topics/user_application.rst
+++ b/doc/topics/user_application.rst
@@ -22,9 +22,12 @@ Example::
 
 .. _Rule Format: http://werkzeug.pocoo.org/docs/latest/routing/#rule-format
 
-Tryton also provides some wrappers in `trytond.procotols.wrappers` to ease the
+Tryton also provides some wrappers in `trytond.protocols.wrappers` to ease the
 creation of such route.
 
+    - `set_max_request_size(size)`: change the default limit of the request to
+      the size in bytes.
+
     - `with_pool`: which takes the first parameter as database name and
       replace it by the corresponding instance of the :ref:`Pool <ref-pool>`.
 
diff --git a/doc/topics/views/index.rst b/doc/topics/views/index.rst
index 74d9eda..8a7cfa2 100644
--- a/doc/topics/views/index.rst
+++ b/doc/topics/views/index.rst
@@ -442,7 +442,7 @@ Example
 
 ::
 
-  <form string="Party" col="6">
+  <form col="6">
       <label name="name"/>
       <field name="name" xexpand="1"/>
       <label name="code"/>
@@ -568,7 +568,7 @@ Example
 
 ::
 
-  <tree string="Taxes" sequence="sequence">
+  <tree sequence="sequence">
       <field name="name"/>
       <field name="percentage">
           <suffix name="percentage" string="%"/>
@@ -801,7 +801,7 @@ Example
 
 ::
 
-  <calendar string="Productions" dtstart="planned_date">
+  <calendar dtstart="planned_date">
       <field name="code"/>
       <field name="product"/>
       <field name="reference"/>
diff --git a/setup.py b/setup.py
index 0bd9241..cfcb93d 100644
--- a/setup.py
+++ b/setup.py
@@ -33,9 +33,9 @@ if minor_version % 2:
         name, name, version)
 
 if platform.python_implementation() == 'PyPy':
-    pg_require = ['psycopg2cffi >= 2.5']
+    pg_require = ['psycopg2cffi >= 2.5.4']
 else:
-    pg_require = ['psycopg2 >= 2.5']
+    pg_require = ['psycopg2 >= 2.5.4']
 
 setup(name=name,
     version=version,
@@ -83,9 +83,9 @@ setup(name=name,
         'Natural Language :: Spanish',
         'Operating System :: OS Independent',
         'Programming Language :: Python :: 2.7',
-        'Programming Language :: Python :: 3.3',
         'Programming Language :: Python :: 3.4',
         'Programming Language :: Python :: 3.5',
+        'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: Implementation :: CPython',
         'Programming Language :: Python :: Implementation :: PyPy',
         'Topic :: Software Development :: Libraries :: Application Frameworks',
@@ -94,7 +94,7 @@ setup(name=name,
     license='GPL-3',
     install_requires=[
         'lxml >= 2.0',
-        'relatorio >= 0.2.0',
+        'relatorio[fodt] >= 0.7.0',
         'Genshi',
         'python-dateutil',
         'polib',
@@ -110,6 +110,7 @@ setup(name=name,
         'cdecimal': ['cdecimal'],
         'Levenshtein': ['python-Levenshtein'],
         'BCrypt': ['bcrypt'],
+        'html2text': ['html2text'],
         },
     zip_safe=False,
     test_suite='trytond.tests',
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 0000000..bd4664a
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,19 @@
+[tox]
+envlist = {py27,py34,py35,py36}-{sqlite,postgresql,mysql},pypy-{sqlite,postgresql}
+
+[testenv]
+commands = {envpython} setup.py test
+deps =
+    mock
+    {py27,py34,py35,py36}-postgresql: psycopg2 >= 2.5
+    pypy-postgresql: psycopg2cffi >= 2.5
+    mysql: MySQL-python
+    sqlite: sqlitebck
+setenv =
+    sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+    postgresql: TRYTOND_DATABASE_URI={env:POSTGRESQL_URI:postgresql://}
+    mysql: TRYTOND_DATABASE_URI={env:MYSQL_URI:mysql://}
+    sqlite: DB_NAME={env:SQLITE_NAME::memory:}
+    postgresql: DB_NAME={env:POSTGRESQL_NAME:test}
+    mysql: DB_NAME={env:MYSQL_NAME:test}
+install_command = pip install --pre --find-links https://trydevpi.tryton.org/ {opts} {packages}
diff --git a/trytond.egg-info/PKG-INFO b/trytond.egg-info/PKG-INFO
index 3e54787..74bce5a 100644
--- a/trytond.egg-info/PKG-INFO
+++ b/trytond.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond
-Version: 4.4.4
+Version: 4.6.0
 Summary: Tryton server
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: issue_tracker at tryton.org
 License: GPL-3
-Download-URL: http://downloads.tryton.org/4.4/
+Download-URL: http://downloads.tryton.org/4.6/
 Description: trytond
         =======
         
@@ -121,9 +121,9 @@ Classifier: Natural Language :: Slovenian
 Classifier: Natural Language :: Spanish
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.3
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
diff --git a/trytond.egg-info/SOURCES.txt b/trytond.egg-info/SOURCES.txt
index 3e6a977..b2c0f9e 100644
--- a/trytond.egg-info/SOURCES.txt
+++ b/trytond.egg-info/SOURCES.txt
@@ -1,3 +1,5 @@
+.drone.yml
+.hgtags
 CHANGELOG
 COPYRIGHT
 INSTALL
@@ -5,6 +7,7 @@ LICENSE
 MANIFEST.in
 README
 setup.py
+tox.ini
 bin/trytond
 bin/trytond-admin
 bin/trytond-cron
@@ -19,6 +22,7 @@ doc/ref/pool.rst
 doc/ref/pyson.rst
 doc/ref/rpc.rst
 doc/ref/sendmail.rst
+doc/ref/tests.rst
 doc/ref/transaction.rst
 doc/ref/wizard.rst
 doc/ref/models/fields.rst
@@ -39,6 +43,7 @@ doc/topics/pyson.rst
 doc/topics/rpc.rst
 doc/topics/setup_database.rst
 doc/topics/start_server.rst
+doc/topics/testing.rst
 doc/topics/translation.rst
 doc/topics/triggers.rst
 doc/topics/user_application.rst
@@ -69,6 +74,7 @@ trytond/security.py
 trytond/sendmail.py
 trytond/test_loader.py
 trytond/transaction.py
+trytond/tryton.rnc
 trytond/url.py
 trytond/wsgi.py
 trytond.egg-info/PKG-INFO
@@ -349,6 +355,7 @@ trytond/tests/import_data.py
 trytond/tests/import_data.xml
 trytond/tests/model.py
 trytond/tests/modelview.py
+trytond/tests/modelview.xml
 trytond/tests/mptt.py
 trytond/tests/multivalue.py
 trytond/tests/run-tests.py
diff --git a/trytond.egg-info/requires.txt b/trytond.egg-info/requires.txt
index 84b8ab7..bcc4429 100644
--- a/trytond.egg-info/requires.txt
+++ b/trytond.egg-info/requires.txt
@@ -1,5 +1,5 @@
 lxml >= 2.0
-relatorio >= 0.2.0
+relatorio[fodt] >= 0.7.0
 Genshi
 python-dateutil
 polib
@@ -17,7 +17,7 @@ python-Levenshtein
 MySQL-python
 
 [PostgreSQL]
-psycopg2 >= 2.5
+psycopg2 >= 2.5.4
 
 [cdecimal]
 cdecimal
@@ -25,5 +25,8 @@ cdecimal
 [graphviz]
 pydot
 
+[html2text]
+html2text
+
 [unoconv]
 unoconv
diff --git a/trytond/__init__.py b/trytond/__init__.py
index 8eaa04d..5ef7426 100644
--- a/trytond/__init__.py
+++ b/trytond/__init__.py
@@ -5,14 +5,14 @@ import time
 import warnings
 from email import charset
 
-__version__ = "4.4.4"
+__version__ = "4.6.0"
 
 os.environ['TZ'] = 'UTC'
 if hasattr(time, 'tzset'):
     time.tzset()
 
 if time.tzname[0] != 'UTC':
-    warnings.warn('Timezone must be set to UTC instead of %s', time.tzname[0])
+    warnings.warn('Timezone must be set to UTC instead of %s' % time.tzname[0])
 
 # set email encoding for utf-8 to 'quoted-printable'
 charset.add_charset('utf-8', charset.QP, charset.QP)
diff --git a/trytond/admin.py b/trytond/admin.py
index fb09aea..1c75144 100644
--- a/trytond/admin.py
+++ b/trytond/admin.py
@@ -30,7 +30,7 @@ def run(options):
                     database.init()
                     init[db_name] = True
             elif not database.test():
-                raise Exception("'%s' is not a Tryton database!" % db_name)
+                raise Exception('"%s" is not a Tryton database.' % db_name)
 
     for db_name in options.database_names:
         if options.update:
@@ -39,7 +39,7 @@ def run(options):
                 database = Database(db_name)
                 database.connect()
                 if not database.test():
-                    raise Exception("'%s' is not a Tryton database!" % db_name)
+                    raise Exception('"%s" is not a Tryton database.' % db_name)
                 lang = Table('ir_lang')
                 cursor.execute(*lang.select(lang.code,
                         where=lang.translatable == True))
@@ -50,7 +50,8 @@ def run(options):
             lang = set()
         lang |= set(options.languages)
         pool = Pool(db_name)
-        pool.init(update=options.update, lang=list(lang))
+        pool.init(update=options.update, lang=list(lang),
+            installdeps=options.installdeps)
 
         if options.update_modules_list:
             with Transaction().start(db_name, 0) as transaction:
@@ -77,21 +78,21 @@ def run(options):
             if passpath:
                 try:
                     with open(passpath) as passfile:
-                        password = passfile.readline()[:-1]
+                        password, = passfile.read().splitlines()
                 except Exception, err:
                     sys.stderr.write('Can not read password '
                         'from "%s": "%s"\n' % (passpath, err))
 
             if not password:
                 while True:
-                    password = getpass('Admin Password for %s: ' % db_name)
-                    password2 = getpass('Admin Password Confirmation: ')
+                    password = getpass('"admin" password for "%s": ' % db_name)
+                    password2 = getpass('"admin" password confirmation: ')
                     if password != password2:
-                        sys.stderr.write('Admin Password Confirmation '
-                            'doesn\'t match Admin Password!\n')
+                        sys.stderr.write('"admin" password confirmation '
+                            'doesn\'t match "admin" password.\n')
                         continue
                     if not password:
-                        sys.stderr.write('Admin Password is required!\n')
+                        sys.stderr.write('"admin" password is required.\n')
                         continue
                     break
 
diff --git a/trytond/application.py b/trytond/application.py
index ef3b73b..49bae0f 100644
--- a/trytond/application.py
+++ b/trytond/application.py
@@ -1,9 +1,25 @@
 # 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.wsgi import app
+import csv
+import os
+import logging.config
+from io import StringIO
 
 __all__ = ['app']
 
+# Logging must be set before importing
+logging_config = os.environ.get('TRYTOND_LOGGING_CONFIG')
+if logging_config:
+    logging.config.fileConfig(logging_config)
+
+from trytond.pool import Pool
+from trytond.wsgi import app
+
 Pool.start()
-import trytond.protocols.dispatcher
+# TRYTOND_CONFIG it's managed by importing config
+db_names = os.environ.get('TRYTOND_DATABASE_NAMES')
+if db_names:
+    # Read with csv so database name can include special chars
+    reader = csv.reader(StringIO(unicode(db_names)))
+    for db_name in next(reader):
+        Pool(db_name).init()
diff --git a/trytond/backend/database.py b/trytond/backend/database.py
index fe92d04..69a794f 100644
--- a/trytond/backend/database.py
+++ b/trytond/backend/database.py
@@ -164,6 +164,49 @@ class DatabaseInterface(object):
         "Return if database supports window functions."
         return False
 
+    @classmethod
+    def has_sequence(cls):
+        "Return if database supports sequence querying and assignation"
+        return False
+
+    def sequence_exist(self, connection, name):
+        "Return if a sequence exists"
+        if not self.has_sequence():
+            return
+        raise NotImplementedError
+
+    def sequence_create(
+            self, connection, name, number_increment=1, start_value=1):
+        "Creates a sequence"
+        if not self.has_sequence():
+            return
+        raise NotImplementedError
+
+    def sequence_update(
+            self, connection, name, number_increment=1, start_value=1):
+        "Modifies a sequence"
+        if not self.has_sequence():
+            return
+        raise NotImplementedError
+
+    def sequence_rename(self, connection, old_name, new_name):
+        "Renames a sequence"
+        if not self.has_sequence():
+            return
+        raise NotImplementedError
+
+    def sequence_delete(self, connection, name):
+        "Removes a sequence"
+        if not self.has_sequence():
+            return
+        raise NotImplementedError
+
+    def sequence_next_number(self, connection, name):
+        "Gets the next number of a sequence"
+        if not self.has_sequence():
+            return
+        raise NotImplementedError
+
     def sql_type(self, type_):
         'Return the SQLType tuple corresponding to the SQL type'
         pass
diff --git a/trytond/backend/mysql/database.py b/trytond/backend/mysql/database.py
index 73b7fec..e4c9e0f 100644
--- a/trytond/backend/mysql/database.py
+++ b/trytond/backend/mysql/database.py
@@ -87,6 +87,7 @@ class Database(DatabaseInterface):
         'INTEGER': SQLType('SIGNED INTEGER', 'BIGINT'),
         'BIGINTEGER': SQLType('SIGNED INTEGER', 'BIGINT'),
         'NUMERIC': SQLType('DECIMAL', 'DECIMAL(65, 30)'),
+        'INTERVAL': SQLType('DOUBLE', 'DOUBLE(255, 6)'),
         }
 
     def connect(self):
diff --git a/trytond/backend/mysql/init.sql b/trytond/backend/mysql/init.sql
index cb91ae6..8e612cc 100644
--- a/trytond/backend/mysql/init.sql
+++ b/trytond/backend/mysql/init.sql
@@ -129,5 +129,6 @@ CREATE TABLE ir_module_dependency (
 CREATE TABLE ir_cache (
     id BIGINT AUTO_INCREMENT NOT NULL,
     name VARCHAR(255),
-    "timestamp" TIMESTAMP
+    "timestamp" TIMESTAMP,
+    PRIMARY KEY(id)
 ) ENGINE=InnoDB;
diff --git a/trytond/backend/mysql/table.py b/trytond/backend/mysql/table.py
index b0f81fa..bc47738 100644
--- a/trytond/backend/mysql/table.py
+++ b/trytond/backend/mysql/table.py
@@ -78,14 +78,6 @@ class TableHandler(TableHandlerInterface):
             cursor.execute('ALTER TABLE `%s` RENAME TO `%s`'
                 % (old_history, new_history))
 
-    @staticmethod
-    def sequence_exist(sequence_name):
-        return True
-
-    @staticmethod
-    def sequence_rename(old_name, new_name):
-        pass
-
     def column_exist(self, column_name):
         return column_name in self._columns
 
diff --git a/trytond/backend/postgresql/database.py b/trytond/backend/postgresql/database.py
index d45026c..789f423 100644
--- a/trytond/backend/postgresql/database.py
+++ b/trytond/backend/postgresql/database.py
@@ -2,9 +2,9 @@
 # this repository contains the full copyright notices and license terms.
 import time
 import logging
-import re
 import os
 import urllib
+import json
 from decimal import Decimal
 from threading import RLock
 
@@ -26,18 +26,18 @@ except ImportError:
     PYDATE, PYDATETIME, PYTIME, PYINTERVAL = None, None, None, None
 from psycopg2 import IntegrityError as DatabaseIntegrityError
 from psycopg2 import OperationalError as DatabaseOperationalError
+from psycopg2.extras import register_default_json, register_default_jsonb
 
 from sql import Flavor
 
 from trytond.backend.database import DatabaseInterface, SQLType
 from trytond.config import config, parse_uri
+from trytond.protocols.jsonrpc import JSONDecoder
 
 __all__ = ['Database', 'DatabaseIntegrityError', 'DatabaseOperationalError']
 
 logger = logging.getLogger(__name__)
 
-RE_VERSION = re.compile(r'\S+ (\d+)\.(\d+)')
-
 os.environ['PGTZ'] = os.environ.get('TZ', '')
 
 
@@ -87,7 +87,6 @@ class Database(DatabaseInterface):
             if name in cls._databases:
                 return cls._databases[name]
             inst = DatabaseInterface.__new__(cls, name=name)
-            cls._databases[name] = inst
 
             logger.info('connect to "%s"', name)
             minconn = config.getint('database', 'minconn', default=1)
@@ -96,6 +95,7 @@ class Database(DatabaseInterface):
                 minconn, maxconn, cls.dsn(name),
                 cursor_factory=LoggingCursor)
 
+            cls._databases[name] = inst
             return inst
 
     @classmethod
@@ -141,10 +141,10 @@ class Database(DatabaseInterface):
             self._databases.pop(self.name)
 
     @classmethod
-    def create(cls, connection, database_name):
+    def create(cls, connection, database_name, template='template0'):
         cursor = connection.cursor()
         cursor.execute('CREATE DATABASE "' + database_name + '" '
-            'TEMPLATE template0 ENCODING \'unicode\'')
+            'TEMPLATE "' + template + '" ENCODING \'unicode\'')
         connection.commit()
         cls._list_cache = None
 
@@ -156,10 +156,11 @@ class Database(DatabaseInterface):
     def get_version(self, connection):
         if self.name not in self._version_cache:
             cursor = connection.cursor()
-            cursor.execute('SELECT version()')
+            cursor.execute('SHOW server_version_num')
             version, = cursor.fetchone()
-            self._version_cache[self.name] = tuple(map(int,
-                RE_VERSION.search(version).groups()))
+            major, rest = divmod(int(version), 10000)
+            minor, patch = divmod(rest, 100)
+            self._version_cache[self.name] = (major, minor, patch)
         return self._version_cache[self.name]
 
     def list(self):
@@ -316,6 +317,10 @@ class Database(DatabaseInterface):
     def has_window_functions(self):
         return True
 
+    @classmethod
+    def has_sequence(cls):
+        return True
+
     def sql_type(self, type_):
         if type_ in self.TYPES_MAPPING:
             return self.TYPES_MAPPING[type_]
@@ -329,6 +334,76 @@ class Database(DatabaseInterface):
                 return Binary(value)
         return value
 
+    def sequence_exist(self, connection, name):
+        cursor = connection.cursor()
+        for schema in self.search_path:
+            cursor.execute('SELECT 1 '
+                'FROM information_schema.sequences '
+                'WHERE sequence_name = %s AND sequence_schema = %s',
+                (name, schema))
+            if cursor.rowcount:
+                return True
+        return False
+
+    def sequence_create(
+            self, connection, name, number_increment=1, start_value=1):
+        cursor = connection.cursor()
+
+        param = self.flavor.param
+        cursor.execute(
+            'CREATE SEQUENCE "%s" '
+            'INCREMENT BY %s '
+            'START WITH %s'
+            % (name, param, param),
+            (number_increment, start_value))
+
+    def sequence_update(
+            self, connection, name, number_increment=1, start_value=1):
+        cursor = connection.cursor()
+        param = self.flavor.param
+        cursor.execute(
+            'ALTER SEQUENCE "%s" '
+            'INCREMENT BY %s '
+            'RESTART WITH %s'
+            % (name, param, param),
+            (number_increment, start_value))
+
+    def sequence_rename(self, connection, old_name, new_name):
+        cursor = connection.cursor()
+        if (self.sequence_exist(connection, old_name)
+                and not self.sequence_exist(connection, new_name)):
+            cursor.execute('ALTER TABLE "%s" RENAME TO "%s"'
+                % (old_name, new_name))
+
+    def sequence_delete(self, connection, name):
+        cursor = connection.cursor()
+        cursor.execute('DROP SEQUENCE "%s"' % name)
+
+    def sequence_next_number(self, connection, name):
+        cursor = connection.cursor()
+        version = self.get_version(connection)
+        if version >= (10, 0):
+            cursor.execute(
+                'SELECT increment_by '
+                'FROM pg_sequences '
+                'WHERE sequencename=%s '
+                % self.flavor.param,
+                (name,))
+            increment, = cursor.fetchone()
+            cursor.execute(
+                'SELECT CASE WHEN NOT is_called THEN last_value '
+                            'ELSE last_value + %s '
+                        'END '
+                'FROM "%s"' % (self.flavor.param, name),
+                (increment,))
+        else:
+            cursor.execute(
+                'SELECT CASE WHEN NOT is_called THEN last_value '
+                            'ELSE last_value + increment_by '
+                       'END '
+                'FROM "%s"' % name)
+        return cursor.fetchone()[0]
+
 register_type(UNICODE)
 if PYDATE:
     register_type(PYDATE)
@@ -340,3 +415,9 @@ if PYINTERVAL:
     register_type(PYINTERVAL)
 register_adapter(float, lambda value: AsIs(repr(value)))
 register_adapter(Decimal, lambda value: AsIs(str(value)))
+
+
+def convert_json(value):
+    return json.loads(value, object_hook=JSONDecoder())
+register_default_json(loads=convert_json)
+register_default_jsonb(loads=convert_json)
diff --git a/trytond/backend/postgresql/table.py b/trytond/backend/postgresql/table.py
index f09172d..68ae4a6 100644
--- a/trytond/backend/postgresql/table.py
+++ b/trytond/backend/postgresql/table.py
@@ -26,8 +26,10 @@ class TableHandler(TableHandlerInterface):
         transaction = Transaction()
         cursor = transaction.connection.cursor()
         # Create sequence if necessary
-        if not self.sequence_exist(self.sequence_name):
-            cursor.execute('CREATE SEQUENCE "%s"' % self.sequence_name)
+        if not transaction.database.sequence_exist(
+                transaction.connection, self.sequence_name):
+            transaction.database.sequence_create(
+                transaction.connection, self.sequence_name)
 
         # Create new table if necessary
         if not self.table_exist(self.table_name):
@@ -85,7 +87,8 @@ class TableHandler(TableHandlerInterface):
 
     @staticmethod
     def table_rename(old_name, new_name):
-        cursor = Transaction().connection.cursor()
+        transaction = Transaction()
+        cursor = transaction.connection.cursor()
         # Rename table
         if (TableHandler.table_exist(old_name)
                 and not TableHandler.table_exist(new_name)):
@@ -94,7 +97,8 @@ class TableHandler(TableHandlerInterface):
         # Rename sequence
         old_sequence = old_name + '_id_seq'
         new_sequence = new_name + '_id_seq'
-        TableHandler.sequence_rename(old_sequence, new_sequence)
+        transaction.database.sequence_rename(
+            transaction.connection, old_sequence, new_sequence)
         # Rename history table
         old_history = old_name + "__history"
         new_history = new_name + "__history"
@@ -103,30 +107,6 @@ class TableHandler(TableHandlerInterface):
             cursor.execute('ALTER TABLE "%s" RENAME TO "%s"'
                 % (old_history, new_history))
 
-    @classmethod
-    def sequence_schema(cls, sequence_name):
-        transaction = Transaction()
-        cursor = transaction.connection.cursor()
-        for schema in transaction.database.search_path:
-            cursor.execute('SELECT 1 '
-                'FROM information_schema.sequences '
-                'WHERE sequence_name = %s AND sequence_schema = %s',
-                (sequence_name, schema))
-            if cursor.rowcount:
-                return schema
-
-    @classmethod
-    def sequence_exist(cls, sequence_name):
-        return bool(cls.sequence_schema(sequence_name))
-
-    @staticmethod
-    def sequence_rename(old_name, new_name):
-        cursor = Transaction().connection.cursor()
-        if (TableHandler.sequence_exist(old_name)
-                and not TableHandler.sequence_exist(new_name)):
-            cursor.execute('ALTER TABLE "%s" RENAME TO "%s"'
-                % (old_name, new_name))
-
     def column_exist(self, column_name):
         return column_name in self._columns
 
diff --git a/trytond/backend/sqlite/table.py b/trytond/backend/sqlite/table.py
index a419037..f2bab69 100644
--- a/trytond/backend/sqlite/table.py
+++ b/trytond/backend/sqlite/table.py
@@ -86,39 +86,38 @@ class TableHandler(TableHandlerInterface):
             cursor.execute('ALTER TABLE "%s" RENAME TO "%s"'
                 % (old_history, new_history))
 
-    @staticmethod
-    def sequence_exist(sequence_name):
-        return True
-
-    @staticmethod
-    def sequence_rename(old_name, new_name):
-        pass
-
     def column_exist(self, column_name):
         return column_name in self._columns
 
+    def _recreate_table(self, new_columns):
+        transaction = Transaction()
+        database = transaction.database
+        cursor = transaction.connection.cursor()
+        temp_table = '_temp_%s' % self.table_name
+        TableHandler.table_rename(self.table_name, temp_table)
+        new_table = TableHandler(self._model, history=self.history)
+        columns, old_columns = [], []
+        for column, values in self._columns.iteritems():
+            typname = new_columns.get(column, {}).get(
+                'typname', values['typname'])
+            size = new_columns.get(column, {}).get('size', values['size'])
+            new_column = new_columns.get(column, {}).get('name', column)
+            new_table._add_raw_column(
+                new_column, database.sql_type(typname), field_size=size)
+            columns.append(new_column)
+            old_columns.append(column)
+        cursor.execute(('INSERT INTO "%s" (' +
+                ','.join('"%s"' % x for x in columns) +
+                ') SELECT ' +
+                ','.join('"%s"' % x for x in old_columns) + ' ' +
+                'FROM "%s"') % (self.table_name, temp_table))
+        cursor.execute('DROP TABLE "%s"' % temp_table)
+        self._update_definitions()
+
     def column_rename(self, old_name, new_name, exception=False):
-        cursor = Transaction().connection.cursor()
         if self.column_exist(old_name) and \
                 not self.column_exist(new_name):
-            temp_table = '_temp_%s' % self.table_name
-            TableHandler.table_rename(self.table_name, temp_table)
-            new_table = TableHandler(self._model, history=self.history)
-            for column, (notnull, hasdef, size, typname) \
-                    in self._columns.iteritems():
-                if column == old_name:
-                    column = new_name
-                new_table._add_raw_column(column, typname, field_size=size)
-            new_columns = new_table._columns.keys()
-            old_columns = [x if x != old_name else new_name
-                for x in new_columns]
-            cursor.execute(('INSERT INTO "%s" (' +
-                    ','.join('"%s"' % x for x in new_columns) +
-                    ') SELECT ' +
-                    ','.join('"%s"' % x for x in old_columns) + ' ' +
-                    'FROM "%s"') % (self.table_name, temp_table))
-            cursor.execute('DROP TABLE "%s"' % temp_table)
-            self._update_definitions()
+            self._recreate_table({old_name: {'name': new_name}})
         elif exception and self.column_exist(new_name):
             raise Exception('Unable to rename column %s.%s to %s.%s: '
                 '%s.%s already exist!'
@@ -168,10 +167,10 @@ class TableHandler(TableHandlerInterface):
         return dict(cursor)
 
     def alter_size(self, column_name, column_type):
-        warnings.warn('Unable to alter size of column with SQLite backend')
+        self._recreate_table({column_name: {'size': column_type}})
 
     def alter_type(self, column_name, column_type):
-        warnings.warn('Unable to alter type of column with SQLite backend')
+        self._recreate_table({column_name: {'typname': column_type}})
 
     def db_default(self, column_name, value):
         warnings.warn('Unable to set default on column with SQLite backend')
diff --git a/trytond/backend/table.py b/trytond/backend/table.py
index 7344841..a34b265 100644
--- a/trytond/backend/table.py
+++ b/trytond/backend/table.py
@@ -48,26 +48,6 @@ class TableHandlerInterface(object):
         '''
         raise NotImplementedError
 
-    @staticmethod
-    def sequence_exist(sequence_name):
-        '''
-        Sequence exist
-
-        :param sequence_name: the sequence name
-        :return: a boolean
-        '''
-        raise NotImplementedError
-
-    @staticmethod
-    def sequence_rename(old_name, new_name):
-        '''
-        Rename sequence
-
-        :param old_name: the old sequence name
-        :param new_name: the new sequence name
-        '''
-        raise NotImplementedError
-
     def column_exist(self, column_name):
         '''
         Column exist
diff --git a/trytond/commandline.py b/trytond/commandline.py
index f3f09d5..ad07049 100644
--- a/trytond/commandline.py
+++ b/trytond/commandline.py
@@ -47,6 +47,9 @@ def get_parser_admin():
         metavar='MODULE', help="update a module")
     parser.add_argument("--all", dest="update", action="append_const",
         const="ir", help="update all installed modules")
+    parser.add_argument("--install-dependencies", dest="installdeps",
+        action="store_true",
+        help="Install missing dependencies of updated modules")
     parser.add_argument("-p", "--password", dest="password",
         action='store_true', help="set the admin password")
     parser.add_argument("-m", "--update-modules-list", action="store_true",
diff --git a/trytond/config.py b/trytond/config.py
index bfdc2e4..1206a58 100644
--- a/trytond/config.py
+++ b/trytond/config.py
@@ -52,6 +52,9 @@ class TrytonConfigParser(ConfigParser.RawConfigParser):
         self.set('database', 'list', 'True')
         self.set('database', 'retry', 5)
         self.set('database', 'language', 'en')
+        self.add_section('request')
+        self.set('request', 'max_size', 2 * 1024 * 1024)
+        self.set('request', 'max_size_authenticated', 2 * 1024 * 1024 * 1024)
         self.add_section('cache')
         self.set('cache', 'model', 200)
         self.set('cache', 'record', 2000)
diff --git a/trytond/convert.py b/trytond/convert.py
index 279dc90..315e18a 100644
--- a/trytond/convert.py
+++ b/trytond/convert.py
@@ -1,6 +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.
 import time
+import datetime
 from xml import sax
 import logging
 import re
@@ -229,8 +230,8 @@ class RecordTagHandler:
                 context['time'] = time
                 context['version'] = __version__.rsplit('.', 1)[0]
                 context['ref'] = self.mh.get_id
-                context['obj'] = lambda *a: 1
                 context['Decimal'] = Decimal
+                context['datetime'] = datetime
                 if pyson_attr:
                     context.update(CONTEXT)
                 value = eval(eval_attr, context)
diff --git a/trytond/exceptions.py b/trytond/exceptions.py
index 18cc120..a42b20f 100644
--- a/trytond/exceptions.py
+++ b/trytond/exceptions.py
@@ -62,3 +62,12 @@ class ConcurrencyException(TrytonException):
 
 class RateLimitException(TrytonException):
     """User has sent too many requests in a given amount of time."""
+
+
+class MissingDependenciesException(TrytonException):
+
+    def __init__(self, missings):
+        self.missings = missings
+
+    def __unicode__(self):
+        return 'Missing dependencies: %s' % ' '.join(self.missings)
diff --git a/trytond/ir/action.py b/trytond/ir/action.py
index 259658a..fd21881 100644
--- a/trytond/ir/action.py
+++ b/trytond/ir/action.py
@@ -136,7 +136,7 @@ class ActionKeyword(ModelSQL, ModelView):
 
     @classmethod
     def search_groups(cls, name, clause):
-        return [('action.groups',) + tuple(clause[1:])]
+        return [('action.' + clause[0],) + tuple(clause[1:])]
 
     @classmethod
     def validate(cls, actions):
@@ -294,7 +294,7 @@ class ActionMixin(ModelSQL):
 
     @classmethod
     def search_action(cls, name, clause):
-        return [('action.' + name,) + tuple(clause[1:])]
+        return [('action.' + clause[0],) + tuple(clause[1:])]
 
     @classmethod
     def create(cls, vlist):
@@ -409,12 +409,14 @@ class ActionReport(ActionMixin, ModelSQL, ModelView):
     action = fields.Many2One('ir.action', 'Action', required=True,
             ondelete='CASCADE')
     direct_print = fields.Boolean('Direct Print')
+    single = fields.Boolean("Single",
+        help="Check if the template works only for one record.")
     template_extension = fields.Selection([
             ('odt', 'OpenDocument Text'),
             ('odp', 'OpenDocument Presentation'),
             ('ods', 'OpenDocument Spreadsheet'),
             ('odg', 'OpenDocument Graphics'),
-            ('plain', 'Plain Text'),
+            ('txt', 'Plain Text'),
             ('xml', 'XML'),
             ('html', 'HTML'),
             ('xhtml', 'XHTML'),
@@ -564,6 +566,12 @@ class ActionReport(ActionMixin, ModelSQL, ModelView):
         # Migration from 3.4 remove report_name_module_uniq constraint
         table.drop_constraint('report_name_module_uniq')
 
+        # Migration from 4.4 replace plain extension by txt
+        cursor.execute(*action_report.update(
+                [action_report.extension],
+                ['txt'],
+                where=action_report.extension == 'plain'))
+
     @staticmethod
     def default_type():
         return 'ir.action.report'
@@ -576,6 +584,10 @@ class ActionReport(ActionMixin, ModelSQL, ModelView):
     def default_direct_print():
         return False
 
+    @classmethod
+    def default_single(cls):
+        return False
+
     @staticmethod
     def default_template_extension():
         return 'odt'
diff --git a/trytond/ir/export.py b/trytond/ir/export.py
index 9210f39..8ac9415 100644
--- a/trytond/ir/export.py
+++ b/trytond/ir/export.py
@@ -21,5 +21,5 @@ class ExportLine(ModelSQL, ModelView):
     "Export line"
     __name__ = 'ir.export.line'
     name = fields.Char('Name')
-    export = fields.Many2One('ir.export', 'Export',
-       select=True)
+    export = fields.Many2One('ir.export', 'Export', select=True, required=True,
+        ondelete='CASCADE')
diff --git a/trytond/ir/locale/bg.po b/trytond/ir/locale/bg.po
index 95fdcc7..729805a 100644
--- a/trytond/ir/locale/bg.po
+++ b/trytond/ir/locale/bg.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -354,8 +354,8 @@ msgid "Name"
 msgstr "Име"
 
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -469,8 +469,8 @@ msgid "PySON Search Criteria"
 msgstr "PySON критерии за търсене"
 
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -541,10 +541,9 @@ msgctxt "field:ir.action.act_window.domain,name:"
 msgid "Name"
 msgstr "Име на прикачен файл"
 
-#, fuzzy
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "Име на прикачен файл"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.action.act_window.domain,sequence:"
@@ -583,8 +582,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.view,sequence:"
 msgid "Sequence"
@@ -632,8 +631,8 @@ msgid "Model"
 msgstr "Модел"
 
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.keyword,write_date:"
 msgid "Write Date"
@@ -713,8 +712,8 @@ msgid "PySON Email"
 msgstr "PySON Email"
 
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -736,6 +735,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr "Вътрешно име"
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr ""
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr "Разширение на шаблон"
@@ -800,8 +803,8 @@ msgid "Name"
 msgstr "Име на прикачен файл"
 
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.action.url,type:"
@@ -875,8 +878,8 @@ msgid "Name"
 msgstr "Име на прикачен файл"
 
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.action.wizard,type:"
@@ -949,8 +952,8 @@ msgid "Name"
 msgstr "Име на прикачен файл"
 
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -989,8 +992,8 @@ msgid "Name"
 msgstr "Име"
 
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -1024,10 +1027,9 @@ msgctxt "field:ir.configuration,language:"
 msgid "language"
 msgstr "Език"
 
-#, fuzzy
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "Име на прикачен файл"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.configuration,write_date:"
@@ -1088,8 +1090,8 @@ msgid "Number of Calls"
 msgstr "Брой обаждания"
 
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1136,8 +1138,8 @@ msgid "Name"
 msgstr "Име"
 
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1172,8 +1174,8 @@ msgid "Name"
 msgstr "Име"
 
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export.line,write_date:"
 msgid "Write Date"
@@ -1224,8 +1226,8 @@ msgid "Name"
 msgstr "Име"
 
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.lang,thousands_sep:"
 msgid "Thousands Separator"
@@ -1280,8 +1282,8 @@ msgid "Model Description"
 msgstr "Описание на модел"
 
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model,write_date:"
 msgid "Write Date"
@@ -1332,8 +1334,8 @@ msgid "Write Access"
 msgstr "Права за писане"
 
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.access,write_date:"
 msgid "Write Date"
@@ -1372,8 +1374,8 @@ msgid "Name"
 msgstr "Име на прикачен файл"
 
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "Име на прикачен файл"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1420,10 +1422,9 @@ msgctxt "field:ir.model.button-button.reset,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button-button.reset,write_date:"
@@ -1460,10 +1461,9 @@ msgctxt "field:ir.model.button.click,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button.click,record_id:"
@@ -1514,10 +1514,9 @@ msgctxt "field:ir.model.button.rule,number_user:"
 msgid "Number of User"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button.rule,write_date:"
@@ -1570,8 +1569,8 @@ msgid "Out of Sync"
 msgstr ""
 
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.data,values:"
 msgid "Values"
@@ -1622,8 +1621,8 @@ msgid "Name"
 msgstr "Име"
 
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1684,8 +1683,8 @@ msgid "Write Access"
 msgstr "Права за писане"
 
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "Име на прикачен файл"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field.access,write_date:"
 msgid "Write Date"
@@ -1736,8 +1735,8 @@ msgid "Parents"
 msgstr "Родители"
 
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module,state:"
 msgid "State"
@@ -1795,8 +1794,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.module.config_wizard.item,sequence:"
@@ -1844,8 +1843,8 @@ msgid "Name"
 msgstr "Име"
 
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.dependency,state:"
 msgid "State"
@@ -1892,10 +1891,9 @@ msgctxt "field:ir.note,message_wrapped:"
 msgid "Message"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.note,resource:"
@@ -1936,10 +1934,9 @@ msgctxt "field:ir.note.read,note:"
 msgid "Note"
 msgstr "Бележка"
 
-#, fuzzy
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.note.read,user:"
@@ -1974,8 +1971,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule,rule_group:"
 msgid "Group"
@@ -2038,8 +2035,8 @@ msgid "Write Access"
 msgstr "Права за писане"
 
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2106,8 +2103,8 @@ msgid "Prefix"
 msgstr "Префикс"
 
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2182,8 +2179,8 @@ msgid "Prefix"
 msgstr "Префикс"
 
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2230,8 +2227,8 @@ msgid "Sequence Name"
 msgstr "Име на последователност"
 
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type,write_date:"
 msgid "Write Date"
@@ -2258,8 +2255,8 @@ msgid "Key"
 msgstr "Ключ"
 
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session,write_date:"
 msgid "Write Date"
@@ -2286,8 +2283,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session.wizard,write_date:"
 msgid "Write Date"
@@ -2334,8 +2331,8 @@ msgid "Overriding Module"
 msgstr ""
 
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2472,8 +2469,8 @@ msgid "On Write"
 msgstr "При запис"
 
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger,write_date:"
 msgid "Write Date"
@@ -2496,8 +2493,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2544,8 +2541,8 @@ msgid "SVG Path"
 msgstr "Път към SVG файл"
 
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "Име на прикачен файл"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.icon,sequence:"
 msgid "Sequence"
@@ -2613,8 +2610,8 @@ msgid "Parent Menu"
 msgstr "Родителско меню"
 
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu,sequence:"
 msgid "Sequence"
@@ -2648,10 +2645,9 @@ msgctxt "field:ir.ui.menu.favorite,menu:"
 msgid "Menu"
 msgstr "Меню"
 
-#, fuzzy
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "Име на прикачен файл"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.ui.menu.favorite,sequence:"
@@ -2724,8 +2720,8 @@ msgid "Priority"
 msgstr "Важност"
 
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -2773,10 +2769,9 @@ msgctxt "field:ir.ui.view_search,name:"
 msgid "Name"
 msgstr "Име на прикачен файл"
 
-#, fuzzy
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "Име на прикачен файл"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.ui.view_search,user:"
@@ -2826,10 +2821,9 @@ msgctxt "field:ir.ui.view_tree_state,nodes:"
 msgid "Expanded Nodes"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "Име на прикачен файл"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -2871,8 +2865,8 @@ msgid "Model"
 msgstr "Модел"
 
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_width,user:"
 msgid "User"
@@ -2918,6 +2912,10 @@ msgstr ""
 "Оставете празно за същото като шаблона, вижте документацията на unoconv за "
 "съвместими формати"
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr ""
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr "Стартиране на помощник в нов прозорец"
diff --git a/trytond/ir/locale/ca.po b/trytond/ir/locale/ca.po
index 3bf5ba3..0b9cde2 100644
--- a/trytond/ir/locale/ca.po
+++ b/trytond/ir/locale/ca.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -378,8 +378,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -486,8 +486,8 @@ msgid "PySON Search Criteria"
 msgstr "Criteri de cerca PySON"
 
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -550,8 +550,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.action.act_window.domain,sequence:"
 msgid "Sequence"
@@ -586,8 +586,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.action.act_window.view,sequence:"
 msgid "Sequence"
@@ -634,8 +634,8 @@ msgid "Model"
 msgstr "Model"
 
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.action.keyword,write_date:"
 msgid "Write Date"
@@ -710,8 +710,8 @@ msgid "PySON Email"
 msgstr "Correu electrònic PySON"
 
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -733,6 +733,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr "Nom intern"
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr "Únic"
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr "Tipus de document"
@@ -790,8 +794,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.action.url,type:"
 msgid "Type"
@@ -858,8 +862,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.action.wizard,type:"
 msgid "Type"
@@ -930,8 +934,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -970,8 +974,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -1002,8 +1006,8 @@ msgid "language"
 msgstr "idioma"
 
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.configuration,write_date:"
 msgid "Write Date"
@@ -1062,8 +1066,8 @@ msgid "Number of Calls"
 msgstr "Número de crides"
 
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1110,8 +1114,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1146,8 +1150,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.export.line,write_date:"
 msgid "Write Date"
@@ -1198,8 +1202,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.lang,thousands_sep:"
 msgid "Thousands Separator"
@@ -1254,8 +1258,8 @@ msgid "Model Description"
 msgstr "Descripció model"
 
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.model,write_date:"
 msgid "Write Date"
@@ -1306,8 +1310,8 @@ msgid "Write Access"
 msgstr "Permís per modificar"
 
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.model.access,write_date:"
 msgid "Write Date"
@@ -1346,8 +1350,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1390,8 +1394,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.model.button-button.reset,write_date:"
 msgid "Write Date"
@@ -1422,8 +1426,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.model.button.click,record_id:"
 msgid "Record ID"
@@ -1466,8 +1470,8 @@ msgid "Number of User"
 msgstr "Número d'usuaris"
 
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.model.button.rule,write_date:"
 msgid "Write Date"
@@ -1518,8 +1522,8 @@ msgid "Out of Sync"
 msgstr "Sense sincronitzar"
 
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.model.data,values:"
 msgid "Values"
@@ -1570,8 +1574,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1630,8 +1634,8 @@ msgid "Write Access"
 msgstr "Permís per modificar"
 
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.model.field.access,write_date:"
 msgid "Write Date"
@@ -1682,8 +1686,8 @@ msgid "Parents"
 msgstr "Pares"
 
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.module,state:"
 msgid "State"
@@ -1738,8 +1742,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.module.config_wizard.item,sequence:"
 msgid "Sequence"
@@ -1786,8 +1790,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.module.dependency,state:"
 msgid "State"
@@ -1830,8 +1834,8 @@ msgid "Message"
 msgstr "Missatge"
 
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.note,resource:"
 msgid "Resource"
@@ -1866,8 +1870,8 @@ msgid "Note"
 msgstr "Nota"
 
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.note.read,user:"
 msgid "User"
@@ -1898,8 +1902,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.rule,rule_group:"
 msgid "Group"
@@ -1962,8 +1966,8 @@ msgid "Write Access"
 msgstr "Permís per modificar"
 
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2030,8 +2034,8 @@ msgid "Prefix"
 msgstr "Prefix"
 
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2106,8 +2110,8 @@ msgid "Prefix"
 msgstr "Prefix"
 
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2154,8 +2158,8 @@ msgid "Sequence Name"
 msgstr "Nom de la seqüència"
 
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.sequence.type,write_date:"
 msgid "Write Date"
@@ -2182,8 +2186,8 @@ msgid "Key"
 msgstr "Tecla"
 
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.session,write_date:"
 msgid "Write Date"
@@ -2210,8 +2214,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.session.wizard,write_date:"
 msgid "Write Date"
@@ -2258,8 +2262,8 @@ msgid "Overriding Module"
 msgstr "Mòdul anul·lant"
 
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2394,8 +2398,8 @@ msgid "On Write"
 msgstr "Al modificar"
 
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.trigger,write_date:"
 msgid "Write Date"
@@ -2418,8 +2422,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2466,8 +2470,8 @@ msgid "SVG Path"
 msgstr "Ruta SVG"
 
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.ui.icon,sequence:"
 msgid "Sequence"
@@ -2534,8 +2538,8 @@ msgid "Parent Menu"
 msgstr "Menú pare"
 
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.ui.menu,sequence:"
 msgid "Sequence"
@@ -2566,8 +2570,8 @@ msgid "Menu"
 msgstr "Menú"
 
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.ui.menu.favorite,sequence:"
 msgid "Sequence"
@@ -2634,8 +2638,8 @@ msgid "Priority"
 msgstr "Prioritat"
 
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -2678,8 +2682,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.ui.view_search,user:"
 msgid "User"
@@ -2722,8 +2726,8 @@ msgid "Expanded Nodes"
 msgstr "Nodes expandits"
 
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -2762,8 +2766,8 @@ msgid "Model"
 msgstr "Model"
 
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.ui.view_tree_width,user:"
 msgid "User"
@@ -2809,6 +2813,10 @@ msgstr ""
 "Deixeu-lo buit per mantenir el mateix que a la plantilla, consulteu la "
 "documentació de l'unoconv per conèixer formats compatibles."
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr "Marqueu si la plantilla funciona només per un sol registre."
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr "Executa l'assistent en una nova finestra."
@@ -3987,7 +3995,7 @@ msgstr "Voleu sincronitzar les traduccions?"
 
 msgctxt "view:ir.translation.set.succeed:"
 msgid "Set Succeed!"
-msgstr "Les traduccions s'han realitzat correctament."
+msgstr "Les traduccions s'han definit correctament."
 
 msgctxt "view:ir.ui.view:"
 msgid "Show"
diff --git a/trytond/ir/locale/cs.po b/trytond/ir/locale/cs.po
index 231d454..a84efc6 100644
--- a/trytond/ir/locale/cs.po
+++ b/trytond/ir/locale/cs.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -343,10 +343,9 @@ msgctxt "field:ir.action,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -453,10 +452,9 @@ msgctxt "field:ir.action.act_window,pyson_search_value:"
 msgid "PySON Search Criteria"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -519,10 +517,9 @@ msgctxt "field:ir.action.act_window.domain,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.domain,sequence:"
 msgid "Sequence"
@@ -556,10 +553,9 @@ msgctxt "field:ir.action.act_window.view,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.view,sequence:"
 msgid "Sequence"
@@ -605,10 +601,9 @@ msgctxt "field:ir.action.keyword,model:"
 msgid "Model"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.keyword,write_date:"
 msgid "Write Date"
@@ -683,10 +678,9 @@ msgctxt "field:ir.action.report,pyson_email:"
 msgid "PySON Email"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -708,6 +702,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr ""
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr ""
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr ""
@@ -765,10 +763,9 @@ msgctxt "field:ir.action.url,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.url,type:"
 msgid "Type"
@@ -835,10 +832,9 @@ msgctxt "field:ir.action.wizard,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.wizard,type:"
 msgid "Type"
@@ -909,10 +905,9 @@ msgctxt "field:ir.attachment,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -951,10 +946,9 @@ msgctxt "field:ir.cache,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -984,10 +978,9 @@ msgctxt "field:ir.configuration,language:"
 msgid "language"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.configuration,write_date:"
 msgid "Write Date"
@@ -1046,10 +1039,9 @@ msgctxt "field:ir.cron,number_calls:"
 msgid "Number of Calls"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1096,10 +1088,9 @@ msgctxt "field:ir.export,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1134,10 +1125,9 @@ msgctxt "field:ir.export.line,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export.line,write_date:"
 msgid "Write Date"
@@ -1188,10 +1178,9 @@ msgctxt "field:ir.lang,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.lang,thousands_sep:"
 msgid "Thousands Separator"
@@ -1245,10 +1234,9 @@ msgctxt "field:ir.model,name:"
 msgid "Model Description"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model,write_date:"
 msgid "Write Date"
@@ -1298,10 +1286,9 @@ msgctxt "field:ir.model.access,perm_write:"
 msgid "Write Access"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.access,write_date:"
 msgid "Write Date"
@@ -1340,10 +1327,9 @@ msgctxt "field:ir.model.button,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1385,10 +1371,9 @@ msgctxt "field:ir.model.button-button.reset,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button-button.reset,write_date:"
 msgid "Write Date"
@@ -1418,10 +1403,9 @@ msgctxt "field:ir.model.button.click,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button.click,record_id:"
 msgid "Record ID"
@@ -1463,10 +1447,9 @@ msgctxt "field:ir.model.button.rule,number_user:"
 msgid "Number of User"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button.rule,write_date:"
 msgid "Write Date"
@@ -1516,10 +1499,9 @@ msgctxt "field:ir.model.data,out_of_sync:"
 msgid "Out of Sync"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.data,values:"
 msgid "Values"
@@ -1570,10 +1552,9 @@ msgctxt "field:ir.model.field,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1631,10 +1612,9 @@ msgctxt "field:ir.model.field.access,perm_write:"
 msgid "Write Access"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field.access,write_date:"
 msgid "Write Date"
@@ -1685,10 +1665,9 @@ msgctxt "field:ir.module,parents:"
 msgid "Parents"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module,state:"
 msgid "State"
@@ -1742,10 +1721,9 @@ msgctxt "field:ir.module.config_wizard.item,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.config_wizard.item,sequence:"
 msgid "Sequence"
@@ -1792,10 +1770,9 @@ msgctxt "field:ir.module.dependency,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.dependency,state:"
 msgid "State"
@@ -1837,10 +1814,9 @@ msgctxt "field:ir.note,message_wrapped:"
 msgid "Message"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.note,resource:"
 msgid "Resource"
@@ -1874,10 +1850,9 @@ msgctxt "field:ir.note.read,note:"
 msgid "Note"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.note.read,user:"
 msgid "User"
@@ -1907,10 +1882,9 @@ msgctxt "field:ir.rule,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule,rule_group:"
 msgid "Group"
@@ -1973,10 +1947,9 @@ msgctxt "field:ir.rule.group,perm_write:"
 msgid "Write Access"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2042,10 +2015,9 @@ msgctxt "field:ir.sequence,prefix:"
 msgid "Prefix"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2119,10 +2091,9 @@ msgctxt "field:ir.sequence.strict,prefix:"
 msgid "Prefix"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2168,10 +2139,9 @@ msgctxt "field:ir.sequence.type,name:"
 msgid "Sequence Name"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type,write_date:"
 msgid "Write Date"
@@ -2197,10 +2167,9 @@ msgctxt "field:ir.session,key:"
 msgid "Key"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session,write_date:"
 msgid "Write Date"
@@ -2226,10 +2195,9 @@ msgctxt "field:ir.session.wizard,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session.wizard,write_date:"
 msgid "Write Date"
@@ -2275,10 +2243,9 @@ msgctxt "field:ir.translation,overriding_module:"
 msgid "Overriding Module"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2413,10 +2380,9 @@ msgctxt "field:ir.trigger,on_write:"
 msgid "On Write"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger,write_date:"
 msgid "Write Date"
@@ -2438,10 +2404,9 @@ msgctxt "field:ir.trigger.log,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2488,10 +2453,9 @@ msgctxt "field:ir.ui.icon,path:"
 msgid "SVG Path"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.icon,sequence:"
 msgid "Sequence"
@@ -2557,10 +2521,9 @@ msgctxt "field:ir.ui.menu,parent:"
 msgid "Parent Menu"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu,sequence:"
 msgid "Sequence"
@@ -2590,10 +2553,9 @@ msgctxt "field:ir.ui.menu.favorite,menu:"
 msgid "Menu"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu.favorite,sequence:"
 msgid "Sequence"
@@ -2660,10 +2622,9 @@ msgctxt "field:ir.ui.view,priority:"
 msgid "Priority"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -2706,10 +2667,9 @@ msgctxt "field:ir.ui.view_search,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_search,user:"
 msgid "User"
@@ -2751,10 +2711,9 @@ msgctxt "field:ir.ui.view_tree_state,nodes:"
 msgid "Expanded Nodes"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -2792,10 +2751,9 @@ msgctxt "field:ir.ui.view_tree_width,model:"
 msgid "Model"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_width,user:"
 msgid "User"
@@ -2837,6 +2795,10 @@ msgid ""
 "compatible format"
 msgstr ""
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr ""
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr ""
diff --git a/trytond/ir/locale/de.po b/trytond/ir/locale/de.po
index bb3ea18..602b0c7 100644
--- a/trytond/ir/locale/de.po
+++ b/trytond/ir/locale/de.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -388,8 +388,8 @@ msgid "Name"
 msgstr "Name"
 
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -496,8 +496,8 @@ msgid "PySON Search Criteria"
 msgstr "PySON Suchkriterien"
 
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -560,8 +560,8 @@ msgid "Name"
 msgstr "Name"
 
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.domain,sequence:"
 msgid "Sequence"
@@ -596,8 +596,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.view,sequence:"
 msgid "Sequence"
@@ -644,8 +644,8 @@ msgid "Model"
 msgstr "Modell"
 
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.keyword,write_date:"
 msgid "Write Date"
@@ -720,8 +720,8 @@ msgid "PySON Email"
 msgstr "PySON E-Mail"
 
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -743,6 +743,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr "Interner Name"
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr ""
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr "Erweiterung Vorlage"
@@ -800,8 +804,8 @@ msgid "Name"
 msgstr "Name"
 
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.url,type:"
 msgid "Type"
@@ -868,8 +872,8 @@ msgid "Name"
 msgstr "Name"
 
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.wizard,type:"
 msgid "Type"
@@ -940,8 +944,8 @@ msgid "Name"
 msgstr "Name"
 
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -980,8 +984,8 @@ msgid "Name"
 msgstr "Name"
 
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -1012,8 +1016,8 @@ msgid "language"
 msgstr "Sprache"
 
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.configuration,write_date:"
 msgid "Write Date"
@@ -1072,8 +1076,8 @@ msgid "Number of Calls"
 msgstr "Anzahl Aufrufe"
 
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1120,8 +1124,8 @@ msgid "Name"
 msgstr "Name Export"
 
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1156,8 +1160,8 @@ msgid "Name"
 msgstr "Feldname"
 
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export.line,write_date:"
 msgid "Write Date"
@@ -1208,8 +1212,8 @@ msgid "Name"
 msgstr "Name"
 
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.lang,thousands_sep:"
 msgid "Thousands Separator"
@@ -1264,8 +1268,8 @@ msgid "Model Description"
 msgstr "Modell Beschreibung"
 
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model,write_date:"
 msgid "Write Date"
@@ -1316,8 +1320,8 @@ msgid "Write Access"
 msgstr "Schreiben"
 
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.access,write_date:"
 msgid "Write Date"
@@ -1356,8 +1360,8 @@ msgid "Name"
 msgstr "Name"
 
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1400,8 +1404,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button-button.reset,write_date:"
 msgid "Write Date"
@@ -1432,8 +1436,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button.click,record_id:"
 msgid "Record ID"
@@ -1476,8 +1480,8 @@ msgid "Number of User"
 msgstr "Benutzeranzahl"
 
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button.rule,write_date:"
 msgid "Write Date"
@@ -1528,8 +1532,8 @@ msgid "Out of Sync"
 msgstr "Nicht synchronisiert"
 
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.data,values:"
 msgid "Values"
@@ -1580,8 +1584,8 @@ msgid "Name"
 msgstr "Name"
 
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1640,8 +1644,8 @@ msgid "Write Access"
 msgstr "Schreiben"
 
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field.access,write_date:"
 msgid "Write Date"
@@ -1692,8 +1696,8 @@ msgid "Parents"
 msgstr "Übergeordnet (Module)"
 
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module,state:"
 msgid "State"
@@ -1748,8 +1752,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.config_wizard.item,sequence:"
 msgid "Sequence"
@@ -1796,8 +1800,8 @@ msgid "Name"
 msgstr "Name"
 
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.dependency,state:"
 msgid "State"
@@ -1840,8 +1844,8 @@ msgid "Message"
 msgstr "Nachricht"
 
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.note,resource:"
 msgid "Resource"
@@ -1876,8 +1880,8 @@ msgid "Note"
 msgstr "Notiz"
 
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.note.read,user:"
 msgid "User"
@@ -1908,8 +1912,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule,rule_group:"
 msgid "Group"
@@ -1972,8 +1976,8 @@ msgid "Write Access"
 msgstr "Schreiben"
 
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2040,8 +2044,8 @@ msgid "Prefix"
 msgstr "Präfix"
 
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2116,8 +2120,8 @@ msgid "Prefix"
 msgstr "Präfix"
 
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2164,8 +2168,8 @@ msgid "Sequence Name"
 msgstr "Name Nummernkreis"
 
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type,write_date:"
 msgid "Write Date"
@@ -2192,8 +2196,8 @@ msgid "Key"
 msgstr "Schlüssel"
 
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session,write_date:"
 msgid "Write Date"
@@ -2220,8 +2224,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session.wizard,write_date:"
 msgid "Write Date"
@@ -2268,8 +2272,8 @@ msgid "Overriding Module"
 msgstr "Überschreibendes Modul"
 
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2404,8 +2408,8 @@ msgid "On Write"
 msgstr "Beim Schreiben"
 
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger,write_date:"
 msgid "Write Date"
@@ -2428,8 +2432,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2476,8 +2480,8 @@ msgid "SVG Path"
 msgstr "Pfad"
 
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.icon,sequence:"
 msgid "Sequence"
@@ -2544,8 +2548,8 @@ msgid "Parent Menu"
 msgstr "Übergeordnet (Menü)"
 
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu,sequence:"
 msgid "Sequence"
@@ -2576,8 +2580,8 @@ msgid "Menu"
 msgstr "Menü"
 
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu.favorite,sequence:"
 msgid "Sequence"
@@ -2644,8 +2648,8 @@ msgid "Priority"
 msgstr "Priorität"
 
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -2688,8 +2692,8 @@ msgid "Name"
 msgstr "Name"
 
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_search,user:"
 msgid "User"
@@ -2732,8 +2736,8 @@ msgid "Expanded Nodes"
 msgstr "Expandierte Knoten"
 
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -2772,8 +2776,8 @@ msgid "Model"
 msgstr "Modell"
 
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_width,user:"
 msgid "User"
@@ -2819,6 +2823,10 @@ msgstr ""
 "Leer lassen für dasselbe Format wie in 'Erweiterung Vorlage', siehe unoconv-"
 "Dokumentation für kompatible Formate"
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr ""
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr "Wizard in separatem Fenster ausführen"
diff --git a/trytond/ir/locale/es.po b/trytond/ir/locale/es.po
index 2b9b23d..c29ff22 100644
--- a/trytond/ir/locale/es.po
+++ b/trytond/ir/locale/es.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -381,8 +381,8 @@ msgid "Name"
 msgstr "Nombre"
 
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -489,8 +489,8 @@ msgid "PySON Search Criteria"
 msgstr "Criterio de búsqueda PySON"
 
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -553,8 +553,8 @@ msgid "Name"
 msgstr "Nombre"
 
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.action.act_window.domain,sequence:"
 msgid "Sequence"
@@ -589,8 +589,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.action.act_window.view,sequence:"
 msgid "Sequence"
@@ -637,8 +637,8 @@ msgid "Model"
 msgstr "Modelo"
 
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.action.keyword,write_date:"
 msgid "Write Date"
@@ -713,8 +713,8 @@ msgid "PySON Email"
 msgstr "Email PySON"
 
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -736,6 +736,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr "Nombre interno"
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr "Único"
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr "Tipo documento"
@@ -793,8 +797,8 @@ msgid "Name"
 msgstr "Nombre"
 
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.action.url,type:"
 msgid "Type"
@@ -861,8 +865,8 @@ msgid "Name"
 msgstr "Nombre"
 
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.action.wizard,type:"
 msgid "Type"
@@ -933,8 +937,8 @@ msgid "Name"
 msgstr "Nombre"
 
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -973,8 +977,8 @@ msgid "Name"
 msgstr "Nombre"
 
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -1005,8 +1009,8 @@ msgid "language"
 msgstr "idioma"
 
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.configuration,write_date:"
 msgid "Write Date"
@@ -1065,8 +1069,8 @@ msgid "Number of Calls"
 msgstr "Número de llamadas"
 
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1113,8 +1117,8 @@ msgid "Name"
 msgstr "Nombre"
 
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1149,8 +1153,8 @@ msgid "Name"
 msgstr "Nombre"
 
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.export.line,write_date:"
 msgid "Write Date"
@@ -1201,8 +1205,8 @@ msgid "Name"
 msgstr "Nombre"
 
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.lang,thousands_sep:"
 msgid "Thousands Separator"
@@ -1257,8 +1261,8 @@ msgid "Model Description"
 msgstr "Descripción modelo"
 
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.model,write_date:"
 msgid "Write Date"
@@ -1309,8 +1313,8 @@ msgid "Write Access"
 msgstr "Permiso para modificar"
 
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.model.access,write_date:"
 msgid "Write Date"
@@ -1349,8 +1353,8 @@ msgid "Name"
 msgstr "Nombre"
 
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1393,8 +1397,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.model.button-button.reset,write_date:"
 msgid "Write Date"
@@ -1425,8 +1429,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.model.button.click,record_id:"
 msgid "Record ID"
@@ -1469,8 +1473,8 @@ msgid "Number of User"
 msgstr "Número de usuarios"
 
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.model.button.rule,write_date:"
 msgid "Write Date"
@@ -1521,8 +1525,8 @@ msgid "Out of Sync"
 msgstr "Sin sincronizar"
 
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.model.data,values:"
 msgid "Values"
@@ -1573,8 +1577,8 @@ msgid "Name"
 msgstr "Nombre"
 
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1633,8 +1637,8 @@ msgid "Write Access"
 msgstr "Permiso para modificar"
 
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.model.field.access,write_date:"
 msgid "Write Date"
@@ -1685,8 +1689,8 @@ msgid "Parents"
 msgstr "Padres"
 
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.module,state:"
 msgid "State"
@@ -1741,8 +1745,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.module.config_wizard.item,sequence:"
 msgid "Sequence"
@@ -1789,8 +1793,8 @@ msgid "Name"
 msgstr "Nombre"
 
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.module.dependency,state:"
 msgid "State"
@@ -1833,8 +1837,8 @@ msgid "Message"
 msgstr "Mensaje"
 
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.note,resource:"
 msgid "Resource"
@@ -1869,8 +1873,8 @@ msgid "Note"
 msgstr "Nota"
 
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.note.read,user:"
 msgid "User"
@@ -1901,8 +1905,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.rule,rule_group:"
 msgid "Group"
@@ -1965,8 +1969,8 @@ msgid "Write Access"
 msgstr "Permiso para modificar"
 
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2033,8 +2037,8 @@ msgid "Prefix"
 msgstr "Prefijo"
 
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2109,8 +2113,8 @@ msgid "Prefix"
 msgstr "Prefijo"
 
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2157,8 +2161,8 @@ msgid "Sequence Name"
 msgstr "Nombre de la secuencia"
 
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.sequence.type,write_date:"
 msgid "Write Date"
@@ -2185,8 +2189,8 @@ msgid "Key"
 msgstr "Clave"
 
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.session,write_date:"
 msgid "Write Date"
@@ -2213,8 +2217,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.session.wizard,write_date:"
 msgid "Write Date"
@@ -2261,8 +2265,8 @@ msgid "Overriding Module"
 msgstr "Módulo principal"
 
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2397,8 +2401,8 @@ msgid "On Write"
 msgstr "Al modificar"
 
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.trigger,write_date:"
 msgid "Write Date"
@@ -2421,8 +2425,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2469,8 +2473,8 @@ msgid "SVG Path"
 msgstr "Ruta SVG"
 
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.ui.icon,sequence:"
 msgid "Sequence"
@@ -2537,8 +2541,8 @@ msgid "Parent Menu"
 msgstr "Menú padre"
 
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.ui.menu,sequence:"
 msgid "Sequence"
@@ -2569,8 +2573,8 @@ msgid "Menu"
 msgstr "Menú"
 
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.ui.menu.favorite,sequence:"
 msgid "Sequence"
@@ -2637,8 +2641,8 @@ msgid "Priority"
 msgstr "Prioridad"
 
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -2681,8 +2685,8 @@ msgid "Name"
 msgstr "Nombre"
 
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.ui.view_search,user:"
 msgid "User"
@@ -2725,8 +2729,8 @@ msgid "Expanded Nodes"
 msgstr "Expandir nodos"
 
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -2765,8 +2769,8 @@ msgid "Model"
 msgstr "Modelo"
 
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.ui.view_tree_width,user:"
 msgid "User"
@@ -2812,6 +2816,10 @@ msgstr ""
 "Dejarlo vacío para el mismo tipo que la plantilla. Consultar la "
 "documentación unoconv para conocer formatos compatibles."
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr "Marcar si la plantilla funciona solo para un registro."
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr "Ejecuta el asistente en una nueva ventana."
@@ -3992,7 +4000,7 @@ msgstr "¿Sincronizar las traducciones?"
 
 msgctxt "view:ir.translation.set.succeed:"
 msgid "Set Succeed!"
-msgstr "Las traducciones se han realizado correctamente."
+msgstr "Las traducciones se han definido correctamente."
 
 msgctxt "view:ir.ui.view:"
 msgid "Show"
diff --git a/trytond/ir/locale/es_419.po b/trytond/ir/locale/es_419.po
index ca3522a..5b1f010 100644
--- a/trytond/ir/locale/es_419.po
+++ b/trytond/ir/locale/es_419.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -344,7 +344,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.action,type:"
@@ -455,7 +455,7 @@ msgid "PySON Search Criteria"
 msgstr ""
 
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -522,7 +522,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -560,7 +560,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -612,7 +612,7 @@ msgid "Model"
 msgstr "Models"
 
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.action.keyword,write_date:"
@@ -692,7 +692,7 @@ msgid "PySON Email"
 msgstr ""
 
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.action.report,report:"
@@ -715,6 +715,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr ""
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr ""
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr ""
@@ -774,7 +778,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.action.url,type:"
@@ -845,7 +849,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.action.wizard,type:"
@@ -918,7 +922,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.attachment,resource:"
@@ -958,7 +962,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.cache,timestamp:"
@@ -991,7 +995,7 @@ msgid "language"
 msgstr "Languages"
 
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.configuration,write_date:"
@@ -1052,7 +1056,7 @@ msgid "Number of Calls"
 msgstr ""
 
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.cron,repeat_missed:"
@@ -1101,7 +1105,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.export,resource:"
@@ -1138,7 +1142,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.export.line,write_date:"
@@ -1191,7 +1195,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.lang,thousands_sep:"
@@ -1249,7 +1253,7 @@ msgid "Model Description"
 msgstr ""
 
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model,write_date:"
@@ -1302,7 +1306,7 @@ msgid "Write Access"
 msgstr ""
 
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.access,write_date:"
@@ -1343,7 +1347,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.button,reset:"
@@ -1388,7 +1392,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.button-button.reset,write_date:"
@@ -1421,7 +1425,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.button.click,record_id:"
@@ -1466,7 +1470,7 @@ msgid "Number of User"
 msgstr ""
 
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.button.rule,write_date:"
@@ -1521,7 +1525,7 @@ msgid "Out of Sync"
 msgstr "Out of Sync"
 
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.data,values:"
@@ -1575,7 +1579,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.field,relation:"
@@ -1636,7 +1640,7 @@ msgid "Write Access"
 msgstr ""
 
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.field.access,write_date:"
@@ -1688,7 +1692,7 @@ msgid "Parents"
 msgstr ""
 
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.module,state:"
@@ -1745,7 +1749,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -1795,7 +1799,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.module.dependency,state:"
@@ -1839,7 +1843,7 @@ msgid "Message"
 msgstr ""
 
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.note,resource:"
@@ -1876,7 +1880,7 @@ msgid "Note"
 msgstr "Notes"
 
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.note.read,user:"
@@ -1908,7 +1912,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.rule,rule_group:"
@@ -1973,7 +1977,7 @@ msgid "Write Access"
 msgstr ""
 
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.rule.group,rules:"
@@ -2043,7 +2047,7 @@ msgid "Prefix"
 msgstr ""
 
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.sequence,suffix:"
@@ -2121,7 +2125,7 @@ msgid "Prefix"
 msgstr ""
 
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.sequence.strict,suffix:"
@@ -2171,7 +2175,7 @@ msgid "Sequence Name"
 msgstr "Sequence Types"
 
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.sequence.type,write_date:"
@@ -2199,7 +2203,7 @@ msgid "Key"
 msgstr ""
 
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.session,write_date:"
@@ -2228,7 +2232,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.session.wizard,write_date:"
@@ -2279,7 +2283,7 @@ msgid "Overriding Module"
 msgstr ""
 
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.translation,res_id:"
@@ -2419,7 +2423,7 @@ msgid "On Write"
 msgstr ""
 
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.trigger,write_date:"
@@ -2443,7 +2447,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.trigger.log,record_id:"
@@ -2494,7 +2498,7 @@ msgid "SVG Path"
 msgstr ""
 
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -2566,7 +2570,7 @@ msgid "Parent Menu"
 msgstr ""
 
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -2600,7 +2604,7 @@ msgid "Menu"
 msgstr "Menu"
 
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -2672,7 +2676,7 @@ msgid "Priority"
 msgstr ""
 
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.ui.view,type:"
@@ -2717,7 +2721,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.ui.view_search,user:"
@@ -2762,7 +2766,7 @@ msgid "Expanded Nodes"
 msgstr ""
 
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
@@ -2804,7 +2808,7 @@ msgid "Model"
 msgstr "Models"
 
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.ui.view_tree_width,user:"
@@ -2847,6 +2851,10 @@ msgid ""
 "compatible format"
 msgstr ""
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr ""
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr ""
diff --git a/trytond/ir/locale/fr.po b/trytond/ir/locale/fr.po
index 99f6ee5..278ae32 100644
--- a/trytond/ir/locale/fr.po
+++ b/trytond/ir/locale/fr.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -393,8 +393,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -501,8 +501,8 @@ msgid "PySON Search Criteria"
 msgstr "Critère de recherche PySON"
 
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -565,8 +565,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.action.act_window.domain,sequence:"
 msgid "Sequence"
@@ -601,8 +601,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.action.act_window.view,sequence:"
 msgid "Sequence"
@@ -649,8 +649,8 @@ msgid "Model"
 msgstr "Modèle"
 
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.action.keyword,write_date:"
 msgid "Write Date"
@@ -725,8 +725,8 @@ msgid "PySON Email"
 msgstr "Email PySON"
 
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -748,6 +748,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr "Nom interne"
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr "Unique"
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr "Extension du modèle"
@@ -805,8 +809,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.action.url,type:"
 msgid "Type"
@@ -873,8 +877,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.action.wizard,type:"
 msgid "Type"
@@ -945,8 +949,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -985,8 +989,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -1017,8 +1021,8 @@ msgid "language"
 msgstr "Langue"
 
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.configuration,write_date:"
 msgid "Write Date"
@@ -1077,8 +1081,8 @@ msgid "Number of Calls"
 msgstr "Nombre d'appels"
 
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1125,8 +1129,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1161,8 +1165,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.export.line,write_date:"
 msgid "Write Date"
@@ -1213,8 +1217,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.lang,thousands_sep:"
 msgid "Thousands Separator"
@@ -1269,8 +1273,8 @@ msgid "Model Description"
 msgstr "Description du modèle"
 
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.model,write_date:"
 msgid "Write Date"
@@ -1321,8 +1325,8 @@ msgid "Write Access"
 msgstr "Accès en écriture"
 
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.model.access,write_date:"
 msgid "Write Date"
@@ -1361,8 +1365,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1405,8 +1409,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.model.button-button.reset,write_date:"
 msgid "Write Date"
@@ -1437,8 +1441,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.model.button.click,record_id:"
 msgid "Record ID"
@@ -1481,8 +1485,8 @@ msgid "Number of User"
 msgstr "Nombre d'utilisateur"
 
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.model.button.rule,write_date:"
 msgid "Write Date"
@@ -1533,8 +1537,8 @@ msgid "Out of Sync"
 msgstr "Désynchronisé"
 
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.model.data,values:"
 msgid "Values"
@@ -1585,8 +1589,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1645,8 +1649,8 @@ msgid "Write Access"
 msgstr "Accès en écriture"
 
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.model.field.access,write_date:"
 msgid "Write Date"
@@ -1697,8 +1701,8 @@ msgid "Parents"
 msgstr "Parents"
 
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.module,state:"
 msgid "State"
@@ -1753,8 +1757,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.module.config_wizard.item,sequence:"
 msgid "Sequence"
@@ -1801,8 +1805,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.module.dependency,state:"
 msgid "State"
@@ -1845,8 +1849,8 @@ msgid "Message"
 msgstr "Message"
 
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.note,resource:"
 msgid "Resource"
@@ -1881,8 +1885,8 @@ msgid "Note"
 msgstr "Note"
 
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.note.read,user:"
 msgid "User"
@@ -1913,8 +1917,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.rule,rule_group:"
 msgid "Group"
@@ -1977,8 +1981,8 @@ msgid "Write Access"
 msgstr "Accès en écriture"
 
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2045,8 +2049,8 @@ msgid "Prefix"
 msgstr "Préfixe"
 
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2121,8 +2125,8 @@ msgid "Prefix"
 msgstr "Préfixe"
 
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2169,8 +2173,8 @@ msgid "Sequence Name"
 msgstr "Nom de séquence"
 
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.sequence.type,write_date:"
 msgid "Write Date"
@@ -2197,8 +2201,8 @@ msgid "Key"
 msgstr "Clé"
 
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.session,write_date:"
 msgid "Write Date"
@@ -2225,8 +2229,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.session.wizard,write_date:"
 msgid "Write Date"
@@ -2273,8 +2277,8 @@ msgid "Overriding Module"
 msgstr "Module surchargeant"
 
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2409,8 +2413,8 @@ msgid "On Write"
 msgstr "À l'écriture"
 
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.trigger,write_date:"
 msgid "Write Date"
@@ -2433,8 +2437,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2481,8 +2485,8 @@ msgid "SVG Path"
 msgstr "Chemin vers le fichier SVG"
 
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.ui.icon,sequence:"
 msgid "Sequence"
@@ -2549,8 +2553,8 @@ msgid "Parent Menu"
 msgstr "Menu parent"
 
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.ui.menu,sequence:"
 msgid "Sequence"
@@ -2581,8 +2585,8 @@ msgid "Menu"
 msgstr "Menu"
 
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.ui.menu.favorite,sequence:"
 msgid "Sequence"
@@ -2649,8 +2653,8 @@ msgid "Priority"
 msgstr "Priorité"
 
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -2693,8 +2697,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.ui.view_search,user:"
 msgid "User"
@@ -2737,8 +2741,8 @@ msgid "Expanded Nodes"
 msgstr "Nœuds développés"
 
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -2777,8 +2781,8 @@ msgid "Model"
 msgstr "Modèle"
 
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.ui.view_tree_width,user:"
 msgid "User"
@@ -2824,6 +2828,11 @@ 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,single:"
+msgid "Check if the template works only for one record."
+msgstr ""
+"Cocher si le modèle fonctionne uniquement avec un seul enregistrement."
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr "Lancer l'assistant dans un nouvel onglet"
diff --git a/trytond/ir/locale/hu_HU.po b/trytond/ir/locale/hu_HU.po
index 2f22ee5..e9bf0a6 100644
--- a/trytond/ir/locale/hu_HU.po
+++ b/trytond/ir/locale/hu_HU.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -380,8 +380,8 @@ msgid "Name"
 msgstr "Név"
 
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -488,8 +488,8 @@ msgid "PySON Search Criteria"
 msgstr "PySON Keresési feltételek"
 
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -552,8 +552,8 @@ msgid "Name"
 msgstr "Név"
 
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.domain,sequence:"
 msgid "Sequence"
@@ -588,8 +588,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.view,sequence:"
 msgid "Sequence"
@@ -636,8 +636,8 @@ msgid "Model"
 msgstr "Minta"
 
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.keyword,write_date:"
 msgid "Write Date"
@@ -712,8 +712,8 @@ msgid "PySON Email"
 msgstr "PySON E-Mail"
 
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -735,6 +735,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr "Belső név"
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr ""
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr "Bővített javaslat"
@@ -792,8 +796,8 @@ msgid "Name"
 msgstr "Név"
 
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.url,type:"
 msgid "Type"
@@ -860,8 +864,8 @@ msgid "Name"
 msgstr "Név"
 
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.wizard,type:"
 msgid "Type"
@@ -932,8 +936,8 @@ msgid "Name"
 msgstr "Név"
 
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -972,8 +976,8 @@ msgid "Name"
 msgstr "Név"
 
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -1004,8 +1008,8 @@ msgid "language"
 msgstr "nyelv"
 
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.configuration,write_date:"
 msgid "Write Date"
@@ -1064,8 +1068,8 @@ msgid "Number of Calls"
 msgstr "Hívások száma"
 
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1112,8 +1116,8 @@ msgid "Name"
 msgstr "Név"
 
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1148,8 +1152,8 @@ msgid "Name"
 msgstr "Név"
 
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export.line,write_date:"
 msgid "Write Date"
@@ -1200,8 +1204,8 @@ msgid "Name"
 msgstr "Név"
 
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.lang,thousands_sep:"
 msgid "Thousands Separator"
@@ -1256,8 +1260,8 @@ msgid "Model Description"
 msgstr "Minta leírás"
 
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model,write_date:"
 msgid "Write Date"
@@ -1308,8 +1312,8 @@ msgid "Write Access"
 msgstr "Írási hozzáférés"
 
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.access,write_date:"
 msgid "Write Date"
@@ -1348,8 +1352,8 @@ msgid "Name"
 msgstr "Név"
 
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1396,10 +1400,9 @@ msgctxt "field:ir.model.button-button.reset,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button-button.reset,write_date:"
@@ -1436,10 +1439,9 @@ msgctxt "field:ir.model.button.click,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button.click,record_id:"
@@ -1490,10 +1492,9 @@ msgctxt "field:ir.model.button.rule,number_user:"
 msgid "Number of User"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button.rule,write_date:"
@@ -1546,8 +1547,8 @@ msgid "Out of Sync"
 msgstr "Nem szinkronizált"
 
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.data,values:"
 msgid "Values"
@@ -1598,8 +1599,8 @@ msgid "Name"
 msgstr "Név"
 
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1658,8 +1659,8 @@ msgid "Write Access"
 msgstr "Írási hozzáférés:"
 
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field.access,write_date:"
 msgid "Write Date"
@@ -1710,8 +1711,8 @@ msgid "Parents"
 msgstr "Fölérendelt (modul)"
 
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module,state:"
 msgid "State"
@@ -1769,8 +1770,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.config_wizard.item,sequence:"
 msgid "Sequence"
@@ -1817,8 +1818,8 @@ msgid "Name"
 msgstr "Név"
 
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.dependency,state:"
 msgid "State"
@@ -1865,10 +1866,9 @@ msgctxt "field:ir.note,message_wrapped:"
 msgid "Message"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.note,resource:"
@@ -1908,10 +1908,9 @@ msgctxt "field:ir.note.read,note:"
 msgid "Note"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.note.read,user:"
@@ -1945,8 +1944,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule,rule_group:"
 msgid "Group"
@@ -2009,8 +2008,8 @@ msgid "Write Access"
 msgstr "Írás hozzáférés"
 
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2077,8 +2076,8 @@ msgid "Prefix"
 msgstr "Előtag"
 
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2153,8 +2152,8 @@ msgid "Prefix"
 msgstr "Előtag"
 
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2201,8 +2200,8 @@ msgid "Sequence Name"
 msgstr "Számkör neve"
 
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type,write_date:"
 msgid "Write Date"
@@ -2229,8 +2228,8 @@ msgid "Key"
 msgstr "Kulcs"
 
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session,write_date:"
 msgid "Write Date"
@@ -2257,8 +2256,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session.wizard,write_date:"
 msgid "Write Date"
@@ -2305,8 +2304,8 @@ msgid "Overriding Module"
 msgstr "Átírandó modul"
 
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2441,8 +2440,8 @@ msgid "On Write"
 msgstr "Írásnál"
 
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger,write_date:"
 msgid "Write Date"
@@ -2465,8 +2464,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2513,8 +2512,8 @@ msgid "SVG Path"
 msgstr "SVG útvonal"
 
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.icon,sequence:"
 msgid "Sequence"
@@ -2581,8 +2580,8 @@ msgid "Parent Menu"
 msgstr "Felülrendelt (Menü)"
 
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu,sequence:"
 msgid "Sequence"
@@ -2613,8 +2612,8 @@ msgid "Menu"
 msgstr "Menü"
 
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu.favorite,sequence:"
 msgid "Sequence"
@@ -2681,8 +2680,8 @@ msgid "Priority"
 msgstr "Prioritás"
 
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -2725,8 +2724,8 @@ msgid "Name"
 msgstr "Név"
 
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_search,user:"
 msgid "User"
@@ -2769,8 +2768,8 @@ msgid "Expanded Nodes"
 msgstr "Bővített konto"
 
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -2809,8 +2808,8 @@ msgid "Model"
 msgstr "Minta"
 
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_width,user:"
 msgid "User"
@@ -2856,6 +2855,10 @@ msgstr ""
 "Üresen hagyni ugyan ahhoz a formátumhoz, mint a 'bővített javaslat', lásd "
 "unoconv-dokumentáció kompatibilis formátumokhoz."
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr ""
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr "Wizard kivitelezés külön ablakokon"
diff --git a/trytond/ir/locale/it_IT.po b/trytond/ir/locale/it_IT.po
index d346b54..00be184 100644
--- a/trytond/ir/locale/it_IT.po
+++ b/trytond/ir/locale/it_IT.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -390,8 +390,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -498,8 +498,8 @@ msgid "PySON Search Criteria"
 msgstr "Criterio di ricerca PySON"
 
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -562,8 +562,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.domain,sequence:"
 msgid "Sequence"
@@ -598,8 +598,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.view,sequence:"
 msgid "Sequence"
@@ -646,8 +646,8 @@ msgid "Model"
 msgstr "Modello"
 
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.keyword,write_date:"
 msgid "Write Date"
@@ -722,8 +722,8 @@ msgid "PySON Email"
 msgstr "Email PySON"
 
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -745,6 +745,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr "Nome Interno"
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr ""
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr "Estensione del template"
@@ -802,8 +806,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.url,type:"
 msgid "Type"
@@ -870,8 +874,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.wizard,type:"
 msgid "Type"
@@ -942,8 +946,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -982,8 +986,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -1014,8 +1018,8 @@ msgid "language"
 msgstr "lingua"
 
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.configuration,write_date:"
 msgid "Write Date"
@@ -1074,8 +1078,8 @@ msgid "Number of Calls"
 msgstr "Numero di call"
 
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1122,8 +1126,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1158,8 +1162,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export.line,write_date:"
 msgid "Write Date"
@@ -1210,8 +1214,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.lang,thousands_sep:"
 msgid "Thousands Separator"
@@ -1266,8 +1270,8 @@ msgid "Model Description"
 msgstr "Descrizione Modello"
 
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model,write_date:"
 msgid "Write Date"
@@ -1318,8 +1322,8 @@ msgid "Write Access"
 msgstr "Accesso scrittura"
 
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.access,write_date:"
 msgid "Write Date"
@@ -1358,8 +1362,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1402,8 +1406,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button-button.reset,write_date:"
 msgid "Write Date"
@@ -1434,8 +1438,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button.click,record_id:"
 msgid "Record ID"
@@ -1478,8 +1482,8 @@ msgid "Number of User"
 msgstr "numero utente"
 
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button.rule,write_date:"
 msgid "Write Date"
@@ -1530,8 +1534,8 @@ msgid "Out of Sync"
 msgstr "Out of Sync"
 
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.data,values:"
 msgid "Values"
@@ -1582,8 +1586,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1642,8 +1646,8 @@ msgid "Write Access"
 msgstr "Accesso scrittura"
 
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field.access,write_date:"
 msgid "Write Date"
@@ -1694,8 +1698,8 @@ msgid "Parents"
 msgstr "Padri"
 
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module,state:"
 msgid "State"
@@ -1750,8 +1754,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.config_wizard.item,sequence:"
 msgid "Sequence"
@@ -1798,8 +1802,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.dependency,state:"
 msgid "State"
@@ -1842,8 +1846,8 @@ msgid "Message"
 msgstr "Messaggio"
 
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.note,resource:"
 msgid "Resource"
@@ -1878,8 +1882,8 @@ msgid "Note"
 msgstr "Nota"
 
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.note.read,user:"
 msgid "User"
@@ -1910,8 +1914,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule,rule_group:"
 msgid "Group"
@@ -1974,8 +1978,8 @@ msgid "Write Access"
 msgstr "Accesso scrittura"
 
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2042,8 +2046,8 @@ msgid "Prefix"
 msgstr "Prefisso"
 
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2118,8 +2122,8 @@ msgid "Prefix"
 msgstr "Prefisso"
 
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2166,8 +2170,8 @@ msgid "Sequence Name"
 msgstr "Nome Sequenza"
 
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type,write_date:"
 msgid "Write Date"
@@ -2194,8 +2198,8 @@ msgid "Key"
 msgstr "Chiave"
 
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session,write_date:"
 msgid "Write Date"
@@ -2222,8 +2226,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session.wizard,write_date:"
 msgid "Write Date"
@@ -2270,8 +2274,8 @@ msgid "Overriding Module"
 msgstr "Modulo non tenuto in conto"
 
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2406,8 +2410,8 @@ msgid "On Write"
 msgstr "Alla scrttura"
 
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger,write_date:"
 msgid "Write Date"
@@ -2430,8 +2434,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2478,8 +2482,8 @@ msgid "SVG Path"
 msgstr "Percorso SVG"
 
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.icon,sequence:"
 msgid "Sequence"
@@ -2546,8 +2550,8 @@ msgid "Parent Menu"
 msgstr "Menu Padre"
 
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu,sequence:"
 msgid "Sequence"
@@ -2578,8 +2582,8 @@ msgid "Menu"
 msgstr "Menu"
 
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu.favorite,sequence:"
 msgid "Sequence"
@@ -2646,8 +2650,8 @@ msgid "Priority"
 msgstr "Priorità"
 
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -2690,8 +2694,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_search,user:"
 msgid "User"
@@ -2734,8 +2738,8 @@ msgid "Expanded Nodes"
 msgstr "Nodi Espansi"
 
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -2774,8 +2778,8 @@ msgid "Model"
 msgstr "Modello"
 
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_width,user:"
 msgid "User"
@@ -2819,6 +2823,10 @@ msgstr ""
 "Lasciare vuoto per lo stesso come modello, vedere la documentazione unovonv "
 "per il formato compatibile"
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr ""
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr "Esegui il wizard in nuova finestra"
diff --git a/trytond/ir/locale/ja_JP.po b/trytond/ir/locale/ja_JP.po
index 4093430..6cde76d 100644
--- a/trytond/ir/locale/ja_JP.po
+++ b/trytond/ir/locale/ja_JP.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -362,7 +362,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.action,type:"
@@ -473,7 +473,7 @@ msgid "PySON Search Criteria"
 msgstr ""
 
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -540,7 +540,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -578,7 +578,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -630,7 +630,7 @@ msgid "Model"
 msgstr "Models"
 
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.action.keyword,write_date:"
@@ -710,7 +710,7 @@ msgid "PySON Email"
 msgstr ""
 
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.action.report,report:"
@@ -733,6 +733,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr ""
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr ""
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr ""
@@ -792,7 +796,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.action.url,type:"
@@ -863,7 +867,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.action.wizard,type:"
@@ -936,7 +940,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.attachment,resource:"
@@ -976,7 +980,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.cache,timestamp:"
@@ -1009,7 +1013,7 @@ msgid "language"
 msgstr "Languages"
 
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.configuration,write_date:"
@@ -1070,7 +1074,7 @@ msgid "Number of Calls"
 msgstr ""
 
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.cron,repeat_missed:"
@@ -1119,7 +1123,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.export,resource:"
@@ -1156,7 +1160,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.export.line,write_date:"
@@ -1209,7 +1213,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.lang,thousands_sep:"
@@ -1267,7 +1271,7 @@ msgid "Model Description"
 msgstr ""
 
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model,write_date:"
@@ -1320,7 +1324,7 @@ msgid "Write Access"
 msgstr ""
 
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.access,write_date:"
@@ -1361,7 +1365,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.button,reset:"
@@ -1406,7 +1410,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.button-button.reset,write_date:"
@@ -1439,7 +1443,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.button.click,record_id:"
@@ -1484,7 +1488,7 @@ msgid "Number of User"
 msgstr ""
 
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.button.rule,write_date:"
@@ -1539,7 +1543,7 @@ msgid "Out of Sync"
 msgstr "Out of Sync"
 
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.data,values:"
@@ -1593,7 +1597,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.field,relation:"
@@ -1654,7 +1658,7 @@ msgid "Write Access"
 msgstr ""
 
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.field.access,write_date:"
@@ -1706,7 +1710,7 @@ msgid "Parents"
 msgstr ""
 
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.module,state:"
@@ -1763,7 +1767,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -1813,7 +1817,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.module.dependency,state:"
@@ -1857,7 +1861,7 @@ msgid "Message"
 msgstr ""
 
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.note,resource:"
@@ -1894,7 +1898,7 @@ msgid "Note"
 msgstr "Notes"
 
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.note.read,user:"
@@ -1926,7 +1930,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.rule,rule_group:"
@@ -1991,7 +1995,7 @@ msgid "Write Access"
 msgstr ""
 
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.rule.group,rules:"
@@ -2061,7 +2065,7 @@ msgid "Prefix"
 msgstr ""
 
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.sequence,suffix:"
@@ -2139,7 +2143,7 @@ msgid "Prefix"
 msgstr ""
 
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.sequence.strict,suffix:"
@@ -2189,7 +2193,7 @@ msgid "Sequence Name"
 msgstr "Sequence Types"
 
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.sequence.type,write_date:"
@@ -2217,7 +2221,7 @@ msgid "Key"
 msgstr ""
 
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.session,write_date:"
@@ -2246,7 +2250,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.session.wizard,write_date:"
@@ -2297,7 +2301,7 @@ msgid "Overriding Module"
 msgstr ""
 
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.translation,res_id:"
@@ -2437,7 +2441,7 @@ msgid "On Write"
 msgstr ""
 
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.trigger,write_date:"
@@ -2461,7 +2465,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.trigger.log,record_id:"
@@ -2512,7 +2516,7 @@ msgid "SVG Path"
 msgstr ""
 
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -2584,7 +2588,7 @@ msgid "Parent Menu"
 msgstr ""
 
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -2618,7 +2622,7 @@ msgid "Menu"
 msgstr "Menu"
 
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -2690,7 +2694,7 @@ msgid "Priority"
 msgstr ""
 
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.ui.view,type:"
@@ -2735,7 +2739,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.ui.view_search,user:"
@@ -2780,7 +2784,7 @@ msgid "Expanded Nodes"
 msgstr ""
 
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
@@ -2822,7 +2826,7 @@ msgid "Model"
 msgstr "Models"
 
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.ui.view_tree_width,user:"
@@ -2865,6 +2869,10 @@ msgid ""
 "compatible format"
 msgstr ""
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr ""
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr ""
diff --git a/trytond/ir/locale/lo.po b/trytond/ir/locale/lo.po
index cc5b8c8..df31273 100644
--- a/trytond/ir/locale/lo.po
+++ b/trytond/ir/locale/lo.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -350,10 +350,9 @@ msgctxt "field:ir.action,name:"
 msgid "Name"
 msgstr "ຊື່"
 
-#, fuzzy
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -471,10 +470,9 @@ msgctxt "field:ir.action.act_window,pyson_search_value:"
 msgid "PySON Search Criteria"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -546,10 +544,9 @@ msgctxt "field:ir.action.act_window.domain,name:"
 msgid "Name"
 msgstr "ຊື່"
 
-#, fuzzy
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.action.act_window.domain,sequence:"
@@ -591,10 +588,9 @@ msgctxt "field:ir.action.act_window.view,id:"
 msgid "ID"
 msgstr "ເລດລຳດັບ"
 
-#, fuzzy
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.action.act_window.view,sequence:"
@@ -650,10 +646,9 @@ msgctxt "field:ir.action.keyword,model:"
 msgid "Model"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.action.keyword,write_date:"
@@ -738,10 +733,9 @@ msgctxt "field:ir.action.report,pyson_email:"
 msgid "PySON Email"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -763,6 +757,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr ""
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr ""
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr ""
@@ -831,10 +829,9 @@ msgctxt "field:ir.action.url,name:"
 msgid "Name"
 msgstr "ຊື່"
 
-#, fuzzy
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.action.url,type:"
@@ -912,10 +909,9 @@ msgctxt "field:ir.action.wizard,name:"
 msgid "Name"
 msgstr "ຊື່"
 
-#, fuzzy
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.action.wizard,type:"
@@ -994,10 +990,9 @@ msgctxt "field:ir.attachment,name:"
 msgid "Name"
 msgstr "ຊື່"
 
-#, fuzzy
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -1042,10 +1037,9 @@ msgctxt "field:ir.cache,name:"
 msgid "Name"
 msgstr "ຊື່"
 
-#, fuzzy
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -1081,10 +1075,9 @@ msgctxt "field:ir.configuration,language:"
 msgid "language"
 msgstr "ພາສາ"
 
-#, fuzzy
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.configuration,write_date:"
@@ -1149,10 +1142,9 @@ msgctxt "field:ir.cron,number_calls:"
 msgid "Number of Calls"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1206,10 +1198,9 @@ msgctxt "field:ir.export,name:"
 msgid "Name"
 msgstr "ຊື່"
 
-#, fuzzy
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1249,10 +1240,9 @@ msgctxt "field:ir.export.line,name:"
 msgid "Name"
 msgstr "ຊື່"
 
-#, fuzzy
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.export.line,write_date:"
@@ -1313,10 +1303,9 @@ msgctxt "field:ir.lang,name:"
 msgid "Name"
 msgstr "ຊື່"
 
-#, fuzzy
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.lang,thousands_sep:"
@@ -1377,10 +1366,9 @@ msgctxt "field:ir.model,name:"
 msgid "Model Description"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model,write_date:"
@@ -1437,10 +1425,9 @@ msgctxt "field:ir.model.access,perm_write:"
 msgid "Write Access"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.access,write_date:"
@@ -1485,10 +1472,9 @@ msgctxt "field:ir.model.button,name:"
 msgid "Name"
 msgstr "ຊື່"
 
-#, fuzzy
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1537,10 +1523,9 @@ msgctxt "field:ir.model.button-button.reset,id:"
 msgid "ID"
 msgstr "ເລດລຳດັບ"
 
-#, fuzzy
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button-button.reset,write_date:"
@@ -1577,10 +1562,9 @@ msgctxt "field:ir.model.button.click,id:"
 msgid "ID"
 msgstr "ເລດລຳດັບ"
 
-#, fuzzy
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button.click,record_id:"
 msgid "Record ID"
@@ -1629,10 +1613,9 @@ msgctxt "field:ir.model.button.rule,number_user:"
 msgid "Number of User"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button.rule,write_date:"
@@ -1687,10 +1670,9 @@ msgctxt "field:ir.model.data,out_of_sync:"
 msgid "Out of Sync"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.data,values:"
@@ -1748,10 +1730,9 @@ msgctxt "field:ir.model.field,name:"
 msgid "Name"
 msgstr "ຊື່"
 
-#, fuzzy
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1817,10 +1798,9 @@ msgctxt "field:ir.model.field.access,perm_write:"
 msgid "Write Access"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.field.access,write_date:"
@@ -1878,10 +1858,9 @@ msgctxt "field:ir.module,parents:"
 msgid "Parents"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.module,state:"
@@ -1946,10 +1925,9 @@ msgctxt "field:ir.module.config_wizard.item,id:"
 msgid "ID"
 msgstr "ເລດລຳດັບ"
 
-#, fuzzy
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.module.config_wizard.item,sequence:"
@@ -2005,10 +1983,9 @@ msgctxt "field:ir.module.dependency,name:"
 msgid "Name"
 msgstr "ຊື່"
 
-#, fuzzy
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.module.dependency,state:"
@@ -2056,10 +2033,9 @@ msgctxt "field:ir.note,message_wrapped:"
 msgid "Message"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.note,resource:"
 msgid "Resource"
@@ -2099,10 +2075,9 @@ msgctxt "field:ir.note.read,note:"
 msgid "Note"
 msgstr "ໝາຍເຫດ"
 
-#, fuzzy
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.note.read,user:"
@@ -2138,10 +2113,9 @@ msgctxt "field:ir.rule,id:"
 msgid "ID"
 msgstr "ເລດລຳດັບ"
 
-#, fuzzy
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.rule,rule_group:"
@@ -2211,10 +2185,9 @@ msgctxt "field:ir.rule.group,perm_write:"
 msgid "Write Access"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2287,10 +2260,9 @@ msgctxt "field:ir.sequence,prefix:"
 msgid "Prefix"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2371,10 +2343,9 @@ msgctxt "field:ir.sequence.strict,prefix:"
 msgid "Prefix"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2426,10 +2397,9 @@ msgctxt "field:ir.sequence.type,name:"
 msgid "Sequence Name"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.sequence.type,write_date:"
@@ -2460,10 +2430,9 @@ msgctxt "field:ir.session,key:"
 msgid "Key"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.session,write_date:"
@@ -2495,10 +2464,9 @@ msgctxt "field:ir.session.wizard,id:"
 msgid "ID"
 msgstr "ເລດລຳດັບ"
 
-#, fuzzy
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.session.wizard,write_date:"
@@ -2550,10 +2518,9 @@ msgctxt "field:ir.translation,overriding_module:"
 msgid "Overriding Module"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2704,10 +2671,9 @@ msgctxt "field:ir.trigger,on_write:"
 msgid "On Write"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.trigger,write_date:"
@@ -2734,10 +2700,9 @@ msgctxt "field:ir.trigger.log,id:"
 msgid "ID"
 msgstr "ເລດລຳດັບ"
 
-#, fuzzy
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2790,10 +2755,9 @@ msgctxt "field:ir.ui.icon,path:"
 msgid "SVG Path"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.ui.icon,sequence:"
@@ -2871,10 +2835,9 @@ msgctxt "field:ir.ui.menu,parent:"
 msgid "Parent Menu"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.ui.menu,sequence:"
@@ -2911,10 +2874,9 @@ msgctxt "field:ir.ui.menu.favorite,menu:"
 msgid "Menu"
 msgstr "ລາຍການ"
 
-#, fuzzy
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.ui.menu.favorite,sequence:"
@@ -2989,10 +2951,9 @@ msgctxt "field:ir.ui.view,priority:"
 msgid "Priority"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -3041,10 +3002,9 @@ msgctxt "field:ir.ui.view_search,name:"
 msgid "Name"
 msgstr "ຊື່"
 
-#, fuzzy
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.ui.view_search,user:"
@@ -3092,10 +3052,9 @@ msgctxt "field:ir.ui.view_tree_state,nodes:"
 msgid "Expanded Nodes"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -3140,10 +3099,9 @@ msgctxt "field:ir.ui.view_tree_width,model:"
 msgid "Model"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.ui.view_tree_width,user:"
@@ -3188,6 +3146,10 @@ msgid ""
 "compatible format"
 msgstr ""
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr ""
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr ""
diff --git a/trytond/ir/locale/lt.po b/trytond/ir/locale/lt.po
index 231d454..a84efc6 100644
--- a/trytond/ir/locale/lt.po
+++ b/trytond/ir/locale/lt.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -343,10 +343,9 @@ msgctxt "field:ir.action,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -453,10 +452,9 @@ msgctxt "field:ir.action.act_window,pyson_search_value:"
 msgid "PySON Search Criteria"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -519,10 +517,9 @@ msgctxt "field:ir.action.act_window.domain,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.domain,sequence:"
 msgid "Sequence"
@@ -556,10 +553,9 @@ msgctxt "field:ir.action.act_window.view,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.view,sequence:"
 msgid "Sequence"
@@ -605,10 +601,9 @@ msgctxt "field:ir.action.keyword,model:"
 msgid "Model"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.keyword,write_date:"
 msgid "Write Date"
@@ -683,10 +678,9 @@ msgctxt "field:ir.action.report,pyson_email:"
 msgid "PySON Email"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -708,6 +702,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr ""
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr ""
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr ""
@@ -765,10 +763,9 @@ msgctxt "field:ir.action.url,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.url,type:"
 msgid "Type"
@@ -835,10 +832,9 @@ msgctxt "field:ir.action.wizard,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.wizard,type:"
 msgid "Type"
@@ -909,10 +905,9 @@ msgctxt "field:ir.attachment,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -951,10 +946,9 @@ msgctxt "field:ir.cache,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -984,10 +978,9 @@ msgctxt "field:ir.configuration,language:"
 msgid "language"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.configuration,write_date:"
 msgid "Write Date"
@@ -1046,10 +1039,9 @@ msgctxt "field:ir.cron,number_calls:"
 msgid "Number of Calls"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1096,10 +1088,9 @@ msgctxt "field:ir.export,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1134,10 +1125,9 @@ msgctxt "field:ir.export.line,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export.line,write_date:"
 msgid "Write Date"
@@ -1188,10 +1178,9 @@ msgctxt "field:ir.lang,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.lang,thousands_sep:"
 msgid "Thousands Separator"
@@ -1245,10 +1234,9 @@ msgctxt "field:ir.model,name:"
 msgid "Model Description"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model,write_date:"
 msgid "Write Date"
@@ -1298,10 +1286,9 @@ msgctxt "field:ir.model.access,perm_write:"
 msgid "Write Access"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.access,write_date:"
 msgid "Write Date"
@@ -1340,10 +1327,9 @@ msgctxt "field:ir.model.button,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1385,10 +1371,9 @@ msgctxt "field:ir.model.button-button.reset,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button-button.reset,write_date:"
 msgid "Write Date"
@@ -1418,10 +1403,9 @@ msgctxt "field:ir.model.button.click,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button.click,record_id:"
 msgid "Record ID"
@@ -1463,10 +1447,9 @@ msgctxt "field:ir.model.button.rule,number_user:"
 msgid "Number of User"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button.rule,write_date:"
 msgid "Write Date"
@@ -1516,10 +1499,9 @@ msgctxt "field:ir.model.data,out_of_sync:"
 msgid "Out of Sync"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.data,values:"
 msgid "Values"
@@ -1570,10 +1552,9 @@ msgctxt "field:ir.model.field,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1631,10 +1612,9 @@ msgctxt "field:ir.model.field.access,perm_write:"
 msgid "Write Access"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field.access,write_date:"
 msgid "Write Date"
@@ -1685,10 +1665,9 @@ msgctxt "field:ir.module,parents:"
 msgid "Parents"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module,state:"
 msgid "State"
@@ -1742,10 +1721,9 @@ msgctxt "field:ir.module.config_wizard.item,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.config_wizard.item,sequence:"
 msgid "Sequence"
@@ -1792,10 +1770,9 @@ msgctxt "field:ir.module.dependency,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.dependency,state:"
 msgid "State"
@@ -1837,10 +1814,9 @@ msgctxt "field:ir.note,message_wrapped:"
 msgid "Message"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.note,resource:"
 msgid "Resource"
@@ -1874,10 +1850,9 @@ msgctxt "field:ir.note.read,note:"
 msgid "Note"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.note.read,user:"
 msgid "User"
@@ -1907,10 +1882,9 @@ msgctxt "field:ir.rule,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule,rule_group:"
 msgid "Group"
@@ -1973,10 +1947,9 @@ msgctxt "field:ir.rule.group,perm_write:"
 msgid "Write Access"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2042,10 +2015,9 @@ msgctxt "field:ir.sequence,prefix:"
 msgid "Prefix"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2119,10 +2091,9 @@ msgctxt "field:ir.sequence.strict,prefix:"
 msgid "Prefix"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2168,10 +2139,9 @@ msgctxt "field:ir.sequence.type,name:"
 msgid "Sequence Name"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type,write_date:"
 msgid "Write Date"
@@ -2197,10 +2167,9 @@ msgctxt "field:ir.session,key:"
 msgid "Key"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session,write_date:"
 msgid "Write Date"
@@ -2226,10 +2195,9 @@ msgctxt "field:ir.session.wizard,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session.wizard,write_date:"
 msgid "Write Date"
@@ -2275,10 +2243,9 @@ msgctxt "field:ir.translation,overriding_module:"
 msgid "Overriding Module"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2413,10 +2380,9 @@ msgctxt "field:ir.trigger,on_write:"
 msgid "On Write"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger,write_date:"
 msgid "Write Date"
@@ -2438,10 +2404,9 @@ msgctxt "field:ir.trigger.log,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2488,10 +2453,9 @@ msgctxt "field:ir.ui.icon,path:"
 msgid "SVG Path"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.icon,sequence:"
 msgid "Sequence"
@@ -2557,10 +2521,9 @@ msgctxt "field:ir.ui.menu,parent:"
 msgid "Parent Menu"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu,sequence:"
 msgid "Sequence"
@@ -2590,10 +2553,9 @@ msgctxt "field:ir.ui.menu.favorite,menu:"
 msgid "Menu"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu.favorite,sequence:"
 msgid "Sequence"
@@ -2660,10 +2622,9 @@ msgctxt "field:ir.ui.view,priority:"
 msgid "Priority"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -2706,10 +2667,9 @@ msgctxt "field:ir.ui.view_search,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_search,user:"
 msgid "User"
@@ -2751,10 +2711,9 @@ msgctxt "field:ir.ui.view_tree_state,nodes:"
 msgid "Expanded Nodes"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -2792,10 +2751,9 @@ msgctxt "field:ir.ui.view_tree_width,model:"
 msgid "Model"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_width,user:"
 msgid "User"
@@ -2837,6 +2795,10 @@ msgid ""
 "compatible format"
 msgstr ""
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr ""
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr ""
diff --git a/trytond/ir/locale/nl.po b/trytond/ir/locale/nl.po
index deac84f..32a3bdf 100644
--- a/trytond/ir/locale/nl.po
+++ b/trytond/ir/locale/nl.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -359,8 +359,8 @@ msgid "Name"
 msgstr "Naam"
 
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -479,8 +479,8 @@ msgid "PySON Search Criteria"
 msgstr "PySON zoekargument"
 
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -553,10 +553,9 @@ msgctxt "field:ir.action.act_window.domain,name:"
 msgid "Name"
 msgstr "Naam bijlage"
 
-#, fuzzy
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.action.act_window.domain,sequence:"
@@ -598,8 +597,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.view,sequence:"
 msgid "Sequence"
@@ -652,8 +651,8 @@ msgid "Model"
 msgstr "Model"
 
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.action.keyword,write_date:"
@@ -739,8 +738,8 @@ msgid "PySON Email"
 msgstr "PySON domein"
 
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -763,6 +762,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr "Interne naam"
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr ""
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr ""
@@ -832,8 +835,8 @@ msgid "Name"
 msgstr "Naam bijlage"
 
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.action.url,type:"
@@ -912,8 +915,8 @@ msgid "Name"
 msgstr "Naam bijlage"
 
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.action.wizard,type:"
@@ -993,8 +996,8 @@ msgid "Name"
 msgstr "Naam bijlage"
 
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -1039,8 +1042,8 @@ msgid "Name"
 msgstr "Naam"
 
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -1076,10 +1079,9 @@ msgctxt "field:ir.configuration,language:"
 msgid "language"
 msgstr "Taal"
 
-#, fuzzy
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.configuration,write_date:"
@@ -1143,8 +1145,8 @@ msgid "Number of Calls"
 msgstr ""
 
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1197,8 +1199,8 @@ msgid "Name"
 msgstr "Naam"
 
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1238,8 +1240,8 @@ msgid "Name"
 msgstr "Naam"
 
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.export.line,write_date:"
@@ -1295,8 +1297,8 @@ msgid "Name"
 msgstr "Naam"
 
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.lang,thousands_sep:"
 msgid "Thousands Separator"
@@ -1356,8 +1358,8 @@ msgid "Model Description"
 msgstr "Model omschrijving"
 
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model,write_date:"
@@ -1413,8 +1415,8 @@ msgid "Write Access"
 msgstr "Schrijfrecht"
 
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.access,write_date:"
@@ -1460,10 +1462,9 @@ msgctxt "field:ir.model.button,name:"
 msgid "Name"
 msgstr "Naam bijlage"
 
-#, fuzzy
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1511,10 +1512,9 @@ msgctxt "field:ir.model.button-button.reset,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button-button.reset,write_date:"
@@ -1550,10 +1550,9 @@ msgctxt "field:ir.model.button.click,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button.click,record_id:"
@@ -1603,10 +1602,9 @@ msgctxt "field:ir.model.button.rule,number_user:"
 msgid "Number of User"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button.rule,write_date:"
@@ -1662,8 +1660,8 @@ msgid "Out of Sync"
 msgstr ""
 
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.data,values:"
 msgid "Values"
@@ -1719,8 +1717,8 @@ msgid "Name"
 msgstr "Naam"
 
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1790,10 +1788,9 @@ msgctxt "field:ir.model.field.access,perm_write:"
 msgid "Write Access"
 msgstr "Schrijfrecht"
 
-#, fuzzy
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.field.access,write_date:"
@@ -1850,8 +1847,8 @@ msgid "Parents"
 msgstr ""
 
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module,state:"
 msgid "State"
@@ -1915,8 +1912,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.module.config_wizard.item,sequence:"
@@ -1971,8 +1968,8 @@ msgid "Name"
 msgstr "Naam"
 
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.dependency,state:"
 msgid "State"
@@ -2019,10 +2016,9 @@ msgctxt "field:ir.note,message_wrapped:"
 msgid "Message"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.note,resource:"
@@ -2063,10 +2059,9 @@ msgctxt "field:ir.note.read,note:"
 msgid "Note"
 msgstr "Aantekening"
 
-#, fuzzy
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.note.read,user:"
@@ -2104,8 +2099,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule,rule_group:"
 msgid "Group"
@@ -2173,8 +2168,8 @@ msgid "Write Access"
 msgstr "Schrijfrecht"
 
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2247,8 +2242,8 @@ msgid "Prefix"
 msgstr "Voorvoegsel"
 
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2329,8 +2324,8 @@ msgid "Prefix"
 msgstr "Voorvoegsel"
 
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2382,8 +2377,8 @@ msgid "Sequence Name"
 msgstr "Reeks naam"
 
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.sequence.type,write_date:"
@@ -2414,10 +2409,9 @@ msgctxt "field:ir.session,key:"
 msgid "Key"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.session,write_date:"
@@ -2449,10 +2443,9 @@ msgctxt "field:ir.session.wizard,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.session.wizard,write_date:"
@@ -2504,8 +2497,8 @@ msgid "Overriding Module"
 msgstr ""
 
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2655,8 +2648,8 @@ msgid "On Write"
 msgstr "Bij muteren"
 
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.trigger,write_date:"
@@ -2684,8 +2677,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2739,10 +2732,9 @@ msgctxt "field:ir.ui.icon,path:"
 msgid "SVG Path"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.ui.icon,sequence:"
@@ -2816,8 +2808,8 @@ msgid "Parent Menu"
 msgstr "Hoofdmenu"
 
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu,sequence:"
 msgid "Sequence"
@@ -2853,10 +2845,9 @@ msgctxt "field:ir.ui.menu.favorite,menu:"
 msgid "Menu"
 msgstr "Menu"
 
-#, fuzzy
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.ui.menu.favorite,sequence:"
@@ -2932,8 +2923,8 @@ msgid "Priority"
 msgstr "Prioriteit"
 
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -2984,10 +2975,9 @@ msgctxt "field:ir.ui.view_search,name:"
 msgid "Name"
 msgstr "Naam bijlage"
 
-#, fuzzy
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.ui.view_search,user:"
@@ -3037,10 +3027,9 @@ msgctxt "field:ir.ui.view_tree_state,nodes:"
 msgid "Expanded Nodes"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -3085,8 +3074,8 @@ msgid "Model"
 msgstr "Model"
 
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "Naam"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_width,user:"
 msgid "User"
@@ -3130,6 +3119,10 @@ msgid ""
 "compatible format"
 msgstr ""
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr ""
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr "Start assistent in nieuw venster"
diff --git a/trytond/ir/locale/pl.po b/trytond/ir/locale/pl.po
index 5c97662..5e7ff4e 100644
--- a/trytond/ir/locale/pl.po
+++ b/trytond/ir/locale/pl.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -380,8 +380,8 @@ msgid "Name"
 msgstr "Nazwa"
 
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -488,8 +488,8 @@ msgid "PySON Search Criteria"
 msgstr "Kryteria wyszukiwania PySON"
 
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -552,8 +552,8 @@ msgid "Name"
 msgstr "Nazwa"
 
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.action.act_window.domain,sequence:"
 msgid "Sequence"
@@ -588,8 +588,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.action.act_window.view,sequence:"
 msgid "Sequence"
@@ -636,8 +636,8 @@ msgid "Model"
 msgstr "Model"
 
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.action.keyword,write_date:"
 msgid "Write Date"
@@ -712,8 +712,8 @@ msgid "PySON Email"
 msgstr "E-mail PySON"
 
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -735,6 +735,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr "Nazwa wewnętrzna"
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr "Pojedynczy"
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr "Rozszerzenie szablonu"
@@ -792,8 +796,8 @@ msgid "Name"
 msgstr "Nazwa"
 
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.action.url,type:"
 msgid "Type"
@@ -860,8 +864,8 @@ msgid "Name"
 msgstr "Nazwa"
 
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.action.wizard,type:"
 msgid "Type"
@@ -932,8 +936,8 @@ msgid "Name"
 msgstr "Nazwa"
 
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -972,8 +976,8 @@ msgid "Name"
 msgstr "Nazwa"
 
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -1004,8 +1008,8 @@ msgid "language"
 msgstr "język"
 
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.configuration,write_date:"
 msgid "Write Date"
@@ -1064,8 +1068,8 @@ msgid "Number of Calls"
 msgstr "Liczba wywołań"
 
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1112,8 +1116,8 @@ msgid "Name"
 msgstr "Nazwa"
 
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1148,8 +1152,8 @@ msgid "Name"
 msgstr "Nazwa"
 
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.export.line,write_date:"
 msgid "Write Date"
@@ -1200,8 +1204,8 @@ msgid "Name"
 msgstr "Nazwa"
 
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.lang,thousands_sep:"
 msgid "Thousands Separator"
@@ -1256,8 +1260,8 @@ msgid "Model Description"
 msgstr "Opis modelu"
 
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.model,write_date:"
 msgid "Write Date"
@@ -1308,8 +1312,8 @@ msgid "Write Access"
 msgstr "Zapis"
 
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.model.access,write_date:"
 msgid "Write Date"
@@ -1348,8 +1352,8 @@ msgid "Name"
 msgstr "Nazwa"
 
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1392,8 +1396,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.model.button-button.reset,write_date:"
 msgid "Write Date"
@@ -1424,8 +1428,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.model.button.click,record_id:"
 msgid "Record ID"
@@ -1468,8 +1472,8 @@ msgid "Number of User"
 msgstr "Liczba użytkownika"
 
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.model.button.rule,write_date:"
 msgid "Write Date"
@@ -1520,8 +1524,8 @@ msgid "Out of Sync"
 msgstr "Niezsynchronizowany"
 
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.model.data,values:"
 msgid "Values"
@@ -1572,8 +1576,8 @@ msgid "Name"
 msgstr "Nazwa"
 
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1632,8 +1636,8 @@ msgid "Write Access"
 msgstr "Zapis"
 
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.model.field.access,write_date:"
 msgid "Write Date"
@@ -1657,7 +1661,7 @@ msgstr "Poziom"
 
 msgctxt "field:ir.module,childs:"
 msgid "Childs"
-msgstr "Elementy potomne"
+msgstr "Elementy podrzędne"
 
 msgctxt "field:ir.module,create_date:"
 msgid "Create Date"
@@ -1684,8 +1688,8 @@ msgid "Parents"
 msgstr "Elementy nadrzędne"
 
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.module,state:"
 msgid "State"
@@ -1740,8 +1744,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.module.config_wizard.item,sequence:"
 msgid "Sequence"
@@ -1788,8 +1792,8 @@ msgid "Name"
 msgstr "Nazwa"
 
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.module.dependency,state:"
 msgid "State"
@@ -1832,8 +1836,8 @@ msgid "Message"
 msgstr "Wiadomość"
 
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.note,resource:"
 msgid "Resource"
@@ -1868,8 +1872,8 @@ msgid "Note"
 msgstr "Notatka"
 
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.note.read,user:"
 msgid "User"
@@ -1900,8 +1904,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.rule,rule_group:"
 msgid "Group"
@@ -1964,8 +1968,8 @@ msgid "Write Access"
 msgstr "Zapis"
 
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2032,8 +2036,8 @@ msgid "Prefix"
 msgstr "Prefiks"
 
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2108,8 +2112,8 @@ msgid "Prefix"
 msgstr "Prefiks"
 
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2156,8 +2160,8 @@ msgid "Sequence Name"
 msgstr "Nazwa sekwencji"
 
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.sequence.type,write_date:"
 msgid "Write Date"
@@ -2184,8 +2188,8 @@ msgid "Key"
 msgstr "Klucz"
 
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.session,write_date:"
 msgid "Write Date"
@@ -2212,8 +2216,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.session.wizard,write_date:"
 msgid "Write Date"
@@ -2260,8 +2264,8 @@ msgid "Overriding Module"
 msgstr "Nadpisany moduł"
 
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2396,8 +2400,8 @@ msgid "On Write"
 msgstr "Przy zapisie"
 
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.trigger,write_date:"
 msgid "Write Date"
@@ -2420,8 +2424,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2468,8 +2472,8 @@ msgid "SVG Path"
 msgstr "Ścieżka SVG"
 
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.ui.icon,sequence:"
 msgid "Sequence"
@@ -2497,7 +2501,7 @@ msgstr "Aktywny"
 
 msgctxt "field:ir.ui.menu,childs:"
 msgid "Children"
-msgstr "Elementy potomne"
+msgstr "Elementy podrzędne"
 
 msgctxt "field:ir.ui.menu,complete_name:"
 msgid "Complete Name"
@@ -2536,8 +2540,8 @@ msgid "Parent Menu"
 msgstr "Menu nadrzędne"
 
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.ui.menu,sequence:"
 msgid "Sequence"
@@ -2568,8 +2572,8 @@ msgid "Menu"
 msgstr "Menu"
 
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.ui.menu.favorite,sequence:"
 msgid "Sequence"
@@ -2609,7 +2613,7 @@ msgstr "Domena"
 
 msgctxt "field:ir.ui.view,field_childs:"
 msgid "Children Field"
-msgstr "Pole elementów potomnych"
+msgstr "Pole elementów podrzędnych"
 
 msgctxt "field:ir.ui.view,id:"
 msgid "ID"
@@ -2636,8 +2640,8 @@ msgid "Priority"
 msgstr "Priorytet"
 
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -2680,8 +2684,8 @@ msgid "Name"
 msgstr "Nazwa"
 
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.ui.view_search,user:"
 msgid "User"
@@ -2697,7 +2701,7 @@ msgstr "Zapisał"
 
 msgctxt "field:ir.ui.view_tree_state,child_name:"
 msgid "Child Name"
-msgstr "Nazwa elementu potomnego"
+msgstr "Nazwa elementu podrzędnego"
 
 msgctxt "field:ir.ui.view_tree_state,create_date:"
 msgid "Create Date"
@@ -2724,8 +2728,8 @@ msgid "Expanded Nodes"
 msgstr "Rozszerzone węzły"
 
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -2764,8 +2768,8 @@ msgid "Model"
 msgstr "Model"
 
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.ui.view_tree_width,user:"
 msgid "User"
@@ -2811,6 +2815,10 @@ msgstr ""
 "Pozostaw puste jako szablon. Sprawdź dokumentację unoconv dla właściwego "
 "formatu."
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr "Sprawdź, czy szablon pracuje tylko dla jednego rekordu."
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr "Uruchom kreatora w nowym oknie"
@@ -3698,7 +3706,7 @@ msgstr "Do aktualizacji"
 
 msgctxt "selection:ir.module.config_wizard.item,state:"
 msgid "Done"
-msgstr "Ukończono"
+msgstr "Wykonano"
 
 msgctxt "selection:ir.module.config_wizard.item,state:"
 msgid "Open"
diff --git a/trytond/ir/locale/pt_BR.po b/trytond/ir/locale/pt_BR.po
index 8906098..a03070d 100644
--- a/trytond/ir/locale/pt_BR.po
+++ b/trytond/ir/locale/pt_BR.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -377,8 +377,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -485,8 +485,8 @@ msgid "PySON Search Criteria"
 msgstr "Critério de busca PySON"
 
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -549,8 +549,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.action.act_window.domain,sequence:"
 msgid "Sequence"
@@ -585,8 +585,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.action.act_window.view,sequence:"
 msgid "Sequence"
@@ -633,8 +633,8 @@ msgid "Model"
 msgstr "Modelo"
 
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.action.keyword,write_date:"
 msgid "Write Date"
@@ -709,8 +709,8 @@ msgid "PySON Email"
 msgstr "E-mail PySON"
 
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -732,6 +732,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr "Nome interno"
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr "Único"
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr "Extensão do modelo"
@@ -789,8 +793,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.action.url,type:"
 msgid "Type"
@@ -857,8 +861,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.action.wizard,type:"
 msgid "Type"
@@ -929,8 +933,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -969,8 +973,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -1001,8 +1005,8 @@ msgid "language"
 msgstr "idioma"
 
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.configuration,write_date:"
 msgid "Write Date"
@@ -1061,8 +1065,8 @@ msgid "Number of Calls"
 msgstr "Número de chamadas"
 
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1109,8 +1113,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1145,8 +1149,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.export.line,write_date:"
 msgid "Write Date"
@@ -1197,8 +1201,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.lang,thousands_sep:"
 msgid "Thousands Separator"
@@ -1253,8 +1257,8 @@ msgid "Model Description"
 msgstr "Descrição do modelo"
 
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.model,write_date:"
 msgid "Write Date"
@@ -1305,8 +1309,8 @@ msgid "Write Access"
 msgstr "Acesso de edição"
 
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.model.access,write_date:"
 msgid "Write Date"
@@ -1345,8 +1349,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1389,8 +1393,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.model.button-button.reset,write_date:"
 msgid "Write Date"
@@ -1421,8 +1425,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.model.button.click,record_id:"
 msgid "Record ID"
@@ -1465,8 +1469,8 @@ msgid "Number of User"
 msgstr "Número do Usuário"
 
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.model.button.rule,write_date:"
 msgid "Write Date"
@@ -1517,8 +1521,8 @@ msgid "Out of Sync"
 msgstr "Fora de Sincronia"
 
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.model.data,values:"
 msgid "Values"
@@ -1569,8 +1573,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1629,8 +1633,8 @@ msgid "Write Access"
 msgstr "Acesso de edição"
 
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.model.field.access,write_date:"
 msgid "Write Date"
@@ -1681,8 +1685,8 @@ msgid "Parents"
 msgstr "Pais"
 
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.module,state:"
 msgid "State"
@@ -1737,8 +1741,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.module.config_wizard.item,sequence:"
 msgid "Sequence"
@@ -1785,8 +1789,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.module.dependency,state:"
 msgid "State"
@@ -1829,8 +1833,8 @@ msgid "Message"
 msgstr "Mensagem"
 
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.note,resource:"
 msgid "Resource"
@@ -1865,8 +1869,8 @@ msgid "Note"
 msgstr "Nota"
 
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.note.read,user:"
 msgid "User"
@@ -1897,8 +1901,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.rule,rule_group:"
 msgid "Group"
@@ -1961,8 +1965,8 @@ msgid "Write Access"
 msgstr "Acesso de edição"
 
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2029,8 +2033,8 @@ msgid "Prefix"
 msgstr "Prefixo"
 
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2105,8 +2109,8 @@ msgid "Prefix"
 msgstr "Prefixo"
 
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2153,8 +2157,8 @@ msgid "Sequence Name"
 msgstr "Nome da sequência"
 
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.sequence.type,write_date:"
 msgid "Write Date"
@@ -2181,8 +2185,8 @@ msgid "Key"
 msgstr "Chave"
 
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.session,write_date:"
 msgid "Write Date"
@@ -2209,8 +2213,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.session.wizard,write_date:"
 msgid "Write Date"
@@ -2257,8 +2261,8 @@ msgid "Overriding Module"
 msgstr "Módulo sobreescrevente"
 
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2393,8 +2397,8 @@ msgid "On Write"
 msgstr "Ao editar"
 
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.trigger,write_date:"
 msgid "Write Date"
@@ -2417,8 +2421,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2465,8 +2469,8 @@ msgid "SVG Path"
 msgstr "Caminho do SVG"
 
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.ui.icon,sequence:"
 msgid "Sequence"
@@ -2533,8 +2537,8 @@ msgid "Parent Menu"
 msgstr "Menu pai"
 
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.ui.menu,sequence:"
 msgid "Sequence"
@@ -2565,8 +2569,8 @@ msgid "Menu"
 msgstr "Menu"
 
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.ui.menu.favorite,sequence:"
 msgid "Sequence"
@@ -2633,8 +2637,8 @@ msgid "Priority"
 msgstr "Prioridade"
 
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -2677,8 +2681,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.ui.view_search,user:"
 msgid "User"
@@ -2721,8 +2725,8 @@ msgid "Expanded Nodes"
 msgstr "Nodos expandidos"
 
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -2761,8 +2765,8 @@ msgid "Model"
 msgstr "Modelo"
 
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.ui.view_tree_width,user:"
 msgid "User"
@@ -2808,6 +2812,10 @@ msgstr ""
 "Deixe vazio para o mesmo do modelo. Veja a documentação de unoconv para "
 "formato compatível."
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr "Marque se o modelo funcionar para apenas um registro."
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr "Executar o assitente em nova janela"
@@ -3913,7 +3921,7 @@ msgstr "Marcar para Desativação (beta)"
 
 msgctxt "view:ir.module:"
 msgid "Mark for Upgrade"
-msgstr "Marcar para desinstação (beta)"
+msgstr "Marcar para Atualização"
 
 msgctxt "view:ir.note:"
 msgid "Date"
diff --git a/trytond/ir/locale/ru.po b/trytond/ir/locale/ru.po
index d86155b..8167a2e 100644
--- a/trytond/ir/locale/ru.po
+++ b/trytond/ir/locale/ru.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -362,8 +362,8 @@ msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -470,8 +470,8 @@ msgid "PySON Search Criteria"
 msgstr "PySON условие поиска"
 
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -535,8 +535,8 @@ msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.domain,sequence:"
 msgid "Sequence"
@@ -572,8 +572,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.view,sequence:"
 msgid "Sequence"
@@ -620,8 +620,8 @@ msgid "Model"
 msgstr "Модель"
 
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.keyword,write_date:"
 msgid "Write Date"
@@ -696,8 +696,8 @@ msgid "PySON Email"
 msgstr "PySON Email"
 
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -719,6 +719,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr "Внутреннее наименование"
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr ""
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr "Расширение шаблонов"
@@ -776,8 +780,8 @@ msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.url,type:"
 msgid "Type"
@@ -844,8 +848,8 @@ msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.wizard,type:"
 msgid "Type"
@@ -916,8 +920,8 @@ msgid "Name"
 msgstr "Имя вложения"
 
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -956,8 +960,8 @@ msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -988,8 +992,8 @@ msgid "language"
 msgstr "язык"
 
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.configuration,write_date:"
 msgid "Write Date"
@@ -1048,8 +1052,8 @@ msgid "Number of Calls"
 msgstr "Кол-во вызовов"
 
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1096,8 +1100,8 @@ msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1132,8 +1136,8 @@ msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export.line,write_date:"
 msgid "Write Date"
@@ -1184,8 +1188,8 @@ msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.lang,thousands_sep:"
 msgid "Thousands Separator"
@@ -1240,8 +1244,8 @@ msgid "Model Description"
 msgstr "Описание модели"
 
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model,write_date:"
 msgid "Write Date"
@@ -1292,8 +1296,8 @@ msgid "Write Access"
 msgstr "Запись"
 
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.access,write_date:"
 msgid "Write Date"
@@ -1332,8 +1336,8 @@ msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1380,10 +1384,9 @@ msgctxt "field:ir.model.button-button.reset,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button-button.reset,write_date:"
@@ -1420,10 +1423,9 @@ msgctxt "field:ir.model.button.click,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button.click,record_id:"
@@ -1474,10 +1476,9 @@ msgctxt "field:ir.model.button.rule,number_user:"
 msgid "Number of User"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button.rule,write_date:"
@@ -1530,8 +1531,8 @@ msgid "Out of Sync"
 msgstr ""
 
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.data,values:"
 msgid "Values"
@@ -1582,8 +1583,8 @@ msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1642,8 +1643,8 @@ msgid "Write Access"
 msgstr "Запись"
 
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field.access,write_date:"
 msgid "Write Date"
@@ -1694,8 +1695,8 @@ msgid "Parents"
 msgstr "Предки"
 
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module,state:"
 msgid "State"
@@ -1753,8 +1754,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.config_wizard.item,sequence:"
 msgid "Sequence"
@@ -1801,8 +1802,8 @@ msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.dependency,state:"
 msgid "State"
@@ -1849,10 +1850,9 @@ msgctxt "field:ir.note,message_wrapped:"
 msgid "Message"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.note,resource:"
@@ -1893,10 +1893,9 @@ msgctxt "field:ir.note.read,note:"
 msgid "Note"
 msgstr "Комментарий"
 
-#, fuzzy
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.note.read,user:"
@@ -1930,8 +1929,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule,rule_group:"
 msgid "Group"
@@ -1994,8 +1993,8 @@ msgid "Write Access"
 msgstr "Запись"
 
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2062,8 +2061,8 @@ msgid "Prefix"
 msgstr "Префикс"
 
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2138,8 +2137,8 @@ msgid "Prefix"
 msgstr "Префикс"
 
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2186,8 +2185,8 @@ msgid "Sequence Name"
 msgstr "Наименование нумерации"
 
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type,write_date:"
 msgid "Write Date"
@@ -2214,8 +2213,8 @@ msgid "Key"
 msgstr "Ключ"
 
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session,write_date:"
 msgid "Write Date"
@@ -2242,8 +2241,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session.wizard,write_date:"
 msgid "Write Date"
@@ -2290,8 +2289,8 @@ msgid "Overriding Module"
 msgstr ""
 
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2426,8 +2425,8 @@ msgid "On Write"
 msgstr "При записи"
 
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger,write_date:"
 msgid "Write Date"
@@ -2450,8 +2449,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2498,8 +2497,8 @@ msgid "SVG Path"
 msgstr "Путь к SVG"
 
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.icon,sequence:"
 msgid "Sequence"
@@ -2567,8 +2566,8 @@ msgid "Parent Menu"
 msgstr "Основное меню"
 
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu,sequence:"
 msgid "Sequence"
@@ -2599,8 +2598,8 @@ msgid "Menu"
 msgstr "Меню"
 
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu.favorite,sequence:"
 msgid "Sequence"
@@ -2667,8 +2666,8 @@ msgid "Priority"
 msgstr "Приоритет"
 
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -2711,8 +2710,8 @@ msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_search,user:"
 msgid "User"
@@ -2759,10 +2758,9 @@ msgctxt "field:ir.ui.view_tree_state,nodes:"
 msgid "Expanded Nodes"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "Полное наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -2804,8 +2802,8 @@ msgid "Model"
 msgstr "Модель"
 
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_width,user:"
 msgid "User"
@@ -2851,6 +2849,10 @@ msgstr ""
 "Если оставить пустым - будет так же как в шаблоне. Допустимые форматы "
 "смотрите в документацие unuconv."
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr ""
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr "Запустить мастера в новом окне"
diff --git a/trytond/ir/locale/sl.po b/trytond/ir/locale/sl.po
index a4c12f2..dd564c5 100644
--- a/trytond/ir/locale/sl.po
+++ b/trytond/ir/locale/sl.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -375,8 +375,8 @@ msgid "Name"
 msgstr "Naziv"
 
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -483,8 +483,8 @@ msgid "PySON Search Criteria"
 msgstr "PySON kriterij iskanja"
 
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -547,8 +547,8 @@ msgid "Name"
 msgstr "Naziv"
 
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.domain,sequence:"
 msgid "Sequence"
@@ -583,8 +583,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.view,sequence:"
 msgid "Sequence"
@@ -631,8 +631,8 @@ msgid "Model"
 msgstr "Model"
 
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.keyword,write_date:"
 msgid "Write Date"
@@ -707,8 +707,8 @@ msgid "PySON Email"
 msgstr "PySON e-pošta"
 
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -730,6 +730,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr "Interni naziv"
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr ""
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr "Končnica predloge"
@@ -787,8 +791,8 @@ msgid "Name"
 msgstr "Naziv"
 
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.url,type:"
 msgid "Type"
@@ -855,8 +859,8 @@ msgid "Name"
 msgstr "Naziv"
 
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.wizard,type:"
 msgid "Type"
@@ -927,8 +931,8 @@ msgid "Name"
 msgstr "Naziv"
 
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -967,8 +971,8 @@ msgid "Name"
 msgstr "Naziv"
 
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -999,8 +1003,8 @@ msgid "language"
 msgstr "Jezik"
 
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.configuration,write_date:"
 msgid "Write Date"
@@ -1059,8 +1063,8 @@ msgid "Number of Calls"
 msgstr "Število zagonov"
 
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1107,8 +1111,8 @@ msgid "Name"
 msgstr "Naziv"
 
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1143,8 +1147,8 @@ msgid "Name"
 msgstr "Naziv"
 
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export.line,write_date:"
 msgid "Write Date"
@@ -1195,8 +1199,8 @@ msgid "Name"
 msgstr "Naziv"
 
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.lang,thousands_sep:"
 msgid "Thousands Separator"
@@ -1251,8 +1255,8 @@ msgid "Model Description"
 msgstr "Opis modela"
 
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model,write_date:"
 msgid "Write Date"
@@ -1303,8 +1307,8 @@ msgid "Write Access"
 msgstr "Pisanje"
 
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.access,write_date:"
 msgid "Write Date"
@@ -1343,8 +1347,8 @@ msgid "Name"
 msgstr "Naziv"
 
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1387,8 +1391,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button-button.reset,write_date:"
 msgid "Write Date"
@@ -1419,8 +1423,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button.click,record_id:"
 msgid "Record ID"
@@ -1463,8 +1467,8 @@ msgid "Number of User"
 msgstr "Številka uporabnika"
 
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button.rule,write_date:"
 msgid "Write Date"
@@ -1515,8 +1519,8 @@ msgid "Out of Sync"
 msgstr "Izven sinhronizacije"
 
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.data,values:"
 msgid "Values"
@@ -1567,8 +1571,8 @@ msgid "Name"
 msgstr "Naziv"
 
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1627,8 +1631,8 @@ msgid "Write Access"
 msgstr "Pisanje"
 
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field.access,write_date:"
 msgid "Write Date"
@@ -1679,8 +1683,8 @@ msgid "Parents"
 msgstr "Nadrejeni"
 
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module,state:"
 msgid "State"
@@ -1735,8 +1739,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.config_wizard.item,sequence:"
 msgid "Sequence"
@@ -1783,8 +1787,8 @@ msgid "Name"
 msgstr "Naziv"
 
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.dependency,state:"
 msgid "State"
@@ -1827,8 +1831,8 @@ msgid "Message"
 msgstr "Sporočilo"
 
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.note,resource:"
 msgid "Resource"
@@ -1863,8 +1867,8 @@ msgid "Note"
 msgstr "Zabeležka"
 
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.note.read,user:"
 msgid "User"
@@ -1895,8 +1899,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule,rule_group:"
 msgid "Group"
@@ -1959,8 +1963,8 @@ msgid "Write Access"
 msgstr "Pisanje"
 
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2027,8 +2031,8 @@ msgid "Prefix"
 msgstr "Predpona"
 
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2103,8 +2107,8 @@ msgid "Prefix"
 msgstr "Predpona"
 
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2151,8 +2155,8 @@ msgid "Sequence Name"
 msgstr "Naziv"
 
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type,write_date:"
 msgid "Write Date"
@@ -2179,8 +2183,8 @@ msgid "Key"
 msgstr "Ključ"
 
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session,write_date:"
 msgid "Write Date"
@@ -2207,8 +2211,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session.wizard,write_date:"
 msgid "Write Date"
@@ -2255,8 +2259,8 @@ msgid "Overriding Module"
 msgstr "Razširjevalni modul"
 
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2391,8 +2395,8 @@ msgid "On Write"
 msgstr "Ob pisanju"
 
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger,write_date:"
 msgid "Write Date"
@@ -2415,8 +2419,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2463,8 +2467,8 @@ msgid "SVG Path"
 msgstr "SVG pot"
 
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.icon,sequence:"
 msgid "Sequence"
@@ -2531,8 +2535,8 @@ msgid "Parent Menu"
 msgstr "Matični meni"
 
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu,sequence:"
 msgid "Sequence"
@@ -2563,8 +2567,8 @@ msgid "Menu"
 msgstr "Meni"
 
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu.favorite,sequence:"
 msgid "Sequence"
@@ -2631,8 +2635,8 @@ msgid "Priority"
 msgstr "Prioriteta"
 
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -2675,8 +2679,8 @@ msgid "Name"
 msgstr "Naziv"
 
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_search,user:"
 msgid "User"
@@ -2719,8 +2723,8 @@ msgid "Expanded Nodes"
 msgstr "Razširjeni vozli"
 
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -2759,8 +2763,8 @@ msgid "Model"
 msgstr "Model"
 
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_width,user:"
 msgid "User"
@@ -2806,6 +2810,10 @@ msgstr ""
 "Za enako končnico kot v predlogi pustite prazno. Za združljiv format glejte "
 "navodila za unoconv."
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr ""
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr "Zaženi čarovnika v novem oknu"
diff --git a/trytond/ir/locale/zh_CN.po b/trytond/ir/locale/zh_CN.po
index 96304bb..74f5645 100644
--- a/trytond/ir/locale/zh_CN.po
+++ b/trytond/ir/locale/zh_CN.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -357,8 +357,8 @@ msgid "Name"
 msgstr "名称"
 
 msgctxt "field:ir.action,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action,type:"
 msgid "Type"
@@ -465,8 +465,8 @@ msgid "PySON Search Criteria"
 msgstr "PySON查找表达式"
 
 msgctxt "field:ir.action.act_window,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window,res_model:"
 msgid "Model"
@@ -529,8 +529,8 @@ msgid "Name"
 msgstr "名称"
 
 msgctxt "field:ir.action.act_window.domain,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.domain,sequence:"
 msgid "Sequence"
@@ -565,8 +565,8 @@ msgid "ID"
 msgstr "标识"
 
 msgctxt "field:ir.action.act_window.view,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.act_window.view,sequence:"
 msgid "Sequence"
@@ -613,8 +613,8 @@ msgid "Model"
 msgstr "模型"
 
 msgctxt "field:ir.action.keyword,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.keyword,write_date:"
 msgid "Write Date"
@@ -689,8 +689,8 @@ msgid "PySON Email"
 msgstr "PySON 邮箱"
 
 msgctxt "field:ir.action.report,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.report,report:"
 msgid "Path"
@@ -712,6 +712,10 @@ msgctxt "field:ir.action.report,report_name:"
 msgid "Internal Name"
 msgstr "内部标识"
 
+msgctxt "field:ir.action.report,single:"
+msgid "Single"
+msgstr ""
+
 msgctxt "field:ir.action.report,template_extension:"
 msgid "Template Extension"
 msgstr "模版扩展"
@@ -769,8 +773,8 @@ msgid "Name"
 msgstr "名称"
 
 msgctxt "field:ir.action.url,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.url,type:"
 msgid "Type"
@@ -837,8 +841,8 @@ msgid "Name"
 msgstr "名称"
 
 msgctxt "field:ir.action.wizard,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action.wizard,type:"
 msgid "Type"
@@ -909,8 +913,8 @@ msgid "Name"
 msgstr "名称"
 
 msgctxt "field:ir.attachment,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.attachment,resource:"
 msgid "Resource"
@@ -949,8 +953,8 @@ msgid "Name"
 msgstr "名称"
 
 msgctxt "field:ir.cache,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cache,timestamp:"
 msgid "Timestamp"
@@ -981,8 +985,8 @@ msgid "language"
 msgstr "语言"
 
 msgctxt "field:ir.configuration,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.configuration,write_date:"
 msgid "Write Date"
@@ -1041,8 +1045,8 @@ msgid "Number of Calls"
 msgstr "调用次数"
 
 msgctxt "field:ir.cron,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.cron,repeat_missed:"
 msgid "Repeat Missed"
@@ -1089,8 +1093,8 @@ msgid "Name"
 msgstr "名称"
 
 msgctxt "field:ir.export,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export,resource:"
 msgid "Resource"
@@ -1125,8 +1129,8 @@ msgid "Name"
 msgstr "名称"
 
 msgctxt "field:ir.export.line,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.export.line,write_date:"
 msgid "Write Date"
@@ -1177,8 +1181,8 @@ msgid "Name"
 msgstr "名称"
 
 msgctxt "field:ir.lang,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.lang,thousands_sep:"
 msgid "Thousands Separator"
@@ -1233,8 +1237,8 @@ msgid "Model Description"
 msgstr "模型描述"
 
 msgctxt "field:ir.model,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model,write_date:"
 msgid "Write Date"
@@ -1285,8 +1289,8 @@ msgid "Write Access"
 msgstr "写入"
 
 msgctxt "field:ir.model.access,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.access,write_date:"
 msgid "Write Date"
@@ -1325,8 +1329,8 @@ msgid "Name"
 msgstr "名称"
 
 msgctxt "field:ir.model.button,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button,reset:"
 msgid "Reset"
@@ -1373,10 +1377,9 @@ msgctxt "field:ir.model.button-button.reset,id:"
 msgid "ID"
 msgstr "标识"
 
-#, fuzzy
 msgctxt "field:ir.model.button-button.reset,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button-button.reset,write_date:"
@@ -1413,10 +1416,9 @@ msgctxt "field:ir.model.button.click,id:"
 msgid "ID"
 msgstr "标识"
 
-#, fuzzy
 msgctxt "field:ir.model.button.click,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button.click,record_id:"
@@ -1467,10 +1469,9 @@ msgctxt "field:ir.model.button.rule,number_user:"
 msgid "Number of User"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.button.rule,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button.rule,write_date:"
@@ -1523,8 +1524,8 @@ msgid "Out of Sync"
 msgstr "未同步"
 
 msgctxt "field:ir.model.data,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.data,values:"
 msgid "Values"
@@ -1575,8 +1576,8 @@ msgid "Name"
 msgstr "名称"
 
 msgctxt "field:ir.model.field,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field,relation:"
 msgid "Model Relation"
@@ -1635,8 +1636,8 @@ msgid "Write Access"
 msgstr "写入"
 
 msgctxt "field:ir.model.field.access,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field.access,write_date:"
 msgid "Write Date"
@@ -1687,8 +1688,8 @@ msgid "Parents"
 msgstr "父级"
 
 msgctxt "field:ir.module,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module,state:"
 msgid "State"
@@ -1746,8 +1747,8 @@ msgid "ID"
 msgstr "标识"
 
 msgctxt "field:ir.module.config_wizard.item,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.config_wizard.item,sequence:"
 msgid "Sequence"
@@ -1794,8 +1795,8 @@ msgid "Name"
 msgstr "名称"
 
 msgctxt "field:ir.module.dependency,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.module.dependency,state:"
 msgid "State"
@@ -1842,10 +1843,9 @@ msgctxt "field:ir.note,message_wrapped:"
 msgid "Message"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.note,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.note,resource:"
@@ -1886,10 +1886,9 @@ msgctxt "field:ir.note.read,note:"
 msgid "Note"
 msgstr "注释"
 
-#, fuzzy
 msgctxt "field:ir.note.read,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.note.read,user:"
@@ -1923,8 +1922,8 @@ msgid "ID"
 msgstr "标识"
 
 msgctxt "field:ir.rule,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule,rule_group:"
 msgid "Group"
@@ -1987,8 +1986,8 @@ msgid "Write Access"
 msgstr "写入"
 
 msgctxt "field:ir.rule.group,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group,rules:"
 msgid "Tests"
@@ -2055,8 +2054,8 @@ msgid "Prefix"
 msgstr "前缀"
 
 msgctxt "field:ir.sequence,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence,suffix:"
 msgid "Suffix"
@@ -2131,8 +2130,8 @@ msgid "Prefix"
 msgstr "前缀"
 
 msgctxt "field:ir.sequence.strict,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.strict,suffix:"
 msgid "Suffix"
@@ -2179,8 +2178,8 @@ msgid "Sequence Name"
 msgstr "序列名"
 
 msgctxt "field:ir.sequence.type,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type,write_date:"
 msgid "Write Date"
@@ -2207,8 +2206,8 @@ msgid "Key"
 msgstr "密匙"
 
 msgctxt "field:ir.session,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session,write_date:"
 msgid "Write Date"
@@ -2235,8 +2234,8 @@ msgid "ID"
 msgstr "标识"
 
 msgctxt "field:ir.session.wizard,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.session.wizard,write_date:"
 msgid "Write Date"
@@ -2283,8 +2282,8 @@ msgid "Overriding Module"
 msgstr "来源模块"
 
 msgctxt "field:ir.translation,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.translation,res_id:"
 msgid "Resource ID"
@@ -2419,8 +2418,8 @@ msgid "On Write"
 msgstr "写入触发"
 
 msgctxt "field:ir.trigger,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger,write_date:"
 msgid "Write Date"
@@ -2443,8 +2442,8 @@ msgid "ID"
 msgstr "标识"
 
 msgctxt "field:ir.trigger.log,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.trigger.log,record_id:"
 msgid "Record ID"
@@ -2491,8 +2490,8 @@ msgid "SVG Path"
 msgstr "SVG Path"
 
 msgctxt "field:ir.ui.icon,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.icon,sequence:"
 msgid "Sequence"
@@ -2559,8 +2558,8 @@ msgid "Parent Menu"
 msgstr "上一级菜单"
 
 msgctxt "field:ir.ui.menu,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu,sequence:"
 msgid "Sequence"
@@ -2591,8 +2590,8 @@ msgid "Menu"
 msgstr "菜单"
 
 msgctxt "field:ir.ui.menu.favorite,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu.favorite,sequence:"
 msgid "Sequence"
@@ -2659,8 +2658,8 @@ msgid "Priority"
 msgstr "优先级"
 
 msgctxt "field:ir.ui.view,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view,type:"
 msgid "View Type"
@@ -2703,8 +2702,8 @@ msgid "Name"
 msgstr "名称"
 
 msgctxt "field:ir.ui.view_search,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_search,user:"
 msgid "User"
@@ -2747,8 +2746,8 @@ msgid "Expanded Nodes"
 msgstr "展开节点"
 
 msgctxt "field:ir.ui.view_tree_state,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_state,selected_nodes:"
 msgid "Selected Nodes"
@@ -2787,8 +2786,8 @@ msgid "Model"
 msgstr "模型"
 
 msgctxt "field:ir.ui.view_tree_width,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.view_tree_width,user:"
 msgid "User"
@@ -2832,6 +2831,10 @@ msgid ""
 "compatible format"
 msgstr "参考unoconv文档有关格式部分,模版空白不要改动"
 
+msgctxt "help:ir.action.report,single:"
+msgid "Check if the template works only for one record."
+msgstr ""
+
 msgctxt "help:ir.action.wizard,window:"
 msgid "Run wizard in a new window"
 msgstr "打开新窗口运行向导"
diff --git a/trytond/ir/model.py b/trytond/ir/model.py
index 38a7f1b..e2abe04 100644
--- a/trytond/ir/model.py
+++ b/trytond/ir/model.py
@@ -493,9 +493,9 @@ class ModelAccess(ModelSQL, ModelView):
             return cls.check(field.model_name, mode=mode,
                 raise_exception=False)
         elif field._type in ('many2many', 'one2one'):
-            if (field.target
-                    and not cls.check(field.target, mode=mode,
-                        raise_exception=False)):
+            if not cls.check(
+                    field.get_target().__name__, mode=mode,
+                    raise_exception=False):
                 return False
             elif (field.relation_name
                     and not cls.check(field.relation_name, mode=mode,
diff --git a/trytond/ir/module.py b/trytond/ir/module.py
index b66e148..c5d0d3a 100644
--- a/trytond/ir/module.py
+++ b/trytond/ir/module.py
@@ -285,6 +285,8 @@ class Module(ModelSQL, ModelView):
 
         modules = cls.search([])
         name2module = dict((m.name, m) for m in modules)
+        cls.delete([m for m in modules
+                if m.state != 'activated' and m.name not in module_names])
 
         # iterate through activated modules and mark them as being so
         for name in module_names:
diff --git a/trytond/ir/sequence.py b/trytond/ir/sequence.py
index ca56adf..b38d4cd 100644
--- a/trytond/ir/sequence.py
+++ b/trytond/ir/sequence.py
@@ -3,7 +3,7 @@
 from string import Template
 import time
 from itertools import izip
-from sql import Flavor, Literal, For
+from sql import Literal, For
 
 from ..model import ModelView, ModelSQL, fields, Check
 from ..tools import datetime_strftime
@@ -16,7 +16,7 @@ __all__ = [
     'SequenceType', 'Sequence', 'SequenceStrict',
     ]
 
-sql_sequence = backend.name() == 'postgresql'
+sql_sequence = backend.get('Database').has_sequence()
 
 
 class SequenceType(ModelSQL, ModelView):
@@ -104,6 +104,7 @@ class Sequence(ModelSQL, ModelView):
     def __register__(cls, module_name):
         TableHandler = backend.get('TableHandler')
         table = TableHandler(cls, module_name)
+        transaction = Transaction()
 
         # Migration from 2.0 rename number_next into number_next_internal
         table.column_rename('number_next', 'number_next_internal')
@@ -116,8 +117,8 @@ class Sequence(ModelSQL, ModelView):
             for sequence in sequences:
                 if sequence.type != 'incremental':
                     continue
-                if not TableHandler.sequence_exist(
-                        sequence._sql_sequence_name):
+                if not transaction.database.sequence_exist(
+                        transaction.connection, sequence._sql_sequence_name):
                     sequence.create_sql_sequence(sequence.number_next_internal)
 
     @staticmethod
@@ -159,14 +160,11 @@ class Sequence(ModelSQL, ModelView):
     def get_number_next(self, name):
         if self.type != 'incremental':
             return
-        cursor = Transaction().connection.cursor()
-        sql_name = self._sql_sequence_name
+
+        transaction = Transaction()
         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)
-            return cursor.fetchone()[0]
+            return transaction.database.sequence_next_number(
+                transaction.connection, self._sql_sequence_name)
         else:
             return self.number_next_internal
 
@@ -260,22 +258,22 @@ class Sequence(ModelSQL, ModelView):
 
     def create_sql_sequence(self, number_next=None):
         'Create the SQL sequence'
-        cursor = Transaction().connection.cursor()
-        param = Flavor.get().param
+        transaction = Transaction()
+
         if self.type != 'incremental':
             return
         if number_next is None:
             number_next = self.number_next
-        cursor.execute('CREATE SEQUENCE "' + self._sql_sequence_name
-            + '" INCREMENT BY ' + param + ' START WITH ' + param,
-            (self.number_increment, number_next))
+        if sql_sequence:
+            transaction.database.sequence_create(transaction.connection,
+                self._sql_sequence_name, self.number_increment, number_next)
 
     def update_sql_sequence(self, number_next=None):
         'Update the SQL sequence'
-        TableHandler = backend.get('TableHandler')
-        cursor = Transaction().connection.cursor()
-        param = Flavor.get().param
-        exist = TableHandler.sequence_exist(self._sql_sequence_name)
+        transaction = Transaction()
+
+        exist = transaction.database.sequence_exist(
+            transaction.connection, self._sql_sequence_name)
         if self.type != 'incremental':
             if exist:
                 self.delete_sql_sequence()
@@ -285,17 +283,16 @@ class Sequence(ModelSQL, ModelView):
             return
         if number_next is None:
             number_next = self.number_next
-        cursor.execute('ALTER SEQUENCE "' + self._sql_sequence_name
-            + '" INCREMENT BY ' + param + ' RESTART WITH ' + param,
-            (self.number_increment, number_next))
+        transaction.database.sequence_update(transaction.connection,
+            self._sql_sequence_name, self.number_increment, number_next)
 
     def delete_sql_sequence(self):
         'Delete the SQL sequence'
-        cursor = Transaction().connection.cursor()
+        transaction = Transaction()
         if self.type != 'incremental':
             return
-        cursor.execute('DROP SEQUENCE "%s"'
-            % self._sql_sequence_name)
+        transaction.database.sequence_delete(
+            transaction.connection, self._sql_sequence_name)
 
     @classmethod
     def _process(cls, string, date=None):
diff --git a/trytond/ir/session.py b/trytond/ir/session.py
index 80cd99a..9d438b6 100644
--- a/trytond/ir/session.py
+++ b/trytond/ir/session.py
@@ -1,8 +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.
-import json
-import uuid
+import binascii
 import datetime
+import json
+import os
+try:
+    from secrets import token_hex
+except ImportError:
+    def token_hex(nbytes=None):
+        if nbytes is None:
+            nbytes = 32
+        return binascii.hexlify(os.urandom(nbytes)).decode('ascii')
 
 from trytond.model import ModelSQL, fields
 from trytond.config import config
@@ -33,9 +41,9 @@ class Session(ModelSQL):
         table = TableHandler(cls, module_name)
         table.index_action('create_uid', 'add')
 
-    @staticmethod
-    def default_key():
-        return uuid.uuid4().hex
+    @classmethod
+    def default_key(cls, nbytes=None):
+        return token_hex(nbytes)
 
     @classmethod
     def check(cls, user, key):
diff --git a/trytond/ir/translation.py b/trytond/ir/translation.py
index b3d21a9..30f7510 100644
--- a/trytond/ir/translation.py
+++ b/trytond/ir/translation.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.
-import zipfile
 import polib
 import xml.dom.minidom
 from difflib import SequenceMatcher
@@ -18,6 +17,7 @@ from sql.aggregate import Max
 
 from genshi.filters.i18n import extract as genshi_extract
 from relatorio.reporting import MIMETemplateLoader
+from relatorio.templates.opendocument import get_zip_file
 
 from ..model import ModelView, ModelSQL, fields, Unique
 from ..wizard import Wizard, StateView, StateTransition, StateAction, \
@@ -468,11 +468,12 @@ class Translation(ModelSQL, ModelView):
                 cursor.execute(*table.select(table.res_id, table.value,
                         where=where))
                 translations.update(cursor)
-        for res_id in ids:
-            value = translations.setdefault(res_id)
             # Don't store fuzzy translation in cache
             if not Transaction().context.get('fuzzy_translation', False):
-                cls._translation_cache.set((name, ttype, lang, res_id), value)
+                for res_id in to_fetch:
+                    value = translations.setdefault(res_id)
+                    cls._translation_cache.set(
+                        (name, ttype, lang, res_id), value)
         return translations
 
     @classmethod
@@ -628,6 +629,7 @@ class Translation(ModelSQL, ModelView):
                 res.update(cls.get_sources(list(sub_args)))
             return res
 
+        to_cache = []
         for name, ttype, lang, source in args:
             name = unicode(name)
             ttype = unicode(ttype)
@@ -638,6 +640,7 @@ class Translation(ModelSQL, ModelView):
             if trans != -1:
                 res[(name, ttype, lang, source)] = trans
             else:
+                to_cache.append((name, ttype, lang, source))
                 parent_lang = get_parent(lang)
                 if parent_lang:
                     parent_args.append((name, ttype, parent_lang, source))
@@ -674,8 +677,8 @@ class Translation(ModelSQL, ModelView):
                     if (name, ttype, lang, source) not in args:
                         source = None
                     res[(name, ttype, lang, source)] = value
-        for key, value in res.iteritems():
-            cls._translation_cache.set(key, value)
+        for key in to_cache:
+            cls._translation_cache.set(key, res[key])
         return res
 
     @classmethod
@@ -690,33 +693,10 @@ class Translation(ModelSQL, ModelView):
         ModelView._fields_view_get_cache.clear()
         vlist = [x.copy() for x in vlist]
 
-        cursor = Transaction().connection.cursor()
-        table = cls.__table__()
         for vals in vlist:
             if not vals.get('module'):
                 if Transaction().context.get('module'):
                     vals['module'] = Transaction().context['module']
-                elif vals.get('type', '') in {
-                        'report', 'view', 'wizard_button', 'selection',
-                        'error'}:
-                    cursor.execute(*table.select(table.module,
-                            where=(table.name == vals.get('name') or '')
-                            & (table.res_id == vals.get('res_id') or -1)
-                            & (table.lang == 'en')
-                            & (table.type == vals.get('type') or '')
-                            & (table.src == vals.get('src') or '')))
-                    fetchone = cursor.fetchone()
-                    if fetchone:
-                        vals['module'] = fetchone[0]
-                else:
-                    cursor.execute(*table.select(table.module, table.src,
-                            where=(table.name == vals.get('name') or '')
-                            & (table.res_id == vals.get('res_id') or -1)
-                            & (table.lang == 'en')
-                            & (table.type == vals.get('type') or '')))
-                    fetchone = cursor.fetchone()
-                    if fetchone:
-                        vals['module'], vals['src'] = fetchone
             vals['src_md5'] = cls.get_src_md5(vals.get('src'))
         return super(Translation, cls).create(vlist)
 
@@ -1007,21 +987,15 @@ class TranslationSet(Wizard):
                 for string in extract(child):
                     yield string
 
-        content = BytesIO(content)
-        try:
-            content = zipfile.ZipFile(content, mode='r')
-        except zipfile.BadZipfile:
-            return
-
-        content_xml = content.read('content.xml')
-        document = xml.dom.minidom.parseString(content_xml)
-        for string in extract(document.documentElement):
-            yield string
+        zip_ = get_zip_file(BytesIO(content))
+        for content_xml in [
+                zip_.read('content.xml'),
+                zip_.read('styles.xml'),
+                ]:
+            document = xml.dom.minidom.parseString(content_xml)
+            for string in extract(document.documentElement):
+                yield string
 
-        style_xml = content.read('styles.xml')
-        document = xml.dom.minidom.parseString(style_xml)
-        for string in extract(document.documentElement):
-            yield string
     extract_report_odt = extract_report_opendocument
     extract_report_odp = extract_report_opendocument
     extract_report_ods = extract_report_opendocument
diff --git a/trytond/ir/ui/calendar.rnc b/trytond/ir/ui/calendar.rnc
index da16cad..66d7082 100644
--- a/trytond/ir/ui/calendar.rnc
+++ b/trytond/ir/ui/calendar.rnc
@@ -18,7 +18,7 @@ data = element data { attlist.data, xpath* }
 attlist.data &= empty
 
 xpath = element xpath {
-    attlist.xpath, ( field )*
+    attlist.xpath, (field | calendar)*
   }
 attlist.xpath &= attribute expr { text }
 attlist.xpath &=
diff --git a/trytond/ir/ui/calendar.rng b/trytond/ir/ui/calendar.rng
index 800d86c..bec99ac 100644
--- a/trytond/ir/ui/calendar.rng
+++ b/trytond/ir/ui/calendar.rng
@@ -60,7 +60,10 @@
     <element name="xpath">
       <ref name="attlist.xpath"/>
       <zeroOrMore>
-        <ref name="field"/>
+        <choice>
+          <ref name="field"/>
+          <ref name="calendar"/>
+        </choice>
       </zeroOrMore>
     </element>
   </define>
diff --git a/trytond/ir/ui/form.rng b/trytond/ir/ui/form.rng
index bacb1a9..27d70d3 100644
--- a/trytond/ir/ui/form.rng
+++ b/trytond/ir/ui/form.rng
@@ -365,7 +365,7 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="toolbar" a:defaultValue="1">
+      <attribute name="toolbar" a:defaultValue="0">
         <choice>
           <value>0</value>
           <value>1</value>
diff --git a/trytond/ir/view/action_report_form.xml b/trytond/ir/view/action_report_form.xml
index ac77fd5..de9363c 100644
--- a/trytond/ir/view/action_report_form.xml
+++ b/trytond/ir/view/action_report_form.xml
@@ -23,6 +23,8 @@ this repository contains the full copyright notices and license terms. -->
             <field name="template_extension"/>
             <label name="extension"/>
             <field name="extension"/>
+            <label name="single"/>
+            <field name="single"/>
             <label name="direct_print"/>
             <field name="direct_print"/>
             <newline/>
diff --git a/trytond/ir/view/translation_list.xml b/trytond/ir/view/translation_list.xml
index 56be91a..b43806f 100644
--- a/trytond/ir/view/translation_list.xml
+++ b/trytond/ir/view/translation_list.xml
@@ -2,8 +2,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. -->
 <tree editable="bottom">
-    <field name="src"/>
-    <field name="value"/>
+    <field name="src" widget="char"/>
+    <field name="value" widget="char"/>
     <field name="fuzzy"/>
     <field name="name"/>
     <field name="lang"/>
diff --git a/trytond/model/fields/dict.py b/trytond/model/fields/dict.py
index 5b24dbe..6490f77 100644
--- a/trytond/model/fields/dict.py
+++ b/trytond/model/fields/dict.py
@@ -25,9 +25,12 @@ class Dict(Field):
     def get(self, ids, model, name, values=None):
         dicts = dict((id, None) for id in ids)
         for value in values or []:
-            if value[name]:
-                dicts[value['id']] = json.loads(value[name],
-                    object_hook=JSONDecoder())
+            data = value[name]
+            if data:
+                # If stored as JSON conversion is done on backend
+                if isinstance(data, basestring):
+                    data = json.loads(data, object_hook=JSONDecoder())
+                dicts[value['id']] = data
         return dicts
 
     def sql_format(self, value):
diff --git a/trytond/model/fields/many2many.py b/trytond/model/fields/many2many.py
index 09195c6..fcb0a68 100644
--- a/trytond/model/fields/many2many.py
+++ b/trytond/model/fields/many2many.py
@@ -233,14 +233,15 @@ class Many2Many(Field):
                 action = value[0]
                 args = value[1:]
                 actions[action](ids, *args)
-        if relation_to_create:
-            Relation.create(relation_to_create)
+        # Ordered operations to avoid uniqueness/overlapping constraints
         if relation_to_delete:
             Relation.delete(relation_to_delete)
-        if target_to_write:
-            Target.write(*target_to_write)
         if target_to_delete:
             Target.delete(target_to_delete)
+        if target_to_write:
+            Target.write(*target_to_write)
+        if relation_to_create:
+            Relation.create(relation_to_create)
 
     def get_target(self):
         'Return the target model'
@@ -325,9 +326,12 @@ class Many2Many(Field):
                         target_operator = 'child_of'
                     else:
                         target_operator = 'parent_of'
-                    query = Target.search([
-                            (domain[3], target_operator, value),
-                            ], order=[], query=True)
+                    target_domain = [
+                        (domain[3], target_operator, value),
+                        ]
+                    if self.filter:
+                        target_domain.append(self.filter)
+                    query = Target.search(target_domain, order=[], query=True)
                     where = (target.in_(query) & (origin != Null))
                     if history_where:
                         where &= history_where
@@ -339,13 +343,20 @@ class Many2Many(Field):
                         return ~expression
                     return expression
                 if isinstance(value, basestring):
-                    targets = Target.search([('rec_name', 'ilike', value)],
-                        order=[])
+                    target_domain = [('rec_name', 'ilike', value)]
+                    if self.filter:
+                        target_domain.append(self.filter)
+                    targets = Target.search(target_domain, order=[])
                     ids = [t.id for t in targets]
-                elif not isinstance(value, (list, tuple)):
-                    ids = [value]
                 else:
-                    ids = value
+                    if not isinstance(value, (list, tuple)):
+                        ids = [value]
+                    else:
+                        ids = value
+                    if self.filter:
+                        targets = Target.search(
+                            [('id', 'in', ids), self.filter], order=[])
+                        ids = [t.id for t in targets]
                 if not ids:
                     expression = Literal(False)
                     if operator.startswith('not'):
@@ -361,6 +372,9 @@ class Many2Many(Field):
                     where &= history_where
                 if origin_where:
                     where &= origin_where
+                if self.filter:
+                    query = Target.search(self.filter, order=[], query=True)
+                    where &= target.in_(query)
                 query = relation.select(origin, where=where)
                 expression = ~table.id.in_(query)
                 if operator == '!=':
@@ -385,6 +399,11 @@ class Many2Many(Field):
         rule_domain = Rule.domain_get(Relation.__name__, mode='read')
         if rule_domain:
             relation_domain = [relation_domain, rule_domain]
+        if self.filter:
+            relation_domain = [
+                relation_domain,
+                (self.target, 'where', self.filter),
+                ]
         relation_tables = {
             None: (relation, None),
             }
diff --git a/trytond/model/fields/one2many.py b/trytond/model/fields/one2many.py
index 39ac0e8..d80d170 100644
--- a/trytond/model/fields/one2many.py
+++ b/trytond/model/fields/one2many.py
@@ -213,12 +213,13 @@ class One2Many(Field):
                 action = value[0]
                 args = value[1:]
                 actions[action](ids, *args)
-        if to_create:
-            Target.create(to_create)
-        if to_write:
-            Target.write(*to_write)
+        # Ordered operations to avoid uniqueness/overlapping constraints
         if to_delete:
             Target.delete(to_delete)
+        if to_write:
+            Target.write(*to_write)
+        if to_create:
+            Target.create(to_create)
 
     def get_target(self):
         'Return the target Model'
@@ -262,6 +263,9 @@ class One2Many(Field):
                     where &= history_where
                 if origin_where:
                     where &= origin_where
+                if self.filter:
+                    query = Target.search(self.filter, order=[], query=True)
+                    where &= origin.in_(query)
                 query = target.select(origin, where=where)
                 expression = ~table.id.in_(query)
                 if operator == '!=':
@@ -284,6 +288,8 @@ class One2Many(Field):
         rule_domain = Rule.domain_get(Target.__name__, mode='read')
         if rule_domain:
             target_domain = [target_domain, rule_domain]
+        if self.filter:
+            target_domain = [target_domain, self.filter]
         target_tables = {
             None: (target, None),
             }
diff --git a/trytond/model/fields/one2one.py b/trytond/model/fields/one2one.py
index 3b9e322..c32ffb0 100644
--- a/trytond/model/fields/one2one.py
+++ b/trytond/model/fields/one2one.py
@@ -47,6 +47,7 @@ class One2One(Many2Many):
                             self.origin: record_id,
                             self.target: value,
                             })
+        # Ordered operations to avoid uniqueness/overlapping constraints
         if to_delete:
             Relation.delete(to_delete)
         if to_create:
diff --git a/trytond/model/fields/reference.py b/trytond/model/fields/reference.py
index 0e56cd6..e297350 100644
--- a/trytond/model/fields/reference.py
+++ b/trytond/model/fields/reference.py
@@ -6,12 +6,13 @@ from sql import Cast, Literal, Query, Expression
 from sql.functions import Substring, Position
 
 from .field import Field
+from .selection import SelectionMixin
 from ...transaction import Transaction
 from ...pool import Pool
 from ...rpc import RPC
 
 
-class Reference(Field):
+class Reference(Field, SelectionMixin):
     '''
     Define a reference field (``str``).
     '''
diff --git a/trytond/model/fields/selection.py b/trytond/model/fields/selection.py
index e7fddb0..f6c475a 100644
--- a/trytond/model/fields/selection.py
+++ b/trytond/model/fields/selection.py
@@ -10,7 +10,18 @@ from .field import Field
 from ...rpc import RPC
 
 
-class Selection(Field):
+class SelectionMixin:
+
+    def translated(self, name=None):
+        "Return a descriptor for the translated value of the field"
+        if name is None:
+            name = self.name
+        if name is None:
+            raise ValueError('Missing name argument')
+        return TranslatedSelection(name)
+
+
+class Selection(Field, SelectionMixin):
     '''
     Define a selection field (``str``).
     '''
@@ -70,14 +81,6 @@ class Selection(Field):
             whens.append((column == key, value))
         return [Case(*whens, else_=column)]
 
-    def translated(self, name=None):
-        "Return a descriptor for the translated value of the field"
-        if name is None:
-            name = self.name
-        if name is None:
-            raise ValueError('Missing name argument')
-        return TranslatedSelection(name)
-
 
 class TranslatedSelection(object):
     'A descriptor for translated value of Selection field'
@@ -86,6 +89,7 @@ class TranslatedSelection(object):
         self.name = name
 
     def __get__(self, inst, cls):
+        from ..model import Model
         if inst is None:
             return self
         with Transaction().set_context(getattr(inst, '_context', {})):
@@ -102,4 +106,7 @@ class TranslatedSelection(object):
         if value is None or value == '':
             if value not in selection:
                 value = {None: '', '': None}[value]
+        # Use Model __name__ for Reference field
+        elif isinstance(value, Model):
+            value = value.__name__
         return selection[value]
diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py
index 54a3065..4e66ddb 100644
--- a/trytond/model/modelsql.py
+++ b/trytond/model/modelsql.py
@@ -1051,6 +1051,19 @@ class ModelSQL(ModelStorage):
 
         cls.trigger_delete(records)
 
+        def get_related_records(Model, field_name, sub_ids):
+            if issubclass(Model, ModelSQL):
+                foreign_table = Model.__table__()
+                foreign_red_sql = reduce_ids(
+                    Column(foreign_table, field_name), sub_ids)
+                cursor.execute(*foreign_table.select(foreign_table.id,
+                        where=foreign_red_sql))
+                records = Model.browse([x[0] for x in cursor.fetchall()])
+            else:
+                with transaction.set_context(active_test=False):
+                    records = Model.search([(field_name, 'in', sub_ids)])
+            return records
+
         for sub_ids, sub_records in izip(
                 grouped_slice(ids), grouped_slice(records)):
             sub_ids = list(sub_ids)
@@ -1063,14 +1076,9 @@ class ModelSQL(ModelStorage):
                 if (not hasattr(Model, 'search')
                         or not hasattr(Model, 'write')):
                     continue
-                foreign_table = Model.__table__()
-                foreign_red_sql = reduce_ids(
-                    Column(foreign_table, field_name), sub_ids)
-                cursor.execute(*foreign_table.select(foreign_table.id,
-                        where=foreign_red_sql))
-                models = Model.browse([x[0] for x in cursor.fetchall()])
-                if models:
-                    Model.write(models, {
+                records = get_related_records(Model, field_name, sub_ids)
+                if records:
+                    Model.write(records, {
                             field_name: None,
                             })
 
@@ -1078,14 +1086,9 @@ class ModelSQL(ModelStorage):
                 if (not hasattr(Model, 'search')
                         or not hasattr(Model, 'delete')):
                     continue
-                foreign_table = Model.__table__()
-                foreign_red_sql = reduce_ids(
-                    Column(foreign_table, field_name), sub_ids)
-                cursor.execute(*foreign_table.select(foreign_table.id,
-                        where=foreign_red_sql))
-                models = Model.browse([x[0] for x in cursor.fetchall()])
-                if models:
-                    Model.delete(models)
+                records = get_related_records(Model, field_name, sub_ids)
+                if records:
+                    Model.delete(records)
 
             for Model, field_name in foreign_keys_tocheck:
                 with Transaction().set_context(_check_access=False):
diff --git a/trytond/model/modelstorage.py b/trytond/model/modelstorage.py
index e1bcc7d..99e3c6e 100644
--- a/trytond/model/modelstorage.py
+++ b/trytond/model/modelstorage.py
@@ -52,7 +52,7 @@ class ModelStorage(Model):
     create_date = fields.Timestamp('Create Date', readonly=True)
     write_uid = fields.Many2One('res.user', 'Write User', readonly=True)
     write_date = fields.Timestamp('Write Date', readonly=True)
-    rec_name = fields.Function(fields.Char('Name'), 'get_rec_name',
+    rec_name = fields.Function(fields.Char('Record Name'), 'get_rec_name',
             searcher='search_rec_name')
 
     @classmethod
@@ -66,12 +66,12 @@ class ModelStorage(Model):
                     'write': RPC(readonly=False,
                         instantiate=slice(0, None, 2)),
                     'delete': RPC(readonly=False, instantiate=0),
-                    'copy': RPC(readonly=False, instantiate=0,
+                    'copy': RPC(readonly=False, instantiate=0, unique=False,
                         result=lambda r: map(int, r)),
                     'search': RPC(result=lambda r: map(int, r)),
                     'search_count': RPC(),
                     'search_read': RPC(),
-                    'export_data': RPC(instantiate=0),
+                    'export_data': RPC(instantiate=0, unique=False),
                     'import_data': RPC(readonly=False),
                     })
         cls._constraints = []
@@ -270,10 +270,16 @@ class ModelStorage(Model):
             if 'state' in cls._defaults:
                 default['state'] = cls._defaults['state']()
 
+        def is_readonly(Model):
+            return (not issubclass(Model, ModelStorage)
+                or (hasattr(Model, 'table_query')
+                    and Model.table_query()))
+
         def convert_data(field_defs, data):
             data = data.copy()
             for field_name in field_defs:
                 ftype = field_defs[field_name]['type']
+                field = cls._fields[field_name]
 
                 if field_name in (
                         'create_date',
@@ -285,9 +291,8 @@ class ModelStorage(Model):
 
                 if field_name in default:
                     data[field_name] = default[field_name]
-                elif (isinstance(cls._fields[field_name], fields.Function)
-                        and not isinstance(
-                            cls._fields[field_name], fields.MultiValue)):
+                if (isinstance(field, fields.Function)
+                        and not isinstance(field, fields.MultiValue)):
                     del data[field_name]
                 elif ftype in ('many2one', 'one2one'):
                     try:
@@ -296,10 +301,14 @@ class ModelStorage(Model):
                     except Exception:
                         pass
                 elif ftype in ('one2many',):
-                    if data[field_name]:
+                    if is_readonly(field.get_target()):
+                        del data[field_name]
+                    elif data[field_name]:
                         data[field_name] = [('copy', data[field_name])]
                 elif ftype == 'many2many':
-                    if data[field_name]:
+                    if is_readonly(pool.get(field.relation_name)):
+                        del data[field_name]
+                    elif data[field_name]:
                         data[field_name] = [('add', data[field_name])]
             if 'id' in data:
                 del data['id']
@@ -991,12 +1000,16 @@ class ModelStorage(Model):
 
                 validate_domain(field)
 
-                def required_test(value, field_name):
+                def required_test(value, field_name, field):
                     if (isinstance(value, (type(None), type(False), list,
                                     tuple, basestring, dict))
                             and not value):
                         cls.raise_user_error('required_validation_record',
                             error_args=cls._get_error_args(field_name))
+                    if (field._type == 'reference'
+                            and not isinstance(value, ModelStorage)):
+                        cls.raise_user_error('required_validation_record',
+                            error_args=cls._get_error_args(field_name))
                 # validate states required
                 if field.states and 'required' in field.states:
                     if is_pyson(field.states['required']):
@@ -1012,16 +1025,17 @@ class ModelStorage(Model):
                             required = PYSONDecoder(env).decode(pyson_required)
                             if required:
                                 required_test(getattr(record, field_name),
-                                    field_name)
+                                    field_name, field)
                     else:
                         if field.states['required']:
                             for record in records:
                                 required_test(getattr(record, field_name),
-                                    field_name)
+                                    field_name, field)
                 # validate required
                 if field.required:
                     for record in records:
-                        required_test(getattr(record, field_name), field_name)
+                        required_test(
+                            getattr(record, field_name), field_name, field)
                 # validate size
                 if hasattr(field, 'size') and field.size is not None:
                     for record in records:
@@ -1424,7 +1438,7 @@ class ModelStorage(Model):
                 to_write = []
                 for target in targets:
                     if target.id is None or target.id < 0:
-                        if field._type == 'one2many':
+                        if field._type == 'one2many' and field.field:
                             # Don't store old target link
                             setattr(target, field.field, None)
                         to_create.append(target._save_values)
@@ -1457,9 +1471,10 @@ class ModelStorage(Model):
             save_values = {}
             to_create = []
             to_write = []
-            transaction = records[0]._transaction
-            user = records[0]._user
-            context = records[0]._context
+            first = next(iter(records))
+            transaction = first._transaction
+            user = first._user
+            context = first._context
             for record in records:
                 if (record._transaction != transaction
                         or user != record._user
diff --git a/trytond/model/modelview.py b/trytond/model/modelview.py
index 3c8be21..a92c6ef 100644
--- a/trytond/model/modelview.py
+++ b/trytond/model/modelview.py
@@ -410,6 +410,11 @@ class ModelView(Model):
                     if colspan is not None:
                         element.attrib['colspan'] = colspan
 
+        # Remove empty pages
+        if type == 'form':
+            for page in tree.xpath('//page[not(descendant::*)]'):
+                page.getparent().remove(page)
+
         if type == 'tree':
             ViewTreeWidth = pool.get('ir.ui.view_tree_width')
             viewtreewidth_ids = ViewTreeWidth.search([
@@ -590,6 +595,8 @@ class ModelView(Model):
             transaction = Transaction()
             check_access = transaction.context.get('_check_access')
 
+            assert len(records) == len(set(records)), "Duplicate records"
+
             if (transaction.user != 0) and check_access:
                 ModelAccess.check(cls.__name__, 'read')
                 groups = set(User.get_groups())
@@ -715,7 +722,18 @@ class ModelView(Model):
                             target_changed['id'] = target.id
                             value['update'].append(target_changed)
                     else:
-                        value['add'].append((i, target._default_values))
+                        if isinstance(target, ModelView):
+                            # Ensure initial values are returned because target
+                            # was instantiated on server side.
+                            target_init_values = target._init_values
+                            target._init_values = None
+                            try:
+                                added_values = target._changed_values
+                            finally:
+                                target._init_values = target_init_values
+                        else:
+                            added_values = target._default_values
+                        value['add'].append((i, added_values))
                 if not value['remove']:
                     del value['remove']
                 if not value:
diff --git a/trytond/model/multivalue.py b/trytond/model/multivalue.py
index f3d7e60..de1fe44 100644
--- a/trytond/model/multivalue.py
+++ b/trytond/model/multivalue.py
@@ -60,14 +60,14 @@ class MultiValueMixin(object):
         else:
             return value
 
-    def set_multivalue(self, name, value, _save=True, **pattern):
+    def set_multivalue(self, name, value, save=True, **pattern):
         Value = self.multivalue_model(name)
         values = self.__values(name, pattern, match_none=True)
         if not values:
             values = [self.multivalue_record(name, **pattern)]
         for record in values:
             setattr(record, name, value)
-        if _save:
+        if save:
             Value.save(values)
         else:
             return values
@@ -77,7 +77,7 @@ class MultiValueMixin(object):
         Value = cls.multivalue_model(name)
         to_save = []
         for record in records:
-            to_save.extend(record.set_multivalue(name, val, _save=False))
+            to_save.extend(record.set_multivalue(name, val, save=False))
         Value.save(to_save)
 
 
diff --git a/trytond/model/workflow.py b/trytond/model/workflow.py
index 940eec9..02b80b6 100644
--- a/trytond/model/workflow.py
+++ b/trytond/model/workflow.py
@@ -23,6 +23,8 @@ class Workflow(object):
                 filtered = []
                 to_update = OrderedDict()
 
+                assert len(records) == len(set(records)), "Duplicate records"
+
                 for record in records:
                     current_state = getattr(record, cls._transition_state)
                     transition = (current_state, state)
diff --git a/trytond/modules/__init__.py b/trytond/modules/__init__.py
index b25506f..0c6b020 100644
--- a/trytond/modules/__init__.py
+++ b/trytond/modules/__init__.py
@@ -16,6 +16,7 @@ from sql.functions import CurrentTimestamp
 
 import trytond.tools as tools
 from trytond.config import config
+from trytond.exceptions import MissingDependenciesException
 from trytond.transaction import Transaction
 from trytond import backend
 import trytond.convert as convert
@@ -38,8 +39,7 @@ def update_egg_modules():
     try:
         import pkg_resources
         for ep in pkg_resources.iter_entry_points('trytond.modules'):
-            mod_name = ep.module_name.split('.')[-1]
-            EGG_MODULES[mod_name] = ep
+            EGG_MODULES[ep.name] = ep
     except ImportError:
         pass
 update_egg_modules()
@@ -187,7 +187,7 @@ def create_graph(module_list):
             continue
         missings |= set((x for x in deps if x not in graph))
     if missings:
-        raise Exception('Missing dependencies: %s' % list(missings
+        raise MissingDependenciesException(list(missings
                 - set((p[0] for p in packages))))
     return graph, packages, later
 
@@ -379,10 +379,15 @@ def register_classes():
         MODULES.append(module)
 
 
-def load_modules(database_name, pool, update=None, lang=None):
+def load_modules(
+        database_name, pool, update=None, lang=None, installdeps=False):
     res = True
+    if update:
+        update = update[:]
+    else:
+        update = []
 
-    def _load_modules():
+    def _load_modules(update):
         global res
         TableHandler = backend.get('TableHandler')
         transaction = Transaction()
@@ -414,9 +419,15 @@ def load_modules(database_name, pool, update=None, lang=None):
                         where=ir_module.state.in_(('activated', 'to upgrade',
                                 'to remove'))))
             module_list = [name for (name,) in cursor.fetchall()]
-            if update:
+            graph = None
+            while graph is None:
                 module_list += update
-            graph = create_graph(module_list)[0]
+                try:
+                    graph = create_graph(module_list)[0]
+                except MissingDependenciesException as e:
+                    if not installdeps:
+                        raise
+                    update += e.missings
 
             load_module_graph(graph, pool, update, lang)
 
@@ -448,11 +459,11 @@ def load_modules(database_name, pool, update=None, lang=None):
 
     if not Transaction().connection:
         with Transaction().start(database_name, 0):
-            _load_modules()
+            _load_modules(update)
     else:
         with Transaction().new_transaction(), \
                 Transaction().set_user(0), \
                 Transaction().reset_context():
-            _load_modules()
+            _load_modules(update)
 
     return res
diff --git a/trytond/pool.py b/trytond/pool.py
index 3b9a6ee..d110c77 100644
--- a/trytond/pool.py
+++ b/trytond/pool.py
@@ -133,7 +133,7 @@ class Pool(object):
         '''
         return self._locks[self.database_name]
 
-    def init(self, update=None, lang=None):
+    def init(self, update=None, lang=None, installdeps=False):
         '''
         Init pool
         Set update to proceed to update
@@ -152,7 +152,7 @@ class Pool(object):
             for type in self.classes.keys():
                 self._pool[self.database_name][type] = {}
             restart = not load_modules(self.database_name, self, update=update,
-                    lang=lang)
+                    lang=lang, installdeps=installdeps)
             if restart:
                 self.init()
 
diff --git a/trytond/protocols/wrappers.py b/trytond/protocols/wrappers.py
index e493a12..9dfccfe 100644
--- a/trytond/protocols/wrappers.py
+++ b/trytond/protocols/wrappers.py
@@ -54,20 +54,18 @@ class Request(_Request):
 
     @cached_property
     def user_id(self):
-        database_name = self.view_args['database_name']
+        database_name = self.view_args.get('database_name')
+        if not database_name:
+            return None
         auth = self.authorization
         if not auth:
-            abort(401)
+            return None
         if auth.type == 'session':
             user_id = security.check(
                 database_name, auth.get('userid'), auth.get('session'))
-            if not user_id:
-                abort(403)
         else:
             user_id = security.login(
                 database_name, auth.username, auth, cache=False)
-            if not user_id:
-                abort(401)
         return user_id
 
 
@@ -94,6 +92,13 @@ def parse_authorization_header(value):
                 })
 
 
+def set_max_request_size(size):
+    def decorator(func):
+        func.max_request_size = size
+        return func
+    return decorator
+
+
 def with_pool(func):
     @wraps(func)
     def wrapper(request, database_name, *args, **kwargs):
diff --git a/trytond/report/report.py b/trytond/report/report.py
index 5ed1f74..bec5022 100644
--- a/trytond/report/report.py
+++ b/trytond/report/report.py
@@ -1,10 +1,20 @@
 # 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 datetime
+import os
+import subprocess
 import tempfile
 import warnings
-import subprocess
+import zipfile
+from email.mime.multipart import MIMEMultipart
+from email.mime.text import MIMEText
+from io import BytesIO
+
+try:
+    import html2text
+except ImportError:
+    html2text = None
+
 warnings.simplefilter("ignore")
 import relatorio.reporting
 warnings.resetwarnings()
@@ -26,7 +36,7 @@ MIMETYPES = {
     'odp': 'application/vnd.oasis.opendocument.presentation',
     'ods': 'application/vnd.oasis.opendocument.spreadsheet',
     'odg': 'application/vnd.oasis.opendocument.graphics',
-    'plain': 'text/plain',
+    'txt': 'text/plain',
     'xml': 'text/xml',
     'html': 'text/html',
     'xhtml': 'text/xhtml',
@@ -144,23 +154,38 @@ class Report(URLMixin, PoolBase):
         else:
             action_report = ActionReport(action_id)
 
-        records = None
+        records = []
         model = action_report.model or data.get('model')
         if model:
             records = cls._get_records(ids, model, data)
-        report_context = cls.get_context(records, data)
-        oext, content = cls.convert(action_report,
-            cls.render(action_report, report_context))
+        if action_report.single and len(records) > 1:
+            content = BytesIO()
+            with zipfile.ZipFile(content, 'w') as content_zip:
+                for record in records:
+                    oext, rcontent = cls._execute(
+                        [record], data, action_report)
+                    rfilename = '%s-%s.%s' % (
+                        record.id, record.rec_name, oext)
+                    content_zip.writestr(rfilename, rcontent)
+            content = content.getvalue()
+            oext = 'zip'
+        else:
+            oext, content = cls._execute(records, data, action_report)
         if not isinstance(content, unicode):
             content = bytearray(content) if bytes == str else bytes(content)
         return (oext, content, action_report.direct_print, action_report.name)
 
     @classmethod
+    def _execute(cls, records, data, action):
+        report_context = cls.get_context(records, data)
+        return cls.convert(action, cls.render(action, report_context))
+
+    @classmethod
     def _get_records(cls, ids, model, data):
         pool = Pool()
         Model = pool.get(model)
 
-        class TranslateModel:
+        class TranslateModel(object):
             _languages = {}
 
             def __init__(self, id):
@@ -180,6 +205,15 @@ class Report(URLMixin, PoolBase):
                     id2record = TranslateModel._languages[self._language]
                 record = id2record[self.id]
                 return getattr(record, name)
+
+            def __int__(self):
+                return int(self.id)
+
+            def __str__(self):
+                return '%s,%s' % (Model.__name__, self.id)
+
+            def __unicode__(self):
+                return u'%s,%s' % (Model.__name__, self.id)
         return [TranslateModel(id) for id in ids]
 
     @classmethod
@@ -192,6 +226,7 @@ class Report(URLMixin, PoolBase):
         report_context['context'] = Transaction().context
         report_context['user'] = User(Transaction().user)
         report_context['records'] = records
+        report_context['record'] = records[0] if records else None
         report_context['format_date'] = cls.format_date
         report_context['format_currency'] = cls.format_currency
         report_context['format_number'] = cls.format_number
@@ -298,3 +333,40 @@ class Report(URLMixin, PoolBase):
 
         return Lang.format(lang, '%.' + str(digits) + 'f', value,
             grouping=grouping, monetary=monetary)
+
+
+def get_email(report, record, languages):
+    "Return email.mime and title from the report execution"
+    pool = Pool()
+    ActionReport = pool.get('ir.action.report')
+    report_id = None
+    if isinstance(report, Report):
+        Report_ = report
+    else:
+        if isinstance(report, ActionReport):
+            report_name = report.report_name
+            report_id = report.id
+        else:
+            report_name = report
+        Report_ = pool.get(report_name, type='report')
+    converter = None
+    msg = MIMEMultipart('alternative')
+    msg.add_header('Content-Language', ', '.join(l.code for l in languages))
+    for language in languages:
+        with Transaction().set_context(language=language.code):
+            ext, content, _, title = Report_.execute(
+                [record.id], {
+                    'action_id': report_id,
+                    'language': language,
+                    })
+        if ext == 'html' and html2text:
+            if not converter:
+                converter = html2text.HTML2Text()
+            part = MIMEText(
+                converter.handle(content), 'plain', _charset='utf-8')
+            part.add_header('Content-Language', language.code)
+            msg.attach(part)
+        part = MIMEText(content, ext, _charset='utf-8')
+        part.add_header('Content-Language', language.code)
+        msg.attach(part)
+    return msg, title
diff --git a/trytond/res/ir.py b/trytond/res/ir.py
index bdc2ded..0c7f0e9 100644
--- a/trytond/res/ir.py
+++ b/trytond/res/ir.py
@@ -3,6 +3,7 @@
 from ..model import ModelSQL, fields
 from .. import backend
 from ..pool import Pool, PoolMeta
+from ..transaction import Transaction
 
 __all__ = [
     'UIMenuGroup', 'ActionGroup', 'ModelFieldGroup', 'ModelButtonGroup',
@@ -24,10 +25,11 @@ class UIMenuGroup(ModelSQL):
     @classmethod
     def __register__(cls, module_name):
         TableHandler = backend.get('TableHandler')
+        transaction = Transaction()
         # Migration from 1.0 table name change
         TableHandler.table_rename('ir_ui_menu_group_rel', cls._table)
-        TableHandler.sequence_rename('ir_ui_menu_group_rel_id_seq',
-            cls._table + '_id_seq')
+        transaction.database.sequence_rename(transaction.connection,
+            'ir_ui_menu_group_rel_id_seq', cls._table + '_id_seq')
         # Migration from 2.0 menu_id and gid renamed into menu group
         table = TableHandler(cls, module_name)
         table.column_rename('menu_id', 'menu')
@@ -65,10 +67,11 @@ class ActionGroup(ModelSQL):
     @classmethod
     def __register__(cls, module_name):
         TableHandler = backend.get('TableHandler')
+        transaction = Transaction()
         # Migration from 1.0 table name change
         TableHandler.table_rename('ir_action_group_rel', cls._table)
-        TableHandler.sequence_rename('ir_action_group_rel_id_seq',
-            cls._table + '_id_seq')
+        transaction.database.sequence_rename(transaction.connection,
+            'ir_action_group_rel_id_seq', cls._table + '_id_seq')
         # Migration from 2.0 action_id and gid renamed into action and group
         table = TableHandler(cls, module_name)
         table.column_rename('action_id', 'action')
@@ -119,10 +122,12 @@ class ModelFieldGroup(ModelSQL):
     @classmethod
     def __register__(cls, module_name):
         TableHandler = backend.get('TableHandler')
+        database = Transaction().database
+        transaction = Transaction()
         # Migration from 1.0 table name change
         TableHandler.table_rename('ir_model_field_group_rel', cls._table)
-        TableHandler.sequence_rename('ir_model_field_group_rel_id_seq',
-            cls._table + '_id_seq')
+        transaction.database.sequence_rename(transaction.connection,
+            'ir_model_field_group_rel_id_seq', cls._table + '_id_seq')
         table = TableHandler(cls, module_name)
         # Migration from 2.6: field_id and group_id renamed to field and group
         table.column_rename('field_id', 'field')
@@ -189,10 +194,11 @@ class RuleGroupGroup(ModelSQL):
     @classmethod
     def __register__(cls, module_name):
         TableHandler = backend.get('TableHandler')
+        transaction = Transaction()
         # Migration from 1.0 table name change
         TableHandler.table_rename('group_rule_group_rel', cls._table)
-        TableHandler.sequence_rename('group_rule_group_rel_id_seq',
-            cls._table + '_id_seq')
+        transaction.database.sequence_rename(transaction.connection,
+            'group_rule_group_rel_id_seq', cls._table + '_id_seq')
         # Migration from 2.0 rule_group_id and group_id renamed into rule_group
         # and group
         table = TableHandler(cls, module_name)
@@ -212,10 +218,11 @@ class RuleGroupUser(ModelSQL):
     @classmethod
     def __register__(cls, module_name):
         TableHandler = backend.get('TableHandler')
+        transaction = Transaction()
         # Migration from 1.0 table name change
         TableHandler.table_rename('user_rule_group_rel', cls._table)
-        TableHandler.sequence_rename('user_rule_group_rel_id_seq',
-            cls._table + '_id_seq')
+        transaction.database.sequence_rename(transaction.connection,
+            'user_rule_group_rel_id_seq', cls._table + '_id_seq')
         # Migration from 2.0 rule_group_id and user_id renamed into rule_group
         # and user
         table = TableHandler(cls, module_name)
diff --git a/trytond/res/locale/bg.po b/trytond/res/locale/bg.po
index dec04b3..c284c1e 100644
--- a/trytond/res/locale/bg.po
+++ b/trytond/res/locale/bg.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -65,8 +65,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action-res.group,write_date:"
 msgid "Write Date"
@@ -101,8 +101,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button-res.group,write_date:"
 msgid "Write Date"
@@ -144,8 +144,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field-res.group,write_date:"
 msgid "Write Date"
@@ -172,8 +172,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -200,8 +200,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -248,8 +248,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
 msgid "Sequence Type"
@@ -284,8 +284,8 @@ msgid "Menu"
 msgstr "Меню"
 
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
 msgid "Write Date"
@@ -329,8 +329,8 @@ msgid "Name"
 msgstr "Име"
 
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -413,8 +413,8 @@ msgid "PySON Menu"
 msgstr ""
 
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -461,8 +461,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "Име на прикачен файл"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-ir.action,user:"
 msgid "User"
@@ -493,8 +493,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-res.group,user:"
 msgid "User"
@@ -531,10 +531,9 @@ msgctxt "field:res.user.application,key:"
 msgid "Key"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -579,10 +578,9 @@ msgctxt "field:res.user.login.attempt,login:"
 msgid "Login"
 msgstr "Потребителско име"
 
-#, fuzzy
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "Име на прикачен файл"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:res.user.login.attempt,write_date:"
@@ -615,8 +613,8 @@ msgid "Name"
 msgstr "Име"
 
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "Име"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.warning,user:"
 msgid "User"
diff --git a/trytond/res/locale/ca.po b/trytond/res/locale/ca.po
index 8beca43..03a2595 100644
--- a/trytond/res/locale/ca.po
+++ b/trytond/res/locale/ca.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -68,8 +68,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.action-res.group,write_date:"
 msgid "Write Date"
@@ -104,8 +104,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.model.button-res.group,write_date:"
 msgid "Write Date"
@@ -144,8 +144,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.model.field-res.group,write_date:"
 msgid "Write Date"
@@ -172,8 +172,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -200,8 +200,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -248,8 +248,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
 msgid "Sequence Type"
@@ -284,8 +284,8 @@ msgid "Menu"
 msgstr "Menú"
 
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
 msgid "Write Date"
@@ -328,8 +328,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -412,8 +412,8 @@ msgid "PySON Menu"
 msgstr "Menú PySON"
 
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -460,8 +460,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:res.user-ir.action,user:"
 msgid "User"
@@ -492,8 +492,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:res.user-res.group,user:"
 msgid "User"
@@ -528,8 +528,8 @@ msgid "Key"
 msgstr "Clau"
 
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -568,8 +568,8 @@ msgid "Login"
 msgstr "Nom usuari"
 
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:res.user.login.attempt,write_date:"
 msgid "Write Date"
@@ -600,8 +600,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom del registre"
 
 msgctxt "field:res.user.warning,user:"
 msgid "User"
@@ -725,7 +725,7 @@ msgstr "Sol·lcitat"
 
 msgctxt "selection:res.user.application,state:"
 msgid "Validated"
-msgstr "Validad"
+msgstr "Validada"
 
 msgctxt "view:res.group:"
 msgid "Access Permissions"
diff --git a/trytond/res/locale/cs.po b/trytond/res/locale/cs.po
index 66f0afb..41a4642 100644
--- a/trytond/res/locale/cs.po
+++ b/trytond/res/locale/cs.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -64,10 +64,9 @@ msgctxt "field:ir.action-res.group,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action-res.group,write_date:"
 msgid "Write Date"
@@ -101,10 +100,9 @@ msgctxt "field:ir.model.button-res.group,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button-res.group,write_date:"
 msgid "Write Date"
@@ -142,10 +140,9 @@ msgctxt "field:ir.model.field-res.group,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field-res.group,write_date:"
 msgid "Write Date"
@@ -171,10 +168,9 @@ msgctxt "field:ir.rule.group-res.group,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -200,10 +196,9 @@ msgctxt "field:ir.rule.group-res.user,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -249,10 +244,9 @@ msgctxt "field:ir.sequence.type-res.group,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
 msgid "Sequence Type"
@@ -286,10 +280,9 @@ msgctxt "field:ir.ui.menu-res.group,menu:"
 msgid "Menu"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
 msgid "Write Date"
@@ -332,10 +325,9 @@ msgctxt "field:res.group,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -418,10 +410,9 @@ msgctxt "field:res.user,pyson_menu:"
 msgid "PySON Menu"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -467,10 +458,9 @@ msgctxt "field:res.user-ir.action,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-ir.action,user:"
 msgid "User"
@@ -500,10 +490,9 @@ msgctxt "field:res.user-res.group,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-res.group,user:"
 msgid "User"
@@ -537,10 +526,9 @@ msgctxt "field:res.user.application,key:"
 msgid "Key"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -578,10 +566,9 @@ msgctxt "field:res.user.login.attempt,login:"
 msgid "Login"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.login.attempt,write_date:"
 msgid "Write Date"
@@ -612,10 +599,9 @@ msgctxt "field:res.user.warning,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.warning,user:"
 msgid "User"
diff --git a/trytond/res/locale/de.po b/trytond/res/locale/de.po
index eec8302..6ed57f7 100644
--- a/trytond/res/locale/de.po
+++ b/trytond/res/locale/de.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -67,8 +67,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action-res.group,write_date:"
 msgid "Write Date"
@@ -103,8 +103,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button-res.group,write_date:"
 msgid "Write Date"
@@ -143,8 +143,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field-res.group,write_date:"
 msgid "Write Date"
@@ -171,8 +171,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -199,8 +199,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -247,8 +247,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
 msgid "Sequence Type"
@@ -283,8 +283,8 @@ msgid "Menu"
 msgstr "Menü"
 
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
 msgid "Write Date"
@@ -327,8 +327,8 @@ msgid "Name"
 msgstr "Gruppenname"
 
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -411,8 +411,8 @@ msgid "PySON Menu"
 msgstr "PySON Menü"
 
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -459,8 +459,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-ir.action,user:"
 msgid "User"
@@ -491,8 +491,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-res.group,user:"
 msgid "User"
@@ -527,8 +527,8 @@ msgid "Key"
 msgstr "Schlüssel"
 
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -567,8 +567,8 @@ msgid "Login"
 msgstr "Anmeldename"
 
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.login.attempt,write_date:"
 msgid "Write Date"
@@ -599,8 +599,8 @@ msgid "Name"
 msgstr "Name"
 
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "Name"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.warning,user:"
 msgid "User"
diff --git a/trytond/res/locale/es.po b/trytond/res/locale/es.po
index ea6e71d..d0e3f62 100644
--- a/trytond/res/locale/es.po
+++ b/trytond/res/locale/es.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -68,8 +68,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.action-res.group,write_date:"
 msgid "Write Date"
@@ -104,8 +104,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.model.button-res.group,write_date:"
 msgid "Write Date"
@@ -144,8 +144,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.model.field-res.group,write_date:"
 msgid "Write Date"
@@ -172,8 +172,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -200,8 +200,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -248,8 +248,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
 msgid "Sequence Type"
@@ -284,8 +284,8 @@ msgid "Menu"
 msgstr "Menú"
 
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
 msgid "Write Date"
@@ -328,8 +328,8 @@ msgid "Name"
 msgstr "Nombre"
 
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -412,8 +412,8 @@ msgid "PySON Menu"
 msgstr "Menú PySON"
 
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -460,8 +460,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:res.user-ir.action,user:"
 msgid "User"
@@ -492,8 +492,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:res.user-res.group,user:"
 msgid "User"
@@ -528,8 +528,8 @@ msgid "Key"
 msgstr "Clave"
 
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -568,8 +568,8 @@ msgid "Login"
 msgstr "Nombre usuario"
 
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:res.user.login.attempt,write_date:"
 msgid "Write Date"
@@ -600,8 +600,8 @@ msgid "Name"
 msgstr "Nombre"
 
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "Nombre"
+msgid "Record Name"
+msgstr "Nombre del registro"
 
 msgctxt "field:res.user.warning,user:"
 msgid "User"
@@ -725,7 +725,7 @@ msgstr "Solicitado"
 
 msgctxt "selection:res.user.application,state:"
 msgid "Validated"
-msgstr "Validado"
+msgstr "Validada"
 
 msgctxt "view:res.group:"
 msgid "Access Permissions"
diff --git a/trytond/res/locale/es_419.po b/trytond/res/locale/es_419.po
index e6d89b8..bf11394 100644
--- a/trytond/res/locale/es_419.po
+++ b/trytond/res/locale/es_419.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -67,7 +67,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.action-res.group,write_date:"
@@ -104,7 +104,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.button-res.group,write_date:"
@@ -146,7 +146,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.field-res.group,write_date:"
@@ -175,7 +175,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
@@ -204,7 +204,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
@@ -254,7 +254,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
@@ -291,7 +291,7 @@ msgid "Menu"
 msgstr ""
 
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
@@ -336,7 +336,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:res.group,rule_groups:"
@@ -422,7 +422,7 @@ msgid "PySON Menu"
 msgstr ""
 
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:res.user,rule_groups:"
@@ -470,7 +470,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -504,7 +504,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -542,7 +542,7 @@ msgid "Key"
 msgstr ""
 
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:res.user.application,state:"
@@ -584,7 +584,7 @@ msgid "Login"
 msgstr ""
 
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:res.user.login.attempt,write_date:"
@@ -617,7 +617,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
diff --git a/trytond/res/locale/fr.po b/trytond/res/locale/fr.po
index bbd7829..9d489a8 100644
--- a/trytond/res/locale/fr.po
+++ b/trytond/res/locale/fr.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -69,8 +69,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.action-res.group,write_date:"
 msgid "Write Date"
@@ -105,8 +105,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.model.button-res.group,write_date:"
 msgid "Write Date"
@@ -145,8 +145,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.model.field-res.group,write_date:"
 msgid "Write Date"
@@ -173,8 +173,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -201,8 +201,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -249,8 +249,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
 msgid "Sequence Type"
@@ -285,8 +285,8 @@ msgid "Menu"
 msgstr "Menu"
 
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
 msgid "Write Date"
@@ -329,8 +329,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -413,8 +413,8 @@ msgid "PySON Menu"
 msgstr "Menu PySON"
 
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -461,8 +461,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:res.user-ir.action,user:"
 msgid "User"
@@ -493,8 +493,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:res.user-res.group,user:"
 msgid "User"
@@ -529,8 +529,8 @@ msgid "Key"
 msgstr "Clé"
 
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -569,8 +569,8 @@ msgid "Login"
 msgstr "Identifiant"
 
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:res.user.login.attempt,write_date:"
 msgid "Write Date"
@@ -601,8 +601,8 @@ msgid "Name"
 msgstr "Nom"
 
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "Nom"
+msgid "Record Name"
+msgstr "Nom de l'enregistrement"
 
 msgctxt "field:res.user.warning,user:"
 msgid "User"
diff --git a/trytond/res/locale/hu_HU.po b/trytond/res/locale/hu_HU.po
index 2e6f1d1..12861e9 100644
--- a/trytond/res/locale/hu_HU.po
+++ b/trytond/res/locale/hu_HU.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -65,8 +65,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action-res.group,write_date:"
 msgid "Write Date"
@@ -101,8 +101,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button-res.group,write_date:"
 msgid "Write Date"
@@ -143,8 +143,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field-res.group,write_date:"
 msgid "Write Date"
@@ -171,8 +171,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -199,8 +199,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -247,8 +247,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
 msgid "Sequence Type"
@@ -283,8 +283,8 @@ msgid "Menu"
 msgstr "Menü"
 
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
 msgid "Write Date"
@@ -328,8 +328,8 @@ msgid "Name"
 msgstr "Név"
 
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -412,8 +412,8 @@ msgid "PySON Menu"
 msgstr "PySON Menü"
 
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -460,8 +460,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-ir.action,user:"
 msgid "User"
@@ -492,8 +492,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-res.group,user:"
 msgid "User"
@@ -530,10 +530,9 @@ msgctxt "field:res.user.application,key:"
 msgid "Key"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -575,8 +574,8 @@ msgid "Login"
 msgstr "Bejelentkezés"
 
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.login.attempt,write_date:"
 msgid "Write Date"
@@ -607,8 +606,8 @@ msgid "Name"
 msgstr "Név"
 
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "Név"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.warning,user:"
 msgid "User"
diff --git a/trytond/res/locale/it_IT.po b/trytond/res/locale/it_IT.po
index d9f264c..3ec7951 100644
--- a/trytond/res/locale/it_IT.po
+++ b/trytond/res/locale/it_IT.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -65,8 +65,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action-res.group,write_date:"
 msgid "Write Date"
@@ -101,8 +101,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button-res.group,write_date:"
 msgid "Write Date"
@@ -143,8 +143,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field-res.group,write_date:"
 msgid "Write Date"
@@ -171,8 +171,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -199,8 +199,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -247,8 +247,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
 msgid "Sequence Type"
@@ -283,8 +283,8 @@ msgid "Menu"
 msgstr "Menu"
 
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
 msgid "Write Date"
@@ -328,8 +328,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -413,8 +413,8 @@ msgid "PySON Menu"
 msgstr "Menu PySON"
 
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -461,8 +461,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-ir.action,user:"
 msgid "User"
@@ -493,8 +493,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-res.group,user:"
 msgid "User"
@@ -531,10 +531,9 @@ msgctxt "field:res.user.application,key:"
 msgid "Key"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -576,8 +575,8 @@ msgid "Login"
 msgstr "Login"
 
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.login.attempt,write_date:"
 msgid "Write Date"
@@ -608,8 +607,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.warning,user:"
 msgid "User"
diff --git a/trytond/res/locale/ja_JP.po b/trytond/res/locale/ja_JP.po
index b3ae2b0..ab66a88 100644
--- a/trytond/res/locale/ja_JP.po
+++ b/trytond/res/locale/ja_JP.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -66,7 +66,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.action-res.group,write_date:"
@@ -103,7 +103,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.button-res.group,write_date:"
@@ -146,7 +146,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.model.field-res.group,write_date:"
@@ -175,7 +175,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
@@ -203,7 +203,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
@@ -252,7 +252,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
@@ -289,7 +289,7 @@ msgid "Menu"
 msgstr ""
 
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
@@ -333,7 +333,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:res.group,rule_groups:"
@@ -419,7 +419,7 @@ msgid "PySON Menu"
 msgstr ""
 
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:res.user,rule_groups:"
@@ -467,7 +467,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -501,7 +501,7 @@ msgid "ID"
 msgstr ""
 
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
@@ -538,7 +538,7 @@ msgid "Key"
 msgstr ""
 
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:res.user.application,state:"
@@ -579,7 +579,7 @@ msgid "Login"
 msgstr ""
 
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 msgctxt "field:res.user.login.attempt,write_date:"
@@ -611,7 +611,7 @@ msgid "Name"
 msgstr ""
 
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
+msgid "Record Name"
 msgstr ""
 
 #, fuzzy
diff --git a/trytond/res/locale/lo.po b/trytond/res/locale/lo.po
index 081a247..9d8b57c 100644
--- a/trytond/res/locale/lo.po
+++ b/trytond/res/locale/lo.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -8,27 +8,27 @@ msgstr "ຊື່ຂອງກຸ່ມຕ້ອງບໍ່ຊໍ້າກັນ
 
 msgctxt "error:res.user:"
 msgid "The password can not be the same as user email."
-msgstr ""
+msgstr "ລະຫັດຜ່ານ ບໍ່ສາມາດ ຊິເປັນອັນດຽວກັນກັບຊື່ຜູ້ໃຊ້ ອີເມວລ໌"
 
 msgctxt "error:res.user:"
 msgid "The password can not be the same as user login."
-msgstr ""
+msgstr "ລະຫັດຜ່ານ ບໍ່ສາມາດ ເປັນອັນດຽວກັນກັບ ຊື່ ທີ່ໃຊ້ເຊື່ອມຕໍ່ເຂົ້າລະບົບ."
 
 msgctxt "error:res.user:"
 msgid "The password can not be the same as user name."
-msgstr ""
+msgstr "ລະຫັດຜ່ານ ບໍ່ສາມາດ ເປັນອັນດຽວກັນກັບ ຊື່ ຜູ້ໃຊ້ງານ."
 
 msgctxt "error:res.user:"
 msgid "The password contains too much times the same characters."
-msgstr ""
+msgstr "ລະຫັດຜ່ານ ປະກອບດ້ວຍອັກຂະລະຊໍ້າກັນຫຼາຍໆເທື່ອ."
 
 msgctxt "error:res.user:"
 msgid "The password is forbidden."
-msgstr ""
+msgstr "ລະຫັດຜ່ານນີ້ຖືກຫ້າມໃຊ້"
 
 msgctxt "error:res.user:"
 msgid "The password is too short."
-msgstr ""
+msgstr "ລະຫັດຜ່ານນີ້ສັ້ນໂພດ."
 
 msgctxt "error:res.user:"
 msgid ""
@@ -66,8 +66,8 @@ msgid "ID"
 msgstr "ເລກລຳດັບ"
 
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action-res.group,write_date:"
 msgid "Write Date"
@@ -102,8 +102,8 @@ msgid "ID"
 msgstr "ເລກລຳດັບ"
 
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button-res.group,write_date:"
 msgid "Write Date"
@@ -142,8 +142,8 @@ msgid "ID"
 msgstr "ເລກລຳດັບ"
 
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field-res.group,write_date:"
 msgid "Write Date"
@@ -170,8 +170,8 @@ msgid "ID"
 msgstr "ເລກປະຈຳໂຕ"
 
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -198,8 +198,8 @@ msgid "ID"
 msgstr "ເລກລຳດັບ"
 
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -246,8 +246,8 @@ msgid "ID"
 msgstr "ເລກປະຈຳໂຕ"
 
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
 msgid "Sequence Type"
@@ -282,8 +282,8 @@ msgid "Menu"
 msgstr "ລາຍການຄຳສັ່ງ"
 
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
 msgid "Write Date"
@@ -293,7 +293,6 @@ msgctxt "field:ir.ui.menu-res.group,write_uid:"
 msgid "Write User"
 msgstr "ຜູ້ບັນທຶກ"
 
-#, fuzzy
 msgctxt "field:res.group,buttons:"
 msgid "Buttons"
 msgstr "ປຸ່ມ"
@@ -327,8 +326,8 @@ msgid "Name"
 msgstr "ຊື່"
 
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -411,8 +410,8 @@ msgid "PySON Menu"
 msgstr "ລາຍການຄຳສັ່ງ PySON"
 
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -459,8 +458,8 @@ msgid "ID"
 msgstr "ເລກລຳດັບ"
 
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-ir.action,user:"
 msgid "User"
@@ -491,8 +490,8 @@ msgid "ID"
 msgstr "ເລກລຳດັບ"
 
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-res.group,user:"
 msgid "User"
@@ -527,8 +526,8 @@ msgid "Key"
 msgstr "ຄຳທີ່ເປັນກຸນແຈ"
 
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -567,8 +566,8 @@ msgid "Login"
 msgstr "ເຂົ້າສູ່ລະບົບ"
 
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.login.attempt,write_date:"
 msgid "Write Date"
@@ -599,8 +598,8 @@ msgid "Name"
 msgstr "ຊື່"
 
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "ຊື່"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.warning,user:"
 msgid "User"
diff --git a/trytond/res/locale/lt.po b/trytond/res/locale/lt.po
index 66f0afb..41a4642 100644
--- a/trytond/res/locale/lt.po
+++ b/trytond/res/locale/lt.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -64,10 +64,9 @@ msgctxt "field:ir.action-res.group,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action-res.group,write_date:"
 msgid "Write Date"
@@ -101,10 +100,9 @@ msgctxt "field:ir.model.button-res.group,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button-res.group,write_date:"
 msgid "Write Date"
@@ -142,10 +140,9 @@ msgctxt "field:ir.model.field-res.group,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field-res.group,write_date:"
 msgid "Write Date"
@@ -171,10 +168,9 @@ msgctxt "field:ir.rule.group-res.group,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -200,10 +196,9 @@ msgctxt "field:ir.rule.group-res.user,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -249,10 +244,9 @@ msgctxt "field:ir.sequence.type-res.group,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
 msgid "Sequence Type"
@@ -286,10 +280,9 @@ msgctxt "field:ir.ui.menu-res.group,menu:"
 msgid "Menu"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
 msgid "Write Date"
@@ -332,10 +325,9 @@ msgctxt "field:res.group,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -418,10 +410,9 @@ msgctxt "field:res.user,pyson_menu:"
 msgid "PySON Menu"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -467,10 +458,9 @@ msgctxt "field:res.user-ir.action,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-ir.action,user:"
 msgid "User"
@@ -500,10 +490,9 @@ msgctxt "field:res.user-res.group,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-res.group,user:"
 msgid "User"
@@ -537,10 +526,9 @@ msgctxt "field:res.user.application,key:"
 msgid "Key"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -578,10 +566,9 @@ msgctxt "field:res.user.login.attempt,login:"
 msgid "Login"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.login.attempt,write_date:"
 msgid "Write Date"
@@ -612,10 +599,9 @@ msgctxt "field:res.user.warning,name:"
 msgid "Name"
 msgstr "Namu"
 
-#, fuzzy
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "Namu"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.warning,user:"
 msgid "User"
diff --git a/trytond/res/locale/nl.po b/trytond/res/locale/nl.po
index 5fa996e..893b41f 100644
--- a/trytond/res/locale/nl.po
+++ b/trytond/res/locale/nl.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -69,10 +69,9 @@ msgctxt "field:ir.action-res.group,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.action-res.group,write_date:"
@@ -113,10 +112,9 @@ msgctxt "field:ir.model.button-res.group,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.button-res.group,write_date:"
@@ -162,10 +160,9 @@ msgctxt "field:ir.model.field-res.group,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.model.field-res.group,write_date:"
@@ -197,10 +194,9 @@ msgctxt "field:ir.rule.group-res.group,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -231,10 +227,9 @@ msgctxt "field:ir.rule.group-res.user,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -286,10 +281,9 @@ msgctxt "field:ir.sequence.type-res.group,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
@@ -331,10 +325,9 @@ msgctxt "field:ir.ui.menu-res.group,menu:"
 msgid "Menu"
 msgstr "Menu"
 
-#, fuzzy
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:ir.ui.menu-res.group,write_date:"
@@ -382,10 +375,9 @@ msgctxt "field:res.group,name:"
 msgid "Name"
 msgstr "Naam bijlage"
 
-#, fuzzy
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -479,10 +471,9 @@ msgctxt "field:res.user,pyson_menu:"
 msgid "PySON Menu"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -535,10 +526,9 @@ msgctxt "field:res.user-ir.action,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:res.user-ir.action,user:"
@@ -575,10 +565,9 @@ msgctxt "field:res.user-res.group,id:"
 msgid "ID"
 msgstr "ID"
 
-#, fuzzy
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:res.user-res.group,user:"
@@ -618,10 +607,9 @@ msgctxt "field:res.user.application,key:"
 msgid "Key"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -666,10 +654,9 @@ msgctxt "field:res.user.login.attempt,login:"
 msgid "Login"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:res.user.login.attempt,write_date:"
@@ -705,10 +692,9 @@ msgctxt "field:res.user.warning,name:"
 msgid "Name"
 msgstr "Naam bijlage"
 
-#, fuzzy
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "Naam bijlage"
+msgid "Record Name"
+msgstr ""
 
 #, fuzzy
 msgctxt "field:res.user.warning,user:"
diff --git a/trytond/res/locale/pl.po b/trytond/res/locale/pl.po
index ff6c683..0eaf998 100644
--- a/trytond/res/locale/pl.po
+++ b/trytond/res/locale/pl.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -67,8 +67,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.action-res.group,write_date:"
 msgid "Write Date"
@@ -103,8 +103,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.model.button-res.group,write_date:"
 msgid "Write Date"
@@ -143,8 +143,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.model.field-res.group,write_date:"
 msgid "Write Date"
@@ -171,8 +171,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -199,8 +199,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -247,8 +247,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
 msgid "Sequence Type"
@@ -283,8 +283,8 @@ msgid "Menu"
 msgstr "Menu"
 
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
 msgid "Write Date"
@@ -327,8 +327,8 @@ msgid "Name"
 msgstr "Nazwa"
 
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -411,8 +411,8 @@ msgid "PySON Menu"
 msgstr "Menu PySON"
 
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -459,8 +459,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:res.user-ir.action,user:"
 msgid "User"
@@ -491,8 +491,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:res.user-res.group,user:"
 msgid "User"
@@ -527,8 +527,8 @@ msgid "Key"
 msgstr "Klucz"
 
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -567,8 +567,8 @@ msgid "Login"
 msgstr "Login"
 
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:res.user.login.attempt,write_date:"
 msgid "Write Date"
@@ -599,8 +599,8 @@ msgid "Name"
 msgstr "Nazwa"
 
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "Nazwa"
+msgid "Record Name"
+msgstr "Nazwa rekordu"
 
 msgctxt "field:res.user.warning,user:"
 msgid "User"
diff --git a/trytond/res/locale/pt_BR.po b/trytond/res/locale/pt_BR.po
index 94ff352..85b8325 100644
--- a/trytond/res/locale/pt_BR.po
+++ b/trytond/res/locale/pt_BR.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -12,7 +12,7 @@ msgstr "A sena não pode ser a mesma que o email."
 
 msgctxt "error:res.user:"
 msgid "The password can not be the same as user login."
-msgstr "A senha não pode ser sa mesma que o usuário."
+msgstr "A senha não pode ser a mesma que o nome de usuário."
 
 msgctxt "error:res.user:"
 msgid "The password can not be the same as user name."
@@ -44,7 +44,7 @@ msgstr "Senha Inválida!"
 
 msgctxt "error:res.user:"
 msgid "You can not have two users with the same login!"
-msgstr "Você não pode ter dois usuários com o mesmo login!"
+msgstr "Você não pode ter dois usuários com o mesmo nome de usuário!"
 
 msgctxt "field:ir.action-res.group,action:"
 msgid "Action"
@@ -67,8 +67,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.action-res.group,write_date:"
 msgid "Write Date"
@@ -103,8 +103,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.model.button-res.group,write_date:"
 msgid "Write Date"
@@ -143,8 +143,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.model.field-res.group,write_date:"
 msgid "Write Date"
@@ -171,8 +171,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -199,8 +199,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -247,8 +247,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
 msgid "Sequence Type"
@@ -283,8 +283,8 @@ msgid "Menu"
 msgstr "Menu"
 
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
 msgid "Write Date"
@@ -327,8 +327,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -388,7 +388,7 @@ msgstr "Direção de Idioma"
 
 msgctxt "field:res.user,login:"
 msgid "Login"
-msgstr "Login"
+msgstr "Nome de Usuário"
 
 msgctxt "field:res.user,menu:"
 msgid "Menu Action"
@@ -411,8 +411,8 @@ msgid "PySON Menu"
 msgstr "Menu PySON"
 
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -459,8 +459,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:res.user-ir.action,user:"
 msgid "User"
@@ -491,8 +491,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:res.user-res.group,user:"
 msgid "User"
@@ -527,8 +527,8 @@ msgid "Key"
 msgstr "Chave"
 
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -564,11 +564,11 @@ msgstr "ID"
 
 msgctxt "field:res.user.login.attempt,login:"
 msgid "Login"
-msgstr "Login"
+msgstr "Nome de Usuário"
 
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:res.user.login.attempt,write_date:"
 msgid "Write Date"
@@ -599,8 +599,8 @@ msgid "Name"
 msgstr "Nome"
 
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "Nome"
+msgid "Record Name"
+msgstr "Nome do Registro"
 
 msgctxt "field:res.user.warning,user:"
 msgid "User"
@@ -620,7 +620,7 @@ msgstr "Grupos que possuem permissão para editar sequências deste tipo"
 
 msgctxt "help:res.user,actions:"
 msgid "Actions that will be run at login"
-msgstr "Ações que serão executadas no login"
+msgstr "Ações que serão executadas ao entrar"
 
 msgctxt "model:ir.action,name:act_group_form"
 msgid "Groups"
@@ -708,7 +708,7 @@ msgstr "Init de Configuração de Usuário"
 
 msgctxt "model:res.user.login.attempt,name:"
 msgid "Login Attempt"
-msgstr "Tentativa de Login"
+msgstr "Tentativa de Entrar"
 
 msgctxt "model:res.user.warning,name:"
 msgid "User Warning"
@@ -744,7 +744,7 @@ msgstr "Validar"
 
 msgctxt "view:res.user.config.start:"
 msgid "Be careful that the login must be unique!"
-msgstr "O login deve ser único!"
+msgstr "O nome de usuário deve ser único!"
 
 msgctxt "view:res.user.config.start:"
 msgid "You can now add some users into the system."
diff --git a/trytond/res/locale/ru.po b/trytond/res/locale/ru.po
index 3f21691..4b50b83 100644
--- a/trytond/res/locale/ru.po
+++ b/trytond/res/locale/ru.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -65,8 +65,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action-res.group,write_date:"
 msgid "Write Date"
@@ -101,8 +101,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button-res.group,write_date:"
 msgid "Write Date"
@@ -143,8 +143,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field-res.group,write_date:"
 msgid "Write Date"
@@ -171,8 +171,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -199,8 +199,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -247,8 +247,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
 msgid "Sequence Type"
@@ -283,8 +283,8 @@ msgid "Menu"
 msgstr "Меню"
 
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
 msgid "Write Date"
@@ -328,8 +328,8 @@ msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -412,8 +412,8 @@ msgid "PySON Menu"
 msgstr "Меню PySON"
 
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -460,8 +460,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-ir.action,user:"
 msgid "User"
@@ -492,8 +492,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-res.group,user:"
 msgid "User"
@@ -530,10 +530,9 @@ msgctxt "field:res.user.application,key:"
 msgid "Key"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -576,8 +575,8 @@ msgid "Login"
 msgstr "Логин"
 
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.login.attempt,write_date:"
 msgid "Write Date"
@@ -608,8 +607,8 @@ msgid "Name"
 msgstr "Наименование"
 
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "Наименование"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.warning,user:"
 msgid "User"
diff --git a/trytond/res/locale/sl.po b/trytond/res/locale/sl.po
index 9a4e01e..e24f246 100644
--- a/trytond/res/locale/sl.po
+++ b/trytond/res/locale/sl.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -67,8 +67,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action-res.group,write_date:"
 msgid "Write Date"
@@ -103,8 +103,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button-res.group,write_date:"
 msgid "Write Date"
@@ -143,8 +143,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field-res.group,write_date:"
 msgid "Write Date"
@@ -171,8 +171,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -199,8 +199,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -247,8 +247,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
 msgid "Sequence Type"
@@ -283,8 +283,8 @@ msgid "Menu"
 msgstr "Meni"
 
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
 msgid "Write Date"
@@ -327,8 +327,8 @@ msgid "Name"
 msgstr "Naziv"
 
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -411,8 +411,8 @@ msgid "PySON Menu"
 msgstr "PySON meni"
 
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -459,8 +459,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-ir.action,user:"
 msgid "User"
@@ -491,8 +491,8 @@ msgid "ID"
 msgstr "ID"
 
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-res.group,user:"
 msgid "User"
@@ -527,8 +527,8 @@ msgid "Key"
 msgstr "Ključ"
 
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -567,8 +567,8 @@ msgid "Login"
 msgstr "Prijava"
 
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.login.attempt,write_date:"
 msgid "Write Date"
@@ -599,8 +599,8 @@ msgid "Name"
 msgstr "Naziv"
 
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "Ime"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.warning,user:"
 msgid "User"
diff --git a/trytond/res/locale/zh_CN.po b/trytond/res/locale/zh_CN.po
index 92954c8..1715312 100644
--- a/trytond/res/locale/zh_CN.po
+++ b/trytond/res/locale/zh_CN.po
@@ -1,4 +1,4 @@
-# 
+#
 msgid ""
 msgstr "Content-Type: text/plain; charset=utf-8\n"
 
@@ -65,8 +65,8 @@ msgid "ID"
 msgstr "标识"
 
 msgctxt "field:ir.action-res.group,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.action-res.group,write_date:"
 msgid "Write Date"
@@ -101,8 +101,8 @@ msgid "ID"
 msgstr "标识"
 
 msgctxt "field:ir.model.button-res.group,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.button-res.group,write_date:"
 msgid "Write Date"
@@ -143,8 +143,8 @@ msgid "ID"
 msgstr "标识"
 
 msgctxt "field:ir.model.field-res.group,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.model.field-res.group,write_date:"
 msgid "Write Date"
@@ -171,8 +171,8 @@ msgid "ID"
 msgstr "标识"
 
 msgctxt "field:ir.rule.group-res.group,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.group,rule_group:"
 msgid "Rule Group"
@@ -199,8 +199,8 @@ msgid "ID"
 msgstr "标识"
 
 msgctxt "field:ir.rule.group-res.user,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.rule.group-res.user,rule_group:"
 msgid "Rule Group"
@@ -247,8 +247,8 @@ msgid "ID"
 msgstr "标识"
 
 msgctxt "field:ir.sequence.type-res.group,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.sequence.type-res.group,sequence_type:"
 msgid "Sequence Type"
@@ -283,8 +283,8 @@ msgid "Menu"
 msgstr "菜单"
 
 msgctxt "field:ir.ui.menu-res.group,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:ir.ui.menu-res.group,write_date:"
 msgid "Write Date"
@@ -328,8 +328,8 @@ msgid "Name"
 msgstr "名称"
 
 msgctxt "field:res.group,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.group,rule_groups:"
 msgid "Rules"
@@ -412,8 +412,8 @@ msgid "PySON Menu"
 msgstr "PYSON 菜单"
 
 msgctxt "field:res.user,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user,rule_groups:"
 msgid "Rules"
@@ -460,8 +460,8 @@ msgid "ID"
 msgstr "标识"
 
 msgctxt "field:res.user-ir.action,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-ir.action,user:"
 msgid "User"
@@ -492,8 +492,8 @@ msgid "ID"
 msgstr "标识"
 
 msgctxt "field:res.user-res.group,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user-res.group,user:"
 msgid "User"
@@ -530,10 +530,9 @@ msgctxt "field:res.user.application,key:"
 msgid "Key"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:res.user.application,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.application,state:"
 msgid "State"
@@ -575,8 +574,8 @@ msgid "Login"
 msgstr "登录"
 
 msgctxt "field:res.user.login.attempt,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.login.attempt,write_date:"
 msgid "Write Date"
@@ -607,8 +606,8 @@ msgid "Name"
 msgstr "名称"
 
 msgctxt "field:res.user.warning,rec_name:"
-msgid "Name"
-msgstr "名称"
+msgid "Record Name"
+msgstr ""
 
 msgctxt "field:res.user.warning,user:"
 msgid "User"
diff --git a/trytond/res/user.py b/trytond/res/user.py
index 83a9539..d98c5c9 100644
--- a/trytond/res/user.py
+++ b/trytond/res/user.py
@@ -729,10 +729,12 @@ class UserGroup(ModelSQL):
     @classmethod
     def __register__(cls, module_name):
         TableHandler = backend.get('TableHandler')
+        transaction = Transaction()
+
         # Migration from 1.0 table name change
         TableHandler.table_rename('res_group_user_rel', cls._table)
-        TableHandler.sequence_rename('res_group_user_rel_id_seq',
-            cls._table + '_id_seq')
+        transaction.database.sequence_rename(transaction.connection,
+            'res_group_user_rel_id_seq', cls._table + '_id_seq')
         # Migration from 2.0 uid and gid rename into user and group
         table = TableHandler(cls, module_name)
         table.column_rename('uid', 'user')
diff --git a/trytond/rpc.py b/trytond/rpc.py
index 54a18af..72357eb 100644
--- a/trytond/rpc.py
+++ b/trytond/rpc.py
@@ -12,18 +12,20 @@ class RPC(object):
     instantiate: The position or the slice of the arguments to be instanciated
     result: The function to transform the result
     check_access: If access right must be checked
+    unique: Check instances are unique
     '''
 
-    __slots__ = ('readonly', 'instantiate', 'result', 'check_access')
+    __slots__ = ('readonly', 'instantiate', 'result', 'check_access', 'unique')
 
     def __init__(self, readonly=True, instantiate=None, result=None,
-            check_access=True):
+            check_access=True, unique=True):
         self.readonly = readonly
         self.instantiate = instantiate
         if result is None:
             result = lambda r: r
         self.result = result
         self.check_access = check_access
+        self.unique = unique
 
     def convert(self, obj, *args, **kwargs):
         args = list(args)
@@ -48,6 +50,8 @@ class RPC(object):
                     elif isinstance(data, dict):
                         return obj(**data)
                     else:
+                        if self.unique and len(data) != len(set(data)):
+                            raise ValueError("Duplicate ids")
                         return obj.browse(data)
             if isinstance(self.instantiate, slice):
                 for i, data in enumerate(args[self.instantiate]):
diff --git a/trytond/sendmail.py b/trytond/sendmail.py
index 4a2a2db..1e9c4c1 100644
--- a/trytond/sendmail.py
+++ b/trytond/sendmail.py
@@ -4,6 +4,7 @@ import logging
 import smtplib
 import urllib
 from email.message import Message
+from urlparse import parse_qs
 
 from .config import config, parse_uri
 from .transaction import Transaction
@@ -44,10 +45,15 @@ def get_smtp_server(uri=None):
     if uri is None:
         uri = config.get('email', 'uri')
     uri = parse_uri(uri)
+    extra = {}
+    if uri.query:
+        cast = {'timeout': int}
+        for key, value in parse_qs(uri.query, strict_parsing=True).iteritems():
+            extra[key] = cast.get(key, lambda a: a)(value[0])
     if uri.scheme.startswith('smtps'):
-        server = smtplib.SMTP_SSL(uri.hostname, uri.port)
+        server = smtplib.SMTP_SSL(uri.hostname, uri.port, **extra)
     else:
-        server = smtplib.SMTP(uri.hostname, uri.port)
+        server = smtplib.SMTP(uri.hostname, uri.port, **extra)
 
     if 'tls' in uri.scheme:
         server.starttls()
diff --git a/trytond/tests/__init__.py b/trytond/tests/__init__.py
index ca7cfc5..103e3be 100644
--- a/trytond/tests/__init__.py
+++ b/trytond/tests/__init__.py
@@ -1,6 +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.
 
+try:
+    import pkg_resources
+except ImportError:
+    pkg_resources = None
+
+
 from ..pool import Pool
 from .test import *
 from .model import *
@@ -108,6 +114,7 @@ def register():
         Dict,
         DictDefault,
         DictRequired,
+        DictJSONB,
         Binary,
         BinaryDefault,
         BinaryRequired,
@@ -138,6 +145,7 @@ def register():
         ModelViewChangedValuesTarget,
         ModelViewButton,
         ModelViewRPC,
+        ModelViewEmptyPage,
         MPTT,
         ImportDataBoolean,
         ImportDataInteger,
@@ -199,6 +207,13 @@ def register():
 
     multivalue.register('tests')
 
+    if pkg_resources is not None:
+        entry_points = pkg_resources.iter_entry_points('trytond.tests')
+        for test_ep in entry_points:
+            test_module = test_ep.load()
+            if hasattr(test_module, 'register'):
+                test_module.register('tests')
+
 
 def suite():
     from .test_tryton import all_suite
diff --git a/trytond/tests/modelview.py b/trytond/tests/modelview.py
index b7c53d7..1f28fcc 100644
--- a/trytond/tests/modelview.py
+++ b/trytond/tests/modelview.py
@@ -10,6 +10,7 @@ __all__ = [
     'ModelViewChangedValuesTarget',
     'ModelViewButton',
     'ModelViewRPC',
+    'ModelViewEmptyPage',
     ]
 
 
@@ -106,3 +107,8 @@ class ModelViewRPC(ModelView):
     @classmethod
     def get_function_reference(cls):
         pass
+
+
+class ModelViewEmptyPage(ModelView):
+    'ModelView Empty Page'
+    __name__ = 'test.modelview.empty_page'
diff --git a/trytond/tests/modelview.xml b/trytond/tests/modelview.xml
new file mode 100644
index 0000000..b706003
--- /dev/null
+++ b/trytond/tests/modelview.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<tryton>
+    <record model="ir.ui.view" id="test_modelview_empty_page_view_form">
+        <field name="model">test.modelview.empty_page</field>
+        <field name="type">form</field>
+        <field name="arch" type="xml">
+            <![CDATA[
+            <form>
+                <notebook>
+                    <page id="empty"></page>
+                    <page id="non-empty">
+                        <label id="foo"/>
+                    </page>
+                </notebook>
+            </form>
+            ]]>
+        </field>
+    </record>
+</tryton>
diff --git a/trytond/tests/test.py b/trytond/tests/test.py
index e90c171..4cf4cf7 100644
--- a/trytond/tests/test.py
+++ b/trytond/tests/test.py
@@ -39,7 +39,7 @@ __all__ = [
     'Many2ManyFilterDomainRelation',
     'Reference', 'ReferenceTarget', 'ReferenceRequired',
     'Selection', 'SelectionRequired',
-    'DictSchema', 'Dict', 'DictDefault', 'DictRequired',
+    'DictSchema', 'Dict', 'DictDefault', 'DictRequired', 'DictJSONB',
     'Binary', 'BinaryDefault', 'BinaryRequired', 'BinaryFileStorage',
     'Many2OneDomainValidation', 'Many2OneTarget', 'Many2OneOrderBy',
     'Many2OneSearch', 'Many2OneTree', 'Many2OneMPTT', 'Many2OneNoForeignKey',
@@ -782,6 +782,12 @@ class DictRequired(ModelSQL):
     dico = fields.Dict(None, 'Test Dict', required=True)
 
 
+class DictJSONB(ModelSQL):
+    'Dict JSONB'
+    __name__ = 'test.dict_jsonb'
+    dico = fields.Dict('test.dict.schema', 'Test Dict')
+
+
 class Binary(ModelSQL):
     'Binary'
     __name__ = 'test.binary'
diff --git a/trytond/tests/test_copy.py b/trytond/tests/test_copy.py
index a4c1636..35f98d5 100644
--- a/trytond/tests/test_copy.py
+++ b/trytond/tests/test_copy.py
@@ -45,6 +45,24 @@ class CopyTestCase(unittest.TestCase):
                 [x.name for x in one2many_copy.one2many])
 
     @with_transaction()
+    def test_one2many_default(self):
+        "Test copy one2many with default"
+        pool = Pool()
+        One2many = pool.get('test.copy.one2many')
+        Target = pool.get('test.copy.one2many.target')
+
+        record = One2many(name="Test")
+        record.save()
+        target = Target(name="Target")
+        target.save()
+
+        record_copy, = One2many.copy(
+            [record], default={'one2many': [target.id]})
+
+        self.assertListEqual(
+            [x.name for x in record_copy.one2many], [target.name])
+
+    @with_transaction()
     def test_many2many(self):
         'Test copy many2many'
         pool = Pool()
@@ -74,6 +92,23 @@ class CopyTestCase(unittest.TestCase):
             self.assertEqual([x.name for x in many2many.many2many],
                 [x.name for x in many2many_copy.many2many])
 
+    @with_transaction()
+    def test_many2many_default(self):
+        "Test copy many2many with default"
+        pool = Pool()
+        Many2many = pool.get('test.copy.many2many')
+        Target = pool.get('test.copy.many2many.target')
+
+        record = Many2many(name="Test")
+        record.save()
+        target = Target(name="Target")
+        target.save()
+
+        record_copy, = Many2many.copy(
+            [record], default={'many2many': [target.id]})
+
+        self.assertSequenceEqual(record_copy.many2many, [target])
+
 
 def suite():
     return unittest.TestLoader().loadTestsFromTestCase(CopyTestCase)
diff --git a/trytond/tests/test_exportdata.py b/trytond/tests/test_exportdata.py
index 93868b1..bd72e7f 100644
--- a/trytond/tests/test_exportdata.py
+++ b/trytond/tests/test_exportdata.py
@@ -341,7 +341,7 @@ class ExportDataTestCase(unittest.TestCase):
         ExportData = pool.get('test.export_data')
         ExportDataTarget = pool.get('test.export_data.target')
 
-        target1, = ExportDataTarget.create([{}])
+        target1, = ExportDataTarget.create([{'name': "Target test"}])
         export1, = ExportData.create([{
                     'reference': str(target1),
                     }])
@@ -360,6 +360,14 @@ class ExportDataTestCase(unittest.TestCase):
                 ['reference']),
             [[str(target1)], ['']])
 
+        self.assertEqual(
+            ExportData.export_data([export1], ['reference/rec_name']),
+            [[target1.rec_name]])
+
+        self.assertEqual(
+            ExportData.export_data([export1], ['reference.translated']),
+            [["Target"]])
+
 
 def suite():
     return unittest.TestLoader().loadTestsFromTestCase(ExportDataTestCase)
diff --git a/trytond/tests/test_fields.py b/trytond/tests/test_fields.py
index 8ac755b..1d828b1 100644
--- a/trytond/tests/test_fields.py
+++ b/trytond/tests/test_fields.py
@@ -21,6 +21,7 @@ from trytond.exceptions import UserError
 from trytond.model import fields
 from trytond.pool import Pool
 from trytond.config import config
+from trytond import backend
 
 
 class FieldsTestCase(unittest.TestCase):
@@ -2502,7 +2503,7 @@ class FieldsTestCase(unittest.TestCase):
         self.assertEqual(filtered_target.value, 3)
 
     @with_transaction()
-    def test_one2many_filter_fomain(self):
+    def test_one2many_filter_domain(self):
         'Test one2many with filter and domain'
         pool = Pool()
         One2ManyFilterDomain = pool.get('test.one2many_filter_domain')
@@ -2516,6 +2517,28 @@ class FieldsTestCase(unittest.TestCase):
         self.assertEqual(filtered_target.value, 3)
 
     @with_transaction()
+    def test_one2many_filter_search(self):
+        "Test search on one2many with filter"
+        pool = Pool()
+        One2ManyFilter = pool.get('test.one2many_filter')
+
+        One2ManyFilter.create([{
+                    'targets': [('create', [{'value': -1}])],
+                    }])
+
+        result = One2ManyFilter.search([('targets', '!=', None)])
+        self.assertEqual(len(result), 1)
+
+        result = One2ManyFilter.search([('filtered_targets', '!=', None)])
+        self.assertEqual(len(result), 0)
+
+        result = One2ManyFilter.search([('targets.value', '=', -1)])
+        self.assertEqual(len(result), 1)
+
+        result = One2ManyFilter.search([('filtered_targets.value', '=', -1)])
+        self.assertEqual(len(result), 0)
+
+    @with_transaction()
     def test_many2many(self):
         'Test Many2Many'
         pool = Pool()
@@ -2768,6 +2791,36 @@ class FieldsTestCase(unittest.TestCase):
         self.assertEqual(filtered_target.value, 3)
 
     @with_transaction()
+    def test_many2many_filter_search(self):
+        "Test search on many2many with filter"
+        pool = Pool()
+        Many2ManyFilter = pool.get('test.many2many_filter')
+
+        Many2ManyFilter.create([{
+                    'targets': [('create', [{'value': -1}])],
+                    }])
+
+        result = Many2ManyFilter.search([('targets', '!=', None)])
+        self.assertEqual(len(result), 1)
+
+        result = Many2ManyFilter.search([('filtered_targets', '!=', None)])
+        self.assertEqual(len(result), 0)
+
+        result = Many2ManyFilter.search(
+            [('or_filtered_targets', '!=', None)])
+        self.assertEqual(len(result), 1)
+
+        result = Many2ManyFilter.search([('targets.value', '=', -1)])
+        self.assertEqual(len(result), 1)
+
+        result = Many2ManyFilter.search([('filtered_targets.value', '=', -1)])
+        self.assertEqual(len(result), 0)
+
+        result = Many2ManyFilter.search(
+            [('or_filtered_targets.value', '=', -1)])
+        self.assertEqual(len(result), 1)
+
+    @with_transaction()
     def test_many2many_add_to_list(self):
         "Test Many2Many add to list of records"
         pool = Pool()
@@ -2989,6 +3042,12 @@ class FieldsTestCase(unittest.TestCase):
                     }])
         transaction.rollback()
 
+        self.assertRaises(UserError, ReferenceRequired.create, [{
+                    'name': 'reference4',
+                    'reference': str(ReferenceTarget()),
+                    }])
+        transaction.rollback()
+
         target4, = ReferenceTarget.create([{
                     'name': 'target4_id',
                     }])
@@ -3125,6 +3184,31 @@ class FieldsTestCase(unittest.TestCase):
             [{'dico': {}}])
 
     @with_transaction()
+    @unittest.skipIf(
+        backend.name() != 'postgresql', 'jsonb only suported by postgresql')
+    def test_dict_jsonb(self):
+        'Test Dict stored as jsonb'
+        pool = Pool()
+        Dict = pool.get('test.dict_jsonb')
+        connection = Transaction().connection
+        cursor = connection.cursor()
+
+        Database = backend.get('Database')
+        if Database().get_version(connection) < (9, 2):
+            return
+
+        cursor.execute('ALTER TABLE "%s" '
+            'ALTER COLUMN dico TYPE json USING dico::json' % Dict._table)
+
+        dict1, = Dict.create([{
+                    'dico': {'a': 1, 'b': 2},
+                    }])
+        self.assert_(dict1.dico == {'a': 1, 'b': 2})
+
+        Dict.write([dict1], {'dico': {'z': 26}})
+        self.assert_(dict1.dico == {'z': 26})
+
+    @with_transaction()
     def test_binary(self):
         'Test Binary'
         pool = Pool()
diff --git a/trytond/tests/test_modelview.py b/trytond/tests/test_modelview.py
index 4a7ac0a..a108da9 100644
--- a/trytond/tests/test_modelview.py
+++ b/trytond/tests/test_modelview.py
@@ -3,6 +3,7 @@
 
 import unittest
 from mock import patch
+from lxml import etree
 
 from trytond.tests.test_tryton import activate_module, with_transaction
 from trytond.pool import Pool
@@ -297,6 +298,19 @@ class ModelView(unittest.TestCase):
             self.assertIn(rpc_name, TestModel.__rpc__)
             check_rpc(TestModel.__rpc__[rpc_name], rpc_attrs)
 
+    @with_transaction()
+    def test_remove_empty_page(self):
+        "Testing the removal of empty pages"
+        pool = Pool()
+        EmptyPage = pool.get('test.modelview.empty_page')
+
+        arch = EmptyPage.fields_view_get(view_type='form')['arch']
+        parser = etree.XMLParser()
+        tree = etree.fromstring(arch, parser=parser)
+        pages = tree.xpath('//page')
+        self.assertEqual(len(pages), 1)
+        self.assertEqual(pages[0].attrib['id'], 'non-empty')
+
 
 def suite():
     func = unittest.TestLoader().loadTestsFromTestCase
diff --git a/trytond/tests/test_rpc.py b/trytond/tests/test_rpc.py
index 44bd907..c2c5d0d 100644
--- a/trytond/tests/test_rpc.py
+++ b/trytond/tests/test_rpc.py
@@ -4,7 +4,7 @@ import unittest
 
 from mock import Mock, DEFAULT, call
 
-from trytond.tests.test_tryton import with_transaction
+from trytond.tests.test_tryton import with_transaction, activate_module
 from trytond.rpc import RPC
 from trytond.transaction import Transaction
 
@@ -12,6 +12,10 @@ from trytond.transaction import Transaction
 class RPCTestCase(unittest.TestCase):
     "Test RPC"
 
+    @classmethod
+    def setUpClass(cls):
+        activate_module('ir')
+
     @with_transaction()
     def test_simple(self):
         "Test simple"
@@ -81,6 +85,20 @@ class RPCTestCase(unittest.TestCase):
         obj.browse.assert_called_once_with([1, 2, 3])
 
     @with_transaction()
+    def test_instantiate_unique(self):
+        "Test instantiate unique"
+        rpc = RPC(instantiate=0, unique=True)
+        obj = Mock()
+
+        rpc.convert(obj, [1, 2], {})
+        obj.browse.assert_called_once_with([1, 2])
+
+        obj.reset_mock()
+
+        with self.assertRaises(ValueError):
+            rpc.convert(obj, [1, 1], {})
+
+    @with_transaction()
     def test_instantiate_slice(self):
         "Test instantiate with slice"
         rpc = RPC(instantiate=slice(0, 2), check_access=False)
diff --git a/trytond/tests/test_sendmail.py b/trytond/tests/test_sendmail.py
index 0177408..6445518 100644
--- a/trytond/tests/test_sendmail.py
+++ b/trytond/tests/test_sendmail.py
@@ -2,6 +2,7 @@
 # this repository contains the full copyright notices and license terms.
 import unittest
 import smtplib
+import sys
 from email.message import Message
 from mock import Mock, patch, call
 
@@ -67,6 +68,17 @@ class SendmailTestCase(unittest.TestCase):
             SMTP.assert_called_once_with('localhost', 25)
             server.starttls.assert_called_once_with()
 
+    @unittest.skipIf(sys.version_info < (2, 7, 4), "python bug #9374")
+    def test_get_smtp_server_extra_parameters(self):
+        'Test get_smtp_server uri extra parameters'
+        with patch.object(smtplib, 'SMTP') as SMTP:
+            SMTP.return_value = server = Mock()
+            params = 'timeout=30&local_hostname=smtp.example.com'
+            self.assertEqual(
+                get_smtp_server('smtp://localhost:25?%s' % params), server)
+            SMTP.assert_called_once_with(
+                'localhost', 25, timeout=30, local_hostname='smtp.example.com')
+
     @patch('trytond.sendmail.get_smtp_server')
     @with_transaction()
     def test_SMTPDataManager(self, get_smtp_server):
diff --git a/trytond/tests/test_tryton.py b/trytond/tests/test_tryton.py
index ff6f90b..25ea9fa 100644
--- a/trytond/tests/test_tryton.py
+++ b/trytond/tests/test_tryton.py
@@ -7,17 +7,23 @@ import unittest
 import doctest
 import re
 import subprocess
+import time
 from itertools import chain
 import operator
 from functools import wraps
+import inspect
+try:
+    import pkg_resources
+except ImportError:
+    pkg_resources = None
 
 from lxml import etree
 from sql import Table
 
 from trytond.pool import Pool, isregisteredby
 from trytond import backend
-from trytond.model import Workflow
-from trytond.model.fields import get_eval_fields
+from trytond.model import Workflow, ModelSQL, ModelSingleton, fields
+from trytond.model.fields import get_eval_fields, Function
 from trytond.tools import is_instance_method
 from trytond.transaction import Transaction
 from trytond.cache import Cache
@@ -45,7 +51,7 @@ def activate_module(name):
     if not db_exist(DB_NAME) and restore_db_cache(name):
         return
     create_db()
-    with Transaction().start(DB_NAME, 1) as transaction:
+    with Transaction().start(DB_NAME, 1, close=True) as transaction:
         pool = Pool()
         Module = pool.get('ir.module')
 
@@ -94,10 +100,11 @@ def backup_db_cache(name):
             os.makedirs(DB_CACHE)
         backend_name = backend.name()
         cache_file = _db_cache_file(DB_CACHE, name, backend_name)
-        if backend_name == 'sqlite':
-            _sqlite_copy(cache_file)
-        elif backend_name == 'postgresql':
-            _pg_dump(cache_file)
+        if not os.path.exists(cache_file):
+            if backend_name == 'sqlite':
+                _sqlite_copy(cache_file)
+            elif backend_name == 'postgresql':
+                _pg_dump(cache_file)
 
 
 def _db_cache_file(path, name, backend_name):
@@ -148,7 +155,17 @@ def _pg_restore(cache_file):
     options, env = _pg_options()
     cmd.extend(options)
     cmd.append(cache_file)
-    return not subprocess.call(cmd, env=env)
+    try:
+        return not subprocess.call(cmd, env=env)
+    except OSError:
+        cache_name, _ = os.path.splitext(os.path.basename(cache_file))
+        with Transaction().start(
+                None, 0, close=True, autocommit=True, _nocache=True) \
+                as transaction:
+            transaction.database.drop(transaction.connection, DB_NAME)
+            transaction.database.create(
+                transaction.connection, DB_NAME, cache_name)
+        return True
 
 
 def _pg_dump(cache_file):
@@ -156,7 +173,19 @@ def _pg_dump(cache_file):
     options, env = _pg_options()
     cmd.extend(options)
     cmd.append(DB_NAME)
-    return not subprocess.call(cmd, env=env)
+    try:
+        return not subprocess.call(cmd, env=env)
+    except OSError:
+        cache_name, _ = os.path.splitext(os.path.basename(cache_file))
+        # Ensure any connection is left open
+        backend.get('Database')(DB_NAME).close()
+        with Transaction().start(
+                None, 0, close=True, autocommit=True, _nocache=True) \
+                as transaction:
+            transaction.database.create(
+                transaction.connection, cache_name, DB_NAME)
+        open(cache_file, 'a').close()
+        return True
 
 
 def with_transaction(user=1, context=None):
@@ -201,6 +230,10 @@ class ModuleTestCase(unittest.TestCase):
             assert model._rec_name in model._fields, (
                 'Wrong _rec_name "%s" for %s'
                 % (model._rec_name, mname))
+            field = model._fields[model._rec_name]
+            assert field._type in {'char', 'text'}, (
+                "Wrong '%s' type for _rec_name of %s'"
+                % (field._type, mname))
 
     @with_transaction()
     def test_view(self):
@@ -306,7 +339,16 @@ class ModuleTestCase(unittest.TestCase):
                             mname, attr))
 
                     if attr.startswith('default_'):
-                        getattr(model, attr)()
+                        fname = attr[len('default_'):]
+                        if isinstance(model._fields[fname], fields.MultiValue):
+                            try:
+                                getattr(model, attr)(pattern=None)
+                            # get_multivalue may raise an AttributeError
+                            # if pattern is not defined on the model
+                            except AttributeError:
+                                pass
+                        else:
+                            getattr(model, attr)()
                     elif attr.startswith('order_'):
                         tables = {None: (model.__table__(), None)}
                         getattr(model, attr)(tables)
@@ -436,6 +478,26 @@ class ModuleTestCase(unittest.TestCase):
                         })
 
     @with_transaction()
+    def test_function_fields(self):
+        "Test function fields methods"
+        for mname, model in Pool().iterobject():
+            if not isregisteredby(model, self.module):
+                continue
+            for field_name, field in model._fields.iteritems():
+                if not isinstance(field, Function):
+                    continue
+                for func_name in [field.getter, field.setter, field.searcher]:
+                    if not func_name:
+                        continue
+                    assert getattr(model, func_name, None), (
+                        "Missing method '%(func_name)s' "
+                        "on model '%(model)s' for field '%(field)s" % {
+                            'func_name': func_name,
+                            'model': model.__name__,
+                            'field': field_name,
+                            })
+
+    @with_transaction()
     def test_ir_action_window(self):
         'Test action windows are correctly defined'
         pool = Pool()
@@ -464,6 +526,22 @@ class ModuleTestCase(unittest.TestCase):
                     continue
                 Model.search(decoder.decode(action_domain.domain))
 
+    @with_transaction()
+    def test_modelsingleton_inherit_order(self):
+        'Test ModelSingleton, ModelSQL, ModelStorage order in the MRO'
+        for mname, model in Pool().iterobject():
+            if not isregisteredby(model, self.module):
+                continue
+            if (not issubclass(model, ModelSingleton)
+                    or not issubclass(model, ModelSQL)):
+                continue
+            mro = inspect.getmro(model)
+            singleton_index = mro.index(ModelSingleton)
+            sql_index = mro.index(ModelSQL)
+            assert singleton_index < sql_index, (
+                "ModelSingleton must appear before ModelSQL in the parent "
+                "classes of '%s'." % mname)
+
 
 def db_exist(name=DB_NAME):
     Database = backend.get('Database')
@@ -537,7 +615,15 @@ doctest_checker = Py23DocChecker()
 
 class TestSuite(unittest.TestSuite):
     def run(self, *args, **kwargs):
-        exist = db_exist()
+        DatabaseOperationalError = backend.get('DatabaseOperationalError')
+        while True:
+            try:
+                exist = db_exist()
+                break
+            except DatabaseOperationalError, err:
+                # Retry on connection error
+                sys.stderr.write(str(err))
+                time.sleep(1)
         result = super(TestSuite, self).run(*args, **kwargs)
         if not exist:
             drop_db()
@@ -556,14 +642,28 @@ def all_suite(modules=None):
     Return all tests suite of current module
     '''
     suite_ = suite()
+
+    def add_tests(filename, module_prefix):
+        if not (filename.startswith('test_') and filename.endswith('.py')):
+            return
+        if modules and fn[:-3] not in modules:
+            return
+        modname = module_prefix + '.' + filename[:-3]
+        __import__(modname)
+        module = sys.modules[modname]
+        suite_.addTest(module.suite())
+
     for fn in os.listdir(os.path.dirname(__file__)):
-        if fn.startswith('test_') and fn.endswith('.py'):
-            if modules and fn[:-3] not in modules:
-                continue
-            modname = 'trytond.tests.' + fn[:-3]
-            __import__(modname)
-            module = module = sys.modules[modname]
-            suite_.addTest(module.suite())
+        add_tests(fn, 'trytond.tests')
+    if pkg_resources is not None:
+        entry_points = pkg_resources.iter_entry_points('trytond.tests')
+        for test_entry_point in entry_points:
+            base_location = os.path.join(
+                test_entry_point.dist.location,
+                *test_entry_point.module_name.split('.'))
+            for fn in os.listdir(base_location):
+                add_tests(fn, test_entry_point.module_name)
+
     return suite_
 
 
diff --git a/trytond/tests/tools.py b/trytond/tests/tools.py
index c4cff8a..ca15f40 100644
--- a/trytond/tests/tools.py
+++ b/trytond/tests/tools.py
@@ -1,9 +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 proteus import config, Model, Wizard
+from proteus import config as pconfig, Model, Wizard
 
 from .test_tryton import restore_db_cache, backup_db_cache, drop_create
 
+__all__ = ['activate_modules', 'set_user']
+
 
 def activate_modules(modules):
     if isinstance(modules, basestring):
@@ -26,6 +28,14 @@ def activate_modules(modules):
 
 
 def _get_config():
-    cfg = config.set_trytond()
+    cfg = pconfig.set_trytond()
     cfg.pool.test = True
     return cfg
+
+
+def set_user(user, config=None):
+    if not config:
+        config = pconfig.get_config()
+    User = Model.get('res.user', config=config)
+    config.user = int(user)
+    config._context = User.get_preferences(True, {})
diff --git a/trytond/tests/tryton.cfg b/trytond/tests/tryton.cfg
index 6bb32ec..56e40e7 100644
--- a/trytond/tests/tryton.cfg
+++ b/trytond/tests/tryton.cfg
@@ -7,3 +7,4 @@ xml:
     sequence.xml
     workflow.xml
     wizard.xml
+    modelview.xml
diff --git a/trytond/tryton.rnc b/trytond/tryton.rnc
new file mode 100644
index 0000000..fe87698
--- /dev/null
+++ b/trytond/tryton.rnc
@@ -0,0 +1,32 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+
+tryton = element tryton { attlist.tryton, data* }
+attlist.tryton &= empty
+data = element data { attlist.data, (record | menuitem)* }
+attlist.data &=
+  [ a:defaultValue = "0" ] attribute noupdate { "0" | "1" }?
+attlist.data &=
+  [ a:defaultValue = "0" ] attribute grouped { "0" | "1" }?
+attlist.data &= attribute depends { text }
+record = element record { attlist.record, field* }
+attlist.record &= attribute model { text }
+attlist.record &= attribute id { text }
+attlist.record &=
+  [ a:defaultValue = "0" ] attribute update { "0" | "1" }?
+field = element field { attlist.field, text }
+attlist.field &= attribute name { text }
+attlist.field &= attribute search { text }?
+attlist.field &= attribute ref { text }?
+attlist.field &= attribute eval { text }?
+attlist.field &= attribute pyson { "0" | "1" }?
+attlist.field &= attribute type { "xml" }?
+menuitem = element menuitem { attlist.menuitem, empty }
+attlist.menuitem &= attribute id { text }
+attlist.menuitem &= attribute name { text }?
+attlist.menuitem &= attribute icon { text }?
+attlist.menuitem &= attribute sequence { text }?
+attlist.menuitem &= attribute parent { text }?
+attlist.menuitem &= attribute action { text }?
+attlist.menuitem &= attribute groups { text }?
+attlist.menuitem &= attribute active { text }?
+start = tryton
diff --git a/trytond/wsgi.py b/trytond/wsgi.py
index f767266..f6ef004 100644
--- a/trytond/wsgi.py
+++ b/trytond/wsgi.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.
+import httplib
 import logging
 import sys
 import traceback
@@ -10,6 +11,7 @@ from werkzeug.exceptions import abort, HTTPException, InternalServerError
 
 import wrapt
 
+from trytond.config import config
 from trytond.protocols.wrappers import Request
 from trytond.protocols.jsonrpc import JSONProtocol
 from trytond.protocols.xmlrpc import XMLProtocol
@@ -38,12 +40,33 @@ class TrytondWSGI(object):
         if request.user_id:
             return wrapped(*args, **kwargs)
         else:
-            abort(303)
+            abort(httplib.UNAUTHORIZED)
+
+    def check_request_size(self, request, size=None):
+        if request.method not in {'POST', 'PUT', 'PATCH'}:
+            return
+        if size is None:
+            if request.user_id:
+                max_size = config.getint(
+                    'request', 'max_size_authenticated')
+            else:
+                max_size = config.getint(
+                    'request', 'max_size')
+        else:
+            max_size = size
+        if max_size:
+            content_length = request.content_length
+            if content_length is None:
+                abort(httplib.LENGTH_REQUIRED)
+            elif content_length > max_size:
+                abort(httplib.REQUEST_ENTITY_TOO_LARGE)
 
     def dispatch_request(self, request):
         adapter = self.url_map.bind_to_environ(request.environ)
         try:
             endpoint, request.view_args = adapter.match()
+            max_request_size = getattr(endpoint, 'max_request_size', None)
+            self.check_request_size(request, max_request_size)
             return endpoint(request, **request.view_args)
         except HTTPException, e:
             return e
@@ -95,3 +118,4 @@ class TrytondWSGI(object):
         return self.wsgi_app(environ, start_response)
 
 app = TrytondWSGI()
+import trytond.protocols.dispatcher
-- 
tryton-server



More information about the tryton-debian-vcs mailing list