Merge branch 'pu/2013.10-favoritesacl' into 2013.10
authorPhilipp Schüle <p.schuele@metaways.de>
Wed, 25 Feb 2015 13:16:28 +0000 (14:16 +0100)
committerPhilipp Schüle <p.schuele@metaways.de>
Wed, 25 Feb 2015 13:16:28 +0000 (14:16 +0100)
Conflicts:
tine20/Felamimail/Setup/Initialize.php
tine20/Tinebase/Container.php
tine20/Tinebase/Setup/Update/Release8.php
tine20/Tinebase/Setup/setup.xml
tine20/Tinebase/translations/de.po
tine20/Tinebase/translations/template.pot

Change-Id: I3191101f7839af8a29b957c86022c497a8c86186

15 files changed:
1  2 
tine20/Courses/Controller/Course.php
tine20/Courses/Setup/Initialize.php
tine20/Felamimail/Setup/Initialize.php
tine20/HumanResources/Setup/Update/Release7.php
tine20/Inventory/Setup/Initialize.php
tine20/Tinebase/Container.php
tine20/Tinebase/Controller/Record/Abstract.php
tine20/Tinebase/Convert/Json.php
tine20/Tinebase/Frontend/Json/Abstract.php
tine20/Tinebase/Record/RecordSet.php
tine20/Tinebase/Setup/Update/Release8.php
tine20/Tinebase/Setup/setup.xml
tine20/Tinebase/js/Models.js
tine20/Tinebase/translations/de.po
tine20/Tinebase/translations/template.pot

Simple merge
Simple merge
@@@ -55,8 -55,8 +55,8 @@@ class Felamimail_Setup_Initialize exten
              )
          ))));
  
-         $myHighlightedPFilter = $pfe->create(new Tinebase_Model_PersistentFilter(array_merge($commonValues, array(
+         $myHighlightedPFilter = $pfe->createDuringSetup(new Tinebase_Model_PersistentFilter(array_merge($commonValues, array(
 -            'name'              => 'All Highlighted mail', // _("All highlighted mail")
 +            'name'              => 'All highlighted mail', // _("All highlighted mail")
              'description'       => 'All highlighted mail of my email accounts', // _("All highlighted mail of my email accounts")
              'filters'           => array(
                  array('field' => 'flags'    , 'operator' => 'in', 'value' => Zend_Mail_Storage::FLAG_FLAGGED),
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -61,218 -61,141 +61,357 @@@ class Tinebase_Setup_Update_Release8 ex
      }
      
      /**
 -     * 
 +     * update to 8.3
 +     * - update 256 char fields
 +     * 
 +     * @see 0008070: check index lengths
 +     */
 +    public function update_2()
 +    {
 +        $columns = array("container" => array(
 +                            "name" => 'true'
 +                            ),
 +                        "note_types" => array(
 +                            "icon" => 'true',
 +                            "description" => 'null'
 +                            ),
 +                        "tags" => array(
 +                            "name" => 'null',
 +                            "description" => 'null'
 +                            ),
 +                        "accounts" => array(
 +                            "home_dir" => 'false'
 +                            )
 +                        );
 +        $this->truncateTextColumn($columns, 255);
 +        $this->setTableVersion('container', '9');
 +        $this->setTableVersion('note_types', '3');
 +        $this->setTableVersion('tags', '7');
 +        $this->setTableVersion('accounts', '10');
 +        $this->setApplicationVersion('Tinebase', '8.3');
 +    }
 +    
 +    /**
 +     * adds a label property to hold a humanreadable text
 +     */
 +    public function update_3()
 +    {
 +        $declaration = new Setup_Backend_Schema_Field_Xml('<field>
 +            <name>label</name>
 +            <type>text</type>
 +            <length>128</length>
 +            <notnull>false</notnull>
 +        </field>');
 +        
 +        $this->_backend->addCol('importexport_definition', $declaration);
 +        
 +        Setup_Controller::getInstance()->createImportExportDefinitions(Tinebase_Application::getInstance()->getApplicationByName('Addressbook'));
 +        
 +        $this->setTableVersion('importexport_definition', '8');
 +        $this->setApplicationVersion('Tinebase', '8.4');
 +    }
 +    
 +    public function update_4() {
 +        $tableDefinition = '
 +            <table>
 +                <name>import</name>
 +                <version>1</version>
 +                <declaration>
 +                    <field>
 +                        <name>id</name>
 +                        <type>text</type>
 +                        <length>80</length>
 +                        <notnull>true</notnull>
 +                    </field>
 +                    <field>
 +                        <name>timestamp</name>
 +                        <type>datetime</type>
 +                    </field>
 +                    <field>
 +                        <name>user_id</name>
 +                        <type>text</type>
 +                        <length>80</length>
 +                        <notnull>true</notnull>
 +                    </field>
 +                    <field>
 +                        <name>model</name>
 +                        <type>text</type>
 +                        <length>80</length>
 +                        <notnull>true</notnull>
 +                    </field>
 +                    <field>
 +                        <name>application_id</name>
 +                        <type>text</type>
 +                        <length>80</length>
 +                        <notnull>true</notnull>
 +                    </field>
 +                    <field>
 +                        <name>synctoken</name>
 +                        <type>text</type>
 +                        <length>80</length>
 +                    </field>
 +                    <field>
 +                        <name>container_id</name>
 +                        <length>80</length>
 +                        <type>text</type>
 +                    </field>
 +                    <field>
 +                        <name>sourcetype</name>
 +                        <type>text</type>
 +                        <notnull>true</notnull>
 +                    </field>
 +                    <field>
 +                        <name>interval</name>
 +                        <type>text</type>
 +                    </field>
 +                    <field>
 +                        <name>source</name>
 +                        <type>text</type>
 +                    </field>
 +                    <field>
 +                        <name>options</name>
 +                        <type>text</type>
 +                    </field>
 +                    <index>
 +                        <name>id</name>
 +                        <primary>true</primary>
 +                        <field>
 +                            <name>id</name>
 +                        </field>
 +                    </index>
 +                    <field>
 +                        <name>created_by</name>
 +                        <type>text</type>
 +                        <length>40</length>
 +                    </field>
 +                    <field>
 +                        <name>creation_time</name>
 +                        <type>datetime</type>
 +                    </field>
 +                    <field>
 +                        <name>last_modified_by</name>
 +                        <type>text</type>
 +                        <length>40</length>
 +                    </field>
 +                    <field>
 +                        <name>last_modified_time</name>
 +                        <type>datetime</type>
 +                    </field>
 +                    <field>
 +                        <name>is_deleted</name>
 +                        <type>boolean</type>
 +                        <notnull>true</notnull>
 +                        <default>false</default>
 +                    </field>
 +                    <field>
 +                        <name>deleted_by</name>
 +                        <type>text</type>
 +                        <length>40</length>
 +                    </field>
 +                    <field>
 +                        <name>deleted_time</name>
 +                        <type>datetime</type>
 +                    </field>
 +                    <field>
 +                        <name>seq</name>
 +                        <type>integer</type>
 +                        <notnull>true</notnull>
 +                        <default>0</default>
 +                    </field>
 +                    <index>
 +                        <name>import::application_id--applications::id</name>
 +                        <field>
 +                            <name>application_id</name>
 +                        </field>
 +                        <foreign>true</foreign>
 +                        <reference>
 +                            <table>applications</table>
 +                            <field>id</field>
 +                        </reference>
 +                    </index>
 +                    <index>
 +                        <name>import::user_id--accounts::id</name>
 +                        <field>
 +                            <name>user_id</name>
 +                        </field>
 +                        <foreign>true</foreign>
 +                        <reference>
 +                            <table>accounts</table>
 +                            <field>id</field>
 +                        </reference>
 +                    </index>
 +                </declaration>
 +            </table>';
 +
 +
 +        $table = Setup_Backend_Schema_Table_Factory::factory('String', $tableDefinition);
 +        $this->_backend->createTable($table);
 +        
 +        $scheduler = Tinebase_Core::getScheduler();
 +        Tinebase_Scheduler_Task::addImportTask($scheduler);
 +        
 +        $this->setApplicationVersion('Tinebase', '8.5');
 +    }
 +    
 +    /**
 +     * update 5 -> adds index for id column of table container_content
 +     */
 +    public function update_5()
 +    {
 +        $declaration = new Setup_Backend_Schema_Index_Xml('
 +            <index>
 +                <name>id</name>
 +                <field>
 +                    <name>id</name>
 +                </field>
 +            </index>
 +        ');
 +        try {
 +            $this->_backend->addIndex('container_content', $declaration);
 +        } catch (Zend_Db_Statement_Exception $zdse) {
 +            Tinebase_Exception::log($zdse);
 +        }
 +        
 +        $this->setTableVersion('container_content', '2');
 +        $this->setApplicationVersion('Tinebase', '8.6');
 +    }
++    
++    /**
+      * - add filter acl
+      * - update current filter (add default grants: user for personal favorites, Admin group for shared favorites)
 -    public function update_2()
++     *
+      * @see 0009610: shared favorites acl
+      */
 -        $this->setApplicationVersion('Tinebase', '8.3');
++    public function update_6()
+     {
+         $this->_addFilterAclTable();
+         $this->_addGrantsToExistingFilters();
++        $this->setApplicationVersion('Tinebase', '8.7');
+     }
+     
+     /**
+      * add filter acl table
+      */
+     protected function _addFilterAclTable()
+     {
+         $xml = $declaration = new Setup_Backend_Schema_Table_Xml('<table>
+             <name>filter_acl</name>
+             <version>1</version>
+             <declaration>
+                 <field>
+                     <name>id</name>
+                     <type>text</type>
+                     <length>40</length>
+                     <notnull>true</notnull>
+                 </field>
+                 <field>
+                     <name>record_id</name>
+                     <type>text</type>
+                     <length>40</length>
+                     <notnull>true</notnull>
+                 </field>
+                 <field>
+                     <name>account_type</name>
+                     <type>text</type>
+                     <length>32</length>
+                     <default>user</default>
+                     <notnull>true</notnull>
+                 </field>
+                 <field>
+                     <name>account_id</name>
+                     <type>text</type>
+                     <length>40</length>
+                     <notnull>true</notnull>
+                 </field>
+                 <field>
+                     <name>account_grant</name>
+                     <type>text</type>
+                     <length>40</length>
+                     <notnull>true</notnull>
+                 </field>
+                 <index>
+                     <name>record_id-account-type-account_id-account_grant</name>
+                     <primary>true</primary>
+                     <field>
+                         <name>id</name>
+                     </field>
+                     <field>
+                         <name>record_id</name>
+                     </field>
+                     <field>
+                         <name>account_type</name>
+                     </field>
+                     <field>
+                         <name>account_id</name>
+                     </field>
+                     <field>
+                         <name>account_grant</name>
+                     </field>
+                 </index>
+                 <index>
+                     <name>id-account_type-account_id</name>
+                     <field>
+                         <name>record_id</name>
+                     </field>
+                     <field>
+                         <name>account_type</name>
+                     </field>
+                     <field>
+                         <name>account_id</name>
+                     </field>
+                 </index>
+                 <index>
+                     <name>filter_acl::record_id--filter::id</name>
+                     <field>
+                         <name>record_id</name>
+                     </field>
+                     <foreign>true</foreign>
+                     <reference>
+                         <table>filter</table>
+                         <field>id</field>
+                         <ondelete>cascade</ondelete>
+                     </reference>
+                 </index>
+             </declaration>
+         </table>');
+         
+         $this->createTable('filter_acl', $declaration);
+     }
+     
+     /**
+      * add default grants to existing filters
+      */
+     protected function _addGrantsToExistingFilters()
+     {
+         $pfBackend = new Tinebase_PersistentFilter_Backend_Sql();
+         $filters = $pfBackend->getAll();
+         $pfGrantsBackend = new Tinebase_Backend_Sql_Grants(array(
+             'modelName' => 'Tinebase_Model_PersistentFilterGrant',
+             'tableName' => 'filter_acl'
+         ));
+         $pfGrantsBackend->getGrantsForRecords($filters);
+         
+         foreach ($filters as $filter) {
+             if (count($filter->grants) > 0) {
+                 if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ 
+                     . ' Filter ' . $filter->name . ' already has grants.');
+                 continue;
+             }
+             $grant = new Tinebase_Model_PersistentFilterGrant(array(
+                 'account_type' => $filter->isPersonal() ? Tinebase_Acl_Rights::ACCOUNT_TYPE_USER : Tinebase_Acl_Rights::ACCOUNT_TYPE_ANYONE,
+                 'account_id'   => $filter->account_id,
+                 'record_id'    => $filter->getId(),
+             ));
+             
+             $grant->sanitizeAccountIdAndFillWithAllGrants();
+             $filter->grants = new Tinebase_Record_RecordSet('Tinebase_Model_PersistentFilterGrant');
+             $filter->grants->addRecord($grant);
+             
+             if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ 
+                 . ' Updating filter "' . $filter->name . '" with grant: ' . print_r($grant->toArray(), true));
+             
+             Tinebase_PersistentFilter::getInstance()->setGrants($filter);
+         }
+     }
  }
@@@ -1,7 -1,7 +1,7 @@@
  <?xml version="1.0" encoding="utf-8"?>
  <application>
      <name>Tinebase</name>
-     <version>8.6</version>
 -    <version>8.3</version>
++    <version>8.7</version>
      <tables>
          <table>
              <name>applications</name>
Simple merge
@@@ -2925,13 -2987,9 +2987,13 @@@ msgstr "Ausnahmefehler ({0})
  msgid "%s's personal container"
  msgstr "%s's persönlicher Ordner"
  
- #: Container.php:1530
- msgid ""
- "You are not allowed to delete this Container. Please define another "
- "container as the default addressbook for internal contacts!"
+ #: Container.php:1532
+ msgid "You are not allowed to delete this Container. Please define another container as the default addressbook for internal contacts!"
  msgstr "Es ist nicht erlaubt diesen Ordner zu löschen. Bitte definieren sie zuvor einen anderen Ordner für interne Kontakte!"
  
 +# 0009908: anonymous download links for files and folders
 +msgid "Publish"
 +msgstr "Veröffentlichen"
++
+ msgid "or"
+ msgstr "oder"
@@@ -13,65 -13,56 +13,65 @@@ msgstr "
  "X-Poedit-SourceCharset: utf-8\n"
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
  
- #: Group/Abstract.php:191 User/Abstract.php:319 User/Abstract.php:320
 -#: PersistentFilter.php:151
 -msgid "- The last filter I used -"
++#: Group/Abstract.php:215 User/Abstract.php:319 User/Abstract.php:320
 +#: User/Abstract.php:321 User/Abstract.php:322 User/Abstract.php:323
 +#: User/Abstract.php:324 js/ux/ConnectionStatus.js:58
 +msgid "unknown"
  msgstr ""
  
 -#: Exception/PasswordPolicyViolation.php:22
 -msgid "Password Policy Violation"
 +#: Preference/Abstract.php:517
 +msgid "default"
  msgstr ""
  
- #: Setup/setup.xml:3111
 -#: Exception/SystemGeneric.php:27
 -msgid "Generic System Exception"
++#: Setup/setup.xml:3330
 +msgid "note"
  msgstr ""
  
- #: Setup/setup.xml:3116
 -#: Exception/Record/SystemContainer.php:22
 -msgid "System Container"
++#: Setup/setup.xml:3335
 +msgid "default note type"
  msgstr ""
  
- #: Setup/setup.xml:3142
 -#: Exception/Record/SystemContainer.php:28
 -msgid "This is a system container which could not be deleted!"
++#: Setup/setup.xml:3361
 +msgid "telephone"
  msgstr ""
  
- #: Setup/setup.xml:3147
 -#: Acl/Rights.php:147
 -msgid "Report bugs"
++#: Setup/setup.xml:3366
 +msgid "telephone call"
  msgstr ""
  
- #: Setup/setup.xml:3173
 -#: Acl/Rights.php:148
 -msgid "Report bugs to the software vendor directly when they occur."
++#: Setup/setup.xml:3392
 +msgid "email"
  msgstr ""
  
- #: Setup/setup.xml:3178
 -#: Acl/Rights.php:151
 -msgid "Check version"
++#: Setup/setup.xml:3397
 +msgid "email contact"
  msgstr ""
  
- #: Setup/setup.xml:3204
 -#: Acl/Rights.php:152
 -msgid "Check for new versions of this software."
++#: Setup/setup.xml:3423
 +msgid "created"
  msgstr ""
  
- #: Setup/setup.xml:3209
 -#: Acl/Rights.php:155
 -msgid "Manage own profile"
++#: Setup/setup.xml:3428
 +msgid "record created"
  msgstr ""
  
- #: Setup/setup.xml:3235
 -#: Acl/Rights.php:156
 -msgid "The right to manage the own profile (selected contact data)."
++#: Setup/setup.xml:3454
 +msgid "changed"
  msgstr ""
  
- #: Setup/setup.xml:3240
 -#: Acl/Rights.php:159
 -msgid "Manage own client state"
++#: Setup/setup.xml:3459
 +msgid "record changed"
  msgstr ""
  
- #: Container.php:682
 -#: Acl/Rights.php:160
 -msgid "The right to manage the own client state."
++#: Container.php:725
 +#, python-format
 +msgid "%s's personal container"
 +msgstr ""
 +
- #: Container.php:1530
++#: Container.php:1697
 +msgid ""
 +"You are not allowed to delete this Container. Please define another "
 +"container as the default addressbook for internal contacts!"
  msgstr ""
  
  #: Acl/Rights/Abstract.php:72
@@@ -90,1276 -81,1221 +90,1283 @@@ msgstr "
  msgid "run right description"
  msgstr ""
  
 -#: ModelConfiguration.php:41 ModelConfiguration.php:50
 -#: ModelConfiguration.php:80 ModelConfiguration.php:89
 -msgid "Record Name"
 -msgid_plural "Records Name"
 -msgstr[0] ""
 -msgstr[1] ""
 -
 -#: ModelConfiguration.php:153 ModelConfiguration.php:239
 -msgid "Group"
 +#: Acl/Rights.php:147
 +msgid "Report bugs"
  msgstr ""
  
 -#: ModelConfiguration.php:196
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:195
 -msgid "Title"
 +#: Acl/Rights.php:148
 +msgid "Report bugs to the software vendor directly when they occur."
  msgstr ""
  
 -#: ModelConfiguration.php:200
 -msgid "New Car"
 +#: Acl/Rights.php:151
 +msgid "Check version"
  msgstr ""
  
 -#: ModelConfiguration.php:348 ModelConfiguration.php:351
 -msgid "Banking Information"
 +#: Acl/Rights.php:152
 +msgid "Check for new versions of this software."
  msgstr ""
  
 -#: ModelConfiguration.php:352
 -msgid "Private Information"
 +#: Acl/Rights.php:155
 +msgid "Manage own profile"
  msgstr ""
  
 -#: Preference/Abstract.php:511
 -msgid "default"
 +#: Acl/Rights.php:156
 +msgid "The right to manage the own profile (selected contact data)."
  msgstr ""
  
 -#: Frontend/Http.php:396 js/ExceptionHandler.js:168
 -msgid "Authorisation Required"
 +#: Acl/Rights.php:159
 +msgid "Manage own client state"
  msgstr ""
  
 -#: Frontend/Http.php:397
 -msgid "Your session is not valid. You need to login again."
 +#: Acl/Rights.php:160
 +msgid "The right to manage the own client state."
  msgstr ""
  
- #: Import/Csv/Abstract.php:200
 -#: Frontend/Http.php:422 js/ExceptionDialog.js:62
 -msgid "Abnormal End"
++#: WebDav/PrincipalBackend.php:525
++msgid "Shared folders"
+ msgstr ""
 -#: Frontend/Http.php:423 js/ExceptionDialog.js:154
 -msgid "An error occurred, the program ended abnormal."
++#: Import/Csv/Abstract.php:201
 +#, python-format
 +msgid "The following fields weren't imported: %s"
  msgstr ""
  
- #: Import/Csv/Abstract.php:201
 -#: Notes.php:386
 -msgid "by"
++#: Import/Csv/Abstract.php:202
 +msgid "N/A"
  msgstr ""
  
- #: Frontend/Http.php:396 js/ExceptionHandler.js:168
 -#: Notes.php:395
 -msgid "Changed fields:"
++#: Frontend/Cli.php:736
++#, python-format
++msgid "%s's personal "
+ msgstr ""
 -#: User/Abstract.php:319 User/Abstract.php:320 User/Abstract.php:321
 -#: User/Abstract.php:322 User/Abstract.php:323 User/Abstract.php:324
 -#: js/ux/ConnectionStatus.js:58 Group/Abstract.php:191
 -msgid "unknown"
++#: Frontend/Http.php:402 js/ExceptionHandler.js:168
 +msgid "Authorisation Required"
  msgstr ""
  
- #: Frontend/Http.php:397
 -#: Import/Csv/Abstract.php:200
 -#, python-format
 -msgid "The following fields weren't imported: %s"
++#: Frontend/Http.php:403
 +msgid "Your session is not valid. You need to login again."
  msgstr ""
  
- #: Frontend/Http.php:422 js/ExceptionDialog.js:62
 -#: Import/Csv/Abstract.php:201
 -msgid "N/A"
++#: Frontend/Http.php:428 js/ExceptionDialog.js:62
 +msgid "Abnormal End"
  msgstr ""
  
- #: Frontend/Http.php:423 js/ExceptionDialog.js:154
 -#: Config.php:281
 -msgid "System IMAP"
++#: Frontend/Http.php:429 js/ExceptionDialog.js:154
 +msgid "An error occurred, the program ended abnormal."
  msgstr ""
  
- #: Notes.php:424
 -#: Config.php:283
 -msgid "System IMAP server configuration."
++#: Notes.php:428
 +msgid "by"
  msgstr ""
  
- #: Notes.php:433
 -#: Config.php:292
 -msgid "System SMTP"
++#: Notes.php:437
 +msgid "Changed fields:"
  msgstr ""
  
 -#: Config.php:294
 -msgid "System SMTP server configuration."
 +#: views/update.php:24
 +msgid "Tine 2.0 needs to be updated or is not installed yet."
  msgstr ""
  
 -#: Config.php:303
 -msgid "System SIEVE"
 +#: views/update.php:25
 +msgid "Please wait or contact your administrator"
  msgstr ""
  
 -#: Config.php:305
 -msgid "System SIEVE server configuration."
 +#: Export/Pdf.php:216 js/widgets/tags/TagsPanel.js:57
- #: js/widgets/tags/TagsPanel.js:426
++#: js/widgets/tags/TagsPanel.js:434
 +msgid "Tags"
  msgstr ""
  
 -#: Config.php:314
 -msgid "Authentication Backend"
 +#: Export/Pdf.php:437
 +msgid "Created by"
  msgstr ""
  
 -#: Config.php:316
 -msgid "Backend adapter for user authentication."
 +#: Export/Pdf.php:483
 +msgid "Activities"
  msgstr ""
  
- #: Export/Spreadsheet/Ods.php:276
 -#: Config.php:324
 -msgid "Authentication Configuration"
++#: Export/Spreadsheet/Ods.php:293
 +msgid "Data"
  msgstr ""
  
 -#: Config.php:326
 -msgid "Authentication backend configuration."
 +#: js/AdminPanel.js:75
 +msgid "Profile Information"
  msgstr ""
  
- #: js/AdminPanel.js:79 js/widgets/dialog/EditDialog.js:384
 -#: Config.php:335
 -msgid "User Backend"
++#: js/AdminPanel.js:79 js/widgets/dialog/EditDialog.js:409
 +#: js/widgets/EditRecord.js:168
 +msgid "Apply"
  msgstr ""
  
 -#: Config.php:337
 -msgid "Backend adapter for user data."
 +#: js/AdminPanel.js:94 js/widgets/TimezoneChooser.js:77
 +#: js/widgets/LangChooser.js:68
 +msgid "Please Wait"
  msgstr ""
  
 -#: Config.php:345
 -msgid "User Configuration"
 +#: js/AdminPanel.js:156 js/widgets/container/GrantsGrid.js:43
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:262
 +msgid "Read"
  msgstr ""
  
 -#: Config.php:347
 -msgid "User backend configuration."
 +#: js/AdminPanel.js:157
 +msgid "The field is readable part of the profile"
  msgstr ""
  
 -#: Config.php:356
 -msgid "Cronuser ID"
 +#: js/AdminPanel.js:161 js/widgets/container/GrantsGrid.js:47
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:268
 +msgid "Edit"
  msgstr ""
  
 -#: Config.php:358
 -msgid "User ID of the cron user."
 +#: js/AdminPanel.js:162
 +msgid "The field is editable part of the profile"
  msgstr ""
  
 -#: Config.php:366
 -msgid "Title Postfix"
 +#: js/AdminPanel.js:175 js/widgets/dialog/DuplicateResolveGridPanel.js:203
 +msgid "Field Name"
  msgstr ""
  
 -#: Config.php:368
 -msgid "Postfix string appended to the title of this installation."
 +#: js/LoginPanel.js:83 js/LoginPanel.js:159
 +msgid "Login"
  msgstr ""
  
 -#: Config.php:376
 -msgid "Redirect URL"
 +#: js/LoginPanel.js:93 js/widgets/dialog/CredentialsDialog.js:61
 +msgid "Username"
  msgstr ""
  
 -#: Config.php:378
 -msgid "Redirect to this URL after logout."
 +#: js/LoginPanel.js:111 js/widgets/dialog/CredentialsDialog.js:65
 +msgid "Password"
  msgstr ""
  
 -#: Config.php:386
 -msgid "Redirect to Referrer"
 +#: js/LoginPanel.js:128
 +msgid "Certificate detected. Please, press Login button to proceed."
  msgstr ""
  
 -#: Config.php:388
 -msgid "Redirect to referrer after logout."
 +#: js/LoginPanel.js:185
 +msgid "Version"
  msgstr ""
  
 -#: Config.php:396
 -msgid "Redirect Always"
 +#: js/LoginPanel.js:217
 +#, python-brace-format
 +msgid "{0} is made for you"
  msgstr ""
  
 -#: Config.php:398
 -msgid "Redirect to configured redirect URL also for login."
 +#: js/LoginPanel.js:219
 +#, python-brace-format
 +msgid ""
 +"{0} wants to make business collaboration easier and more enjoyable - for "
 +"your needs! So you are warmly welcome to discuss with us, bring in ideas and "
 +"get help."
  msgstr ""
  
 -#: Config.php:406
 -msgid "Allowed Origins"
 +#: js/LoginPanel.js:225
 +#, python-brace-format
 +msgid "{0} Homepage"
  msgstr ""
  
 -#: Config.php:408
 -msgid "Allowed Origins for the JSON API."
 +#: js/LoginPanel.js:226
 +#, python-brace-format
 +msgid "{0} Forum"
  msgstr ""
  
 -#: Config.php:416
 -msgid "Accepted Terms Version"
 +#: js/LoginPanel.js:230
 +msgid "Translations"
  msgstr ""
  
 -#: Config.php:418
 -msgid "Accepted version number of the terms and conditions document."
 +#: js/LoginPanel.js:232
 +#, python-brace-format
 +msgid "Translation state of {0}: {1}%."
  msgstr ""
  
 -#: Config.php:426
 -msgid "Use Geolocation Services"
 +#: js/LoginPanel.js:234
 +#, python-brace-format
 +msgid ""
 +"If the state of your language is not satisfying, or if you miss a language, "
 +"please consider becoming a {0} translator."
  msgstr ""
  
 -#: Config.php:428
 -msgid "Use of external Geolocation services is allowed."
 +#: js/LoginPanel.js:237
 +#, python-brace-format
 +msgid "{0} Translation Howto"
  msgstr ""
  
 -#: Config.php:436
 -msgid "IP Session Validator"
 +#: js/LoginPanel.js:238
 +msgid "Detailed Language Statistics"
  msgstr ""
  
 -#: Config.php:438
 -msgid "Destroy session if the users IP changes."
 +#: js/LoginPanel.js:258
 +msgid "Powered by:"
  msgstr ""
  
 -#: Config.php:446
 -msgid "UA Session Validator"
 +#: js/LoginPanel.js:258
 +msgid "online open source groupware and crm"
  msgstr ""
  
 -#: Config.php:448
 -msgid "Destroy session if the users user agent string changes."
 +#: js/LoginPanel.js:308
 +#, python-brace-format
 +msgid "about {0} minutes"
  msgstr ""
  
- #: js/LoginPanel.js:313 js/LoginPanel.js:551
 -#: Config.php:456
 -msgid "Files Directory"
++#: js/LoginPanel.js:313 js/LoginPanel.js:552
 +msgid "Tine 2.0 needs your help"
  msgstr ""
  
- #: js/LoginPanel.js:315 js/LoginPanel.js:553
 -#: Config.php:458
 -msgid "Directory with web server write access for user files."
++#: js/LoginPanel.js:315 js/LoginPanel.js:554
 +msgid ""
 +"We regularly need your feedback to make the next Tine 2.0 releases fit your "
 +"needs even better. Help us and yourself by participating:"
  msgstr ""
  
 -#: Config.php:466 Config.php:468
 -msgid "Reuse last username logged"
 +#: js/LoginPanel.js:321
 +msgid "participate!"
  msgstr ""
  
 -#: Config.php:476 Config.php:478
 -msgid "User may change password"
 +#: js/LoginPanel.js:343
 +msgid "Languages"
  msgstr ""
  
 -#: Config.php:487 Config.php:489
 -msgid "Enable password policy"
 +#: js/LoginPanel.js:344
 +msgid "Duration"
  msgstr ""
  
 -#: Config.php:497
 -msgid "Only ASCII"
 +#: js/LoginPanel.js:385
 +msgid "Browser incompatible"
  msgstr ""
  
 -#: Config.php:499
 -msgid "Only ASCII characters are allowed in passwords."
 +#: js/LoginPanel.js:387
 +msgid "Your browser is not supported by Tine 2.0."
  msgstr ""
  
 -#: Config.php:507
 -msgid "Minimum length"
 +#: js/LoginPanel.js:392
 +msgid "Browser incompatible?"
  msgstr ""
  
 -#: Config.php:509
 -msgid "Minimum password length"
 +#: js/LoginPanel.js:394
 +msgid ""
 +"You are using an unrecognized browser. This could result in unexpected "
 +"behaviour."
  msgstr ""
  
 -#: Config.php:517
 -msgid "Minimum word chars"
 +#: js/LoginPanel.js:400
 +msgid "You might try one of these browsers:"
  msgstr ""
  
- #: js/LoginPanel.js:460
 -#: Config.php:519
 -msgid "Minimum word chars in password"
++#: js/LoginPanel.js:461
 +msgid "Logging you in..."
  msgstr ""
  
- #: js/LoginPanel.js:460 js/widgets/dialog/MultipleEditDialogPlugin.js:683
 -#: Config.php:527
 -msgid "Minimum uppercase chars"
++#: js/LoginPanel.js:461 js/widgets/dialog/MultipleEditDialogPlugin.js:683
 +#: js/widgets/tree/ContextMenu.js:202 js/widgets/container/GrantsDialog.js:95
- #: js/widgets/persistentfilter/PickerPanel.js:327
- #: js/widgets/persistentfilter/PickerPanel.js:365
- #: js/widgets/persistentfilter/PickerPanel.js:417
++#: js/widgets/persistentfilter/PickerPanel.js:328
++#: js/widgets/persistentfilter/PickerPanel.js:366
++#: js/widgets/persistentfilter/PickerPanel.js:421
 +msgid "Please wait"
  msgstr ""
  
- #: js/LoginPanel.js:474
 -#: Config.php:529
 -msgid "Minimum uppercase chars in password"
++#: js/LoginPanel.js:475
 +#, python-brace-format
 +msgid "Login successful. Loading {0}..."
  msgstr ""
  
- #: js/LoginPanel.js:474 js/MainMenu.js:257
 -#: Config.php:537
 -msgid "Minimum special chars"
++#: js/LoginPanel.js:475 js/MainMenu.js:258
 +msgid "Please wait!"
  msgstr ""
  
- #: js/LoginPanel.js:482 js/ExceptionHandler.js:233
 -#: Config.php:539
 -msgid "Minimum special chars in password"
++#: js/LoginPanel.js:483 js/ExceptionHandler.js:233
 +msgid "Connection lost, please check your network!"
  msgstr ""
  
- #: js/LoginPanel.js:486
 -#: Config.php:547
 -msgid "Minimum numbers"
++#: js/LoginPanel.js:487
 +msgid "There was an error verifying your certificate!!!"
  msgstr ""
  
- #: js/LoginPanel.js:487
 -#: Config.php:549
 -msgid "Minimum numbers in password"
++#: js/LoginPanel.js:488
 +msgid "Your username and/or your password are wrong!!!"
  msgstr ""
  
- #: js/LoginPanel.js:489
 -#: Config.php:557
 -msgid "Forbid part of username"
++#: js/LoginPanel.js:490
 +msgid "Login failure"
  msgstr ""
  
- #: js/LoginPanel.js:508 js/widgets/dialog/CredentialsDialog.js:126
 -#: Config.php:559
 -msgid "Forbid part of username in password"
++#: js/LoginPanel.js:509 js/widgets/dialog/CredentialsDialog.js:126
 +#: js/widgets/dialog/PreferencesDialog.js:248
 +#: js/widgets/dialog/PreferencesDialog.js:277
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:645
- #: js/widgets/dialog/ExportDialog.js:150 js/widgets/dialog/EditDialog.js:798
++#: js/widgets/dialog/ExportDialog.js:150 js/widgets/dialog/EditDialog.js:822
 +msgid "Errors"
  msgstr ""
  
- #: js/LoginPanel.js:508 js/widgets/dialog/CredentialsDialog.js:126
 -#: Config.php:567
 -msgid "Automatic bugreports"
++#: js/LoginPanel.js:509 js/widgets/dialog/CredentialsDialog.js:126
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:645
- #: js/widgets/dialog/ExportDialog.js:150 js/widgets/dialog/EditDialog.js:820
++#: js/widgets/dialog/ExportDialog.js:150 js/widgets/dialog/EditDialog.js:844
 +msgid "Please fix the errors noted."
  msgstr ""
  
- #: js/LoginPanel.js:523
 -#: Config.php:569
 -msgid ""
 -"Always send bugreports, even on timeouts and other exceptions / failures."
++#: js/LoginPanel.js:524
 +msgid "Please enter your login data"
  msgstr ""
  
 -#: Config.php:577
 -msgid "Last sessions cleanup run"
 +#: js/widgets/TimezoneChooser.js:37 Preference.php:142
 +msgid "Timezone"
  msgstr ""
  
 -#: Config.php:579
 -msgid "Stores the timestamp of the last sessions cleanup task run."
 +#: js/widgets/TimezoneChooser.js:77
 +msgid "setting new timezone..."
  msgstr ""
  
 -#: Config.php:587
 -msgid "Maximum login failures"
 +#: js/widgets/ActivitiesPanel.js:153
 +msgid "Add a Note..."
  msgstr ""
  
 -#: Config.php:589
 -msgid "Maximum allowed login failures before blocking account"
 +#: js/widgets/ActivitiesPanel.js:168 js/widgets/ActivitiesPanel.js:181
 +#: js/widgets/container/GrantsGrid.js:45
 +msgid "Add"
  msgstr ""
  
 -#: Config.php:597
 -msgid "Disable Anyone Account"
 +#: js/widgets/ActivitiesPanel.js:168 js/widgets/ActivitiesPanel.js:491
 +msgid "Note"
  msgstr ""
  
 -#: Config.php:599
 -msgid "Disallow anyone account in grant configurations"
 +#: js/widgets/ActivitiesPanel.js:182 js/widgets/ActivitiesPanel.js:413
 +msgid "Add new note"
  msgstr ""
  
 -#: Config.php:607
 -msgid "Alarms sent each job"
 +#: js/widgets/ActivitiesPanel.js:209 js/widgets/ActivitiesPanel.js:228
 +msgid "Notes"
  msgstr ""
  
 -#: Config.php:609
 -msgid ""
 -"Allows to configure the maximum number of alarm notifications in each run of "
 -"sendPendingAlarms (0 = no limit)"
 +#: js/widgets/ActivitiesPanel.js:311
 +msgid "Enter new note:"
  msgstr ""
  
 -#: Setup/setup.xml:3190
 -msgid "note"
 +#: js/widgets/ActivitiesPanel.js:332
- #: js/widgets/tags/TagsMassAttachAction.js:105
++#: js/widgets/tags/TagsMassAttachAction.js:102
 +#: js/widgets/tags/TagToggleBox.js:59
 +#: js/widgets/dialog/ExceptionHandlerDialog.js:186
 +#: js/widgets/dialog/PreferencesDialog.js:117
 +#: js/widgets/dialog/WizardPanel.js:187
 +#: js/widgets/dialog/DuplicateMergeDialog.js:79
 +#: js/widgets/dialog/AddToRecordPanel.js:103
- #: js/widgets/dialog/EditDialog.js:393
++#: js/widgets/dialog/EditDialog.js:418
 +#: js/widgets/dialog/MultiOptionsDialog.js:109
 +#: js/widgets/container/ContainerSelect.js:481 js/widgets/EditRecord.js:178
 +#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:76
 +#: js/PasswordChangeDialog.js:60 js/ux/form/LayerCombo.js:193
 +#: js/ExceptionDialog.js:109 js/ExceptionDialog.js:119
 +msgid "Cancel"
  msgstr ""
  
 -#: Setup/setup.xml:3195
 -msgid "default note type"
 +#: js/widgets/ActivitiesPanel.js:340
- #: js/widgets/tags/TagsMassAttachAction.js:84
++#: js/widgets/tags/TagsMassAttachAction.js:108
 +#: js/widgets/dialog/ExceptionHandlerDialog.js:194
 +#: js/widgets/dialog/PreferencesDialog.js:109
 +#: js/widgets/dialog/AddToRecordPanel.js:111
- #: js/widgets/dialog/EditDialog.js:373
++#: js/widgets/dialog/EditDialog.js:398
 +#: js/widgets/dialog/MultiOptionsDialog.js:102
 +#: js/widgets/container/ContainerSelect.js:490 js/widgets/EditRecord.js:157
 +#: js/AboutDialog.js:61 js/PasswordChangeDialog.js:66
 +#: js/ux/form/LayerCombo.js:186 js/LicenseScreen.js:51 js/CreditsScreen.js:53
 +msgid "Ok"
  msgstr ""
  
 -#: Setup/setup.xml:3221
 -msgid "telephone"
 +#: js/widgets/ActivitiesPanel.js:356 js/widgets/ActivitiesPanel.js:412
 +msgid "Add Note"
  msgstr ""
  
 -#: Setup/setup.xml:3226
 -msgid "telephone call"
 +#: js/widgets/ActivitiesPanel.js:399
 +#, python-brace-format
 +msgid "Add a {0} Note"
  msgstr ""
  
 -#: Setup/setup.xml:3252
 -msgid "email"
 +#: js/widgets/ActivitiesPanel.js:489 js/widgets/ActivitiesPanel.js:626
- #: js/widgets/relation/GenericPickerGridPanel.js:460
++#: js/widgets/relation/GenericPickerGridPanel.js:461
 +#: js/widgets/grid/LinkGridPanel.js:105
 +msgid "Type"
  msgstr ""
  
 -#: Setup/setup.xml:3257
 -msgid "email contact"
 +#: js/widgets/ActivitiesPanel.js:492
 +#: js/widgets/dialog/AttachmentsGridPanel.js:106
- #: js/widgets/grid/GridPanel.js:1371
++#: js/widgets/grid/GridPanel.js:1379
 +msgid "Created By"
  msgstr ""
  
 -#: Setup/setup.xml:3283
 -msgid "created"
 +#: js/widgets/ActivitiesPanel.js:493
 +msgid "Timestamp"
  msgstr ""
  
 -#: Setup/setup.xml:3288
 -msgid "record created"
 +#: js/widgets/ActivitiesPanel.js:507
 +#, python-brace-format
 +msgid "Displaying history records {0} - {1} of {2}"
  msgstr ""
  
 -#: Setup/setup.xml:3314
 -msgid "changed"
 +#: js/widgets/ActivitiesPanel.js:508
 +msgid "No history to display"
  msgstr ""
  
 -#: Setup/setup.xml:3319
 -msgid "record changed"
 +#: js/widgets/ActivitiesPanel.js:608
 +msgid "History"
  msgstr ""
  
 -#: Preference.php:122
 -msgid "Page size"
 +#: js/widgets/ActivitiesPanel.js:620
 +msgid "Quick Search"
  msgstr ""
  
 -#: Preference.php:123
 -msgid "Page size in grids"
 +#: js/widgets/ActivitiesPanel.js:621 js/widgets/ActivitiesPanel.js:622
 +msgid "Time"
  msgstr ""
  
 -#: Preference.php:126
 -msgid "Grid stripe rows"
 +#: js/widgets/ActivitiesPanel.js:624
 +msgid "User"
  msgstr ""
  
 -#: Preference.php:127
 -msgid "Stripe rows in grids"
 +#: js/widgets/customfields/EditDialogPlugin.js:155
 +msgid "General"
  msgstr ""
  
 -#: Preference.php:130
 -msgid "Grid load mask"
 +#: js/widgets/customfields/EditDialogPlugin.js:167
 +msgid "Custom Fields"
  msgstr ""
  
 -#: Preference.php:131
 -msgid "Show load mask in grids"
 +#: js/widgets/tags/TagCombo.js:46
 +msgid "tag name"
  msgstr ""
  
- #: js/widgets/tags/TagCombo.js:134 js/widgets/tags/TagCombo.js:139
 -#: Preference.php:134
 -msgid "Dialog buttons order style"
++#: js/widgets/tags/TagCombo.js:143 js/widgets/tags/TagCombo.js:148
 +#: js/widgets/tags/TagToggleBox.js:112 js/widgets/tags/TagToggleBox.js:117
- #: js/widgets/tags/TagsPanel.js:137 js/common.js:255 js/common.js:260
++#: js/widgets/tags/TagsPanel.js:142 js/common.js:257 js/common.js:262
 +msgid "personal"
  msgstr ""
  
 -#: Preference.php:135
 -msgid "Dialog buttons order style (Windows / Mac)"
 +#: js/widgets/tags/TagsMassDetachAction.js:18
 +msgid "Detach tag(s)"
  msgstr ""
  
 -#: Preference.php:138
 -msgid "Auto search on filter change"
 +#: js/widgets/tags/TagsMassDetachAction.js:84
 +msgid "Select Tag(s) to detach"
  msgstr ""
  
 -#: Preference.php:139
 -msgid "Perform auto search when filter is changed"
 +#: js/widgets/tags/TagsMassAttachAction.js:18
- msgid "Add Tag"
++msgid "Add Tags"
  msgstr ""
  
- #: js/widgets/tags/TagsMassAttachAction.js:76
- msgid "Attach the following tag to all selected items:"
 -#: Preference.php:142 js/widgets/TimezoneChooser.js:37
 -msgid "Timezone"
++#: js/widgets/tags/TagsMassAttachAction.js:94
++msgid "Select Tags"
  msgstr ""
  
- #: js/widgets/tags/TagsMassAttachAction.js:98
- msgid "Select Tag"
- msgstr ""
- #: js/widgets/tags/TagsMassAttachAction.js:128
 -#: Preference.php:143
 -msgid "The timezone in which dates are shown in Tine 2.0."
++#: js/widgets/tags/TagsMassAttachAction.js:135
 +msgid "Attaching Tag"
  msgstr ""
  
 -#: Preference.php:146 js/widgets/LangChooser.js:35
 -msgid "Language"
 +#: js/widgets/tags/TagToggleBox.js:52
 +msgid "Detach Tags"
  msgstr ""
  
 -#: Preference.php:147
 -msgid "The language of the Tine 2.0 GUI."
 +#: js/widgets/tags/TagToggleBox.js:52
 +msgid "Attach Tags"
  msgstr ""
  
 -#: Preference.php:150
 -msgid "Default Application"
 +#: js/widgets/tags/TagToggleBox.js:140
 +msgid "No Tags to detach found in the selected records"
  msgstr ""
  
 -#: Preference.php:151
 -msgid "The default application to show after login."
 +#: js/widgets/tags/TagToggleBox.js:141
 +msgid "Please Wait..."
  msgstr ""
  
 -#: Preference.php:154
 -msgid "Window Type"
 +#: js/widgets/tags/TagToggleBox.js:152
 +msgid "Detaching Tags"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:114
 -#: Preference.php:155
 -msgid "You can choose between modal windows or normal browser popup windows."
++#: js/widgets/tags/TagsPanel.js:119
 +msgid "Add a new personal tag"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:117
 -#: Preference.php:158
 -msgid "Confirm Logout"
++#: js/widgets/tags/TagsPanel.js:122
 +msgid "Add New Personal Tag"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:118
 -#: Preference.php:159
 -msgid "Show confirmation dialog on logout."
++#: js/widgets/tags/TagsPanel.js:123
 +msgid "Please note: You create a personal tag. Only you can see it!"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:118
 -#: Record/RecordSetDiff.php:42
 -msgid "added"
++#: js/widgets/tags/TagsPanel.js:123
 +msgid "Enter tag name:"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:159
 -#: Record/RecordSetDiff.php:43
 -msgid "removed"
++#: js/widgets/tags/TagsPanel.js:164
 +msgid "No Tags to display"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:182
 -#: Record/RecordSetDiff.php:44
 -msgid "modified"
 -msgstr ""
++#: js/widgets/tags/TagsPanel.js:187
 +msgid "Detach tag"
 +msgid_plural "Detach tags"
 +msgstr[0] ""
 +msgstr[1] ""
  
- #: js/widgets/tags/TagsPanel.js:192
 -#: Export/Spreadsheet/Ods.php:276
 -msgid "Data"
++#: js/widgets/tags/TagsPanel.js:197
 +msgid "Edit tag"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:197 js/widgets/tags/TagsPanel.js:202
 -#: Export/Pdf.php:216 js/widgets/tags/TagsPanel.js:57
 -#: js/widgets/tags/TagsPanel.js:434
 -msgid "Tags"
++#: js/widgets/tags/TagsPanel.js:202 js/widgets/tags/TagsPanel.js:207
 +msgid "Rename Tag"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:202
 -#: Export/Pdf.php:437
 -msgid "Created by"
++#: js/widgets/tags/TagsPanel.js:207
 +msgid "Please enter a new name:"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:211
 -#: Export/Pdf.php:483
 -msgid "Activities"
++#: js/widgets/tags/TagsPanel.js:216
 +msgid "Edit Description"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:216
 -#: js/AdminPanel.js:75
 -msgid "Profile Information"
++#: js/widgets/tags/TagsPanel.js:221
 +msgid "Description for tag"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:216
 -#: js/AdminPanel.js:79 js/widgets/EditRecord.js:168
 -#: js/widgets/dialog/EditDialog.js:384
 -msgid "Apply"
++#: js/widgets/tags/TagsPanel.js:221
 +msgid "Please enter new description:"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:225
 -#: js/AdminPanel.js:94 js/widgets/TimezoneChooser.js:77
 -#: js/widgets/LangChooser.js:68
 -msgid "Please Wait"
++#: js/widgets/tags/TagsPanel.js:230
 +msgid "Change Color"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:254
 -#: js/AdminPanel.js:156
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:262
 -#: js/widgets/container/GrantsGrid.js:43
 -msgid "Read"
 -msgstr ""
++#: js/widgets/tags/TagsPanel.js:259
 +msgid "Delete Tag"
 +msgid_plural "Delete Tags"
 +msgstr[0] ""
 +msgstr[1] ""
  
- #: js/widgets/tags/TagsPanel.js:267
 -#: js/AdminPanel.js:157
 -msgid "The field is readable part of the profile"
 -msgstr ""
++#: js/widgets/tags/TagsPanel.js:272
 +msgid "Realy Delete Selected Tag?"
 +msgid_plural "Realy Delete Selected Tags?"
 +msgstr[0] ""
 +msgstr[1] ""
  
- #: js/widgets/tags/TagsPanel.js:268
 -#: js/AdminPanel.js:161
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:268
 -#: js/widgets/container/GrantsGrid.js:47
 -msgid "Edit"
 -msgstr ""
++#: js/widgets/tags/TagsPanel.js:273
 +msgid "the selected tag will be deleted and disapear for all entries"
 +msgid_plural "The selected tags will be removed and disapear for all entries"
 +msgstr[0] ""
 +msgstr[1] ""
  
- #: js/widgets/tags/TagsPanel.js:272
 -#: js/AdminPanel.js:162
 -msgid "The field is editable part of the profile"
++#: js/widgets/tags/TagsPanel.js:277
 +msgid "Please wait a moment..."
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:272
 -#: js/AdminPanel.js:175 js/widgets/dialog/DuplicateResolveGridPanel.js:203
 -msgid "Field Name"
 -msgstr ""
++#: js/widgets/tags/TagsPanel.js:277
 +msgid "Deleting Tag"
 +msgid_plural "Deleting Tags"
 +msgstr[0] ""
 +msgstr[1] ""
  
- #: js/widgets/tags/TagsPanel.js:288 js/widgets/tags/TagsPanel.js:380
- #: js/widgets/tags/TagsPanel.js:413 js/widgets/dialog/EditDialog.js:839
 -#: js/AboutDialog.js:41 js/MainMenu.js:118
 -msgid "About {0}"
++#: js/widgets/tags/TagsPanel.js:293 js/widgets/tags/TagsPanel.js:388
++#: js/widgets/tags/TagsPanel.js:421 js/widgets/dialog/EditDialog.js:863
 +msgid "Failed"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:288
 -#: js/AboutDialog.js:56 js/MainMenu.js:166
 -msgid "Learn more about {0}"
++#: js/widgets/tags/TagsPanel.js:293
 +msgid "Could not delete Tag(s)."
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:332 js/widgets/tags/TagsPanel.js:394
 -#: js/AboutDialog.js:61 js/CreditsScreen.js:53 js/LicenseScreen.js:51
 -#: js/PasswordChangeDialog.js:66 js/widgets/EditRecord.js:157
 -#: js/widgets/tags/TagsMassAttachAction.js:108
 -#: js/widgets/dialog/MultiOptionsDialog.js:102
 -#: js/widgets/dialog/ExceptionHandlerDialog.js:194
 -#: js/widgets/dialog/AddToRecordPanel.js:111
 -#: js/widgets/dialog/PreferencesDialog.js:109
 -#: js/widgets/dialog/EditDialog.js:373 js/widgets/ActivitiesPanel.js:340
 -#: js/widgets/container/ContainerSelect.js:490 js/ux/form/LayerCombo.js:186
 -msgid "Ok"
++#: js/widgets/tags/TagsPanel.js:337 js/widgets/tags/TagsPanel.js:402
 +msgid "Notice"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:333 js/widgets/tags/TagsPanel.js:395
 -#: js/AboutDialog.js:71
 -msgid "Released under different"
++#: js/widgets/tags/TagsPanel.js:338 js/widgets/tags/TagsPanel.js:403
 +msgid "The minimum tag length is three."
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:380
 -#: js/AboutDialog.js:72
 -msgid "Open Source Licenses"
++#: js/widgets/tags/TagsPanel.js:388
 +msgid "Could not create tag."
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:413
 -#: js/AboutDialog.js:79
 -msgid "with the help of our"
++#: js/widgets/tags/TagsPanel.js:421
 +msgid "Could not update tag."
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:509
- #: js/widgets/relation/GenericPickerGridPanel.js:457
- #: js/widgets/persistentfilter/EditPersistentFilterPanel.js:191
 -#: js/AboutDialog.js:80
 -msgid "Contributors"
++#: js/widgets/tags/TagsPanel.js:516
++#: js/widgets/relation/GenericPickerGridPanel.js:458
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:204
 +#: js/ExceptionDialog.js:162
 +msgid "Description"
  msgstr ""
  
- #: js/widgets/tags/TagsPanel.js:513
 -#: js/tineInit.js:605
 -msgid ""
 -"Fatal Error: Client self-update failed, please contact your administrator "
 -"and/or restart/reload your browser."
++#: js/widgets/tags/TagsPanel.js:520
 +#: js/widgets/container/PropertiesDialog.js:113
 +msgid "Color"
  msgstr ""
  
- #: js/widgets/tags/TagFilter.js:30 js/Models.js:141
 -#: js/AppManager.js:208
 -msgid "Missing Applications"
++#: js/widgets/tags/TagFilter.js:30 js/Models.js:143
 +msgid "Tag"
 +msgid_plural "Tags"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/widgets/MainScreen.js:264
 +msgid "Save current view as favorite"
  msgstr ""
  
 -#: js/AppManager.js:209
 -msgid ""
 -"There are no applications enabled for you. Please contact your administrator."
 +#: js/widgets/CountryCombo.js:34
 +msgid "Select a country..."
  msgstr ""
  
 -#: js/CreditsScreen.js:36
 -msgid "Credits"
 +#: js/widgets/account/PickerGridPanel.js:158
 +msgid "Search User"
  msgstr ""
  
 -#: js/common.js:235
 -msgid "Usage:&#160;"
 +#: js/widgets/account/PickerGridPanel.js:164
 +msgid "Search Group"
  msgstr ""
  
 -#: js/common.js:255 js/common.js:260 js/widgets/tags/TagToggleBox.js:112
 -#: js/widgets/tags/TagToggleBox.js:117 js/widgets/tags/TagsPanel.js:142
 -#: js/widgets/tags/TagCombo.js:143 js/widgets/tags/TagCombo.js:148
 -msgid "personal"
 +#: js/widgets/account/PickerGridPanel.js:170
 +msgid "Add Anyone"
  msgstr ""
  
 -#: js/common.js:273 js/common.js:311
 -msgid "No Information"
 +#: js/widgets/account/PickerGridPanel.js:213
 +msgid "Anyone"
  msgstr ""
  
 -#: js/common.js:360
 -msgid "{0} minute"
 -msgid_plural "{0} minutes"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/account/PickerGridPanel.js:229
 +msgid "Search for users ..."
 +msgstr ""
  
 -#: js/common.js:361
 -msgid "{0} hour"
 -msgid_plural "{0} hours"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/account/PickerGridPanel.js:251
 +msgid "Search for groups ..."
 +msgstr ""
  
 -#: js/common.js:362
 -msgid "{0} workday"
 -msgid_plural "{0} workdays"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/account/PickerGridPanel.js:267
 +#: js/widgets/dialog/AttachmentsGridPanel.js:86
 +#: js/widgets/container/PropertiesDialog.js:107
- #: js/widgets/grid/LinkGridPanel.js:103 js/Models.js:428
++#: js/widgets/grid/LinkGridPanel.js:103 js/Models.js:430
 +msgid "Name"
 +msgstr ""
  
 -#: js/common.js:389
 -msgid "{0} second"
 -msgid_plural "{0} seconds"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/dialog/AdminPanel.js:59
 +#, python-brace-format
 +msgid "Change settings for application {0}"
 +msgstr ""
  
 -#: js/LoginPanel.js:83 js/LoginPanel.js:159
 -msgid "Login"
 +#: js/widgets/dialog/AdminPanel.js:107
 +msgid "Defaults"
  msgstr ""
  
 -#: js/LoginPanel.js:93 js/widgets/dialog/CredentialsDialog.js:61
 -msgid "Username"
 +#: js/widgets/dialog/AlarmPanel.js:34
 +msgid "Alarms"
  msgstr ""
  
 -#: js/LoginPanel.js:111 js/widgets/dialog/CredentialsDialog.js:65
 -msgid "Password"
 +#: js/widgets/dialog/AlarmPanel.js:37
 +msgid "0 minutes before"
  msgstr ""
  
 -#: js/LoginPanel.js:128
 -msgid "Certificate detected. Please, press Login button to proceed."
 +#: js/widgets/dialog/AlarmPanel.js:38
 +msgid "5 minutes before"
  msgstr ""
  
 -#: js/LoginPanel.js:185
 -msgid "Version"
 +#: js/widgets/dialog/AlarmPanel.js:39
 +msgid "15 minutes before"
  msgstr ""
  
 -#: js/LoginPanel.js:217
 -msgid "{0} is made for you"
 +#: js/widgets/dialog/AlarmPanel.js:40
 +msgid "30 minutes before"
  msgstr ""
  
 -#: js/LoginPanel.js:219
 -msgid ""
 -"{0} wants to make business collaboration easier and more enjoyable - for "
 -"your needs! So you are warmly welcome to discuss with us, bring in ideas and "
 -"get help."
 +#: js/widgets/dialog/AlarmPanel.js:41
 +msgid "1 hour before"
  msgstr ""
  
 -#: js/LoginPanel.js:225
 -msgid "{0} Homepage"
 +#: js/widgets/dialog/AlarmPanel.js:42
 +msgid "2 hours before"
  msgstr ""
  
 -#: js/LoginPanel.js:226
 -msgid "{0} Forum"
 +#: js/widgets/dialog/AlarmPanel.js:43
 +msgid "12 hours before"
  msgstr ""
  
 -#: js/LoginPanel.js:230
 -msgid "Translations"
 +#: js/widgets/dialog/AlarmPanel.js:44
 +msgid "1 day before"
  msgstr ""
  
 -#: js/LoginPanel.js:232
 -msgid "Translation state of {0}: {1}%."
 +#: js/widgets/dialog/AlarmPanel.js:45
 +msgid "2 days before"
  msgstr ""
  
 -#: js/LoginPanel.js:234
 -msgid ""
 -"If the state of your language is not satisfying, or if you miss a language, "
 -"please consider becoming a {0} translator."
 +#: js/widgets/dialog/AlarmPanel.js:46
 +msgid "Custom Datetime"
  msgstr ""
  
 -#: js/LoginPanel.js:237
 -msgid "{0} Translation Howto"
 +#: js/widgets/dialog/AlarmPanel.js:58
 +msgid "Alarm Time"
  msgstr ""
  
 -#: js/LoginPanel.js:238
 -msgid "Detailed Language Statistics"
 +#: js/widgets/dialog/AlarmPanel.js:170
 +#, python-brace-format
 +msgid "{0} minutes before"
  msgstr ""
  
 -#: js/LoginPanel.js:258
 -msgid "Powered by:"
 +#: js/widgets/dialog/CredentialsDialog.js:84
 +msgid "Please enter your credentials"
  msgstr ""
  
 -#: js/LoginPanel.js:258
 -msgid "online open source groupware and crm"
 +#: js/widgets/dialog/ExceptionHandlerDialog.js:217
 +#, python-brace-format
 +msgid "{1} - Exception {0}"
  msgstr ""
  
 -#: js/LoginPanel.js:308
 -msgid "about {0} minutes"
 +#: js/widgets/dialog/ExceptionHandlerDialog.js:219
 +#, python-brace-format
 +msgid "{0} - Unknown Exception"
  msgstr ""
  
 -#: js/LoginPanel.js:313 js/LoginPanel.js:551
 -msgid "Tine 2.0 needs your help"
 +#: js/widgets/dialog/PreferencesDialog.js:125
 +msgid "Admin Mode"
  msgstr ""
  
 -#: js/LoginPanel.js:315 js/LoginPanel.js:553
 -msgid ""
 -"We regularly need your feedback to make the next Tine 2.0 releases fit your "
 -"needs even better. Help us and yourself by participating:"
 +#: js/widgets/dialog/PreferencesDialog.js:163
 +msgid "Applications"
  msgstr ""
  
 -#: js/LoginPanel.js:321
 -msgid "participate!"
 +#: js/widgets/dialog/PreferencesDialog.js:192
 +msgid "Edit Preferences"
  msgstr ""
  
 -#: js/LoginPanel.js:343
 -msgid "Languages"
 +#: js/widgets/dialog/PreferencesDialog.js:193
 +msgid "Loading ..."
  msgstr ""
  
 -#: js/LoginPanel.js:344
 -msgid "Duration"
 +#: js/widgets/dialog/PreferencesDialog.js:248
 +#: js/widgets/form/ConfigPanel.js:134
 +msgid "You need to correct the red marked fields before config could be saved"
  msgstr ""
  
 -#: js/LoginPanel.js:385
 -msgid "Browser incompatible"
 +#: js/widgets/dialog/PreferencesDialog.js:277
 +msgid "Saving of preferences failed."
  msgstr ""
  
 -#: js/LoginPanel.js:387
 -msgid "Your browser is not supported by Tine 2.0."
 +#: js/widgets/dialog/ImportDialog.js:223
 +msgid "Choose File and Format"
  msgstr ""
  
 -#: js/LoginPanel.js:392
 -msgid "Browser incompatible?"
 +#: js/widgets/dialog/ImportDialog.js:232
 +msgid "Choose Import File"
  msgstr ""
  
 -#: js/LoginPanel.js:394
 +#: js/widgets/dialog/ImportDialog.js:236
  msgid ""
 -"You are using an unrecognized browser. This could result in unexpected "
 -"behaviour."
 +"Please choose the file that contains the records you want to add to Tine 2.0"
  msgstr ""
  
 -#: js/LoginPanel.js:400
 -msgid "You might try one of these browsers:"
 +#: js/widgets/dialog/ImportDialog.js:240
 +#, python-brace-format
 +msgid "Select file containing your {0}"
  msgstr ""
  
 -#: js/LoginPanel.js:460
 -msgid "Logging you in..."
 +#: js/widgets/dialog/ImportDialog.js:248 js/widgets/dialog/ImportDialog.js:253
 +msgid "What should the file you upload look like?"
  msgstr ""
  
 -#: js/LoginPanel.js:460 js/widgets/tree/ContextMenu.js:191
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:683
 -#: js/widgets/persistentfilter/PickerPanel.js:328
 -#: js/widgets/persistentfilter/PickerPanel.js:366
 -#: js/widgets/persistentfilter/PickerPanel.js:421
 -#: js/widgets/container/GrantsDialog.js:95
 -msgid "Please wait"
 +#: js/widgets/dialog/ImportDialog.js:256
 +msgid ""
 +"Tine 2.0 does not understand all kind of files you might want to upload. You "
 +"will have to manually adjust your file so Tine 2.0 can handle it."
  msgstr ""
  
 -#: js/LoginPanel.js:474
 -msgid "Login successful. Loading {0}..."
 +#: js/widgets/dialog/ImportDialog.js:259
 +msgid ""
 +"Following you find a list of all supported import formats and a sample file, "
 +"how Tine 2.0 expects your file to look like."
  msgstr ""
  
 -#: js/LoginPanel.js:474 js/MainMenu.js:257
 -msgid "Please wait!"
 +#: js/widgets/dialog/ImportDialog.js:262
 +msgid "Please select the import format of the file you want to upload"
  msgstr ""
  
 -#: js/LoginPanel.js:482 js/ExceptionHandler.js:233
 -msgid "Connection lost, please check your network!"
 +#: js/widgets/dialog/ImportDialog.js:283 js/widgets/dialog/ImportDialog.js:315
 +msgid "Download example file"
  msgstr ""
  
 -#: js/LoginPanel.js:486
 -msgid "There was an error verifying your certificate!!!"
 +#: js/widgets/dialog/ImportDialog.js:286
 +msgid "Import description"
  msgstr ""
  
 -#: js/LoginPanel.js:487
 -msgid "Your username and/or your password are wrong!!!"
 +#: js/widgets/dialog/ImportDialog.js:336
 +msgid "Set Import Options"
  msgstr ""
  
 -#: js/LoginPanel.js:489
 -msgid "Login failure"
 +#: js/widgets/dialog/ImportDialog.js:344
 +#, python-brace-format
 +msgid "Select {0} to add you {1} to:"
  msgstr ""
  
 -#: js/LoginPanel.js:508 js/widgets/dialog/CredentialsDialog.js:126
 -#: js/widgets/dialog/PreferencesDialog.js:248
 -#: js/widgets/dialog/PreferencesDialog.js:277
 -#: js/widgets/dialog/EditDialog.js:798 js/widgets/dialog/ExportDialog.js:150
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:645
 -msgid "Errors"
 +#: js/widgets/dialog/ImportDialog.js:396
 +msgid "Checking Import"
  msgstr ""
  
 -#: js/LoginPanel.js:508 js/widgets/dialog/CredentialsDialog.js:126
 -#: js/widgets/dialog/EditDialog.js:820 js/widgets/dialog/ExportDialog.js:150
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:645
 -msgid "Please fix the errors noted."
 +#: js/widgets/dialog/ImportDialog.js:425
 +msgid "Resolve Conflicts"
  msgstr ""
  
 -#: js/LoginPanel.js:523
 -msgid "Please enter your login data"
 +#: js/widgets/dialog/ImportDialog.js:434
 +#, python-brace-format
 +msgid "There are {0} {1} that might already exist."
  msgstr ""
  
 -#: js/LicenseScreen.js:35
 -msgid "License"
 +#: js/widgets/dialog/ImportDialog.js:441
 +msgid "Conflict"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:32
 -msgid "Change Password For \"{0}\""
 +#: js/widgets/dialog/ImportDialog.js:442
 +msgid "First Conflict"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:48
 -msgid "Old Password"
 +#: js/widgets/dialog/ImportDialog.js:443
 +msgid "Previous Conflict"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:52
 -msgid "New Password"
 +#: js/widgets/dialog/ImportDialog.js:444
 +msgid "Next Conflict"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:56
 -msgid "Repeat new Password"
 +#: js/widgets/dialog/ImportDialog.js:445
 +msgid "Last Conflict"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:60 js/widgets/EditRecord.js:178
 -#: js/widgets/tags/TagToggleBox.js:59
 -#: js/widgets/tags/TagsMassAttachAction.js:102
 -#: js/widgets/dialog/DuplicateMergeDialog.js:79
 -#: js/widgets/dialog/MultiOptionsDialog.js:109
 -#: js/widgets/dialog/ExceptionHandlerDialog.js:186
 -#: js/widgets/dialog/AddToRecordPanel.js:103
 -#: js/widgets/dialog/PreferencesDialog.js:117
 -#: js/widgets/dialog/EditDialog.js:393 js/widgets/dialog/WizardPanel.js:187
 -#: js/widgets/ActivitiesPanel.js:332
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:76
 -#: js/widgets/container/ContainerSelect.js:481 js/ExceptionDialog.js:109
 -#: js/ExceptionDialog.js:119 js/ux/form/LayerCombo.js:193
 -msgid "Cancel"
 +#: js/widgets/dialog/ImportDialog.js:451
 +msgid "Conflict is resolved"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:75
 -msgid "Please Wait!"
 +#: js/widgets/dialog/ImportDialog.js:456
 +msgid "Resolve all conflicts"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:76
 -msgid "changing password..."
 +#: js/widgets/dialog/ImportDialog.js:550
 +msgid "Processing Conflict Data"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:87
 -msgid "Success"
 +#: js/widgets/dialog/ImportDialog.js:575 js/widgets/dialog/ImportDialog.js:595
 +msgid "No conflict to resolve"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:88
 -msgid "Your password has been changed."
 +#: js/widgets/dialog/ImportDialog.js:594
 +#, python-brace-format
 +msgid "(This is record {0} in your import file)"
 +msgstr ""
 +
 +#: js/widgets/dialog/ImportDialog.js:619
 +msgid "No Detail Informations"
 +msgstr ""
 +
 +#: js/widgets/dialog/ImportDialog.js:624
 +#: js/widgets/dialog/MultipleEditResultSummary.js:213
 +msgid "Summary"
 +msgstr ""
 +
 +#: js/widgets/dialog/ImportDialog.js:653
 +#: js/widgets/dialog/MultipleEditResultSummary.js:192
 +msgid "Index"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:100 js/PasswordChangeDialog.js:110
 -#: js/widgets/relation/GenericPickerGridPanel.js:939
 -#: js/widgets/relation/GenericPickerGridPanel.js:952
  #: js/widgets/dialog/ImportDialog.js:654
  #: js/widgets/dialog/MultipleEditResultSummary.js:196
  #: js/widgets/form/RecordPickerComboBox.js:294
- #: js/widgets/relation/GenericPickerGridPanel.js:947
- #: js/widgets/relation/GenericPickerGridPanel.js:960
++#: js/widgets/relation/GenericPickerGridPanel.js:948
++#: js/widgets/relation/GenericPickerGridPanel.js:961
 +#: js/PasswordChangeDialog.js:100 js/PasswordChangeDialog.js:110
  msgid "Failure"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:111
 -msgid "The new passwords mismatch, please correct them."
 +#: js/widgets/dialog/ImportDialog.js:669
 +#, python-brace-format
 +msgid "Importing {0}"
  msgstr ""
  
 -#: js/MainMenu.js:66
 -msgid "User: {0}"
 +#: js/widgets/dialog/ImportDialog.js:700
 +#, python-brace-format
 +msgid "{0} records had failures and where discarded."
  msgstr ""
  
 -#: js/MainMenu.js:124
 -msgid "Help"
 +#: js/widgets/dialog/ImportDialog.js:742
 +#, python-brace-format
 +msgid "In total we found {0} records in your import file."
  msgstr ""
  
 -#: js/MainMenu.js:131
 -msgid "Debug Console (Ctrl + F11)"
 +#: js/widgets/dialog/ImportDialog.js:745
 +#, python-brace-format
 +msgid "{0} of them will be added as new records into: \"{1}\"."
  msgstr ""
  
 -#: js/MainMenu.js:137 js/widgets/dialog/PreferencesPanel.js:36
 -msgid "Preferences"
 +#: js/widgets/dialog/ImportDialog.js:752
 +#, python-brace-format
 +msgid "{0} of them where identified as duplicates."
  msgstr ""
  
 -#: js/MainMenu.js:144
 -msgid "Edit Profile"
 +#: js/widgets/dialog/ImportDialog.js:755
 +#, python-brace-format
 +msgid ""
 +"From the identified duplicates {0} will be merged into the existing records."
  msgstr ""
  
 -#: js/MainMenu.js:151
 -msgid "Change password"
 +#: js/widgets/dialog/ImportDialog.js:759
 +#, python-brace-format
 +msgid "From the identified duplicates {0} will be discarded."
  msgstr ""
  
 -#: js/MainMenu.js:158
 -msgid "Logout"
 +#: js/widgets/dialog/ImportDialog.js:775
 +#, python-brace-format
 +msgid "All records will be tagged with: \"{0}\" so you can find them easily."
  msgstr ""
  
 -#: js/MainMenu.js:159
 -msgid "Logout from {0}"
 +#: js/widgets/dialog/ImportDialog.js:786
 +#, python-brace-format
 +msgid "{0} records have failures and will be discarded."
  msgstr ""
  
 -#: js/MainMenu.js:176
 -msgid "Allow desktop notifications"
 +#: js/widgets/dialog/LinkPanel.js:46
 +msgid "Links"
  msgstr ""
  
 -#: js/MainMenu.js:177
 -msgid "Request permissions for webkit desktop notifications."
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:341
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:465
 +msgid "Delete value from all selected records"
  msgstr ""
  
 -#: js/MainMenu.js:187
 -msgid "Install web app"
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:448
 +msgid "Undo change for all selected records"
  msgstr ""
  
 -#: js/MainMenu.js:188
 -msgid "Install Tine 2.0 as web app in your browser."
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:523
 +#, python-brace-format
 +msgid "Edit {0} {1}"
 +msgstr ""
 +
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:582
 +msgid "Different Values"
 +msgstr ""
 +
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:583
 +msgid ""
 +"This field has different values. Editing this field will overwrite the old "
 +"values."
  msgstr ""
  
 -#: js/MainMenu.js:243 js/widgets/grid/GridPanel.js:1761
 -#: js/widgets/tree/ContextMenu.js:346 js/widgets/dialog/EditDialog.js:827
  #: js/widgets/dialog/MultipleEditDialogPlugin.js:680
- #: js/widgets/dialog/EditDialog.js:827 js/widgets/tree/ContextMenu.js:357
- #: js/widgets/persistentfilter/PickerPanel.js:325
- #: js/widgets/grid/GridPanel.js:1761 js/MainMenu.js:243
++#: js/widgets/dialog/EditDialog.js:851 js/widgets/tree/ContextMenu.js:357
+ #: js/widgets/persistentfilter/PickerPanel.js:326
++#: js/widgets/grid/GridPanel.js:1769 js/MainMenu.js:244
  msgid "Confirm"
  msgstr ""
  
 -#: js/MainMenu.js:243
 -msgid "Are you sure you want to logout?"
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:680
 +#, python-brace-format
 +msgid "Do you really want to change these {0} records?"
  msgstr ""
  
 -#: js/MainMenu.js:257
 -msgid "Logging you out..."
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:683
 +msgid "Applying changes"
  msgstr ""
  
 -#: js/data/Record.js:199
 -msgid "Task"
 -msgid_plural "Tasks"
 -msgstr[0] ""
 -msgstr[1] ""
 -
 -#: js/data/Record.js:203
 -msgid "to do list"
 -msgid_plural "to do lists"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/dialog/WizardPanel.js:173
 +msgid "Back"
 +msgstr ""
  
 -#: js/ExceptionHandler.js:169
 -msgid "Your session timed out. You need to login again."
 +#: js/widgets/dialog/WizardPanel.js:180
 +msgid "Next"
  msgstr ""
  
 -#: js/ExceptionHandler.js:184
 -msgid "Insufficient Rights"
 +#: js/widgets/dialog/WizardPanel.js:194
 +msgid "Finish"
  msgstr ""
  
- #: js/widgets/dialog/PreferencesPanel.js:36 js/MainMenu.js:137
 -#: js/ExceptionHandler.js:185
 -msgid "Sorry, you are not permitted to perform this action"
++#: js/widgets/dialog/PreferencesPanel.js:36 js/MainMenu.js:138
 +msgid "Preferences"
  msgstr ""
  
 -#: js/ExceptionHandler.js:193
 -msgid "Not Found"
 +#: js/widgets/dialog/PreferencesPanel.js:185
 +msgid "There are no preferences for this application."
  msgstr ""
  
 -#: js/ExceptionHandler.js:194
 -msgid ""
 -"Sorry, your request could not be completed because the required data could "
 -"not be found. In most cases this means that someone already deleted the "
 -"data. Please refresh your current view."
 +#: js/widgets/dialog/DuplicateMergeDialog.js:87
 +#: js/widgets/dialog/MultipleEditResultSummary.js:86
 +#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:69
 +msgid "OK"
  msgstr ""
  
 -#: js/ExceptionHandler.js:202
 -msgid "Concurrent Updates"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:134
 +msgid "Merging Records..."
  msgstr ""
  
 -#: js/ExceptionHandler.js:203
 -msgid ""
 -"Someone else saved this record while you where editing the data. You need to "
 -"reload and make your changes again."
 +#: js/widgets/dialog/DuplicateMergeDialog.js:173
 +msgid "Merge Failed"
  msgstr ""
  
 -#: js/ExceptionHandler.js:211
 -msgid "Service Unavailable"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:173
 +#, python-brace-format
 +msgid "The merge succeeded, but the duplicate {0} could not be deleted."
  msgstr ""
  
 -#: js/ExceptionHandler.js:212
 -msgid ""
 -"The server is currently unable to handle the request due to a temporary "
 -"overloading, maintenance or misconfiguration of the server. Please try again "
 -"or contact your administrator."
 +#: js/widgets/dialog/DuplicateMergeDialog.js:212
 +#, python-brace-format
 +msgid "Merge {0}, prefer First"
  msgstr ""
  
 -#: js/ExceptionHandler.js:218
 -msgid "Server Message:"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:213
 +#, python-brace-format
 +msgid "Merge {0}, prefer Second"
  msgstr ""
  
 -#: js/ExceptionHandler.js:220
 -msgid "Invalid Data"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:220
- #: js/widgets/grid/GridPanel.js:586
++#: js/widgets/grid/GridPanel.js:594
 +#, python-brace-format
 +msgid "Merge {0}"
  msgstr ""
  
 -#: js/ExceptionHandler.js:221
 -msgid "Your input data is not valid. Please provide valid data."
 +#: js/widgets/dialog/DuplicateMergeDialog.js:223
 +#, python-brace-format
 +msgid "First {0}"
  msgstr ""
  
 -#: js/ExceptionHandler.js:239
 -msgid "Timeout"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:224
 +#, python-brace-format
 +msgid "Second {0}"
  msgstr ""
  
 -#: js/ExceptionHandler.js:240
 -msgid ""
 -"Sorry, some timeout occured while processing your request. Please reload "
 -"your browser, try again or contact your administrator."
 +#: js/widgets/dialog/DuplicateMergeDialog.js:225
 +#, python-brace-format
 +msgid "Final {0}"
  msgstr ""
  
 -#: js/ExceptionHandler.js:248
 -msgid "No Response"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:41
 +msgid "The record you try to add might already exist."
  msgstr ""
  
 -#: js/ExceptionHandler.js:249
 -msgid ""
 -"Sorry, the Server did not respond any data. Please reload your browser, try "
 -"again or contact your administrator."
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:196
 +msgid "Field Group"
  msgstr ""
  
 -#: js/ExceptionHandler.js:256
 -msgid "Out of Resources"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:210
 +msgid "My Value"
  msgstr ""
  
 -#: js/ExceptionHandler.js:257
 -msgid ""
 -"Sorry, the Server stated a \"memory exhausted\" condition. Please contact "
 -"your administrator."
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:218
 +msgid "Existing Value"
  msgstr ""
  
 -#: js/ExceptionHandler.js:273
 -msgid "No Role Memberships"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:226
 +msgid "Final Value"
  msgstr ""
  
 -#: js/ExceptionHandler.js:274
 -msgid ""
 -"Your user account has no role memberships. Please contact your administrator."
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:243
 +msgid "Action:"
  msgstr ""
  
 -#: js/ExceptionHandler.js:281
 -msgid "Method Not Found / Insufficent Permissions"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:259
 +msgid "Merge, keeping existing details"
  msgstr ""
  
 -#: js/ExceptionHandler.js:282
 -msgid ""
 -"You tried to access a function that is not available. Please reload your "
 -"browser, try again or contact your administrator."
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:260
 +msgid "Merge, keeping my details"
  msgstr ""
  
 -#: js/Container.js:123
 -msgid "All {0}"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:261
 +msgid "Keep existing record and discard mine"
  msgstr ""
  
 -#: js/Container.js:124
 -msgid "Shared {0}"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:262
 +msgid "Keep both records"
  msgstr ""
  
 -#: js/Container.js:125
 -msgid "Other Users {0}"
 +#: js/widgets/dialog/ExportDialog.js:48 js/widgets/container/GrantsGrid.js:51
- #: js/Models.js:336
++#: js/Models.js:338
 +msgid "Export"
 +msgid_plural "Export"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/widgets/dialog/ExportDialog.js:84
 +#, python-brace-format
 +msgid "Export {0} {1}"
  msgstr ""
  
 -#: js/Container.js:130
 -msgid "My {0}"
 +#: js/widgets/dialog/ExportDialog.js:111
 +msgid "Export definition"
  msgstr ""
  
 -#: js/widgets/EditRecord.js:131 js/widgets/dialog/EditDialog.js:442
 -#: js/widgets/dialog/EditDialog.js:470
 -msgid "Saved in"
 +#: js/widgets/dialog/ExportDialog.js:120
 +msgid "Select Export Definition ..."
  msgstr ""
  
- #: js/widgets/dialog/EditDialog.js:402 js/widgets/EditRecord.js:188
 -#: js/widgets/EditRecord.js:188 js/widgets/dialog/EditDialog.js:402
++#: js/widgets/dialog/EditDialog.js:427 js/widgets/EditRecord.js:188
  msgid "delete"
  msgstr ""
  
- #: js/widgets/dialog/EditDialog.js:442 js/widgets/dialog/EditDialog.js:470
 -#: js/widgets/tags/TagToggleBox.js:52
 -msgid "Detach Tags"
++#: js/widgets/dialog/EditDialog.js:466 js/widgets/dialog/EditDialog.js:494
 +#: js/widgets/EditRecord.js:131
 +msgid "Saved in"
  msgstr ""
  
- #: js/widgets/dialog/EditDialog.js:599 js/widgets/grid/GridPanel.js:537
 -#: js/widgets/tags/TagToggleBox.js:52
 -msgid "Attach Tags"
++#: js/widgets/dialog/EditDialog.js:623 js/widgets/grid/GridPanel.js:545
 +#, python-brace-format
 +msgid "Copy {0}"
  msgstr ""
  
- #: js/widgets/dialog/EditDialog.js:602
 -#: js/widgets/tags/TagToggleBox.js:140
 -msgid "No Tags to detach found in the selected records"
++#: js/widgets/dialog/EditDialog.js:626
 +#, python-brace-format
 +msgid "Add New {0}"
  msgstr ""
  
- #: js/widgets/dialog/EditDialog.js:604
 -#: js/widgets/tags/TagToggleBox.js:141
 -msgid "Please Wait..."
++#: js/widgets/dialog/EditDialog.js:628
 +#, python-brace-format
 +msgid "Edit {0} \"{1}\""
  msgstr ""
  
- #: js/widgets/dialog/EditDialog.js:674
 -#: js/widgets/tags/TagToggleBox.js:152
 -msgid "Detaching Tags"
++#: js/widgets/dialog/EditDialog.js:699
 +#, python-brace-format
 +msgid "Transferring {0}..."
  msgstr ""
  
- #: js/widgets/dialog/EditDialog.js:827
 -#: js/widgets/tags/TagsPanel.js:119
 -msgid "Add a new personal tag"
++#: js/widgets/dialog/EditDialog.js:851
 +#, python-brace-format
 +msgid "Do you really want to delete this {0}?"
  msgstr ""
  
- #: js/widgets/dialog/EditDialog.js:829 js/widgets/grid/GridPanel.js:1804
 -#: js/widgets/tags/TagsPanel.js:122
 -msgid "Add New Personal Tag"
++#: js/widgets/dialog/EditDialog.js:853 js/widgets/grid/GridPanel.js:1812
 +#, python-brace-format
 +msgid "Deleting {0}"
  msgstr ""
  
- #: js/widgets/dialog/EditDialog.js:839
 -#: js/widgets/tags/TagsPanel.js:123
 -msgid "Please note: You create a personal tag. Only you can see it!"
++#: js/widgets/dialog/EditDialog.js:863
 +#, python-brace-format
 +msgid "Could not delete {0}."
  msgstr ""
  
- #: js/widgets/dialog/EditDialog.js:894
 -#: js/widgets/tags/TagsPanel.js:123
 -msgid "Enter tag name:"
++#: js/widgets/dialog/EditDialog.js:918
 +#, python-brace-format
 +msgid "Resolve Duplicate {0} Suspicion"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:164
 -msgid "No Tags to display"
 +#: js/widgets/dialog/FileListDialog.js:28
 +#: js/widgets/dialog/MultiOptionsDialog.js:28
 +#: js/widgets/dialog/MultiOptionsDialog.js:81
 +msgid "What would you like to do?"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:187
 -msgid "Detach tag"
 -msgid_plural "Detach tags"
 -msgstr[0] ""
 -msgstr[1] ""
 -
 -#: js/widgets/tags/TagsPanel.js:197
 -msgid "Edit tag"
 +#: js/widgets/dialog/FileListDialog.js:32
 +#: js/widgets/dialog/MultiOptionsDialog.js:32
 +#: js/widgets/dialog/MultiOptionsDialog.js:141
 +msgid "You need to select an option!"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:202 js/widgets/tags/TagsPanel.js:207
 -msgid "Rename Tag"
 +#: js/widgets/dialog/FileListDialog.js:93
 +msgid "No"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:207
 -msgid "Please enter a new name:"
 +#: js/widgets/dialog/FileListDialog.js:102
 +msgid "Yes"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:216
 -msgid "Edit Description"
 +#: js/widgets/dialog/AttachmentsGridPanel.js:63
 +msgid "Attachments"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:221
 -msgid "Description for tag"
 +#: js/widgets/dialog/AttachmentsGridPanel.js:64
 +msgid "Attachment"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:221
 -msgid "Please enter new description:"
 +#: js/widgets/dialog/AttachmentsGridPanel.js:94
 +msgid "Size"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:230
 -msgid "Change Color"
 +#: js/widgets/dialog/AttachmentsGridPanel.js:102
 +msgid "Content Type"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:259
 -msgid "Delete Tag"
 -msgid_plural "Delete Tags"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/dialog/AttachmentsGridPanel.js:104
- #: js/widgets/relation/GenericPickerGridPanel.js:461
- #: js/widgets/grid/GridPanel.js:1370
++#: js/widgets/relation/GenericPickerGridPanel.js:462
++#: js/widgets/grid/GridPanel.js:1378
 +msgid "Creation Time"
 +msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:272
 -msgid "Realy Delete Selected Tag?"
 -msgid_plural "Realy Delete Selected Tags?"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/dialog/AttachmentsGridPanel.js:131
 +#: js/widgets/tree/ContextMenu.js:124
 +msgid "Download"
 +msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:273
 -msgid "the selected tag will be deleted and disapear for all entries"
 -msgid_plural "The selected tags will be removed and disapear for all entries"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/dialog/MultipleEditResultSummary.js:146
 +#, python-brace-format
 +msgid "You edited {0} {1}."
 +msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:277
 -msgid "Please wait a moment..."
 +#: js/widgets/dialog/MultipleEditResultSummary.js:149
 +#, python-brace-format
 +msgid "{0} {1} have been updated properly."
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:277
 -msgid "Deleting Tag"
 -msgid_plural "Deleting Tags"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/dialog/MultipleEditResultSummary.js:149
 +#, python-brace-format
 +msgid "{0} {1} has been updated properly."
 +msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:293 js/widgets/tags/TagsPanel.js:388
 -#: js/widgets/tags/TagsPanel.js:421 js/widgets/dialog/EditDialog.js:839
 -msgid "Failed"
 +#: js/widgets/dialog/MultipleEditResultSummary.js:152
 +#, python-brace-format
 +msgid ""
 +"{0} {1} have invalid data after updating. These {1} have not been changed."
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:293
 -msgid "Could not delete Tag(s)."
 +#: js/widgets/dialog/MultipleEditResultSummary.js:152
 +#, python-brace-format
 +msgid "{0} {1} has invalid data after updating. This {1} has not been changed."
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:337 js/widgets/tags/TagsPanel.js:402
 -msgid "Notice"
 +#: js/widgets/dialog/PreferencesTreePanel.js:67
 +msgid "General Preferences"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:338 js/widgets/tags/TagsPanel.js:403
 -msgid "The minimum tag length is three."
 +#: js/widgets/dialog/PreferencesTreePanel.js:87
 +msgid "My Profile"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:388
 -msgid "Could not create tag."
 +#: js/widgets/form/RecordPickerManager.js:48
 +#: js/widgets/form/RecordPickerComboBox.js:119
 +msgid "Searching..."
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:421
 -msgid "Could not update tag."
 +#: js/widgets/form/FileUploadButton.js:65
 +msgid "Wrong File Type"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:517
 -#: js/widgets/relation/GenericPickerGridPanel.js:449
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:204
 -#: js/ExceptionDialog.js:162
 -msgid "Description"
 +#: js/widgets/form/FileUploadButton.js:65
 +msgid "Please select a file with one of the following extensions:"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:521
 -#: js/widgets/container/PropertiesDialog.js:113
 -msgid "Color"
 +#: js/widgets/form/RecordPickerComboBox.js:295
- #: js/widgets/relation/GenericPickerGridPanel.js:961
++#: js/widgets/relation/GenericPickerGridPanel.js:962
 +msgid "You tried to link a record with itself. This is not allowed!"
  msgstr ""
  
 -#: js/widgets/tags/TagsMassAttachAction.js:18
 -msgid "Add Tags"
 +#: js/widgets/form/ConfigPanel.js:113
 +msgid "Configuration Problem"
  msgstr ""
  
 -#: js/widgets/tags/TagsMassAttachAction.js:94
 -msgid "Select Tags"
 +#: js/widgets/form/ConfigPanel.js:134
 +msgid "Invalid configuration"
  msgstr ""
  
 -#: js/widgets/tags/TagsMassAttachAction.js:135
 -msgid "Attaching Tag"
 +#: js/widgets/form/ConfigPanel.js:158
 +msgid "Transferring Configuration..."
  msgstr ""
  
 -#: js/widgets/tags/TagFilter.js:30 js/Models.js:142
 -msgid "Tag"
 -msgid_plural "Tags"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/form/ConfigPanel.js:254
 +msgid "Save config"
 +msgstr ""
  
 -#: js/widgets/tags/TagsMassDetachAction.js:18
 -msgid "Detach tag(s)"
 +#: js/widgets/form/ConfigPanel.js:264
 +msgid "Reload config"
  msgstr ""
  
 -#: js/widgets/tags/TagsMassDetachAction.js:84
 -msgid "Select Tag(s) to detach"
 +#: js/widgets/mainscreen/WestPanel.js:302
 +msgid "containers"
  msgstr ""
  
 -#: js/widgets/tags/TagCombo.js:46
 -msgid "tag name"
 +#: js/widgets/mainscreen/WestPanel.js:329
 +msgid "Favorites"
  msgstr ""
  
  #: js/widgets/VersionCheck.js:50 js/widgets/VersionCheck.js:59
@@@ -1379,1654 -1314,1623 +1386,1703 @@@ msgstr "
  msgid "Please consider updating!"
  msgstr ""
  
 -#: js/widgets/grid/PickerGridPanel.js:162
 -msgid "Remove record"
 -msgstr ""
 -
 -#: js/widgets/grid/PickerGridPanel.js:260 js/widgets/grid/PickerFilter.js:310
 -#: js/widgets/grid/FilterModelMultiSelect.js:214
 -#: js/widgets/container/FilterModel.js:267
 -msgid "Selected  {0}"
 -msgstr ""
 -
 -#: js/widgets/grid/PickerGridPanel.js:304
 -msgid "Search for records ..."
 -msgstr ""
 -
 -#: js/widgets/grid/FilterModel.js:180
 -msgid "today"
 -msgstr ""
 -
 -#: js/widgets/grid/FilterModel.js:181
 -msgid "yesterday"
 -msgstr ""
 -
 -#: js/widgets/grid/FilterModel.js:182
 -msgid "this week"
 +#: js/widgets/tree/ContextMenu.js:35 js/widgets/grid/FileUploadGrid.js:241
- #: js/widgets/grid/GridPanel.js:548
++#: js/widgets/grid/GridPanel.js:556
 +#, python-brace-format
 +msgid "Add {0}"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:183
 -msgid "last week"
 +#: js/widgets/tree/ContextMenu.js:43 js/widgets/tree/ContextMenu.js:276
 +#, python-brace-format
 +msgid "Rename {0}"
  msgstr ""
  
- #: js/widgets/tree/ContextMenu.js:52 js/widgets/grid/GridPanel.js:622
- #: js/widgets/grid/GridPanel.js:623 js/widgets/grid/GridPanel.js:625
 -#: js/widgets/grid/FilterModel.js:184
 -msgid "the week before last"
 -msgstr ""
++#: js/widgets/tree/ContextMenu.js:52 js/widgets/grid/GridPanel.js:630
++#: js/widgets/grid/GridPanel.js:631 js/widgets/grid/GridPanel.js:633
 +#, python-brace-format
 +msgid "Delete {0}"
 +msgid_plural "Delete {0}"
 +msgstr[0] ""
 +msgstr[1] ""
  
 -#: js/widgets/grid/FilterModel.js:185 js/widgets/grid/MonthFilter.js:121
 -msgid "this month"
 +#: js/widgets/tree/ContextMenu.js:61
 +#, python-brace-format
 +msgid "Manage {0} Permissions"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:186 js/widgets/grid/MonthFilter.js:122
 -msgid "last month"
 +#: js/widgets/tree/ContextMenu.js:69
 +#, python-brace-format
 +msgid "{0} Properties"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:187
 -msgid "last three months"
 +#: js/widgets/tree/ContextMenu.js:78
 +#, python-brace-format
 +msgid "Set {0} color"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:188
 -msgid "last six months"
 +#: js/widgets/tree/ContextMenu.js:92
 +#, python-brace-format
 +msgid "Reload {0}"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:189
 -msgid "anytime"
 +#: js/widgets/tree/ContextMenu.js:100 js/widgets/grid/FileUploadGrid.js:195
 +msgid "Resume upload"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:190 js/widgets/grid/MonthFilter.js:123
 -msgid "this quarter"
 +#: js/widgets/tree/ContextMenu.js:109
 +msgid "Edit Properties"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:191 js/widgets/grid/MonthFilter.js:124
 -msgid "last quarter"
 +#: js/widgets/tree/ContextMenu.js:116 js/widgets/grid/FileUploadGrid.js:187
 +msgid "Pause upload"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:192 js/widgets/grid/MonthFilter.js:125
 -msgid "this year"
 +#: js/widgets/tree/ContextMenu.js:132
 +msgid "Publish"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:193 js/widgets/grid/MonthFilter.js:126
 -msgid "last year"
 +#: js/widgets/tree/ContextMenu.js:196
 +#, python-brace-format
 +msgid "New {0}"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:204
 -msgid "tomorrow"
 +#: js/widgets/tree/ContextMenu.js:196
 +#, python-brace-format
 +msgid "Please enter the name of the new {0}:"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:205
 -msgid "next week"
 +#: js/widgets/tree/ContextMenu.js:199
 +#, python-brace-format
 +msgid "No {0} added"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:206
 -msgid "next month"
 +#: js/widgets/tree/ContextMenu.js:199 js/widgets/tree/ContextMenu.js:283
 +#, python-brace-format
 +msgid "You have to supply a {0} name!"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:207
 -msgid "next quarter"
 +#: js/widgets/tree/ContextMenu.js:202
 +#, python-brace-format
 +msgid "Creating {0}..."
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:208
 -msgid "next year"
 +#: js/widgets/tree/ContextMenu.js:277
 +#, python-brace-format
 +msgid "Please enter the new name of the {0}:"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:224
 -msgid "contains"
 +#: js/widgets/tree/ContextMenu.js:283
 +#, python-brace-format
 +msgid "Not renamed {0}"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:225
 -msgid "reg. exp."
 +#: js/widgets/tree/ContextMenu.js:357
 +#, python-brace-format
 +msgid "Do you really want to delete the {0} \"{1}\"?"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:226 js/widgets/container/FilterModel.js:160
 -#: js/widgets/container/FilterModel.js:164
 -msgid "is equal to"
 +#: js/widgets/tree/ContextMenu.js:468
 +#, python-brace-format
 +msgid "Manage Permissions for {0} \"{1}\""
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:227
 -msgid "is equal to without (-, )"
 +#: js/widgets/tree/ContextMenu.js:492
 +#, python-brace-format
 +msgid "Properties for {0} \"{1}\""
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:228
 -msgid "is greater than"
 +#: js/widgets/container/FilterModel.js:160
 +msgid "is personal of"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:229
 -msgid "is less than"
 +#: js/widgets/container/FilterModel.js:160
 +#: js/widgets/container/FilterModel.js:164 js/widgets/grid/FilterModel.js:226
 +msgid "is equal to"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:230
 -msgid "is not"
 +#: js/widgets/container/FilterModel.js:267
 +#: js/widgets/grid/PickerGridPanel.js:260 js/widgets/grid/PickerFilter.js:310
 +#: js/widgets/grid/FilterModelMultiSelect.js:214
 +#, python-brace-format
 +msgid "Selected  {0}"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:231
 -msgid "one of"
 +#: js/widgets/container/PropertiesDialog.js:90
 +msgid "Properties"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:232
 -msgid "none of"
 +#: js/widgets/container/PropertiesDialog.js:119
 +msgid "My Grants"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:233
 -msgid "is before"
 +#: js/widgets/container/GrantsDialog.js:52
 +msgid "Folder"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:234
 -msgid "is after"
 +#: js/widgets/container/GrantsDialog.js:95
 +msgid "Updating Grants"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:235
 -msgid "is within"
 +#: js/widgets/container/GrantsDialog.js:125
 +msgid "Error"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:236
 -msgid "is in week no."
 +#: js/widgets/container/GrantsDialog.js:126
 +msgid "You are not allowed to remove all admins for this container!"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:237
 -msgid "starts with"
 +#: js/widgets/container/ContainerSelect.js:129
 +#: js/ux/form/ComboBoxRecentsPlugin.js:43
 +#, python-brace-format
 +msgid "choose other {0}..."
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:238
 -msgid "ends with"
 +#: js/widgets/container/ContainerSelect.js:132
 +#, python-brace-format
 +msgid "Select a {0}"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:239
 -msgid "defined by"
 +#: js/widgets/container/ContainerSelect.js:152
 +#, python-brace-format
 +msgid "Recently used {0}:"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:285
 -#: js/widgets/grid/ForeignRecordFilter.js:406
 -#: js/widgets/relation/FilterModel.js:92
 -msgid "select a operator"
 +#: js/widgets/container/ContainerSelect.js:478
 +#, python-brace-format
 +msgid "please select a {0}"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:409
 -msgid "Search Account ..."
 -msgstr ""
 +#: js/widgets/container/TreePanel.js:142
 +msgid "container"
 +msgid_plural "containers"
 +msgstr[0] ""
 +msgstr[1] ""
  
 -#: js/widgets/grid/MonthFilter.js:34
 -msgid "Month"
 +#: js/widgets/container/TreePanel.js:546
 +#, python-brace-format
 +msgid "You are not allowed to select the {0} '{1}':"
  msgstr ""
  
 -#: js/widgets/grid/FilterPanel.js:78
 -msgid "Attention: There are more filters active!"
 +#: js/widgets/container/TreePanel.js:547
 +#, python-brace-format
 +msgid "{0} grant is required for desired action"
  msgstr ""
  
 -#: js/widgets/grid/FilterPanel.js:261
 -#: js/widgets/grid/FilterToolbarQuickFilterPlugin.js:181
 -msgid "show details"
 +#: js/widgets/container/TreePanel.js:548
 +msgid "Insufficient Grants"
  msgstr ""
  
 -#: js/widgets/grid/FilterPanel.js:262
 -#: js/widgets/grid/FilterToolbarQuickFilterPlugin.js:182
 -msgid "Always show advanced filters"
++#: js/widgets/container/CalDAVContainerPropertiesHookField.js:35
++msgid "CalDAV URL"
+ msgstr ""
 -#: js/widgets/grid/FilterPanel.js:511
 -msgid "Criteria {0}"
 +#: js/widgets/container/GrantsGrid.js:44
 +msgid "The grant to read records of this container"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbarQuickFilterPlugin.js:368
 -msgid "Your view is limited by {0} criteria:"
 -msgid_plural "Your view is limited by {0} criterias:"
 -msgstr[0] ""
 -msgstr[1] ""
 -
 -#: js/widgets/grid/FileUploadGrid.js:68 js/Models.js:476
 -msgid "File"
 -msgid_plural "Files"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/container/GrantsGrid.js:46
 +msgid "The grant to add records to this container"
 +msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:114 js/ux/form/ImageField.js:211
 -msgid "Upload Failed"
 +#: js/widgets/container/GrantsGrid.js:48
 +msgid "The grant to edit records in this container"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:115
 -msgid ""
 -"Could not upload file. Filesize could be too big. Please notify your "
 -"Administrator. Max upload size: "
 +#: js/widgets/container/GrantsGrid.js:49
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:274
 +msgid "Delete"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:179
 -msgid "Remove {0}"
 +#: js/widgets/container/GrantsGrid.js:50
 +msgid "The grant to delete records in this container"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:187 js/widgets/tree/ContextMenu.js:116
 -msgid "Pause upload"
 +#: js/widgets/container/GrantsGrid.js:52
 +msgid "The grant to export records from this container"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:195 js/widgets/tree/ContextMenu.js:100
 -msgid "Resume upload"
 +#: js/widgets/container/GrantsGrid.js:53
 +msgid "Sync"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:241 js/widgets/grid/GridPanel.js:548
 -#: js/widgets/tree/ContextMenu.js:35
 -msgid "Add {0}"
 +#: js/widgets/container/GrantsGrid.js:54
 +msgid "The grant to synchronise records with this container"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:283
 -msgid "name"
 +#: js/widgets/container/GrantsGrid.js:55
 +msgid "Admin"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:290
 -msgid "size"
 +#: js/widgets/container/GrantsGrid.js:56
 +msgid "The grant to administrate this container"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:297
 -msgid "type"
 +#: js/widgets/container/GrantsGrid.js:58
 +msgid "Free Busy"
  msgstr ""
  
 -#: js/widgets/grid/QuickaddGridPanel.js:91
 -msgid "Remove"
 +#: js/widgets/container/GrantsGrid.js:59
 +msgid "The grant to access free busy information of events in this calendar"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:85 js/widgets/grid/FilterToolbar.js:588
 -msgid "Show"
 +#: js/widgets/container/GrantsGrid.js:60
 +msgid "Private"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:171
 -msgid "add new filter"
 +#: js/widgets/container/GrantsGrid.js:61
 +msgid "The grant to access records marked as private in this container"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:177
 -msgid "reset all filters"
 +#: js/widgets/relation/FilterModel.js:32
- #: js/widgets/relation/GenericPickerGridPanel.js:133 js/Models.js:400
++#: js/widgets/relation/GenericPickerGridPanel.js:134 js/Models.js:402
 +msgid "Relation"
 +msgid_plural "Relations"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/widgets/relation/FilterModel.js:76
 +msgid "Defined by ..."
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:183
 -msgid "start search"
 +#: js/widgets/relation/FilterModel.js:92 js/widgets/grid/FilterModel.js:285
 +#: js/widgets/grid/ForeignRecordFilter.js:406
 +msgid "select a operator"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:191
 -msgid "save as favorite"
 +#: js/widgets/relation/FilterModel.js:119
 +msgid "Define ..."
  msgstr ""
  
- #: js/widgets/relation/GenericPickerGridPanel.js:126
 -#: js/widgets/grid/FilterToolbar.js:198
 -msgid "Load a favorite"
++#: js/widgets/relation/GenericPickerGridPanel.js:127
 +msgid "Edit record"
  msgstr ""
  
- #: js/widgets/relation/GenericPickerGridPanel.js:162
 -#: js/widgets/grid/FilterToolbar.js:363
 -msgid "select a field"
++#: js/widgets/relation/GenericPickerGridPanel.js:163
 +msgid "Sibling"
  msgstr ""
  
- #: js/widgets/relation/GenericPickerGridPanel.js:163
 -#: js/widgets/grid/FilterToolbar.js:401
 -msgid "Delete this filter"
++#: js/widgets/relation/GenericPickerGridPanel.js:164
 +msgid "Parent"
  msgstr ""
  
- #: js/widgets/relation/GenericPickerGridPanel.js:164
 -#: js/widgets/grid/RendererManager.js:54
 -msgid "has notes"
++#: js/widgets/relation/GenericPickerGridPanel.js:165
 +msgid "Child"
  msgstr ""
  
- #: js/widgets/relation/GenericPickerGridPanel.js:263
 -#: js/widgets/grid/RendererManager.js:57
 -msgid "has relations"
++#: js/widgets/relation/GenericPickerGridPanel.js:264
 +#, python-brace-format
 +msgid ""
 +"The maximum number of {0} with the type {1} is reached. Please change the "
 +"type of this relation"
  msgstr ""
  
- #: js/widgets/relation/GenericPickerGridPanel.js:272
 -#: js/widgets/grid/LinkGridPanel.js:103
 -#: js/widgets/dialog/AttachmentsGridPanel.js:86
 -#: js/widgets/account/PickerGridPanel.js:267
 -#: js/widgets/container/PropertiesDialog.js:107 js/Models.js:429
 -msgid "Name"
++#: js/widgets/relation/GenericPickerGridPanel.js:273
 +#, python-brace-format
 +msgid ""
 +"The maximum number of {0}s with the type {1} is reached at the {2} you "
 +"added. Please change the type of this relation or edit the {2}"
  msgstr ""
  
- #: js/widgets/relation/GenericPickerGridPanel.js:299
 -#: js/widgets/grid/LinkGridPanel.js:105
 -#: js/widgets/relation/GenericPickerGridPanel.js:452
 -#: js/widgets/ActivitiesPanel.js:489 js/widgets/ActivitiesPanel.js:626
 -msgid "Type"
++#: js/widgets/relation/GenericPickerGridPanel.js:300
 +msgid "No Dialog"
  msgstr ""
  
- #: js/widgets/relation/GenericPickerGridPanel.js:300
 -#: js/widgets/grid/FilterStructureTreePanel.js:35
 -#: js/widgets/grid/FilterStructureTreePanel.js:52
 -msgid "Show records that match to one of the following filters"
++#: js/widgets/relation/GenericPickerGridPanel.js:301
 +msgid ""
 +"The Record can't be opened. There doesn't exist any dialog for editing this "
 +"Record!"
  msgstr ""
  
- #: js/widgets/relation/GenericPickerGridPanel.js:456
 -#: js/widgets/grid/FilterStructureTreePanel.js:37
 -#: js/widgets/grid/FilterStructureTreePanel.js:51
 -msgid "or alternatively"
++#: js/widgets/relation/GenericPickerGridPanel.js:457
 +msgid "Record"
  msgstr ""
  
- #: js/widgets/relation/GenericPickerGridPanel.js:458
 -#: js/widgets/grid/FilterStructureTreePanel.js:55
 -msgid "Add alternative filter"
++#: js/widgets/relation/GenericPickerGridPanel.js:459
 +msgid "Remark"
  msgstr ""
  
- #: js/widgets/relation/GenericPickerGridPanel.js:459
 -#: js/widgets/grid/FilterStructureTreePanel.js:61
 -msgid "Remove Filter"
++#: js/widgets/relation/GenericPickerGridPanel.js:460
 +msgid "Dependency"
  msgstr ""
  
- #: js/widgets/relation/GenericPickerGridPanel.js:948
 -#: js/widgets/grid/GridPanel.js:309
++#: js/widgets/relation/GenericPickerGridPanel.js:949
  msgid ""
 -"There could not be found any {0}. Please try to change your filter-criteria, "
 -"view-options or the {1} you search in."
 +"The record you tried to link is already linked. Please edit the existing "
 +"link."
  msgstr ""
  
 -#: js/widgets/grid/GridPanel.js:310
 +#: js/widgets/relation/PickerCombo.js:93
 +#, python-brace-format
  msgid ""
 -"There could not be found any {0}. Please try to change your filter-criteria, "
 -"view-options or change the module you search in."
 +"The {1} \"{2}\" is already used in the Field \"{0}\" and can be linked only "
 +"once!"
  msgstr ""
  
 -#: js/widgets/grid/GridPanel.js:312 js/widgets/grid/GridPanel.js:522
 -#: js/widgets/grid/GridPanel.js:523 js/widgets/grid/GridPanel.js:524
 -msgid "Edit {0}"
 -msgid_plural "Edit {0}"
 -msgstr[0] ""
 -msgstr[1] ""
 -
 -#: js/widgets/grid/GridPanel.js:537 js/widgets/dialog/EditDialog.js:599
 -msgid "Copy {0}"
 +#: js/widgets/LangChooser.js:35 Preference.php:146
 +msgid "Language"
  msgstr ""
  
 -#: js/widgets/grid/GridPanel.js:556
 -msgid "Print Page"
 +#: js/widgets/LangChooser.js:68
 +msgid "setting new language..."
  msgstr ""
  
- #: js/widgets/persistentfilter/EditPersistentFilterPanel.js:134
 -#: js/widgets/grid/GridPanel.js:586
 -#: js/widgets/dialog/DuplicateMergeDialog.js:220
 -msgid "Merge {0}"
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:140
 +msgid "Favorite not saved"
  msgstr ""
  
- #: js/widgets/persistentfilter/EditPersistentFilterPanel.js:182
 -#: js/widgets/grid/GridPanel.js:622 js/widgets/grid/GridPanel.js:623
 -#: js/widgets/grid/GridPanel.js:625 js/widgets/tree/ContextMenu.js:52
 -msgid "Delete {0}"
 -msgid_plural "Delete {0}"
 -msgstr[0] ""
 -msgstr[1] ""
 -
 -#: js/widgets/grid/GridPanel.js:1038
 -msgid "No data to display"
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:195
 +#: ModelConfiguration.php:200
 +msgid "Title"
  msgstr ""
  
- #: js/widgets/persistentfilter/EditPersistentFilterPanel.js:200
 -#: js/widgets/grid/GridPanel.js:1060
 -msgid "Displaying records {0} - {1} of {2}"
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:213
 +msgid "Shared Favorite (visible by all users)"
  msgstr ""
  
 -#: js/widgets/grid/GridPanel.js:1061
 -msgid "No {0} to display"
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:264
++msgid "The grant to see and use this filter"
+ msgstr ""
 -#: js/widgets/grid/GridPanel.js:1303
 -msgid "New..."
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:269
++msgid "The grant to edit this filter"
+ msgstr ""
 -#: js/widgets/grid/GridPanel.js:1322
 -msgid "Add to..."
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:275
++msgid "The grant to delete this filter"
+ msgstr ""
 -#: js/widgets/grid/GridPanel.js:1370
 -#: js/widgets/relation/GenericPickerGridPanel.js:453
 -#: js/widgets/dialog/AttachmentsGridPanel.js:104
 -msgid "Creation Time"
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:283
++msgid "Permissions"
+ msgstr ""
 -#: js/widgets/grid/GridPanel.js:1371
 -#: js/widgets/dialog/AttachmentsGridPanel.js:106
 -#: js/widgets/ActivitiesPanel.js:492
 -msgid "Created By"
 +#: js/widgets/persistentfilter/PickerPanel.js:121
 +msgid "My favorites"
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:297
 -#: js/widgets/grid/GridPanel.js:1372
 -msgid "Last Modified Time"
++#: js/widgets/persistentfilter/PickerPanel.js:299
 +msgid "Delete Favorite"
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:302
 -#: js/widgets/grid/GridPanel.js:1373
 -msgid "Last Modified By"
++#: js/widgets/persistentfilter/PickerPanel.js:304
 +#: js/widgets/persistentfilter/PickerPanel.js:397
 +msgid "Edit Favorite"
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:307
 -#: js/widgets/grid/GridPanel.js:1735
 -msgid "Not Allowed"
++#: js/widgets/persistentfilter/PickerPanel.js:309
 +msgid "Overwrite Favorite"
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:325
 -#: js/widgets/grid/GridPanel.js:1736
 -msgid "You are not allowed to delete all pages at once"
++#: js/widgets/persistentfilter/PickerPanel.js:326
 +#, python-brace-format
 +msgid "Do you really want to delete the favorite \"{0}\"?"
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:327
 -#: js/widgets/grid/GridPanel.js:1759
 -msgid "Do you really want to delete the selected record ({0})?"
 -msgid_plural "Do you really want to delete the selected records ({0})?"
 -msgstr[0] ""
 -msgstr[1] ""
 -
 -#: js/widgets/grid/GridPanel.js:1804 js/widgets/dialog/EditDialog.js:829
 -msgid "Deleting {0}"
++#: js/widgets/persistentfilter/PickerPanel.js:328
 +#, python-brace-format
 +msgid "Deleting Favorite \"{0}\""
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:363
 -#: js/widgets/grid/GridPanel.js:1804
 -msgid " ... This may take a long time!"
++#: js/widgets/persistentfilter/PickerPanel.js:364
 +msgid "Overwrite?"
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:363
 -#: js/widgets/grid/ForeignRecordFilter.js:61
 -msgid "Edit definition"
++#: js/widgets/persistentfilter/PickerPanel.js:364
 +#, python-brace-format
 +msgid "Do you want to overwrite the favorite \"{0}\"?"
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:365
 -#: js/widgets/grid/ForeignRecordFilter.js:71
 -msgid "Start definition"
++#: js/widgets/persistentfilter/PickerPanel.js:366
 +#, python-brace-format
 +msgid "Overwriting Favorite \"{0}\""
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:386
 -#: js/widgets/grid/ForeignRecordFilter.js:111
 -msgid "Related to"
++#: js/widgets/persistentfilter/PickerPanel.js:387
 +msgid "Could not save Favorite"
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:386
 -#: js/widgets/relation/FilterModel.js:32
 -#: js/widgets/relation/GenericPickerGridPanel.js:133 js/Models.js:401
 -msgid "Relation"
 -msgid_plural "Relations"
 -msgstr[0] ""
 -msgstr[1] ""
 -
 -#: js/widgets/relation/FilterModel.js:76
 -msgid "Defined by ..."
++#: js/widgets/persistentfilter/PickerPanel.js:387
 +msgid "Your current view does not support favorites"
  msgstr ""
  
 -#: js/widgets/relation/FilterModel.js:119
 -msgid "Define ..."
 +#: js/widgets/persistentfilter/PickerPanel.js:395
 +msgid "Create Favorite"
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:417
 -#: js/widgets/relation/GenericPickerGridPanel.js:126
 -msgid "Edit record"
++#: js/widgets/persistentfilter/PickerPanel.js:421
 +#, python-brace-format
 +msgid "Saving Favorite \"{0}\""
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:593
 -#: js/widgets/relation/GenericPickerGridPanel.js:162
 -msgid "Sibling"
++#: js/widgets/persistentfilter/PickerPanel.js:621
 +msgid "(shared)"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:163
 -msgid "Parent"
 +#: js/widgets/grid/FilterModel.js:180
 +msgid "today"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:164
 -msgid "Child"
 +#: js/widgets/grid/FilterModel.js:181
 +msgid "yesterday"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:255
 -msgid ""
 -"The maximum number of {0} with the type {1} is reached. Please change the "
 -"type of this relation"
 +#: js/widgets/grid/FilterModel.js:182
 +msgid "this week"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:264
 -msgid ""
 -"The maximum number of {0}s with the type {1} is reached at the {2} you "
 -"added. Please change the type of this relation or edit the {2}"
 +#: js/widgets/grid/FilterModel.js:183
 +msgid "last week"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:291
 -msgid "No Dialog"
 +#: js/widgets/grid/FilterModel.js:184
 +msgid "the week before last"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:292
 -msgid ""
 -"The Record can't be opened. There doesn't exist any dialog for editing this "
 -"Record!"
 +#: js/widgets/grid/FilterModel.js:185 js/widgets/grid/MonthFilter.js:121
 +msgid "this month"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:448
 -msgid "Record"
 +#: js/widgets/grid/FilterModel.js:186 js/widgets/grid/MonthFilter.js:122
 +msgid "last month"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:450
 -msgid "Remark"
 +#: js/widgets/grid/FilterModel.js:187
 +msgid "last three months"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:451
 -msgid "Dependency"
 +#: js/widgets/grid/FilterModel.js:188
 +msgid "last six months"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:940
 -msgid ""
 -"The record you tried to link is already linked. Please edit the existing "
 -"link."
 +#: js/widgets/grid/FilterModel.js:189
 +msgid "anytime"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:953
 -#: js/widgets/form/RecordPickerComboBox.js:295
 -msgid "You tried to link a record with itself. This is not allowed!"
 +#: js/widgets/grid/FilterModel.js:190 js/widgets/grid/MonthFilter.js:123
 +msgid "this quarter"
  msgstr ""
  
 -#: js/widgets/relation/PickerCombo.js:93
 -msgid ""
 -"The {1} \"{2}\" is already used in the Field \"{0}\" and can be linked only "
 -"once!"
 +#: js/widgets/grid/FilterModel.js:191 js/widgets/grid/MonthFilter.js:124
 +msgid "last quarter"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:43 js/widgets/tree/ContextMenu.js:265
 -msgid "Rename {0}"
 +#: js/widgets/grid/FilterModel.js:192 js/widgets/grid/MonthFilter.js:125
 +msgid "this year"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:61
 -msgid "Manage {0} Permissions"
 +#: js/widgets/grid/FilterModel.js:193 js/widgets/grid/MonthFilter.js:126
 +msgid "last year"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:69
 -msgid "{0} Properties"
 +#: js/widgets/grid/FilterModel.js:204
 +msgid "tomorrow"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:78
 -msgid "Set {0} color"
 +#: js/widgets/grid/FilterModel.js:205
 +msgid "next week"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:92
 -msgid "Reload {0}"
 +#: js/widgets/grid/FilterModel.js:206
 +msgid "next month"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:109
 -msgid "Edit Properties"
 +#: js/widgets/grid/FilterModel.js:207
 +msgid "next quarter"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:124
 -#: js/widgets/dialog/AttachmentsGridPanel.js:131
 -msgid "Download"
 +#: js/widgets/grid/FilterModel.js:208
 +msgid "next year"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:185
 -msgid "New {0}"
 +#: js/widgets/grid/FilterModel.js:224
 +msgid "contains"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:185
 -msgid "Please enter the name of the new {0}:"
 +#: js/widgets/grid/FilterModel.js:225
 +msgid "reg. exp."
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:188
 -msgid "No {0} added"
 +#: js/widgets/grid/FilterModel.js:227
 +msgid "is equal to without (-, )"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:188 js/widgets/tree/ContextMenu.js:272
 -msgid "You have to supply a {0} name!"
 +#: js/widgets/grid/FilterModel.js:228
 +msgid "is greater than"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:191
 -msgid "Creating {0}..."
 +#: js/widgets/grid/FilterModel.js:229
 +msgid "is less than"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:266
 -msgid "Please enter the new name of the {0}:"
 +#: js/widgets/grid/FilterModel.js:230
 +msgid "is not"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:272
 -msgid "Not renamed {0}"
 +#: js/widgets/grid/FilterModel.js:231
 +msgid "one of"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:346
 -msgid "Do you really want to delete the {0} \"{1}\"?"
 +#: js/widgets/grid/FilterModel.js:232
 +msgid "none of"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:457
 -msgid "Manage Permissions for {0} \"{1}\""
 +#: js/widgets/grid/FilterModel.js:233
 +msgid "is before"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:481
 -msgid "Properties for {0} \"{1}\""
 +#: js/widgets/grid/FilterModel.js:234
 +msgid "is after"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:223
 -msgid "Choose File and Format"
 +#: js/widgets/grid/FilterModel.js:235
 +msgid "is within"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:232
 -msgid "Choose Import File"
 +#: js/widgets/grid/FilterModel.js:236
 +msgid "is in week no."
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:236
 -msgid ""
 -"Please choose the file that contains the records you want to add to Tine 2.0"
 +#: js/widgets/grid/FilterModel.js:237
 +msgid "starts with"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:240
 -msgid "Select file containing your {0}"
 +#: js/widgets/grid/FilterModel.js:238
 +msgid "ends with"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:248 js/widgets/dialog/ImportDialog.js:253
 -msgid "What should the file you upload look like?"
 +#: js/widgets/grid/FilterModel.js:239
 +msgid "defined by"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:256
 -msgid ""
 -"Tine 2.0 does not understand all kind of files you might want to upload. You "
 -"will have to manually adjust your file so Tine 2.0 can handle it."
 +#: js/widgets/grid/FilterModel.js:409
 +msgid "Search Account ..."
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:259
 -msgid ""
 -"Following you find a list of all supported import formats and a sample file, "
 -"how Tine 2.0 expects your file to look like."
 +#: js/widgets/grid/RendererManager.js:54
 +msgid "has notes"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:262
 -msgid "Please select the import format of the file you want to upload"
 +#: js/widgets/grid/RendererManager.js:57
 +msgid "has relations"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:283 js/widgets/dialog/ImportDialog.js:315
 -msgid "Download example file"
 +#: js/widgets/grid/FilterToolbar.js:92 js/widgets/grid/FilterToolbar.js:595
 +msgid "Show"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:286
 -msgid "Import description"
 +#: js/widgets/grid/FilterToolbar.js:178
 +msgid "add new filter"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:336
 -msgid "Set Import Options"
 +#: js/widgets/grid/FilterToolbar.js:184
 +msgid "reset all filters"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:344
 -msgid "Select {0} to add you {1} to:"
 +#: js/widgets/grid/FilterToolbar.js:190
 +msgid "start search"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:396
 -msgid "Checking Import"
 +#: js/widgets/grid/FilterToolbar.js:198
 +msgid "save as favorite"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:425
 -msgid "Resolve Conflicts"
 +#: js/widgets/grid/FilterToolbar.js:205
 +msgid "Load a favorite"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:434
 -msgid "There are {0} {1} that might already exist."
 +#: js/widgets/grid/FilterToolbar.js:370
 +msgid "select a field"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:441
 -msgid "Conflict"
 +#: js/widgets/grid/FilterToolbar.js:408
 +msgid "Delete this filter"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:442
 -msgid "First Conflict"
 +#: js/widgets/grid/FilterPanel.js:78
 +msgid "Attention: There are more filters active!"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:443
 -msgid "Previous Conflict"
 +#: js/widgets/grid/FilterPanel.js:261
 +#: js/widgets/grid/FilterToolbarQuickFilterPlugin.js:181
 +msgid "show details"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:444
 -msgid "Next Conflict"
 +#: js/widgets/grid/FilterPanel.js:262
 +#: js/widgets/grid/FilterToolbarQuickFilterPlugin.js:182
 +msgid "Always show advanced filters"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:445
 -msgid "Last Conflict"
 +#: js/widgets/grid/FilterPanel.js:511
 +#, python-brace-format
 +msgid "Criteria {0}"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:451
 -msgid "Conflict is resolved"
 +#: js/widgets/grid/PickerGridPanel.js:162
 +msgid "Remove record"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:456
 -msgid "Resolve all conflicts"
 +#: js/widgets/grid/PickerGridPanel.js:304
 +msgid "Search for records ..."
  msgstr ""
  
- #: js/widgets/grid/FileUploadGrid.js:68 js/Models.js:475
 -#: js/widgets/dialog/ImportDialog.js:550
 -msgid "Processing Conflict Data"
++#: js/widgets/grid/FileUploadGrid.js:68 js/Models.js:477
 +msgid "File"
 +msgid_plural "Files"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/widgets/grid/FileUploadGrid.js:114 js/ux/form/ImageField.js:211
 +msgid "Upload Failed"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:575 js/widgets/dialog/ImportDialog.js:595
 -msgid "No conflict to resolve"
 +#: js/widgets/grid/FileUploadGrid.js:115
 +msgid ""
 +"Could not upload file. Filesize could be too big. Please notify your "
 +"Administrator. Max upload size: "
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:594
 -msgid "(This is record {0} in your import file)"
 +#: js/widgets/grid/FileUploadGrid.js:179
 +#, python-brace-format
 +msgid "Remove {0}"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:619
 -msgid "No Detail Informations"
 +#: js/widgets/grid/FileUploadGrid.js:283
 +msgid "name"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:624
 -#: js/widgets/dialog/MultipleEditResultSummary.js:213
 -msgid "Summary"
 +#: js/widgets/grid/FileUploadGrid.js:290
 +msgid "size"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:653
 -#: js/widgets/dialog/MultipleEditResultSummary.js:192
 -msgid "Index"
 +#: js/widgets/grid/FileUploadGrid.js:297
 +msgid "type"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:669
 -msgid "Importing {0}"
 +#: js/widgets/grid/MonthFilter.js:34
 +msgid "Month"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:700
 -msgid "{0} records had failures and where discarded."
 +#: js/widgets/grid/FilterStructureTreePanel.js:35
 +#: js/widgets/grid/FilterStructureTreePanel.js:52
 +msgid "Show records that match to one of the following filters"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:742
 -msgid "In total we found {0} records in your import file."
 +#: js/widgets/grid/FilterStructureTreePanel.js:37
 +#: js/widgets/grid/FilterStructureTreePanel.js:51
 +msgid "or alternatively"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:745
 -msgid "{0} of them will be added as new records into: \"{1}\"."
 +#: js/widgets/grid/FilterStructureTreePanel.js:55
 +msgid "Add alternative filter"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:752
 -msgid "{0} of them where identified as duplicates."
 +#: js/widgets/grid/FilterStructureTreePanel.js:61
 +msgid "Remove Filter"
  msgstr ""
  
- #: js/widgets/grid/GridPanel.js:309
 -#: js/widgets/dialog/ImportDialog.js:755
++#: js/widgets/grid/GridPanel.js:317
 +#, python-brace-format
  msgid ""
 -"From the identified duplicates {0} will be merged into the existing records."
 +"There could not be found any {0}. Please try to change your filter-criteria, "
 +"view-options or the {1} you search in."
  msgstr ""
  
- #: js/widgets/grid/GridPanel.js:310
 -#: js/widgets/dialog/ImportDialog.js:759
 -msgid "From the identified duplicates {0} will be discarded."
++#: js/widgets/grid/GridPanel.js:318
 +#, python-brace-format
 +msgid ""
 +"There could not be found any {0}. Please try to change your filter-criteria, "
 +"view-options or change the module you search in."
  msgstr ""
  
- #: js/widgets/grid/GridPanel.js:312 js/widgets/grid/GridPanel.js:522
- #: js/widgets/grid/GridPanel.js:523 js/widgets/grid/GridPanel.js:524
 -#: js/widgets/dialog/ImportDialog.js:775
 -msgid "All records will be tagged with: \"{0}\" so you can find them easily."
 -msgstr ""
++#: js/widgets/grid/GridPanel.js:320 js/widgets/grid/GridPanel.js:530
++#: js/widgets/grid/GridPanel.js:531 js/widgets/grid/GridPanel.js:532
 +#, python-brace-format
 +msgid "Edit {0}"
 +msgid_plural "Edit {0}"
 +msgstr[0] ""
 +msgstr[1] ""
  
- #: js/widgets/grid/GridPanel.js:556
 -#: js/widgets/dialog/ImportDialog.js:786
 -msgid "{0} records have failures and will be discarded."
++#: js/widgets/grid/GridPanel.js:564
 +msgid "Print Page"
  msgstr ""
  
- #: js/widgets/grid/GridPanel.js:1038
 -#: js/widgets/dialog/AdminPanel.js:59
 -msgid "Change settings for application {0}"
++#: js/widgets/grid/GridPanel.js:1046
 +msgid "No data to display"
  msgstr ""
  
- #: js/widgets/grid/GridPanel.js:1060
 -#: js/widgets/dialog/AdminPanel.js:107
 -msgid "Defaults"
++#: js/widgets/grid/GridPanel.js:1068
 +#, python-brace-format
 +msgid "Displaying records {0} - {1} of {2}"
  msgstr ""
  
- #: js/widgets/grid/GridPanel.js:1061
 -#: js/widgets/dialog/LinkPanel.js:46
 -msgid "Links"
++#: js/widgets/grid/GridPanel.js:1069
 +#, python-brace-format
 +msgid "No {0} to display"
  msgstr ""
  
- #: js/widgets/grid/GridPanel.js:1303
 -#: js/widgets/dialog/AlarmPanel.js:34
 -msgid "Alarms"
++#: js/widgets/grid/GridPanel.js:1311
 +msgid "New..."
  msgstr ""
  
- #: js/widgets/grid/GridPanel.js:1322
 -#: js/widgets/dialog/AlarmPanel.js:37
 -msgid "0 minutes before"
++#: js/widgets/grid/GridPanel.js:1330
 +msgid "Add to..."
  msgstr ""
  
- #: js/widgets/grid/GridPanel.js:1372
 -#: js/widgets/dialog/AlarmPanel.js:38
 -msgid "5 minutes before"
++#: js/widgets/grid/GridPanel.js:1380
 +msgid "Last Modified Time"
  msgstr ""
  
- #: js/widgets/grid/GridPanel.js:1373
 -#: js/widgets/dialog/AlarmPanel.js:39
 -msgid "15 minutes before"
++#: js/widgets/grid/GridPanel.js:1381
 +msgid "Last Modified By"
  msgstr ""
  
- #: js/widgets/grid/GridPanel.js:1735
 -#: js/widgets/dialog/AlarmPanel.js:40
 -msgid "30 minutes before"
++#: js/widgets/grid/GridPanel.js:1743
 +msgid "Not Allowed"
  msgstr ""
  
- #: js/widgets/grid/GridPanel.js:1736
 -#: js/widgets/dialog/AlarmPanel.js:41
 -msgid "1 hour before"
++#: js/widgets/grid/GridPanel.js:1744
 +msgid "You are not allowed to delete all pages at once"
  msgstr ""
  
- #: js/widgets/grid/GridPanel.js:1759
 -#: js/widgets/dialog/AlarmPanel.js:42
 -msgid "2 hours before"
++#: js/widgets/grid/GridPanel.js:1767
 +#, python-brace-format
 +msgid "Do you really want to delete the selected record ({0})?"
 +msgid_plural "Do you really want to delete the selected records ({0})?"
 +msgstr[0] ""
 +msgstr[1] ""
 +
- #: js/widgets/grid/GridPanel.js:1804
++#: js/widgets/grid/GridPanel.js:1812
 +msgid " ... This may take a long time!"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:43
 -msgid "12 hours before"
 +#: js/widgets/grid/FilterToolbarQuickFilterPlugin.js:368
 +#, python-brace-format
 +msgid "Your view is limited by {0} criteria:"
 +msgid_plural "Your view is limited by {0} criterias:"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/widgets/grid/QuickaddGridPanel.js:91
 +msgid "Remove"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:44
 -msgid "1 day before"
 +#: js/widgets/grid/ForeignRecordFilter.js:61
 +msgid "Edit definition"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:45
 -msgid "2 days before"
 +#: js/widgets/grid/ForeignRecordFilter.js:71
 +msgid "Start definition"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:46
 -msgid "Custom Datetime"
 +#: js/widgets/grid/ForeignRecordFilter.js:111
 +msgid "Related to"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:58
 -msgid "Alarm Time"
 +#: js/data/Record.js:199
 +msgid "Task"
 +msgid_plural "Tasks"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/data/Record.js:203
 +msgid "to do list"
 +msgid_plural "to do lists"
 +msgstr[0] ""
 +msgstr[1] ""
 +
- #: js/AboutDialog.js:41 js/MainMenu.js:118
++#: js/AboutDialog.js:41 js/MainMenu.js:119
 +#, python-brace-format
 +msgid "About {0}"
  msgstr ""
  
- #: js/AboutDialog.js:56 js/MainMenu.js:166
 -#: js/widgets/dialog/AlarmPanel.js:170
 -msgid "{0} minutes before"
++#: js/AboutDialog.js:56 js/MainMenu.js:167
 +#, python-brace-format
 +msgid "Learn more about {0}"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:87
 -#: js/widgets/dialog/MultipleEditResultSummary.js:86
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:69
 -msgid "OK"
 +#: js/AboutDialog.js:71
 +msgid "Released under different"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:134
 -msgid "Merging Records..."
 +#: js/AboutDialog.js:72
 +msgid "Open Source Licenses"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:173
 -msgid "Merge Failed"
 +#: js/AboutDialog.js:79
 +msgid "with the help of our"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:173
 -msgid "The merge succeeded, but the duplicate {0} could not be deleted."
 +#: js/AboutDialog.js:80
 +msgid "Contributors"
  msgstr ""
  
- #: js/MainScreen.js:205
 -#: js/widgets/dialog/DuplicateMergeDialog.js:212
 -msgid "Merge {0}, prefer First"
++#: js/MainScreen.js:200
 +msgid "Your password expired. Please enter a new user password:"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:213
 -msgid "Merge {0}, prefer Second"
 +#: js/PasswordChangeDialog.js:32
 +#, python-brace-format
 +msgid "Change Password For \"{0}\""
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:223
 -msgid "First {0}"
 +#: js/PasswordChangeDialog.js:48
 +msgid "Old Password"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:224
 -msgid "Second {0}"
 +#: js/PasswordChangeDialog.js:52
 +msgid "New Password"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:225
 -msgid "Final {0}"
 +#: js/PasswordChangeDialog.js:56
 +msgid "Repeat new Password"
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesPanel.js:185
 -msgid "There are no preferences for this application."
 +#: js/PasswordChangeDialog.js:75
 +msgid "Please Wait!"
  msgstr ""
  
 -#: js/widgets/dialog/MultiOptionsDialog.js:28
 -#: js/widgets/dialog/MultiOptionsDialog.js:81
 -#: js/widgets/dialog/FileListDialog.js:28
 -msgid "What would you like to do?"
 +#: js/PasswordChangeDialog.js:76
 +msgid "changing password..."
  msgstr ""
  
 -#: js/widgets/dialog/MultiOptionsDialog.js:32
 -#: js/widgets/dialog/MultiOptionsDialog.js:141
 -#: js/widgets/dialog/FileListDialog.js:32
 -msgid "You need to select an option!"
 +#: js/PasswordChangeDialog.js:87
 +msgid "Success"
  msgstr ""
  
 -#: js/widgets/dialog/FileListDialog.js:93
 -msgid "No"
 +#: js/PasswordChangeDialog.js:88
 +msgid "Your password has been changed."
  msgstr ""
  
 -#: js/widgets/dialog/FileListDialog.js:102
 -msgid "Yes"
 +#: js/PasswordChangeDialog.js:111
 +msgid "The new passwords mismatch, please correct them."
  msgstr ""
  
 -#: js/widgets/dialog/AttachmentsGridPanel.js:63
 -msgid "Attachments"
 +#: js/ux/PopupWindowManager.js:175
 +msgid ""
 +"The window you want to work with is backgrounded. Your browser doesn't "
 +"support to foreground the window for you, so you need to use your operating "
 +"systems window switching features. Please send complaints to your browser "
 +"vendor!"
  msgstr ""
  
 -#: js/widgets/dialog/AttachmentsGridPanel.js:64
 -msgid "Attachment"
 +#: js/ux/Percentage.js:193
 +msgid "(paused)"
  msgstr ""
  
 -#: js/widgets/dialog/AttachmentsGridPanel.js:94
 -msgid "Size"
 +#: js/ux/form/ImageField.js:76
 +msgid "Loading"
  msgstr ""
  
 -#: js/widgets/dialog/AttachmentsGridPanel.js:102
 -msgid "Content Type"
 +#: js/ux/form/ImageField.js:78
 +msgid "Click to edit"
  msgstr ""
  
 -#: js/widgets/dialog/CredentialsDialog.js:84
 -msgid "Please enter your credentials"
 +#: js/ux/form/ImageField.js:146
 +msgid "Image Failed"
  msgstr ""
  
 -#: js/widgets/dialog/ExceptionHandlerDialog.js:217
 -msgid "{1} - Exception {0}"
 +#: js/ux/form/ImageField.js:146
 +msgid "Could not load image. Please notify your Administrator"
  msgstr ""
  
 -#: js/widgets/dialog/ExceptionHandlerDialog.js:219
 -msgid "{0} - Unknown Exception"
 +#: js/ux/form/ImageField.js:168
 +msgid "Not An Image"
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesDialog.js:125
 -msgid "Admin Mode"
 +#: js/ux/form/ImageField.js:168
 +msgid "Please select an image file (gif/png/jpeg)"
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesDialog.js:163
 -msgid "Applications"
 +#: js/ux/form/ImageField.js:211
 +msgid "Could not upload image. Please notify your Administrator"
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesDialog.js:192
 -msgid "Edit Preferences"
 +#: js/ux/form/ImageField.js:224
 +msgid "Change Image"
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesDialog.js:193
 -msgid "Loading ..."
 +#: js/ux/form/ImageField.js:232 js/ux/form/ImageField.js:250
 +msgid "Crop Image"
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesDialog.js:248
 -#: js/widgets/form/ConfigPanel.js:134
 -msgid "You need to correct the red marked fields before config could be saved"
 +#: js/ux/form/ImageField.js:256
 +msgid "Delete Image"
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesDialog.js:277
 -msgid "Saving of preferences failed."
 +#: js/ux/form/ImageField.js:265
 +msgid "Show Original Image"
  msgstr ""
  
 -#: js/widgets/dialog/EditDialog.js:602
 -msgid "Add New {0}"
 +#: js/ux/form/RecordsComboBox.js:26
 +msgid "Software Version"
  msgstr ""
  
 -#: js/widgets/dialog/EditDialog.js:604
 -msgid "Edit {0} \"{1}\""
 +#: js/ux/SearchField.js:44
 +msgid "enter searchfilter"
  msgstr ""
  
 -#: js/widgets/dialog/EditDialog.js:674
 -msgid "Transferring {0}..."
 +#: js/ux/ConnectionStatus.js:56
 +msgid "online"
  msgstr ""
  
 -#: js/widgets/dialog/EditDialog.js:827
 -msgid "Do you really want to delete this {0}?"
 +#: js/ux/ConnectionStatus.js:57
 +msgid "offline"
  msgstr ""
  
 -#: js/widgets/dialog/EditDialog.js:839
 -msgid "Could not delete {0}."
 +#: js/ux/grid/PagingToolbar.js:57
 +#, python-brace-format
 +msgid "{0} selected"
  msgstr ""
  
 -#: js/widgets/dialog/EditDialog.js:894
 -msgid "Resolve Duplicate {0} Suspicion"
 +#: js/ux/grid/PagingToolbar.js:58
 +msgid "Unselect all"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditResultSummary.js:146
 -msgid "You edited {0} {1}."
 +#: js/ux/grid/PagingToolbar.js:59
 +#, python-brace-format
 +msgid "Select all pages ({0} records)"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditResultSummary.js:149
 -msgid "{0} {1} have been updated properly."
 +#: js/ux/grid/PagingToolbar.js:60
 +msgid "Toggle selection"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditResultSummary.js:149
 -msgid "{0} {1} has been updated properly."
 +#: js/LicenseScreen.js:35
 +msgid "License"
  msgstr ""
  
- #: js/common.js:235
 -#: js/widgets/dialog/MultipleEditResultSummary.js:152
 -msgid ""
 -"{0} {1} have invalid data after updating. These {1} have not been changed."
++#: js/common.js:236
 +msgid "Usage:&#160;"
  msgstr ""
  
- #: js/common.js:273 js/common.js:311
 -#: js/widgets/dialog/MultipleEditResultSummary.js:152
 -msgid "{0} {1} has invalid data after updating. This {1} has not been changed."
++#: js/common.js:275 js/common.js:313
 +msgid "No Information"
  msgstr ""
  
- #: js/common.js:360
 -#: js/widgets/dialog/ExportDialog.js:48 js/widgets/container/GrantsGrid.js:51
 -#: js/Models.js:337
 -msgid "Export"
 -msgid_plural "Export"
++#: js/common.js:362
 +#, python-brace-format
 +msgid "{0} minute"
 +msgid_plural "{0} minutes"
  msgstr[0] ""
  msgstr[1] ""
  
- #: js/common.js:361
 -#: js/widgets/dialog/ExportDialog.js:84
 -msgid "Export {0} {1}"
++#: js/common.js:363
 +#, python-brace-format
 +msgid "{0} hour"
 +msgid_plural "{0} hours"
 +msgstr[0] ""
 +msgstr[1] ""
 +
- #: js/common.js:362
++#: js/common.js:364
 +#, python-brace-format
 +msgid "{0} workday"
 +msgid_plural "{0} workdays"
 +msgstr[0] ""
 +msgstr[1] ""
 +
- #: js/common.js:389
++#: js/common.js:391
 +#, python-brace-format
 +msgid "{0} second"
 +msgid_plural "{0} seconds"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/tineInit.js:605
 +msgid ""
 +"Fatal Error: Client self-update failed, please contact your administrator "
 +"and/or restart/reload your browser."
  msgstr ""
  
 -#: js/widgets/dialog/ExportDialog.js:111
 -msgid "Export definition"
 +#: js/prototypeTranslations.js:20 js/prototypeTranslations.js:21
 +msgid "Outdent Text"
  msgstr ""
  
 -#: js/widgets/dialog/ExportDialog.js:120
 -msgid "Select Export Definition ..."
 +#: js/prototypeTranslations.js:22 js/prototypeTranslations.js:23
 +msgid "Indent Text"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:341
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:465
 -msgid "Delete value from all selected records"
 +#: js/prototypeTranslations.js:24 js/prototypeTranslations.js:25
 +msgid "Remove Formatting"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:448
 -msgid "Undo change for all selected records"
 +#: js/ExceptionHandler.js:169
 +msgid "Your session timed out. You need to login again."
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:523
 -msgid "Edit {0} {1}"
 +#: js/ExceptionHandler.js:184
 +msgid "Insufficient Rights"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:582
 -msgid "Different Values"
 +#: js/ExceptionHandler.js:185
 +msgid "Sorry, you are not permitted to perform this action"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:583
 +#: js/ExceptionHandler.js:193
 +msgid "Not Found"
 +msgstr ""
 +
 +#: js/ExceptionHandler.js:194
  msgid ""
 -"This field has different values. Editing this field will overwrite the old "
 -"values."
 +"Sorry, your request could not be completed because the required data could "
 +"not be found. In most cases this means that someone already deleted the "
 +"data. Please refresh your current view."
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:680
 -msgid "Do you really want to change these {0} records?"
 +#: js/ExceptionHandler.js:202
 +msgid "Concurrent Updates"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:683
 -msgid "Applying changes"
 +#: js/ExceptionHandler.js:203
 +msgid ""
 +"Someone else saved this record while you where editing the data. You need to "
 +"reload and make your changes again."
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesTreePanel.js:67
 -msgid "General Preferences"
 +#: js/ExceptionHandler.js:211
 +msgid "Service Unavailable"
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesTreePanel.js:87
 -msgid "My Profile"
 +#: js/ExceptionHandler.js:212
 +msgid ""
 +"The server is currently unable to handle the request due to a temporary "
 +"overloading, maintenance or misconfiguration of the server. Please try again "
 +"or contact your administrator."
  msgstr ""
  
 -#: js/widgets/dialog/WizardPanel.js:173
 -msgid "Back"
 +#: js/ExceptionHandler.js:218
 +msgid "Server Message:"
  msgstr ""
  
 -#: js/widgets/dialog/WizardPanel.js:180
 -msgid "Next"
 +#: js/ExceptionHandler.js:220
 +msgid "Invalid Data"
  msgstr ""
  
 -#: js/widgets/dialog/WizardPanel.js:194
 -msgid "Finish"
 +#: js/ExceptionHandler.js:221
 +msgid "Your input data is not valid. Please provide valid data."
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:41
 -msgid "The record you try to add might already exist."
 +#: js/ExceptionHandler.js:239
 +msgid "Timeout"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:196
 -msgid "Field Group"
 +#: js/ExceptionHandler.js:240
 +msgid ""
 +"Sorry, some timeout occured while processing your request. Please reload "
 +"your browser, try again or contact your administrator."
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:210
 -msgid "My Value"
 +#: js/ExceptionHandler.js:248
 +msgid "No Response"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:218
 -msgid "Existing Value"
 +#: js/ExceptionHandler.js:249
 +msgid ""
 +"Sorry, the Server did not respond any data. Please reload your browser, try "
 +"again or contact your administrator."
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:226
 -msgid "Final Value"
 +#: js/ExceptionHandler.js:256
 +msgid "Out of Resources"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:243
 -msgid "Action:"
 +#: js/ExceptionHandler.js:257
 +msgid ""
 +"Sorry, the Server stated a \"memory exhausted\" condition. Please contact "
 +"your administrator."
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:259
 -msgid "Merge, keeping existing details"
 +#: js/ExceptionHandler.js:273
 +msgid "No Role Memberships"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:260
 -msgid "Merge, keeping my details"
 +#: js/ExceptionHandler.js:274
 +msgid ""
 +"Your user account has no role memberships. Please contact your administrator."
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:261
 -msgid "Keep existing record and discard mine"
 +#: js/ExceptionHandler.js:281
 +msgid "Method Not Found / Insufficent Permissions"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:262
 -msgid "Keep both records"
 +#: js/ExceptionHandler.js:282
 +msgid ""
 +"You tried to access a function that is not available. Please reload your "
 +"browser, try again or contact your administrator."
  msgstr ""
  
 -#: js/widgets/TimezoneChooser.js:77
 -msgid "setting new timezone..."
 +#: js/ExceptionDialog.js:103 js/ExceptionDialog.js:126
 +msgid "Send Report"
  msgstr ""
  
 -#: js/widgets/customfields/EditDialogPlugin.js:155
 -msgid "General"
 +#: js/ExceptionDialog.js:155
 +msgid "The last action you made was potentially not performed correctly."
 +msgstr ""
 +
 +#: js/ExceptionDialog.js:156
 +msgid ""
 +"Please help improving this software and notify the vendor. Include a brief "
 +"description of what you where doing when the error occurred."
  msgstr ""
  
 -#: js/widgets/customfields/EditDialogPlugin.js:167
 -msgid "Custom Fields"
 +#: js/ExceptionDialog.js:170
 +msgid "Send Contact Information"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:153
 -msgid "Add a Note..."
 +#: js/ExceptionDialog.js:187
 +msgid "Details:"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:168 js/widgets/ActivitiesPanel.js:181
 -#: js/widgets/container/GrantsGrid.js:45
 -msgid "Add"
 +#: js/ExceptionDialog.js:211
 +msgid "Sending report..."
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:168 js/widgets/ActivitiesPanel.js:491
 -msgid "Note"
 +#: js/ExceptionDialog.js:211
 +msgid "Please wait a moment"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:182 js/widgets/ActivitiesPanel.js:413
 -msgid "Add new note"
 +#: js/ExceptionDialog.js:260
 +msgid "Transmission Completed"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:209 js/widgets/ActivitiesPanel.js:228
 -msgid "Notes"
 +#: js/ExceptionDialog.js:261
 +msgid "Your report has been sent. Thanks for your contribution"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:311
 -msgid "Enter new note:"
 +#: js/ExceptionDialog.js:261
 +msgid "Please restart your browser now!"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:356 js/widgets/ActivitiesPanel.js:412
 -msgid "Add Note"
 +#: js/Container.js:123
 +#, python-brace-format
 +msgid "All {0}"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:399
 -msgid "Add a {0} Note"
 +#: js/Container.js:124
 +#, python-brace-format
 +msgid "Shared {0}"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:493
 -msgid "Timestamp"
 +#: js/Container.js:125
 +#, python-brace-format
 +msgid "Other Users {0}"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:507
 -msgid "Displaying history records {0} - {1} of {2}"
 +#: js/Container.js:130
 +#, python-brace-format
 +msgid "My {0}"
  msgstr ""
  
- #: js/MainMenu.js:66
 -#: js/widgets/ActivitiesPanel.js:508
 -msgid "No history to display"
++#: js/MainMenu.js:67
 +#, python-brace-format
 +msgid "User: {0}"
  msgstr ""
  
- #: js/MainMenu.js:124
 -#: js/widgets/ActivitiesPanel.js:608
 -msgid "History"
++#: js/MainMenu.js:125
 +msgid "Help"
  msgstr ""
  
- #: js/MainMenu.js:131
 -#: js/widgets/ActivitiesPanel.js:620
 -msgid "Quick Search"
++#: js/MainMenu.js:132
 +msgid "Debug Console (Ctrl + F11)"
  msgstr ""
  
- #: js/MainMenu.js:144
 -#: js/widgets/ActivitiesPanel.js:621 js/widgets/ActivitiesPanel.js:622
 -msgid "Time"
++#: js/MainMenu.js:145
 +msgid "Edit Profile"
  msgstr ""
  
- #: js/MainMenu.js:151
 -#: js/widgets/ActivitiesPanel.js:624
 -msgid "User"
++#: js/MainMenu.js:152
 +msgid "Change password"
  msgstr ""
  
- #: js/MainMenu.js:158
 -#: js/widgets/persistentfilter/PickerPanel.js:121
 -msgid "My favorites"
++#: js/MainMenu.js:159
 +msgid "Logout"
  msgstr ""
  
- #: js/MainMenu.js:159
 -#: js/widgets/persistentfilter/PickerPanel.js:299
 -msgid "Delete Favorite"
++#: js/MainMenu.js:160
 +#, python-brace-format
 +msgid "Logout from {0}"
  msgstr ""
  
- #: js/MainMenu.js:176
 -#: js/widgets/persistentfilter/PickerPanel.js:304
 -#: js/widgets/persistentfilter/PickerPanel.js:397
 -msgid "Edit Favorite"
++#: js/MainMenu.js:177
 +msgid "Allow desktop notifications"
  msgstr ""
  
- #: js/MainMenu.js:177
 -#: js/widgets/persistentfilter/PickerPanel.js:309
 -msgid "Overwrite Favorite"
++#: js/MainMenu.js:178
 +msgid "Request permissions for webkit desktop notifications."
  msgstr ""
  
- #: js/MainMenu.js:187
 -#: js/widgets/persistentfilter/PickerPanel.js:326
 -msgid "Do you really want to delete the favorite \"{0}\"?"
++#: js/MainMenu.js:188
 +msgid "Install web app"
  msgstr ""
  
- #: js/MainMenu.js:188
 -#: js/widgets/persistentfilter/PickerPanel.js:328
 -msgid "Deleting Favorite \"{0}\""
++#: js/MainMenu.js:189
 +msgid "Install Tine 2.0 as web app in your browser."
  msgstr ""
  
- #: js/MainMenu.js:243
 -#: js/widgets/persistentfilter/PickerPanel.js:364
 -msgid "Overwrite?"
++#: js/MainMenu.js:244
 +msgid "Are you sure you want to logout?"
  msgstr ""
  
- #: js/MainMenu.js:257
 -#: js/widgets/persistentfilter/PickerPanel.js:364
 -msgid "Do you want to overwrite the favorite \"{0}\"?"
++#: js/MainMenu.js:258
 +msgid "Logging you out..."
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:366
 -msgid "Overwriting Favorite \"{0}\""
 +#: js/AppManager.js:208
 +msgid "Missing Applications"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:387
 -msgid "Could not save Favorite"
 +#: js/AppManager.js:209
 +msgid ""
 +"There are no applications enabled for you. Please contact your administrator."
  msgstr ""
  
- #: js/Models.js:272
 -#: js/widgets/persistentfilter/PickerPanel.js:387
 -msgid "Your current view does not support favorites"
 -msgstr ""
++#: js/Models.js:274
 +msgid "Alarm"
 +msgid_plural "Alarms"
 +msgstr[0] ""
 +msgstr[1] ""
  
- #: js/Models.js:310
 -#: js/widgets/persistentfilter/PickerPanel.js:395
 -msgid "Create Favorite"
++#: js/Models.js:312
 +msgid "Import"
 +msgid_plural "Imports"
 +msgstr[0] ""
 +msgstr[1] ""
 +
- #: js/Models.js:373
++#: js/Models.js:375
 +msgid "Credentials"
 +msgid_plural "Credentials"
 +msgstr[0] ""
 +msgstr[1] ""
 +
- #: js/Models.js:421
++#: js/Models.js:423
 +msgid "Department"
 +msgid_plural "Departments"
 +msgstr[0] ""
 +msgstr[1] ""
 +
- #: js/Models.js:447
++#: js/Models.js:449
 +msgid "Config"
 +msgid_plural "Configs"
 +msgstr[0] ""
 +msgstr[1] ""
 +
- #: js/Models.js:447
++#: js/Models.js:449
 +msgid "Configs"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:421
 -msgid "Saving Favorite \"{0}\""
 +#: js/CreditsScreen.js:36
 +msgid "Credits"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:621
 -msgid "(shared)"
 +#: Exception/PasswordPolicyViolation.php:22
 +msgid "Password Policy Violation"
  msgstr ""
  
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:140
 -msgid "Favorite not saved"
 +#: Exception/SystemGeneric.php:27
 +msgid "Generic System Exception"
  msgstr ""
  
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:213
 -msgid "Shared Favorite (visible by all users)"
 +#: Exception/Record/SystemContainer.php:22
 +msgid "System Container"
  msgstr ""
  
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:264
 -msgid "The grant to see and use this filter"
 +#: Exception/Record/SystemContainer.php:28
 +msgid "This is a system container which could not be deleted!"
  msgstr ""
  
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:269
 -msgid "The grant to edit this filter"
 +#: ModelConfiguration.php:41 ModelConfiguration.php:50
 +#: ModelConfiguration.php:82 ModelConfiguration.php:91
 +msgid "Record Name"
 +msgid_plural "Records Name"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: ModelConfiguration.php:155 ModelConfiguration.php:243
 +msgid "Group"
  msgstr ""
  
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:274
 -#: js/widgets/container/GrantsGrid.js:49
 -msgid "Delete"
 +#: ModelConfiguration.php:204
 +msgid "New Car"
  msgstr ""
  
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:275
 -msgid "The grant to delete this filter"
 +#: ModelConfiguration.php:367 ModelConfiguration.php:370
 +msgid "Banking Information"
  msgstr ""
  
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:283
 -msgid "Permissions"
 +#: ModelConfiguration.php:371
 +msgid "Private Information"
  msgstr ""
  
- #: PersistentFilter.php:138
 -#: js/widgets/CountryCombo.js:34
 -msgid "Select a country..."
++#: PersistentFilter.php:151
 +msgid "- The last filter I used -"
  msgstr ""
  
 -#: js/widgets/account/PickerGridPanel.js:158
 -msgid "Search User"
 +#: Preference.php:122
 +msgid "Page size"
  msgstr ""
  
 -#: js/widgets/account/PickerGridPanel.js:164
 -msgid "Search Group"
 +#: Preference.php:123
 +msgid "Page size in grids"
  msgstr ""
  
 -#: js/widgets/account/PickerGridPanel.js:170
 -msgid "Add Anyone"
 +#: Preference.php:126
 +msgid "Grid stripe rows"
  msgstr ""
  
 -#: js/widgets/account/PickerGridPanel.js:213
 -msgid "Anyone"
 +#: Preference.php:127
 +msgid "Stripe rows in grids"
  msgstr ""
  
 -#: js/widgets/account/PickerGridPanel.js:229
 -msgid "Search for users ..."
 +#: Preference.php:130
 +msgid "Grid load mask"
  msgstr ""
  
 -#: js/widgets/account/PickerGridPanel.js:251
 -msgid "Search for groups ..."
 +#: Preference.php:131
 +msgid "Show load mask in grids"
  msgstr ""
  
 -#: js/widgets/LangChooser.js:68
 -msgid "setting new language..."
 +#: Preference.php:134
 +msgid "Dialog buttons order style"
  msgstr ""
  
 -#: js/widgets/MainScreen.js:264
 -msgid "Save current view as favorite"
 +#: Preference.php:135
 +msgid "Dialog buttons order style (Windows / Mac)"
  msgstr ""
  
 -#: js/widgets/mainscreen/WestPanel.js:302
 -msgid "containers"
 +#: Preference.php:138
 +msgid "Auto search on filter change"
  msgstr ""
  
 -#: js/widgets/mainscreen/WestPanel.js:329
 -msgid "Favorites"
 +#: Preference.php:139
 +msgid "Perform auto search when filter is changed"
  msgstr ""
  
 -#: js/widgets/container/GrantsDialog.js:52
 -msgid "Folder"
 +#: Preference.php:143
 +msgid "The timezone in which dates are shown in Tine 2.0."
  msgstr ""
  
 -#: js/widgets/container/GrantsDialog.js:95
 -msgid "Updating Grants"
 +#: Preference.php:147
 +msgid "The language of the Tine 2.0 GUI."
  msgstr ""
  
 -#: js/widgets/container/GrantsDialog.js:125
 -msgid "Error"
 +#: Preference.php:150
 +msgid "Default Application"
  msgstr ""
  
 -#: js/widgets/container/GrantsDialog.js:126
 -msgid "You are not allowed to remove all admins for this container!"
 +#: Preference.php:151
 +msgid "The default application to show after login."
  msgstr ""
  
 -#: js/widgets/container/FilterModel.js:160
 -msgid "is personal of"
 +#: Preference.php:154
 +msgid "Window Type"
  msgstr ""
  
 -#: js/widgets/container/ContainerSelect.js:129
 -#: js/ux/form/ComboBoxRecentsPlugin.js:43
 -msgid "choose other {0}..."
 +#: Preference.php:155
 +msgid "You can choose between modal windows or normal browser popup windows."
  msgstr ""
  
 -#: js/widgets/container/ContainerSelect.js:132
 -msgid "Select a {0}"
 +#: Preference.php:158
 +msgid "Confirm Logout"
  msgstr ""
  
 -#: js/widgets/container/ContainerSelect.js:152
 -msgid "Recently used {0}:"
 +#: Preference.php:159
 +msgid "Show confirmation dialog on logout."
  msgstr ""
  
 -#: js/widgets/container/ContainerSelect.js:478
 -msgid "please select a {0}"
 +#: Record/RecordSetDiff.php:42
 +msgid "added"
  msgstr ""
  
 -#: js/widgets/container/PropertiesDialog.js:90
 -msgid "Properties"
 +#: Record/RecordSetDiff.php:43
 +msgid "removed"
  msgstr ""
  
 -#: js/widgets/container/PropertiesDialog.js:119
 -msgid "My Grants"
 +#: Record/RecordSetDiff.php:44
 +msgid "modified"
  msgstr ""
  
 -#: js/widgets/container/TreePanel.js:142
 -msgid "container"
 -msgid_plural "containers"
 -msgstr[0] ""
 -msgstr[1] ""
 -
 -#: js/widgets/container/TreePanel.js:546
 -msgid "You are not allowed to select the {0} '{1}':"
 +#: Exception.php:49
 +#, python-brace-format
 +msgid "Exception ({0})"
  msgstr ""
  
- #: Config.php:281
 -#: js/widgets/container/TreePanel.js:547
 -msgid "{0} grant is required for desired action"
++#: Config.php:309
 +msgid "System IMAP"
  msgstr ""
  
- #: Config.php:283
 -#: js/widgets/container/TreePanel.js:548
 -msgid "Insufficient Grants"
++#: Config.php:311
 +msgid "System IMAP server configuration."
  msgstr ""
  
- #: Config.php:292
 -#: js/widgets/container/GrantsGrid.js:44
 -msgid "The grant to read records of this container"
++#: Config.php:320
 +msgid "System SMTP"
  msgstr ""
  
- #: Config.php:294
 -#: js/widgets/container/GrantsGrid.js:46
 -msgid "The grant to add records to this container"
++#: Config.php:322
 +msgid "System SMTP server configuration."
  msgstr ""
  
- #: Config.php:303
 -#: js/widgets/container/GrantsGrid.js:48
 -msgid "The grant to edit records in this container"
++#: Config.php:331
 +msgid "System SIEVE"
  msgstr ""
  
- #: Config.php:305
 -#: js/widgets/container/GrantsGrid.js:50
 -msgid "The grant to delete records in this container"
++#: Config.php:333
 +msgid "System SIEVE server configuration."
  msgstr ""
  
- #: Config.php:314
 -#: js/widgets/container/GrantsGrid.js:52
 -msgid "The grant to export records from this container"
++#: Config.php:342
 +msgid "Authentication Backend"
  msgstr ""
  
- #: Config.php:316
 -#: js/widgets/container/GrantsGrid.js:53
 -msgid "Sync"
++#: Config.php:344
 +msgid "Backend adapter for user authentication."
  msgstr ""
  
- #: Config.php:324
 -#: js/widgets/container/GrantsGrid.js:54
 -msgid "The grant to synchronise records with this container"
++#: Config.php:352
 +msgid "Authentication Configuration"
  msgstr ""
  
- #: Config.php:326
 -#: js/widgets/container/GrantsGrid.js:55
 -msgid "Admin"
++#: Config.php:354
 +msgid "Authentication backend configuration."
  msgstr ""
  
- #: Config.php:335
 -#: js/widgets/container/GrantsGrid.js:56
 -msgid "The grant to administrate this container"
++#: Config.php:363
 +msgid "User Backend"
  msgstr ""
  
- #: Config.php:337
 -#: js/widgets/container/GrantsGrid.js:58
 -msgid "Free Busy"
++#: Config.php:365
 +msgid "Backend adapter for user data."
  msgstr ""
  
- #: Config.php:345
 -#: js/widgets/container/GrantsGrid.js:59
 -msgid "The grant to access free busy information of events in this calendar"
++#: Config.php:373
 +msgid "User Configuration"
  msgstr ""
  
- #: Config.php:347
 -#: js/widgets/container/GrantsGrid.js:60
 -msgid "Private"
++#: Config.php:375
 +msgid "User backend configuration."
  msgstr ""
  
- #: Config.php:356
 -#: js/widgets/container/GrantsGrid.js:61
 -msgid "The grant to access records marked as private in this container"
++#: Config.php:384
 +msgid "Cronuser ID"
  msgstr ""
  
- #: Config.php:358
 -#: js/widgets/form/ConfigPanel.js:113
 -msgid "Configuration Problem"
++#: Config.php:386
 +msgid "User ID of the cron user."
  msgstr ""
  
- #: Config.php:366
 -#: js/widgets/form/ConfigPanel.js:134
 -msgid "Invalid configuration"
++#: Config.php:394
 +msgid "Title Postfix"
  msgstr ""
  
- #: Config.php:368
 -#: js/widgets/form/ConfigPanel.js:158
 -msgid "Transferring Configuration..."
++#: Config.php:396
 +msgid "Postfix string appended to the title of this installation."
  msgstr ""
  
- #: Config.php:376
 -#: js/widgets/form/ConfigPanel.js:254
 -msgid "Save config"
++#: Config.php:404
 +msgid "Redirect URL"
  msgstr ""
  
- #: Config.php:378
 -#: js/widgets/form/ConfigPanel.js:264
 -msgid "Reload config"
++#: Config.php:406
 +msgid "Redirect to this URL after logout."
  msgstr ""
  
- #: Config.php:386
 -#: js/widgets/form/FileUploadButton.js:65
 -msgid "Wrong File Type"
++#: Config.php:414
 +msgid "Redirect to Referrer"
  msgstr ""
  
- #: Config.php:388
 -#: js/widgets/form/FileUploadButton.js:65
 -msgid "Please select a file with one of the following extensions:"
++#: Config.php:416
 +msgid "Redirect to referrer after logout."
  msgstr ""
  
- #: Config.php:396
 -#: js/widgets/form/RecordPickerManager.js:48
 -#: js/widgets/form/RecordPickerComboBox.js:119
 -msgid "Searching..."
++#: Config.php:424
 +msgid "Redirect Always"
  msgstr ""
  
- #: Config.php:398
 -#: js/ExceptionDialog.js:103 js/ExceptionDialog.js:126
 -msgid "Send Report"
++#: Config.php:426
 +msgid "Redirect to configured redirect URL also for login."
  msgstr ""
  
- #: Config.php:406
 -#: js/ExceptionDialog.js:155
 -msgid "The last action you made was potentially not performed correctly."
++#: Config.php:434
 +msgid "Allowed Origins"
  msgstr ""
  
- #: Config.php:408
 -#: js/ExceptionDialog.js:156
 -msgid ""
 -"Please help improving this software and notify the vendor. Include a brief "
 -"description of what you where doing when the error occurred."
++#: Config.php:436
 +msgid "Allowed Origins for the JSON API."
  msgstr ""
  
- #: Config.php:416
 -#: js/ExceptionDialog.js:170
 -msgid "Send Contact Information"
++#: Config.php:444
 +msgid "Accepted Terms Version"
  msgstr ""
  
- #: Config.php:418
 -#: js/ExceptionDialog.js:187
 -msgid "Details:"
++#: Config.php:446
 +msgid "Accepted version number of the terms and conditions document."
  msgstr ""
  
- #: Config.php:426
 -#: js/ExceptionDialog.js:211
 -msgid "Sending report..."
++#: Config.php:454
 +msgid "Use Geolocation Services"
  msgstr ""
  
- #: Config.php:428
 -#: js/ExceptionDialog.js:211
 -msgid "Please wait a moment"
++#: Config.php:456
 +msgid "Use of external Geolocation services is allowed."
  msgstr ""
  
- #: Config.php:436
 -#: js/ExceptionDialog.js:260
 -msgid "Transmission Completed"
++#: Config.php:464
++msgid "Disable LDAP TLS Certificate Check"
+ msgstr ""
 -#: js/ExceptionDialog.js:261
 -msgid "Your report has been sent. Thanks for your contribution"
++#: Config.php:466
++msgid "LDAP TLS Certificate should not be checked"
+ msgstr ""
 -#: js/ExceptionDialog.js:261
 -msgid "Please restart your browser now!"
++#: Config.php:475
++msgid "Configure hook class for user sync"
+ msgstr ""
 -#: js/MainScreen.js:200
 -msgid "Your password expired. Please enter a new user password:"
++#: Config.php:477
++msgid "Allows to change data after fetching user from sync backend"
+ msgstr ""
 -#: js/prototypeTranslations.js:20 js/prototypeTranslations.js:21
 -msgid "Outdent Text"
++#: Config.php:485
++msgid "Sync contact data from sync backend"
+ msgstr ""
 -#: js/prototypeTranslations.js:22 js/prototypeTranslations.js:23
 -msgid "Indent Text"
++#: Config.php:487
++msgid "Sync user contact data from sync backend"
+ msgstr ""
 -#: js/prototypeTranslations.js:24 js/prototypeTranslations.js:25
 -msgid "Remove Formatting"
++#: Config.php:496
 +msgid "IP Session Validator"
  msgstr ""
  
- #: Config.php:438
 -#: js/ux/PopupWindowManager.js:175
 -msgid ""
 -"The window you want to work with is backgrounded. Your browser doesn't "
 -"support to foreground the window for you, so you need to use your operating "
 -"systems window switching features. Please send complaints to your browser "
 -"vendor!"
++#: Config.php:498
 +msgid "Destroy session if the users IP changes."
  msgstr ""
  
- #: Config.php:446
 -#: js/ux/Percentage.js:193
 -msgid "(paused)"
++#: Config.php:506
 +msgid "UA Session Validator"
  msgstr ""
  
- #: Config.php:448
 -#: js/ux/SearchField.js:44
 -msgid "enter searchfilter"
++#: Config.php:508
 +msgid "Destroy session if the users user agent string changes."
  msgstr ""
  
- #: Config.php:456
 -#: js/ux/grid/PagingToolbar.js:57
 -msgid "{0} selected"
++#: Config.php:516
 +msgid "Files Directory"
  msgstr ""
  
- #: Config.php:458
 -#: js/ux/grid/PagingToolbar.js:58
 -msgid "Unselect all"
++#: Config.php:518
 +msgid "Directory with web server write access for user files."
  msgstr ""
  
- #: Config.php:466 Config.php:468
 -#: js/ux/grid/PagingToolbar.js:59
 -msgid "Select all pages ({0} records)"
++#: Config.php:526 Config.php:528
 +msgid "Reuse last username logged"
  msgstr ""
  
- #: Config.php:476 Config.php:478
 -#: js/ux/grid/PagingToolbar.js:60
 -msgid "Toggle selection"
++#: Config.php:536 Config.php:538
 +msgid "User may change password"
  msgstr ""
  
- #: Config.php:487 Config.php:489
 -#: js/ux/ConnectionStatus.js:56
 -msgid "online"
++#: Config.php:547 Config.php:549
 +msgid "Enable password policy"
  msgstr ""
  
- #: Config.php:497
 -#: js/ux/ConnectionStatus.js:57
 -msgid "offline"
++#: Config.php:557
 +msgid "Only ASCII"
  msgstr ""
  
- #: Config.php:499
 -#: js/ux/form/RecordsComboBox.js:26
 -msgid "Software Version"
++#: Config.php:559
 +msgid "Only ASCII characters are allowed in passwords."
  msgstr ""
  
- #: Config.php:507
 -#: js/ux/form/ImageField.js:76
 -msgid "Loading"
++#: Config.php:567
 +msgid "Minimum length"
  msgstr ""
  
- #: Config.php:509
 -#: js/ux/form/ImageField.js:78
 -msgid "Click to edit"
++#: Config.php:569
 +msgid "Minimum password length"
  msgstr ""
  
- #: Config.php:517
 -#: js/ux/form/ImageField.js:146
 -msgid "Image Failed"
++#: Config.php:577
 +msgid "Minimum word chars"
  msgstr ""
  
- #: Config.php:519
 -#: js/ux/form/ImageField.js:146
 -msgid "Could not load image. Please notify your Administrator"
++#: Config.php:579
 +msgid "Minimum word chars in password"
  msgstr ""
  
- #: Config.php:527
 -#: js/ux/form/ImageField.js:168
 -msgid "Not An Image"
++#: Config.php:587
 +msgid "Minimum uppercase chars"
  msgstr ""
  
- #: Config.php:529
 -#: js/ux/form/ImageField.js:168
 -msgid "Please select an image file (gif/png/jpeg)"
++#: Config.php:589
 +msgid "Minimum uppercase chars in password"
  msgstr ""
  
- #: Config.php:537
 -#: js/ux/form/ImageField.js:211
 -msgid "Could not upload image. Please notify your Administrator"
++#: Config.php:597
 +msgid "Minimum special chars"
  msgstr ""
  
- #: Config.php:539
 -#: js/ux/form/ImageField.js:224
 -msgid "Change Image"
++#: Config.php:599
 +msgid "Minimum special chars in password"
  msgstr ""
  
- #: Config.php:547
 -#: js/ux/form/ImageField.js:232 js/ux/form/ImageField.js:250
 -msgid "Crop Image"
++#: Config.php:607
 +msgid "Minimum numbers"
  msgstr ""
  
- #: Config.php:549
 -#: js/ux/form/ImageField.js:256
 -msgid "Delete Image"
++#: Config.php:609
 +msgid "Minimum numbers in password"
  msgstr ""
  
- #: Config.php:557
 -#: js/ux/form/ImageField.js:265
 -msgid "Show Original Image"
++#: Config.php:617
 +msgid "Forbid part of username"
  msgstr ""
  
- #: Config.php:559
 -#: js/Models.js:273
 -msgid "Alarm"
 -msgid_plural "Alarms"
 -msgstr[0] ""
 -msgstr[1] ""
++#: Config.php:619
 +msgid "Forbid part of username in password"
 +msgstr ""
  
- #: Config.php:567
 -#: js/Models.js:311
 -msgid "Import"
 -msgid_plural "Imports"
 -msgstr[0] ""
 -msgstr[1] ""
++#: Config.php:627
 +msgid "Automatic bugreports"
 +msgstr ""
  
- #: Config.php:569
 -#: js/Models.js:374
 -msgid "Credentials"
 -msgid_plural "Credentials"
 -msgstr[0] ""
 -msgstr[1] ""
++#: Config.php:629
 +msgid ""
 +"Always send bugreports, even on timeouts and other exceptions / failures."
 +msgstr ""
  
- #: Config.php:577
 -#: js/Models.js:422
 -msgid "Department"
 -msgid_plural "Departments"
 -msgstr[0] ""
 -msgstr[1] ""
++#: Config.php:637
 +msgid "Last sessions cleanup run"
 +msgstr ""
  
- #: Config.php:579
 -#: js/Models.js:448
 -msgid "Config"
 -msgid_plural "Configs"
 -msgstr[0] ""
 -msgstr[1] ""
++#: Config.php:639
 +msgid "Stores the timestamp of the last sessions cleanup task run."
 +msgstr ""
  
- #: Config.php:587
 -#: js/Models.js:448
 -msgid "Configs"
++#: Config.php:647
 +msgid "Maximum login failures"
  msgstr ""
  
- #: Config.php:589
 -#: views/update.php:24
 -msgid "Tine 2.0 needs to be updated or is not installed yet."
++#: Config.php:649
 +msgid "Maximum allowed login failures before blocking account"
  msgstr ""
  
- #: Config.php:597
 -#: views/update.php:25
 -msgid "Please wait or contact your administrator"
++#: Config.php:657
 +msgid "Disable Anyone Account"
  msgstr ""
  
- #: Config.php:599
 -#: Exception.php:49
 -msgid "Exception ({0})"
++#: Config.php:659
 +msgid "Disallow anyone account in grant configurations"
  msgstr ""
  
- #: Config.php:607
 -#: Container.php:684
 -#, python-format
 -msgid "%s's personal container"
++#: Config.php:667
 +msgid "Alarms sent each job"
  msgstr ""
  
- #: Config.php:609
 -#: Container.php:1532
++#: Config.php:669
  msgid ""
 -"You are not allowed to delete this Container. Please define another "
 -"container as the default addressbook for internal contacts!"
 +"Allows to configure the maximum number of alarm notifications in each run of "
 +"sendPendingAlarms (0 = no limit)"
 +msgstr ""
++
++#: Config.php:677 Config.php:679
++msgid "Max username length"
+ msgstr ""