Merge branch 'pu/2013.10-longrun'
authorPhilipp Schüle <p.schuele@metaways.de>
Wed, 10 Sep 2014 11:17:20 +0000 (13:17 +0200)
committerPhilipp Schüle <p.schuele@metaways.de>
Wed, 10 Sep 2014 11:17:20 +0000 (13:17 +0200)
Conflicts:
tests/tine20/Sales/JsonTest.php
tine20/Calendar/Model/Rrule.php
tine20/Sales/Controller/NumberableAbstract.php
tine20/Tinebase/Controller/Record/Abstract.php
tine20/Tinebase/Frontend/Json.php
tine20/Tinebase/Frontend/Json/Abstract.php
tine20/Tinebase/WebDav/Root.php
tine20/Tinebase/translations/de.po
tine20/Tinebase/translations/template.pot
tine20/composer.lock

Change-Id: I9105c48440ae5f0341528122abbfdc3b627cd2db

1  2 
tests/tine20/Calendar/Backend/SqlTest.php
tests/tine20/Calendar/Controller/RecurTest.php
tests/tine20/Calendar/JsonTests.php
tine20/Calendar/Backend/Sql.php
tine20/Calendar/Model/Rrule.php
tine20/Sales/Setup/Update/Release8.php
tine20/Tinebase/Backend/Sql/Command/Mysql.php
tine20/Tinebase/Frontend/Json.php
tine20/Tinebase/User.php
tine20/Tinebase/translations/template.pot

@@@ -102,10 -100,10 +100,10 @@@ class Calendar_Backend_SqlTest extends 
                  'dtend'        => '2009-04-02 23:59:59',
                  'summary'      => 'non recur event ending before search period => should _not_ be found',
                  'attendee'     => $this->_getAttendee(),
 -                'container_id' => $this->_testCalendar->getId(),
 +                'container_id' => $this->_getTestCalendar()->getId(),
                  'organizer'    => Tinebase_Core::getUser()->getId(),
                  'uid'          => Calendar_Model_Event::generateUID(),
-                 Tinebase_Model_Grants::GRANT_READ    => true
+                 Tinebase_Model_Grants::GRANT_READ    => true,
              ),
              array(
                  'dtstart'      => '2009-04-02 23:30:00',
Simple merge
Simple merge
Simple merge
@@@ -372,6 -49,321 +372,321 @@@ class Sales_Setup_Update_Release8 exten
          
          $this->truncateTextColumn($columns, 255);
          $this->setTableVersion('sales_contracts', 6);
 -        $this->setApplicationVersion('Sales', '8.2');
 +        $this->setApplicationVersion('Sales', '8.5');
      }
+     /**
+      * update to 8.3
+      *   - add modlog to costcenter model
+      */
+     public function update_2()
+     {
+         $fields = array('<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>
+                 <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>');
+         
+         foreach($fields as $field) {
+             $declaration = new Setup_Backend_Schema_Field_Xml($field);
+             $this->_backend->addCol('sales_cost_centers', $declaration);
+         }
+         
+         $this->setTableVersion('sales_cost_centers', 2);;
+         $this->setApplicationVersion('Sales', '8.3');
+     }
+     
+     /**
+      * update to 8.4
+      */
+     public function update_3()
+     {
+         $this->_backend->dropIndex('sales_numbers', 'type');
+     
+         $field = '<field>
+             <name>model</name>
+             <type>text</type>
+             <length>128</length>
+             <notnull>true</notnull>
+         </field>';
+     
+         $declaration = new Setup_Backend_Schema_Field_Xml($field);
+         $this->_backend->alterCol('sales_numbers', $declaration, 'type');
+     
+         $index = '<index>
+             <name>model</name>
+             <unique>model</unique>
+             <field>
+                 <name>model</name>
+             </field>
+         </index>';
+     
+         $declaration = new Setup_Backend_Schema_Index_Xml($index);
+         $this->_backend->addIndex('sales_numbers', $declaration);
+     
+         $db = $this->_backend->getDb();
+     
+         $sql = 'UPDATE ' . $db->quoteIdentifier(SQL_TABLE_PREFIX . 'sales_numbers') . ' SET ' . $db->quoteInto($db->quoteIdentifier('model') . ' = ?', 'Sales_Model_Contract') . ' WHERE ' . $db->quoteInto($db->quoteIdentifier('model') . ' = ?', 'contract');
+         $db->query($sql);
+     
+         Setup_Controller::getInstance()->createImportExportDefinitions(Tinebase_Application::getInstance()->getApplicationByName('Sales'));
+     
+         $this->setTableVersion('sales_numbers', 2);
+         $this->setApplicationVersion('Sales', '8.4');
+     }
+     
+     /**
+      * adds "start_date", "end_date" to contract and removes "status", "cleared", "cleared_in"
+      */
+     protected function _updateContractsFields() {
+         if (php_sapi_name() == 'cli') {
+             echo 'The Users\' locale you use here will be used to translate the fields "status", "cleared", "cleared_in":';
+         }
+         
+         $this->promptForUsername();
+         
+         $controller = Sales_Controller_Contract::getInstance();
+         
+         $table = new Zend_Db_Table(SQL_TABLE_PREFIX . 'sales_contracts', new Zend_Db_Table_Definition(array(
+             'id' => array('name' => 'id'),
+             'status' => array('name' => 'status'),
+             'cleared' => array('name' => 'cleared'),
+             'cleared_in' => array('name' => 'cleared_in'),
+             'description' => array('name' => 'description'),
+             'last_modified_time' => array('name' => 'last_modified_time')
+         )));
+         
+         $count = 50;
+         $offset = 0;
+         $more = true;
+         $updateDescription = $statusConfig = $clearedConfig = $setEndDate = array();
+         
+         $appId = Tinebase_Application::getInstance()->getApplicationByName('Tinebase')->getId();
+         $pref = Tinebase_Core::getPreference('Tinebase');
+         Tinebase_Core::setupUserLocale($pref->locale);
+         $t = Tinebase_Translation::getTranslation('Sales', Tinebase_Core::getLocale());
+         
+         $config = Sales_Config::getInstance()->get('contractStatus');
+         foreach($config['records'] as $cfg) {
+             $statusConfig[$cfg['id']] = $cfg['value'];
+         }
+         
+         $config = Sales_Config::getInstance()->get('contractCleared');
+         
+         foreach($config['records'] as $cfg) {
+             $clearedConfig[$cfg['id']] = $cfg['value'];
+         }
+         
+         while($more) {
+             $results = $table->fetchAll(NULL, NULL, $count, $offset)->toArray();
+             foreach ($results as $row) {
+         
+                 if ($row['status'] == 'CLOSED') {
+                     $setEndDate[$row['id']] = $row['last_modified_time'];
+                 }
+         
+         
+                 $desc = $row['description'];
+                 $desc .= PHP_EOL . '---' . PHP_EOL . PHP_EOL;
+                 $contents = FALSE;
+         
+                 if (! empty($row['status'])) {
+                     $desc .= $t->_('Status') . ': ';
+                     $desc .= (isset($statusConfig[$row['status']]) ? $t->_($statusConfig[$row['status']]) : $row['status']);
+                     $desc .= PHP_EOL;
+                     $contents = TRUE;
+                 }
+                 if (! empty($row['cleared'])) {
+                     $desc .= $t->_('Cleared') . ': ';
+                     $desc .= (isset($clearedConfig[$row['cleared']]) ? $t->_($clearedConfig[$row['cleared']]) : $row['cleared']);
+                     $desc .= PHP_EOL;
+                     $contents = TRUE;
+                 }
+                 if (! empty($row['cleared_in'])) {
+                     $desc .= $t->_('Cleared In') . ': ';
+                     $desc .= $row['cleared_in'];
+                     $desc .= PHP_EOL;
+                     $contents = TRUE;
+                 }
+         
+                 if ($contents) {
+                     $updateDescription[$row['id']] = $desc . PHP_EOL;
+                 }
+             }
+         
+             if (count($updateDescription) > 50) {
+                 foreach($controller->getMultiple(array_keys($updateDescription)) as $contr) {
+                     $contr->description = $updateDescription[$contr->getId()];
+                     $controller->update($contr, FALSE);
+                 }
+                 $updateDescription = array();
+             }
+         
+             if (count($results) < $count) {
+                 $more = FALSE;
+             } else {
+                 $offset = $offset + $count;
+             }
+         }
+         
+         foreach($controller->getMultiple(array_keys($updateDescription)) as $contr) {
+             $contr->description = $updateDescription[$contr->getId()];
+             $controller->update($contr, FALSE);
+         }
+         
+         // remove deprecated sales contract fields
+         foreach (array('status', 'cleared_in', 'cleared') as $colToDrop) {
+             try {
+                 $this->_backend->dropCol('sales_contracts', $colToDrop);
+             } catch (Zend_Db_Statement_Exception $zdse) {
+                 Tinebase_Exception::log($zdse);
+             }
+         }
+         
+         // add new sales contract fields
+         $fields = array('<field>
+             <name>start_date</name>
+             <type>datetime</type>
+         </field>','
+         <field>
+             <name>end_date</name>
+             <type>datetime</type>
+         </field>'
+         );
+         
+         foreach($fields as $field) {
+             $declaration = new Setup_Backend_Schema_Field_Xml($field);
+             $this->_backend->addCol('sales_contracts', $declaration);
+         }
+         
+         $table = new Zend_Db_Table(SQL_TABLE_PREFIX . 'sales_contracts', new Zend_Db_Table_Definition(array(
+             'id' => array('name' => 'id'),
+             'last_modified_time' => array('name' => 'last_modified_time'),
+             'end_date' => array('name' => 'end_date'),
+             'start_date' => array('name' => 'start_date'),
+         )));
+         
+         
+         $db = $table->getAdapter();
+         $values = array_keys($setEndDate);
+         if (! empty($values)) {
+             $sql = 'UPDATE ' . $db->quoteIdentifier(SQL_TABLE_PREFIX . 'sales_contracts') . ' SET ' .
+                 $db->quoteIdentifier('start_date') . ' = ' . $db->quoteIdentifier('last_modified_time') . ', '.
+                 $db->quoteIdentifier('end_date') . ' = ' . $db->quoteIdentifier('last_modified_time') .
+                 ' WHERE ' . $db->quoteIdentifier('id') . $db->quoteInto(' IN (?)', $values);
+             
+             $db->query($sql);
+         }
+         
+         if ($this->getTableVersion('sales_contracts') == 5) {
+             $this->setTableVersion('sales_contracts', 6);
+         } else {
+             $this->setTableVersion('sales_contracts', 7);
+         }
+     }
+     /**
+      * adds modlog to sales-divisions
+      */
+     protected function _addDivisionsModlog() {
+         $fields = array('<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>
+                 <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>');
+         
+         foreach ($fields as $field) {
+             $declaration = new Setup_Backend_Schema_Field_Xml($field);
+             try {
+                 $this->_backend->addCol('sales_divisions', $declaration);
+             } catch (Zend_Db_Statement_Exception $zdse) {
+                 Tinebase_Exception::log($zdse);
+             }
+         }
+         $this->setTableVersion('sales_divisions', 2);
+     }
+     
+     /**
+      * update to 8.5
+      * 
+      * switch to modelconfig, create divison module
+      * remove "status", "cleared", "cleared_in", but append values to the description field
+      */
+     public function update_4()
+     {
+         if (! $this->_backend->columnExists('seq', 'sales_divisions')) {
+             $this->_addDivisionsModlog();
+         }
+         
+         if (! $this->_backend->columnExists('start_date', 'sales_contracts')) {
+             $this->_updateContractsFields();
+         }
+         
+         $this->setApplicationVersion('Sales', '8.5');
+     }
  }
@@@ -40,32 -41,32 +40,56 @@@ class Tinebase_Backend_Sql_Command_Mysq
          
          return new Zend_Db_Expr("GROUP_CONCAT( DISTINCT $quotedField)");
      }
 -
 +    
 +    /**
 +     * returns concatenation expression
 +     *
 +     * @param array $values
 +     */
 +    public function getConcat($values)
 +    {
 +        $str = 'CONCAT(';
 +        $i   = 1;
 +        $vc  = count($values);
 +        
 +        foreach($values as $value) {
 +            $str .= $value;
 +            if ($i < $vc) {
 +                $str .= ', ';
 +            }
 +            $i++;
 +        }
 +        
 +        $str .= ')';
 +        
 +        return new Zend_Db_Expr($str);
 +    }
 +    
      /**
+      * returns concatenation expression
+      * 
+      * @param array $values
+      */
+     public function getConcat($values)
+     {
+         $str = 'CONCAT(';
+         $i   = 1;
+         $vc  = count($values);
+         
+         foreach($values as $value) {
+             $str .= $value;
+             if ($i < $vc) {
+                 $str .= ', ';
+             }
+             $i++;
+         }
+         
+         $str .= ')';
+         
+         return new Zend_Db_Expr($str);
+     }
+     
+     /**
       * @param string $field
       * @param mixed $returnIfTrue
       * @param mixed $returnIfFalse
Simple merge
@@@ -555,8 -560,9 +560,9 @@@ class Tinebase_Use
       */
      protected static function _syncUserHook(Tinebase_Model_FullUser $user, $userProperties)
      {
+         $result = true;
          $hookClass = Tinebase_Config::getInstance()->get(Tinebase_Config::SYNC_USER_HOOK_CLASS);
 -        if ($hookClass) {
 +        if ($hookClass && class_exists($hookClass)) {
              $hook = new $hookClass();
              if (method_exists($hook, 'syncUser')) {
                  if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__
@@@ -13,65 -13,74 +13,69 @@@ msgstr "
  "X-Poedit-SourceCharset: utf-8\n"
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
  
 -#: PersistentFilter.php:138
 -msgid "- The last filter I used -"
 -msgstr ""
 -
 -#: Exception/PasswordPolicyViolation.php:22
 -msgid "Password Policy Violation"
 -msgstr ""
 -
 -#: Exception/SystemGeneric.php:27
 -msgid "Generic System Exception"
 +#: 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/MonthFormat.php:26
 -msgid "Wrong month format!"
 +#: Preference/Abstract.php:517
 +msgid "default"
  msgstr ""
  
 -#: Exception/MonthFormat.php:31
 -msgid "The month must have the format YYYY-MM!"
 +#: Setup/setup.xml:3325
 +msgid "note"
  msgstr ""
  
 -#: Exception/Record/SystemContainer.php:22
 -msgid "System Container"
 +#: Setup/setup.xml:3330
 +msgid "default note type"
  msgstr ""
  
 -#: Exception/Record/SystemContainer.php:28
 -msgid "This is a system container which could not be deleted!"
 +#: Setup/setup.xml:3356
 +msgid "telephone"
  msgstr ""
  
 -#: Exception/InvalidRelationConstraints.php:26
 -msgid "Invalid Relations"
 +#: Setup/setup.xml:3361
 +msgid "telephone call"
  msgstr ""
  
 -#: Exception/InvalidRelationConstraints.php:36
 -msgid ""
 -"You tried to create a relation which is forbidden by the constraints config "
 -"of one of the models."
 +#: Setup/setup.xml:3387
 +msgid "email"
  msgstr ""
  
 -#: Acl/Rights.php:147
 -msgid "Report bugs"
 +#: Setup/setup.xml:3392
 +msgid "email contact"
  msgstr ""
  
 -#: Acl/Rights.php:148
 -msgid "Report bugs to the software vendor directly when they occur."
 +#: Setup/setup.xml:3418
 +msgid "created"
  msgstr ""
  
 -#: Acl/Rights.php:151
 -msgid "Check version"
 +#: Setup/setup.xml:3423
 +msgid "record created"
  msgstr ""
  
 -#: Acl/Rights.php:152
 -msgid "Check for new versions of this software."
 +#: Setup/setup.xml:3449
 +msgid "changed"
  msgstr ""
  
 -#: Acl/Rights.php:155
 -msgid "Manage own profile"
 +#: Setup/setup.xml:3454
 +msgid "record changed"
  msgstr ""
  
 -#: Acl/Rights.php:156
 -msgid "The right to manage the own profile (selected contact data)."
++#: User/Sql.php:1041
++msgid "Your Tine 2.0 account has been deactivated"
+ msgstr ""
 -#: Acl/Rights.php:159
 -msgid "Manage own client state"
 +#: Container.php:690
 +#, python-format
 +msgid "%s's personal container"
  msgstr ""
  
 -#: Acl/Rights.php:160
 -msgid "The right to manage the own client state."
 +#: 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
@@@ -135,1545 -170,1497 +139,1558 @@@ msgstr "
  msgid "N/A"
  msgstr ""
  
 -#: Config.php:281
 -msgid "System IMAP"
 +#: Frontend/Http.php:401 js/ExceptionHandler.js:168
 +msgid "Authorisation Required"
  msgstr ""
  
 -#: Config.php:283
 -msgid "System IMAP server configuration."
 +#: Frontend/Http.php:402
 +msgid "Your session is not valid. You need to login again."
  msgstr ""
  
 -#: Config.php:292
 -msgid "System SMTP"
 +#: Frontend/Http.php:427 js/ExceptionDialog.js:62
 +msgid "Abnormal End"
  msgstr ""
  
 -#: Config.php:294
 -msgid "System SMTP server configuration."
 +#: Frontend/Http.php:428 js/ExceptionDialog.js:154
 +msgid "An error occurred, the program ended abnormal."
  msgstr ""
  
 -#: Config.php:303
 -msgid "System SIEVE"
 +#: Notes.php:426
 +msgid "by"
  msgstr ""
  
 -#: Config.php:305
 -msgid "System SIEVE server configuration."
 +#: Notes.php:435
 +msgid "Changed fields:"
  msgstr ""
  
 -#: Config.php:314
 -msgid "Authentication Backend"
 +#: views/update.php:24
 +msgid "Tine 2.0 needs to be updated or is not installed yet."
  msgstr ""
  
 -#: Config.php:316
 -msgid "Backend adapter for user authentication."
 +#: views/update.php:25
 +msgid "Please wait or contact your administrator"
  msgstr ""
  
 -#: Config.php:324
 -msgid "Authentication Configuration"
++#: views/deactivationNotification.php:11
++msgid "Your user account has been deactivated"
+ msgstr ""
 -#: Config.php:326
 -msgid "Authentication backend configuration."
++#: views/deactivationNotification.php:12 js/LoginPanel.js:93
++#: js/widgets/dialog/CredentialsDialog.js:61
++msgid "Username"
+ msgstr ""
 -#: Config.php:335
 -msgid "User Backend"
++#: views/deactivationNotification.php:13
++msgid "Deactivation date"
+ msgstr ""
 -#: Config.php:337
 -msgid "Backend adapter for user data."
++#: views/deactivationNotification.php:14
++msgid "Tine 2.0 URL"
+ msgstr ""
 -#: Config.php:345
 -msgid "User Configuration"
 +#: Export/Pdf.php:216 js/widgets/tags/TagsPanel.js:57
 +#: js/widgets/tags/TagsPanel.js:426
 +msgid "Tags"
  msgstr ""
  
 -#: Config.php:347
 -msgid "User backend configuration."
 +#: Export/Pdf.php:437
 +msgid "Created by"
  msgstr ""
  
 -#: Config.php:356
 -msgid "Cronuser ID"
 +#: Export/Pdf.php:483
 +msgid "Activities"
  msgstr ""
  
- #: Export/Spreadsheet/Ods.php:365
 -#: Config.php:358
 -msgid "User ID of the cron user."
++#: Export/Spreadsheet/Ods.php:353
 +msgid "Data"
  msgstr ""
  
 -#: Config.php:366
 -msgid "Title Postfix"
 +#: Export/Spreadsheet/Xls.php:365
 +msgid "Without company assigned"
  msgstr ""
  
 -#: Config.php:368
 -msgid "Postfix string appended to the title of this installation."
 +#: js/AdminPanel.js:75
 +msgid "Profile Information"
  msgstr ""
  
 -#: Config.php:376
 -msgid "Redirect URL"
 +#: js/AdminPanel.js:79 js/widgets/dialog/EditDialog.js:409
 +#: js/widgets/EditRecord.js:168
 +msgid "Apply"
  msgstr ""
  
 -#: Config.php:378
 -msgid "Redirect to this URL after logout."
 +#: js/AdminPanel.js:94 js/widgets/TimezoneChooser.js:77
 +#: js/widgets/LangChooser.js:68
 +msgid "Please Wait"
  msgstr ""
  
 -#: Config.php:386
 -msgid "Redirect to Referrer"
 +#: js/AdminPanel.js:156 js/widgets/container/GrantsGrid.js:43
 +#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:262
 +msgid "Read"
  msgstr ""
  
 -#: Config.php:388
 -msgid "Redirect to referrer after logout."
 +#: js/AdminPanel.js:157
 +msgid "The field is readable part of the profile"
  msgstr ""
  
 -#: Config.php:396
 -msgid "Redirect Always"
 +#: js/AdminPanel.js:161 js/widgets/container/GrantsGrid.js:47
 +#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:268
 +msgid "Edit"
  msgstr ""
  
 -#: Config.php:398
 -msgid "Redirect to configured redirect URL also for login."
 +#: js/AdminPanel.js:162
 +msgid "The field is editable part of the profile"
  msgstr ""
  
 -#: Config.php:406
 -msgid "Allowed Origins"
 +#: js/AdminPanel.js:175 js/widgets/dialog/DuplicateResolveGridPanel.js:203
 +msgid "Field Name"
  msgstr ""
  
 -#: Config.php:408
 -msgid "Allowed Origins for the JSON API."
 +#: js/LoginPanel.js:83 js/LoginPanel.js:159
 +msgid "Login"
  msgstr ""
  
- #: js/LoginPanel.js:93 js/widgets/dialog/CredentialsDialog.js:61
- msgid "Username"
- msgstr ""
 -#: Config.php:416
 -msgid "Accepted Terms Version"
 +#: js/LoginPanel.js:111 js/widgets/dialog/CredentialsDialog.js:65
 +msgid "Password"
  msgstr ""
  
 -#: Config.php:418
 -msgid "Accepted version number of the terms and conditions document."
 +#: js/LoginPanel.js:128
 +msgid "Certificate detected. Please, press Login button to proceed."
  msgstr ""
  
 -#: Config.php:426
 -msgid "Use Geolocation Services"
 +#: js/LoginPanel.js:185
 +msgid "Version"
  msgstr ""
  
 -#: Config.php:428
 -msgid "Use of external Geolocation services is allowed."
 +#: js/LoginPanel.js:217
 +#, python-brace-format
 +msgid "{0} is made for you"
  msgstr ""
  
 -#: Config.php:436
 -msgid "IP Session Validator"
 +#: 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:438
 -msgid "Destroy session if the users IP changes."
 +#: js/LoginPanel.js:225
 +#, python-brace-format
 +msgid "{0} Homepage"
  msgstr ""
  
 -#: Config.php:446
 -msgid "UA Session Validator"
 +#: js/LoginPanel.js:226
 +#, python-brace-format
 +msgid "{0} Forum"
  msgstr ""
  
 -#: Config.php:448
 -msgid "Destroy session if the users user agent string changes."
 +#: js/LoginPanel.js:230
 +msgid "Translations"
  msgstr ""
  
 -#: Config.php:456
 -msgid "Files Directory"
 +#: js/LoginPanel.js:232
 +#, python-brace-format
 +msgid "Translation state of {0}: {1}%."
  msgstr ""
  
 -#: Config.php:458
 -msgid "Directory with web server write access for user files."
 +#: 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:466 Config.php:468
 -msgid "Reuse last username logged"
 +#: js/LoginPanel.js:237
 +#, python-brace-format
 +msgid "{0} Translation Howto"
  msgstr ""
  
 -#: Config.php:476 Config.php:478
 -msgid "User may change password"
 +#: js/LoginPanel.js:238
 +msgid "Detailed Language Statistics"
  msgstr ""
  
 -#: Config.php:487 Config.php:489
 -msgid "Enable password policy"
 +#: js/LoginPanel.js:258
 +msgid "Powered by:"
  msgstr ""
  
 -#: Config.php:497
 -msgid "Only ASCII"
 +#: js/LoginPanel.js:258
 +msgid "online open source groupware and crm"
  msgstr ""
  
 -#: Config.php:499
 -msgid "Only ASCII characters are allowed in passwords."
 +#: js/LoginPanel.js:308
 +#, python-brace-format
 +msgid "about {0} minutes"
  msgstr ""
  
 -#: Config.php:507
 -msgid "Minimum length"
 +#: js/LoginPanel.js:313 js/LoginPanel.js:551
 +msgid "Tine 2.0 needs your help"
  msgstr ""
  
 -#: Config.php:509
 -msgid "Minimum password length"
 +#: 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:517
 -msgid "Minimum word chars"
 +#: js/LoginPanel.js:321
 +msgid "participate!"
  msgstr ""
  
 -#: Config.php:519
 -msgid "Minimum word chars in password"
 +#: js/LoginPanel.js:343
 +msgid "Languages"
  msgstr ""
  
 -#: Config.php:527
 -msgid "Minimum uppercase chars"
 +#: js/LoginPanel.js:344
 +msgid "Duration"
  msgstr ""
  
 -#: Config.php:529
 -msgid "Minimum uppercase chars in password"
 +#: js/LoginPanel.js:385
 +msgid "Browser incompatible"
  msgstr ""
  
 -#: Config.php:537
 -msgid "Minimum special chars"
 +#: js/LoginPanel.js:387
 +msgid "Your browser is not supported by Tine 2.0."
  msgstr ""
  
 -#: Config.php:539
 -msgid "Minimum special chars in password"
 +#: js/LoginPanel.js:392
 +msgid "Browser incompatible?"
  msgstr ""
  
 -#: Config.php:547
 -msgid "Minimum numbers"
 +#: js/LoginPanel.js:394
 +msgid ""
 +"You are using an unrecognized browser. This could result in unexpected "
 +"behaviour."
  msgstr ""
  
 -#: Config.php:549
 -msgid "Minimum numbers in password"
 -msgstr ""
 -
 -#: Config.php:557
 -msgid "Forbid part of username"
 +#: js/LoginPanel.js:400
 +msgid "You might try one of these browsers:"
  msgstr ""
  
 -#: Config.php:559
 -msgid "Forbid part of username in password"
 +#: js/LoginPanel.js:460
 +msgid "Logging you in..."
  msgstr ""
  
 -#: Config.php:567
 -msgid "Automatic bugreports"
 +#: 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:328
 +#: js/widgets/persistentfilter/PickerPanel.js:366
 +#: js/widgets/persistentfilter/PickerPanel.js:421
 +msgid "Please wait"
  msgstr ""
  
 -#: Config.php:569
 -msgid ""
 -"Always send bugreports, even on timeouts and other exceptions / failures."
 +#: js/LoginPanel.js:474
 +#, python-brace-format
 +msgid "Login successful. Loading {0}..."
  msgstr ""
  
 -#: Config.php:577
 -msgid "Last sessions cleanup run"
 +#: js/LoginPanel.js:474 js/MainMenu.js:277
 +msgid "Please wait!"
  msgstr ""
  
 -#: Config.php:579
 -msgid "Stores the timestamp of the last sessions cleanup task run."
 +#: js/LoginPanel.js:482 js/ExceptionHandler.js:233
 +msgid "Connection lost, please check your network!"
  msgstr ""
  
 -#: Config.php:587
 -msgid "Maximum login failures"
 +#: js/LoginPanel.js:486
 +msgid "There was an error verifying your certificate!!!"
  msgstr ""
  
 -#: Config.php:589
 -msgid "Maximum allowed login failures before blocking account"
 +#: js/LoginPanel.js:487
 +msgid "Your username and/or your password are wrong!!!"
  msgstr ""
  
 -#: Config.php:597
 -msgid "Disable Anyone Account"
 +#: js/LoginPanel.js:489
 +msgid "Login failure"
  msgstr ""
  
 -#: Config.php:599
 -msgid "Disallow anyone account in grant configurations"
 +#: 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:607
 -msgid "Alarms sent each job"
 +#: 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:609
 -msgid ""
 -"Allows to configure the maximum number of alarm notifications in each run of "
 -"sendPendingAlarms (0 = no limit)"
 +#: js/LoginPanel.js:523
 +msgid "Please enter your login data"
  msgstr ""
  
 -#: Setup/setup.xml:3111
 -msgid "note"
 +#: js/widgets/TimezoneChooser.js:37 Preference.php:142
 +msgid "Timezone"
  msgstr ""
  
 -#: Setup/setup.xml:3116
 -msgid "default note type"
 +#: js/widgets/TimezoneChooser.js:77
 +msgid "setting new timezone..."
  msgstr ""
  
 -#: Setup/setup.xml:3142
 -msgid "telephone"
 +#: js/widgets/ActivitiesPanel.js:153
 +msgid "Add a Note..."
  msgstr ""
  
 -#: Setup/setup.xml:3147
 -msgid "telephone call"
 +#: js/widgets/ActivitiesPanel.js:168 js/widgets/ActivitiesPanel.js:181
 +#: js/widgets/container/GrantsGrid.js:45
 +msgid "Add"
  msgstr ""
  
 -#: Setup/setup.xml:3173
 -msgid "email"
 +#: js/widgets/ActivitiesPanel.js:168 js/widgets/ActivitiesPanel.js:491
 +msgid "Note"
  msgstr ""
  
 -#: Setup/setup.xml:3178
 -msgid "email contact"
 +#: js/widgets/ActivitiesPanel.js:182 js/widgets/ActivitiesPanel.js:413
 +msgid "Add new note"
  msgstr ""
  
 -#: Setup/setup.xml:3204
 -msgid "created"
 +#: js/widgets/ActivitiesPanel.js:209 js/widgets/ActivitiesPanel.js:228
 +msgid "Notes"
  msgstr ""
  
 -#: Setup/setup.xml:3209
 -msgid "record created"
 +#: js/widgets/ActivitiesPanel.js:311
 +msgid "Enter new note:"
  msgstr ""
  
 -#: Setup/setup.xml:3235
 -msgid "changed"
 +#: 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 ""
  
 -#: Setup/setup.xml:3240
 -msgid "record changed"
 +#: 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 ""
  
 -#: Preference.php:122
 -msgid "Page size"
 +#: js/widgets/ActivitiesPanel.js:356 js/widgets/ActivitiesPanel.js:412
 +msgid "Add Note"
  msgstr ""
  
 -#: Preference.php:123
 -msgid "Page size in grids"
 +#: js/widgets/ActivitiesPanel.js:399
 +#, python-brace-format
 +msgid "Add a {0} Note"
  msgstr ""
  
 -#: Preference.php:126
 -msgid "Grid stripe rows"
 +#: 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 ""
  
 -#: Preference.php:127
 -msgid "Stripe rows in grids"
 +#: js/widgets/ActivitiesPanel.js:492
 +#: js/widgets/dialog/AttachmentsGridPanel.js:106
 +#: js/widgets/grid/GridPanel.js:1420
 +msgid "Created By"
  msgstr ""
  
 -#: Preference.php:130
 -msgid "Grid load mask"
 +#: js/widgets/ActivitiesPanel.js:493
 +msgid "Timestamp"
  msgstr ""
  
 -#: Preference.php:131
 -msgid "Show load mask in grids"
 +#: js/widgets/ActivitiesPanel.js:507
 +#, python-brace-format
 +msgid "Displaying history records {0} - {1} of {2}"
  msgstr ""
  
 -#: Preference.php:134
 -msgid "Dialog buttons order style"
 +#: js/widgets/ActivitiesPanel.js:508
 +msgid "No history to display"
  msgstr ""
  
 -#: Preference.php:135
 -msgid "Dialog buttons order style (Windows / Mac)"
 +#: js/widgets/ActivitiesPanel.js:608
 +msgid "History"
  msgstr ""
  
 -#: Preference.php:138
 -msgid "Auto search on filter change"
 +#: js/widgets/ActivitiesPanel.js:620
 +msgid "Quick Search"
  msgstr ""
  
 -#: Preference.php:139
 -msgid "Perform auto search when filter is changed"
 +#: js/widgets/ActivitiesPanel.js:621 js/widgets/ActivitiesPanel.js:622
 +msgid "Time"
  msgstr ""
  
 -#: Preference.php:142 js/widgets/TimezoneChooser.js:37
 -msgid "Timezone"
 +#: js/widgets/ActivitiesPanel.js:624
 +msgid "User"
  msgstr ""
  
 -#: Preference.php:143
 -msgid "The timezone in which dates are shown in Tine 2.0."
 +#: js/widgets/customfields/EditDialogPlugin.js:155
 +msgid "General"
  msgstr ""
  
 -#: Preference.php:146 js/widgets/LangChooser.js:35
 -msgid "Language"
 +#: js/widgets/customfields/EditDialogPlugin.js:167
 +msgid "Custom Fields"
  msgstr ""
  
 -#: Preference.php:147
 -msgid "The language of the Tine 2.0 GUI."
 +#: js/widgets/tags/TagCombo.js:46
 +msgid "tag name"
  msgstr ""
  
 -#: Preference.php:150
 -msgid "Default Application"
 +#: 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:151
 -msgid "The default application to show after login."
 +#: js/widgets/tags/TagsMassDetachAction.js:18
 +msgid "Detach tag(s)"
  msgstr ""
  
 -#: Preference.php:154
 -msgid "Window Type"
 +#: js/widgets/tags/TagsMassDetachAction.js:84
 +msgid "Select Tag(s) to detach"
  msgstr ""
  
 -#: Preference.php:155
 -msgid "You can choose between modal windows or normal browser popup windows."
 +#: js/widgets/tags/TagsMassAttachAction.js:18
 +msgid "Add Tag"
  msgstr ""
  
 -#: Preference.php:158
 -msgid "Confirm Logout"
 +#: js/widgets/tags/TagsMassAttachAction.js:76
 +msgid "Attach the following tag to all selected items:"
  msgstr ""
  
 -#: Preference.php:159
 -msgid "Show confirmation dialog on logout."
 +#: js/widgets/tags/TagsMassAttachAction.js:98
 +msgid "Select Tag"
  msgstr ""
  
 -#: Record/RecordSetDiff.php:42
 -msgid "added"
 +#: js/widgets/tags/TagsMassAttachAction.js:128
 +msgid "Attaching Tag"
  msgstr ""
  
 -#: Record/RecordSetDiff.php:43
 -msgid "removed"
 +#: js/widgets/tags/TagToggleBox.js:52
 +msgid "Detach Tags"
  msgstr ""
  
 -#: Record/RecordSetDiff.php:44
 -msgid "modified"
 +#: js/widgets/tags/TagToggleBox.js:52
 +msgid "Attach Tags"
  msgstr ""
  
 -#: Export/Spreadsheet/Ods.php:358
 -msgid "Data"
 +#: js/widgets/tags/TagToggleBox.js:140
 +msgid "No Tags to detach found in the selected records"
  msgstr ""
  
 -#: Export/Pdf.php:216 js/widgets/tags/TagsPanel.js:57
 -#: js/widgets/tags/TagsPanel.js:426
 -msgid "Tags"
 +#: js/widgets/tags/TagToggleBox.js:141
 +msgid "Please Wait..."
  msgstr ""
  
 -#: Export/Pdf.php:437
 -msgid "Created by"
 +#: js/widgets/tags/TagToggleBox.js:152
 +msgid "Detaching Tags"
  msgstr ""
  
 -#: Export/Pdf.php:483
 -msgid "Activities"
 +#: js/widgets/tags/TagsPanel.js:114
 +msgid "Add a new personal tag"
  msgstr ""
  
 -#: js/AdminPanel.js:75
 -msgid "Profile Information"
 +#: js/widgets/tags/TagsPanel.js:117
 +msgid "Add New Personal Tag"
  msgstr ""
  
 -#: js/AdminPanel.js:79 js/widgets/EditRecord.js:168
 -#: js/widgets/dialog/EditDialog.js:384
 -msgid "Apply"
 +#: js/widgets/tags/TagsPanel.js:118
 +msgid "Please note: You create a personal tag. Only you can see it!"
  msgstr ""
  
 -#: js/AdminPanel.js:94 js/widgets/TimezoneChooser.js:77
 -#: js/widgets/LangChooser.js:68
 -msgid "Please Wait"
 +#: js/widgets/tags/TagsPanel.js:118
 +msgid "Enter tag name:"
  msgstr ""
  
 -#: js/AdminPanel.js:156 js/widgets/container/GrantsGrid.js:43
 -msgid "Read"
 +#: js/widgets/tags/TagsPanel.js:159
 +msgid "No Tags to display"
  msgstr ""
  
 -#: js/AdminPanel.js:157
 -msgid "The field is readable part of the profile"
 -msgstr ""
 +#: js/widgets/tags/TagsPanel.js:182
 +msgid "Detach tag"
 +msgid_plural "Detach tags"
 +msgstr[0] ""
 +msgstr[1] ""
  
 -#: js/AdminPanel.js:161 js/widgets/container/GrantsGrid.js:47
 -msgid "Edit"
 +#: js/widgets/tags/TagsPanel.js:192
 +msgid "Edit tag"
  msgstr ""
  
 -#: js/AdminPanel.js:162
 -msgid "The field is editable part of the profile"
 +#: js/widgets/tags/TagsPanel.js:197 js/widgets/tags/TagsPanel.js:202
 +msgid "Rename Tag"
  msgstr ""
  
 -#: js/AdminPanel.js:175 js/widgets/dialog/DuplicateResolveGridPanel.js:203
 -msgid "Field Name"
 +#: js/widgets/tags/TagsPanel.js:202
 +msgid "Please enter a new name:"
  msgstr ""
  
 -#: js/AboutDialog.js:41 js/MainMenu.js:118
 -msgid "About {0}"
 +#: js/widgets/tags/TagsPanel.js:211
 +msgid "Edit Description"
  msgstr ""
  
 -#: js/AboutDialog.js:56 js/MainMenu.js:166
 -msgid "Learn more about {0}"
 +#: js/widgets/tags/TagsPanel.js:216
 +msgid "Description for tag"
  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:84
 -#: js/widgets/dialog/MultiOptionsDialog.js:102
 -#: js/widgets/dialog/ExceptionHandlerDialog.js:194
 -#: js/widgets/dialog/AddToRecordPanel.js:111
 -#: js/widgets/dialog/PreferencesDialog.js:109
 -#: js/widgets/dialog/EditDialog.js:373 js/widgets/ActivitiesPanel.js:340
 -#: js/widgets/container/ContainerSelect.js:490 js/ux/form/LayerCombo.js:186
 -msgid "Ok"
 +#: js/widgets/tags/TagsPanel.js:216
 +msgid "Please enter new description:"
  msgstr ""
  
 -#: js/AboutDialog.js:71
 -msgid "Released under different"
 +#: js/widgets/tags/TagsPanel.js:225
 +msgid "Change Color"
  msgstr ""
  
 -#: js/AboutDialog.js:72
 -msgid "Open Source Licenses"
 -msgstr ""
 +#: js/widgets/tags/TagsPanel.js:254
 +msgid "Delete Tag"
 +msgid_plural "Delete Tags"
 +msgstr[0] ""
 +msgstr[1] ""
  
 -#: js/AboutDialog.js:79
 -msgid "with the help of our"
 +#: 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 ""
  
 -#: js/AboutDialog.js:80
 -msgid "Contributors"
 +#: 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/tineInit.js:605
 -msgid ""
 -"Fatal Error: Client self-update failed, please contact your administrator "
 -"and/or restart/reload your browser."
 +#: js/widgets/tags/TagsPanel.js:288
 +msgid "Could not delete Tag(s)."
  msgstr ""
  
 -#: js/AppManager.js:208
 -msgid "Missing Applications"
 +#: js/widgets/tags/TagsPanel.js:332 js/widgets/tags/TagsPanel.js:394
 +msgid "Notice"
  msgstr ""
  
 -#: js/AppManager.js:209
 -msgid ""
 -"There are no applications enabled for you. Please contact your administrator."
 +#: js/widgets/tags/TagsPanel.js:333 js/widgets/tags/TagsPanel.js:395
 +msgid "The minimum tag length is three."
  msgstr ""
  
 -#: js/CreditsScreen.js:36
 -msgid "Credits"
 +#: js/widgets/tags/TagsPanel.js:380
 +msgid "Could not create tag."
  msgstr ""
  
 -#: js/common.js:235
 -msgid "Usage:&#160;"
 +#: js/widgets/tags/TagsPanel.js:413
 +msgid "Could not update tag."
  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:137
 -#: js/widgets/tags/TagCombo.js:134 js/widgets/tags/TagCombo.js:139
 -msgid "personal"
 +#: js/widgets/tags/TagsPanel.js:508
 +#: js/widgets/relation/GenericPickerGridPanel.js:457
 +#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:204
 +#: js/ExceptionDialog.js:162
 +msgid "Description"
  msgstr ""
  
 -#: js/common.js:273 js/common.js:311
 -msgid "No Information"
 +#: js/widgets/tags/TagsPanel.js:512
 +#: js/widgets/container/PropertiesDialog.js:113
 +msgid "Color"
  msgstr ""
  
 -#: js/common.js:360
 -msgid "{0} minute"
 -msgid_plural "{0} minutes"
 +#: js/widgets/tags/TagFilter.js:30 js/Models.js:143
 +msgid "Tag"
 +msgid_plural "Tags"
  msgstr[0] ""
  msgstr[1] ""
  
 -#: js/common.js:361
 -msgid "{0} hour"
 -msgid_plural "{0} hours"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/MainScreen.js:264
 +msgid "Save current view as favorite"
 +msgstr ""
  
 -#: js/common.js:362
 -msgid "{0} workday"
 -msgid_plural "{0} workdays"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/CountryCombo.js:34
 +msgid "Select a country..."
 +msgstr ""
  
 -#: js/common.js:389
 -msgid "{0} second"
 -msgid_plural "{0} seconds"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/account/ChangeAccountAction.js:18
 +msgid "Change user account"
 +msgstr ""
  
 -#: js/LoginPanel.js:83 js/LoginPanel.js:159
 -msgid "Login"
 +#: js/widgets/account/ChangeAccountAction.js:20
 +msgid "Switch to another user's account"
  msgstr ""
  
 -#: js/LoginPanel.js:93 js/widgets/dialog/CredentialsDialog.js:61
 -msgid "Username"
 +#: js/widgets/account/ChangeAccountAction.js:65
 +msgid "Switch to this user account:"
  msgstr ""
  
 -#: js/LoginPanel.js:111 js/widgets/dialog/CredentialsDialog.js:65
 -msgid "Password"
 +#: js/widgets/account/ChangeAccountAction.js:92
 +msgid "Select Account"
  msgstr ""
  
 -#: js/LoginPanel.js:128
 -msgid "Certificate detected. Please, press Login button to proceed."
 +#: js/widgets/account/ChangeAccountAction.js:115
 +msgid "Changing user account ..."
  msgstr ""
  
 -#: js/LoginPanel.js:185
 -msgid "Version"
 +#: js/widgets/account/PickerGridPanel.js:158
 +msgid "Search User"
  msgstr ""
  
 -#: js/LoginPanel.js:217
 -msgid "{0} is made for you"
 +#: js/widgets/account/PickerGridPanel.js:164
 +msgid "Search Group"
  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/account/PickerGridPanel.js:170
 +msgid "Add Anyone"
  msgstr ""
  
 -#: js/LoginPanel.js:225
 -msgid "{0} Homepage"
 +#: js/widgets/account/PickerGridPanel.js:213
 +msgid "Anyone"
  msgstr ""
  
 -#: js/LoginPanel.js:226
 -msgid "{0} Forum"
 +#: js/widgets/account/PickerGridPanel.js:229
 +msgid "Search for users ..."
  msgstr ""
  
 -#: js/LoginPanel.js:230
 -msgid "Translations"
 +#: js/widgets/account/PickerGridPanel.js:251
 +msgid "Search for groups ..."
  msgstr ""
  
 -#: js/LoginPanel.js:232
 -msgid "Translation state of {0}: {1}%."
 +#: js/widgets/account/PickerGridPanel.js:267
 +#: js/widgets/dialog/AttachmentsGridPanel.js:86
 +#: js/widgets/container/PropertiesDialog.js:107
 +#: js/widgets/grid/LinkGridPanel.js:103 js/Models.js:430
 +msgid "Name"
  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/AdminPanel.js:59
 +#, python-brace-format
 +msgid "Change settings for application {0}"
  msgstr ""
  
 -#: js/LoginPanel.js:237
 -msgid "{0} Translation Howto"
 +#: js/widgets/dialog/AdminPanel.js:107
 +msgid "Defaults"
  msgstr ""
  
 -#: js/LoginPanel.js:238
 -msgid "Detailed Language Statistics"
 +#: js/widgets/dialog/AlarmPanel.js:34
 +msgid "Alarms"
  msgstr ""
  
 -#: js/LoginPanel.js:258
 -msgid "Powered by:"
 +#: js/widgets/dialog/AlarmPanel.js:37
 +msgid "0 minutes before"
  msgstr ""
  
 -#: js/LoginPanel.js:258
 -msgid "online open source groupware and crm"
 +#: js/widgets/dialog/AlarmPanel.js:38
 +msgid "5 minutes before"
  msgstr ""
  
 -#: js/LoginPanel.js:308
 -msgid "about {0} minutes"
 +#: js/widgets/dialog/AlarmPanel.js:39
 +msgid "15 minutes before"
  msgstr ""
  
 -#: js/LoginPanel.js:313 js/LoginPanel.js:551
 -msgid "Tine 2.0 needs your help"
 +#: js/widgets/dialog/AlarmPanel.js:40
 +msgid "30 minutes before"
  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/AlarmPanel.js:41
 +msgid "1 hour before"
  msgstr ""
  
 -#: js/LoginPanel.js:321
 -msgid "participate!"
 +#: js/widgets/dialog/AlarmPanel.js:42
 +msgid "2 hours before"
  msgstr ""
  
 -#: js/LoginPanel.js:343
 -msgid "Languages"
 +#: js/widgets/dialog/AlarmPanel.js:43
 +msgid "12 hours before"
  msgstr ""
  
 -#: js/LoginPanel.js:344
 -msgid "Duration"
 +#: js/widgets/dialog/AlarmPanel.js:44
 +msgid "1 day before"
  msgstr ""
  
 -#: js/LoginPanel.js:385
 -msgid "Browser incompatible"
 +#: js/widgets/dialog/AlarmPanel.js:45
 +msgid "2 days before"
  msgstr ""
  
 -#: js/LoginPanel.js:387
 -msgid "Your browser is not supported by Tine 2.0."
 +#: js/widgets/dialog/AlarmPanel.js:46
 +msgid "Custom Datetime"
  msgstr ""
  
 -#: js/LoginPanel.js:392
 -msgid "Browser incompatible?"
 +#: js/widgets/dialog/AlarmPanel.js:58
 +msgid "Alarm Time"
  msgstr ""
  
 -#: js/LoginPanel.js:394
 -msgid ""
 -"You are using an unrecognized browser. This could result in unexpected "
 -"behaviour."
 +#: js/widgets/dialog/AlarmPanel.js:170
 +#, python-brace-format
 +msgid "{0} minutes before"
  msgstr ""
  
 -#: js/LoginPanel.js:400
 -msgid "You might try one of these browsers:"
 +#: js/widgets/dialog/SimpleImportDialog.js:129
- #: js/widgets/dialog/ImportDialog.js:223
++#: js/widgets/dialog/ImportDialog.js:227
 +msgid "Choose File and Format"
  msgstr ""
  
 -#: js/LoginPanel.js:460
 -msgid "Logging you in..."
 +#: js/widgets/dialog/SimpleImportDialog.js:138
- #: js/widgets/dialog/ImportDialog.js:232
++#: js/widgets/dialog/ImportDialog.js:236
 +msgid "Choose Import File"
  msgstr ""
  
 -#: js/LoginPanel.js:460 js/widgets/tree/ContextMenu.js:191
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:693
 -#: js/widgets/persistentfilter/PickerPanel.js:327
 -#: js/widgets/persistentfilter/PickerPanel.js:365
 -#: js/widgets/persistentfilter/PickerPanel.js:417
 -#: js/widgets/container/GrantsDialog.js:95
 -msgid "Please wait"
 +#: js/widgets/dialog/SimpleImportDialog.js:142
- #: js/widgets/dialog/ImportDialog.js:236
++#: js/widgets/dialog/ImportDialog.js:240
 +msgid ""
 +"Please choose the file that contains the records you want to add to Tine 2.0"
  msgstr ""
  
 -#: js/LoginPanel.js:474
 -msgid "Login successful. Loading {0}..."
 +#: js/widgets/dialog/SimpleImportDialog.js:146
- #: js/widgets/dialog/ImportDialog.js:240
++#: js/widgets/dialog/ImportDialog.js:244
 +#, python-brace-format
 +msgid "Select file containing your {0}"
  msgstr ""
  
 -#: js/LoginPanel.js:474 js/MainMenu.js:257
 -msgid "Please wait!"
 +#: js/widgets/dialog/SimpleImportDialog.js:154
- #: js/widgets/dialog/ImportDialog.js:336
++#: js/widgets/dialog/ImportDialog.js:340
 +msgid "Set Import Options"
  msgstr ""
  
 -#: js/LoginPanel.js:482 js/ExceptionHandler.js:233
 -msgid "Connection lost, please check your network!"
 +#: js/widgets/dialog/SimpleImportDialog.js:158
- #: js/widgets/dialog/ImportDialog.js:344
++#: js/widgets/dialog/ImportDialog.js:348
 +#, python-brace-format
 +msgid "Select {0} to add you {1} to:"
  msgstr ""
  
 -#: js/LoginPanel.js:486
 -msgid "There was an error verifying your certificate!!!"
 +#: js/widgets/dialog/SimpleImportDialog.js:174
- #: js/widgets/dialog/ImportDialog.js:248 js/widgets/dialog/ImportDialog.js:253
++#: js/widgets/dialog/ImportDialog.js:252 js/widgets/dialog/ImportDialog.js:257
 +msgid "What should the file you upload look like?"
  msgstr ""
  
 -#: js/LoginPanel.js:487
 -msgid "Your username and/or your password are wrong!!!"
 +#: js/widgets/dialog/SimpleImportDialog.js:179
- #: js/widgets/dialog/ImportDialog.js:256
++#: js/widgets/dialog/ImportDialog.js:260
 +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:489
 -msgid "Login failure"
 +#: js/widgets/dialog/SimpleImportDialog.js:182
- #: js/widgets/dialog/ImportDialog.js:259
++#: js/widgets/dialog/ImportDialog.js:263
 +msgid ""
 +"Following you find a list of all supported import formats and a sample file, "
 +"how Tine 2.0 expects your file to look like."
  msgstr ""
  
 -#: js/LoginPanel.js: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:655
 -msgid "Errors"
 +#: js/widgets/dialog/SimpleImportDialog.js:185
- #: js/widgets/dialog/ImportDialog.js:262
++#: js/widgets/dialog/ImportDialog.js:266
 +msgid "Please select the import format of the file you want to upload"
  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:655
 -msgid "Please fix the errors noted."
 +#: js/widgets/dialog/SimpleImportDialog.js:206
- #: js/widgets/dialog/ImportDialog.js:283 js/widgets/dialog/ImportDialog.js:315
++#: js/widgets/dialog/ImportDialog.js:287 js/widgets/dialog/ImportDialog.js:319
 +msgid "Download example file"
  msgstr ""
  
 -#: js/LoginPanel.js:523
 -msgid "Please enter your login data"
 +#: js/widgets/dialog/SimpleImportDialog.js:222
- #: js/widgets/dialog/ImportDialog.js:669
++#: js/widgets/dialog/ImportDialog.js:673
 +#, python-brace-format
 +msgid "Importing {0}"
  msgstr ""
  
 -#: js/LicenseScreen.js:35
 -msgid "License"
 +#: js/widgets/dialog/CredentialsDialog.js:84
 +msgid "Please enter your credentials"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:32
 -msgid "Change Password For \"{0}\""
 +#: js/widgets/dialog/ExceptionHandlerDialog.js:220
 +#, python-brace-format
 +msgid "{1} - Exception {0}"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:48
 -msgid "Old Password"
 +#: js/widgets/dialog/ExceptionHandlerDialog.js:222
 +#, python-brace-format
 +msgid "{0} - Unknown Exception"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:52
 -msgid "New Password"
 +#: js/widgets/dialog/PreferencesDialog.js:125
 +msgid "Admin Mode"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:56
 -msgid "Repeat new Password"
 +#: js/widgets/dialog/PreferencesDialog.js:163
 +msgid "Applications"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:60 js/widgets/EditRecord.js:178
 -#: js/widgets/tags/TagToggleBox.js:59
 -#: js/widgets/tags/TagsMassAttachAction.js:105
 -#: 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/PreferencesDialog.js:192
 +msgid "Edit Preferences"
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:75
 -msgid "Please Wait!"
 +#: js/widgets/dialog/PreferencesDialog.js:193
 +msgid "Loading ..."
  msgstr ""
  
 -#: js/PasswordChangeDialog.js:76
 -msgid "changing password..."
 +#: 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/PasswordChangeDialog.js:87
 -msgid "Success"
 +#: js/widgets/dialog/PreferencesDialog.js:277
 +msgid "Saving of preferences failed."
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:286
 -#: js/PasswordChangeDialog.js:88
 -msgid "Your password has been changed."
++#: js/widgets/dialog/ImportDialog.js:290
 +msgid "Import description"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:396
 -#: js/PasswordChangeDialog.js:100 js/PasswordChangeDialog.js:110
 -#: js/widgets/relation/GenericPickerGridPanel.js:916
 -#: js/widgets/relation/GenericPickerGridPanel.js:929
 -#: js/widgets/dialog/ImportDialog.js:654
 -#: js/widgets/dialog/MultipleEditResultSummary.js:196
 -#: js/widgets/form/RecordPickerComboBox.js:294
 -msgid "Failure"
++#: js/widgets/dialog/ImportDialog.js:400
 +msgid "Checking Import"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:425
 -#: js/PasswordChangeDialog.js:111
 -msgid "The new passwords mismatch, please correct them."
++#: js/widgets/dialog/ImportDialog.js:429
 +msgid "Resolve Conflicts"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:434
 -#: js/MainMenu.js:66
 -msgid "User: {0}"
++#: js/widgets/dialog/ImportDialog.js:438
 +#, python-brace-format
 +msgid "There are {0} {1} that might already exist."
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:441
 -#: js/MainMenu.js:124
 -msgid "Help"
++#: js/widgets/dialog/ImportDialog.js:445
 +msgid "Conflict"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:442
 -#: js/MainMenu.js:131
 -msgid "Debug Console (Ctrl + F11)"
++#: js/widgets/dialog/ImportDialog.js:446
 +msgid "First Conflict"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:443
 -#: js/MainMenu.js:137 js/widgets/dialog/PreferencesPanel.js:36
 -msgid "Preferences"
++#: js/widgets/dialog/ImportDialog.js:447
 +msgid "Previous Conflict"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:444
 -#: js/MainMenu.js:144
 -msgid "Edit Profile"
++#: js/widgets/dialog/ImportDialog.js:448
 +msgid "Next Conflict"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:445
 -#: js/MainMenu.js:151
 -msgid "Change password"
++#: js/widgets/dialog/ImportDialog.js:449
 +msgid "Last Conflict"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:451
 -#: js/MainMenu.js:158
 -msgid "Logout"
++#: js/widgets/dialog/ImportDialog.js:455
 +msgid "Conflict is resolved"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:456
 -#: js/MainMenu.js:159
 -msgid "Logout from {0}"
++#: js/widgets/dialog/ImportDialog.js:460
 +msgid "Resolve all conflicts"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:550
 -#: js/MainMenu.js:176
 -msgid "Allow desktop notifications"
++#: js/widgets/dialog/ImportDialog.js:554
 +msgid "Processing Conflict Data"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:575 js/widgets/dialog/ImportDialog.js:595
 -#: js/MainMenu.js:177
 -msgid "Request permissions for webkit desktop notifications."
++#: js/widgets/dialog/ImportDialog.js:579 js/widgets/dialog/ImportDialog.js:599
 +msgid "No conflict to resolve"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:594
 -#: js/MainMenu.js:187
 -msgid "Install web app"
++#: js/widgets/dialog/ImportDialog.js:598
 +#, python-brace-format
 +msgid "(This is record {0} in your import file)"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:619
 -#: js/MainMenu.js:188
 -msgid "Install Tine 2.0 as web app in your browser."
++#: js/widgets/dialog/ImportDialog.js:623
 +msgid "No Detail Informations"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:624
 -#: js/MainMenu.js:243 js/widgets/grid/GridPanel.js:1773
 -#: js/widgets/tree/ContextMenu.js:346 js/widgets/dialog/EditDialog.js:827
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:690
 -#: js/widgets/persistentfilter/PickerPanel.js:325
 -msgid "Confirm"
++#: js/widgets/dialog/ImportDialog.js:628
 +#: js/widgets/dialog/MultipleEditResultSummary.js:213
 +msgid "Summary"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:653
 -#: js/MainMenu.js:243
 -msgid "Are you sure you want to logout?"
++#: js/widgets/dialog/ImportDialog.js:657
 +#: js/widgets/dialog/MultipleEditResultSummary.js:192
 +msgid "Index"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:654
 -#: js/MainMenu.js:257
 -msgid "Logging you out..."
++#: js/widgets/dialog/ImportDialog.js:658
 +#: js/widgets/dialog/MultipleEditResultSummary.js:196
 +#: js/widgets/form/RecordPickerComboBox.js:294
 +#: js/widgets/relation/GenericPickerGridPanel.js:916
 +#: js/widgets/relation/GenericPickerGridPanel.js:929
 +#: js/PasswordChangeDialog.js:100 js/PasswordChangeDialog.js:110
 +msgid "Failure"
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:700
 -#: js/data/Record.js:199
 -msgid "Task"
 -msgid_plural "Tasks"
 -msgstr[0] ""
 -msgstr[1] ""
 -
 -#: js/data/Record.js:203
 -msgid "to do list"
 -msgid_plural "to do lists"
 -msgstr[0] ""
 -msgstr[1] ""
 -
 -#: js/ExceptionHandler.js:169
 -msgid "Your session timed out. You need to login again."
++#: js/widgets/dialog/ImportDialog.js:704
 +#, python-brace-format
 +msgid "{0} records had failures and where discarded."
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:742
 -#: js/ExceptionHandler.js:184
 -msgid "Insufficient Rights"
++#: js/widgets/dialog/ImportDialog.js:746
 +#, python-brace-format
 +msgid "In total we found {0} records in your import file."
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:745
 -#: js/ExceptionHandler.js:185
 -msgid "Sorry, you are not permitted to perform this action"
++#: js/widgets/dialog/ImportDialog.js:749
 +#, python-brace-format
 +msgid "{0} of them will be added as new records into: \"{1}\"."
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:752
 -#: js/ExceptionHandler.js:193
 -msgid "Not Found"
++#: js/widgets/dialog/ImportDialog.js:756
 +#, python-brace-format
 +msgid "{0} of them where identified as duplicates."
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:755
 -#: js/ExceptionHandler.js:194
++#: js/widgets/dialog/ImportDialog.js:759
 +#, python-brace-format
  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."
 +"From the identified duplicates {0} will be merged into the existing records."
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:759
 -#: js/ExceptionHandler.js:202
 -msgid "Concurrent Updates"
++#: js/widgets/dialog/ImportDialog.js:763
 +#, python-brace-format
 +msgid "From the identified duplicates {0} will be discarded."
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:775
 -#: 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/ImportDialog.js:779
 +#, python-brace-format
 +msgid "All records will be tagged with: \"{0}\" so you can find them easily."
  msgstr ""
  
- #: js/widgets/dialog/ImportDialog.js:786
 -#: js/ExceptionHandler.js:211
 -msgid "Service Unavailable"
++#: js/widgets/dialog/ImportDialog.js:790
 +#, python-brace-format
 +msgid "{0} records have failures and will be discarded."
  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/LinkPanel.js:46
 +msgid "Links"
  msgstr ""
  
 -#: js/ExceptionHandler.js:218
 -msgid "Server Message:"
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:341
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:475
 +msgid "Delete value from all selected records"
  msgstr ""
  
 -#: js/ExceptionHandler.js:220
 -msgid "Invalid Data"
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:458
 +msgid "Undo change for all selected records"
  msgstr ""
  
 -#: js/ExceptionHandler.js:221
 -msgid "Your input data is not valid. Please provide valid data."
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:533
 +#, python-brace-format
 +msgid "Edit {0} {1}"
  msgstr ""
  
 -#: js/ExceptionHandler.js:239
 -msgid "Timeout"
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:592
 +msgid "Different Values"
  msgstr ""
  
 -#: js/ExceptionHandler.js:240
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:593
  msgid ""
 -"Sorry, some timeout occured while processing your request. Please reload "
 -"your browser, try again or contact your administrator."
 +"This field has different values. Editing this field will overwrite the old "
 +"values."
  msgstr ""
  
 -#: js/ExceptionHandler.js:248
 -msgid "No Response"
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:690
 +#: js/widgets/dialog/EditDialog.js:851 js/widgets/tree/ContextMenu.js:357
 +#: js/widgets/persistentfilter/PickerPanel.js:326
 +#: js/widgets/grid/GridPanel.js:1810 js/MainMenu.js:263
 +msgid "Confirm"
  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/MultipleEditDialogPlugin.js:690
 +#, python-brace-format
 +msgid "Do you really want to change these {0} records?"
  msgstr ""
  
 -#: js/ExceptionHandler.js:256
 -msgid "Out of Resources"
 +#: js/widgets/dialog/MultipleEditDialogPlugin.js:693
 +msgid "Applying changes"
  msgstr ""
  
 -#: js/ExceptionHandler.js:257
 -msgid ""
 -"Sorry, the Server stated a \"memory exhausted\" condition. Please contact "
 -"your administrator."
 +#: js/widgets/dialog/WizardPanel.js:173
 +msgid "Back"
  msgstr ""
  
 -#: js/ExceptionHandler.js:273
 -msgid "No Role Memberships"
 +#: js/widgets/dialog/WizardPanel.js:180
 +msgid "Next"
  msgstr ""
  
 -#: js/ExceptionHandler.js:274
 -msgid ""
 -"Your user account has no role memberships. Please contact your administrator."
 +#: js/widgets/dialog/WizardPanel.js:194
 +msgid "Finish"
  msgstr ""
  
 -#: js/ExceptionHandler.js:289
 -msgid "Method Not Found / Insufficent Permissions"
 +#: js/widgets/dialog/PreferencesPanel.js:36 js/MainMenu.js:157
 +msgid "Preferences"
  msgstr ""
  
 -#: 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."
 +#: js/widgets/dialog/PreferencesPanel.js:185
 +msgid "There are no preferences for this application."
  msgstr ""
  
 -#: js/Container.js:123
 -msgid "All {0}"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:87
 +#: js/widgets/dialog/MultipleEditResultSummary.js:86
 +#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:69
 +msgid "OK"
  msgstr ""
  
 -#: js/Container.js:124
 -msgid "Shared {0}"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:134
 +msgid "Merging Records..."
  msgstr ""
  
 -#: js/Container.js:125
 -msgid "Other Users {0}"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:173
 +msgid "Merge Failed"
  msgstr ""
  
 -#: js/Container.js:130
 -msgid "My {0}"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:173
 +#, python-brace-format
 +msgid "The merge succeeded, but the duplicate {0} could not be deleted."
  msgstr ""
  
 -#: js/widgets/EditRecord.js:131 js/widgets/dialog/EditDialog.js:442
 -#: js/widgets/dialog/EditDialog.js:470
 -msgid "Saved in"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:212
 +#, python-brace-format
 +msgid "Merge {0}, prefer First"
  msgstr ""
  
 -#: js/widgets/EditRecord.js:188 js/widgets/dialog/EditDialog.js:402
 -msgid "delete"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:213
 +#, python-brace-format
 +msgid "Merge {0}, prefer Second"
  msgstr ""
  
 -#: js/widgets/tags/TagToggleBox.js:52
 -msgid "Detach Tags"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:220
 +#: js/widgets/grid/GridPanel.js:616
 +#, python-brace-format
 +msgid "Merge {0}"
  msgstr ""
  
 -#: js/widgets/tags/TagToggleBox.js:52
 -msgid "Attach Tags"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:223
 +#, python-brace-format
 +msgid "First {0}"
  msgstr ""
  
 -#: js/widgets/tags/TagToggleBox.js:140
 -msgid "No Tags to detach found in the selected records"
 +#: js/widgets/dialog/DuplicateMergeDialog.js:224
 +#, python-brace-format
 +msgid "Second {0}"
  msgstr ""
  
 -#: js/widgets/tags/TagToggleBox.js:141
 -msgid "Please Wait..."
 +#: js/widgets/dialog/DuplicateMergeDialog.js:225
 +#, python-brace-format
 +msgid "Final {0}"
  msgstr ""
  
 -#: js/widgets/tags/TagToggleBox.js:152
 -msgid "Detaching Tags"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:41
 +msgid "The record you try to add might already exist."
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:114
 -msgid "Add a new personal tag"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:196
 +msgid "Field Group"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:117
 -msgid "Add New Personal Tag"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:210
 +msgid "My Value"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:118
 -msgid "Please note: You create a personal tag. Only you can see it!"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:218
 +msgid "Existing Value"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:118
 -msgid "Enter tag name:"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:226
 +msgid "Final Value"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:159
 -msgid "No Tags to display"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:243
 +msgid "Action:"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:182
 -msgid "Detach tag"
 -msgid_plural "Detach tags"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:259
 +msgid "Merge, keeping existing details"
 +msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:192
 -msgid "Edit tag"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:260
 +msgid "Merge, keeping my details"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:197 js/widgets/tags/TagsPanel.js:202
 -msgid "Rename Tag"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:261
 +msgid "Keep existing record and discard mine"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:202
 -msgid "Please enter a new name:"
 +#: js/widgets/dialog/DuplicateResolveGridPanel.js:262
 +msgid "Keep both records"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:211
 -msgid "Edit Description"
 -msgstr ""
 +#: js/widgets/dialog/ExportDialog.js:48 js/widgets/container/GrantsGrid.js:51
 +#: js/Models.js:338
 +msgid "Export"
 +msgid_plural "Export"
 +msgstr[0] ""
 +msgstr[1] ""
  
 -#: js/widgets/tags/TagsPanel.js:216
 -msgid "Description for tag"
 +#: js/widgets/dialog/ExportDialog.js:84
 +#, python-brace-format
 +msgid "Export {0} {1}"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:216
 -msgid "Please enter new description:"
 +#: js/widgets/dialog/ExportDialog.js:111
 +msgid "Export definition"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:225
 -msgid "Change Color"
 +#: js/widgets/dialog/ExportDialog.js:120
 +msgid "Select Export Definition ..."
  msgstr ""
  
 -#: 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..."
 +#: js/widgets/dialog/EditDialog.js:427 js/widgets/EditRecord.js:188
 +msgid "delete"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:272
 -msgid "Deleting Tag"
 -msgid_plural "Deleting Tags"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/dialog/EditDialog.js:466 js/widgets/dialog/EditDialog.js:494
 +#: js/widgets/EditRecord.js:131
 +msgid "Saved in"
 +msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:288 js/widgets/tags/TagsPanel.js:380
 -#: js/widgets/tags/TagsPanel.js:413 js/widgets/dialog/EditDialog.js:839
 -msgid "Failed"
 +#: js/widgets/dialog/EditDialog.js:623 js/widgets/grid/GridPanel.js:567
 +#, python-brace-format
 +msgid "Copy {0}"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:288
 -msgid "Could not delete Tag(s)."
 +#: js/widgets/dialog/EditDialog.js:626
 +#, python-brace-format
 +msgid "Add New {0}"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:332 js/widgets/tags/TagsPanel.js:394
 -msgid "Notice"
 +#: js/widgets/dialog/EditDialog.js:628
 +#, python-brace-format
 +msgid "Edit {0} \"{1}\""
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:333 js/widgets/tags/TagsPanel.js:395
 -msgid "The minimum tag length is three."
 +#: js/widgets/dialog/EditDialog.js:699
 +#, python-brace-format
 +msgid "Transferring {0}..."
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:380
 -msgid "Could not create 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:413
 -msgid "Could not update tag."
 +#: js/widgets/dialog/EditDialog.js:853 js/widgets/grid/GridPanel.js:1853
 +#, python-brace-format
 +msgid "Deleting {0}"
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:509
 -#: js/widgets/relation/GenericPickerGridPanel.js:457
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:191
 -#: js/ExceptionDialog.js:162
 -msgid "Description"
 +#: js/widgets/dialog/EditDialog.js:863
 +#, python-brace-format
 +msgid "Could not delete {0}."
  msgstr ""
  
 -#: js/widgets/tags/TagsPanel.js:513
 -#: js/widgets/container/PropertiesDialog.js:113
 -msgid "Color"
 +#: js/widgets/dialog/EditDialog.js:918
 +#, python-brace-format
 +msgid "Resolve Duplicate {0} Suspicion"
  msgstr ""
  
 -#: js/widgets/tags/TagsMassAttachAction.js:18
 -msgid "Add Tag"
 +#: 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/TagsMassAttachAction.js:76
 -msgid "Attach the following tag to all selected items:"
 +#: 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/TagsMassAttachAction.js:98
 -msgid "Select Tag"
 +#: js/widgets/dialog/FileListDialog.js:93
 +msgid "No"
  msgstr ""
  
 -#: js/widgets/tags/TagsMassAttachAction.js:128
 -msgid "Attaching Tag"
 +#: js/widgets/dialog/FileListDialog.js:102
 +msgid "Yes"
  msgstr ""
  
 -#: js/widgets/tags/TagFilter.js:30 js/Models.js:141
 -msgid "Tag"
 -msgid_plural "Tags"
 -msgstr[0] ""
 -msgstr[1] ""
 +#: js/widgets/dialog/AttachmentsGridPanel.js:63
 +msgid "Attachments"
 +msgstr ""
  
 -#: js/widgets/tags/TagsMassDetachAction.js:18
 -msgid "Detach tag(s)"
 +#: js/widgets/dialog/AttachmentsGridPanel.js:64
 +msgid "Attachment"
  msgstr ""
  
 -#: js/widgets/tags/TagsMassDetachAction.js:84
 -msgid "Select Tag(s) to detach"
 +#: js/widgets/dialog/AttachmentsGridPanel.js:94
 +msgid "Size"
  msgstr ""
  
 -#: js/widgets/tags/TagCombo.js:46
 -msgid "tag name"
 +#: js/widgets/dialog/AttachmentsGridPanel.js:102
 +msgid "Content Type"
  msgstr ""
  
 -#: js/widgets/VersionCheck.js:50 js/widgets/VersionCheck.js:59
 -msgid "New version of Tine 2.0 available"
 +#: js/widgets/dialog/AttachmentsGridPanel.js:104
 +#: js/widgets/relation/GenericPickerGridPanel.js:461
 +#: js/widgets/grid/GridPanel.js:1419
 +msgid "Creation Time"
  msgstr ""
  
 -#: js/widgets/VersionCheck.js:51 js/widgets/VersionCheck.js:60
 -msgid "Version \"{0}\" of Tine 2.0 is available."
 +#: js/widgets/dialog/AttachmentsGridPanel.js:131
 +#: js/widgets/tree/ContextMenu.js:124
 +msgid "Download"
  msgstr ""
  
 -#: js/widgets/VersionCheck.js:52
 -msgid "It's a critical update and must be installed as soon as possible!"
 +#: js/widgets/dialog/MultipleEditResultSummary.js:146
 +#, python-brace-format
 +msgid "You edited {0} {1}."
  msgstr ""
  
 -#: js/widgets/VersionCheck.js:61
 -msgid "Please consider updating!"
 +#: js/widgets/dialog/MultipleEditResultSummary.js:149
 +#, python-brace-format
 +msgid "{0} {1} have been updated properly."
  msgstr ""
  
 -#: js/widgets/grid/PickerGridPanel.js:162
 -msgid "Remove record"
 +#: js/widgets/dialog/MultipleEditResultSummary.js:149
 +#, python-brace-format
 +msgid "{0} {1} has been updated properly."
  msgstr ""
  
 -#: js/widgets/grid/PickerGridPanel.js:260 js/widgets/grid/PickerFilter.js:310
 -#: js/widgets/grid/FilterModelMultiSelect.js:214
 -#: js/widgets/container/FilterModel.js:267
 -msgid "Selected  {0}"
 +#: 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/grid/PickerGridPanel.js:304
 -msgid "Search for records ..."
 +#: 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/grid/FilterModel.js:180
 -msgid "today"
 +#: js/widgets/dialog/PreferencesTreePanel.js:67
 +msgid "General Preferences"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:181
 -msgid "yesterday"
 +#: js/widgets/dialog/PreferencesTreePanel.js:87
 +msgid "My Profile"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:182
 -msgid "this week"
 +#: js/widgets/form/RecordPickerManager.js:48
 +#: js/widgets/form/RecordPickerComboBox.js:119
 +msgid "Searching..."
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:183
 -msgid "last week"
 +#: js/widgets/form/FileUploadButton.js:65
 +msgid "Wrong File Type"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:184
 -msgid "the week before last"
 +#: js/widgets/form/FileUploadButton.js:65
 +msgid "Please select a file with one of the following extensions:"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:185 js/widgets/grid/MonthFilter.js:121
 -msgid "this month"
 +#: 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/grid/FilterModel.js:186 js/widgets/grid/MonthFilter.js:122
 -msgid "last month"
 +#: js/widgets/form/ConfigPanel.js:113
 +msgid "Configuration Problem"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:187
 -msgid "last three months"
 +#: js/widgets/form/ConfigPanel.js:134
 +msgid "Invalid configuration"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:188
 -msgid "last six months"
 +#: js/widgets/form/ConfigPanel.js:158
 +msgid "Transferring Configuration..."
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:189
 -msgid "anytime"
 +#: js/widgets/form/ConfigPanel.js:254
 +msgid "Save config"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:190 js/widgets/grid/MonthFilter.js:123
 -msgid "this quarter"
 +#: js/widgets/form/ConfigPanel.js:264
 +msgid "Reload config"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:191 js/widgets/grid/MonthFilter.js:124
 -msgid "last quarter"
 +#: js/widgets/mainscreen/WestPanel.js:302
 +msgid "containers"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:192 js/widgets/grid/MonthFilter.js:125
 -msgid "this year"
 +#: js/widgets/mainscreen/WestPanel.js:329
 +msgid "Favorites"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:193 js/widgets/grid/MonthFilter.js:126
 -msgid "last year"
 +#: js/widgets/VersionCheck.js:50 js/widgets/VersionCheck.js:59
 +msgid "New version of Tine 2.0 available"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:204
 -msgid "tomorrow"
 +#: js/widgets/VersionCheck.js:51 js/widgets/VersionCheck.js:60
 +#, python-brace-format
 +msgid "Version \"{0}\" of Tine 2.0 is available."
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:205
 -msgid "next week"
 +#: js/widgets/VersionCheck.js:52
 +msgid "It's a critical update and must be installed as soon as possible!"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:206
 -msgid "next month"
 +#: js/widgets/VersionCheck.js:61
 +msgid "Please consider updating!"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:207
 -msgid "next quarter"
 +#: js/widgets/tree/ContextMenu.js:35 js/widgets/grid/FileUploadGrid.js:241
 +#: js/widgets/grid/GridPanel.js:578
 +#, python-brace-format
 +msgid "Add {0}"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:208
 -msgid "next year"
 +#: js/widgets/tree/ContextMenu.js:43 js/widgets/tree/ContextMenu.js:276
 +#, python-brace-format
 +msgid "Rename {0}"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:224
 -msgid "contains"
 +#: js/widgets/tree/ContextMenu.js:52 js/widgets/grid/GridPanel.js:652
 +#: js/widgets/grid/GridPanel.js:653 js/widgets/grid/GridPanel.js:655
 +#, python-brace-format
 +msgid "Delete {0}"
 +msgid_plural "Delete {0}"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/widgets/tree/ContextMenu.js:61
 +#, python-brace-format
 +msgid "Manage {0} Permissions"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:225
 -msgid "reg. exp."
 +#: js/widgets/tree/ContextMenu.js:69
 +#, python-brace-format
 +msgid "{0} Properties"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:226 js/widgets/container/FilterModel.js:160
 -#: js/widgets/container/FilterModel.js:164
 -msgid "is equal to"
 +#: js/widgets/tree/ContextMenu.js:78
 +#, python-brace-format
 +msgid "Set {0} color"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:227
 -msgid "is equal to without (-, )"
 +#: js/widgets/tree/ContextMenu.js:92
 +#, python-brace-format
 +msgid "Reload {0}"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:228
 -msgid "is greater than"
 +#: js/widgets/tree/ContextMenu.js:100 js/widgets/grid/FileUploadGrid.js:195
 +msgid "Resume upload"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:229
 -msgid "is less than"
 -msgstr ""
 -
 -#: js/widgets/grid/FilterModel.js:230
 -msgid "is not"
 +#: js/widgets/tree/ContextMenu.js:109
 +msgid "Edit Properties"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:231
 -msgid "one of"
 +#: js/widgets/tree/ContextMenu.js:116 js/widgets/grid/FileUploadGrid.js:187
 +msgid "Pause upload"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:232
 -msgid "none of"
 +#: js/widgets/tree/ContextMenu.js:132
 +msgid "Publish"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:233
 -msgid "is before"
 +#: js/widgets/tree/ContextMenu.js:196
 +#, python-brace-format
 +msgid "New {0}"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:234
 -msgid "is after"
 +#: js/widgets/tree/ContextMenu.js:196
 +#, python-brace-format
 +msgid "Please enter the name of the new {0}:"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:235
 -msgid "is within"
 +#: js/widgets/tree/ContextMenu.js:199
 +#, python-brace-format
 +msgid "No {0} added"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:236
 -msgid "is in week no."
 +#: js/widgets/tree/ContextMenu.js:199 js/widgets/tree/ContextMenu.js:283
 +#, python-brace-format
 +msgid "You have to supply a {0} name!"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:237
 -msgid "starts with"
 +#: js/widgets/tree/ContextMenu.js:202
 +#, python-brace-format
 +msgid "Creating {0}..."
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:238
 -msgid "ends with"
 +#: js/widgets/tree/ContextMenu.js:277
 +#, python-brace-format
 +msgid "Please enter the new name of the {0}:"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:239
 -msgid "defined by"
 +#: js/widgets/tree/ContextMenu.js:283
 +#, python-brace-format
 +msgid "Not renamed {0}"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:285
 -#: js/widgets/grid/ForeignRecordFilter.js:406
 -#: js/widgets/relation/FilterModel.js:92
 -msgid "select a operator"
 +#: js/widgets/tree/ContextMenu.js:357
 +#, python-brace-format
 +msgid "Do you really want to delete the {0} \"{1}\"?"
  msgstr ""
  
 -#: js/widgets/grid/FilterModel.js:409
 -msgid "Search Account ..."
 +#: js/widgets/tree/ContextMenu.js:468
 +#, python-brace-format
 +msgid "Manage Permissions for {0} \"{1}\""
  msgstr ""
  
 -#: js/widgets/grid/MonthFilter.js:34
 -msgid "Month"
 +#: js/widgets/tree/ContextMenu.js:492
 +#, python-brace-format
 +msgid "Properties for {0} \"{1}\""
  msgstr ""
  
 -#: js/widgets/grid/FilterPanel.js:78
 -msgid "Attention: There are more filters active!"
 +#: js/widgets/container/FilterModel.js:160
 +msgid "is personal of"
  msgstr ""
  
 -#: js/widgets/grid/FilterPanel.js:261
 -#: js/widgets/grid/FilterToolbarQuickFilterPlugin.js:181
 -msgid "show details"
 +#: js/widgets/container/FilterModel.js:160
 +#: js/widgets/container/FilterModel.js:164 js/widgets/grid/FilterModel.js:226
 +msgid "is equal to"
  msgstr ""
  
 -#: js/widgets/grid/FilterPanel.js:262
 -#: js/widgets/grid/FilterToolbarQuickFilterPlugin.js:182
 -msgid "Always show advanced filters"
 +#: 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/FilterPanel.js:511
 -msgid "Criteria {0}"
 +#: js/widgets/container/PropertiesDialog.js:90
 +msgid "Properties"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbarQuickFilterPlugin.js:368
 -msgid "Your view is limited by {0} criteria:"
 -msgid_plural "Your view is limited by {0} criterias:"
 -msgstr[0] ""
 -msgstr[1] ""
 -
 -#: js/widgets/grid/FileUploadGrid.js:68 js/Models.js:475
 -msgid "File"
 -msgid_plural "Files"
 -msgstr[0] ""
 -msgstr[1] ""
 -
 -#: js/widgets/grid/FileUploadGrid.js:114 js/ux/form/ImageField.js:211
 -msgid "Upload Failed"
 +#: js/widgets/container/PropertiesDialog.js:119
 +msgid "My Grants"
  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/GrantsDialog.js:52
 +msgid "Folder"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:179
 -msgid "Remove {0}"
 +#: js/widgets/container/GrantsDialog.js:95
 +msgid "Updating Grants"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:187 js/widgets/tree/ContextMenu.js:116
 -msgid "Pause upload"
 +#: js/widgets/container/GrantsDialog.js:125
 +msgid "Error"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:195 js/widgets/tree/ContextMenu.js:100
 -msgid "Resume upload"
 +#: js/widgets/container/GrantsDialog.js:126
 +msgid "You are not allowed to remove all admins for this container!"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:241 js/widgets/grid/GridPanel.js:559
 -#: js/widgets/tree/ContextMenu.js:35
 -msgid "Add {0}"
 +#: js/widgets/container/ContainerSelect.js:129
 +#: js/ux/form/ComboBoxRecentsPlugin.js:43
 +#, python-brace-format
 +msgid "choose other {0}..."
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:283
 -msgid "name"
 +#: js/widgets/container/ContainerSelect.js:132
 +#, python-brace-format
 +msgid "Select a {0}"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:290
 -msgid "size"
 +#: js/widgets/container/ContainerSelect.js:152
 +#, python-brace-format
 +msgid "Recently used {0}:"
  msgstr ""
  
 -#: js/widgets/grid/FileUploadGrid.js:297
 -msgid "type"
 +#: js/widgets/container/ContainerSelect.js:478
 +#, python-brace-format
 +msgid "please select a {0}"
  msgstr ""
  
 -#: js/widgets/grid/QuickaddGridPanel.js:91
 -msgid "Remove"
 -msgstr ""
 +#: js/widgets/container/TreePanel.js:142
 +msgid "container"
 +msgid_plural "containers"
 +msgstr[0] ""
 +msgstr[1] ""
  
 -#: js/widgets/grid/FilterToolbar.js:92 js/widgets/grid/FilterToolbar.js:595
 -msgid "Show"
 +#: js/widgets/container/TreePanel.js:547
 +#, python-brace-format
 +msgid "You are not allowed to select the {0} '{1}':"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:178
 -msgid "add new filter"
 +#: js/widgets/container/TreePanel.js:548
 +#, python-brace-format
 +msgid "{0} grant is required for desired action"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:184
 -msgid "reset all filters"
 +#: js/widgets/container/TreePanel.js:549
 +msgid "Insufficient Grants"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:190
 -msgid "start search"
 +#: js/widgets/container/CalDAVContainerPropertiesHookField.js:35
 +msgid "CalDAV URL"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:198
 -msgid "save as favorite"
 +#: js/widgets/container/GrantsGrid.js:44
 +msgid "The grant to read records of this container"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:205
 -msgid "Load a favorite"
 +#: js/widgets/container/GrantsGrid.js:46
 +msgid "The grant to add records to this container"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:370
 -msgid "select a field"
 +#: js/widgets/container/GrantsGrid.js:48
 +msgid "The grant to edit records in this container"
  msgstr ""
  
 -#: js/widgets/grid/FilterToolbar.js:408
 -msgid "Delete this filter"
 +#: js/widgets/container/GrantsGrid.js:49
 +#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:274
 +msgid "Delete"
  msgstr ""
  
 -#: js/widgets/grid/RendererManager.js:54
 -msgid "has notes"
 +#: js/widgets/container/GrantsGrid.js:50
 +msgid "The grant to delete records in this container"
  msgstr ""
  
 -#: js/widgets/grid/RendererManager.js:57
 -msgid "has relations"
 +#: js/widgets/container/GrantsGrid.js:52
 +msgid "The grant to export records from this container"
  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:428
 -msgid "Name"
 +#: js/widgets/container/GrantsGrid.js:53
 +msgid "Sync"
  msgstr ""
  
 -#: js/widgets/grid/LinkGridPanel.js:105
 -#: js/widgets/relation/GenericPickerGridPanel.js:460
 -#: js/widgets/ActivitiesPanel.js:489 js/widgets/ActivitiesPanel.js:626
 -msgid "Type"
 +#: js/widgets/container/GrantsGrid.js:54
 +msgid "The grant to synchronise records with this container"
  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/container/GrantsGrid.js:55
 +msgid "Admin"
  msgstr ""
  
 -#: js/widgets/grid/FilterStructureTreePanel.js:37
 -#: js/widgets/grid/FilterStructureTreePanel.js:51
 -msgid "or alternatively"
 +#: js/widgets/container/GrantsGrid.js:56
 +msgid "The grant to administrate this container"
  msgstr ""
  
 -#: js/widgets/grid/FilterStructureTreePanel.js:55
 -msgid "Add alternative filter"
 +#: js/widgets/container/GrantsGrid.js:58
 +msgid "Free Busy"
  msgstr ""
  
 -#: js/widgets/grid/FilterStructureTreePanel.js:61
 -msgid "Remove Filter"
 +#: js/widgets/container/GrantsGrid.js:59
 +msgid "The grant to access free busy information of events in this calendar"
  msgstr ""
  
 -#: 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/container/GrantsGrid.js:60
 +msgid "Private"
  msgstr ""
  
 -#: 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/container/GrantsGrid.js:61
 +msgid "The grant to access records marked as private in this container"
  msgstr ""
  
 -#: js/widgets/grid/GridPanel.js:312 js/widgets/grid/GridPanel.js:533
 -#: js/widgets/grid/GridPanel.js:534 js/widgets/grid/GridPanel.js:535
 -msgid "Edit {0}"
 -msgid_plural "Edit {0}"
 +#: js/widgets/relation/FilterModel.js:32
 +#: js/widgets/relation/GenericPickerGridPanel.js:133 js/Models.js:402
 +msgid "Relation"
 +msgid_plural "Relations"
  msgstr[0] ""
  msgstr[1] ""
  
@@@ -2407,747 -2296,645 +2424,757 @@@ msgid_plural "{0} minutes
  msgstr[0] ""
  msgstr[1] ""
  
 -#: js/widgets/dialog/ExportDialog.js:84
 -msgid "Export {0} {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/ExportDialog.js:111
 -msgid "Export definition"
 +#: js/prototypeTranslations.js:20 js/prototypeTranslations.js:21
 +msgid "Outdent Text"
  msgstr ""
  
 -#: js/widgets/dialog/ExportDialog.js:120
 -msgid "Select Export Definition ..."
 +#: js/prototypeTranslations.js:22 js/prototypeTranslations.js:23
 +msgid "Indent Text"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:341
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:475
 -msgid "Delete value from all selected records"
 +#: js/prototypeTranslations.js:24 js/prototypeTranslations.js:25
 +msgid "Remove Formatting"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:458
 -msgid "Undo change for all selected records"
 +#: js/ExceptionHandler.js:169
 +msgid "Your session timed out. You need to login again."
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:533
 -msgid "Edit {0} {1}"
 +#: js/ExceptionHandler.js:184
 +msgid "Insufficient Rights"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:592
 -msgid "Different Values"
 +#: js/ExceptionHandler.js:185
 +msgid "Sorry, you are not permitted to perform this action"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:593
 +#: js/ExceptionHandler.js:193
 +msgid "Not Found"
 +msgstr ""
 +
 +#: js/ExceptionHandler.js:194
  msgid ""
 -"This field has different values. Editing this field will overwrite the old "
 -"values."
 +"Sorry, your request could not be completed because the required data could "
 +"not be found. In most cases this means that someone already deleted the "
 +"data. Please refresh your current view."
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:690
 -msgid "Do you really want to change these {0} records?"
 +#: js/ExceptionHandler.js:202
 +msgid "Concurrent Updates"
  msgstr ""
  
 -#: js/widgets/dialog/MultipleEditDialogPlugin.js:693
 -msgid "Applying changes"
 +#: js/ExceptionHandler.js:203
 +msgid ""
 +"Someone else saved this record while you where editing the data. You need to "
 +"reload and make your changes again."
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesTreePanel.js:67
 -msgid "General Preferences"
 +#: js/ExceptionHandler.js:211
 +msgid "Service Unavailable"
  msgstr ""
  
 -#: js/widgets/dialog/PreferencesTreePanel.js:87
 -msgid "My Profile"
 +#: js/ExceptionHandler.js:212
 +msgid ""
 +"The server is currently unable to handle the request due to a temporary "
 +"overloading, maintenance or misconfiguration of the server. Please try again "
 +"or contact your administrator."
  msgstr ""
  
 -#: js/widgets/dialog/WizardPanel.js:173
 -msgid "Back"
 +#: js/ExceptionHandler.js:218
 +msgid "Server Message:"
  msgstr ""
  
 -#: js/widgets/dialog/WizardPanel.js:180
 -msgid "Next"
 +#: js/ExceptionHandler.js:220
 +msgid "Invalid Data"
  msgstr ""
  
 -#: js/widgets/dialog/WizardPanel.js:194
 -msgid "Finish"
 +#: js/ExceptionHandler.js:221
 +msgid "Your input data is not valid. Please provide valid data."
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:41
 -msgid "The record you try to add might already exist."
 +#: js/ExceptionHandler.js:239
 +msgid "Timeout"
 +msgstr ""
 +
 +#: js/ExceptionHandler.js:240
 +msgid ""
 +"Sorry, some timeout occured while processing your request. Please reload "
 +"your browser, try again or contact your administrator."
 +msgstr ""
 +
 +#: js/ExceptionHandler.js:248
 +msgid "No Response"
 +msgstr ""
 +
 +#: 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/ExceptionHandler.js:256
 +msgid "Out of Resources"
 +msgstr ""
 +
 +#: js/ExceptionHandler.js:257
 +msgid ""
 +"Sorry, the Server stated a \"memory exhausted\" condition. Please contact "
 +"your administrator."
 +msgstr ""
 +
 +#: js/ExceptionHandler.js:273
 +msgid "No Role Memberships"
 +msgstr ""
 +
 +#: js/ExceptionHandler.js:274
 +msgid ""
 +"Your user account has no role memberships. Please contact your administrator."
 +msgstr ""
 +
 +#: js/ExceptionHandler.js:289
 +msgid "Method Not Found / Insufficent Permissions"
 +msgstr ""
 +
 +#: 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/ExceptionDialog.js:103 js/ExceptionDialog.js:126
 +msgid "Send Report"
 +msgstr ""
 +
 +#: js/ExceptionDialog.js:155
 +msgid "The last action you made was potentially not performed correctly."
 +msgstr ""
 +
 +#: js/ExceptionDialog.js:156
 +msgid ""
 +"Please help improving this software and notify the vendor. Include a brief "
 +"description of what you where doing when the error occurred."
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:196
 -msgid "Field Group"
 +#: js/ExceptionDialog.js:170
 +msgid "Send Contact Information"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:210
 -msgid "My Value"
 +#: js/ExceptionDialog.js:187
 +msgid "Details:"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:218
 -msgid "Existing Value"
 +#: js/ExceptionDialog.js:211
 +msgid "Sending report..."
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:226
 -msgid "Final Value"
 +#: js/ExceptionDialog.js:211
 +msgid "Please wait a moment"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:243
 -msgid "Action:"
 +#: js/ExceptionDialog.js:260
 +msgid "Transmission Completed"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:259
 -msgid "Merge, keeping existing details"
 +#: js/ExceptionDialog.js:261
 +msgid "Your report has been sent. Thanks for your contribution"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:260
 -msgid "Merge, keeping my details"
 +#: js/ExceptionDialog.js:261
 +msgid "Please restart your browser now!"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:261
 -msgid "Keep existing record and discard mine"
 +#: js/Container.js:123
 +#, python-brace-format
 +msgid "All {0}"
  msgstr ""
  
 -#: js/widgets/dialog/DuplicateResolveGridPanel.js:262
 -msgid "Keep both records"
 +#: js/Container.js:124
 +#, python-brace-format
 +msgid "Shared {0}"
  msgstr ""
  
 -#: js/widgets/TimezoneChooser.js:77
 -msgid "setting new timezone..."
 +#: js/Container.js:125
 +#, python-brace-format
 +msgid "Other Users {0}"
  msgstr ""
  
 -#: js/widgets/customfields/EditDialogPlugin.js:155
 -msgid "General"
 +#: js/Container.js:130
 +#, python-brace-format
 +msgid "My {0}"
  msgstr ""
  
 -#: js/widgets/customfields/EditDialogPlugin.js:167
 -msgid "Custom Fields"
 +#: js/MainMenu.js:66
 +#, python-brace-format
 +msgid "User: {0}"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:153
 -msgid "Add a Note..."
 +#: js/MainMenu.js:112
 +msgid "Return to original user account"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:168 js/widgets/ActivitiesPanel.js:181
 -#: js/widgets/container/GrantsGrid.js:45
 -msgid "Add"
 +#: js/MainMenu.js:144
 +msgid "Help"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:168 js/widgets/ActivitiesPanel.js:491
 -msgid "Note"
 +#: js/MainMenu.js:151
 +msgid "Debug Console (Ctrl + F11)"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:182 js/widgets/ActivitiesPanel.js:413
 -msgid "Add new note"
 +#: js/MainMenu.js:164
 +msgid "Edit Profile"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:209 js/widgets/ActivitiesPanel.js:228
 -msgid "Notes"
 +#: js/MainMenu.js:171
 +msgid "Change password"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:311
 -msgid "Enter new note:"
 +#: js/MainMenu.js:178
 +msgid "Logout"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:356 js/widgets/ActivitiesPanel.js:412
 -msgid "Add Note"
 +#: js/MainMenu.js:179
 +#, python-brace-format
 +msgid "Logout from {0}"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:399
 -msgid "Add a {0} Note"
 +#: js/MainMenu.js:196
 +msgid "Allow desktop notifications"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:493
 -msgid "Timestamp"
 +#: js/MainMenu.js:197
 +msgid "Request permissions for webkit desktop notifications."
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:507
 -msgid "Displaying history records {0} - {1} of {2}"
 +#: js/MainMenu.js:207
 +msgid "Install web app"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:508
 -msgid "No history to display"
 +#: js/MainMenu.js:208
 +msgid "Install Tine 2.0 as web app in your browser."
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:608
 -msgid "History"
 +#: js/MainMenu.js:263
 +msgid "Are you sure you want to logout?"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:620
 -msgid "Quick Search"
 +#: js/MainMenu.js:277
 +msgid "Logging you out..."
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:621 js/widgets/ActivitiesPanel.js:622
 -msgid "Time"
 +#: js/AppManager.js:208
 +msgid "Missing Applications"
  msgstr ""
  
 -#: js/widgets/ActivitiesPanel.js:624
 -msgid "User"
 +#: js/AppManager.js:209
 +msgid ""
 +"There are no applications enabled for you. Please contact your administrator."
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:121
 -msgid "My favorites"
 +#: js/Models.js:274
 +msgid "Alarm"
 +msgid_plural "Alarms"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/Models.js:312
 +msgid "Import"
 +msgid_plural "Imports"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/Models.js:375
 +msgid "Credentials"
 +msgid_plural "Credentials"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/Models.js:423
 +msgid "Department"
 +msgid_plural "Departments"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/Models.js:449
 +msgid "Config"
 +msgid_plural "Configs"
 +msgstr[0] ""
 +msgstr[1] ""
 +
 +#: js/Models.js:449
 +msgid "Configs"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:297
 -msgid "Delete Favorite"
 +#: js/ApplicationStarter.js:539
 +msgid "New "
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:302
 -#: js/widgets/persistentfilter/PickerPanel.js:397
 -msgid "Edit Favorite"
 +#: js/CreditsScreen.js:36
 +msgid "Credits"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:307
 -msgid "Overwrite Favorite"
 +#: Exception/PasswordPolicyViolation.php:22
 +msgid "Password Policy Violation"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:325
 -msgid "Do you really want to delete the favorite \"{0}\"?"
 +#: Exception/MonthFormat.php:26
 +msgid "Wrong month format!"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:327
 -msgid "Deleting Favorite \"{0}\""
 +#: Exception/MonthFormat.php:31
 +msgid "The month must have the format YYYY-MM!"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:363
 -msgid "Overwrite?"
 +#: Exception/InvalidRelationConstraints.php:26
 +msgid "Invalid Relations"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:363
 -msgid "Do you want to overwrite the favorite \"{0}\"?"
 +#: 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/PickerPanel.js:365
 -msgid "Overwriting Favorite \"{0}\""
 +#: Exception/SystemGeneric.php:27
 +msgid "Generic System Exception"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:386
 -msgid "Could not save Favorite"
 +#: Exception/Record/SystemContainer.php:22
 +msgid "System Container"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:386
 -msgid "Your current view does not support favorites"
 +#: Exception/Record/SystemContainer.php:28
 +msgid "This is a system container which could not be deleted!"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:395
 -msgid "Create Favorite"
 +#: 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/PickerPanel.js:417
 -msgid "Saving Favorite \"{0}\""
 +#: ModelConfiguration.php:213
 +msgid "New Car"
  msgstr ""
  
 -#: js/widgets/persistentfilter/PickerPanel.js:593
 -msgid "(shared)"
 +#: ModelConfiguration.php:379 ModelConfiguration.php:382
 +msgid "Banking Information"
  msgstr ""
  
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:134
 -msgid "Favorite not saved"
 +#: ModelConfiguration.php:383
 +msgid "Private Information"
  msgstr ""
  
 -#: js/widgets/persistentfilter/EditPersistentFilterPanel.js:200
 -msgid "Shared Favorite (visible by all users)"
 +#: PersistentFilter.php:152
 +msgid "- The last filter I used -"
  msgstr ""
  
 -#: js/widgets/CountryCombo.js:34
 -msgid "Select a country..."
 +#: Preference.php:122
 +msgid "Page size"
  msgstr ""
  
 -#: js/widgets/account/PickerGridPanel.js:158
 -msgid "Search User"
 +#: Preference.php:123
 +msgid "Page size in grids"
  msgstr ""
  
 -#: js/widgets/account/PickerGridPanel.js:164
 -msgid "Search Group"
 +#: Preference.php:126
 +msgid "Grid stripe rows"
  msgstr ""
  
 -#: js/widgets/account/PickerGridPanel.js:170
 -msgid "Add Anyone"
 +#: Preference.php:127
 +msgid "Stripe rows in grids"
  msgstr ""
  
 -#: js/widgets/account/PickerGridPanel.js:213
 -msgid "Anyone"
 +#: Preference.php:130
 +msgid "Grid load mask"
  msgstr ""
  
 -#: js/widgets/account/PickerGridPanel.js:229
 -msgid "Search for users ..."
 +#: Preference.php:131
 +msgid "Show load mask in grids"
  msgstr ""
  
 -#: js/widgets/account/PickerGridPanel.js:251
 -msgid "Search for groups ..."
 +#: Preference.php:134
 +msgid "Dialog buttons order style"
  msgstr ""
  
 -#: js/widgets/LangChooser.js:68
 -msgid "setting new language..."
 +#: Preference.php:135
 +msgid "Dialog buttons order style (Windows / Mac)"
  msgstr ""
  
 -#: js/widgets/MainScreen.js:264
 -msgid "Save current view as favorite"
 +#: Preference.php:138
 +msgid "Auto search on filter change"
  msgstr ""
  
 -#: js/widgets/mainscreen/WestPanel.js:302
 -msgid "containers"
 +#: Preference.php:139
 +msgid "Perform auto search when filter is changed"
  msgstr ""
  
 -#: js/widgets/mainscreen/WestPanel.js:329
 -msgid "Favorites"
 +#: Preference.php:143
 +msgid "The timezone in which dates are shown in Tine 2.0."
  msgstr ""
  
 -#: js/widgets/container/GrantsDialog.js:52
 -msgid "Folder"
 +#: Preference.php:147
 +msgid "The language of the Tine 2.0 GUI."
  msgstr ""
  
 -#: js/widgets/container/GrantsDialog.js:95
 -msgid "Updating Grants"
 +#: Preference.php:150
 +msgid "Default Application"
  msgstr ""
  
 -#: js/widgets/container/GrantsDialog.js:125
 -msgid "Error"
 +#: Preference.php:151
 +msgid "The default application to show after login."
  msgstr ""
  
 -#: js/widgets/container/GrantsDialog.js:126
 -msgid "You are not allowed to remove all admins for this container!"
 +#: Preference.php:154
 +msgid "Window Type"
  msgstr ""
  
 -#: js/widgets/container/FilterModel.js:160
 -msgid "is personal of"
 +#: Preference.php:155
 +msgid "You can choose between modal windows or normal browser popup windows."
  msgstr ""
  
 -#: js/widgets/container/ContainerSelect.js:129
 -#: js/ux/form/ComboBoxRecentsPlugin.js:43
 -msgid "choose other {0}..."
 +#: Preference.php:158
 +msgid "Confirm Logout"
  msgstr ""
  
 -#: js/widgets/container/ContainerSelect.js:132
 -msgid "Select a {0}"
 +#: Preference.php:159
 +msgid "Show confirmation dialog on logout."
  msgstr ""
  
 -#: js/widgets/container/ContainerSelect.js:152
 -msgid "Recently used {0}:"
 +#: Record/RecordSetDiff.php:42
 +msgid "added"
  msgstr ""
  
 -#: js/widgets/container/ContainerSelect.js:478
 -msgid "please select a {0}"
 +#: Record/RecordSetDiff.php:43
 +msgid "removed"
  msgstr ""
  
 -#: js/widgets/container/PropertiesDialog.js:90
 -msgid "Properties"
 +#: Record/RecordSetDiff.php:44
 +msgid "modified"
  msgstr ""
  
 -#: js/widgets/container/PropertiesDialog.js:119
 -msgid "My Grants"
 +#: Exception.php:49
 +#, python-brace-format
 +msgid "Exception ({0})"
  msgstr ""
  
- #: Config.php:302
 -#: 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}':"
++#: Config.php:309
 +msgid "System IMAP"
  msgstr ""
  
- #: Config.php:304
 -#: js/widgets/container/TreePanel.js:547
 -msgid "{0} grant is required for desired action"
++#: Config.php:311
 +msgid "System IMAP server configuration."
  msgstr ""
  
- #: Config.php:313
 -#: js/widgets/container/TreePanel.js:548
 -msgid "Insufficient Grants"
++#: Config.php:320
 +msgid "System SMTP"
  msgstr ""
  
- #: Config.php:315
 -#: js/widgets/container/GrantsGrid.js:44
 -msgid "The grant to read records of this container"
++#: Config.php:322
 +msgid "System SMTP server configuration."
  msgstr ""
  
- #: Config.php:324
 -#: js/widgets/container/GrantsGrid.js:46
 -msgid "The grant to add records to this container"
++#: Config.php:331
 +msgid "System SIEVE"
  msgstr ""
  
- #: Config.php:326
 -#: js/widgets/container/GrantsGrid.js:48
 -msgid "The grant to edit records in this container"
++#: Config.php:333
 +msgid "System SIEVE server configuration."
  msgstr ""
  
- #: Config.php:335
 -#: js/widgets/container/GrantsGrid.js:49
 -msgid "Delete"
++#: Config.php:342
 +msgid "Authentication Backend"
  msgstr ""
  
- #: Config.php:337
 -#: js/widgets/container/GrantsGrid.js:50
 -msgid "The grant to delete records in this container"
++#: Config.php:344
 +msgid "Backend adapter for user authentication."
  msgstr ""
  
- #: Config.php:345
 -#: js/widgets/container/GrantsGrid.js:52
 -msgid "The grant to export records from this container"
++#: Config.php:352
 +msgid "Authentication Configuration"
  msgstr ""
  
- #: Config.php:347
 -#: js/widgets/container/GrantsGrid.js:53
 -msgid "Sync"
++#: Config.php:354
 +msgid "Authentication backend configuration."
  msgstr ""
  
- #: Config.php:356
 -#: js/widgets/container/GrantsGrid.js:54
 -msgid "The grant to synchronise records with this container"
++#: Config.php:363
 +msgid "User Backend"
  msgstr ""
  
- #: Config.php:358
 -#: js/widgets/container/GrantsGrid.js:55
 -msgid "Admin"
++#: Config.php:365
 +msgid "Backend adapter for user data."
  msgstr ""
  
- #: Config.php:366
 -#: js/widgets/container/GrantsGrid.js:56
 -msgid "The grant to administrate this container"
++#: Config.php:373
 +msgid "User Configuration"
  msgstr ""
  
- #: Config.php:368
 -#: js/widgets/container/GrantsGrid.js:58
 -msgid "Free Busy"
++#: Config.php:375
 +msgid "User backend configuration."
  msgstr ""
  
- #: Config.php:377
 -#: js/widgets/container/GrantsGrid.js:59
 -msgid "The grant to access free busy information of events in this calendar"
++#: Config.php:384
 +msgid "Cronuser ID"
  msgstr ""
  
- #: Config.php:379
 -#: js/widgets/container/GrantsGrid.js:60
 -msgid "Private"
++#: Config.php:386
 +msgid "User ID of the cron user."
  msgstr ""
  
- #: Config.php:387
 -#: js/widgets/container/GrantsGrid.js:61
 -msgid "The grant to access records marked as private in this container"
++#: Config.php:394
 +msgid "Title Postfix"
  msgstr ""
  
- #: Config.php:389
 -#: js/widgets/form/ConfigPanel.js:113
 -msgid "Configuration Problem"
++#: Config.php:396
 +msgid "Postfix string appended to the title of this installation."
  msgstr ""
  
- #: Config.php:397
 -#: js/widgets/form/ConfigPanel.js:134
 -msgid "Invalid configuration"
++#: Config.php:404
 +msgid "Redirect URL"
  msgstr ""
  
- #: Config.php:399
 -#: js/widgets/form/ConfigPanel.js:158
 -msgid "Transferring Configuration..."
++#: Config.php:406
 +msgid "Redirect to this URL after logout."
  msgstr ""
  
- #: Config.php:407
 -#: js/widgets/form/ConfigPanel.js:254
 -msgid "Save config"
++#: Config.php:414
 +msgid "Redirect to Referrer"
  msgstr ""
  
- #: Config.php:409
 -#: js/widgets/form/ConfigPanel.js:264
 -msgid "Reload config"
++#: Config.php:416
 +msgid "Redirect to referrer after logout."
  msgstr ""
  
- #: Config.php:417
 -#: js/widgets/form/FileUploadButton.js:65
 -msgid "Wrong File Type"
++#: Config.php:424
 +msgid "Redirect Always"
  msgstr ""
  
- #: Config.php:419
 -#: js/widgets/form/FileUploadButton.js:65
 -msgid "Please select a file with one of the following extensions:"
++#: Config.php:426
 +msgid "Redirect to configured redirect URL also for login."
  msgstr ""
  
- #: Config.php:427
 -#: js/widgets/form/RecordPickerManager.js:48
 -#: js/widgets/form/RecordPickerComboBox.js:119
 -msgid "Searching..."
++#: Config.php:434
 +msgid "Allowed Origins"
  msgstr ""
  
- #: Config.php:429
 -#: js/ExceptionDialog.js:103 js/ExceptionDialog.js:126
 -msgid "Send Report"
++#: Config.php:436
 +msgid "Allowed Origins for the JSON API."
  msgstr ""
  
- #: Config.php:437
 -#: js/ExceptionDialog.js:155
 -msgid "The last action you made was potentially not performed correctly."
++#: Config.php:444
 +msgid "Accepted Terms Version"
  msgstr ""
  
- #: Config.php:439
 -#: 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:446
 +msgid "Accepted version number of the terms and conditions document."
  msgstr ""
  
- #: Config.php:447
 -#: js/ExceptionDialog.js:170
 -msgid "Send Contact Information"
++#: Config.php:454
 +msgid "Use Geolocation Services"
  msgstr ""
  
- #: Config.php:449
 -#: js/ExceptionDialog.js:187
 -msgid "Details:"
++#: Config.php:456
 +msgid "Use of external Geolocation services is allowed."
  msgstr ""
  
- #: Config.php:457
 -#: js/ExceptionDialog.js:211
 -msgid "Sending report..."
++#: Config.php:464
 +msgid "Disable LDAP TLS Certificate Check"
  msgstr ""
  
- #: Config.php:459
 -#: js/ExceptionDialog.js:211
 -msgid "Please wait a moment"
++#: Config.php:466
 +msgid "LDAP TLS Certificate should not be checked"
  msgstr ""
  
- #: Config.php:468
 -#: js/ExceptionDialog.js:260
 -msgid "Transmission Completed"
++#: Config.php:475
 +msgid "Configure hook class for user sync"
  msgstr ""
  
- #: Config.php:470
 -#: js/ExceptionDialog.js:261
 -msgid "Your report has been sent. Thanks for your contribution"
++#: Config.php:477
 +msgid "Allows to change data after fetching user from sync backend"
  msgstr ""
  
- #: Config.php:478
 -#: js/ExceptionDialog.js:261
 -msgid "Please restart your browser now!"
++#: Config.php:485
 +msgid "IP Session Validator"
  msgstr ""
  
- #: Config.php:480
 -#: js/MainScreen.js:205
 -msgid "Your password expired. Please enter a new user password:"
++#: Config.php:487
 +msgid "Destroy session if the users IP changes."
  msgstr ""
  
- #: Config.php:488
 -#: js/prototypeTranslations.js:20 js/prototypeTranslations.js:21
 -msgid "Outdent Text"
++#: Config.php:495
 +msgid "UA Session Validator"
  msgstr ""
  
- #: Config.php:490
 -#: js/prototypeTranslations.js:22 js/prototypeTranslations.js:23
 -msgid "Indent Text"
++#: Config.php:497
 +msgid "Destroy session if the users user agent string changes."
  msgstr ""
  
- #: Config.php:498
 -#: js/prototypeTranslations.js:24 js/prototypeTranslations.js:25
 -msgid "Remove Formatting"
++#: Config.php:505
 +msgid "Files Directory"
  msgstr ""
  
- #: Config.php:500
 -#: 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:507
 +msgid "Directory with web server write access for user files."
  msgstr ""
  
- #: Config.php:508 Config.php:510
 -#: js/ux/Percentage.js:193
 -msgid "(paused)"
++#: Config.php:515 Config.php:517
 +msgid "Reuse last username logged"
  msgstr ""
  
- #: Config.php:518 Config.php:520
 -#: js/ux/SearchField.js:44
 -msgid "enter searchfilter"
++#: Config.php:525 Config.php:527
 +msgid "User may change password"
  msgstr ""
  
- #: Config.php:529 Config.php:531
 -#: js/ux/grid/PagingToolbar.js:57
 -msgid "{0} selected"
++#: Config.php:536 Config.php:538
 +msgid "Enable password policy"
  msgstr ""
  
- #: Config.php:539
 -#: js/ux/grid/PagingToolbar.js:58
 -msgid "Unselect all"
++#: Config.php:546
 +msgid "Only ASCII"
  msgstr ""
  
- #: Config.php:541
 -#: js/ux/grid/PagingToolbar.js:59
 -msgid "Select all pages ({0} records)"
++#: Config.php:548
 +msgid "Only ASCII characters are allowed in passwords."
  msgstr ""
  
- #: Config.php:549
 -#: js/ux/grid/PagingToolbar.js:60
 -msgid "Toggle selection"
++#: Config.php:556
 +msgid "Minimum length"
  msgstr ""
  
- #: Config.php:551
 -#: js/ux/ConnectionStatus.js:56
 -msgid "online"
++#: Config.php:558
 +msgid "Minimum password length"
  msgstr ""
  
- #: Config.php:559
 -#: js/ux/ConnectionStatus.js:57
 -msgid "offline"
++#: Config.php:566
 +msgid "Minimum word chars"
  msgstr ""
  
- #: Config.php:561
 -#: js/ux/form/RecordsComboBox.js:26
 -msgid "Software Version"
++#: Config.php:568
 +msgid "Minimum word chars in password"
  msgstr ""
  
- #: Config.php:569
 -#: js/ux/form/ImageField.js:76
 -msgid "Loading"
++#: Config.php:576
 +msgid "Minimum uppercase chars"
  msgstr ""
  
- #: Config.php:571
 -#: js/ux/form/ImageField.js:78
 -msgid "Click to edit"
++#: Config.php:578
 +msgid "Minimum uppercase chars in password"
  msgstr ""
  
- #: Config.php:579
 -#: js/ux/form/ImageField.js:146
 -msgid "Image Failed"
++#: Config.php:586
 +msgid "Minimum special chars"
  msgstr ""
  
- #: Config.php:581
 -#: js/ux/form/ImageField.js:146
 -msgid "Could not load image. Please notify your Administrator"
++#: Config.php:588
 +msgid "Minimum special chars in password"
  msgstr ""
  
- #: Config.php:589
 -#: js/ux/form/ImageField.js:168
 -msgid "Not An Image"
++#: Config.php:596
 +msgid "Minimum numbers"
  msgstr ""
  
- #: Config.php:591
 -#: js/ux/form/ImageField.js:168
 -msgid "Please select an image file (gif/png/jpeg)"
++#: Config.php:598
 +msgid "Minimum numbers in password"
  msgstr ""
  
- #: Config.php:599
 -#: js/ux/form/ImageField.js:211
 -msgid "Could not upload image. Please notify your Administrator"
++#: Config.php:606
 +msgid "Forbid part of username"
  msgstr ""
  
- #: Config.php:601
 -#: js/ux/form/ImageField.js:224
 -msgid "Change Image"
++#: Config.php:608
 +msgid "Forbid part of username in password"
  msgstr ""
  
- #: Config.php:609
 -#: js/ux/form/ImageField.js:232 js/ux/form/ImageField.js:250
 -msgid "Crop Image"
++#: Config.php:616
 +msgid "Automatic bugreports"
  msgstr ""
  
- #: Config.php:611
 -#: js/ux/form/ImageField.js:256
 -msgid "Delete Image"
++#: Config.php:618
 +msgid ""
 +"Always send bugreports, even on timeouts and other exceptions / failures."
  msgstr ""
  
- #: Config.php:619
 -#: js/ux/form/ImageField.js:265
 -msgid "Show Original Image"
++#: Config.php:626
 +msgid "Last sessions cleanup run"
  msgstr ""
  
- #: Config.php:621
 -#: js/Models.js:272
 -msgid "Alarm"
 -msgid_plural "Alarms"
 -msgstr[0] ""
 -msgstr[1] ""
++#: Config.php:628
 +msgid "Stores the timestamp of the last sessions cleanup task run."
 +msgstr ""
  
- #: Config.php:629
 -#: js/Models.js:310
 -msgid "Import"
 -msgid_plural "Imports"
 -msgstr[0] ""
 -msgstr[1] ""
++#: Config.php:636
 +msgid "Maximum login failures"
 +msgstr ""
  
- #: Config.php:631
 -#: js/Models.js:373
 -msgid "Credentials"
 -msgid_plural "Credentials"
 -msgstr[0] ""
 -msgstr[1] ""
++#: Config.php:638
 +msgid "Maximum allowed login failures before blocking account"
 +msgstr ""
  
- #: Config.php:639
 -#: js/Models.js:421
 -msgid "Department"
 -msgid_plural "Departments"
 -msgstr[0] ""
 -msgstr[1] ""
++#: Config.php:646
 +msgid "Disable Anyone Account"
 +msgstr ""
  
- #: Config.php:641
 -#: js/Models.js:447
 -msgid "Config"
 -msgid_plural "Configs"
 -msgstr[0] ""
 -msgstr[1] ""
++#: Config.php:648
 +msgid "Disallow anyone account in grant configurations"
 +msgstr ""
  
- #: Config.php:649
 -#: js/Models.js:447
 -msgid "Configs"
++#: Config.php:656
 +msgid "Alarms sent each job"
  msgstr ""
  
- #: Config.php:651
 -#: views/update.php:24
 -msgid "Tine 2.0 needs to be updated or is not installed yet."
++#: Config.php:658
 +msgid ""
 +"Allows to configure the maximum number of alarm notifications in each run of "
 +"sendPendingAlarms (0 = no limit)"
  msgstr ""
  
- #: Config.php:659
 -#: views/update.php:25
 -msgid "Please wait or contact your administrator"
++#: Config.php:666
++msgid "Account deactivation notfication"
+ msgstr ""
 -#: Exception.php:49
 -msgid "Exception ({0})"
++#: Config.php:668
++msgid ""
++"Send E-Mail to user if the account is deactivated or the user tries to login "
++"with deactivated account"
+ msgstr ""
 -#: Container.php:682
 -#, python-format
 -msgid "%s's personal container"
++#: Config.php:676
 +msgid "Role change allowed"
  msgstr ""
  
- #: Config.php:661
 -#: Container.php:1530
++#: Config.php:678
  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 ""
 -
 -msgid "Records"
 -msgstr ""