NotificationModel refactoring

This commit is contained in:
Frederic Guillot 2016-07-23 14:50:59 -04:00
parent b6119e7dee
commit a823cc1d08
No known key found for this signature in database
GPG Key ID: 92D77191BA7FBC99
49 changed files with 494 additions and 232 deletions

View File

@ -19,5 +19,26 @@ abstract class BaseEventBuilder extends Base
* @access public * @access public
* @return GenericEvent|null * @return GenericEvent|null
*/ */
abstract public function build(); abstract public function buildEvent();
/**
* Get event title with author
*
* @access public
* @param string $author
* @param string $eventName
* @param array $eventData
* @return string
*/
abstract public function buildTitleWithAuthor($author, $eventName, array $eventData);
/**
* Get event title without author
*
* @access public
* @param string $eventName
* @param array $eventData
* @return string
*/
abstract public function buildTitleWithoutAuthor($eventName, array $eventData);
} }

View File

@ -3,6 +3,7 @@
namespace Kanboard\EventBuilder; namespace Kanboard\EventBuilder;
use Kanboard\Event\CommentEvent; use Kanboard\Event\CommentEvent;
use Kanboard\Model\CommentModel;
/** /**
* Class CommentEventBuilder * Class CommentEventBuilder
@ -32,7 +33,7 @@ class CommentEventBuilder extends BaseEventBuilder
* @access public * @access public
* @return CommentEvent|null * @return CommentEvent|null
*/ */
public function build() public function buildEvent()
{ {
$comment = $this->commentModel->getById($this->commentId); $comment = $this->commentModel->getById($this->commentId);
@ -45,4 +46,53 @@ class CommentEventBuilder extends BaseEventBuilder
'task' => $this->taskFinderModel->getDetails($comment['task_id']), 'task' => $this->taskFinderModel->getDetails($comment['task_id']),
)); ));
} }
/**
* Get event title with author
*
* @access public
* @param string $author
* @param string $eventName
* @param array $eventData
* @return string
*/
public function buildTitleWithAuthor($author, $eventName, array $eventData)
{
switch ($eventName) {
case CommentModel::EVENT_UPDATE:
return e('%s updated a comment on the task #%d', $author, $eventData['task']['id']);
case CommentModel::EVENT_CREATE:
return e('%s commented on the task #%d', $author, $eventData['task']['id']);
case CommentModel::EVENT_DELETE:
return e('%s removed a comment on the task #%d', $author, $eventData['task']['id']);
case CommentModel::EVENT_USER_MENTION:
return e('%s mentioned you in a comment on the task #%d', $author, $eventData['task']['id']);
default:
return '';
}
}
/**
* Get event title without author
*
* @access public
* @param string $eventName
* @param array $eventData
* @return string
*/
public function buildTitleWithoutAuthor($eventName, array $eventData)
{
switch ($eventName) {
case CommentModel::EVENT_CREATE:
return e('New comment on task #%d', $eventData['comment']['task_id']);
case CommentModel::EVENT_UPDATE:
return e('Comment updated on task #%d', $eventData['comment']['task_id']);
case CommentModel::EVENT_DELETE:
return e('Comment removed on task #%d', $eventData['comment']['task_id']);
case CommentModel::EVENT_USER_MENTION:
return e('You were mentioned in a comment on the task #%d', $eventData['task']['id']);
default:
return '';
}
}
} }

View File

@ -0,0 +1,48 @@
<?php
namespace Kanboard\EventBuilder;
use Iterator;
/**
* Class EventIteratorBuilder
*
* @package Kanboard\EventBuilder
* @author Frederic Guillot
*/
class EventIteratorBuilder implements Iterator {
private $position = 0;
private $builders = array();
/**
* @return $this
*/
public function withBuilder(BaseEventBuilder $builder)
{
$this->builders[] = $builder;
return $this;
}
public function rewind() {
$this->position = 0;
}
/**
* @return BaseEventBuilder
*/
public function current() {
return $this->builders[$this->position];
}
public function key() {
return $this->position;
}
public function next() {
++$this->position;
}
public function valid() {
return isset($this->builders[$this->position]);
}
}

View File

@ -33,7 +33,7 @@ class ProjectFileEventBuilder extends BaseEventBuilder
* @access public * @access public
* @return GenericEvent|null * @return GenericEvent|null
*/ */
public function build() public function buildEvent()
{ {
$file = $this->projectFileModel->getById($this->fileId); $file = $this->projectFileModel->getById($this->fileId);
@ -47,4 +47,31 @@ class ProjectFileEventBuilder extends BaseEventBuilder
'project' => $this->projectModel->getById($file['project_id']), 'project' => $this->projectModel->getById($file['project_id']),
)); ));
} }
/**
* Get event title with author
*
* @access public
* @param string $author
* @param string $eventName
* @param array $eventData
* @return string
*/
public function buildTitleWithAuthor($author, $eventName, array $eventData)
{
return '';
}
/**
* Get event title without author
*
* @access public
* @param string $eventName
* @param array $eventData
* @return string
*/
public function buildTitleWithoutAuthor($eventName, array $eventData)
{
return '';
}
} }

View File

@ -4,6 +4,7 @@ namespace Kanboard\EventBuilder;
use Kanboard\Event\SubtaskEvent; use Kanboard\Event\SubtaskEvent;
use Kanboard\Event\GenericEvent; use Kanboard\Event\GenericEvent;
use Kanboard\Model\SubtaskModel;
/** /**
* Class SubtaskEventBuilder * Class SubtaskEventBuilder
@ -59,7 +60,7 @@ class SubtaskEventBuilder extends BaseEventBuilder
* @access public * @access public
* @return GenericEvent|null * @return GenericEvent|null
*/ */
public function build() public function buildEvent()
{ {
$eventData = array(); $eventData = array();
$eventData['subtask'] = $this->subtaskModel->getById($this->subtaskId, true); $eventData['subtask'] = $this->subtaskModel->getById($this->subtaskId, true);
@ -76,4 +77,49 @@ class SubtaskEventBuilder extends BaseEventBuilder
$eventData['task'] = $this->taskFinderModel->getDetails($eventData['subtask']['task_id']); $eventData['task'] = $this->taskFinderModel->getDetails($eventData['subtask']['task_id']);
return new SubtaskEvent($eventData); return new SubtaskEvent($eventData);
} }
/**
* Get event title with author
*
* @access public
* @param string $author
* @param string $eventName
* @param array $eventData
* @return string
*/
public function buildTitleWithAuthor($author, $eventName, array $eventData)
{
switch ($eventName) {
case SubtaskModel::EVENT_UPDATE:
return e('%s updated a subtask for the task #%d', $author, $eventData['task']['id']);
case SubtaskModel::EVENT_CREATE:
return e('%s created a subtask for the task #%d', $author, $eventData['task']['id']);
case SubtaskModel::EVENT_DELETE:
return e('%s removed a subtask for the task #%d', $author, $eventData['task']['id']);
default:
return '';
}
}
/**
* Get event title without author
*
* @access public
* @param string $eventName
* @param array $eventData
* @return string
*/
public function buildTitleWithoutAuthor($eventName, array $eventData)
{
switch ($eventName) {
case SubtaskModel::EVENT_CREATE:
return e('New subtask on task #%d', $eventData['subtask']['task_id']);
case SubtaskModel::EVENT_UPDATE:
return e('Subtask updated on task #%d', $eventData['subtask']['task_id']);
case SubtaskModel::EVENT_DELETE:
return e('Subtask removed on task #%d', $eventData['subtask']['task_id']);
default:
return '';
}
}
} }

View File

@ -3,6 +3,7 @@
namespace Kanboard\EventBuilder; namespace Kanboard\EventBuilder;
use Kanboard\Event\TaskEvent; use Kanboard\Event\TaskEvent;
use Kanboard\Model\TaskModel;
/** /**
* Class TaskEventBuilder * Class TaskEventBuilder
@ -98,7 +99,7 @@ class TaskEventBuilder extends BaseEventBuilder
* @access public * @access public
* @return TaskEvent|null * @return TaskEvent|null
*/ */
public function build() public function buildEvent()
{ {
$eventData = array(); $eventData = array();
$eventData['task_id'] = $this->taskId; $eventData['task_id'] = $this->taskId;
@ -120,4 +121,103 @@ class TaskEventBuilder extends BaseEventBuilder
return new TaskEvent(array_merge($eventData, $this->values)); return new TaskEvent(array_merge($eventData, $this->values));
} }
/**
* Get event title with author
*
* @access public
* @param string $author
* @param string $eventName
* @param array $eventData
* @return string
*/
public function buildTitleWithAuthor($author, $eventName, array $eventData)
{
switch ($eventName) {
case TaskModel::EVENT_ASSIGNEE_CHANGE:
$assignee = $eventData['task']['assignee_name'] ?: $eventData['task']['assignee_username'];
if (! empty($assignee)) {
return e('%s changed the assignee of the task #%d to %s', $author, $eventData['task']['id'], $assignee);
}
return e('%s removed the assignee of the task %s', $author, e('#%d', $eventData['task']['id']));
case TaskModel::EVENT_UPDATE:
return e('%s updated the task #%d', $author, $eventData['task']['id']);
case TaskModel::EVENT_CREATE:
return e('%s created the task #%d', $author, $eventData['task']['id']);
case TaskModel::EVENT_CLOSE:
return e('%s closed the task #%d', $author, $eventData['task']['id']);
case TaskModel::EVENT_OPEN:
return e('%s opened the task #%d', $author, $eventData['task']['id']);
case TaskModel::EVENT_MOVE_COLUMN:
return e(
'%s moved the task #%d to the column "%s"',
$author,
$eventData['task']['id'],
$eventData['task']['column_title']
);
case TaskModel::EVENT_MOVE_POSITION:
return e(
'%s moved the task #%d to the position %d in the column "%s"',
$author,
$eventData['task']['id'],
$eventData['task']['position'],
$eventData['task']['column_title']
);
case TaskModel::EVENT_MOVE_SWIMLANE:
if ($eventData['task']['swimlane_id'] == 0) {
return e('%s moved the task #%d to the first swimlane', $author, $eventData['task']['id']);
}
return e(
'%s moved the task #%d to the swimlane "%s"',
$author,
$eventData['task']['id'],
$eventData['task']['swimlane_name']
);
case TaskModel::EVENT_USER_MENTION:
return e('%s mentioned you in the task #%d', $author, $eventData['task']['id']);
default:
return '';
}
}
/**
* Get event title without author
*
* @access public
* @param string $eventName
* @param array $eventData
* @return string
*/
public function buildTitleWithoutAuthor($eventName, array $eventData)
{
switch ($eventName) {
case TaskModel::EVENT_CREATE:
return e('New task #%d: %s', $eventData['task']['id'], $eventData['task']['title']);
case TaskModel::EVENT_UPDATE:
return e('Task updated #%d', $eventData['task']['id']);
case TaskModel::EVENT_CLOSE:
return e('Task #%d closed', $eventData['task']['id']);
case TaskModel::EVENT_OPEN:
return e('Task #%d opened', $eventData['task']['id']);
case TaskModel::EVENT_MOVE_COLUMN:
return e('Column changed for task #%d', $eventData['task']['id']);
case TaskModel::EVENT_MOVE_POSITION:
return e('New position for task #%d', $eventData['task']['id']);
case TaskModel::EVENT_MOVE_SWIMLANE:
return e('Swimlane changed for task #%d', $eventData['task']['id']);
case TaskModel::EVENT_ASSIGNEE_CHANGE:
return e('Assignee changed on task #%d', $eventData['task']['id']);
case TaskModel::EVENT_OVERDUE:
$nb = count($eventData['tasks']);
return $nb > 1 ? e('%d overdue tasks', $nb) : e('Task #%d is overdue', $eventData['tasks'][0]['id']);
case TaskModel::EVENT_USER_MENTION:
return e('You were mentioned in the task #%d', $eventData['task']['id']);
default:
return '';
}
}
} }

View File

@ -4,6 +4,7 @@ namespace Kanboard\EventBuilder;
use Kanboard\Event\TaskFileEvent; use Kanboard\Event\TaskFileEvent;
use Kanboard\Event\GenericEvent; use Kanboard\Event\GenericEvent;
use Kanboard\Model\TaskFileModel;
/** /**
* Class TaskFileEventBuilder * Class TaskFileEventBuilder
@ -33,7 +34,7 @@ class TaskFileEventBuilder extends BaseEventBuilder
* @access public * @access public
* @return GenericEvent|null * @return GenericEvent|null
*/ */
public function build() public function buildEvent()
{ {
$file = $this->taskFileModel->getById($this->fileId); $file = $this->taskFileModel->getById($this->fileId);
@ -47,4 +48,39 @@ class TaskFileEventBuilder extends BaseEventBuilder
'task' => $this->taskFinderModel->getDetails($file['task_id']), 'task' => $this->taskFinderModel->getDetails($file['task_id']),
)); ));
} }
/**
* Get event title with author
*
* @access public
* @param string $author
* @param string $eventName
* @param array $eventData
* @return string
*/
public function buildTitleWithAuthor($author, $eventName, array $eventData)
{
if ($eventName === TaskFileModel::EVENT_CREATE) {
return e('%s attached a file to the task #%d', $author, $eventData['task']['id']);
}
return '';
}
/**
* Get event title without author
*
* @access public
* @param string $eventName
* @param array $eventData
* @return string
*/
public function buildTitleWithoutAuthor($eventName, array $eventData)
{
if ($eventName === TaskFileModel::EVENT_CREATE) {
return e('New attachment on task #%d: %s', $eventData['file']['task_id'], $eventData['file']['name']);
}
return '';
}
} }

View File

@ -33,7 +33,7 @@ class TaskLinkEventBuilder extends BaseEventBuilder
* @access public * @access public
* @return TaskLinkEvent|null * @return TaskLinkEvent|null
*/ */
public function build() public function buildEvent()
{ {
$taskLink = $this->taskLinkModel->getById($this->taskLinkId); $taskLink = $this->taskLinkModel->getById($this->taskLinkId);

View File

@ -37,7 +37,7 @@ class CommentEventJob extends BaseJob
{ {
$event = CommentEventBuilder::getInstance($this->container) $event = CommentEventBuilder::getInstance($this->container)
->withCommentId($commentId) ->withCommentId($commentId)
->build(); ->buildEvent();
if ($event !== null) { if ($event !== null) {
$this->dispatcher->dispatch($eventName, $event); $this->dispatcher->dispatch($eventName, $event);

View File

@ -36,7 +36,7 @@ class ProjectFileEventJob extends BaseJob
{ {
$event = ProjectFileEventBuilder::getInstance($this->container) $event = ProjectFileEventBuilder::getInstance($this->container)
->withFileId($fileId) ->withFileId($fileId)
->build(); ->buildEvent();
if ($event !== null) { if ($event !== null) {
$this->dispatcher->dispatch($eventName, $event); $this->dispatcher->dispatch($eventName, $event);

View File

@ -39,7 +39,7 @@ class SubtaskEventJob extends BaseJob
$event = SubtaskEventBuilder::getInstance($this->container) $event = SubtaskEventBuilder::getInstance($this->container)
->withSubtaskId($subtaskId) ->withSubtaskId($subtaskId)
->withValues($values) ->withValues($values)
->build(); ->buildEvent();
if ($event !== null) { if ($event !== null) {
$this->dispatcher->dispatch($eventName, $event); $this->dispatcher->dispatch($eventName, $event);

View File

@ -47,7 +47,7 @@ class TaskEventJob extends BaseJob
->withChanges($changes) ->withChanges($changes)
->withValues($values) ->withValues($values)
->withTask($task) ->withTask($task)
->build(); ->buildEvent();
if ($event !== null) { if ($event !== null) {
foreach ($eventNames as $eventName) { foreach ($eventNames as $eventName) {

View File

@ -36,7 +36,7 @@ class TaskFileEventJob extends BaseJob
{ {
$event = TaskFileEventBuilder::getInstance($this->container) $event = TaskFileEventBuilder::getInstance($this->container)
->withFileId($fileId) ->withFileId($fileId)
->build(); ->buildEvent();
if ($event !== null) { if ($event !== null) {
$this->dispatcher->dispatch($eventName, $event); $this->dispatcher->dispatch($eventName, $event);

View File

@ -36,7 +36,7 @@ class TaskLinkEventJob extends BaseJob
{ {
$event = TaskLinkEventBuilder::getInstance($this->container) $event = TaskLinkEventBuilder::getInstance($this->container)
->withTaskLinkId($taskLinkId) ->withTaskLinkId($taskLinkId)
->build(); ->buildEvent();
if ($event !== null) { if ($event !== null) {
$this->dispatcher->dispatch($eventName, $event); $this->dispatcher->dispatch($eventName, $event);

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s ažurirao zadatak #%d', '%s updated the task #%d' => '%s ažurirao zadatak #%d',
'%s created the task #%d' => '%s kreirao zadatak #%d', '%s created the task #%d' => '%s kreirao zadatak #%d',
'%s closed the task #%d' => '%s zatvorio zadatak #%d', '%s closed the task #%d' => '%s zatvorio zadatak #%d',
'%s open the task #%d' => '%s otvorio zadatak #%d', '%s opened the task #%d' => '%s otvorio zadatak #%d',
'%s moved the task #%d to the column "%s"' => '%s premjestio zadatak #%d u kolonu "%s"', '%s moved the task #%d to the column "%s"' => '%s premjestio zadatak #%d u kolonu "%s"',
'%s moved the task #%d to the position %d in the column "%s"' => '%s premjestio zadatak #%d na poziciju %d u koloni "%s"', '%s moved the task #%d to the position %d in the column "%s"' => '%s premjestio zadatak #%d na poziciju %d u koloni "%s"',
'Activity' => 'Aktivnosti', 'Activity' => 'Aktivnosti',
'Default values are "%s"' => 'Podrazumijevane vrijednosti su: "%s"', 'Default values are "%s"' => 'Podrazumijevane vrijednosti su: "%s"',
'Default columns for new projects (Comma-separated)' => 'Podrazumijevane kolone za novi projekat (Odvojene zarezom)', 'Default columns for new projects (Comma-separated)' => 'Podrazumijevane kolone za novi projekat (Odvojene zarezom)',
'Task assignee change' => 'Promijena izvršioca zadatka', 'Task assignee change' => 'Promijena izvršioca zadatka',
'%s change the assignee of the task #%d to %s' => '%s zamijeni izvršioca za zadatak #%d u %s', '%s changed the assignee of the task #%d to %s' => '%s zamijeni izvršioca za zadatak #%d u %s',
'%s changed the assignee of the task %s to %s' => '%s promijenio izvršioca za zadatak %s u %s', '%s changed the assignee of the task %s to %s' => '%s promijenio izvršioca za zadatak %s u %s',
'New password for the user "%s"' => 'Nova šifra korisnika "%s"', 'New password for the user "%s"' => 'Nova šifra korisnika "%s"',
'Choose an event' => 'Izaberi događaj', 'Choose an event' => 'Izaberi događaj',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'Stopa valute je uspješno dodana.', 'The currency rate have been added successfully.' => 'Stopa valute je uspješno dodana.',
'Unable to add this currency rate.' => 'Nemoguće dodati stopu valute.', 'Unable to add this currency rate.' => 'Nemoguće dodati stopu valute.',
'Webhook URL' => 'Webhook URL', 'Webhook URL' => 'Webhook URL',
'%s remove the assignee of the task %s' => '%s je uklonio izvršioca zadatka %s', '%s removed the assignee of the task %s' => '%s je uklonio izvršioca zadatka %s',
'Enable Gravatar images' => 'Omogući Gravatar slike', 'Enable Gravatar images' => 'Omogući Gravatar slike',
'Information' => 'Informacije', 'Information' => 'Informacije',
'Check two factor authentication code' => 'Provjera faktor-dva autentifikacionog koda', 'Check two factor authentication code' => 'Provjera faktor-dva autentifikacionog koda',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s aktualizoval úkol #%d ', '%s updated the task #%d' => '%s aktualizoval úkol #%d ',
'%s created the task #%d' => '%s vytvořil úkol #%d ', '%s created the task #%d' => '%s vytvořil úkol #%d ',
'%s closed the task #%d' => '%s uzavřel úkol #%d ', '%s closed the task #%d' => '%s uzavřel úkol #%d ',
'%s open the task #%d' => '%s znovu otevřel úkol #%d ', '%s opened the task #%d' => '%s znovu otevřel úkol #%d ',
'%s moved the task #%d to the column "%s"' => '%s přesunul úkol #%d do sloupce "%s" ', '%s moved the task #%d to the column "%s"' => '%s přesunul úkol #%d do sloupce "%s" ',
'%s moved the task #%d to the position %d in the column "%s"' => '%s přesunul úkol #%d na pozici %d ve sloupci "%s" ', '%s moved the task #%d to the position %d in the column "%s"' => '%s přesunul úkol #%d na pozici %d ve sloupci "%s" ',
'Activity' => 'Aktivity', 'Activity' => 'Aktivity',
'Default values are "%s"' => 'Standardní hodnoty jsou: "%s"', 'Default values are "%s"' => 'Standardní hodnoty jsou: "%s"',
'Default columns for new projects (Comma-separated)' => 'Výchozí sloupce pro nové projekty (odděleny čárkou)', 'Default columns for new projects (Comma-separated)' => 'Výchozí sloupce pro nové projekty (odděleny čárkou)',
'Task assignee change' => 'Změna přiřazení uživatelů', 'Task assignee change' => 'Změna přiřazení uživatelů',
'%s change the assignee of the task #%d to %s' => '%s změnil přidělení úkolu #%d na uživatele %s', '%s changed the assignee of the task #%d to %s' => '%s změnil přidělení úkolu #%d na uživatele %s',
'%s changed the assignee of the task %s to %s' => '%s změnil přidělení úkolu %s na uživatele %s', '%s changed the assignee of the task %s to %s' => '%s změnil přidělení úkolu %s na uživatele %s',
'New password for the user "%s"' => 'Nové heslo pro uživatele "%s"', 'New password for the user "%s"' => 'Nové heslo pro uživatele "%s"',
'Choose an event' => 'Vybrat událost', 'Choose an event' => 'Vybrat událost',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'Směnný kurz byl úspěšně přidán.', 'The currency rate have been added successfully.' => 'Směnný kurz byl úspěšně přidán.',
'Unable to add this currency rate.' => 'Nelze přidat tento směnný kurz', 'Unable to add this currency rate.' => 'Nelze přidat tento směnný kurz',
'Webhook URL' => 'Webhook URL', 'Webhook URL' => 'Webhook URL',
'%s remove the assignee of the task %s' => '%s odstranil přiřazení úkolu %s ', '%s removed the assignee of the task %s' => '%s odstranil přiřazení úkolu %s ',
'Enable Gravatar images' => 'Aktiviere Gravatar Bilder', 'Enable Gravatar images' => 'Aktiviere Gravatar Bilder',
'Information' => 'Informace', 'Information' => 'Informace',
'Check two factor authentication code' => 'Zkontrolujte dvouúrovňový autentifikační klíč', 'Check two factor authentication code' => 'Zkontrolujte dvouúrovňový autentifikační klíč',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s opdaterede opgaven #%d', '%s updated the task #%d' => '%s opdaterede opgaven #%d',
'%s created the task #%d' => '%s oprettede opgaven #%d', '%s created the task #%d' => '%s oprettede opgaven #%d',
'%s closed the task #%d' => '%s lukkede opgaven #%d', '%s closed the task #%d' => '%s lukkede opgaven #%d',
'%s open the task #%d' => '%s åbnede opgaven #%d', '%s opened the task #%d' => '%s åbnede opgaven #%d',
'%s moved the task #%d to the column "%s"' => '%s flyttede opgaven #%d til kolonnen "%s"', '%s moved the task #%d to the column "%s"' => '%s flyttede opgaven #%d til kolonnen "%s"',
'%s moved the task #%d to the position %d in the column "%s"' => '%s flyttede opgaven #%d til position %d i kolonnen "%s"', '%s moved the task #%d to the position %d in the column "%s"' => '%s flyttede opgaven #%d til position %d i kolonnen "%s"',
'Activity' => 'Aktivitet', 'Activity' => 'Aktivitet',
'Default values are "%s"' => 'Standard værdier er "%s"', 'Default values are "%s"' => 'Standard værdier er "%s"',
'Default columns for new projects (Comma-separated)' => 'Standard kolonne for nye projekter (kommasepareret)', 'Default columns for new projects (Comma-separated)' => 'Standard kolonne for nye projekter (kommasepareret)',
'Task assignee change' => 'Opgaven ansvarlig ændring', 'Task assignee change' => 'Opgaven ansvarlig ændring',
'%s change the assignee of the task #%d to %s' => '%s skrift ansvarlig for opgaven #%d til %s', '%s changed the assignee of the task #%d to %s' => '%s skrift ansvarlig for opgaven #%d til %s',
'%s changed the assignee of the task %s to %s' => '%s skift ansvarlig for opgaven %s til %s', '%s changed the assignee of the task %s to %s' => '%s skift ansvarlig for opgaven %s til %s',
'New password for the user "%s"' => 'Ny adgangskode for brugeren "%s"', 'New password for the user "%s"' => 'Ny adgangskode for brugeren "%s"',
'Choose an event' => 'Vælg et event', 'Choose an event' => 'Vælg et event',
@ -601,7 +601,7 @@ return array(
// 'The currency rate have been added successfully.' => '', // 'The currency rate have been added successfully.' => '',
// 'Unable to add this currency rate.' => '', // 'Unable to add this currency rate.' => '',
// 'Webhook URL' => '', // 'Webhook URL' => '',
// '%s remove the assignee of the task %s' => '', // '%s removed the assignee of the task %s' => '',
// 'Enable Gravatar images' => '', // 'Enable Gravatar images' => '',
// 'Information' => '', // 'Information' => '',
// 'Check two factor authentication code' => '', // 'Check two factor authentication code' => '',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s hat die Aufgabe #%d aktualisiert', '%s updated the task #%d' => '%s hat die Aufgabe #%d aktualisiert',
'%s created the task #%d' => '%s hat die Aufgabe #%d angelegt', '%s created the task #%d' => '%s hat die Aufgabe #%d angelegt',
'%s closed the task #%d' => '%s hat die Aufgabe #%d geschlossen', '%s closed the task #%d' => '%s hat die Aufgabe #%d geschlossen',
'%s open the task #%d' => '%s hat die Aufgabe #%d geöffnet', '%s opened the task #%d' => '%s hat die Aufgabe #%d geöffnet',
'%s moved the task #%d to the column "%s"' => '%s hat die Aufgabe #%d in die Spalte "%s" verschoben', '%s moved the task #%d to the column "%s"' => '%s hat die Aufgabe #%d in die Spalte "%s" verschoben',
'%s moved the task #%d to the position %d in the column "%s"' => '%s hat die Aufgabe #%d an die Position %d in der Spalte "%s" verschoben', '%s moved the task #%d to the position %d in the column "%s"' => '%s hat die Aufgabe #%d an die Position %d in der Spalte "%s" verschoben',
'Activity' => 'Aktivität', 'Activity' => 'Aktivität',
'Default values are "%s"' => 'Die Standardwerte sind "%s"', 'Default values are "%s"' => 'Die Standardwerte sind "%s"',
'Default columns for new projects (Comma-separated)' => 'Standardspalten für neue Projekte (komma-getrennt)', 'Default columns for new projects (Comma-separated)' => 'Standardspalten für neue Projekte (komma-getrennt)',
'Task assignee change' => 'Zuständigkeit geändert', 'Task assignee change' => 'Zuständigkeit geändert',
'%s change the assignee of the task #%d to %s' => '%s hat die Zusständigkeit der Aufgabe #%d geändert um %s', '%s changed the assignee of the task #%d to %s' => '%s hat die Zusständigkeit der Aufgabe #%d geändert um %s',
'%s changed the assignee of the task %s to %s' => '%s hat die Zuständigkeit der Aufgabe %s geändert um %s', '%s changed the assignee of the task %s to %s' => '%s hat die Zuständigkeit der Aufgabe %s geändert um %s',
'New password for the user "%s"' => 'Neues Passwort des Benutzers "%s"', 'New password for the user "%s"' => 'Neues Passwort des Benutzers "%s"',
'Choose an event' => 'Aktion wählen', 'Choose an event' => 'Aktion wählen',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'Der Währungskurs wurde erfolgreich hinzugefügt.', 'The currency rate have been added successfully.' => 'Der Währungskurs wurde erfolgreich hinzugefügt.',
'Unable to add this currency rate.' => 'Währungskurs konnte nicht hinzugefügt werden', 'Unable to add this currency rate.' => 'Währungskurs konnte nicht hinzugefügt werden',
'Webhook URL' => 'Webhook-URL', 'Webhook URL' => 'Webhook-URL',
'%s remove the assignee of the task %s' => '%s Zuordnung für die Aufgabe %s entfernen', '%s removed the assignee of the task %s' => '%s Zuordnung für die Aufgabe %s entfernen',
'Enable Gravatar images' => 'Aktiviere Gravatar-Bilder', 'Enable Gravatar images' => 'Aktiviere Gravatar-Bilder',
'Information' => 'Information', 'Information' => 'Information',
'Check two factor authentication code' => 'Prüfe Zwei-Faktor-Authentifizierungscode', 'Check two factor authentication code' => 'Prüfe Zwei-Faktor-Authentifizierungscode',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s ενημέρωσε την εργασία n°%d', '%s updated the task #%d' => '%s ενημέρωσε την εργασία n°%d',
'%s created the task #%d' => '%s δημιούργησε την εργασία n°%d', '%s created the task #%d' => '%s δημιούργησε την εργασία n°%d',
'%s closed the task #%d' => '%s έκλεισε την εργασία n°%d', '%s closed the task #%d' => '%s έκλεισε την εργασία n°%d',
'%s open the task #%d' => '%s άνοιξε την εργασία n°%d', '%s opened the task #%d' => '%s άνοιξε την εργασία n°%d',
'%s moved the task #%d to the column "%s"' => '%s μετακίνησε την εργασία n°%d στη στήλη « %s »', '%s moved the task #%d to the column "%s"' => '%s μετακίνησε την εργασία n°%d στη στήλη « %s »',
'%s moved the task #%d to the position %d in the column "%s"' => '%s μετακίνησε την εργασία n°%d στη θέση n°%d της στήλης « %s »', '%s moved the task #%d to the position %d in the column "%s"' => '%s μετακίνησε την εργασία n°%d στη θέση n°%d της στήλης « %s »',
'Activity' => 'Δραστηριότητα', 'Activity' => 'Δραστηριότητα',
'Default values are "%s"' => 'Οι προεπιλεγμένες τιμές είναι « %s »', 'Default values are "%s"' => 'Οι προεπιλεγμένες τιμές είναι « %s »',
'Default columns for new projects (Comma-separated)' => 'Προεπιλεγμένες στήλες για νέα έργα (Comma-separated)', 'Default columns for new projects (Comma-separated)' => 'Προεπιλεγμένες στήλες για νέα έργα (Comma-separated)',
'Task assignee change' => 'Αλλαγή εκδοχέα εργασίας', 'Task assignee change' => 'Αλλαγή εκδοχέα εργασίας',
'%s change the assignee of the task #%d to %s' => '%s άλλαξε τον εκδοχέα της εργασίας n˚%d σε %s', '%s changed the assignee of the task #%d to %s' => '%s άλλαξε τον εκδοχέα της εργασίας n˚%d σε %s',
'%s changed the assignee of the task %s to %s' => '%s ενημέρωσε τον εκδοχέα της εργασίας %s σε %s', '%s changed the assignee of the task %s to %s' => '%s ενημέρωσε τον εκδοχέα της εργασίας %s σε %s',
'New password for the user "%s"' => 'Νέο password του χρήστη « %s »', 'New password for the user "%s"' => 'Νέο password του χρήστη « %s »',
'Choose an event' => 'Επιλογή event', 'Choose an event' => 'Επιλογή event',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'Η ισοτιμία προστέθηκε με επιτυχία.', 'The currency rate have been added successfully.' => 'Η ισοτιμία προστέθηκε με επιτυχία.',
'Unable to add this currency rate.' => 'Αδύνατο να προστεθεί αυτή η ισοτιμία.', 'Unable to add this currency rate.' => 'Αδύνατο να προστεθεί αυτή η ισοτιμία.',
'Webhook URL' => 'Webhook URL', 'Webhook URL' => 'Webhook URL',
'%s remove the assignee of the task %s' => '%s αφαίρεσε τον εκδοχέα της εργασίας %s', '%s removed the assignee of the task %s' => '%s αφαίρεσε τον εκδοχέα της εργασίας %s',
'Enable Gravatar images' => 'Ενεργοποίηση εικόνων Gravatar', 'Enable Gravatar images' => 'Ενεργοποίηση εικόνων Gravatar',
'Information' => 'Πληροφορίες', 'Information' => 'Πληροφορίες',
'Check two factor authentication code' => 'Ελέγξτε δύο παράγοντες ελέγχου ταυτότητας κωδικού', 'Check two factor authentication code' => 'Ελέγξτε δύο παράγοντες ελέγχου ταυτότητας κωδικού',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s actualizó la tarea #%d', '%s updated the task #%d' => '%s actualizó la tarea #%d',
'%s created the task #%d' => '%s creó la tarea #%d', '%s created the task #%d' => '%s creó la tarea #%d',
'%s closed the task #%d' => '%s cerró la tarea #%d', '%s closed the task #%d' => '%s cerró la tarea #%d',
'%s open the task #%d' => '%s abrió la tarea #%d', '%s opened the task #%d' => '%s abrió la tarea #%d',
'%s moved the task #%d to the column "%s"' => '%s movió la tarea #%d a la columna «%s»', '%s moved the task #%d to the column "%s"' => '%s movió la tarea #%d a la columna «%s»',
'%s moved the task #%d to the position %d in the column "%s"' => '%s movió la tarea #%d a la posición %d de la columna «%s»', '%s moved the task #%d to the position %d in the column "%s"' => '%s movió la tarea #%d a la posición %d de la columna «%s»',
'Activity' => 'Actividad', 'Activity' => 'Actividad',
'Default values are "%s"' => 'Los valores por defecto son «%s»', 'Default values are "%s"' => 'Los valores por defecto son «%s»',
'Default columns for new projects (Comma-separated)' => 'Columnas por defecto para los nuevos proyectos (separadas mediante comas)', 'Default columns for new projects (Comma-separated)' => 'Columnas por defecto para los nuevos proyectos (separadas mediante comas)',
'Task assignee change' => 'Cambiar responsable de la tarea', 'Task assignee change' => 'Cambiar responsable de la tarea',
'%s change the assignee of the task #%d to %s' => '%s cambió el responsable de la tarea #%d por %s', '%s changed the assignee of the task #%d to %s' => '%s cambió el responsable de la tarea #%d por %s',
'%s changed the assignee of the task %s to %s' => '%s cambió el responsable de la tarea %s por %s', '%s changed the assignee of the task %s to %s' => '%s cambió el responsable de la tarea %s por %s',
'New password for the user "%s"' => 'Nueva contraseña para el usuario «%s»', 'New password for the user "%s"' => 'Nueva contraseña para el usuario «%s»',
'Choose an event' => 'Seleccione un evento', 'Choose an event' => 'Seleccione un evento',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'El cambio de moneda se ha añadido correctamente.', 'The currency rate have been added successfully.' => 'El cambio de moneda se ha añadido correctamente.',
'Unable to add this currency rate.' => 'No se puede añadir este cambio de moneda.', 'Unable to add this currency rate.' => 'No se puede añadir este cambio de moneda.',
'Webhook URL' => 'URL del disparador web (webhook)', 'Webhook URL' => 'URL del disparador web (webhook)',
'%s remove the assignee of the task %s' => '%s quita el responsable de la tarea %s', '%s removed the assignee of the task %s' => '%s quita el responsable de la tarea %s',
'Enable Gravatar images' => 'Activar imágenes Gravatar', 'Enable Gravatar images' => 'Activar imágenes Gravatar',
'Information' => 'Información', 'Information' => 'Información',
'Check two factor authentication code' => 'Revisar código de autenticación en dos pasos', 'Check two factor authentication code' => 'Revisar código de autenticación en dos pasos',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s päivitti tehtävää #%d', '%s updated the task #%d' => '%s päivitti tehtävää #%d',
'%s created the task #%d' => '%s loi tehtävän #%d', '%s created the task #%d' => '%s loi tehtävän #%d',
'%s closed the task #%d' => '%s sulki tehtävän #%d', '%s closed the task #%d' => '%s sulki tehtävän #%d',
'%s open the task #%d' => '%s avasi tehtävän #%d', '%s opened the task #%d' => '%s avasi tehtävän #%d',
'%s moved the task #%d to the column "%s"' => '%s siirsi tehtävän #%d sarakkeeseen "%s"', '%s moved the task #%d to the column "%s"' => '%s siirsi tehtävän #%d sarakkeeseen "%s"',
'%s moved the task #%d to the position %d in the column "%s"' => '%s siirsi tehtävän #%d %d. sarakkeessa %s', '%s moved the task #%d to the position %d in the column "%s"' => '%s siirsi tehtävän #%d %d. sarakkeessa %s',
'Activity' => 'Toiminta', 'Activity' => 'Toiminta',
'Default values are "%s"' => 'Oletusarvot ovat "%s"', 'Default values are "%s"' => 'Oletusarvot ovat "%s"',
'Default columns for new projects (Comma-separated)' => 'Oletussarakkeet uusille projekteille', 'Default columns for new projects (Comma-separated)' => 'Oletussarakkeet uusille projekteille',
'Task assignee change' => 'Tehtävän saajan vaihto', 'Task assignee change' => 'Tehtävän saajan vaihto',
'%s change the assignee of the task #%d to %s' => '%s vaihtoi tehtävän #%d saajaksi %s', '%s changed the assignee of the task #%d to %s' => '%s vaihtoi tehtävän #%d saajaksi %s',
'%s changed the assignee of the task %s to %s' => '%s vaihtoi tehtävän %s saajaksi %s', '%s changed the assignee of the task %s to %s' => '%s vaihtoi tehtävän %s saajaksi %s',
'New password for the user "%s"' => 'Uusi salasana käyttäjälle "%s"', 'New password for the user "%s"' => 'Uusi salasana käyttäjälle "%s"',
'Choose an event' => 'Valitse toiminta', 'Choose an event' => 'Valitse toiminta',
@ -601,7 +601,7 @@ return array(
// 'The currency rate have been added successfully.' => '', // 'The currency rate have been added successfully.' => '',
// 'Unable to add this currency rate.' => '', // 'Unable to add this currency rate.' => '',
// 'Webhook URL' => '', // 'Webhook URL' => '',
// '%s remove the assignee of the task %s' => '', // '%s removed the assignee of the task %s' => '',
// 'Enable Gravatar images' => '', // 'Enable Gravatar images' => '',
// 'Information' => '', // 'Information' => '',
// 'Check two factor authentication code' => '', // 'Check two factor authentication code' => '',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s a mis à jour la tâche n°%d', '%s updated the task #%d' => '%s a mis à jour la tâche n°%d',
'%s created the task #%d' => '%s a créé la tâche n°%d', '%s created the task #%d' => '%s a créé la tâche n°%d',
'%s closed the task #%d' => '%s a fermé la tâche n°%d', '%s closed the task #%d' => '%s a fermé la tâche n°%d',
'%s open the task #%d' => '%s a ouvert la tâche n°%d', '%s opened the task #%d' => '%s a ouvert la tâche n°%d',
'%s moved the task #%d to the column "%s"' => '%s a déplacé la tâche n°%d dans la colonne « %s »', '%s moved the task #%d to the column "%s"' => '%s a déplacé la tâche n°%d dans la colonne « %s »',
'%s moved the task #%d to the position %d in the column "%s"' => '%s a déplacé la tâche n°%d à la position n°%d dans la colonne « %s »', '%s moved the task #%d to the position %d in the column "%s"' => '%s a déplacé la tâche n°%d à la position n°%d dans la colonne « %s »',
'Activity' => 'Activité', 'Activity' => 'Activité',
'Default values are "%s"' => 'Les valeurs par défaut sont « %s »', 'Default values are "%s"' => 'Les valeurs par défaut sont « %s »',
'Default columns for new projects (Comma-separated)' => 'Colonnes par défaut pour les nouveaux projets (séparation par des virgules)', 'Default columns for new projects (Comma-separated)' => 'Colonnes par défaut pour les nouveaux projets (séparation par des virgules)',
'Task assignee change' => 'Modification de la personne assignée à une tâche', 'Task assignee change' => 'Modification de la personne assignée à une tâche',
'%s change the assignee of the task #%d to %s' => '%s a changé la personne assignée à la tâche n˚%d pour %s', '%s changed the assignee of the task #%d to %s' => '%s a changé la personne assignée à la tâche n˚%d pour %s',
'%s changed the assignee of the task %s to %s' => '%s a changé la personne assignée à la tâche %s pour %s', '%s changed the assignee of the task %s to %s' => '%s a changé la personne assignée à la tâche %s pour %s',
'New password for the user "%s"' => 'Nouveau mot de passe pour l\'utilisateur « %s »', 'New password for the user "%s"' => 'Nouveau mot de passe pour l\'utilisateur « %s »',
'Choose an event' => 'Choisir un événement', 'Choose an event' => 'Choisir un événement',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'Le taux de change a été ajouté avec succès.', 'The currency rate have been added successfully.' => 'Le taux de change a été ajouté avec succès.',
'Unable to add this currency rate.' => 'Impossible d\'ajouter ce taux de change', 'Unable to add this currency rate.' => 'Impossible d\'ajouter ce taux de change',
'Webhook URL' => 'URL du webhook', 'Webhook URL' => 'URL du webhook',
'%s remove the assignee of the task %s' => '%s a enlevé la personne assignée à la tâche %s', '%s removed the assignee of the task %s' => '%s a enlevé la personne assignée à la tâche %s',
'Enable Gravatar images' => 'Activer les images Gravatar', 'Enable Gravatar images' => 'Activer les images Gravatar',
'Information' => 'Informations', 'Information' => 'Informations',
'Check two factor authentication code' => 'Vérification du code pour l\'authentification à deux-facteurs', 'Check two factor authentication code' => 'Vérification du code pour l\'authentification à deux-facteurs',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s frissítette a feladatot #%d', '%s updated the task #%d' => '%s frissítette a feladatot #%d',
'%s created the task #%d' => '%s létrehozta a feladatot #%d', '%s created the task #%d' => '%s létrehozta a feladatot #%d',
'%s closed the task #%d' => '%s lezárta a feladatot #%d', '%s closed the task #%d' => '%s lezárta a feladatot #%d',
'%s open the task #%d' => '%s megnyitotta a feladatot #%d', '%s opened the task #%d' => '%s megnyitotta a feladatot #%d',
'%s moved the task #%d to the column "%s"' => '%s átmozgatta a feladatot #%d a "%s" oszlopba', '%s moved the task #%d to the column "%s"' => '%s átmozgatta a feladatot #%d a "%s" oszlopba',
'%s moved the task #%d to the position %d in the column "%s"' => '%s átmozgatta a feladatot #%d a %d pozícióba a "%s" oszlopban', '%s moved the task #%d to the position %d in the column "%s"' => '%s átmozgatta a feladatot #%d a %d pozícióba a "%s" oszlopban',
'Activity' => 'Tevékenységek', 'Activity' => 'Tevékenységek',
'Default values are "%s"' => 'Az alapértelmezett értékek: %s', 'Default values are "%s"' => 'Az alapértelmezett értékek: %s',
'Default columns for new projects (Comma-separated)' => 'Alapértelmezett oszlopok az új projektekben (vesszővel elválasztva)', 'Default columns for new projects (Comma-separated)' => 'Alapértelmezett oszlopok az új projektekben (vesszővel elválasztva)',
'Task assignee change' => 'Felelős módosítása', 'Task assignee change' => 'Felelős módosítása',
'%s change the assignee of the task #%d to %s' => '%s a felelőst módosította #%d %s', '%s changed the assignee of the task #%d to %s' => '%s a felelőst módosította #%d %s',
'%s changed the assignee of the task %s to %s' => '%s a felelőst %s módosította: %s', '%s changed the assignee of the task %s to %s' => '%s a felelőst %s módosította: %s',
'New password for the user "%s"' => 'Felhasználó új jelszava: %s', 'New password for the user "%s"' => 'Felhasználó új jelszava: %s',
'Choose an event' => 'Válasszon eseményt', 'Choose an event' => 'Válasszon eseményt',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'Az átváltási árfolyammal történő bővítés sikerült', 'The currency rate have been added successfully.' => 'Az átváltási árfolyammal történő bővítés sikerült',
'Unable to add this currency rate.' => 'Nem sikerült az átváltási árfolyam felvétele', 'Unable to add this currency rate.' => 'Nem sikerült az átváltási árfolyam felvétele',
'Webhook URL' => 'Webhook URL', 'Webhook URL' => 'Webhook URL',
'%s remove the assignee of the task %s' => '%s eltávolította a %s feladathoz rendelt személyt', '%s removed the assignee of the task %s' => '%s eltávolította a %s feladathoz rendelt személyt',
'Enable Gravatar images' => 'Gravatár képek engedélyezése', 'Enable Gravatar images' => 'Gravatár képek engedélyezése',
'Information' => 'Információ', 'Information' => 'Információ',
'Check two factor authentication code' => 'Két fázisú beléptető kód ellenőrzése', 'Check two factor authentication code' => 'Két fázisú beléptető kód ellenőrzése',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s memperbaharui tugas n°%d', '%s updated the task #%d' => '%s memperbaharui tugas n°%d',
'%s created the task #%d' => '%s membuat tugas n°%d', '%s created the task #%d' => '%s membuat tugas n°%d',
'%s closed the task #%d' => '%s menutup tugas n°%d', '%s closed the task #%d' => '%s menutup tugas n°%d',
'%s open the task #%d' => '%s membuka tugas n°%d', '%s opened the task #%d' => '%s membuka tugas n°%d',
'%s moved the task #%d to the column "%s"' => '%s memindahkan tugas n°%d ke kolom « %s »', '%s moved the task #%d to the column "%s"' => '%s memindahkan tugas n°%d ke kolom « %s »',
'%s moved the task #%d to the position %d in the column "%s"' => '%s memindahkan tugas n°%d ke posisi n°%d dalam kolom « %s »', '%s moved the task #%d to the position %d in the column "%s"' => '%s memindahkan tugas n°%d ke posisi n°%d dalam kolom « %s »',
'Activity' => 'Aktifitas', 'Activity' => 'Aktifitas',
'Default values are "%s"' => 'Standar nilai adalah« %s »', 'Default values are "%s"' => 'Standar nilai adalah« %s »',
'Default columns for new projects (Comma-separated)' => 'Kolom default untuk proyek baru (dipisahkan dengan koma)', 'Default columns for new projects (Comma-separated)' => 'Kolom default untuk proyek baru (dipisahkan dengan koma)',
'Task assignee change' => 'Mengubah orang ditugaskan untuk tugas', 'Task assignee change' => 'Mengubah orang ditugaskan untuk tugas',
'%s change the assignee of the task #%d to %s' => '%s rubah orang yang ditugaskan dari tugas n%d ke %s', '%s changed the assignee of the task #%d to %s' => '%s rubah orang yang ditugaskan dari tugas n%d ke %s',
'%s changed the assignee of the task %s to %s' => '%s mengubah orang yang ditugaskan dari tugas %s ke %s', '%s changed the assignee of the task %s to %s' => '%s mengubah orang yang ditugaskan dari tugas %s ke %s',
'New password for the user "%s"' => 'Kata sandi baru untuk pengguna « %s »', 'New password for the user "%s"' => 'Kata sandi baru untuk pengguna « %s »',
'Choose an event' => 'Pilih acara', 'Choose an event' => 'Pilih acara',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'Nilai tukar mata uang berhasil ditambahkan.', 'The currency rate have been added successfully.' => 'Nilai tukar mata uang berhasil ditambahkan.',
'Unable to add this currency rate.' => 'Tidak dapat menambahkan nilai tukar mata uang', 'Unable to add this currency rate.' => 'Tidak dapat menambahkan nilai tukar mata uang',
'Webhook URL' => 'URL webhook', 'Webhook URL' => 'URL webhook',
'%s remove the assignee of the task %s' => '%s menghapus penugasan dari tugas %s', '%s removed the assignee of the task %s' => '%s menghapus penugasan dari tugas %s',
'Enable Gravatar images' => 'Mengaktifkan gambar Gravatar', 'Enable Gravatar images' => 'Mengaktifkan gambar Gravatar',
'Information' => 'Informasi', 'Information' => 'Informasi',
'Check two factor authentication code' => 'Cek dua faktor kode otentifikasi', 'Check two factor authentication code' => 'Cek dua faktor kode otentifikasi',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s ha aggiornato il task #%d', '%s updated the task #%d' => '%s ha aggiornato il task #%d',
'%s created the task #%d' => '%s ha creato il task #%d', '%s created the task #%d' => '%s ha creato il task #%d',
'%s closed the task #%d' => '%s ha chiuso il task #%d', '%s closed the task #%d' => '%s ha chiuso il task #%d',
'%s open the task #%d' => '%s ha aperto il task #%d', '%s opened the task #%d' => '%s ha aperto il task #%d',
'%s moved the task #%d to the column "%s"' => '%s ha spostato il task #%d nella colonna "%s"', '%s moved the task #%d to the column "%s"' => '%s ha spostato il task #%d nella colonna "%s"',
'%s moved the task #%d to the position %d in the column "%s"' => '%s ha spostato il task #%d nella posizione %d della colonna "%s"', '%s moved the task #%d to the position %d in the column "%s"' => '%s ha spostato il task #%d nella posizione %d della colonna "%s"',
'Activity' => 'Attività', 'Activity' => 'Attività',
'Default values are "%s"' => 'Valori di default "%s"', 'Default values are "%s"' => 'Valori di default "%s"',
'Default columns for new projects (Comma-separated)' => 'Colonne di default per i nuovi progetti (Separati da virgola)', 'Default columns for new projects (Comma-separated)' => 'Colonne di default per i nuovi progetti (Separati da virgola)',
'Task assignee change' => 'Cambia l\'assegnatario del task', 'Task assignee change' => 'Cambia l\'assegnatario del task',
'%s change the assignee of the task #%d to %s' => '%s dai l\'assegnazione del task #%d a %s', '%s changed the assignee of the task #%d to %s' => '%s dai l\'assegnazione del task #%d a %s',
'%s changed the assignee of the task %s to %s' => '%s ha cambiato l\'assegnatario del task %s a %s', '%s changed the assignee of the task %s to %s' => '%s ha cambiato l\'assegnatario del task %s a %s',
'New password for the user "%s"' => 'Nuova password per l\'utente "%s"', 'New password for the user "%s"' => 'Nuova password per l\'utente "%s"',
'Choose an event' => 'Scegli un evento', 'Choose an event' => 'Scegli un evento',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'Il tasso di cambio è stato aggiunto con successo.', 'The currency rate have been added successfully.' => 'Il tasso di cambio è stato aggiunto con successo.',
'Unable to add this currency rate.' => 'Impossibile aggiungere questo tasso di cambio.', 'Unable to add this currency rate.' => 'Impossibile aggiungere questo tasso di cambio.',
'Webhook URL' => 'URL Webhook', 'Webhook URL' => 'URL Webhook',
'%s remove the assignee of the task %s' => '%s rimuove l\'assegnatario del task %s', '%s removed the assignee of the task %s' => '%s rimuove l\'assegnatario del task %s',
'Enable Gravatar images' => 'Abilita immagini Gravatar', 'Enable Gravatar images' => 'Abilita immagini Gravatar',
'Information' => 'Informazioni', 'Information' => 'Informazioni',
'Check two factor authentication code' => 'Controlla il codice di autenticazione "two-factor"', 'Check two factor authentication code' => 'Controlla il codice di autenticazione "two-factor"',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s がタスク #%d を更新しました', '%s updated the task #%d' => '%s がタスク #%d を更新しました',
'%s created the task #%d' => '%s がタスク #%d を追加しました', '%s created the task #%d' => '%s がタスク #%d を追加しました',
'%s closed the task #%d' => '%s がタスク #%d をクローズしました', '%s closed the task #%d' => '%s がタスク #%d をクローズしました',
'%s open the task #%d' => '%s がタスク #%d をオープンしました', '%s opened the task #%d' => '%s がタスク #%d をオープンしました',
'%s moved the task #%d to the column "%s"' => '%s がタスク #%d をカラム「%s」に移動しました', '%s moved the task #%d to the column "%s"' => '%s がタスク #%d をカラム「%s」に移動しました',
'%s moved the task #%d to the position %d in the column "%s"' => '%s がタスク #%d を位置 %d カラム「%s」移動しました', '%s moved the task #%d to the position %d in the column "%s"' => '%s がタスク #%d を位置 %d カラム「%s」移動しました',
'Activity' => 'アクティビティ', 'Activity' => 'アクティビティ',
'Default values are "%s"' => 'デフォルト値は「%s」', 'Default values are "%s"' => 'デフォルト値は「%s」',
'Default columns for new projects (Comma-separated)' => '新規プロジェクトのデフォルトカラム (コンマで区切って入力)', 'Default columns for new projects (Comma-separated)' => '新規プロジェクトのデフォルトカラム (コンマで区切って入力)',
'Task assignee change' => '担当者の変更', 'Task assignee change' => '担当者の変更',
'%s change the assignee of the task #%d to %s' => '%s がタスク #%d の担当を %s に変更しました', '%s changed the assignee of the task #%d to %s' => '%s がタスク #%d の担当を %s に変更しました',
'%s changed the assignee of the task %s to %s' => '%s がタスク %s の担当を %s に変更しました', '%s changed the assignee of the task %s to %s' => '%s がタスク %s の担当を %s に変更しました',
'New password for the user "%s"' => 'ユーザ「%s」の新しいパスワード', 'New password for the user "%s"' => 'ユーザ「%s」の新しいパスワード',
'Choose an event' => 'イベントの選択', 'Choose an event' => 'イベントの選択',
@ -601,7 +601,7 @@ return array(
// 'The currency rate have been added successfully.' => '', // 'The currency rate have been added successfully.' => '',
'Unable to add this currency rate.' => 'この通貨レートを追加できません。', 'Unable to add this currency rate.' => 'この通貨レートを追加できません。',
'Webhook URL' => 'Webhook URL', 'Webhook URL' => 'Webhook URL',
'%s remove the assignee of the task %s' => '%s がタスク「%s」の担当を解除しました。', '%s removed the assignee of the task %s' => '%s がタスク「%s」の担当を解除しました。',
'Enable Gravatar images' => 'Gravatar イメージを有効化', 'Enable Gravatar images' => 'Gravatar イメージを有効化',
'Information' => '情報 ', 'Information' => '情報 ',
'Check two factor authentication code' => '2 段認証をチェックする', 'Check two factor authentication code' => '2 段認証をチェックする',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s이 할일#%d을 갱신했습니다', '%s updated the task #%d' => '%s이 할일#%d을 갱신했습니다',
'%s created the task #%d' => '%s이 할일#%d을 추가했습니다', '%s created the task #%d' => '%s이 할일#%d을 추가했습니다',
'%s closed the task #%d' => '%s이 할일#%d을 닫혔습니다', '%s closed the task #%d' => '%s이 할일#%d을 닫혔습니다',
'%s open the task #%d' => '%s이 할일#%d를 오픈했습니다', '%s opened the task #%d' => '%s이 할일#%d를 오픈했습니다',
'%s moved the task #%d to the column "%s"' => '%s이 할일#%d을 칼럼"%s"로 옮겼습니다', '%s moved the task #%d to the column "%s"' => '%s이 할일#%d을 칼럼"%s"로 옮겼습니다',
'%s moved the task #%d to the position %d in the column "%s"' => '%s이 할일#%d을 칼럼 "%s"의 %d 위치로 이동시켰습니다', '%s moved the task #%d to the position %d in the column "%s"' => '%s이 할일#%d을 칼럼 "%s"의 %d 위치로 이동시켰습니다',
'Activity' => '활동', 'Activity' => '활동',
'Default values are "%s"' => '기본 값은 "%s" 입니다', 'Default values are "%s"' => '기본 값은 "%s" 입니다',
'Default columns for new projects (Comma-separated)' => '새로운 프로젝트의 기본 칼럼 (콤마(,)로 분리됨)', 'Default columns for new projects (Comma-separated)' => '새로운 프로젝트의 기본 칼럼 (콤마(,)로 분리됨)',
'Task assignee change' => '담당자의 변경', 'Task assignee change' => '담당자의 변경',
'%s change the assignee of the task #%d to %s' => '%s이 할일 #%d의 담당을 %s로 변경합니다', '%s changed the assignee of the task #%d to %s' => '%s이 할일 #%d의 담당을 %s로 변경합니다',
'%s changed the assignee of the task %s to %s' => '%s이 할일 %s의 담당을 %s로 변경했습니다', '%s changed the assignee of the task %s to %s' => '%s이 할일 %s의 담당을 %s로 변경했습니다',
'New password for the user "%s"' => '사용자 "%s"의 새로운 패스워드', 'New password for the user "%s"' => '사용자 "%s"의 새로운 패스워드',
'Choose an event' => '행사의 선택', 'Choose an event' => '행사의 선택',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => '통화가 성공적으로 추가되었습니다', 'The currency rate have been added successfully.' => '통화가 성공적으로 추가되었습니다',
'Unable to add this currency rate.' => '이 통화 환율을 추가할 수 없습니다.', 'Unable to add this currency rate.' => '이 통화 환율을 추가할 수 없습니다.',
'Webhook URL' => 'Webhook URL', 'Webhook URL' => 'Webhook URL',
'%s remove the assignee of the task %s' => '%s이 할일 %s의 담당을 삭제했습니다', '%s removed the assignee of the task %s' => '%s이 할일 %s의 담당을 삭제했습니다',
'Enable Gravatar images' => 'Gravatar이미지를 활성화', 'Enable Gravatar images' => 'Gravatar이미지를 활성화',
'Information' => '정보', 'Information' => '정보',
'Check two factor authentication code' => '2단 인증을 체크한다', 'Check two factor authentication code' => '2단 인증을 체크한다',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s memperbaharui tugas n°%d', '%s updated the task #%d' => '%s memperbaharui tugas n°%d',
'%s created the task #%d' => '%s membuat tugas n°%d', '%s created the task #%d' => '%s membuat tugas n°%d',
'%s closed the task #%d' => '%s menutup tugas n°%d', '%s closed the task #%d' => '%s menutup tugas n°%d',
'%s open the task #%d' => '%s membuka tugas n°%d', '%s opened the task #%d' => '%s membuka tugas n°%d',
'%s moved the task #%d to the column "%s"' => '%s memindahkan tugas n°%d ke kolom « %s »', '%s moved the task #%d to the column "%s"' => '%s memindahkan tugas n°%d ke kolom « %s »',
'%s moved the task #%d to the position %d in the column "%s"' => '%s memindahkan tugas n°%d ke posisi n°%d dalam kolom « %s »', '%s moved the task #%d to the position %d in the column "%s"' => '%s memindahkan tugas n°%d ke posisi n°%d dalam kolom « %s »',
'Activity' => 'Aktifitas', 'Activity' => 'Aktifitas',
'Default values are "%s"' => 'Standar nilai adalah« %s »', 'Default values are "%s"' => 'Standar nilai adalah« %s »',
'Default columns for new projects (Comma-separated)' => 'Kolom default untuk projek baru (dipisahkan dengan koma)', 'Default columns for new projects (Comma-separated)' => 'Kolom default untuk projek baru (dipisahkan dengan koma)',
'Task assignee change' => 'Mengubah orang ditugaskan untuk tugas', 'Task assignee change' => 'Mengubah orang ditugaskan untuk tugas',
'%s change the assignee of the task #%d to %s' => '%s rubah orang yang ditugaskan dari tugas n%d ke %s', '%s changed the assignee of the task #%d to %s' => '%s rubah orang yang ditugaskan dari tugas n%d ke %s',
'%s changed the assignee of the task %s to %s' => '%s mengubah orang yang ditugaskan dari tugas %s ke %s', '%s changed the assignee of the task %s to %s' => '%s mengubah orang yang ditugaskan dari tugas %s ke %s',
'New password for the user "%s"' => 'Kata laluan baru untuk pengguna « %s »', 'New password for the user "%s"' => 'Kata laluan baru untuk pengguna « %s »',
'Choose an event' => 'Pilih sebuah acara', 'Choose an event' => 'Pilih sebuah acara',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'Nilai tukar mata uang berhasil ditambahkan.', 'The currency rate have been added successfully.' => 'Nilai tukar mata uang berhasil ditambahkan.',
'Unable to add this currency rate.' => 'Tidak dapat menambahkan nilai tukar mata uang', 'Unable to add this currency rate.' => 'Tidak dapat menambahkan nilai tukar mata uang',
'Webhook URL' => 'URL webhook', 'Webhook URL' => 'URL webhook',
'%s remove the assignee of the task %s' => '%s menghapus penugasan dari tugas %s', '%s removed the assignee of the task %s' => '%s menghapus penugasan dari tugas %s',
'Enable Gravatar images' => 'Mengaktifkan gambar Gravatar', 'Enable Gravatar images' => 'Mengaktifkan gambar Gravatar',
'Information' => 'Informasi', 'Information' => 'Informasi',
'Check two factor authentication code' => 'Cek dua faktor kode otentifikasi', 'Check two factor authentication code' => 'Cek dua faktor kode otentifikasi',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s oppdaterte oppgaven #%d', '%s updated the task #%d' => '%s oppdaterte oppgaven #%d',
'%s created the task #%d' => '%s opprettet oppgaven #%d', '%s created the task #%d' => '%s opprettet oppgaven #%d',
'%s closed the task #%d' => '%s lukket oppgaven #%d', '%s closed the task #%d' => '%s lukket oppgaven #%d',
'%s open the task #%d' => '%s åpnet oppgaven #%d', '%s opened the task #%d' => '%s åpnet oppgaven #%d',
'%s moved the task #%d to the column "%s"' => '%s flyttet oppgaven #%d til kolonnen "%s"', '%s moved the task #%d to the column "%s"' => '%s flyttet oppgaven #%d til kolonnen "%s"',
'%s moved the task #%d to the position %d in the column "%s"' => '%s flyttet oppgaven #%d til posisjonen %d i kolonnen "%s"', '%s moved the task #%d to the position %d in the column "%s"' => '%s flyttet oppgaven #%d til posisjonen %d i kolonnen "%s"',
'Activity' => 'Aktivitetslogg', 'Activity' => 'Aktivitetslogg',
'Default values are "%s"' => 'Standardverdier er "%s"', 'Default values are "%s"' => 'Standardverdier er "%s"',
'Default columns for new projects (Comma-separated)' => 'Standard kolonne for nye prosjekter (komma-separert)', 'Default columns for new projects (Comma-separated)' => 'Standard kolonne for nye prosjekter (komma-separert)',
'Task assignee change' => 'Endring av oppgaveansvarlig', 'Task assignee change' => 'Endring av oppgaveansvarlig',
'%s change the assignee of the task #%d to %s' => '%s endre ansvarlig for oppgaven #%d til %s', '%s changed the assignee of the task #%d to %s' => '%s endre ansvarlig for oppgaven #%d til %s',
'%s changed the assignee of the task %s to %s' => '%s endret ansvarlig for oppgaven %s til %s', '%s changed the assignee of the task %s to %s' => '%s endret ansvarlig for oppgaven %s til %s',
'New password for the user "%s"' => 'Nytt passord for brukeren "%s"', 'New password for the user "%s"' => 'Nytt passord for brukeren "%s"',
'Choose an event' => 'Velg en hendelse', 'Choose an event' => 'Velg en hendelse',
@ -601,7 +601,7 @@ return array(
// 'The currency rate have been added successfully.' => '', // 'The currency rate have been added successfully.' => '',
// 'Unable to add this currency rate.' => '', // 'Unable to add this currency rate.' => '',
// 'Webhook URL' => '', // 'Webhook URL' => '',
// '%s remove the assignee of the task %s' => '', // '%s removed the assignee of the task %s' => '',
// 'Enable Gravatar images' => '', // 'Enable Gravatar images' => '',
// 'Information' => '', // 'Information' => '',
// 'Check two factor authentication code' => '', // 'Check two factor authentication code' => '',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s heeft taak %d aangepast', '%s updated the task #%d' => '%s heeft taak %d aangepast',
'%s created the task #%d' => '%s heeft taak %d aangemaakt', '%s created the task #%d' => '%s heeft taak %d aangemaakt',
'%s closed the task #%d' => '%s heeft taak %d gesloten', '%s closed the task #%d' => '%s heeft taak %d gesloten',
'%s open the task #%d' => '%s a heeft taak %d geopend', '%s opened the task #%d' => '%s a heeft taak %d geopend',
'%s moved the task #%d to the column "%s"' => '%s heeft taak %d verplaatst naar kolom « %s »', '%s moved the task #%d to the column "%s"' => '%s heeft taak %d verplaatst naar kolom « %s »',
'%s moved the task #%d to the position %d in the column "%s"' => '%s heeft taak %d verplaatst naar positie %d in kolom « %s »', '%s moved the task #%d to the position %d in the column "%s"' => '%s heeft taak %d verplaatst naar positie %d in kolom « %s »',
'Activity' => 'Activiteit', 'Activity' => 'Activiteit',
'Default values are "%s"' => 'Standaardwaarden zijn « %s »', 'Default values are "%s"' => 'Standaardwaarden zijn « %s »',
'Default columns for new projects (Comma-separated)' => 'Standaard kolommen voor nieuw projecten (komma gescheiden)', 'Default columns for new projects (Comma-separated)' => 'Standaard kolommen voor nieuw projecten (komma gescheiden)',
'Task assignee change' => 'Taak toegewezene verandering', 'Task assignee change' => 'Taak toegewezene verandering',
'%s change the assignee of the task #%d to %s' => '%s heeft de toegewezene voor taak %d veranderd in %s', '%s changed the assignee of the task #%d to %s' => '%s heeft de toegewezene voor taak %d veranderd in %s',
'%s changed the assignee of the task %s to %s' => '%s heeft de toegewezene voor taak %s veranderd in %s', '%s changed the assignee of the task %s to %s' => '%s heeft de toegewezene voor taak %s veranderd in %s',
'New password for the user "%s"' => 'Nieuw wachtwoord voor gebruiker « %s »', 'New password for the user "%s"' => 'Nieuw wachtwoord voor gebruiker « %s »',
'Choose an event' => 'Kies een gebeurtenis', 'Choose an event' => 'Kies een gebeurtenis',
@ -601,7 +601,7 @@ return array(
// 'The currency rate have been added successfully.' => '', // 'The currency rate have been added successfully.' => '',
// 'Unable to add this currency rate.' => '', // 'Unable to add this currency rate.' => '',
'Webhook URL' => 'Webhook URL', 'Webhook URL' => 'Webhook URL',
// '%s remove the assignee of the task %s' => '', // '%s removed the assignee of the task %s' => '',
// 'Enable Gravatar images' => '', // 'Enable Gravatar images' => '',
// 'Information' => '', // 'Information' => '',
// 'Check two factor authentication code' => '', // 'Check two factor authentication code' => '',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s zaktualizował zadanie #%d', '%s updated the task #%d' => '%s zaktualizował zadanie #%d',
'%s created the task #%d' => '%s utworzył zadanie #%d', '%s created the task #%d' => '%s utworzył zadanie #%d',
'%s closed the task #%d' => '%s zamknął zadanie #%d', '%s closed the task #%d' => '%s zamknął zadanie #%d',
'%s open the task #%d' => '%s otworzył zadanie #%d', '%s opened the task #%d' => '%s otworzył zadanie #%d',
'%s moved the task #%d to the column "%s"' => '%s przeniósł zadanie #%d do kolumny "%s"', '%s moved the task #%d to the column "%s"' => '%s przeniósł zadanie #%d do kolumny "%s"',
'%s moved the task #%d to the position %d in the column "%s"' => '%s przeniósł zadanie #%d na pozycję %d w kolmnie "%s"', '%s moved the task #%d to the position %d in the column "%s"' => '%s przeniósł zadanie #%d na pozycję %d w kolmnie "%s"',
'Activity' => 'Aktywność', 'Activity' => 'Aktywność',
'Default values are "%s"' => 'Domyślne wartości: "%s"', 'Default values are "%s"' => 'Domyślne wartości: "%s"',
'Default columns for new projects (Comma-separated)' => 'Domyślne kolumny dla nowych projektów (oddzielone przecinkiem)', 'Default columns for new projects (Comma-separated)' => 'Domyślne kolumny dla nowych projektów (oddzielone przecinkiem)',
'Task assignee change' => 'Zmień osobę odpowiedzialną', 'Task assignee change' => 'Zmień osobę odpowiedzialną',
'%s change the assignee of the task #%d to %s' => '%s zmienił osobę odpowiedzialną za zadanie #%d na %s', '%s changed the assignee of the task #%d to %s' => '%s zmienił osobę odpowiedzialną za zadanie #%d na %s',
'%s changed the assignee of the task %s to %s' => '%s zmienił osobę odpowiedzialną za zadanie %s na %s', '%s changed the assignee of the task %s to %s' => '%s zmienił osobę odpowiedzialną za zadanie %s na %s',
'New password for the user "%s"' => 'Nowe hasło użytkownika "%s"', 'New password for the user "%s"' => 'Nowe hasło użytkownika "%s"',
'Choose an event' => 'Wybierz zdarzenie', 'Choose an event' => 'Wybierz zdarzenie',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'Dodano kurs waluty', 'The currency rate have been added successfully.' => 'Dodano kurs waluty',
'Unable to add this currency rate.' => 'Nie można dodać kursu waluty', 'Unable to add this currency rate.' => 'Nie można dodać kursu waluty',
'Webhook URL' => 'Adres webhooka', 'Webhook URL' => 'Adres webhooka',
'%s remove the assignee of the task %s' => '%s usunął osobę przypisaną do zadania %s', '%s removed the assignee of the task %s' => '%s usunął osobę przypisaną do zadania %s',
'Enable Gravatar images' => 'Włącz Gravatar', 'Enable Gravatar images' => 'Włącz Gravatar',
'Information' => 'Informacje', 'Information' => 'Informacje',
'Check two factor authentication code' => 'Sprawdź kod weryfikujący', 'Check two factor authentication code' => 'Sprawdź kod weryfikujący',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s atualizou a tarefa #%d', '%s updated the task #%d' => '%s atualizou a tarefa #%d',
'%s created the task #%d' => '%s criou a tarefa #%d', '%s created the task #%d' => '%s criou a tarefa #%d',
'%s closed the task #%d' => '%s finalizou a tarefa #%d', '%s closed the task #%d' => '%s finalizou a tarefa #%d',
'%s open the task #%d' => '%s abriu a tarefa #%d', '%s opened the task #%d' => '%s abriu a tarefa #%d',
'%s moved the task #%d to the column "%s"' => '%s moveu a tarefa #%d para a coluna "%s"', '%s moved the task #%d to the column "%s"' => '%s moveu a tarefa #%d para a coluna "%s"',
'%s moved the task #%d to the position %d in the column "%s"' => '%s moveu a tarefa #%d para a posição %d na coluna "%s"', '%s moved the task #%d to the position %d in the column "%s"' => '%s moveu a tarefa #%d para a posição %d na coluna "%s"',
'Activity' => 'Atividade', 'Activity' => 'Atividade',
'Default values are "%s"' => 'Os valores padrão são "%s"', 'Default values are "%s"' => 'Os valores padrão são "%s"',
'Default columns for new projects (Comma-separated)' => 'Colunas padrão para novos projetos (Separado por vírgula)', 'Default columns for new projects (Comma-separated)' => 'Colunas padrão para novos projetos (Separado por vírgula)',
'Task assignee change' => 'Mudar designação da tarefa', 'Task assignee change' => 'Mudar designação da tarefa',
'%s change the assignee of the task #%d to %s' => '%s mudou a designação da tarefa #%d para %s', '%s changed the assignee of the task #%d to %s' => '%s mudou a designação da tarefa #%d para %s',
'%s changed the assignee of the task %s to %s' => '%s mudou a designação da tarefa %s para %s', '%s changed the assignee of the task %s to %s' => '%s mudou a designação da tarefa %s para %s',
'New password for the user "%s"' => 'Nova senha para o usuário "%s"', 'New password for the user "%s"' => 'Nova senha para o usuário "%s"',
'Choose an event' => 'Escolher um evento', 'Choose an event' => 'Escolher um evento',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'A taxa de câmbio foi adicionada com sucesso.', 'The currency rate have been added successfully.' => 'A taxa de câmbio foi adicionada com sucesso.',
'Unable to add this currency rate.' => 'Impossível de adicionar essa taxa de câmbio.', 'Unable to add this currency rate.' => 'Impossível de adicionar essa taxa de câmbio.',
'Webhook URL' => 'URL do webhook', 'Webhook URL' => 'URL do webhook',
'%s remove the assignee of the task %s' => '%s removeu a pessoa designada para a tarefa %s', '%s removed the assignee of the task %s' => '%s removeu a pessoa designada para a tarefa %s',
'Enable Gravatar images' => 'Ativar imagens do Gravatar', 'Enable Gravatar images' => 'Ativar imagens do Gravatar',
'Information' => 'Informações', 'Information' => 'Informações',
'Check two factor authentication code' => 'Verifique o código de autenticação em duas etapas', 'Check two factor authentication code' => 'Verifique o código de autenticação em duas etapas',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s actualizou a tarefa #%d', '%s updated the task #%d' => '%s actualizou a tarefa #%d',
'%s created the task #%d' => '%s criou a tarefa #%d', '%s created the task #%d' => '%s criou a tarefa #%d',
'%s closed the task #%d' => '%s finalizou a tarefa #%d', '%s closed the task #%d' => '%s finalizou a tarefa #%d',
'%s open the task #%d' => '%s abriu a tarefa #%d', '%s opened the task #%d' => '%s abriu a tarefa #%d',
'%s moved the task #%d to the column "%s"' => '%s moveu a tarefa #%d para a coluna "%s"', '%s moved the task #%d to the column "%s"' => '%s moveu a tarefa #%d para a coluna "%s"',
'%s moved the task #%d to the position %d in the column "%s"' => '%s moveu a tarefa #%d para a posição %d na coluna "%s"', '%s moved the task #%d to the position %d in the column "%s"' => '%s moveu a tarefa #%d para a posição %d na coluna "%s"',
'Activity' => 'Actividade', 'Activity' => 'Actividade',
'Default values are "%s"' => 'Os valores padrão são "%s"', 'Default values are "%s"' => 'Os valores padrão são "%s"',
'Default columns for new projects (Comma-separated)' => 'Colunas padrão para novos projectos (Separado por vírgula)', 'Default columns for new projects (Comma-separated)' => 'Colunas padrão para novos projectos (Separado por vírgula)',
'Task assignee change' => 'Mudar assignação da tarefa', 'Task assignee change' => 'Mudar assignação da tarefa',
'%s change the assignee of the task #%d to %s' => '%s mudou a assignação da tarefa #%d para %s', '%s changed the assignee of the task #%d to %s' => '%s mudou a assignação da tarefa #%d para %s',
'%s changed the assignee of the task %s to %s' => '%s mudou a assignação da tarefa %s para %s', '%s changed the assignee of the task %s to %s' => '%s mudou a assignação da tarefa %s para %s',
'New password for the user "%s"' => 'Nova senha para o utilizador "%s"', 'New password for the user "%s"' => 'Nova senha para o utilizador "%s"',
'Choose an event' => 'Escolher um evento', 'Choose an event' => 'Escolher um evento',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'A taxa de câmbio foi adicionada com sucesso.', 'The currency rate have been added successfully.' => 'A taxa de câmbio foi adicionada com sucesso.',
'Unable to add this currency rate.' => 'Impossível adicionar essa taxa de câmbio.', 'Unable to add this currency rate.' => 'Impossível adicionar essa taxa de câmbio.',
'Webhook URL' => 'URL do webhook', 'Webhook URL' => 'URL do webhook',
'%s remove the assignee of the task %s' => '%s removeu a pessoa assignada à tarefa %s', '%s removed the assignee of the task %s' => '%s removeu a pessoa assignada à tarefa %s',
'Enable Gravatar images' => 'Activar imagem Gravatar', 'Enable Gravatar images' => 'Activar imagem Gravatar',
'Information' => 'Informações', 'Information' => 'Informações',
'Check two factor authentication code' => 'Verificação do código de autenticação com factor duplo', 'Check two factor authentication code' => 'Verificação do código de autenticação com factor duplo',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s обновил задачу #%d', '%s updated the task #%d' => '%s обновил задачу #%d',
'%s created the task #%d' => '%s создал задачу #%d', '%s created the task #%d' => '%s создал задачу #%d',
'%s closed the task #%d' => '%s закрыл задачу #%d', '%s closed the task #%d' => '%s закрыл задачу #%d',
'%s open the task #%d' => '%s открыл задачу #%d', '%s opened the task #%d' => '%s открыл задачу #%d',
'%s moved the task #%d to the column "%s"' => '%s переместил задачу #%d в колонку "%s"', '%s moved the task #%d to the column "%s"' => '%s переместил задачу #%d в колонку "%s"',
'%s moved the task #%d to the position %d in the column "%s"' => '%s переместил задачу #%d на позицию %d в колонке "%s"', '%s moved the task #%d to the position %d in the column "%s"' => '%s переместил задачу #%d на позицию %d в колонке "%s"',
'Activity' => 'Активность', 'Activity' => 'Активность',
'Default values are "%s"' => 'Колонки по умолчанию: "%s"', 'Default values are "%s"' => 'Колонки по умолчанию: "%s"',
'Default columns for new projects (Comma-separated)' => 'Колонки по умолчанию для новых проектов (разделять запятой)', 'Default columns for new projects (Comma-separated)' => 'Колонки по умолчанию для новых проектов (разделять запятой)',
'Task assignee change' => 'Изменен назначенный', 'Task assignee change' => 'Изменен назначенный',
'%s change the assignee of the task #%d to %s' => '%s сменил назначенного для задачи #%d на %s', '%s changed the assignee of the task #%d to %s' => '%s сменил назначенного для задачи #%d на %s',
'%s changed the assignee of the task %s to %s' => '%s сменил назначенного для задачи %s на %s', '%s changed the assignee of the task %s to %s' => '%s сменил назначенного для задачи %s на %s',
'New password for the user "%s"' => 'Новый пароль для пользователя "%s"', 'New password for the user "%s"' => 'Новый пароль для пользователя "%s"',
'Choose an event' => 'Выберите событие', 'Choose an event' => 'Выберите событие',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'Курс валюты был успешно добавлен.', 'The currency rate have been added successfully.' => 'Курс валюты был успешно добавлен.',
'Unable to add this currency rate.' => 'Невозможно добавить этот курс валюты.', 'Unable to add this currency rate.' => 'Невозможно добавить этот курс валюты.',
'Webhook URL' => 'Webhook URL', 'Webhook URL' => 'Webhook URL',
'%s remove the assignee of the task %s' => '%s удалить назначенную задачу %s', '%s removed the assignee of the task %s' => '%s удалить назначенную задачу %s',
'Enable Gravatar images' => 'Включить Gravatar изображения', 'Enable Gravatar images' => 'Включить Gravatar изображения',
'Information' => 'Информация', 'Information' => 'Информация',
'Check two factor authentication code' => 'Проверка кода двухфакторной авторизации', 'Check two factor authentication code' => 'Проверка кода двухфакторной авторизации',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s izmenjen zadatak #%d', '%s updated the task #%d' => '%s izmenjen zadatak #%d',
'%s created the task #%d' => '%s kreirao zadatak #%d', '%s created the task #%d' => '%s kreirao zadatak #%d',
'%s closed the task #%d' => '%s zatvorio zadatak #%d', '%s closed the task #%d' => '%s zatvorio zadatak #%d',
'%s open the task #%d' => '%s otvorio zadatak #%d', '%s opened the task #%d' => '%s otvorio zadatak #%d',
'%s moved the task #%d to the column "%s"' => '%s premestio zadatak #%d u kolonu "%s"', '%s moved the task #%d to the column "%s"' => '%s premestio zadatak #%d u kolonu "%s"',
'%s moved the task #%d to the position %d in the column "%s"' => '%s premestio zadatak #%d na pozycję %d w kolmnie "%s"', '%s moved the task #%d to the position %d in the column "%s"' => '%s premestio zadatak #%d na pozycję %d w kolmnie "%s"',
'Activity' => 'Aktivnosti', 'Activity' => 'Aktivnosti',
'Default values are "%s"' => 'Osnovne vrednosti su: "%s"', 'Default values are "%s"' => 'Osnovne vrednosti su: "%s"',
'Default columns for new projects (Comma-separated)' => 'Osnovne kolone za novi projekat (Odvojeni zarezom)', 'Default columns for new projects (Comma-separated)' => 'Osnovne kolone za novi projekat (Odvojeni zarezom)',
'Task assignee change' => 'Zmień osobę odpowiedzialną', 'Task assignee change' => 'Zmień osobę odpowiedzialną',
'%s change the assignee of the task #%d to %s' => '%s zamena dodele za zadatak #%d na %s', '%s changed the assignee of the task #%d to %s' => '%s zamena dodele za zadatak #%d na %s',
'%s changed the assignee of the task %s to %s' => '%s zamena dodele za zadatak %s na %s', '%s changed the assignee of the task %s to %s' => '%s zamena dodele za zadatak %s na %s',
'New password for the user "%s"' => 'Nova lozinka za korisnika "%s"', 'New password for the user "%s"' => 'Nova lozinka za korisnika "%s"',
'Choose an event' => 'Izaberi događaj', 'Choose an event' => 'Izaberi događaj',
@ -601,7 +601,7 @@ return array(
// 'The currency rate have been added successfully.' => '', // 'The currency rate have been added successfully.' => '',
// 'Unable to add this currency rate.' => '', // 'Unable to add this currency rate.' => '',
// 'Webhook URL' => '', // 'Webhook URL' => '',
// '%s remove the assignee of the task %s' => '', // '%s removed the assignee of the task %s' => '',
// 'Enable Gravatar images' => '', // 'Enable Gravatar images' => '',
// 'Information' => '', // 'Information' => '',
// 'Check two factor authentication code' => '', // 'Check two factor authentication code' => '',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s uppdaterade uppgiften #%d', '%s updated the task #%d' => '%s uppdaterade uppgiften #%d',
'%s created the task #%d' => '%s skapade uppgiften #%d', '%s created the task #%d' => '%s skapade uppgiften #%d',
'%s closed the task #%d' => '%s stängde uppgiften #%d', '%s closed the task #%d' => '%s stängde uppgiften #%d',
'%s open the task #%d' => '%s öppnade uppgiften #%d', '%s opened the task #%d' => '%s öppnade uppgiften #%d',
'%s moved the task #%d to the column "%s"' => '%s flyttade uppgiften #%d till kolumnen "%s"', '%s moved the task #%d to the column "%s"' => '%s flyttade uppgiften #%d till kolumnen "%s"',
'%s moved the task #%d to the position %d in the column "%s"' => '%s flyttade uppgiften #%d till positionen %d i kolumnen "%s"', '%s moved the task #%d to the position %d in the column "%s"' => '%s flyttade uppgiften #%d till positionen %d i kolumnen "%s"',
'Activity' => 'Aktivitet', 'Activity' => 'Aktivitet',
'Default values are "%s"' => 'Standardvärden är "%s"', 'Default values are "%s"' => 'Standardvärden är "%s"',
'Default columns for new projects (Comma-separated)' => 'Standardkolumner för nya projekt (kommaseparerade)', 'Default columns for new projects (Comma-separated)' => 'Standardkolumner för nya projekt (kommaseparerade)',
'Task assignee change' => 'Ändra tilldelning av uppgiften', 'Task assignee change' => 'Ändra tilldelning av uppgiften',
'%s change the assignee of the task #%d to %s' => '%s byt tilldelning av uppgiften #%d till %s', '%s changed the assignee of the task #%d to %s' => '%s byt tilldelning av uppgiften #%d till %s',
'%s changed the assignee of the task %s to %s' => '%s byt tilldelning av uppgiften %s till %s', '%s changed the assignee of the task %s to %s' => '%s byt tilldelning av uppgiften %s till %s',
'New password for the user "%s"' => 'Nytt lösenord för användaren "%s"', 'New password for the user "%s"' => 'Nytt lösenord för användaren "%s"',
'Choose an event' => 'Välj en händelse', 'Choose an event' => 'Välj en händelse',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'Valutakursen har lagts till.', 'The currency rate have been added successfully.' => 'Valutakursen har lagts till.',
'Unable to add this currency rate.' => 'Kunde inte lägga till valutakursen.', 'Unable to add this currency rate.' => 'Kunde inte lägga till valutakursen.',
'Webhook URL' => 'Webhook URL', 'Webhook URL' => 'Webhook URL',
'%s remove the assignee of the task %s' => '%s ta bort tilldelningen av uppgiften %s', '%s removed the assignee of the task %s' => '%s ta bort tilldelningen av uppgiften %s',
'Enable Gravatar images' => 'Aktivera Gravatar bilder', 'Enable Gravatar images' => 'Aktivera Gravatar bilder',
'Information' => 'Information', 'Information' => 'Information',
'Check two factor authentication code' => 'Kolla tvåfaktorsverifieringskod', 'Check two factor authentication code' => 'Kolla tvåfaktorsverifieringskod',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s ปรับปรุงงานแล้ว #%d', '%s updated the task #%d' => '%s ปรับปรุงงานแล้ว #%d',
'%s created the task #%d' => '%s สร้างงานแล้ว #%d', '%s created the task #%d' => '%s สร้างงานแล้ว #%d',
'%s closed the task #%d' => '%s ปิดงานแล้ว #%d', '%s closed the task #%d' => '%s ปิดงานแล้ว #%d',
'%s open the task #%d' => '%s เปิดงานแล้ว #%d', '%s opened the task #%d' => '%s เปิดงานแล้ว #%d',
'%s moved the task #%d to the column "%s"' => '%s ย้ายงานแล้ว #%d ไปที่คอลัมน์ "%s"', '%s moved the task #%d to the column "%s"' => '%s ย้ายงานแล้ว #%d ไปที่คอลัมน์ "%s"',
'%s moved the task #%d to the position %d in the column "%s"' => '%s ย้ายงานแล้ว #%d ไปตำแหน่ง %d ในคอลัมน์ที่ "%s"', '%s moved the task #%d to the position %d in the column "%s"' => '%s ย้ายงานแล้ว #%d ไปตำแหน่ง %d ในคอลัมน์ที่ "%s"',
'Activity' => 'กิจกรรม', 'Activity' => 'กิจกรรม',
'Default values are "%s"' => 'ค่าเริ่มต้น "%s"', 'Default values are "%s"' => 'ค่าเริ่มต้น "%s"',
'Default columns for new projects (Comma-separated)' => 'คอลัมน์เริ่มต้นสำหรับโปรเจคใหม่ (Comma-separated)', 'Default columns for new projects (Comma-separated)' => 'คอลัมน์เริ่มต้นสำหรับโปรเจคใหม่ (Comma-separated)',
'Task assignee change' => 'เปลี่ยนการกำหนดบุคคลของงาน', 'Task assignee change' => 'เปลี่ยนการกำหนดบุคคลของงาน',
'%s change the assignee of the task #%d to %s' => '%s เปลี่ยนผู้รับผิดชอบของงาน #%d เป็น %s', '%s changed the assignee of the task #%d to %s' => '%s เปลี่ยนผู้รับผิดชอบของงาน #%d เป็น %s',
'%s changed the assignee of the task %s to %s' => '%s เปลี่ยนผู้รับผิดชอบของงาน %s เป็น %s', '%s changed the assignee of the task %s to %s' => '%s เปลี่ยนผู้รับผิดชอบของงาน %s เป็น %s',
'New password for the user "%s"' => 'รหัสผ่านใหม่สำหรับผู้ใช้ "%s"', 'New password for the user "%s"' => 'รหัสผ่านใหม่สำหรับผู้ใช้ "%s"',
'Choose an event' => 'เลือกเหตุการณ์', 'Choose an event' => 'เลือกเหตุการณ์',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'เพิ่มอัตราค่าเงินเรียบร้อย', 'The currency rate have been added successfully.' => 'เพิ่มอัตราค่าเงินเรียบร้อย',
'Unable to add this currency rate.' => 'ไม่สามารถเพิ่มค่าเงินนี้', 'Unable to add this currency rate.' => 'ไม่สามารถเพิ่มค่าเงินนี้',
// 'Webhook URL' => '', // 'Webhook URL' => '',
'%s remove the assignee of the task %s' => '%s เอาผู้รับผิดชอบออกจากงาน %s', '%s removed the assignee of the task %s' => '%s เอาผู้รับผิดชอบออกจากงาน %s',
'Enable Gravatar images' => 'สามารถใช้งานภาพ Gravatar', 'Enable Gravatar images' => 'สามารถใช้งานภาพ Gravatar',
'Information' => 'ข้อมูลสารสนเทศ', 'Information' => 'ข้อมูลสารสนเทศ',
// 'Check two factor authentication code' => '', // 'Check two factor authentication code' => '',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s kullanıcısı #%d nolu görevi güncelledi', '%s updated the task #%d' => '%s kullanıcısı #%d nolu görevi güncelledi',
'%s created the task #%d' => '%s kullanıcısı #%d nolu görevi oluşturdu', '%s created the task #%d' => '%s kullanıcısı #%d nolu görevi oluşturdu',
'%s closed the task #%d' => '%s kullanıcısı #%d nolu görevi kapattı', '%s closed the task #%d' => '%s kullanıcısı #%d nolu görevi kapattı',
'%s open the task #%d' => '%s kullanıcısı #%d nolu görevi açtı', '%s opened the task #%d' => '%s kullanıcısı #%d nolu görevi açtı',
'%s moved the task #%d to the column "%s"' => '%s kullanıcısı #%d nolu görevi "%s" sütununa taşıdı', '%s moved the task #%d to the column "%s"' => '%s kullanıcısı #%d nolu görevi "%s" sütununa taşıdı',
'%s moved the task #%d to the position %d in the column "%s"' => '%s kullanıcısı #%d nolu görevi %d pozisyonu "%s" sütununa taşıdı', '%s moved the task #%d to the position %d in the column "%s"' => '%s kullanıcısı #%d nolu görevi %d pozisyonu "%s" sütununa taşıdı',
'Activity' => 'Aktivite', 'Activity' => 'Aktivite',
'Default values are "%s"' => 'Varsayılan değerler "%s"', 'Default values are "%s"' => 'Varsayılan değerler "%s"',
'Default columns for new projects (Comma-separated)' => 'Yeni projeler için varsayılan sütunlar (virgül ile ayrılmış)', 'Default columns for new projects (Comma-separated)' => 'Yeni projeler için varsayılan sütunlar (virgül ile ayrılmış)',
'Task assignee change' => 'Göreve atanan kullanıcı değişikliği', 'Task assignee change' => 'Göreve atanan kullanıcı değişikliği',
'%s change the assignee of the task #%d to %s' => '%s kullanıcısı #%d nolu görevin sorumlusunu %s olarak değiştirdi', '%s changed the assignee of the task #%d to %s' => '%s kullanıcısı #%d nolu görevin sorumlusunu %s olarak değiştirdi',
'%s changed the assignee of the task %s to %s' => '%s kullanıcısı %s görevinin sorumlusunu %s olarak değiştirdi', '%s changed the assignee of the task %s to %s' => '%s kullanıcısı %s görevinin sorumlusunu %s olarak değiştirdi',
'New password for the user "%s"' => '"%s" kullanıcısı için yeni şifre', 'New password for the user "%s"' => '"%s" kullanıcısı için yeni şifre',
'Choose an event' => 'Bir durum seçin', 'Choose an event' => 'Bir durum seçin',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => 'Kur başarıyla eklendi', 'The currency rate have been added successfully.' => 'Kur başarıyla eklendi',
'Unable to add this currency rate.' => 'Bu kur eklenemedi', 'Unable to add this currency rate.' => 'Bu kur eklenemedi',
// 'Webhook URL' => '', // 'Webhook URL' => '',
'%s remove the assignee of the task %s' => '%s, %s görevinin atanan bilgisini kaldırdı', '%s removed the assignee of the task %s' => '%s, %s görevinin atanan bilgisini kaldırdı',
'Enable Gravatar images' => 'Gravatar resimlerini kullanıma aç', 'Enable Gravatar images' => 'Gravatar resimlerini kullanıma aç',
'Information' => 'Bilgi', 'Information' => 'Bilgi',
'Check two factor authentication code' => 'İki kademeli doğrulama kodunu kontrol et', 'Check two factor authentication code' => 'İki kademeli doğrulama kodunu kontrol et',

View File

@ -386,14 +386,14 @@ return array(
'%s updated the task #%d' => '%s 更新了任务 #%d', '%s updated the task #%d' => '%s 更新了任务 #%d',
'%s created the task #%d' => '%s 创建了任务 #%d', '%s created the task #%d' => '%s 创建了任务 #%d',
'%s closed the task #%d' => '%s 关闭了任务 #%d', '%s closed the task #%d' => '%s 关闭了任务 #%d',
'%s open the task #%d' => '%s 开启了任务 #%d', '%s opened the task #%d' => '%s 开启了任务 #%d',
'%s moved the task #%d to the column "%s"' => '%s 将任务 #%d 移动到栏目 "%s"', '%s moved the task #%d to the column "%s"' => '%s 将任务 #%d 移动到栏目 "%s"',
'%s moved the task #%d to the position %d in the column "%s"' => '%s将任务#%d移动到"%s"的第 %d 列', '%s moved the task #%d to the position %d in the column "%s"' => '%s将任务#%d移动到"%s"的第 %d 列',
'Activity' => '动态', 'Activity' => '动态',
'Default values are "%s"' => '默认值为 "%s"', 'Default values are "%s"' => '默认值为 "%s"',
'Default columns for new projects (Comma-separated)' => '新建项目的默认栏目(用逗号分开)', 'Default columns for new projects (Comma-separated)' => '新建项目的默认栏目(用逗号分开)',
'Task assignee change' => '任务分配变更', 'Task assignee change' => '任务分配变更',
'%s change the assignee of the task #%d to %s' => '%s 将任务 #%d 分配给了 %s', '%s changed the assignee of the task #%d to %s' => '%s 将任务 #%d 分配给了 %s',
'%s changed the assignee of the task %s to %s' => '%s 将任务 %s 分配给 %s', '%s changed the assignee of the task %s to %s' => '%s 将任务 %s 分配给 %s',
'New password for the user "%s"' => '用户"%s"的新密码', 'New password for the user "%s"' => '用户"%s"的新密码',
'Choose an event' => '选择一个事件', 'Choose an event' => '选择一个事件',
@ -601,7 +601,7 @@ return array(
'The currency rate have been added successfully.' => '成功添加汇率。', 'The currency rate have been added successfully.' => '成功添加汇率。',
'Unable to add this currency rate.' => '无法添加此汇率', 'Unable to add this currency rate.' => '无法添加此汇率',
'Webhook URL' => '网络钩子 URL', 'Webhook URL' => '网络钩子 URL',
'%s remove the assignee of the task %s' => '%s删除了任务%s的负责人', '%s removed the assignee of the task %s' => '%s删除了任务%s的负责人',
'Enable Gravatar images' => '启用 Gravatar 图像', 'Enable Gravatar images' => '启用 Gravatar 图像',
'Information' => '信息', 'Information' => '信息',
'Check two factor authentication code' => '检查双重认证码', 'Check two factor authentication code' => '检查双重认证码',

View File

@ -3,10 +3,15 @@
namespace Kanboard\Model; namespace Kanboard\Model;
use Kanboard\Core\Base; use Kanboard\Core\Base;
use Kanboard\EventBuilder\CommentEventBuilder;
use Kanboard\EventBuilder\EventIteratorBuilder;
use Kanboard\EventBuilder\SubtaskEventBuilder;
use Kanboard\EventBuilder\TaskEventBuilder;
use Kanboard\EventBuilder\TaskFileEventBuilder;
use Kanboard\EventBuilder\TaskLinkEventBuilder; use Kanboard\EventBuilder\TaskLinkEventBuilder;
/** /**
* Notification * Notification Model
* *
* @package Kanboard\Model * @package Kanboard\Model
* @author Frederic Guillot * @author Frederic Guillot
@ -17,150 +22,79 @@ class NotificationModel extends Base
* Get the event title with author * Get the event title with author
* *
* @access public * @access public
* @param string $event_author * @param string $eventAuthor
* @param string $event_name * @param string $eventName
* @param array $event_data * @param array $eventData
* @return string * @return string
*/ */
public function getTitleWithAuthor($event_author, $event_name, array $event_data) public function getTitleWithAuthor($eventAuthor, $eventName, array $eventData)
{ {
switch ($event_name) { foreach ($this->getIteratorBuilder() as $builder) {
case TaskModel::EVENT_ASSIGNEE_CHANGE: $title = $builder->buildTitleWithAuthor($eventAuthor, $eventName, $eventData);
$assignee = $event_data['task']['assignee_name'] ?: $event_data['task']['assignee_username'];
if (! empty($assignee)) { if ($title !== '') {
return e('%s change the assignee of the task #%d to %s', $event_author, $event_data['task']['id'], $assignee); return $title;
} }
return e('%s remove the assignee of the task %s', $event_author, e('#%d', $event_data['task']['id']));
case TaskModel::EVENT_UPDATE:
return e('%s updated the task #%d', $event_author, $event_data['task']['id']);
case TaskModel::EVENT_CREATE:
return e('%s created the task #%d', $event_author, $event_data['task']['id']);
case TaskModel::EVENT_CLOSE:
return e('%s closed the task #%d', $event_author, $event_data['task']['id']);
case TaskModel::EVENT_OPEN:
return e('%s open the task #%d', $event_author, $event_data['task']['id']);
case TaskModel::EVENT_MOVE_COLUMN:
return e(
'%s moved the task #%d to the column "%s"',
$event_author,
$event_data['task']['id'],
$event_data['task']['column_title']
);
case TaskModel::EVENT_MOVE_POSITION:
return e(
'%s moved the task #%d to the position %d in the column "%s"',
$event_author,
$event_data['task']['id'],
$event_data['task']['position'],
$event_data['task']['column_title']
);
case TaskModel::EVENT_MOVE_SWIMLANE:
if ($event_data['task']['swimlane_id'] == 0) {
return e('%s moved the task #%d to the first swimlane', $event_author, $event_data['task']['id']);
}
return e(
'%s moved the task #%d to the swimlane "%s"',
$event_author,
$event_data['task']['id'],
$event_data['task']['swimlane_name']
);
case SubtaskModel::EVENT_UPDATE:
return e('%s updated a subtask for the task #%d', $event_author, $event_data['task']['id']);
case SubtaskModel::EVENT_CREATE:
return e('%s created a subtask for the task #%d', $event_author, $event_data['task']['id']);
case SubtaskModel::EVENT_DELETE:
return e('%s removed a subtask for the task #%d', $event_author, $event_data['task']['id']);
case CommentModel::EVENT_UPDATE:
return e('%s updated a comment on the task #%d', $event_author, $event_data['task']['id']);
case CommentModel::EVENT_CREATE:
return e('%s commented on the task #%d', $event_author, $event_data['task']['id']);
case CommentModel::EVENT_DELETE:
return e('%s removed a comment on the task #%d', $event_author, $event_data['task']['id']);
case TaskFileModel::EVENT_CREATE:
return e('%s attached a file to the task #%d', $event_author, $event_data['task']['id']);
case TaskModel::EVENT_USER_MENTION:
return e('%s mentioned you in the task #%d', $event_author, $event_data['task']['id']);
case CommentModel::EVENT_USER_MENTION:
return e('%s mentioned you in a comment on the task #%d', $event_author, $event_data['task']['id']);
default:
return TaskLinkEventBuilder::getInstance($this->container)
->buildTitleWithAuthor($event_author, $event_name, $event_data) ?:
e('Notification');
} }
return e('Notification');
} }
/** /**
* Get the event title without author * Get the event title without author
* *
* @access public * @access public
* @param string $event_name * @param string $eventName
* @param array $event_data * @param array $eventData
* @return string * @return string
*/ */
public function getTitleWithoutAuthor($event_name, array $event_data) public function getTitleWithoutAuthor($eventName, array $eventData)
{ {
switch ($event_name) { foreach ($this->getIteratorBuilder() as $builder) {
case TaskFileModel::EVENT_CREATE: $title = $builder->buildTitleWithoutAuthor($eventName, $eventData);
return e('New attachment on task #%d: %s', $event_data['file']['task_id'], $event_data['file']['name']);
case CommentModel::EVENT_CREATE: if ($title !== '') {
return e('New comment on task #%d', $event_data['comment']['task_id']); return $title;
case CommentModel::EVENT_UPDATE: }
return e('Comment updated on task #%d', $event_data['comment']['task_id']);
case CommentModel::EVENT_DELETE:
return e('Comment removed on task #%d', $event_data['comment']['task_id']);
case SubtaskModel::EVENT_CREATE:
return e('New subtask on task #%d', $event_data['subtask']['task_id']);
case SubtaskModel::EVENT_UPDATE:
return e('Subtask updated on task #%d', $event_data['subtask']['task_id']);
case SubtaskModel::EVENT_DELETE:
return e('Subtask removed on task #%d', $event_data['subtask']['task_id']);
case TaskModel::EVENT_CREATE:
return e('New task #%d: %s', $event_data['task']['id'], $event_data['task']['title']);
case TaskModel::EVENT_UPDATE:
return e('Task updated #%d', $event_data['task']['id']);
case TaskModel::EVENT_CLOSE:
return e('Task #%d closed', $event_data['task']['id']);
case TaskModel::EVENT_OPEN:
return e('Task #%d opened', $event_data['task']['id']);
case TaskModel::EVENT_MOVE_COLUMN:
return e('Column changed for task #%d', $event_data['task']['id']);
case TaskModel::EVENT_MOVE_POSITION:
return e('New position for task #%d', $event_data['task']['id']);
case TaskModel::EVENT_MOVE_SWIMLANE:
return e('Swimlane changed for task #%d', $event_data['task']['id']);
case TaskModel::EVENT_ASSIGNEE_CHANGE:
return e('Assignee changed on task #%d', $event_data['task']['id']);
case TaskModel::EVENT_OVERDUE:
$nb = count($event_data['tasks']);
return $nb > 1 ? e('%d overdue tasks', $nb) : e('Task #%d is overdue', $event_data['tasks'][0]['id']);
case TaskModel::EVENT_USER_MENTION:
return e('You were mentioned in the task #%d', $event_data['task']['id']);
case CommentModel::EVENT_USER_MENTION:
return e('You were mentioned in a comment on the task #%d', $event_data['task']['id']);
default:
return TaskLinkEventBuilder::getInstance($this->container)
->buildTitleWithoutAuthor($event_name, $event_data) ?:
e('Notification');
} }
return e('Notification');
} }
/** /**
* Get task id from event * Get task id from event
* *
* @access public * @access public
* @param string $event_name * @param string $eventName
* @param array $event_data * @param array $eventData
* @return integer * @return integer
*/ */
public function getTaskIdFromEvent($event_name, array $event_data) public function getTaskIdFromEvent($eventName, array $eventData)
{ {
if ($event_name === TaskModel::EVENT_OVERDUE) { if ($eventName === TaskModel::EVENT_OVERDUE) {
return $event_data['tasks'][0]['id']; return $eventData['tasks'][0]['id'];
} }
return isset($event_data['task']['id']) ? $event_data['task']['id'] : 0; return isset($eventData['task']['id']) ? $eventData['task']['id'] : 0;
}
/**
* Get iterator builder
*
* @access protected
* @return EventIteratorBuilder
*/
protected function getIteratorBuilder()
{
$iterator = new EventIteratorBuilder();
$iterator
->withBuilder(TaskEventBuilder::getInstance($this->container))
->withBuilder(CommentEventBuilder::getInstance($this->container))
->withBuilder(SubtaskEventBuilder::getInstance($this->container))
->withBuilder(TaskFileEventBuilder::getInstance($this->container))
->withBuilder(TaskLinkEventBuilder::getInstance($this->container))
;
return $iterator;
} }
} }

View File

@ -8,7 +8,7 @@
$this->text->e($assignee) $this->text->e($assignee)
) ?> ) ?>
<?php else: ?> <?php else: ?>
<?= e('%s remove the assignee of the task %s', $this->text->e($author), $this->url->link(t('#%d', $task['id']), 'TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']))) ?> <?= e('%s removed the assignee of the task %s', $this->text->e($author), $this->url->link(t('#%d', $task['id']), 'TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']))) ?>
<?php endif ?> <?php endif ?>
<span class="activity-date"><?= $this->dt->datetime($date_creation) ?></span> <span class="activity-date"><?= $this->dt->datetime($date_creation) ?></span>
</p> </p>

View File

@ -33,7 +33,7 @@ class TaskAssignCategoryLinkTest extends Base
$event = TaskLinkEventBuilder::getInstance($this->container) $event = TaskLinkEventBuilder::getInstance($this->container)
->withTaskLinkId(1) ->withTaskLinkId(1)
->build(); ->buildEvent();
$this->assertTrue($action->execute($event, TaskLinkModel::EVENT_CREATE_UPDATE)); $this->assertTrue($action->execute($event, TaskLinkModel::EVENT_CREATE_UPDATE));
@ -62,7 +62,7 @@ class TaskAssignCategoryLinkTest extends Base
$event = TaskLinkEventBuilder::getInstance($this->container) $event = TaskLinkEventBuilder::getInstance($this->container)
->withTaskLinkId(1) ->withTaskLinkId(1)
->build(); ->buildEvent();
$this->assertFalse($action->execute($event, TaskLinkModel::EVENT_CREATE_UPDATE)); $this->assertFalse($action->execute($event, TaskLinkModel::EVENT_CREATE_UPDATE));
@ -91,7 +91,7 @@ class TaskAssignCategoryLinkTest extends Base
$event = TaskLinkEventBuilder::getInstance($this->container) $event = TaskLinkEventBuilder::getInstance($this->container)
->withTaskLinkId(1) ->withTaskLinkId(1)
->build(); ->buildEvent();
$this->assertFalse($action->execute($event, TaskLinkModel::EVENT_CREATE_UPDATE)); $this->assertFalse($action->execute($event, TaskLinkModel::EVENT_CREATE_UPDATE));

View File

@ -30,7 +30,7 @@ class TaskAssignColorLinkTest extends Base
$event = TaskLinkEventBuilder::getInstance($this->container) $event = TaskLinkEventBuilder::getInstance($this->container)
->withTaskLinkId(1) ->withTaskLinkId(1)
->build(); ->buildEvent();
$this->assertTrue($action->execute($event, TaskLinkModel::EVENT_CREATE_UPDATE)); $this->assertTrue($action->execute($event, TaskLinkModel::EVENT_CREATE_UPDATE));
@ -57,7 +57,7 @@ class TaskAssignColorLinkTest extends Base
$event = TaskLinkEventBuilder::getInstance($this->container) $event = TaskLinkEventBuilder::getInstance($this->container)
->withTaskLinkId(1) ->withTaskLinkId(1)
->build(); ->buildEvent();
$this->assertFalse($action->execute($event, TaskLinkModel::EVENT_CREATE_UPDATE)); $this->assertFalse($action->execute($event, TaskLinkModel::EVENT_CREATE_UPDATE));

View File

@ -13,7 +13,7 @@ class CommentEventBuilderTest extends Base
{ {
$commentEventBuilder = new CommentEventBuilder($this->container); $commentEventBuilder = new CommentEventBuilder($this->container);
$commentEventBuilder->withCommentId(42); $commentEventBuilder->withCommentId(42);
$this->assertNull($commentEventBuilder->build()); $this->assertNull($commentEventBuilder->buildEvent());
} }
public function testBuild() public function testBuild()
@ -28,7 +28,7 @@ class CommentEventBuilderTest extends Base
$this->assertEquals(1, $commentModel->create(array('task_id' => 1, 'comment' => 'bla bla', 'user_id' => 1))); $this->assertEquals(1, $commentModel->create(array('task_id' => 1, 'comment' => 'bla bla', 'user_id' => 1)));
$commentEventBuilder->withCommentId(1); $commentEventBuilder->withCommentId(1);
$event = $commentEventBuilder->build(); $event = $commentEventBuilder->buildEvent();
$this->assertInstanceOf('Kanboard\Event\CommentEvent', $event); $this->assertInstanceOf('Kanboard\Event\CommentEvent', $event);
$this->assertNotEmpty($event['comment']); $this->assertNotEmpty($event['comment']);

View File

@ -12,7 +12,7 @@ class ProjectFileEventBuilderTest extends Base
{ {
$projectFileEventBuilder = new ProjectFileEventBuilder($this->container); $projectFileEventBuilder = new ProjectFileEventBuilder($this->container);
$projectFileEventBuilder->withFileId(42); $projectFileEventBuilder->withFileId(42);
$this->assertNull($projectFileEventBuilder->build()); $this->assertNull($projectFileEventBuilder->buildEvent());
} }
public function testBuild() public function testBuild()
@ -24,7 +24,7 @@ class ProjectFileEventBuilderTest extends Base
$this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); $this->assertEquals(1, $projectModel->create(array('name' => 'test1')));
$this->assertEquals(1, $projectFileModel->create(1, 'Test', '/tmp/test', 123)); $this->assertEquals(1, $projectFileModel->create(1, 'Test', '/tmp/test', 123));
$event = $projectFileEventBuilder->withFileId(1)->build(); $event = $projectFileEventBuilder->withFileId(1)->buildEvent();
$this->assertInstanceOf('Kanboard\Event\ProjectFileEvent', $event); $this->assertInstanceOf('Kanboard\Event\ProjectFileEvent', $event);
$this->assertNotEmpty($event['file']); $this->assertNotEmpty($event['file']);

View File

@ -13,7 +13,7 @@ class SubtaskEventBuilderTest extends Base
{ {
$subtaskEventBuilder = new SubtaskEventBuilder($this->container); $subtaskEventBuilder = new SubtaskEventBuilder($this->container);
$subtaskEventBuilder->withSubtaskId(42); $subtaskEventBuilder->withSubtaskId(42);
$this->assertNull($subtaskEventBuilder->build()); $this->assertNull($subtaskEventBuilder->buildEvent());
} }
public function testBuildWithoutChanges() public function testBuildWithoutChanges()
@ -27,7 +27,7 @@ class SubtaskEventBuilderTest extends Base
$this->assertEquals(1, $taskCreationModel->create(array('title' => 'test', 'project_id' => 1))); $this->assertEquals(1, $taskCreationModel->create(array('title' => 'test', 'project_id' => 1)));
$this->assertEquals(1, $subtaskModel->create(array('task_id' => 1, 'title' => 'test'))); $this->assertEquals(1, $subtaskModel->create(array('task_id' => 1, 'title' => 'test')));
$event = $subtaskEventBuilder->withSubtaskId(1)->build(); $event = $subtaskEventBuilder->withSubtaskId(1)->buildEvent();
$this->assertInstanceOf('Kanboard\Event\SubtaskEvent', $event); $this->assertInstanceOf('Kanboard\Event\SubtaskEvent', $event);
$this->assertNotEmpty($event['subtask']); $this->assertNotEmpty($event['subtask']);
@ -49,7 +49,7 @@ class SubtaskEventBuilderTest extends Base
$event = $subtaskEventBuilder $event = $subtaskEventBuilder
->withSubtaskId(1) ->withSubtaskId(1)
->withValues(array('title' => 'new title', 'user_id' => 1)) ->withValues(array('title' => 'new title', 'user_id' => 1))
->build(); ->buildEvent();
$this->assertInstanceOf('Kanboard\Event\SubtaskEvent', $event); $this->assertInstanceOf('Kanboard\Event\SubtaskEvent', $event);
$this->assertNotEmpty($event['subtask']); $this->assertNotEmpty($event['subtask']);

View File

@ -12,7 +12,7 @@ class TaskEventBuilderTest extends Base
{ {
$taskEventBuilder = new TaskEventBuilder($this->container); $taskEventBuilder = new TaskEventBuilder($this->container);
$taskEventBuilder->withTaskId(42); $taskEventBuilder->withTaskId(42);
$this->assertNull($taskEventBuilder->build()); $this->assertNull($taskEventBuilder->buildEvent());
} }
public function testBuildWithTask() public function testBuildWithTask()
@ -28,7 +28,7 @@ class TaskEventBuilderTest extends Base
->withTaskId(1) ->withTaskId(1)
->withTask(array('title' => 'before')) ->withTask(array('title' => 'before'))
->withChanges(array('title' => 'after')) ->withChanges(array('title' => 'after'))
->build(); ->buildEvent();
$this->assertInstanceOf('Kanboard\Event\TaskEvent', $event); $this->assertInstanceOf('Kanboard\Event\TaskEvent', $event);
$this->assertNotEmpty($event['task']); $this->assertNotEmpty($event['task']);
@ -45,7 +45,7 @@ class TaskEventBuilderTest extends Base
$this->assertEquals(1, $projectModel->create(array('name' => 'test1'))); $this->assertEquals(1, $projectModel->create(array('name' => 'test1')));
$this->assertEquals(1, $taskCreationModel->create(array('title' => 'test', 'project_id' => 1))); $this->assertEquals(1, $taskCreationModel->create(array('title' => 'test', 'project_id' => 1)));
$event = $taskEventBuilder->withTaskId(1)->build(); $event = $taskEventBuilder->withTaskId(1)->buildEvent();
$this->assertInstanceOf('Kanboard\Event\TaskEvent', $event); $this->assertInstanceOf('Kanboard\Event\TaskEvent', $event);
$this->assertNotEmpty($event['task']); $this->assertNotEmpty($event['task']);
@ -65,7 +65,7 @@ class TaskEventBuilderTest extends Base
$event = $taskEventBuilder $event = $taskEventBuilder
->withTaskId(1) ->withTaskId(1)
->withChanges(array('title' => 'new title')) ->withChanges(array('title' => 'new title'))
->build(); ->buildEvent();
$this->assertInstanceOf('Kanboard\Event\TaskEvent', $event); $this->assertInstanceOf('Kanboard\Event\TaskEvent', $event);
$this->assertNotEmpty($event['task']); $this->assertNotEmpty($event['task']);
@ -86,7 +86,7 @@ class TaskEventBuilderTest extends Base
->withTaskId(1) ->withTaskId(1)
->withChanges(array('title' => 'new title', 'project_id' => 1)) ->withChanges(array('title' => 'new title', 'project_id' => 1))
->withValues(array('key' => 'value')) ->withValues(array('key' => 'value'))
->build(); ->buildEvent();
$this->assertInstanceOf('Kanboard\Event\TaskEvent', $event); $this->assertInstanceOf('Kanboard\Event\TaskEvent', $event);
$this->assertNotEmpty($event['task']); $this->assertNotEmpty($event['task']);

View File

@ -13,7 +13,7 @@ class TaskFileEventBuilderTest extends Base
{ {
$taskFileEventBuilder = new TaskFileEventBuilder($this->container); $taskFileEventBuilder = new TaskFileEventBuilder($this->container);
$taskFileEventBuilder->withFileId(42); $taskFileEventBuilder->withFileId(42);
$this->assertNull($taskFileEventBuilder->build()); $this->assertNull($taskFileEventBuilder->buildEvent());
} }
public function testBuild() public function testBuild()
@ -27,7 +27,7 @@ class TaskFileEventBuilderTest extends Base
$this->assertEquals(1, $taskCreationModel->create(array('title' => 'test', 'project_id' => 1))); $this->assertEquals(1, $taskCreationModel->create(array('title' => 'test', 'project_id' => 1)));
$this->assertEquals(1, $taskFileModel->create(1, 'Test', '/tmp/test', 123)); $this->assertEquals(1, $taskFileModel->create(1, 'Test', '/tmp/test', 123));
$event = $taskFileEventBuilder->withFileId(1)->build(); $event = $taskFileEventBuilder->withFileId(1)->buildEvent();
$this->assertInstanceOf('Kanboard\Event\TaskFileEvent', $event); $this->assertInstanceOf('Kanboard\Event\TaskFileEvent', $event);
$this->assertNotEmpty($event['file']); $this->assertNotEmpty($event['file']);

View File

@ -13,7 +13,7 @@ class TaskLinkEventBuilderTest extends Base
{ {
$taskLinkEventBuilder = new TaskLinkEventBuilder($this->container); $taskLinkEventBuilder = new TaskLinkEventBuilder($this->container);
$taskLinkEventBuilder->withTaskLinkId(42); $taskLinkEventBuilder->withTaskLinkId(42);
$this->assertNull($taskLinkEventBuilder->build()); $this->assertNull($taskLinkEventBuilder->buildEvent());
} }
public function testBuild() public function testBuild()
@ -28,7 +28,7 @@ class TaskLinkEventBuilderTest extends Base
$this->assertEquals(2, $taskCreationModel->create(array('title' => 'task 2', 'project_id' => 1))); $this->assertEquals(2, $taskCreationModel->create(array('title' => 'task 2', 'project_id' => 1)));
$this->assertEquals(1, $taskLinkModel->create(1, 2, 1)); $this->assertEquals(1, $taskLinkModel->create(1, 2, 1));
$event = $taskLinkEventBuilder->withTaskLinkId(1)->build(); $event = $taskLinkEventBuilder->withTaskLinkId(1)->buildEvent();
$this->assertInstanceOf('Kanboard\Event\TaskLinkEvent', $event); $this->assertInstanceOf('Kanboard\Event\TaskLinkEvent', $event);
$this->assertNotEmpty($event['task_link']); $this->assertNotEmpty($event['task_link']);
@ -47,7 +47,7 @@ class TaskLinkEventBuilderTest extends Base
$this->assertEquals(2, $taskCreationModel->create(array('title' => 'task 2', 'project_id' => 1))); $this->assertEquals(2, $taskCreationModel->create(array('title' => 'task 2', 'project_id' => 1)));
$this->assertEquals(1, $taskLinkModel->create(1, 2, 1)); $this->assertEquals(1, $taskLinkModel->create(1, 2, 1));
$eventData = $taskLinkEventBuilder->withTaskLinkId(1)->build(); $eventData = $taskLinkEventBuilder->withTaskLinkId(1)->buildEvent();
$title = $taskLinkEventBuilder->buildTitleWithAuthor('Foobar', TaskLinkModel::EVENT_CREATE_UPDATE, $eventData->getAll()); $title = $taskLinkEventBuilder->buildTitleWithAuthor('Foobar', TaskLinkModel::EVENT_CREATE_UPDATE, $eventData->getAll());
$this->assertEquals('Foobar set a new internal link for the task #1', $title); $this->assertEquals('Foobar set a new internal link for the task #1', $title);