Merge branch 'pu/2013.10-favoritesacl'
authorPhilipp Schüle <p.schuele@metaways.de>
Fri, 29 Aug 2014 17:16:45 +0000 (19:16 +0200)
committerPhilipp Schüle <p.schuele@metaways.de>
Fri, 29 Aug 2014 17:16:45 +0000 (19:16 +0200)
Conflicts:
tine20/Tinebase/Controller/Record/Abstract.php
tine20/Tinebase/Setup/Update/Release8.php
tine20/Tinebase/Setup/setup.xml
tine20/Tinebase/translations/de.po
tine20/Tinebase/translations/template.pot

Change-Id: I45b14b9a19094080128b17d3b53d5cb918a45dfc

15 files changed:
1  2 
tests/tine20/Tinebase/Frontend/JsonTest.php
tine20/Calendar/js/TreePanel.js
tine20/HumanResources/Setup/Initialize.php
tine20/Sales/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/Model/User.php
tine20/Tinebase/PersistentFilter.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
Simple merge
@@@ -202,16 -188,15 +202,19 @@@ abstract class Tinebase_Controller_Reco
          $this->_checkRight($_action);
          $this->checkFilterACL($_filter, $_action);
          $this->_addDefaultFilter($_filter);
+         
          $result = $this->_backend->search($_filter, $_pagination, $_onlyIds);
+         
+         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
+             . ' Got ' . count($result) . ' search results');
+         
          if (! $_onlyIds) {
              if ($_getRelations) {
 -                $result->setByIndices('relations', Tinebase_Relations::getInstance()->getMultipleRelations($this->_modelName, $this->_getBackendType(), $result->getId()));
 +                // if getRelations is true, all relations should be fetched
 +                if ($_getRelations === TRUE) {
 +                    $_getRelations = NULL;
 +                }
 +                $result->setByIndices('relations', Tinebase_Relations::getInstance()->getMultipleRelations($this->_modelName, $this->_getBackendType(), $result->getId(), NULL, array(), FALSE, $_getRelations));
              }
              if ($this->resolveCustomfields()) {
                  Tinebase_CustomField::getInstance()->resolveMultipleCustomfields($result);
       */
      protected function _setRelatedData($updatedRecord, $record, $returnUpdatedRelatedData = FALSE)
      {
+         if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__
+             . ' Update record: ' . print_r($record->toArray(), true));
+         
 +        // relations won't be touched if the property is set to NULL
 +        // an empty array on the relations property will remove all relations
          if ($record->has('relations') && isset($record->relations) && is_array($record->relations)) {
              $type = $this->_getBackendType();
 -            Tinebase_Relations::getInstance()->setRelations($this->_modelName, $type, $updatedRecord->getId(), $record->relations);
 +            Tinebase_Relations::getInstance()->setRelations($this->_modelName, $type, $updatedRecord->getId(), $record->relations, FALSE, $this->_inspectRelatedRecords);
          }
          if ($record->has('tags') && isset($record->tags) && (is_array($record->tags) || $record->tags instanceof Tinebase_Record_RecordSet)) {
              $updatedRecord->tags = $record->tags;
Simple merge
Simple merge
Simple merge
@@@ -61,195 -61,141 +61,338 @@@ class Tinebase_Setup_Update_Release8 ex
      }
      
      /**
-      * adds a label property to hold a humanreadable text
 +     * 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');
 +    }
 +    
 +    /**
+      * - add filter acl
+      * - update current filter (add default grants: user for personal favorites, Admin group for shared favorites)
+      * 
+      * @see 0009610: shared favorites acl
       */
 -    public function update_2()
 +    public function update_3()
      {
 -        $this->setApplicationVersion('Tinebase', '8.3');
+         $this->_addFilterAclTable();
+         $this->_addGrantsToExistingFilters();
 -        
++        $this->setApplicationVersion('Tinebase', '8.4');
+     }
+     
+     /**
+      * 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);
 -                if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ 
 -                    . ' Filter ' . $filter->name . ' already has grants.');
++    
+         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();
 -            
 -            if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ 
 -                . ' Updating filter "' . $filter->name . '" with grant: ' . print_r($grant->toArray(), true));
 -            
++    
+             $filter->grants = new Tinebase_Record_RecordSet('Tinebase_Model_PersistentFilterGrant');
+             $filter->grants->addRecord($grant);
-         $this->setApplicationVersion('Tinebase', '8.4');
++    
++            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);
+         }
+     }
++    
++    /**
++     * adds a label property to hold a humanreadable text
++     */
++    public function update_4()
++    {
 +        $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');
-     public function update_4() {
++        $this->setApplicationVersion('Tinebase', '8.5');
 +    }
 +    
-         $this->setApplicationVersion('Tinebase', '8.5');
++    /**
++     * adds import table
++     */
++    public function update_5()
++    {
 +        $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.6');
 +    }
  }
@@@ -1,7 -1,7 +1,7 @@@
  <?xml version="1.0" encoding="utf-8"?>
  <application>
      <name>Tinebase</name>
-     <version>8.5</version>
 -    <version>8.3</version>
++    <version>8.6</version>
      <tables>
          <table>
              <name>applications</name>
Simple merge
@@@ -1783,19 -1837,15 +1837,17 @@@ msgstr "Eltern
  msgid "Child"
  msgstr "Kind"
  
 -#: 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"
 -msgstr "Die maximale Anzahl von {0} mit Typ {1} wurde erreicht. Bitte ändern Sie den Typ der Verknüpfung."
 +#: js/widgets/relation/GenericPickerGridPanel.js:263
 +msgid ""
 +"The maximum number of {0} with the type \"{1}\" is reached. Please change the "
 +"type of this relation"
 +msgstr "Die maximale Anzahl an {0}n mit dem Typ \"{1}\" wurde erreicht. Bitte ändern Sie den Typ der Verknüpfung."
  
- #: js/widgets/relation/GenericPickerGridPanel.js:272
- 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/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}"
  msgstr "Die maximale Anzahl von {0} mit Typ {1} wurde bei {2} erreicht. Bitte ändern Sie den Typ der Verknüpfung oder editieren sie den {2}"
  
- #: js/widgets/relation/GenericPickerGridPanel.js:299
+ #: js/widgets/relation/GenericPickerGridPanel.js:291
  msgid "No Dialog"
  msgstr "Kein Dialog"
  
@@@ -2925,57 -2987,9 +2989,55 @@@ 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!"
  
 +msgid "The month must have the format YYYY-MM!"
 +msgstr "Der Monat muss im Format JJJJ-MM angegeben werden!"
 +
 +msgid "Wrong month format!"
 +msgstr "Monat falsch angegeben!"
 +
  msgid "or"
  msgstr "oder"
 +
 +msgid "from"
 +msgstr "von"
 +
 +msgid "to"
 +msgstr "an"
 +
 +msgid "You tried to create a relation which is forbidden by the constraints config of one of the models."
 +msgstr "Sie haben versucht, eine Verknüpfung zu aktualisieren, wodurch Verknüpfungen entstanden sind, die nicht erlaubt sind."
 +
 +msgid "Invalid Relations"
 +msgstr "Fehlerhafte Verknüpfung"
 +
 +msgid "Records"
 +msgstr "Datensätze"
 +
 +### 0009984: allow to change user role
 +#: js/widgets/account/ChangeAccountAction.js:18
 +msgid "Change user account"
 +msgstr "Benutzerkonto wechseln"
 +
 +#: js/widgets/account/ChangeAccountAction.js:20
 +msgid "Switch to another user's account"
 +msgstr "Auf ein anderes Benutzerkonto umschalten"
 +
 +#: js/widgets/account/ChangeAccountAction.js:64
 +msgid "Switch to this user account:"
 +msgstr "Auf das Konto dieses Benutzers umschalten:"
 +
 +#: js/widgets/account/ChangeAccountAction.js:86
 +msgid "Select Account"
 +msgstr "Benutzerkonto auswählen"
 +
 +#: js/widgets/account/ChangeAccountAction.js:108
 +msgid "Changing user account ..."
 +msgstr "Benutzerkonto wechseln ..."
 +
 +# 0009908: anonymous download links for files and folders
 +msgid "Publish"
 +msgstr "Veröffentlichen"
@@@ -13,65 -13,56 +13,65 @@@ msgstr "
  "X-Poedit-SourceCharset: utf-8\n"
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
  
 -#: PersistentFilter.php:151
 -msgid "- The last filter I used -"
 +#: Group/Abstract.php:191 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:3246
 -#: Exception/SystemGeneric.php:27
 -msgid "Generic System Exception"
++#: Setup/setup.xml:3329
 +msgid "note"
  msgstr ""
  
- #: Setup/setup.xml:3251
 -#: Exception/Record/SystemContainer.php:22
 -msgid "System Container"
++#: Setup/setup.xml:3334
 +msgid "default note type"
  msgstr ""
  
- #: Setup/setup.xml:3277
 -#: Exception/Record/SystemContainer.php:28
 -msgid "This is a system container which could not be deleted!"
++#: Setup/setup.xml:3360
 +msgid "telephone"
  msgstr ""
  
- #: Setup/setup.xml:3282
 -#: Acl/Rights.php:147
 -msgid "Report bugs"
++#: Setup/setup.xml:3365
 +msgid "telephone call"
  msgstr ""
  
- #: Setup/setup.xml:3308
 -#: Acl/Rights.php:148
 -msgid "Report bugs to the software vendor directly when they occur."
++#: Setup/setup.xml:3391
 +msgid "email"
  msgstr ""
  
- #: Setup/setup.xml:3313
 -#: Acl/Rights.php:151
 -msgid "Check version"
++#: Setup/setup.xml:3396
 +msgid "email contact"
  msgstr ""
  
- #: Setup/setup.xml:3339
 -#: Acl/Rights.php:152
 -msgid "Check for new versions of this software."
++#: Setup/setup.xml:3422
 +msgid "created"
  msgstr ""
  
- #: Setup/setup.xml:3344
 -#: Acl/Rights.php:155
 -msgid "Manage own profile"
++#: Setup/setup.xml:3427
 +msgid "record created"
  msgstr ""
  
- #: Setup/setup.xml:3370
 -#: Acl/Rights.php:156
 -msgid "The right to manage the own profile (selected contact data)."
++#: Setup/setup.xml:3453
 +msgid "changed"
  msgstr ""
  
- #: Setup/setup.xml:3375
 -#: Acl/Rights.php:159
 -msgid "Manage own client state"
++#: Setup/setup.xml:3458
 +msgid "record changed"
  msgstr ""
  
- #: Container.php:688
 -#: Acl/Rights.php:160
 -msgid "The right to manage the own client state."
++#: Container.php:690
 +#, python-format
 +msgid "%s's personal container"
 +msgstr ""
 +
- #: Container.php:1547
++#: Container.php:1549
 +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
@@@ -159,830 -137,783 +159,832 @@@ msgstr "
  msgid "Changed fields:"
  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"
 -msgstr ""
 -
 -#: Import/Csv/Abstract.php:200
 -#, python-format
 -msgid "The following fields weren't imported: %s"
 +#: views/update.php:24
 +msgid "Tine 2.0 needs to be updated or is not installed yet."
  msgstr ""
  
 -#: Import/Csv/Abstract.php:201
 -msgid "N/A"
 +#: views/update.php:25
 +msgid "Please wait or contact your administrator"
  msgstr ""
  
 -#: Config.php:281
 -msgid "System IMAP"
 +#: Export/Pdf.php:216 js/widgets/tags/TagsPanel.js:57
 +#: js/widgets/tags/TagsPanel.js:426
 +msgid "Tags"
  msgstr ""
  
 -#: Config.php:283
 -msgid "System IMAP server configuration."
 +#: Export/Pdf.php:437
 +msgid "Created by"
  msgstr ""
  
 -#: Config.php:292
 -msgid "System SMTP"
 +#: Export/Pdf.php:483
 +msgid "Activities"
  msgstr ""
  
 -#: Config.php:294
 -msgid "System SMTP server configuration."
 +#: Export/Spreadsheet/Ods.php:365
 +msgid "Data"
  msgstr ""
  
 -#: Config.php:303
 -msgid "System SIEVE"
 +#: js/AdminPanel.js:75
 +msgid "Profile Information"
  msgstr ""
  
 -#: Config.php:305
 -msgid "System SIEVE server configuration."
 +#: js/AdminPanel.js:79 js/widgets/dialog/EditDialog.js:409
 +#: js/widgets/EditRecord.js:168
 +msgid "Apply"
  msgstr ""
  
 -#: Config.php:314
 -msgid "Authentication Backend"
 +#: js/AdminPanel.js:94 js/widgets/TimezoneChooser.js:77
 +#: js/widgets/LangChooser.js:68
 +msgid "Please Wait"
  msgstr ""
  
 -#: Config.php:316
 -msgid "Backend adapter for user authentication."
 +#: js/AdminPanel.js:156 js/widgets/container/GrantsGrid.js:43
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:262
 +msgid "Read"
  msgstr ""
  
 -#: Config.php:324
 -msgid "Authentication Configuration"
 +#: js/AdminPanel.js:157
 +msgid "The field is readable part of the profile"
  msgstr ""
  
 -#: Config.php:326
 -msgid "Authentication backend configuration."
 +#: js/AdminPanel.js:161 js/widgets/container/GrantsGrid.js:47
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:268
 +msgid "Edit"
  msgstr ""
  
 -#: Config.php:335
 -msgid "User Backend"
 +#: js/AdminPanel.js:162
 +msgid "The field is editable part of the profile"
  msgstr ""
  
 -#: Config.php:337
 -msgid "Backend adapter for user data."
 +#: js/AdminPanel.js:175 js/widgets/dialog/DuplicateResolveGridPanel.js:203
 +msgid "Field Name"
  msgstr ""
  
 -#: Config.php:345
 -msgid "User Configuration"
 +#: js/LoginPanel.js:83 js/LoginPanel.js:159
 +msgid "Login"
  msgstr ""
  
 -#: Config.php:347
 -msgid "User backend configuration."
 +#: js/LoginPanel.js:93 js/widgets/dialog/CredentialsDialog.js:61
 +msgid "Username"
  msgstr ""
  
 -#: Config.php:356
 -msgid "Cronuser ID"
 +#: js/LoginPanel.js:111 js/widgets/dialog/CredentialsDialog.js:65
 +msgid "Password"
  msgstr ""
  
 -#: Config.php:358
 -msgid "User ID of the cron user."
 +#: js/LoginPanel.js:128
 +msgid "Certificate detected. Please, press Login button to proceed."
  msgstr ""
  
 -#: Config.php:366
 -msgid "Title Postfix"
 +#: js/LoginPanel.js:185
 +msgid "Version"
  msgstr ""
  
 -#: Config.php:368
 -msgid "Postfix string appended to the title of this installation."
 +#: js/LoginPanel.js:217
 +#, python-brace-format
 +msgid "{0} is made for you"
  msgstr ""
  
 -#: Config.php:376
 -msgid "Redirect URL"
 +#: 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:378
 -msgid "Redirect to this URL after logout."
 +#: js/LoginPanel.js:225
 +#, python-brace-format
 +msgid "{0} Homepage"
  msgstr ""
  
 -#: Config.php:386
 -msgid "Redirect to Referrer"
 +#: js/LoginPanel.js:226
 +#, python-brace-format
 +msgid "{0} Forum"
  msgstr ""
  
 -#: Config.php:388
 -msgid "Redirect to referrer after logout."
 +#: js/LoginPanel.js:230
 +msgid "Translations"
  msgstr ""
  
 -#: Config.php:396
 -msgid "Redirect Always"
 +#: js/LoginPanel.js:232
 +#, python-brace-format
 +msgid "Translation state of {0}: {1}%."
  msgstr ""
  
 -#: Config.php:398
 -msgid "Redirect to configured redirect URL also for login."
 +#: 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:406
 -msgid "Allowed Origins"
 +#: js/LoginPanel.js:237
 +#, python-brace-format
 +msgid "{0} Translation Howto"
  msgstr ""
  
 -#: Config.php:408
 -msgid "Allowed Origins for the JSON API."
 +#: js/LoginPanel.js:238
 +msgid "Detailed Language Statistics"
  msgstr ""
  
 -#: Config.php:416
 -msgid "Accepted Terms Version"
 +#: js/LoginPanel.js:258
 +msgid "Powered by:"
  msgstr ""
  
 -#: Config.php:418
 -msgid "Accepted version number of the terms and conditions document."
 +#: js/LoginPanel.js:258
 +msgid "online open source groupware and crm"
  msgstr ""
  
 -#: Config.php:426
 -msgid "Use Geolocation Services"
 +#: js/LoginPanel.js:308
 +#, python-brace-format
 +msgid "about {0} minutes"
  msgstr ""
  
 -#: Config.php:428
 -msgid "Use of external Geolocation services is allowed."
 +#: js/LoginPanel.js:313 js/LoginPanel.js:551
 +msgid "Tine 2.0 needs your help"
  msgstr ""
  
 -#: Config.php:436
 -msgid "IP Session Validator"
 +#: 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:"
  msgstr ""
  
 -#: Config.php:438
 -msgid "Destroy session if the users IP changes."
 +#: js/LoginPanel.js:321
 +msgid "participate!"
  msgstr ""
  
 -#: Config.php:446
 -msgid "UA Session Validator"
 +#: js/LoginPanel.js:343
 +msgid "Languages"
  msgstr ""
  
 -#: Config.php:448
 -msgid "Destroy session if the users user agent string changes."
 +#: js/LoginPanel.js:344
 +msgid "Duration"
  msgstr ""
  
 -#: Config.php:456
 -msgid "Files Directory"
 +#: js/LoginPanel.js:385
 +msgid "Browser incompatible"
  msgstr ""
  
 -#: Config.php:458
 -msgid "Directory with web server write access for user files."
 +#: js/LoginPanel.js:387
 +msgid "Your browser is not supported by Tine 2.0."
  msgstr ""
  
 -#: Config.php:466 Config.php:468
 -msgid "Reuse last username logged"
 +#: js/LoginPanel.js:392
 +msgid "Browser incompatible?"
  msgstr ""
  
 -#: Config.php:476 Config.php:478
 -msgid "User may change password"
 +#: js/LoginPanel.js:394
 +msgid ""
 +"You are using an unrecognized browser. This could result in unexpected "
 +"behaviour."
  msgstr ""
  
 -#: Config.php:487 Config.php:489
 -msgid "Enable password policy"
 +#: js/LoginPanel.js:400
 +msgid "You might try one of these browsers:"
  msgstr ""
  
 -#: Config.php:497
 -msgid "Only ASCII"
 +#: js/LoginPanel.js:460
 +msgid "Logging you in..."
  msgstr ""
  
 -#: Config.php:499
 -msgid "Only ASCII characters are allowed in passwords."
 +#: js/LoginPanel.js:460 js/widgets/dialog/MultipleEditDialogPlugin.js:693
 +#: 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 ""
  
 -#: Config.php:507
 -msgid "Minimum length"
 +#: js/LoginPanel.js:474
 +#, python-brace-format
 +msgid "Login successful. Loading {0}..."
  msgstr ""
  
 -#: Config.php:509
 -msgid "Minimum password length"
 +#: js/LoginPanel.js:474 js/MainMenu.js:277
 +msgid "Please wait!"
  msgstr ""
  
 -#: Config.php:517
 -msgid "Minimum word chars"
 +#: js/LoginPanel.js:482 js/ExceptionHandler.js:233
 +msgid "Connection lost, please check your network!"
  msgstr ""
  
 -#: Config.php:519
 -msgid "Minimum word chars in password"
 +#: js/LoginPanel.js:486
 +msgid "There was an error verifying your certificate!!!"
  msgstr ""
  
 -#: Config.php:527
 -msgid "Minimum uppercase chars"
 +#: js/LoginPanel.js:487
 +msgid "Your username and/or your password are wrong!!!"
  msgstr ""
  
 -#: Config.php:529
 -msgid "Minimum uppercase chars in password"
 +#: js/LoginPanel.js:489
 +msgid "Login failure"
  msgstr ""
  
 -#: Config.php:537
 -msgid "Minimum special chars"
 +#: 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/MultipleEditDialogPlugin.js:655
 +#: js/widgets/dialog/ExportDialog.js:150 js/widgets/dialog/EditDialog.js:822
 +msgid "Errors"
  msgstr ""
  
 -#: Config.php:539
 -msgid "Minimum special chars in password"
 +#: js/LoginPanel.js:508 js/widgets/dialog/CredentialsDialog.js:126
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:655
 +#: js/widgets/dialog/ExportDialog.js:150 js/widgets/dialog/EditDialog.js:844
 +msgid "Please fix the errors noted."
  msgstr ""
  
 -#: Config.php:547
 -msgid "Minimum numbers"
 +#: js/LoginPanel.js:523
 +msgid "Please enter your login data"
  msgstr ""
  
 -#: Config.php:549
 -msgid "Minimum numbers in password"
 +#: js/widgets/TimezoneChooser.js:37 Preference.php:142
 +msgid "Timezone"
  msgstr ""
  
 -#: Config.php:557
 -msgid "Forbid part of username"
 +#: js/widgets/TimezoneChooser.js:77
 +msgid "setting new timezone..."
  msgstr ""
  
 -#: Config.php:559
 -msgid "Forbid part of username in password"
 +#: js/widgets/ActivitiesPanel.js:153
 +msgid "Add a Note..."
  msgstr ""
  
 -#: Config.php:567
 -msgid "Automatic bugreports"
 +#: js/widgets/ActivitiesPanel.js:168 js/widgets/ActivitiesPanel.js:181
 +#: js/widgets/container/GrantsGrid.js:45
 +msgid "Add"
  msgstr ""
  
 -#: Config.php:569
 -msgid ""
 -"Always send bugreports, even on timeouts and other exceptions / failures."
 +#: js/widgets/ActivitiesPanel.js:168 js/widgets/ActivitiesPanel.js:491
 +msgid "Note"
  msgstr ""
  
 -#: Config.php:577
 -msgid "Last sessions cleanup run"
 +#: js/widgets/ActivitiesPanel.js:182 js/widgets/ActivitiesPanel.js:413
 +msgid "Add new note"
  msgstr ""
  
 -#: Config.php:579
 -msgid "Stores the timestamp of the last sessions cleanup task run."
 +#: js/widgets/ActivitiesPanel.js:209 js/widgets/ActivitiesPanel.js:228
 +msgid "Notes"
  msgstr ""
  
 -#: Config.php:587
 -msgid "Maximum login failures"
 +#: js/widgets/ActivitiesPanel.js:311
 +msgid "Enter new note:"
  msgstr ""
  
 -#: Config.php:589
 -msgid "Maximum allowed login failures before blocking account"
 +#: js/widgets/ActivitiesPanel.js:332
 +#: js/widgets/tags/TagsMassAttachAction.js:105
 +#: js/widgets/tags/TagToggleBox.js:59
 +#: js/widgets/account/ChangeAccountAction.js:99
 +#: js/widgets/dialog/ExceptionHandlerDialog.js:189
 +#: 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: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 ""
  
 -#: Config.php:597
 -msgid "Disable Anyone Account"
 +#: js/widgets/ActivitiesPanel.js:340
 +#: js/widgets/tags/TagsMassAttachAction.js:84
 +#: js/widgets/account/ChangeAccountAction.js:78
 +#: js/widgets/dialog/ExceptionHandlerDialog.js:197
 +#: js/widgets/dialog/PreferencesDialog.js:109
 +#: js/widgets/dialog/AddToRecordPanel.js:111
 +#: 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 ""
  
 -#: Config.php:599
 -msgid "Disallow anyone account in grant configurations"
 +#: js/widgets/ActivitiesPanel.js:356 js/widgets/ActivitiesPanel.js:412
 +msgid "Add Note"
  msgstr ""
  
 -#: Config.php:607
 -msgid "Alarms sent each job"
 +#: js/widgets/ActivitiesPanel.js:399
 +#, python-brace-format
 +msgid "Add a {0} Note"
  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:489 js/widgets/ActivitiesPanel.js:626
 +#: js/widgets/relation/GenericPickerGridPanel.js:460
 +#: js/widgets/grid/LinkGridPanel.js:105
 +msgid "Type"
  msgstr ""
  
 -#: Setup/setup.xml:3190
 -msgid "note"
 +#: js/widgets/ActivitiesPanel.js:492
 +#: js/widgets/dialog/AttachmentsGridPanel.js:106
 +#: js/widgets/grid/GridPanel.js:1420
 +msgid "Created By"
  msgstr ""
  
 -#: Setup/setup.xml:3195
 -msgid "default note type"
 +#: js/widgets/ActivitiesPanel.js:493
 +msgid "Timestamp"
  msgstr ""
  
 -#: Setup/setup.xml:3221
 -msgid "telephone"
 +#: js/widgets/ActivitiesPanel.js:507
 +#, python-brace-format
 +msgid "Displaying history records {0} - {1} of {2}"
  msgstr ""
  
 -#: Setup/setup.xml:3226
 -msgid "telephone call"
 +#: js/widgets/ActivitiesPanel.js:508
 +msgid "No history to display"
  msgstr ""
  
 -#: Setup/setup.xml:3252
 -msgid "email"
 +#: js/widgets/ActivitiesPanel.js:608
 +msgid "History"
  msgstr ""
  
 -#: Setup/setup.xml:3257
 -msgid "email contact"
 +#: js/widgets/ActivitiesPanel.js:620
 +msgid "Quick Search"
  msgstr ""
  
 -#: Setup/setup.xml:3283
 -msgid "created"
 +#: js/widgets/ActivitiesPanel.js:621 js/widgets/ActivitiesPanel.js:622
 +msgid "Time"
  msgstr ""
  
 -#: Setup/setup.xml:3288
 -msgid "record created"
 +#: js/widgets/ActivitiesPanel.js:624
 +msgid "User"
  msgstr ""
  
 -#: Setup/setup.xml:3314
 -msgid "changed"
 +#: js/widgets/customfields/EditDialogPlugin.js:155
 +msgid "General"
  msgstr ""
  
 -#: Setup/setup.xml:3319
 -msgid "record changed"
 +#: js/widgets/customfields/EditDialogPlugin.js:167
 +msgid "Custom Fields"
  msgstr ""
  
 -#: Preference.php:122
 -msgid "Page size"
 +#: js/widgets/tags/TagCombo.js:46
 +msgid "tag name"
  msgstr ""
  
 -#: Preference.php:123
 -msgid "Page size in grids"
 +#: js/widgets/tags/TagCombo.js:134 js/widgets/tags/TagCombo.js:139
 +#: 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
 +msgid "personal"
  msgstr ""
  
 -#: Preference.php:126
 -msgid "Grid stripe rows"
 +#: js/widgets/tags/TagsMassDetachAction.js:18
 +msgid "Detach tag(s)"
  msgstr ""
  
 -#: Preference.php:127
 -msgid "Stripe rows in grids"
 +#: js/widgets/tags/TagsMassDetachAction.js:84
 +msgid "Select Tag(s) to detach"
  msgstr ""
  
 -#: Preference.php:130
 -msgid "Grid load mask"
 +#: js/widgets/tags/TagsMassAttachAction.js:18
 +msgid "Add Tag"
  msgstr ""
  
 -#: Preference.php:131
 -msgid "Show load mask in grids"
 +#: js/widgets/tags/TagsMassAttachAction.js:76
 +msgid "Attach the following tag to all selected items:"
  msgstr ""
  
 -#: Preference.php:134
 -msgid "Dialog buttons order style"
 +#: js/widgets/tags/TagsMassAttachAction.js:98
 +msgid "Select Tag"
  msgstr ""
  
 -#: Preference.php:135
 -msgid "Dialog buttons order style (Windows / Mac)"
 +#: js/widgets/tags/TagsMassAttachAction.js:128
 +msgid "Attaching Tag"
  msgstr ""
  
 -#: Preference.php:138
 -msgid "Auto search on filter change"
 +#: js/widgets/tags/TagToggleBox.js:52
 +msgid "Detach Tags"
  msgstr ""
  
 -#: Preference.php:139
 -msgid "Perform auto search when filter is changed"
 +#: js/widgets/tags/TagToggleBox.js:52
 +msgid "Attach Tags"
  msgstr ""
  
 -#: Preference.php:142 js/widgets/TimezoneChooser.js:37
 -msgid "Timezone"
 +#: js/widgets/tags/TagToggleBox.js:140
 +msgid "No Tags to detach found in the selected records"
  msgstr ""
  
 -#: Preference.php:143
 -msgid "The timezone in which dates are shown in Tine 2.0."
 +#: js/widgets/tags/TagToggleBox.js:141
 +msgid "Please Wait..."
  msgstr ""
  
 -#: Preference.php:146 js/widgets/LangChooser.js:35
 -msgid "Language"
 +#: js/widgets/tags/TagToggleBox.js:152
 +msgid "Detaching Tags"
  msgstr ""
  
 -#: Preference.php:147
 -msgid "The language of the Tine 2.0 GUI."
 +#: js/widgets/tags/TagsPanel.js:114
 +msgid "Add a new personal tag"
  msgstr ""
  
 -#: Preference.php:150
 -msgid "Default Application"
 +#: js/widgets/tags/TagsPanel.js:117
 +msgid "Add New Personal Tag"
  msgstr ""
  
 -#: Preference.php:151
 -msgid "The default application to show after login."
 +#: js/widgets/tags/TagsPanel.js:118
 +msgid "Please note: You create a personal tag. Only you can see it!"
  msgstr ""
  
 -#: Preference.php:154
 -msgid "Window Type"
 +#: js/widgets/tags/TagsPanel.js:118
 +msgid "Enter tag name:"
  msgstr ""
  
 -#: Preference.php:155
 -msgid "You can choose between modal windows or normal browser popup windows."
 +#: js/widgets/tags/TagsPanel.js:159
 +msgid "No Tags to display"
  msgstr ""
  
 -#: Preference.php:158
 -msgid "Confirm Logout"
 +#: js/widgets/tags/TagsPanel.js:182
 +msgid "Detach tag"
 +msgid_plural "Detach tags"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/widgets/tags/TagsPanel.js:192
 +msgid "Edit tag"
  msgstr ""
  
 -#: Preference.php:159
 -msgid "Show confirmation dialog on logout."
 +#: js/widgets/tags/TagsPanel.js:197 js/widgets/tags/TagsPanel.js:202
 +msgid "Rename Tag"
  msgstr ""
  
 -#: Record/RecordSetDiff.php:42
 -msgid "added"
 +#: js/widgets/tags/TagsPanel.js:202
 +msgid "Please enter a new name:"
  msgstr ""
  
 -#: Record/RecordSetDiff.php:43
 -msgid "removed"
 +#: js/widgets/tags/TagsPanel.js:211
 +msgid "Edit Description"
  msgstr ""
  
 -#: Record/RecordSetDiff.php:44
 -msgid "modified"
 +#: js/widgets/tags/TagsPanel.js:216
 +msgid "Description for tag"
  msgstr ""
  
 -#: Export/Spreadsheet/Ods.php:276
 -msgid "Data"
 +#: js/widgets/tags/TagsPanel.js:216
 +msgid "Please enter new description:"
  msgstr ""
  
 -#: Export/Pdf.php:216 js/widgets/tags/TagsPanel.js:57
 -#: js/widgets/tags/TagsPanel.js:434
 -msgid "Tags"
 +#: js/widgets/tags/TagsPanel.js:225
 +msgid "Change Color"
  msgstr ""
  
 -#: Export/Pdf.php:437
 -msgid "Created by"
 +#: js/widgets/tags/TagsPanel.js:254
 +msgid "Delete Tag"
 +msgid_plural "Delete Tags"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/widgets/tags/TagsPanel.js:267
 +msgid "Realy Delete Selected Tag?"
 +msgid_plural "Realy Delete Selected Tags?"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/widgets/tags/TagsPanel.js:268
 +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
 +msgid "Please wait a moment..."
  msgstr ""
  
 -#: Export/Pdf.php:483
 -msgid "Activities"
 +#: js/widgets/tags/TagsPanel.js:272
 +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:863
 +msgid "Failed"
  msgstr ""
  
 -#: js/AdminPanel.js:75
 -msgid "Profile Information"
 +#: js/widgets/tags/TagsPanel.js:288
 +msgid "Could not delete Tag(s)."
  msgstr ""
  
 -#: js/AdminPanel.js:79 js/widgets/EditRecord.js:168
 -#: js/widgets/dialog/EditDialog.js:384
 -msgid "Apply"
 +#: js/widgets/tags/TagsPanel.js:332 js/widgets/tags/TagsPanel.js:394
 +msgid "Notice"
  msgstr ""
  
 -#: js/AdminPanel.js:94 js/widgets/TimezoneChooser.js:77
 -#: js/widgets/LangChooser.js:68
 -msgid "Please Wait"
 +#: js/widgets/tags/TagsPanel.js:333 js/widgets/tags/TagsPanel.js:395
 +msgid "The minimum tag length is three."
  msgstr ""
  
 -#: js/AdminPanel.js:156
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:262
 -#: js/widgets/container/GrantsGrid.js:43
 -msgid "Read"
 +#: js/widgets/tags/TagsPanel.js:380
 +msgid "Could not create tag."
  msgstr ""
  
 -#: js/AdminPanel.js:157
 -msgid "The field is readable part of the profile"
 +#: js/widgets/tags/TagsPanel.js:413
 +msgid "Could not update tag."
  msgstr ""
  
 -#: js/AdminPanel.js:161
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:268
 -#: js/widgets/container/GrantsGrid.js:47
 -msgid "Edit"
 +#: js/widgets/tags/TagsPanel.js:508
 +#: js/widgets/relation/GenericPickerGridPanel.js:457
- #: js/widgets/persistentfilter/EditPersistentFilterPanel.js:191
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:204
 +#: js/ExceptionDialog.js:162
 +msgid "Description"
  msgstr ""
  
 -#: js/AdminPanel.js:162
 -msgid "The field is editable part of the profile"
 +#: js/widgets/tags/TagsPanel.js:512
 +#: js/widgets/container/PropertiesDialog.js:113
 +msgid "Color"
  msgstr ""
  
- #: js/widgets/tags/TagFilter.js:30 js/Models.js:142
 -#: js/AdminPanel.js:175 js/widgets/dialog/DuplicateResolveGridPanel.js:203
 -msgid "Field Name"
++#: 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/AboutDialog.js:41 js/MainMenu.js:118
 -msgid "About {0}"
 +#: js/widgets/CountryCombo.js:34
 +msgid "Select a country..."
  msgstr ""
  
 -#: js/AboutDialog.js:56 js/MainMenu.js:166
 -msgid "Learn more about {0}"
 +#: js/widgets/account/ChangeAccountAction.js:18
 +msgid "Change user account"
  msgstr ""
  
 -#: 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/account/ChangeAccountAction.js:20
 +msgid "Switch to another user's account"
  msgstr ""
  
 -#: js/AboutDialog.js:71
 -msgid "Released under different"
 +#: js/widgets/account/ChangeAccountAction.js:65
 +msgid "Switch to this user account:"
  msgstr ""
  
 -#: js/AboutDialog.js:72
 -msgid "Open Source Licenses"
 +#: js/widgets/account/ChangeAccountAction.js:92
 +msgid "Select Account"
  msgstr ""
  
 -#: js/AboutDialog.js:79
 -msgid "with the help of our"
 +#: js/widgets/account/ChangeAccountAction.js:115
 +msgid "Changing user account ..."
  msgstr ""
  
 -#: js/AboutDialog.js:80
 -msgid "Contributors"
 +#: js/widgets/account/PickerGridPanel.js:158
 +msgid "Search User"
  msgstr ""
  
 -#: js/tineInit.js:605
 -msgid ""
 -"Fatal Error: Client self-update failed, please contact your administrator "
 -"and/or restart/reload your browser."
 +#: js/widgets/account/PickerGridPanel.js:164
 +msgid "Search Group"
  msgstr ""
  
 -#: js/AppManager.js:208
 -msgid "Missing Applications"
 +#: js/widgets/account/PickerGridPanel.js:170
 +msgid "Add Anyone"
  msgstr ""
  
 -#: js/AppManager.js:209
 -msgid ""
 -"There are no applications enabled for you. Please contact your administrator."
 +#: js/widgets/account/PickerGridPanel.js:213
 +msgid "Anyone"
  msgstr ""
  
 -#: js/CreditsScreen.js:36
 -msgid "Credits"
 +#: js/widgets/account/PickerGridPanel.js:229
 +msgid "Search for users ..."
  msgstr ""
  
 -#: js/common.js:235
 -msgid "Usage:&#160;"
 +#: js/widgets/account/PickerGridPanel.js:251
 +msgid "Search for groups ..."
  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:267
 +#: js/widgets/dialog/AttachmentsGridPanel.js:86
 +#: js/widgets/container/PropertiesDialog.js:107
- #: js/widgets/grid/LinkGridPanel.js:103 js/Models.js:429
++#: js/widgets/grid/LinkGridPanel.js:103 js/Models.js:430
 +msgid "Name"
  msgstr ""
  
 -#: js/common.js:273 js/common.js:311
 -msgid "No Information"
 +#: js/widgets/dialog/AdminPanel.js:59
 +#, python-brace-format
 +msgid "Change settings for application {0}"
  msgstr ""
  
 -#: js/common.js:360
 -msgid "{0} minute"
 -msgid_plural "{0} minutes"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/dialog/AdminPanel.js:107
 +msgid "Defaults"
 +msgstr ""
  
 -#: js/common.js:361
 -msgid "{0} hour"
 -msgid_plural "{0} hours"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/dialog/AlarmPanel.js:34
 +msgid "Alarms"
 +msgstr ""
  
 -#: js/common.js:362
 -msgid "{0} workday"
 -msgid_plural "{0} workdays"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/dialog/AlarmPanel.js:37
 +msgid "0 minutes before"
 +msgstr ""
  
 -#: js/common.js:389
 -msgid "{0} second"
 -msgid_plural "{0} seconds"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/dialog/AlarmPanel.js:38
 +msgid "5 minutes before"
 +msgstr ""
  
 -#: js/LoginPanel.js:83 js/LoginPanel.js:159
 -msgid "Login"
 +#: js/widgets/dialog/AlarmPanel.js:39
 +msgid "15 minutes before"
  msgstr ""
  
 -#: js/LoginPanel.js:93 js/widgets/dialog/CredentialsDialog.js:61
 -msgid "Username"
 +#: js/widgets/dialog/AlarmPanel.js:40
 +msgid "30 minutes before"
  msgstr ""
  
 -#: js/LoginPanel.js:111 js/widgets/dialog/CredentialsDialog.js:65
 -msgid "Password"
 +#: js/widgets/dialog/AlarmPanel.js:41
 +msgid "1 hour before"
  msgstr ""
  
 -#: js/LoginPanel.js:128
 -msgid "Certificate detected. Please, press Login button to proceed."
 +#: js/widgets/dialog/AlarmPanel.js:42
 +msgid "2 hours before"
  msgstr ""
  
 -#: js/LoginPanel.js:185
 -msgid "Version"
 +#: js/widgets/dialog/AlarmPanel.js:43
 +msgid "12 hours before"
  msgstr ""
  
 -#: js/LoginPanel.js:217
 -msgid "{0} is made for you"
 +#: js/widgets/dialog/AlarmPanel.js:44
 +msgid "1 day 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:45
 +msgid "2 days before"
  msgstr ""
  
 -#: js/LoginPanel.js:225
 -msgid "{0} Homepage"
 +#: js/widgets/dialog/AlarmPanel.js:46
 +msgid "Custom Datetime"
  msgstr ""
  
 -#: js/LoginPanel.js:226
 -msgid "{0} Forum"
 +#: js/widgets/dialog/AlarmPanel.js:58
 +msgid "Alarm Time"
  msgstr ""
  
 -#: js/LoginPanel.js:230
 -msgid "Translations"
 +#: js/widgets/dialog/AlarmPanel.js:170
 +#, python-brace-format
 +msgid "{0} minutes before"
  msgstr ""
  
 -#: js/LoginPanel.js:232
 -msgid "Translation state of {0}: {1}%."
 +#: js/widgets/dialog/CredentialsDialog.js:84
 +msgid "Please enter your credentials"
  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/ExceptionHandlerDialog.js:220
 +#, python-brace-format
 +msgid "{1} - Exception {0}"
  msgstr ""
  
 -#: js/LoginPanel.js:237
 -msgid "{0} Translation Howto"
 +#: js/widgets/dialog/ExceptionHandlerDialog.js:222
 +#, python-brace-format
 +msgid "{0} - Unknown Exception"
  msgstr ""
  
 -#: js/LoginPanel.js:238
 -msgid "Detailed Language Statistics"
 +#: js/widgets/dialog/PreferencesDialog.js:125
 +msgid "Admin Mode"
  msgstr ""
  
 -#: js/LoginPanel.js:258
 -msgid "Powered by:"
 +#: js/widgets/dialog/PreferencesDialog.js:163
 +msgid "Applications"
  msgstr ""
  
 -#: js/LoginPanel.js:258
 -msgid "online open source groupware and crm"
 +#: js/widgets/dialog/PreferencesDialog.js:192
 +msgid "Edit Preferences"
  msgstr ""
  
 -#: js/LoginPanel.js:308
 -msgid "about {0} minutes"
 +#: js/widgets/dialog/PreferencesDialog.js:193
 +msgid "Loading ..."
  msgstr ""
  
 -#: js/LoginPanel.js:313 js/LoginPanel.js:551
 -msgid "Tine 2.0 needs your help"
 +#: 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: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:277
 +msgid "Saving of preferences failed."
  msgstr ""
  
 -#: js/LoginPanel.js:321
 -msgid "participate!"
 +#: js/widgets/dialog/ImportDialog.js:223
 +msgid "Choose File and Format"
  msgstr ""
  
 -#: js/LoginPanel.js:343
 -msgid "Languages"
 +#: js/widgets/dialog/ImportDialog.js:232
 +msgid "Choose Import File"
  msgstr ""
  
 -#: js/LoginPanel.js:344
 -msgid "Duration"
 +#: js/widgets/dialog/ImportDialog.js:236
 +msgid ""
 +"Please choose the file that contains the records you want to add to Tine 2.0"
  msgstr ""
  
 -#: js/LoginPanel.js:385
 -msgid "Browser incompatible"
 +#: js/widgets/dialog/ImportDialog.js:240
 +#, python-brace-format
 +msgid "Select file containing your {0}"
  msgstr ""
  
 -#: js/LoginPanel.js:387
 -msgid "Your browser is not supported by Tine 2.0."
 +#: 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:392
 -msgid "Browser incompatible?"
 +#: 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:394
 +#: js/widgets/dialog/ImportDialog.js:259
  msgid ""
 -"You are using an unrecognized browser. This could result in unexpected "
 -"behaviour."
 +"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:400
 -msgid "You might try one of these browsers:"
 +#: js/widgets/dialog/ImportDialog.js:262
 +msgid "Please select the import format of the file you want to upload"
  msgstr ""
  
 -#: js/LoginPanel.js:460
 -msgid "Logging you in..."
 +#: js/widgets/dialog/ImportDialog.js:283 js/widgets/dialog/ImportDialog.js:315
 +msgid "Download example file"
  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:286
 +msgid "Import description"
  msgstr ""
  
 -#: js/LoginPanel.js:474
 -msgid "Login successful. Loading {0}..."
 +#: js/widgets/dialog/ImportDialog.js:336
 +msgid "Set Import Options"
  msgstr ""
  
 -#: js/LoginPanel.js:474 js/MainMenu.js:257
 -msgid "Please wait!"
 +#: js/widgets/dialog/ImportDialog.js:344
 +#, python-brace-format
 +msgid "Select {0} to add you {1} to:"
  msgstr ""
  
 -#: js/LoginPanel.js:482 js/ExceptionHandler.js:233
 -msgid "Connection lost, please check your network!"
 +#: js/widgets/dialog/ImportDialog.js:396
 +msgid "Checking Import"
  msgstr ""
  
 -#: js/LoginPanel.js:486
 -msgid "There was an error verifying your certificate!!!"
 +#: js/widgets/dialog/ImportDialog.js:425
 +msgid "Resolve Conflicts"
  msgstr ""
  
 -#: js/LoginPanel.js:487
 -msgid "Your username and/or your password are wrong!!!"
 +#: js/widgets/dialog/ImportDialog.js:434
 +#, python-brace-format
 +msgid "There are {0} {1} that might already exist."
  msgstr ""
  
 -#: js/LoginPanel.js:489
 -msgid "Login failure"
 +#: js/widgets/dialog/ImportDialog.js:441
 +msgid "Conflict"
  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:442
 +msgid "First Conflict"
  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:443
 +msgid "Previous Conflict"
  msgstr ""
  
 -#: js/LoginPanel.js:523
 -msgid "Please enter your login data"
 +#: js/widgets/dialog/ImportDialog.js:444
 +msgid "Next Conflict"
  msgstr ""
  
 -#: js/LicenseScreen.js:35
 -msgid "License"
 +#: js/widgets/dialog/ImportDialog.js:445
 +msgid "Last Conflict"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:32
 -msgid "Change Password For \"{0}\""
 +#: js/widgets/dialog/ImportDialog.js:451
 +msgid "Conflict is resolved"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:48
 -msgid "Old Password"
 +#: js/widgets/dialog/ImportDialog.js:456
 +msgid "Resolve all conflicts"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:52
 -msgid "New Password"
 +#: js/widgets/dialog/ImportDialog.js:550
 +msgid "Processing Conflict Data"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:56
 -msgid "Repeat new Password"
 -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:575 js/widgets/dialog/ImportDialog.js:595
 +msgid "No conflict to resolve"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:75
 -msgid "Please Wait!"
 +#: js/widgets/dialog/ImportDialog.js:594
 +#, python-brace-format
 +msgid "(This is record {0} in your import file)"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:76
 -msgid "changing password..."
 +#: js/widgets/dialog/ImportDialog.js:619
 +msgid "No Detail Informations"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:87
 -msgid "Success"
 +#: js/widgets/dialog/ImportDialog.js:624
 +#: js/widgets/dialog/MultipleEditResultSummary.js:213
 +msgid "Summary"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:88
 -msgid "Your password has been changed."
 +#: 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
  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:475
 +msgid "Delete value from all selected records"
  msgstr ""
  
 -#: js/MainMenu.js:187
 -msgid "Install web app"
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:458
 +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:533
 +#, python-brace-format
 +msgid "Edit {0} {1}"
  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/persistentfilter/PickerPanel.js:326
 -msgid "Confirm"
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:592
 +msgid "Different Values"
  msgstr ""
  
 -#: js/MainMenu.js:243
 -msgid "Are you sure you want to logout?"
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:593
 +msgid ""
 +"This field has different values. Editing this field will overwrite the old "
 +"values."
  msgstr ""
  
 -#: js/MainMenu.js:257
 -msgid "Logging you out..."
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:690
 +#: js/widgets/dialog/EditDialog.js:851 js/widgets/tree/ContextMenu.js:357
- #: js/widgets/persistentfilter/PickerPanel.js:325
++#: js/widgets/persistentfilter/PickerPanel.js:326
 +#: js/widgets/grid/GridPanel.js:1810 js/MainMenu.js:263
 +msgid "Confirm"
  msgstr ""
  
 -#: js/data/Record.js:199
 -msgid "Task"
 -msgid_plural "Tasks"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:690
 +#, python-brace-format
 +msgid "Do you really want to change these {0} records?"
 +msgstr ""
  
 -#: js/data/Record.js:203
 -msgid "to do list"
 -msgid_plural "to do lists"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:693
 +msgid "Applying changes"
 +msgstr ""
  
 -#: js/ExceptionHandler.js:169
 -msgid "Your session timed out. You need to login again."
 +#: js/widgets/dialog/WizardPanel.js:173
 +msgid "Back"
  msgstr ""
  
 -#: js/ExceptionHandler.js:184
 -msgid "Insufficient Rights"
 +#: js/widgets/dialog/WizardPanel.js:180
 +msgid "Next"
  msgstr ""
  
 -#: js/ExceptionHandler.js:185
 -msgid "Sorry, you are not permitted to perform this action"
 +#: js/widgets/dialog/WizardPanel.js:194
 +msgid "Finish"
  msgstr ""
  
 -#: js/ExceptionHandler.js:193
 -msgid "Not Found"
 +#: js/widgets/dialog/PreferencesPanel.js:36 js/MainMenu.js:157
 +msgid "Preferences"
  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/PreferencesPanel.js:185
 +msgid "There are no preferences for this application."
  msgstr ""
  
 -#: js/ExceptionHandler.js:202
 -msgid "Concurrent Updates"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:87
 +#: js/widgets/dialog/MultipleEditResultSummary.js:86
 +#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:69
 +msgid "OK"
  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:134
 +msgid "Merging Records..."
  msgstr ""
  
 -#: js/ExceptionHandler.js:211
 -msgid "Service Unavailable"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:173
 +msgid "Merge Failed"
  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:173
 +#, python-brace-format
 +msgid "The merge succeeded, but the duplicate {0} could not be deleted."
  msgstr ""
  
 -#: js/ExceptionHandler.js:218
 -msgid "Server Message:"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:212
 +#, python-brace-format
 +msgid "Merge {0}, prefer First"
  msgstr ""
  
 -#: js/ExceptionHandler.js:220
 -msgid "Invalid Data"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:213
 +#, python-brace-format
 +msgid "Merge {0}, prefer Second"
  msgstr ""
  
 -#: js/ExceptionHandler.js:221
 -msgid "Your input data is not valid. Please provide valid data."
 +#: js/widgets/dialog/DuplicateMergeDialog.js:220
 +#: js/widgets/grid/GridPanel.js:616
 +#, python-brace-format
 +msgid "Merge {0}"
  msgstr ""
  
 -#: js/ExceptionHandler.js:239
 -msgid "Timeout"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:223
 +#, python-brace-format
 +msgid "First {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:224
 +#, python-brace-format
 +msgid "Second {0}"
  msgstr ""
  
 -#: js/ExceptionHandler.js:248
 -msgid "No Response"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:225
 +#, python-brace-format
 +msgid "Final {0}"
  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:41
 +msgid "The record you try to add might already exist."
  msgstr ""
  
 -#: js/ExceptionHandler.js:256
 -msgid "Out of Resources"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:196
 +msgid "Field Group"
  msgstr ""
  
 -#: js/ExceptionHandler.js:257
 -msgid ""
 -"Sorry, the Server stated a \"memory exhausted\" condition. Please contact "
 -"your administrator."
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:210
 +msgid "My Value"
  msgstr ""
  
 -#: js/ExceptionHandler.js:273
 -msgid "No Role Memberships"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:218
 +msgid "Existing Value"
  msgstr ""
  
 -#: js/ExceptionHandler.js:274
 -msgid ""
 -"Your user account has no role memberships. Please contact your administrator."
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:226
 +msgid "Final Value"
  msgstr ""
  
 -#: js/ExceptionHandler.js:281
 -msgid "Method Not Found / Insufficent Permissions"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:243
 +msgid "Action:"
  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:259
 +msgid "Merge, keeping existing details"
  msgstr ""
  
 -#: js/Container.js:123
 -msgid "All {0}"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:260
 +msgid "Merge, keeping my details"
  msgstr ""
  
 -#: js/Container.js:124
 -msgid "Shared {0}"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:261
 +msgid "Keep existing record and discard mine"
  msgstr ""
  
 -#: js/Container.js:125
 -msgid "Other Users {0}"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:262
 +msgid "Keep both records"
  msgstr ""
  
 -#: js/Container.js:130
 -msgid "My {0}"
 +#: js/widgets/dialog/ExportDialog.js:48 js/widgets/container/GrantsGrid.js:51
- #: js/Models.js:337
++#: 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/widgets/EditRecord.js:131 js/widgets/dialog/EditDialog.js:442
 -#: js/widgets/dialog/EditDialog.js:470
 -msgid "Saved in"
 +#: js/widgets/dialog/ExportDialog.js:111
 +msgid "Export definition"
  msgstr ""
  
 -#: js/widgets/EditRecord.js:188 js/widgets/dialog/EditDialog.js:402
 -msgid "delete"
 +#: js/widgets/dialog/ExportDialog.js:120
 +msgid "Select Export Definition ..."
  msgstr ""
  
 -#: js/widgets/tags/TagToggleBox.js:52
 -msgid "Detach Tags"
 +#: js/widgets/dialog/EditDialog.js:427 js/widgets/EditRecord.js:188
 +msgid "delete"
  msgstr ""
  
 -#: js/widgets/tags/TagToggleBox.js:52
 -msgid "Attach Tags"
 +#: js/widgets/dialog/EditDialog.js:466 js/widgets/dialog/EditDialog.js:494
 +#: js/widgets/EditRecord.js:131
 +msgid "Saved in"
  msgstr ""
  
 -#: js/widgets/tags/TagToggleBox.js:140
 -msgid "No Tags to detach found in the selected records"
 +#: js/widgets/dialog/EditDialog.js:623 js/widgets/grid/GridPanel.js:567
 +#, python-brace-format
 +msgid "Copy {0}"
  msgstr ""
  
 -#: js/widgets/tags/TagToggleBox.js:141
 -msgid "Please Wait..."
 +#: js/widgets/dialog/EditDialog.js:626
 +#, python-brace-format
 +msgid "Add New {0}"
  msgstr ""
  
 -#: js/widgets/tags/TagToggleBox.js:152
 -msgid "Detaching Tags"
 +#: js/widgets/dialog/EditDialog.js:628
 +#, python-brace-format
 +msgid "Edit {0} \"{1}\""
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:119
 -msgid "Add a new personal tag"
 +#: js/widgets/dialog/EditDialog.js:699
 +#, python-brace-format
 +msgid "Transferring {0}..."
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:122
 -msgid "Add New Personal Tag"
 +#: js/widgets/dialog/EditDialog.js:851
 +#, python-brace-format
 +msgid "Do you really want to delete this {0}?"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:123
 -msgid "Please note: You create a personal tag. Only you can see it!"
 +#: js/widgets/dialog/EditDialog.js:853 js/widgets/grid/GridPanel.js:1853
 +#, python-brace-format
 +msgid "Deleting {0}"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:123
 -msgid "Enter tag name:"
 +#: js/widgets/dialog/EditDialog.js:863
 +#, python-brace-format
 +msgid "Could not delete {0}."
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:164
 -msgid "No Tags to display"
 +#: js/widgets/dialog/EditDialog.js:918
 +#, python-brace-format
 +msgid "Resolve Duplicate {0} Suspicion"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:187
 -msgid "Detach tag"
 -msgid_plural "Detach tags"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: 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: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:1419
 +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:930
 +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
@@@ -1519,1600 -1417,1520 +1521,1617 @@@ msgstr "
  msgid "is equal to"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:227
 -msgid "is equal to without (-, )"
 +#: 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:228
 -msgid "is greater than"
 +#: js/widgets/container/PropertiesDialog.js:90
 +msgid "Properties"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:229
 -msgid "is less than"
 +#: js/widgets/container/PropertiesDialog.js:119
 +msgid "My Grants"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:230
 -msgid "is not"
 +#: js/widgets/container/GrantsDialog.js:52
 +msgid "Folder"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:231
 -msgid "one of"
 +#: js/widgets/container/GrantsDialog.js:95
 +msgid "Updating Grants"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:232
 -msgid "none of"
 +#: js/widgets/container/GrantsDialog.js:125
 +msgid "Error"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:233
 -msgid "is before"
 +#: js/widgets/container/GrantsDialog.js:126
 +msgid "You are not allowed to remove all admins for this container!"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:234
 -msgid "is after"
 +#: 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:235
 -msgid "is within"
 +#: js/widgets/container/ContainerSelect.js:132
 +#, python-brace-format
 +msgid "Select a {0}"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:236
 -msgid "is in week no."
 +#: js/widgets/container/ContainerSelect.js:152
 +#, python-brace-format
 +msgid "Recently used {0}:"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:237
 -msgid "starts with"
 +#: js/widgets/container/ContainerSelect.js:478
 +#, python-brace-format
 +msgid "please select a {0}"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:238
 -msgid "ends with"
 +#: js/widgets/container/TreePanel.js:142
 +msgid "container"
 +msgid_plural "containers"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/widgets/container/TreePanel.js:547
 +#, python-brace-format
 +msgid "You are not allowed to select the {0} '{1}':"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:239
 -msgid "defined by"
 +#: js/widgets/container/TreePanel.js:548
 +#, python-brace-format
 +msgid "{0} grant is required for desired action"
  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/TreePanel.js:549
 +msgid "Insufficient Grants"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:409
 -msgid "Search Account ..."
 +#: js/widgets/container/CalDAVContainerPropertiesHookField.js:35
 +msgid "CalDAV URL"
  msgstr ""
  
 -#: js/widgets/grid/MonthFilter.js:34
 -msgid "Month"
 +#: js/widgets/container/GrantsGrid.js:44
 +msgid "The grant to read records of this container"
  msgstr ""
  
 -#: js/widgets/grid/FilterPanel.js:78
 -msgid "Attention: There are more filters active!"
 +#: js/widgets/container/GrantsGrid.js:46
 +msgid "The grant to add records to this container"
  msgstr ""
  
 -#: js/widgets/grid/FilterPanel.js:261
 -#: js/widgets/grid/FilterToolbarQuickFilterPlugin.js:181
 -msgid "show details"
 +#: js/widgets/container/GrantsGrid.js:48
 +msgid "The grant to edit records in this container"
  msgstr ""
  
 -#: js/widgets/grid/FilterPanel.js:262
 -#: js/widgets/grid/FilterToolbarQuickFilterPlugin.js:182
 -msgid "Always show advanced filters"
 +#: js/widgets/container/GrantsGrid.js:49
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:274
 +msgid "Delete"
  msgstr ""
  
 -#: js/widgets/grid/FilterPanel.js:511
 -msgid "Criteria {0}"
 +#: js/widgets/container/GrantsGrid.js:50
 +msgid "The grant to delete records in 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/container/GrantsGrid.js:52
 +msgid "The grant to export records from this container"
 +msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:68 js/Models.js:476
 -msgid "File"
 -msgid_plural "Files"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/container/GrantsGrid.js:53
 +msgid "Sync"
 +msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:114 js/ux/form/ImageField.js:211
 -msgid "Upload Failed"
 +#: js/widgets/container/GrantsGrid.js:54
 +msgid "The grant to synchronise records with 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:55
 +msgid "Admin"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:179
 -msgid "Remove {0}"
 +#: js/widgets/container/GrantsGrid.js:56
 +msgid "The grant to administrate this container"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:187 js/widgets/tree/ContextMenu.js:116
 -msgid "Pause upload"
 +#: js/widgets/container/GrantsGrid.js:58
 +msgid "Free Busy"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:195 js/widgets/tree/ContextMenu.js:100
 -msgid "Resume upload"
 +#: js/widgets/container/GrantsGrid.js:59
 +msgid "The grant to access free busy information of events in this calendar"
  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:60
 +msgid "Private"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:283
 -msgid "name"
 +#: js/widgets/container/GrantsGrid.js:61
 +msgid "The grant to access records marked as private in this container"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:290
 -msgid "size"
 +#: js/widgets/relation/FilterModel.js:32
- #: js/widgets/relation/GenericPickerGridPanel.js:133 js/Models.js:401
++#: js/widgets/relation/GenericPickerGridPanel.js:133 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/FileUploadGrid.js:297
 -msgid "type"
 +#: 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/QuickaddGridPanel.js:91
 -msgid "Remove"
 +#: js/widgets/relation/FilterModel.js:119
 +msgid "Define ..."
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:85 js/widgets/grid/FilterToolbar.js:588
 -msgid "Show"
 +#: js/widgets/relation/GenericPickerGridPanel.js:126
 +msgid "Edit record"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:171
 -msgid "add new filter"
 +#: js/widgets/relation/GenericPickerGridPanel.js:162
 +msgid "Sibling"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:177
 -msgid "reset all filters"
 +#: js/widgets/relation/GenericPickerGridPanel.js:163
 +msgid "Parent"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:183
 -msgid "start search"
 +#: js/widgets/relation/GenericPickerGridPanel.js:164
 +msgid "Child"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:191
 -msgid "save as favorite"
 +#: js/widgets/relation/GenericPickerGridPanel.js:265
 +#, 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/grid/FilterToolbar.js:198
 -msgid "Load a favorite"
 +#: js/widgets/relation/GenericPickerGridPanel.js:270
 +#, 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/grid/FilterToolbar.js:363
 -msgid "select a field"
 +#: js/widgets/relation/GenericPickerGridPanel.js:299
 +msgid "No Dialog"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:401
 -msgid "Delete this filter"
 +#: js/widgets/relation/GenericPickerGridPanel.js:300
 +msgid ""
 +"The Record can't be opened. There doesn't exist any dialog for editing this "
 +"Record!"
  msgstr ""
  
 -#: js/widgets/grid/RendererManager.js:54
 -msgid "has notes"
 +#: js/widgets/relation/GenericPickerGridPanel.js:456
 +#: js/widgets/grid/GridPanel.js:1148
 +msgid "Record"
  msgstr ""
  
 -#: js/widgets/grid/RendererManager.js:57
 -msgid "has relations"
 +#: js/widgets/relation/GenericPickerGridPanel.js:458
 +msgid "Remark"
  msgstr ""
  
 -#: 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:459
 +msgid "Dependency"
  msgstr ""
  
 -#: 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:917
 +msgid ""
 +"The record you tried to link is already linked. Please edit the existing "
 +"link."
  msgstr ""
  
 -#: 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/PickerCombo.js:93
 +#, python-brace-format
 +msgid ""
 +"The {1} \"{2}\" is already used in the Field \"{0}\" and can be linked only "
 +"once!"
  msgstr ""
  
 -#: js/widgets/grid/FilterStructureTreePanel.js:37
 -#: js/widgets/grid/FilterStructureTreePanel.js:51
 -msgid "or alternatively"
 +#: js/widgets/LangChooser.js:35 Preference.php:146
 +msgid "Language"
  msgstr ""
  
 -#: js/widgets/grid/FilterStructureTreePanel.js:55
 -msgid "Add alternative filter"
 +#: js/widgets/LangChooser.js:68
 +msgid "setting new language..."
  msgstr ""
  
- #: js/widgets/persistentfilter/EditPersistentFilterPanel.js:134
 -#: js/widgets/grid/FilterStructureTreePanel.js:61
 -msgid "Remove Filter"
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:140
 +msgid "Favorite not saved"
  msgstr ""
  
- #: js/widgets/persistentfilter/EditPersistentFilterPanel.js:182
 -#: js/widgets/grid/GridPanel.js:309
 -msgid ""
 -"There could not be found any {0}. Please try to change your filter-criteria, "
 -"view-options or the {1} you search in."
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:195
 +#: ModelConfiguration.php:209
 +msgid "Title"
  msgstr ""
  
- #: js/widgets/persistentfilter/EditPersistentFilterPanel.js:200
 -#: js/widgets/grid/GridPanel.js:310
 -msgid ""
 -"There could not be found any {0}. Please try to change your filter-criteria, "
 -"view-options or change the module you search in."
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:213
 +msgid "Shared Favorite (visible by all users)"
  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/persistentfilter/EditPersistentFilterPanel.js:264
++msgid "The grant to see and use this filter"
++msgstr ""
 -#: js/widgets/grid/GridPanel.js:537 js/widgets/dialog/EditDialog.js:599
 -msgid "Copy {0}"
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:269
++msgid "The grant to edit this filter"
+ msgstr ""
 -#: js/widgets/grid/GridPanel.js:556
 -msgid "Print Page"
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:275
++msgid "The grant to delete this filter"
+ msgstr ""
 -#: js/widgets/grid/GridPanel.js:586
 -#: js/widgets/dialog/DuplicateMergeDialog.js:220
 -msgid "Merge {0}"
++#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:283
++msgid "Permissions"
+ msgstr ""
 -#: 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/persistentfilter/PickerPanel.js:121
 +msgid "My favorites"
 +msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:297
 -#: js/widgets/grid/GridPanel.js:1038
 -msgid "No data to display"
++#: js/widgets/persistentfilter/PickerPanel.js:299
 +msgid "Delete Favorite"
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:302
 -#: js/widgets/grid/GridPanel.js:1060
 -msgid "Displaying records {0} - {1} of {2}"
++#: 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:1061
 -msgid "No {0} to display"
++#: js/widgets/persistentfilter/PickerPanel.js:309
 +msgid "Overwrite Favorite"
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:325
 -#: js/widgets/grid/GridPanel.js:1303
 -msgid "New..."
++#: 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:1322
 -msgid "Add to..."
++#: 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:1370
 -#: js/widgets/relation/GenericPickerGridPanel.js:453
 -#: js/widgets/dialog/AttachmentsGridPanel.js:104
 -msgid "Creation Time"
++#: js/widgets/persistentfilter/PickerPanel.js:364
 +msgid "Overwrite?"
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:363
 -#: 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:364
 +#, python-brace-format
 +msgid "Do you want to overwrite the favorite \"{0}\"?"
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:365
 -#: js/widgets/grid/GridPanel.js:1372
 -msgid "Last Modified Time"
++#: js/widgets/persistentfilter/PickerPanel.js:366
 +#, python-brace-format
 +msgid "Overwriting Favorite \"{0}\""
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:386
 -#: js/widgets/grid/GridPanel.js:1373
 -msgid "Last Modified By"
++#: js/widgets/persistentfilter/PickerPanel.js:387
 +msgid "Could not save Favorite"
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:386
 -#: js/widgets/grid/GridPanel.js:1735
 -msgid "Not Allowed"
++#: js/widgets/persistentfilter/PickerPanel.js:387
 +msgid "Your current view does not support favorites"
  msgstr ""
  
 -#: js/widgets/grid/GridPanel.js:1736
 -msgid "You are not allowed to delete all pages at once"
 +#: js/widgets/persistentfilter/PickerPanel.js:395
 +msgid "Create Favorite"
  msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:417
 -#: 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/persistentfilter/PickerPanel.js:421
 +#, python-brace-format
 +msgid "Saving Favorite \"{0}\""
 +msgstr ""
  
- #: js/widgets/persistentfilter/PickerPanel.js:593
 -#: js/widgets/grid/GridPanel.js:1804 js/widgets/dialog/EditDialog.js:829
 -msgid "Deleting {0}"
++#: js/widgets/persistentfilter/PickerPanel.js:621
 +msgid "(shared)"
  msgstr ""
  
 -#: js/widgets/grid/GridPanel.js:1804
 -msgid " ... This may take a long time!"
 +#: js/widgets/grid/FilterModel.js:180
 +msgid "today"
  msgstr ""
  
 -#: js/widgets/grid/ForeignRecordFilter.js:61
 -msgid "Edit definition"
 +#: js/widgets/grid/FilterModel.js:181
 +msgid "yesterday"
  msgstr ""
  
 -#: js/widgets/grid/ForeignRecordFilter.js:71
 -msgid "Start definition"
 +#: js/widgets/grid/FilterModel.js:182
 +msgid "this week"
  msgstr ""
  
 -#: js/widgets/grid/ForeignRecordFilter.js:111
 -msgid "Related to"
 +#: js/widgets/grid/FilterModel.js:183
 +msgid "last week"
  msgstr ""
  
 -#: 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/grid/FilterModel.js:184
 +msgid "the week before last"
 +msgstr ""
  
 -#: js/widgets/relation/FilterModel.js:76
 -msgid "Defined by ..."
 +#: js/widgets/grid/FilterModel.js:185 js/widgets/grid/MonthFilter.js:121
 +msgid "this month"
  msgstr ""
  
 -#: js/widgets/relation/FilterModel.js:119
 -msgid "Define ..."
 +#: js/widgets/grid/FilterModel.js:186 js/widgets/grid/MonthFilter.js:122
 +msgid "last month"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:126
 -msgid "Edit record"
 +#: js/widgets/grid/FilterModel.js:187
 +msgid "last three months"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:162
 -msgid "Sibling"
 +#: js/widgets/grid/FilterModel.js:188
 +msgid "last six months"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:163
 -msgid "Parent"
 +#: js/widgets/grid/FilterModel.js:189
 +msgid "anytime"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:164
 -msgid "Child"
 +#: js/widgets/grid/FilterModel.js:190 js/widgets/grid/MonthFilter.js:123
 +msgid "this quarter"
  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:191 js/widgets/grid/MonthFilter.js:124
 +msgid "last quarter"
  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:192 js/widgets/grid/MonthFilter.js:125
 +msgid "this year"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:291
 -msgid "No Dialog"
 +#: js/widgets/grid/FilterModel.js:193 js/widgets/grid/MonthFilter.js:126
 +msgid "last year"
  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:204
 +msgid "tomorrow"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:448
 -msgid "Record"
 +#: js/widgets/grid/FilterModel.js:205
 +msgid "next week"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:450
 -msgid "Remark"
 +#: js/widgets/grid/FilterModel.js:206
 +msgid "next month"
  msgstr ""
  
 -#: js/widgets/relation/GenericPickerGridPanel.js:451
 -msgid "Dependency"
 +#: js/widgets/grid/FilterModel.js:207
 +msgid "next quarter"
  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:208
 +msgid "next year"
  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:224
 +msgid "contains"
  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:225
 +msgid "reg. exp."
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:43 js/widgets/tree/ContextMenu.js:265
 -msgid "Rename {0}"
 +#: js/widgets/grid/FilterModel.js:227
 +msgid "is equal to without (-, )"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:61
 -msgid "Manage {0} Permissions"
 +#: js/widgets/grid/FilterModel.js:228
 +msgid "is greater than"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:69
 -msgid "{0} Properties"
 +#: js/widgets/grid/FilterModel.js:229
 +msgid "is less than"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:78
 -msgid "Set {0} color"
 +#: js/widgets/grid/FilterModel.js:230
 +msgid "is not"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:92
 -msgid "Reload {0}"
 +#: js/widgets/grid/FilterModel.js:231
 +msgid "one of"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:109
 -msgid "Edit Properties"
 +#: js/widgets/grid/FilterModel.js:232
 +msgid "none of"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:124
 -#: js/widgets/dialog/AttachmentsGridPanel.js:131
 -msgid "Download"
 +#: js/widgets/grid/FilterModel.js:233
 +msgid "is before"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:185
 -msgid "New {0}"
 +#: js/widgets/grid/FilterModel.js:234
 +msgid "is after"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:185
 -msgid "Please enter the name of the new {0}:"
 +#: js/widgets/grid/FilterModel.js:235
 +msgid "is within"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:188
 -msgid "No {0} added"
 +#: js/widgets/grid/FilterModel.js:236
 +msgid "is in week no."
  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:237
 +msgid "starts with"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:191
 -msgid "Creating {0}..."
 +#: js/widgets/grid/FilterModel.js:238
 +msgid "ends with"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:266
 -msgid "Please enter the new name of the {0}:"
 +#: js/widgets/grid/FilterModel.js:239
 +msgid "defined by"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:272
 -msgid "Not renamed {0}"
 +#: js/widgets/grid/FilterModel.js:409
 +msgid "Search Account ..."
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:346
 -msgid "Do you really want to delete the {0} \"{1}\"?"
 +#: js/widgets/grid/RendererManager.js:54
 +msgid "has notes"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:457
 -msgid "Manage Permissions for {0} \"{1}\""
 +#: js/widgets/grid/RendererManager.js:57
 +msgid "has relations"
  msgstr ""
  
 -#: js/widgets/tree/ContextMenu.js:481
 -msgid "Properties for {0} \"{1}\""
 +#: js/widgets/grid/FilterToolbar.js:92 js/widgets/grid/FilterToolbar.js:595
 +msgid "Show"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:223
 -msgid "Choose File and Format"
 +#: js/widgets/grid/FilterToolbar.js:178
 +msgid "add new filter"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:232
 -msgid "Choose Import File"
 +#: js/widgets/grid/FilterToolbar.js:184
 +msgid "reset all filters"
  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/FilterToolbar.js:190
 +msgid "start search"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:240
 -msgid "Select file containing your {0}"
 +#: js/widgets/grid/FilterToolbar.js:198
 +msgid "save as favorite"
  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/FilterToolbar.js:205
 +msgid "Load a favorite"
  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/FilterToolbar.js:370
 +msgid "select a field"
  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/FilterToolbar.js:408
 +msgid "Delete this filter"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:262
 -msgid "Please select the import format of the file you want to upload"
 +#: js/widgets/grid/FilterPanel.js:78
 +msgid "Attention: There are more filters active!"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:283 js/widgets/dialog/ImportDialog.js:315
 -msgid "Download example file"
 +#: js/widgets/grid/FilterPanel.js:261
 +#: js/widgets/grid/FilterToolbarQuickFilterPlugin.js:181
 +msgid "show details"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:286
 -msgid "Import description"
 +#: js/widgets/grid/FilterPanel.js:262
 +#: js/widgets/grid/FilterToolbarQuickFilterPlugin.js:182
 +msgid "Always show advanced filters"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:336
 -msgid "Set Import Options"
 +#: js/widgets/grid/FilterPanel.js:511
 +#, python-brace-format
 +msgid "Criteria {0}"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:344
 -msgid "Select {0} to add you {1} to:"
 +#: js/widgets/grid/PickerGridPanel.js:162
 +msgid "Remove record"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:396
 -msgid "Checking Import"
 +#: js/widgets/grid/PickerGridPanel.js:304
 +msgid "Search for records ..."
  msgstr ""
  
- #: js/widgets/grid/FileUploadGrid.js:68 js/Models.js:476
 -#: js/widgets/dialog/ImportDialog.js:425
 -msgid "Resolve Conflicts"
++#: 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:434
 -msgid "There are {0} {1} that might already exist."
 +#: 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:441
 -msgid "Conflict"
 +#: js/widgets/grid/FileUploadGrid.js:179
 +#, python-brace-format
 +msgid "Remove {0}"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:442
 -msgid "First Conflict"
 +#: js/widgets/grid/FileUploadGrid.js:283
 +msgid "name"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:443
 -msgid "Previous Conflict"
 +#: js/widgets/grid/FileUploadGrid.js:290
 +msgid "size"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:444
 -msgid "Next Conflict"
 +#: js/widgets/grid/FileUploadGrid.js:297
 +msgid "type"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:445
 -msgid "Last Conflict"
 +#: js/widgets/grid/MonthFilter.js:34
 +msgid "Month"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:451
 -msgid "Conflict is resolved"
 +#: 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:456
 -msgid "Resolve all conflicts"
 +#: js/widgets/grid/FilterStructureTreePanel.js:37
 +#: js/widgets/grid/FilterStructureTreePanel.js:51
 +msgid "or alternatively"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:550
 -msgid "Processing Conflict Data"
 +#: js/widgets/grid/FilterStructureTreePanel.js:55
 +msgid "Add alternative filter"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:575 js/widgets/dialog/ImportDialog.js:595
 -msgid "No conflict to resolve"
 +#: js/widgets/grid/FilterStructureTreePanel.js:61
 +msgid "Remove Filter"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:594
 -msgid "(This is record {0} in your import file)"
 +#: js/widgets/grid/GridPanel.js:323
 +#, python-brace-format
 +msgid ""
 +"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/dialog/ImportDialog.js:619
 -msgid "No Detail Informations"
 +#: js/widgets/grid/GridPanel.js:324
 +#, 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/dialog/ImportDialog.js:624
 -#: js/widgets/dialog/MultipleEditResultSummary.js:213
 -msgid "Summary"
 +#: js/widgets/grid/GridPanel.js:326 js/widgets/grid/GridPanel.js:552
 +#: js/widgets/grid/GridPanel.js:553 js/widgets/grid/GridPanel.js:554
 +#, python-brace-format
 +msgid "Edit {0}"
 +msgid_plural "Edit {0}"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/widgets/grid/GridPanel.js:586
 +msgid "Print Page"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:653
 -#: js/widgets/dialog/MultipleEditResultSummary.js:192
 -msgid "Index"
 +#: js/widgets/grid/GridPanel.js:1071
 +msgid "No data to display"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:669
 -msgid "Importing {0}"
 +#: js/widgets/grid/GridPanel.js:1093
 +#, python-brace-format
 +msgid "Displaying records {0} - {1} of {2}"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:700
 -msgid "{0} records had failures and where discarded."
 +#: js/widgets/grid/GridPanel.js:1094
 +#, python-brace-format
 +msgid "No {0} to display"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:742
 -msgid "In total we found {0} records in your import file."
 +#: js/widgets/grid/GridPanel.js:1148
 +msgid "Records"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:745
 -msgid "{0} of them will be added as new records into: \"{1}\"."
 +#: js/widgets/grid/GridPanel.js:1352
 +msgid "New..."
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:752
 -msgid "{0} of them where identified as duplicates."
 +#: js/widgets/grid/GridPanel.js:1371
 +msgid "Add to..."
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:755
 -msgid ""
 -"From the identified duplicates {0} will be merged into the existing records."
 +#: js/widgets/grid/GridPanel.js:1421
 +msgid "Last Modified Time"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:759
 -msgid "From the identified duplicates {0} will be discarded."
 +#: js/widgets/grid/GridPanel.js:1422
 +msgid "Last Modified By"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:775
 -msgid "All records will be tagged with: \"{0}\" so you can find them easily."
 +#: js/widgets/grid/GridPanel.js:1784
 +msgid "Not Allowed"
  msgstr ""
  
 -#: js/widgets/dialog/ImportDialog.js:786
 -msgid "{0} records have failures and will be discarded."
 +#: js/widgets/grid/GridPanel.js:1785
 +msgid "You are not allowed to delete all pages at once"
  msgstr ""
  
 -#: js/widgets/dialog/AdminPanel.js:59
 -msgid "Change settings for application {0}"
 -msgstr ""
 +#: js/widgets/grid/GridPanel.js:1808
 +#, 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/dialog/AdminPanel.js:107
 -msgid "Defaults"
 +#: js/widgets/grid/GridPanel.js:1853
 +msgid "... This may take a long time!"
  msgstr ""
  
 -#: js/widgets/dialog/LinkPanel.js:46
 -msgid "Links"
 -msgstr ""
 +#: 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/dialog/AlarmPanel.js:34
 -msgid "Alarms"
 +#: js/widgets/grid/QuickaddGridPanel.js:91
 +msgid "Remove"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:37
 -msgid "0 minutes before"
 +#: js/widgets/grid/ForeignRecordFilter.js:61
 +msgid "Edit definition"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:38
 -msgid "5 minutes before"
 +#: js/widgets/grid/ForeignRecordFilter.js:71
 +msgid "Start definition"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:39
 -msgid "15 minutes before"
 +#: js/widgets/grid/ForeignRecordFilter.js:111
 +msgid "Related to"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:40
 -msgid "30 minutes before"
 -msgstr ""
 +#: js/data/Record.js:203
 +msgid "Task"
 +msgid_plural "Tasks"
 +msgstr[0] ""
 +msgstr[1] ""
  
 -#: js/widgets/dialog/AlarmPanel.js:41
 -msgid "1 hour before"
 +#: js/data/Record.js:207
 +msgid "to do list"
 +msgid_plural "to do lists"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/AboutDialog.js:41 js/MainMenu.js:138
 +#, python-brace-format
 +msgid "About {0}"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:42
 -msgid "2 hours before"
 +#: js/AboutDialog.js:56 js/MainMenu.js:186
 +#, python-brace-format
 +msgid "Learn more about {0}"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:43
 -msgid "12 hours before"
 +#: js/AboutDialog.js:71
 +msgid "Released under different"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:44
 -msgid "1 day before"
 +#: js/AboutDialog.js:72
 +msgid "Open Source Licenses"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:45
 -msgid "2 days before"
 +#: js/AboutDialog.js:79
 +msgid "with the help of our"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:46
 -msgid "Custom Datetime"
 +#: js/AboutDialog.js:80
 +msgid "Contributors"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:58
 -msgid "Alarm Time"
 +#: js/MainScreen.js:205
 +msgid "Your password expired. Please enter a new user password:"
  msgstr ""
  
 -#: js/widgets/dialog/AlarmPanel.js:170
 -msgid "{0} minutes before"
 +#: js/PasswordChangeDialog.js:32
 +#, python-brace-format
 +msgid "Change Password For \"{0}\""
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:87
 -#: js/widgets/dialog/MultipleEditResultSummary.js:86
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:69
 -msgid "OK"
 +#: js/PasswordChangeDialog.js:48
 +msgid "Old Password"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:134
 -msgid "Merging Records..."
 +#: js/PasswordChangeDialog.js:52
 +msgid "New Password"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:173
 -msgid "Merge Failed"
 +#: js/PasswordChangeDialog.js:56
 +msgid "Repeat new Password"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:173
 -msgid "The merge succeeded, but the duplicate {0} could not be deleted."
 +#: js/PasswordChangeDialog.js:75
 +msgid "Please Wait!"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:212
 -msgid "Merge {0}, prefer First"
 +#: js/PasswordChangeDialog.js:76
 +msgid "changing password..."
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:213
 -msgid "Merge {0}, prefer Second"
 +#: js/PasswordChangeDialog.js:87
 +msgid "Success"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:223
 -msgid "First {0}"
 +#: js/PasswordChangeDialog.js:88
 +msgid "Your password has been changed."
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:224
 -msgid "Second {0}"
 +#: js/PasswordChangeDialog.js:111
 +msgid "The new passwords mismatch, please correct them."
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateMergeDialog.js:225
 -msgid "Final {0}"
 +#: 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/PreferencesPanel.js:185
 -msgid "There are no preferences for this application."
 +#: js/ux/Percentage.js:193
 +msgid "(paused)"
  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/ux/form/ImageField.js:76
 +msgid "Loading"
  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/ux/form/ImageField.js:78
 +msgid "Click to edit"
  msgstr ""
  
 -#: js/widgets/dialog/FileListDialog.js:93
 -msgid "No"
 +#: js/ux/form/ImageField.js:146
 +msgid "Image Failed"
  msgstr ""
  
 -#: js/widgets/dialog/FileListDialog.js:102
 -msgid "Yes"
 +#: js/ux/form/ImageField.js:146
 +msgid "Could not load image. Please notify your Administrator"
  msgstr ""
  
 -#: js/widgets/dialog/AttachmentsGridPanel.js:63
 -msgid "Attachments"
 +#: js/ux/form/ImageField.js:168
 +msgid "Not An Image"
  msgstr ""
  
 -#: js/widgets/dialog/AttachmentsGridPanel.js:64
 -msgid "Attachment"
 +#: js/ux/form/ImageField.js:168
 +msgid "Please select an image file (gif/png/jpeg)"
  msgstr ""
  
 -#: js/widgets/dialog/AttachmentsGridPanel.js:94
 -msgid "Size"
 +#: js/ux/form/ImageField.js:211
 +msgid "Could not upload image. Please notify your Administrator"
  msgstr ""
  
 -#: js/widgets/dialog/AttachmentsGridPanel.js:102
 -msgid "Content Type"
 +#: js/ux/form/ImageField.js:224
 +msgid "Change Image"
  msgstr ""
  
 -#: js/widgets/dialog/CredentialsDialog.js:84
 -msgid "Please enter your credentials"
 +#: js/ux/form/ImageField.js:232 js/ux/form/ImageField.js:250
 +msgid "Crop Image"
  msgstr ""
  
 -#: js/widgets/dialog/ExceptionHandlerDialog.js:217
 -msgid "{1} - Exception {0}"
 +#: js/ux/form/ImageField.js:256
 +msgid "Delete Image"
  msgstr ""
  
 -#: js/widgets/dialog/ExceptionHandlerDialog.js:219
 -msgid "{0} - Unknown Exception"
 +#: js/ux/form/ImageField.js:265
 +msgid "Show Original Image"
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesDialog.js:125
 -msgid "Admin Mode"
 +#: js/ux/form/RecordsComboBox.js:26
 +msgid "Software Version"
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesDialog.js:163
 -msgid "Applications"
 +#: js/ux/SearchField.js:44
 +msgid "enter searchfilter"
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesDialog.js:192
 -msgid "Edit Preferences"
 +#: js/ux/ConnectionStatus.js:56
 +msgid "online"
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesDialog.js:193
 -msgid "Loading ..."
 +#: js/ux/ConnectionStatus.js:57
 +msgid "offline"
  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/grid/PagingToolbar.js:57
 +#, python-brace-format
 +msgid "{0} selected"
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesDialog.js:277
 -msgid "Saving of preferences failed."
 +#: js/ux/grid/PagingToolbar.js:58
 +msgid "Unselect all"
  msgstr ""
  
 -#: js/widgets/dialog/EditDialog.js:602
 -msgid "Add New {0}"
 +#: js/ux/grid/PagingToolbar.js:59
 +#, python-brace-format
 +msgid "Select all pages ({0} records)"
  msgstr ""
  
 -#: js/widgets/dialog/EditDialog.js:604
 -msgid "Edit {0} \"{1}\""
 +#: js/ux/grid/PagingToolbar.js:60
 +msgid "Toggle selection"
  msgstr ""
  
 -#: js/widgets/dialog/EditDialog.js:674
 -msgid "Transferring {0}..."
 +#: js/LicenseScreen.js:35
 +msgid "License"
  msgstr ""
  
 -#: js/widgets/dialog/EditDialog.js:827
 -msgid "Do you really want to delete this {0}?"
 +#: js/common.js:235
 +msgid "Usage:&#160;"
  msgstr ""
  
 -#: js/widgets/dialog/EditDialog.js:839
 -msgid "Could not delete {0}."
 +#: js/common.js:273 js/common.js:311
 +msgid "No Information"
  msgstr ""
  
 -#: js/widgets/dialog/EditDialog.js:894
 -msgid "Resolve Duplicate {0} Suspicion"
 +#: js/common.js:360
 +#, python-brace-format
 +msgid "{0} minute"
 +msgid_plural "{0} minutes"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/common.js:361
 +#, python-brace-format
 +msgid "{0} hour"
 +msgid_plural "{0} hours"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/common.js:362
 +#, python-brace-format
 +msgid "{0} workday"
 +msgid_plural "{0} workdays"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/common.js:389
 +#, 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/MultipleEditResultSummary.js:146
 -msgid "You edited {0} {1}."
 +#: js/prototypeTranslations.js:20 js/prototypeTranslations.js:21
 +msgid "Outdent Text"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditResultSummary.js:149
 -msgid "{0} {1} have been updated properly."
 +#: js/prototypeTranslations.js:22 js/prototypeTranslations.js:23
 +msgid "Indent Text"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditResultSummary.js:149
 -msgid "{0} {1} has been updated properly."
 +#: js/prototypeTranslations.js:24 js/prototypeTranslations.js:25
 +msgid "Remove Formatting"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditResultSummary.js:152
 -msgid ""
 -"{0} {1} have invalid data after updating. These {1} have not been changed."
 +#: js/ExceptionHandler.js:169
 +msgid "Your session timed out. You need to login again."
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditResultSummary.js:152
 -msgid "{0} {1} has invalid data after updating. This {1} has not been changed."
 +#: js/ExceptionHandler.js:184
 +msgid "Insufficient Rights"
  msgstr ""
  
 -#: js/widgets/dialog/ExportDialog.js:48 js/widgets/container/GrantsGrid.js:51
 -#: js/Models.js:337
 -msgid "Export"
 -msgid_plural "Export"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/ExceptionHandler.js:185
 +msgid "Sorry, you are not permitted to perform this action"
 +msgstr ""
  
 -#: js/widgets/dialog/ExportDialog.js:84
 -msgid "Export {0} {1}"
 +#: js/ExceptionHandler.js:193
 +msgid "Not Found"
  msgstr ""
  
 -#: js/widgets/dialog/ExportDialog.js:111
 -msgid "Export definition"
 +#: 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."
  msgstr ""
  
 -#: js/widgets/dialog/ExportDialog.js:120
 -msgid "Select Export Definition ..."
 +#: js/ExceptionHandler.js:202
 +msgid "Concurrent Updates"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:341
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:465
 -msgid "Delete value from all selected records"
 +#: 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/MultipleEditDialogPlugin.js:448
 -msgid "Undo change for all selected records"
 +#: js/ExceptionHandler.js:211
 +msgid "Service Unavailable"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:523
 -msgid "Edit {0} {1}"
 +#: 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/MultipleEditDialogPlugin.js:582
 -msgid "Different Values"
 +#: js/ExceptionHandler.js:218
 +msgid "Server Message:"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:583
 -msgid ""
 -"This field has different values. Editing this field will overwrite the old "
 -"values."
 +#: js/ExceptionHandler.js:220
 +msgid "Invalid Data"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:680
 -msgid "Do you really want to change these {0} records?"
 +#: js/ExceptionHandler.js:221
 +msgid "Your input data is not valid. Please provide valid data."
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:683
 -msgid "Applying changes"
 +#: js/ExceptionHandler.js:239
 +msgid "Timeout"
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesTreePanel.js:67
 -msgid "General Preferences"
 +#: 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/PreferencesTreePanel.js:87
 -msgid "My Profile"
 +#: js/ExceptionHandler.js:248
 +msgid "No Response"
  msgstr ""
  
 -#: js/widgets/dialog/WizardPanel.js:173
 -msgid "Back"
 +#: 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/WizardPanel.js:180
 -msgid "Next"
 +#: js/ExceptionHandler.js:256
 +msgid "Out of Resources"
  msgstr ""
  
 -#: js/widgets/dialog/WizardPanel.js:194
 -msgid "Finish"
 +#: js/ExceptionHandler.js:257
 +msgid ""
 +"Sorry, the Server stated a \"memory exhausted\" condition. Please contact "
 +"your administrator."
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:41
 -msgid "The record you try to add might already exist."
 +#: js/ExceptionHandler.js:273
 +msgid "No Role Memberships"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:196
 -msgid "Field Group"
 +#: js/ExceptionHandler.js:274
 +msgid ""
 +"Your user account has no role memberships. Please contact your administrator."
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:210
 -msgid "My Value"
 +#: js/ExceptionHandler.js:289
 +msgid "Method Not Found / Insufficent Permissions"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:218
 -msgid "Existing Value"
 +#: js/ExceptionHandler.js:290
 +msgid ""
 +"You tried to access a function that is not available. Please reload your "
 +"browser, try again or contact your administrator."
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:226
 -msgid "Final Value"
 +#: js/ExceptionDialog.js:103 js/ExceptionDialog.js:126
 +msgid "Send Report"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:243
 -msgid "Action:"
 +#: js/ExceptionDialog.js:155
 +msgid "The last action you made was potentially not performed correctly."
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:259
 -msgid "Merge, keeping existing details"
 +#: 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/dialog/DuplicateResolveGridPanel.js:260
 -msgid "Merge, keeping my details"
 +#: js/ExceptionDialog.js:170
 +msgid "Send Contact Information"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:261
 -msgid "Keep existing record and discard mine"
 +#: js/ExceptionDialog.js:187
 +msgid "Details:"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:262
 -msgid "Keep both records"
 +#: js/ExceptionDialog.js:211
 +msgid "Sending report..."
  msgstr ""
  
 -#: js/widgets/TimezoneChooser.js:77
 -msgid "setting new timezone..."
 +#: js/ExceptionDialog.js:211
 +msgid "Please wait a moment"
  msgstr ""
  
 -#: js/widgets/customfields/EditDialogPlugin.js:155
 -msgid "General"
 +#: js/ExceptionDialog.js:260
 +msgid "Transmission Completed"
  msgstr ""
  
 -#: js/widgets/customfields/EditDialogPlugin.js:167
 -msgid "Custom Fields"
 +#: js/ExceptionDialog.js:261
 +msgid "Your report has been sent. Thanks for your contribution"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:153
 -msgid "Add a Note..."
 +#: js/ExceptionDialog.js:261
 +msgid "Please restart your browser now!"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:168 js/widgets/ActivitiesPanel.js:181
 -#: js/widgets/container/GrantsGrid.js:45
 -msgid "Add"
 +#: js/Container.js:123
 +#, python-brace-format
 +msgid "All {0}"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:168 js/widgets/ActivitiesPanel.js:491
 -msgid "Note"
 +#: js/Container.js:124
 +#, python-brace-format
 +msgid "Shared {0}"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:182 js/widgets/ActivitiesPanel.js:413
 -msgid "Add new note"
 +#: js/Container.js:125
 +#, python-brace-format
 +msgid "Other Users {0}"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:209 js/widgets/ActivitiesPanel.js:228
 -msgid "Notes"
 +#: js/Container.js:130
 +#, python-brace-format
 +msgid "My {0}"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:311
 -msgid "Enter new note:"
 +#: js/MainMenu.js:66
 +#, python-brace-format
 +msgid "User: {0}"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:356 js/widgets/ActivitiesPanel.js:412
 -msgid "Add Note"
 +#: js/MainMenu.js:112
 +msgid "Return to original user account"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:399
 -msgid "Add a {0} Note"
 +#: js/MainMenu.js:144
 +msgid "Help"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:493
 -msgid "Timestamp"
 +#: js/MainMenu.js:151
 +msgid "Debug Console (Ctrl + F11)"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:507
 -msgid "Displaying history records {0} - {1} of {2}"
 +#: js/MainMenu.js:164
 +msgid "Edit Profile"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:508
 -msgid "No history to display"
 +#: js/MainMenu.js:171
 +msgid "Change password"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:608
 -msgid "History"
 +#: js/MainMenu.js:178
 +msgid "Logout"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:620
 -msgid "Quick Search"
 +#: js/MainMenu.js:179
 +#, python-brace-format
 +msgid "Logout from {0}"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:621 js/widgets/ActivitiesPanel.js:622
 -msgid "Time"
 +#: js/MainMenu.js:196
 +msgid "Allow desktop notifications"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:624
 -msgid "User"
 +#: js/MainMenu.js:197
 +msgid "Request permissions for webkit desktop notifications."
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:121
 -msgid "My favorites"
 +#: js/MainMenu.js:207
 +msgid "Install web app"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:299
 -msgid "Delete Favorite"
 +#: js/MainMenu.js:208
 +msgid "Install Tine 2.0 as web app in your browser."
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:304
 -#: js/widgets/persistentfilter/PickerPanel.js:397
 -msgid "Edit Favorite"
 +#: js/MainMenu.js:263
 +msgid "Are you sure you want to logout?"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:309
 -msgid "Overwrite Favorite"
 +#: js/MainMenu.js:277
 +msgid "Logging you out..."
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:326
 -msgid "Do you really want to delete the favorite \"{0}\"?"
 +#: js/AppManager.js:208
 +msgid "Missing Applications"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:328
 -msgid "Deleting Favorite \"{0}\""
 +#: js/AppManager.js:209
 +msgid ""
 +"There are no applications enabled for you. Please contact your administrator."
  msgstr ""
  
- #: js/Models.js:273
 -#: js/widgets/persistentfilter/PickerPanel.js:364
 -msgid "Overwrite?"
++#: js/Models.js:274
 +msgid "Alarm"
 +msgid_plural "Alarms"
 +msgstr[0] ""
 +msgstr[1] ""
 +
- #: js/Models.js:311
++#: js/Models.js:312
 +msgid "Import"
 +msgid_plural "Imports"
 +msgstr[0] ""
 +msgstr[1] ""
 +
- #: js/Models.js:374
++#: js/Models.js:375
 +msgid "Credentials"
 +msgid_plural "Credentials"
 +msgstr[0] ""
 +msgstr[1] ""
 +
- #: js/Models.js:422
++#: js/Models.js:423
 +msgid "Department"
 +msgid_plural "Departments"
 +msgstr[0] ""
 +msgstr[1] ""
 +
- #: js/Models.js:448
++#: js/Models.js:449
 +msgid "Config"
 +msgid_plural "Configs"
 +msgstr[0] ""
 +msgstr[1] ""
 +
- #: js/Models.js:448
++#: js/Models.js:449
 +msgid "Configs"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:364
 -msgid "Do you want to overwrite the favorite \"{0}\"?"
 +#: js/ApplicationStarter.js:539
 +msgid "New "
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:366
 -msgid "Overwriting Favorite \"{0}\""
 +#: js/CreditsScreen.js:36
 +msgid "Credits"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:387
 -msgid "Could not save Favorite"
 +#: Exception/PasswordPolicyViolation.php:22
 +msgid "Password Policy Violation"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:387
 -msgid "Your current view does not support favorites"
 +#: Exception/MonthFormat.php:26
 +msgid "Wrong month format!"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:395
 -msgid "Create Favorite"
 +#: Exception/MonthFormat.php:31
 +msgid "The month must have the format YYYY-MM!"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:421
 -msgid "Saving Favorite \"{0}\""
 +#: Exception/InvalidRelationConstraints.php:26
 +msgid "Invalid Relations"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:621
 -msgid "(shared)"
 +#: Exception/InvalidRelationConstraints.php:36
 +msgid ""
 +"You tried to create a relation which is forbidden by the constraints config "
 +"of one of the models."
  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:164 ModelConfiguration.php:252
 +msgid "Group"
  msgstr ""
  
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:274
 -#: js/widgets/container/GrantsGrid.js:49
 -msgid "Delete"
 +#: ModelConfiguration.php:213
 +msgid "New Car"
  msgstr ""
  
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:275
 -msgid "The grant to delete this filter"
 +#: ModelConfiguration.php:379 ModelConfiguration.php:382
 +msgid "Banking Information"
  msgstr ""
  
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:283
 -msgid "Permissions"
 +#: ModelConfiguration.php:383
 +msgid "Private Information"
  msgstr ""
  
- #: PersistentFilter.php:139
 -#: js/widgets/CountryCombo.js:34
 -msgid "Select a country..."
++#: PersistentFilter.php:152
 +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 ""
  
 -#: js/widgets/container/TreePanel.js:547
 -msgid "{0} grant is required for desired action"
 +#: Config.php:302
 +msgid "System IMAP"
  msgstr ""
  
 -#: js/widgets/container/TreePanel.js:548
 -msgid "Insufficient Grants"
 +#: Config.php:304
 +msgid "System IMAP server configuration."
  msgstr ""
  
 -#: js/widgets/container/GrantsGrid.js:44
 -msgid "The grant to read records of this container"
 +#: Config.php:313
 +msgid "System SMTP"
  msgstr ""
  
 -#: js/widgets/container/GrantsGrid.js:46
 -msgid "The grant to add records to this container"
 +#: Config.php:315
 +msgid "System SMTP server configuration."
  msgstr ""
  
 -#: js/widgets/container/GrantsGrid.js:48
 -msgid "The grant to edit records in this container"
 +#: Config.php:324
 +msgid "System SIEVE"
  msgstr ""
  
 -#: js/widgets/container/GrantsGrid.js:50
 -msgid "The grant to delete records in this container"
 +#: Config.php:326
 +msgid "System SIEVE server configuration."
  msgstr ""
  
 -#: js/widgets/container/GrantsGrid.js:52
 -msgid "The grant to export records from this container"
 +#: Config.php:335
 +msgid "Authentication Backend"
  msgstr ""
  
 -#: js/widgets/container/GrantsGrid.js:53
 -msgid "Sync"
 +#: Config.php:337
 +msgid "Backend adapter for user authentication."
  msgstr ""
  
 -#: js/widgets/container/GrantsGrid.js:54
 -msgid "The grant to synchronise records with this container"
 +#: Config.php:345
 +msgid "Authentication Configuration"
  msgstr ""
  
 -#: js/widgets/container/GrantsGrid.js:55
 -msgid "Admin"
 +#: Config.php:347
 +msgid "Authentication backend configuration."
  msgstr ""
  
 -#: js/widgets/container/GrantsGrid.js:56
 -msgid "The grant to administrate this container"
 +#: Config.php:356
 +msgid "User Backend"
  msgstr ""
  
 -#: js/widgets/container/GrantsGrid.js:58
 -msgid "Free Busy"
 +#: Config.php:358
 +msgid "Backend adapter for user data."
  msgstr ""
  
 -#: js/widgets/container/GrantsGrid.js:59
 -msgid "The grant to access free busy information of events in this calendar"
 +#: Config.php:366
 +msgid "User Configuration"
  msgstr ""
  
 -#: js/widgets/container/GrantsGrid.js:60
 -msgid "Private"
 +#: Config.php:368
 +msgid "User backend configuration."
  msgstr ""
  
 -#: js/widgets/container/GrantsGrid.js:61
 -msgid "The grant to access records marked as private in this container"
 +#: Config.php:377
 +msgid "Cronuser ID"
  msgstr ""
  
 -#: js/widgets/form/ConfigPanel.js:113
 -msgid "Configuration Problem"
 +#: Config.php:379
 +msgid "User ID of the cron user."
  msgstr ""
  
 -#: js/widgets/form/ConfigPanel.js:134
 -msgid "Invalid configuration"
 +#: Config.php:387
 +msgid "Title Postfix"
  msgstr ""
  
 -#: js/widgets/form/ConfigPanel.js:158
 -msgid "Transferring Configuration..."
 +#: Config.php:389
 +msgid "Postfix string appended to the title of this installation."
  msgstr ""
  
 -#: js/widgets/form/ConfigPanel.js:254
 -msgid "Save config"
 +#: Config.php:397
 +msgid "Redirect URL"
  msgstr ""
  
 -#: js/widgets/form/ConfigPanel.js:264
 -msgid "Reload config"
 +#: Config.php:399
 +msgid "Redirect to this URL after logout."
  msgstr ""
  
 -#: js/widgets/form/FileUploadButton.js:65
 -msgid "Wrong File Type"
 +#: Config.php:407
 +msgid "Redirect to Referrer"
  msgstr ""
  
 -#: js/widgets/form/FileUploadButton.js:65
 -msgid "Please select a file with one of the following extensions:"
 +#: Config.php:409
 +msgid "Redirect to referrer after logout."
  msgstr ""
  
 -#: js/widgets/form/RecordPickerManager.js:48
 -#: js/widgets/form/RecordPickerComboBox.js:119
 -msgid "Searching..."
 +#: Config.php:417
 +msgid "Redirect Always"
  msgstr ""
  
 -#: js/ExceptionDialog.js:103 js/ExceptionDialog.js:126
 -msgid "Send Report"
 +#: Config.php:419
 +msgid "Redirect to configured redirect URL also for login."
  msgstr ""
  
 -#: js/ExceptionDialog.js:155
 -msgid "The last action you made was potentially not performed correctly."
 +#: Config.php:427
 +msgid "Allowed Origins"
  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."
 +#: Config.php:429
 +msgid "Allowed Origins for the JSON API."
  msgstr ""
  
 -#: js/ExceptionDialog.js:170
 -msgid "Send Contact Information"
 +#: Config.php:437
 +msgid "Accepted Terms Version"
  msgstr ""
  
 -#: js/ExceptionDialog.js:187
 -msgid "Details:"
 +#: Config.php:439
 +msgid "Accepted version number of the terms and conditions document."
  msgstr ""
  
 -#: js/ExceptionDialog.js:211
 -msgid "Sending report..."
 +#: Config.php:447
 +msgid "Use Geolocation Services"
  msgstr ""
  
 -#: js/ExceptionDialog.js:211
 -msgid "Please wait a moment"
 +#: Config.php:449
 +msgid "Use of external Geolocation services is allowed."
  msgstr ""
  
 -#: js/ExceptionDialog.js:260
 -msgid "Transmission Completed"
 +#: Config.php:457
 +msgid "Disable LDAP TLS Certificate Check"
  msgstr ""
  
 -#: js/ExceptionDialog.js:261
 -msgid "Your report has been sent. Thanks for your contribution"
 +#: Config.php:459
 +msgid "LDAP TLS Certificate should not be checked"
  msgstr ""
  
 -#: js/ExceptionDialog.js:261
 -msgid "Please restart your browser now!"
 +#: Config.php:468
 +msgid "Configure hook class for user sync"
  msgstr ""
  
 -#: js/MainScreen.js:200
 -msgid "Your password expired. Please enter a new user password:"
 +#: Config.php:470
 +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:478
 +msgid "IP Session Validator"
  msgstr ""
  
 -#: js/prototypeTranslations.js:22 js/prototypeTranslations.js:23
 -msgid "Indent Text"
 +#: Config.php:480
 +msgid "Destroy session if the users IP changes."
  msgstr ""
  
 -#: js/prototypeTranslations.js:24 js/prototypeTranslations.js:25
 -msgid "Remove Formatting"
 +#: Config.php:488
 +msgid "UA Session Validator"
  msgstr ""
  
 -#: 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:490
 +msgid "Destroy session if the users user agent string changes."
  msgstr ""
  
 -#: js/ux/Percentage.js:193
 -msgid "(paused)"
 +#: Config.php:498
 +msgid "Files Directory"
  msgstr ""
  
 -#: js/ux/SearchField.js:44
 -msgid "enter searchfilter"
 +#: Config.php:500
 +msgid "Directory with web server write access for user files."
  msgstr ""
  
 -#: js/ux/grid/PagingToolbar.js:57
 -msgid "{0} selected"
 +#: Config.php:508 Config.php:510
 +msgid "Reuse last username logged"
  msgstr ""
  
 -#: js/ux/grid/PagingToolbar.js:58
 -msgid "Unselect all"
 +#: Config.php:518 Config.php:520
 +msgid "User may change password"
  msgstr ""
  
 -#: js/ux/grid/PagingToolbar.js:59
 -msgid "Select all pages ({0} records)"
 +#: Config.php:529 Config.php:531
 +msgid "Enable password policy"
  msgstr ""
  
 -#: js/ux/grid/PagingToolbar.js:60
 -msgid "Toggle selection"
 +#: Config.php:539
 +msgid "Only ASCII"
  msgstr ""
  
 -#: js/ux/ConnectionStatus.js:56
 -msgid "online"
 +#: Config.php:541
 +msgid "Only ASCII characters are allowed in passwords."
  msgstr ""
  
 -#: js/ux/ConnectionStatus.js:57
 -msgid "offline"
 +#: Config.php:549
 +msgid "Minimum length"
  msgstr ""
  
 -#: js/ux/form/RecordsComboBox.js:26
 -msgid "Software Version"
 +#: Config.php:551
 +msgid "Minimum password length"
  msgstr ""
  
 -#: js/ux/form/ImageField.js:76
 -msgid "Loading"
 +#: Config.php:559
 +msgid "Minimum word chars"
  msgstr ""
  
 -#: js/ux/form/ImageField.js:78
 -msgid "Click to edit"
 +#: Config.php:561
 +msgid "Minimum word chars in password"
  msgstr ""
  
 -#: js/ux/form/ImageField.js:146
 -msgid "Image Failed"
 +#: Config.php:569
 +msgid "Minimum uppercase chars"
  msgstr ""
  
 -#: js/ux/form/ImageField.js:146
 -msgid "Could not load image. Please notify your Administrator"
 +#: Config.php:571
 +msgid "Minimum uppercase chars in password"
  msgstr ""
  
 -#: js/ux/form/ImageField.js:168
 -msgid "Not An Image"
 +#: Config.php:579
 +msgid "Minimum special chars"
  msgstr ""
  
 -#: js/ux/form/ImageField.js:168
 -msgid "Please select an image file (gif/png/jpeg)"
 +#: Config.php:581
 +msgid "Minimum special chars in password"
  msgstr ""
  
 -#: js/ux/form/ImageField.js:211
 -msgid "Could not upload image. Please notify your Administrator"
 +#: Config.php:589
 +msgid "Minimum numbers"
  msgstr ""
  
 -#: js/ux/form/ImageField.js:224
 -msgid "Change Image"
 +#: Config.php:591
 +msgid "Minimum numbers in password"
  msgstr ""
  
 -#: js/ux/form/ImageField.js:232 js/ux/form/ImageField.js:250
 -msgid "Crop Image"
 +#: Config.php:599
 +msgid "Forbid part of username"
  msgstr ""
  
 -#: js/ux/form/ImageField.js:256
 -msgid "Delete Image"
 +#: Config.php:601
 +msgid "Forbid part of username in password"
  msgstr ""
  
 -#: js/ux/form/ImageField.js:265
 -msgid "Show Original Image"
 +#: Config.php:609
 +msgid "Automatic bugreports"
  msgstr ""
  
 -#: js/Models.js:273
 -msgid "Alarm"
 -msgid_plural "Alarms"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: Config.php:611
 +msgid ""
 +"Always send bugreports, even on timeouts and other exceptions / failures."
 +msgstr ""
  
 -#: js/Models.js:311
 -msgid "Import"
 -msgid_plural "Imports"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: Config.php:619
 +msgid "Last sessions cleanup run"
 +msgstr ""
  
 -#: js/Models.js:374
 -msgid "Credentials"
 -msgid_plural "Credentials"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: Config.php:621
 +msgid "Stores the timestamp of the last sessions cleanup task run."
 +msgstr ""
  
 -#: js/Models.js:422
 -msgid "Department"
 -msgid_plural "Departments"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: Config.php:629
 +msgid "Maximum login failures"
 +msgstr ""
  
 -#: js/Models.js:448
 -msgid "Config"
 -msgid_plural "Configs"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: Config.php:631
 +msgid "Maximum allowed login failures before blocking account"
 +msgstr ""
  
 -#: js/Models.js:448
 -msgid "Configs"
 +#: Config.php:639
 +msgid "Disable Anyone Account"
  msgstr ""
  
 -#: views/update.php:24
 -msgid "Tine 2.0 needs to be updated or is not installed yet."
 +#: Config.php:641
 +msgid "Disallow anyone account in grant configurations"
  msgstr ""
  
 -#: views/update.php:25
 -msgid "Please wait or contact your administrator"
 +#: Config.php:649
 +msgid "Alarms sent each job"
  msgstr ""
  
 -#: Exception.php:49
 -msgid "Exception ({0})"
 +#: Config.php:651
 +msgid ""
 +"Allows to configure the maximum number of alarm notifications in each run of "
 +"sendPendingAlarms (0 = no limit)"
  msgstr ""
  
 -#: Container.php:684
 -#, python-format
 -msgid "%s's personal container"
 +#: Config.php:659
 +msgid "Role change allowed"
  msgstr ""
  
 -#: Container.php:1532
 +#: Config.php:661
  msgid ""
 -"You are not allowed to delete this Container. Please define another "
 -"container as the default addressbook for internal contacts!"
 +"Allows to configure which user is allowed to switch to another users account"
  msgstr ""