diff --git a/application/Espo/Classes/FieldDuplicators/LinkMultiple.php b/application/Espo/Classes/FieldDuplicators/LinkMultiple.php index c8b81b9ff2..b1b03ff879 100644 --- a/application/Espo/Classes/FieldDuplicators/LinkMultiple.php +++ b/application/Espo/Classes/FieldDuplicators/LinkMultiple.php @@ -71,7 +71,7 @@ class LinkMultiple implements FieldDuplicator ->getRelation($relationDefs->getForeignRelationName()) ->getType(); - if ($foreignRelationType !== Entity::HAS_MANY) { + if ($foreignRelationType !== Entity::MANY_MANY) { $valueMap->{$field . 'Ids'} = []; $valueMap->{$field . 'Names'} = (object) []; $valueMap->{$field . 'Columns'} = (object) []; diff --git a/application/Espo/Core/FieldProcessing/Stream/FollowersLoader.php b/application/Espo/Core/FieldProcessing/Stream/FollowersLoader.php index a22b875c40..31e43d29f3 100644 --- a/application/Espo/Core/FieldProcessing/Stream/FollowersLoader.php +++ b/application/Espo/Core/FieldProcessing/Stream/FollowersLoader.php @@ -48,7 +48,7 @@ use Espo\Services\Stream as StreamService; */ class FollowersLoader implements LoaderInterface { - private const FOLLOWERS_LIMIT = 5; + private const FOLLOWERS_LIMIT = 6; private StreamService $streamService; diff --git a/application/Espo/Core/Mail/Account/GroupAccount/BouncedRecognizer.php b/application/Espo/Core/Mail/Account/GroupAccount/BouncedRecognizer.php new file mode 100644 index 0000000000..14f7a280b3 --- /dev/null +++ b/application/Espo/Core/Mail/Account/GroupAccount/BouncedRecognizer.php @@ -0,0 +1,111 @@ +getHeader('From'); + $contentType = $message->getHeader('Content-Type'); + + if (preg_match('/MAILER-DAEMON|POSTMASTER/i', $from ?? '')) { + return true; + } + + if (strpos($contentType ?? '', 'multipart/report') === 0) { + // @todo Check whether ever works. + $deliveryStatusPart = $this->getDeliveryStatusPart($message); + + if ($deliveryStatusPart) { + return true; + } + + $content = $message->getRawContent(); + + if ( + strpos($content, 'message/delivery-status') !== false && + strpos($content, 'Status: ') !== false + ) { + return true; + } + } + + return false; + } + + public function isHard(Message $message): bool + { + $content = $message->getRawContent(); + + if (preg_match('/permanent[ ]*[error|failure]/', $content)) { + return true; + } + + return false; + } + + public function extractQueueItemId(Message $message): ?string + { + $content = $message->getRawContent(); + + if (preg_match('/X-Queue-Item-Id: [a-z0-9\-]*/', $content, $m)) { + /** @var array{string} */ + $arr = preg_split('/X-Queue-Item-Id: /', $m[0], -1, \PREG_SPLIT_NO_EMPTY); + + return $arr[0]; + } + + $to = $message->getHeader('to'); + + if (preg_match('/\+bounce-qid-[a-z0-9\-]*/', $to ?? '', $m)) { + /** @var array{string} */ + $arr = preg_split('/\+bounce-qid-/', $m[0], -1, \PREG_SPLIT_NO_EMPTY); + + return $arr[0]; + } + + return null; + } + + private function getDeliveryStatusPart(Message $message): ?Part + { + foreach ($message->getPartList() as $part) { + if ($part->getContentType() === 'message/delivery-status') { + return $part; + } + } + + return null; + } +} diff --git a/application/Espo/Core/Mail/Account/GroupAccount/Hooks/BeforeFetch.php b/application/Espo/Core/Mail/Account/GroupAccount/Hooks/BeforeFetch.php index 3217530129..d1e87c3ef8 100644 --- a/application/Espo/Core/Mail/Account/GroupAccount/Hooks/BeforeFetch.php +++ b/application/Espo/Core/Mail/Account/GroupAccount/Hooks/BeforeFetch.php @@ -34,6 +34,7 @@ use Espo\Core\Mail\Account\Hook\BeforeFetchResult; use Espo\Core\Mail\Account\Account; use Espo\Core\Mail\Message; +use Espo\Core\Mail\Account\GroupAccount\BouncedRecognizer; use Espo\Core\Utils\Log; use Espo\Core\InjectableFactory; @@ -55,21 +56,25 @@ class BeforeFetch implements BeforeFetchInterface private InjectableFactory $injectableFactory; + private BouncedRecognizer $bouncedRecognizer; + private ?CampaignService $campaignService = null; - public function __construct(Log $log, EntityManager $entityManager, InjectableFactory $injectableFactory) - { + public function __construct( + Log $log, + EntityManager $entityManager, + InjectableFactory $injectableFactory, + BouncedRecognizer $bouncedRecognizer + ) { $this->log = $log; $this->entityManager = $entityManager; $this->injectableFactory = $injectableFactory; + $this->bouncedRecognizer = $bouncedRecognizer; } public function process(Account $account, Message $message): BeforeFetchResult { - if ( - $message->hasHeader('from') && - preg_match('/MAILER-DAEMON|POSTMASTER/i', $message->getHeader('from') ?? '') - ) { + if ($this->bouncedRecognizer->isBounced($message)) { try { $toSkip = $this->processBounced($message); } @@ -94,32 +99,8 @@ class BeforeFetch implements BeforeFetchInterface private function processBounced(Message $message): bool { - $content = $message->getRawContent(); - - $isHard = false; - - if (preg_match('/permanent[ ]*[error|failure]/', $content)) { - $isHard = true; - } - - $queueItemId = null; - - if (preg_match('/X-Queue-Item-Id: [a-z0-9\-]*/', $content, $m)) { - /** @var array{string} */ - $arr = preg_split('/X-Queue-Item-Id: /', $m[0], -1, \PREG_SPLIT_NO_EMPTY); - - $queueItemId = $arr[0]; - } - else { - $to = $message->getHeader('to'); - - if (preg_match('/\+bounce-qid-[a-z0-9\-]*/', $to ?? '', $m)) { - /** @var array{string} */ - $arr = preg_split('/\+bounce-qid-/', $m[0], -1, \PREG_SPLIT_NO_EMPTY); - - $queueItemId = $arr[0]; - } - } + $isHard = $this->bouncedRecognizer->isHard($message); + $queueItemId = $this->bouncedRecognizer->extractQueueItemId($message); if (!$queueItemId) { return false; diff --git a/application/Espo/Core/Mail/Message.php b/application/Espo/Core/Mail/Message.php index 38c7587471..d753e1b1d4 100644 --- a/application/Espo/Core/Mail/Message.php +++ b/application/Espo/Core/Mail/Message.php @@ -29,6 +29,8 @@ namespace Espo\Core\Mail; +use Espo\Core\Mail\Message\Part; + interface Message { /** @@ -67,4 +69,9 @@ interface Message * Whether contents is fetched. */ public function isFetched(): bool; + + /** + * @return Part[] + */ + public function getPartList(): array; } diff --git a/application/Espo/Core/Mail/Message/MailMimeParser/Part.php b/application/Espo/Core/Mail/Message/MailMimeParser/Part.php new file mode 100644 index 0000000000..3abff1a730 --- /dev/null +++ b/application/Espo/Core/Mail/Message/MailMimeParser/Part.php @@ -0,0 +1,79 @@ +part = $part; + } + + public function getContentType(): ?string + { + return $this->part->getContentType(); + } + + public function hasContent(): bool + { + return $this->part->hasContent(); + } + + public function getContent(): ?string + { + return $this->part->getContent(); + } + + public function getContentId(): ?string + { + return $this->part->getContentId(); + } + + public function getCharset(): ?string + { + return $this->part->getCharset(); + } + + public function getContentDisposition(): ?string + { + return $this->part->getContentDisposition(); + } + + public function getFilename(): ?string + { + return $this->part->getFilename(); + } +} diff --git a/application/Espo/Core/Mail/Message/Part.php b/application/Espo/Core/Mail/Message/Part.php new file mode 100644 index 0000000000..3c5ab2fffb --- /dev/null +++ b/application/Espo/Core/Mail/Message/Part.php @@ -0,0 +1,47 @@ +storage = $storage; $this->parser = $parser; $this->fullRawContent = $fullRawContent; + + if ( + !$storage && + $this->fullRawContent + ) { + $rawHeader = null; + $rawBody = null; + + if (strpos($this->fullRawContent, "\r\n\r\n") !== false) { + [$rawHeader, $rawBody] = explode("\r\n\r\n", $this->fullRawContent, 2); + } + else if (strpos($this->fullRawContent, "\n\n") !== false) { + [$rawHeader, $rawBody] = explode("\n\n", $this->fullRawContent, 2); + } + + $this->rawHeader = $rawHeader; + $this->rawContent = $rawBody; + } } public function getRawHeader(): string @@ -133,4 +152,16 @@ class MessageWrapper implements Message { return (bool) $this->rawHeader; } + + /** + * @return Part[] + */ + public function getPartList(): array + { + if (!$this->parser) { + throw new RuntimeException(); + } + + return $this->parser->getPartList($this); + } } diff --git a/application/Espo/Core/Mail/Parser.php b/application/Espo/Core/Mail/Parser.php index f719694fda..9e65cffa5b 100644 --- a/application/Espo/Core/Mail/Parser.php +++ b/application/Espo/Core/Mail/Parser.php @@ -32,6 +32,7 @@ namespace Espo\Core\Mail; use Espo\Entities\Email; use Espo\Entities\Attachment; use Espo\Core\Mail\Message; +use Espo\Core\Mail\Message\Part; use stdClass; @@ -56,4 +57,9 @@ interface Parser * @return Attachment[] A list of inline attachments. */ public function getInlineAttachmentList(Message $message, Email $email): array; + + /** + * @return Part[] + */ + public function getPartList(Message $message): array; } diff --git a/application/Espo/Core/Mail/Parsers/MailMimeParser.php b/application/Espo/Core/Mail/Parsers/MailMimeParser.php index a4ec4aa681..6ee64275b6 100644 --- a/application/Espo/Core/Mail/Parsers/MailMimeParser.php +++ b/application/Espo/Core/Mail/Parsers/MailMimeParser.php @@ -36,6 +36,10 @@ use Espo\Entities\Attachment; use Espo\Core\Mail\Message; use Espo\Core\Mail\Parser; +use Espo\Core\Mail\Message\Part; + +use Espo\Core\Mail\Message\MailMimeParser\Part as WrapperPart; + use Espo\ORM\EntityManager; use ZBateson\MailMimeParser\MailMimeParser as WrappeeParser; @@ -211,6 +215,22 @@ class MailMimeParser implements Parser return $addressList; } + /** + * @return Part[] + */ + public function getPartList(Message $message): array + { + $wrappeeList = $this->getMessage($message)->getChildParts(); + + $partList = []; + + foreach ($wrappeeList as $wrappee) { + $partList[] = new WrapperPart($wrappee); + } + + return $partList; + } + /** * @return Attachment[] */ diff --git a/application/Espo/Core/MassAction/Actions/MassDelete.php b/application/Espo/Core/MassAction/Actions/MassDelete.php index 50d0db8f79..d44ebb60ee 100644 --- a/application/Espo/Core/MassAction/Actions/MassDelete.php +++ b/application/Espo/Core/MassAction/Actions/MassDelete.php @@ -38,7 +38,7 @@ use Espo\Core\{ MassAction\Data, MassAction\MassAction, Acl, - Record\ServiceContainer as RecordServiceContainer, + Record\ServiceFactory, ORM\EntityManager, Exceptions\Forbidden, }; @@ -56,9 +56,9 @@ class MassDelete implements MassAction protected $acl; /** - * @var RecordServiceContainer + * @var ServiceFactory */ - protected $recordServiceContainer; + protected $serviceFactory; /** * @var EntityManager @@ -73,13 +73,13 @@ class MassDelete implements MassAction public function __construct( QueryBuilder $queryBuilder, Acl $acl, - RecordServiceContainer $recordServiceContainer, + ServiceFactory $serviceFactory, EntityManager $entityManager, User $user ) { $this->queryBuilder = $queryBuilder; $this->acl = $acl; - $this->recordServiceContainer = $recordServiceContainer; + $this->serviceFactory = $serviceFactory; $this->entityManager = $entityManager; $this->user = $user; } @@ -96,7 +96,7 @@ class MassDelete implements MassAction throw new Forbidden("No mass-update permission."); } - $service = $this->recordServiceContainer->get($entityType); + $service = $this->serviceFactory->create($entityType); $repository = $this->entityManager->getRDBRepository($entityType); diff --git a/application/Espo/Core/MassAction/Actions/MassUpdate.php b/application/Espo/Core/MassAction/Actions/MassUpdate.php index 6911703e37..629d91b00e 100644 --- a/application/Espo/Core/MassAction/Actions/MassUpdate.php +++ b/application/Espo/Core/MassAction/Actions/MassUpdate.php @@ -40,7 +40,7 @@ use Espo\Core\{ MassAction\Data, MassAction\MassAction, Acl, - Record\ServiceContainer as RecordServiceContainer, + Record\ServiceFactory as RecordServiceFactory, ORM\EntityManager, Utils\FieldUtil, Utils\ObjectUtil, @@ -63,9 +63,9 @@ class MassUpdate implements MassAction protected $acl; /** - * @var RecordServiceContainer + * @var RecordServiceFactory */ - protected $recordServiceContainer; + protected $recordServiceFactory; /** * @var EntityManager @@ -85,14 +85,14 @@ class MassUpdate implements MassAction public function __construct( QueryBuilder $queryBuilder, Acl $acl, - RecordServiceContainer $recordServiceContainer, + RecordServiceFactory $recordServiceFactory, EntityManager $entityManager, FieldUtil $fieldUtil, User $user ) { $this->queryBuilder = $queryBuilder; $this->acl = $acl; - $this->recordServiceContainer = $recordServiceContainer; + $this->recordServiceFactory = $recordServiceFactory; $this->entityManager = $entityManager; $this->fieldUtil = $fieldUtil; $this->user = $user; @@ -112,7 +112,7 @@ class MassUpdate implements MassAction $valueMap = $data->getRaw(); - $service = $this->recordServiceContainer->get($entityType); + $service = $this->recordServiceFactory->create($entityType); $repository = $this->entityManager->getRDBRepository($entityType); diff --git a/application/Espo/Core/Record/ServiceContainer.php b/application/Espo/Core/Record/ServiceContainer.php index 40ac4234fb..2f2358da39 100644 --- a/application/Espo/Core/Record/ServiceContainer.php +++ b/application/Espo/Core/Record/ServiceContainer.php @@ -29,32 +29,18 @@ namespace Espo\Core\Record; -use Espo\Core\{ - Exceptions\Error, - ServiceFactory, - Utils\Metadata, -}; - -use RuntimeException; +use Espo\Core\Exceptions\Error; /** * Container for record services. Lazy loading is used. * Usually there's no need to have multiple record service instances of the same entity type. * Use this container instead of serviceFactory to get record services. + * + * Important. Returns services for the current user. + * Use the service-factory to create services for a specific user. */ class ServiceContainer { - private const RECORD_SERVICE_NAME = 'Record'; - - private const RECORD_TREE_SERVICE_NAME = 'RecordTree'; - - /** - * @var array - */ - private $defaultTypeMap = [ - 'CategoryTree' => self::RECORD_TREE_SERVICE_NAME, - ]; - /** * @var array> */ @@ -62,16 +48,14 @@ class ServiceContainer private ServiceFactory $serviceFactory; - private Metadata $metadata; - - public function __construct(ServiceFactory $serviceFactory, Metadata $metadata) + public function __construct(ServiceFactory $serviceFactory) { $this->serviceFactory = $serviceFactory; - $this->metadata = $metadata; } /** * @return Service<\Espo\ORM\Entity> + * @throws Error */ public function get(string $entityType): Service { @@ -84,45 +68,6 @@ class ServiceContainer private function load(string $entityType): void { - if (!$this->metadata->get(['scopes', $entityType, 'entity'])) { - throw new Error("Can't create record service '{$entityType}', there's no such entity type."); - } - - if ($this->serviceFactory->checkExists($entityType)) { - $service = $this->serviceFactory->createWith($entityType, ['entityType' => $entityType]); - - if (!$service instanceof Service) { - $this->loadDefault($entityType); - - return; - } - - $this->data[$entityType] = $service; - - return; - } - - $this->loadDefault($entityType); - } - - private function loadDefault(string $entityType): void - { - $default = self::RECORD_SERVICE_NAME; - - $type = $this->metadata->get(['scopes', $entityType, 'type']); - - if ($type) { - $default = $this->defaultTypeMap[$type] ?? $default; - } - - $obj = $this->serviceFactory->createWith($default, ['entityType' => $entityType]); - - if (!$obj instanceof Service) { - throw new RuntimeException("Service class {$default} is not instance of Record."); - } - - //$obj->setEntityType($entityType); - - $this->data[$entityType] = $obj; + $this->data[$entityType] = $this->serviceFactory->create($entityType); } } diff --git a/application/Espo/Core/Record/ServiceFactory.php b/application/Espo/Core/Record/ServiceFactory.php new file mode 100644 index 0000000000..bb46e77987 --- /dev/null +++ b/application/Espo/Core/Record/ServiceFactory.php @@ -0,0 +1,153 @@ + + */ + private $defaultTypeMap = [ + 'CategoryTree' => self::RECORD_TREE_SERVICE_NAME, + ]; + + private Factory $serviceFactory; + + private Metadata $metadata; + + private User $user; + + private Acl $acl; + + private AclManager $aclManager; + + public function __construct( + Factory $serviceFactory, + Metadata $metadata, + User $user, + Acl $acl, + AclManager $aclManager + ) { + $this->serviceFactory = $serviceFactory; + $this->metadata = $metadata; + $this->user = $user; + $this->acl = $acl; + $this->aclManager = $aclManager; + } + + /** + * @return Service<\Espo\ORM\Entity> + */ + public function create(string $entityType): Service + { + $obj = $this->createInternal($entityType); + + $obj->setUser($this->user); + $obj->setAcl($this->acl); + + return $obj; + } + + /** + * @return Service<\Espo\ORM\Entity> + */ + public function createForUser(string $entityType, User $user): Service + { + $obj = $this->createInternal($entityType); + + $acl = $this->aclManager->createUserAcl($user); + + $obj->setUser($user); + $obj->setAcl($acl); + + return $obj; + } + + /** + * @return Service<\Espo\ORM\Entity> + */ + public function createInternal(string $entityType): Service + { + if (!$this->metadata->get(['scopes', $entityType, 'entity'])) { + throw new Error("Can't create record service '{$entityType}', there's no such entity type."); + } + + if (!$this->serviceFactory->checkExists($entityType)) { + return $this->createDefault($entityType); + } + + $service = $this->serviceFactory->createWith($entityType, ['entityType' => $entityType]); + + if (!$service instanceof Service) { + return $this->createDefault($entityType); + } + + return $service; + } + + /** + * @return Service<\Espo\ORM\Entity> + */ + private function createDefault(string $entityType): Service + { + $default = self::RECORD_SERVICE_NAME; + + $type = $this->metadata->get(['scopes', $entityType, 'type']); + + if ($type) { + $default = $this->defaultTypeMap[$type] ?? $default; + } + + $obj = $this->serviceFactory->createWith($default, ['entityType' => $entityType]); + + if (!$obj instanceof Service) { + throw new RuntimeException("Service class {$default} is not instance of Record."); + } + + return $obj; + } +} diff --git a/application/Espo/Core/Templates/i18n/bg_BG/Base.json b/application/Espo/Core/Templates/i18n/bg_BG/Base.json index efa316b3b2..47b4d572d4 100644 --- a/application/Espo/Core/Templates/i18n/bg_BG/Base.json +++ b/application/Espo/Core/Templates/i18n/bg_BG/Base.json @@ -1,5 +1,5 @@ { "labels": { - "Create {entityType}": "Създаване {entityTypeTranslated}" + "Create {entityType}": "Създаване на {entityTypeTranslated}" } } \ No newline at end of file diff --git a/application/Espo/Core/Templates/i18n/bg_BG/BasePlus.json b/application/Espo/Core/Templates/i18n/bg_BG/BasePlus.json index 6f4995f880..1e86e4a5e0 100644 --- a/application/Espo/Core/Templates/i18n/bg_BG/BasePlus.json +++ b/application/Espo/Core/Templates/i18n/bg_BG/BasePlus.json @@ -1,10 +1,10 @@ { "links": { - "meetings": "срещи", - "calls": "призовава", + "meetings": "Срещи", + "calls": "Разговори", "tasks": "Задачи" }, "labels": { - "Create {entityType}": "Създаване {entityTypeTranslated}" + "Create {entityType}": "Създаване на {entityTypeTranslated}" } } \ No newline at end of file diff --git a/application/Espo/Core/Templates/i18n/bg_BG/Company.json b/application/Espo/Core/Templates/i18n/bg_BG/Company.json index 4355a2a2b5..1090942de1 100644 --- a/application/Espo/Core/Templates/i18n/bg_BG/Company.json +++ b/application/Espo/Core/Templates/i18n/bg_BG/Company.json @@ -1,15 +1,15 @@ { "fields": { - "billingAddress": "адрес на плащане", + "billingAddress": "Адрес за плащане", "shippingAddress": "Адрес за доставка", - "website": "уебсайт" + "website": "Уебсайт" }, "links": { - "meetings": "срещи", - "calls": "призовава", + "meetings": "Срещи", + "calls": "Обаждане", "tasks": "Задачи" }, "labels": { - "Create {entityType}": "Създаване {entityTypeTranslated}" + "Create {entityType}": "Създаване на {entityTypeTranslated}" } } \ No newline at end of file diff --git a/application/Espo/Core/Templates/i18n/bg_BG/Event.json b/application/Espo/Core/Templates/i18n/bg_BG/Event.json index 6030aba64e..60e0b4f14a 100644 --- a/application/Espo/Core/Templates/i18n/bg_BG/Event.json +++ b/application/Espo/Core/Templates/i18n/bg_BG/Event.json @@ -1,39 +1,39 @@ { "fields": { - "parent": "родител", - "dateStart": "Дата Старт", + "parent": "Родител", + "dateStart": "Начална дата", "dateEnd": "Крайна дата", - "duration": "продължителност", + "duration": "Продължителност", "status": "Статус", "reminders": "Напомняния", - "dateStartDate": "Дата Start (цял ден)", + "dateStartDate": "Начална дата (цял ден)", "dateEndDate": "Крайна дата (цял ден)", - "isAllDay": "Дали през целия ден" + "isAllDay": "Цял ден" }, "links": { - "parent": "родител" + "parent": "Родител" }, "options": { "status": { "Planned": "Планирано", - "Held": "Държани", - "Not Held": "Не държани" + "Held": "Състояло се", + "Not Held": "Несъстояло се" } }, "labels": { - "Create {entityType}": "Създаване {entityTypeTranslated}", - "Schedule {entityType}": "График {entityTypeTranslated}", - "Log {entityType}": "Вход {entityTypeTranslated}", - "Set Held": "Задайте държани", - "Set Not Held": "Задайте не се държат" + "Create {entityType}": "Създаване на {entityTypeTranslated}", + "Schedule {entityType}": "Насрочи {entityTypeTranslated}", + "Log {entityType}": "Регистрирай {entityTypeTranslated}", + "Set Held": "Задай като състояло се", + "Set Not Held": "Задай като несъстояло се" }, "massActions": { - "setHeld": "Задайте държани", - "setNotHeld": "Задайте не се държат" + "setHeld": "Задай като състояло се", + "setNotHeld": "Задай като несъстояло се" }, "presetFilters": { "planned": "Планирано", - "held": "Държани", + "held": "Състояли се", "todays": "Днешните" } } \ No newline at end of file diff --git a/application/Espo/Core/Templates/i18n/bg_BG/Person.json b/application/Espo/Core/Templates/i18n/bg_BG/Person.json index b01ad78292..ff96fc33f7 100644 --- a/application/Espo/Core/Templates/i18n/bg_BG/Person.json +++ b/application/Espo/Core/Templates/i18n/bg_BG/Person.json @@ -1,13 +1,13 @@ { "fields": { - "address": "адрес" + "address": "Адрес" }, "links": { - "meetings": "срещи", - "calls": "призовава", + "meetings": "Срещи", + "calls": "Разговори", "tasks": "Задачи" }, "labels": { - "Create {entityType}": "Създаване {entityTypeTranslated}" + "Create {entityType}": "Създаване на {entityTypeTranslated}" } } \ No newline at end of file diff --git a/application/Espo/Hooks/LayoutSet/Removal.php b/application/Espo/Hooks/LayoutSet/Removal.php new file mode 100644 index 0000000000..5dd71d2491 --- /dev/null +++ b/application/Espo/Hooks/LayoutSet/Removal.php @@ -0,0 +1,85 @@ +entityManager = $entityManager; + } + + /** + * @param LayoutSet $entity + */ + public function afterRemove(Entity $entity): void + { + $updateQuery1 = $this->entityManager + ->getQueryBuilder() + ->update() + ->in(Team::ENTITY_TYPE) + ->set([ + 'layoutSetId' => null, + ]) + ->where([ + 'layoutSetId' => $entity->getId(), + ]) + ->build(); + + $this->entityManager + ->getQueryExecutor() + ->execute($updateQuery1); + + $updateQuery2 = $this->entityManager + ->getQueryBuilder() + ->update() + ->in(Portal::ENTITY_TYPE) + ->set([ + 'layoutSetId' => null, + ]) + ->where([ + 'layoutSetId' => $entity->getId(), + ]) + ->build(); + + $this->entityManager + ->getQueryExecutor() + ->execute($updateQuery2); + } +} diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Account.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Account.json index 745b4c934f..1048e06193 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Account.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Account.json @@ -1,104 +1,107 @@ { "fields": { - "name": "име", - "emailAddress": "електронна поща", - "website": "уебсайт", - "phoneNumber": "телефон", - "billingAddress": "адрес на плащане", + "name": "Име", + "emailAddress": "Електронна поща", + "website": "Уебсайт", + "phoneNumber": "Телефон", + "billingAddress": "Адрес за плащане", "shippingAddress": "Адрес за доставка", - "description": "описание", - "sicCode": "Sic Код", - "industry": "промишленост", + "description": "Описание", + "sicCode": "SIC Код", + "industry": "Промишленост", "type": "Тип", "contactRole": "Заглавие", - "campaign": "кампания", + "campaign": "Кампания", "targetLists": "Целеви списъци", - "targetList": "Целева Списък", - "originalLead": "Оригинален Lead", - "contactIsInactive": "неактивен" + "targetList": "Целеви списък", + "originalLead": "Оригинална потенциална продажба", + "contactIsInactive": "Неактивен" }, "links": { "contacts": "Контакти", - "opportunities": "възможности", - "cases": "случаи", + "opportunities": "Сделки", + "cases": "Тикети", "documents": "Документи", - "meetingsPrimary": "Заседания (разширена)", - "callsPrimary": "Призовава (разширена)", - "tasksPrimary": "Задачи (разширена)", - "emailsPrimary": "Имейли (разширен)", + "meetingsPrimary": "Срещи (разширено)", + "callsPrimary": "Разговори (разширено)", + "tasksPrimary": "Задачи (разширено)", + "emailsPrimary": "Имейли (разширено)", "targetLists": "Целеви списъци", - "campaignLogRecords": "кампания Вход", - "campaign": "кампания", - "portalUsers": "потребители на портала", - "originalLead": "Оригинален Lead" + "campaignLogRecords": "Логове на кампанията", + "campaign": "Кампания", + "portalUsers": "Потребители на портала", + "originalLead": "Оригинална потенциална продажба", + "contactsPrimary": "Контакти (основен)" }, "options": { "type": { - "Customer": "клиент", - "Investor": "инвеститор", - "Partner": "партньор" + "Customer": "Клиент", + "Investor": "Инвеститор", + "Partner": "Партньор", + "Reseller": "Реселър" }, "industry": { - "Agriculture": "селско стопанство", - "Advertising": "реклама", + "Agriculture": "Селско стопанство", + "Advertising": "Реклама", "Apparel & Accessories": "Облекло & Аксесоари", - "Automotive": "автомобилен", - "Banking": "банково дело", - "Biotechnology": "биотехнологии", + "Automotive": "Автомобилна индустрия", + "Banking": "Банково дело", + "Biotechnology": "Биотехнологии", "Building Materials & Equipment": "Строителни материали и техника", - "Chemical": "химически", - "Computer": "компютър", - "Education": "образование", - "Electronics": "електроника", + "Chemical": "Химическа индустрия", + "Computer": "Компютърна индустрия", + "Education": "Образование", + "Electronics": "Електроника", "Energy": "Енергия", + "Entertainment & Leisure": "Забавление и свободно време", "Finance": "Финанси", "Food & Beverage": "Храни и напитки", - "Grocery": "хранителни стоки", + "Grocery": "Хранителни стоки", "Healthcare": "Здравеопазване", "Insurance": "Застраховка", - "Legal": "правен", - "Manufacturing": "производство", - "Publishing": "издаване", - "Real Estate": "Недвижим имот", + "Legal": "Правна индустрия", + "Manufacturing": "Производство", + "Publishing": "Издателска дейност", + "Real Estate": "Недвижими имоти", "Service": "Обслужване", - "Sports": "спортен", + "Sports": "Спортни дейности", "Software": "Софтуер", - "Technology": "технология", - "Telecommunications": "телекомуникации", - "Television": "телевизия", - "Transportation": "транспорт", - "Venture Capital": "рисков капитал", - "Aerospace": "космически", - "Architecture": "архитектура", - "Construction": "строителство", - "Defense": "отбрана", - "Creative": "творчески", - "Culture": "култура", + "Technology": "Технологии", + "Telecommunications": "Телекомуникации", + "Television": "Телевизия", + "Transportation": "Транспорт", + "Venture Capital": "Рисков капитал", + "Aerospace": "Авиокосмически", + "Architecture": "Архитектура", + "Construction": "Строителство", + "Defense": "Отбрана", + "Creative": "Творчески", + "Culture": "Култура", "Consulting": "Консултации", "Electric Power": "Електрическа енергия", - "Hospitality": "гостоприемство", - "Mass Media": "Средства за масова информация", - "Mining": "Минен", - "Music": "музика", - "Marketing": "маркетинг", - "Petroleum": "петролен", - "Retail": "На дребно", - "Shipping": "Доставка", - "Support": "поддържа", + "Hospitality": "Болници", + "Mass Media": "Масови медии", + "Mining": "Минно дело", + "Music": "Музика", + "Marketing": "Маркетинг", + "Petroleum": "Петролен бизнес", + "Retail": "Търговия на дребно", + "Shipping": "Спедиция", + "Support": "Поддръжка", "Testing, Inspection & Certification": "Тестване, контрол и сертификация", - "Wholesale": "на едро", - "Water": "вода", - "Travel": "пътуване" + "Wholesale": "Търговия на едро", + "Water": "Вода", + "Travel": "Пътуване" } }, "labels": { - "Create Account": "Създай акаунт", - "Copy Billing": "Копие за фактуриране", - "Set Primary": "Комплект Основно" + "Create Account": "Създаване на клиент", + "Copy Billing": "Пренасяне на данните", + "Set Primary": "Задай като основен" }, "presetFilters": { "customers": "Клиенти", "partners": "Партньори", - "recentlyCreated": "Наскоро Създадени" + "recentlyCreated": "Наскоро създадени" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Admin.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Admin.json index 6098f15064..a8d0272616 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Admin.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Admin.json @@ -1,11 +1,11 @@ { "layouts": { "detailConvert": "Конвертиране", - "listForAccount": "Списък (за сметка)", + "listForAccount": "Списък (за клиент)", "listForContact": "Списък (за контакти)" }, "templates": { - "invitation": "покана", - "reminder": "напомняне" + "invitation": "Покана", + "reminder": "Напомняне" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Calendar.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Calendar.json index a9b05e493e..bd26fa1e50 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Calendar.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Calendar.json @@ -1,21 +1,22 @@ { "modes": { - "month": "месец", - "week": "седмица", - "agendaWeek": "седмица", - "day": "ден", - "agendaDay": "ден" + "month": "Месец", + "week": "Седмица", + "agendaWeek": "Седмица", + "day": "Ден", + "agendaDay": "Ден", + "timeline": "Хронология" }, "labels": { - "Today": "днес", - "Create": "създавам", - "Shared": "Споделено", + "Today": "Днес", + "Create": "Създаване", + "Shared": "Споделено с други потребители", "Add User": "Добавяне на потребител", - "current": "текущ", - "time": "път", + "current": "Текущ", + "time": "време", "User List": "Списък с потребители", "Manage Users": "Управление на потребителите", - "View Calendar": "Вижте Календар", - "Create Shared View": "Създаване на споделена View" + "View Calendar": "Вижте календара", + "Create Shared View": "Създаване на споделен изглед" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Call.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Call.json index 2e7cac046e..ecc3d7f2fa 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Call.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Call.json @@ -1,50 +1,50 @@ { "fields": { - "name": "име", - "parent": "родител", + "name": "Име", + "parent": "Родител", "status": "Статус", - "dateStart": "Дата Старт", + "dateStart": "Начална дата", "dateEnd": "Крайна дата", "direction": "Посока", - "duration": "продължителност", - "description": "описание", + "duration": "Продължителност", + "description": "Описание", "users": "Потребители", "contacts": "Контакти", - "leads": "Потенциална Продажба", + "leads": "Потенциални продажби", "reminders": "Напомняния", - "account": "Сметка", - "acceptanceStatus": "Приемане Статус" + "account": "Клиент", + "acceptanceStatus": "Статус за приемане" }, "options": { "status": { - "Planned": "Планирано", - "Held": "Държани", - "Not Held": "Не държани" + "Planned": "Планирани", + "Held": "Състояли се", + "Not Held": "Несъстояли се" }, "direction": { - "Outbound": "Изходяща", + "Outbound": "Изходящ", "Inbound": "Входящ" }, "acceptanceStatus": { "None": "Нито един", - "Accepted": "общоприет", - "Declined": "Отхвърлена", - "Tentative": "Експериментален" + "Accepted": "Прието", + "Declined": "Пропуснато", + "Tentative": "Колеблив" } }, "massActions": { - "setHeld": "Задайте държани", - "setNotHeld": "Задайте не се държат" + "setHeld": "Задай като състоял се", + "setNotHeld": "Задай като несъстоял се" }, "labels": { - "Create Call": "Създаване на Call", - "Set Held": "Задайте държани", - "Set Not Held": "Задайте не се държат", + "Create Call": "Създаване на Разговор", + "Set Held": "Задай като състоял се", + "Set Not Held": "Задай като несъстоял се", "Send Invitations": "Изпращането на покани" }, "presetFilters": { - "planned": "Планирано", - "held": "Държани", + "planned": "Планирани", + "held": "Състояли се", "todays": "Днешните" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Campaign.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Campaign.json index b062b628e5..1c74117e66 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Campaign.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Campaign.json @@ -1,61 +1,62 @@ { "fields": { - "name": "име", - "description": "описание", + "name": "Име", + "description": "Описание", "status": "Статус", "type": "Тип", "startDate": "Начална дата", "endDate": "Крайна дата", "targetLists": "Целеви списъци", "excludingTargetLists": "С изключение на целевите списъци", - "sentCount": "Изпратено", - "openedCount": "Отворен", - "clickedCount": "Кликване", - "optedOutCount": "Отказахте се", - "bouncedCount": "Върната", - "hardBouncedCount": "Hard Върната", - "softBouncedCount": "Мека Върната", - "leadCreatedCount": "Създадена Потенциална Продажба", - "revenue": "приход", - "revenueConverted": "Приходите (изчислена)", - "budget": "бюджет", - "budgetConverted": "Бюджет (изчислена)", - "contactsTemplate": "Контакти с шаблони", - "leadsTemplate": "Leads Шаблон", - "accountsTemplate": "сметки за шаблони", - "usersTemplate": "Потребителите на шаблона", - "mailMergeOnlyWithAddress": "Напред записи / М попълнено адрес", + "sentCount": "Изпратени", + "openedCount": "Отваряния", + "clickedCount": "Кликвания", + "optedOutCount": "Отписали се", + "bouncedCount": "Неуспешно получени", + "hardBouncedCount": "Неуспешно получени", + "softBouncedCount": "Неуспешно получени", + "leadCreatedCount": "Генерирани потенциални продажби", + "revenue": "Приход", + "revenueConverted": "Приходи (изчислени)", + "budget": "Бюджет", + "budgetConverted": "Бюджет (изчислен)", + "contactsTemplate": "Шаблон за контакти", + "leadsTemplate": "Шаблон за потенциална продажба", + "accountsTemplate": "Шаблон за Клиенти", + "usersTemplate": "Шаблон за потребители", + "mailMergeOnlyWithAddress": "Пропускане на записи без попълнен адрес", "optedInCount": "Избрал участие", - "budgetCurrency": "Бюджет на валута" + "budgetCurrency": "Валута на бюджета" }, "links": { "targetLists": "Целеви списъци", "excludingTargetLists": "С изключение на целевите списъци", - "accounts": "сметки", + "accounts": "Клиенти", "contacts": "Контакти", - "leads": "Потенциална Продажба", - "opportunities": "възможности", + "leads": "Потенциални продажби", + "opportunities": "Сделки", "campaignLogRecords": "Вход", "massEmails": "Масови имейли", "trackingUrls": "Проследяване на URL адреси", - "contactsTemplate": "Контакти с шаблони", - "leadsTemplate": "Leads Шаблон", - "accountsTemplate": "сметки за шаблони", + "contactsTemplate": "Шаблон за контакти", + "leadsTemplate": "Шаблон за потенциални продажби", + "accountsTemplate": "Шаблон за Клиенти", "usersTemplate": "Потребителите на шаблона" }, "options": { "type": { - "Email": "електронна поща", - "Web": "мрежа", - "Television": "телевизия", - "Radio": "радио", - "Mail": "поща" + "Email": "Електронна поща", + "Web": "Интернет", + "Television": "Телевизия", + "Radio": "Радио", + "Newsletter": "Имейл бюлетин", + "Mail": "Електронна поща" }, "status": { - "Planning": "планиране", - "Active": "Активен", - "Inactive": "неактивен", - "Complete": "пълен" + "Planning": "Планиране", + "Active": "Активна", + "Inactive": "Неактивна", + "Complete": "Завършена" } }, "labels": { @@ -66,18 +67,19 @@ "soft": "мек", "Unsubscribe": "Отписване", "Mass Emails": "Масови имейли", - "Email Templates": "Шаблони за имейл", + "Email Templates": "Шаблони за имейли", "Unsubscribe again": "Отписване отново", "Subscribe again": "Абонирайте се отново", - "Create Target List": "Създаване на Target Списък", - "Generate Mail Merge PDF": "Генериране на циркулярни PDF" + "Create Target List": "Създаване на целеви списък", + "Mail Merge": "Сливане на имейли", + "Generate Mail Merge PDF": "Генериране на Mail Merge PDF" }, "presetFilters": { "active": "Активен" }, "messages": { - "unsubscribed": "Отписахте се от нашия пощенски списък.", - "subscribedAgain": "Абонирани сте отново." + "unsubscribed": "Отписахте се от нашия имейл бюлетин", + "subscribedAgain": "Абонирахте се отново." }, "tooltips": { "targetLists": "Цели, които трябва да получават съобщения.", diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/CampaignLogRecord.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/CampaignLogRecord.json index 4305cc769a..7d26b182b1 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/CampaignLogRecord.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/CampaignLogRecord.json @@ -1,42 +1,44 @@ { "fields": { - "action": "действие", + "action": "Действия", "actionDate": "Дата", "data": "Данни", - "campaign": "кампания", + "campaign": "Кампания", "parent": "Цел", - "object": "обект", + "object": "Обект", "application": "Приложение", - "queueItem": "опашка Точка", - "stringAdditionalData": "String Допълнителна данни" + "queueItem": "Елементи в опашката", + "stringData": "Низови данни", + "stringAdditionalData": "Допълнителни низови данни", + "isTest": "Е тестов" }, "links": { - "queueItem": "опашка Точка", - "parent": "родител", - "object": "обект", - "campaign": "кампания" + "queueItem": "Елементи в опашката", + "parent": "Родител", + "object": "Обект", + "campaign": "Кампания" }, "options": { "action": { - "Sent": "Изпратено", - "Opened": "Отворен", - "Opted Out": "Отказахте се", - "Bounced": "Върната", - "Clicked": "Кликване", - "Lead Created": "Създадена Потенциална Продажба", + "Sent": "Изпратени", + "Opened": "Отворени", + "Opted Out": "Отписали се", + "Bounced": "Неуспешно получени", + "Clicked": "Кликнали", + "Lead Created": "Създадени потенциални продажби", "Opted In": "Избрал участие" } }, "labels": { - "All": "всичко" + "All": "Всички" }, "presetFilters": { - "sent": "Изпратено", - "opened": "Отворен", - "optedOut": "Отказахте се", - "bounced": "Върната", - "clicked": "Кликване", - "leadCreated": "Създадена Потенциална Продажба", + "sent": "Изпратени", + "opened": "Отворени", + "optedOut": "Отказали се", + "bounced": "Неуспешно получени", + "clicked": "Кликвани", + "leadCreated": "Създадени потенциални продажби", "optedIn": "Избрал участие" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/CampaignTrackingUrl.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/CampaignTrackingUrl.json index ff217619d4..bd0e3a6337 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/CampaignTrackingUrl.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/CampaignTrackingUrl.json @@ -1,12 +1,12 @@ { "fields": { "urlToUse": "Код за вмъкване вместо URL", - "campaign": "кампания", - "action": "действие", - "message": "съобщение" + "campaign": "Кампания", + "action": "Действие", + "message": "Съобщение" }, "links": { - "campaign": "кампания" + "campaign": "Кампания" }, "labels": { "Create CampaignTrackingUrl": "Създаване на URL адрес за проследяване" @@ -18,7 +18,7 @@ } }, "tooltips": { - "url": "Получателят ще бъдат пренасочени към това място, след като следвайте връзката.", - "message": "Съобщението ще бъде показан на получателя, след като следвайте връзката. Markdown се поддържа." + "url": "Получателят ще бъде пренасочен към този URL, след като кликне на връзката.", + "message": "Съобщението ще бъде показано на получателя, след като кликне на връзката. Markdown се поддържа." } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Case.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Case.json index 50a1545856..01fd268f8f 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Case.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Case.json @@ -1,60 +1,61 @@ { "fields": { - "name": "име", - "number": "номер", + "name": "Име", + "number": "Номер", "status": "Статус", "account": "Сметка", - "contact": "контакт", + "contact": "Контакт", "contacts": "Контакти", - "priority": "приоритет", + "priority": "Приоритет", "type": "Тип", - "description": "описание", - "lead": "Потенциална Продажба", - "attachments": "Прикачени", - "inboundEmail": "Група имейл акаунт" + "description": "Описание", + "lead": "Потенциална продажба", + "attachments": "Прикачени файлове", + "inboundEmail": "Групов имейл акаунт" }, "links": { - "account": "Сметка", - "contact": "Свържи (Основно)", + "account": "Клиент", + "contact": "Контакт (Основен)", "Contacts": "Контакти", - "meetings": "срещи", - "calls": "призовава", + "meetings": "Срещи", + "calls": "Обаждания", "tasks": "Задачи", - "emails": "имейли", + "emails": "Имейли", "articles": "Статии от базата знания", - "lead": "Потенциална Продажба", - "attachments": "Прикачени", - "inboundEmail": "Група имейл акаунт" + "lead": "Потенциална продажба", + "attachments": "Прикачени файлове", + "inboundEmail": "Групов имейл акаунт" }, "options": { "status": { - "New": "нов", - "Assigned": "целеви", - "Pending": "Предстоящо", - "Closed": "Затворена", - "Rejected": "Отхвърлени" + "New": "Нов", + "Assigned": "Назначен", + "Pending": "Отворен", + "Closed": "Затворен", + "Rejected": "Отхвърлен", + "Duplicate": "Дублиран" }, "priority": { - "Low": "ниско", - "Normal": "нормален", - "High": "Високо", - "Urgent": "спешно" + "Low": "Нисък", + "Normal": "Нормален", + "High": "Висок", + "Urgent": "Спешен" }, "type": { - "Question": "въпрос", + "Question": "Въпрос", "Incident": "Инцидент", - "Problem": "проблем" + "Problem": "Проблем" } }, "labels": { - "Create Case": "Създаване на дело", - "Close": "Близо", + "Create Case": "Създаване на тикет", + "Close": "Затваряне", "Reject": "Отхвърляне", - "Closed": "Затворена", - "Rejected": "Отхвърлени" + "Closed": "Затворен", + "Rejected": "Отхвърлен" }, "presetFilters": { - "open": "отворено", - "closed": "Затворена" + "open": "Отворени", + "closed": "Затворени" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Contact.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Contact.json index 942cb059a9..9fa030e5d9 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Contact.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Contact.json @@ -1,38 +1,39 @@ { "fields": { - "name": "име", - "emailAddress": "електронна поща", + "name": "Име", + "emailAddress": "Електронна поща", "accountRole": "Заглавие", - "account": "Сметка", - "accounts": "сметки", - "phoneNumber": "телефон", + "account": "Клиент", + "accounts": "Клиенти", + "phoneNumber": "Телефон", "accountType": "Тип на профила", "doNotCall": "Не звъни", - "address": "адрес", - "opportunityRole": "възможност Роля", - "description": "описание", - "campaign": "кампания", + "address": "Адрес", + "opportunityRole": "Роля в сделка", + "description": "Описание", + "campaign": "Кампания", "targetLists": "Целеви списъци", "targetList": "Целева Списък", - "portalUser": "портал за потребителя", - "originalLead": "Оригинален Lead", - "acceptanceStatus": "Приемане Статус", - "accountIsInactive": "неактивен акаунт", - "acceptanceStatusMeetings": "Приемане Статус (срещи)", - "acceptanceStatusCalls": "Приемане Статус (призовава)", - "title": "Основно заглавие на профила" + "portalUser": "Потребител на портал", + "originalLead": "Оригинална потенциална продажба", + "acceptanceStatus": "Статус за приемане", + "accountIsInactive": "Неактивен клиент", + "acceptanceStatusMeetings": "Статус на приемане (Срещи)", + "acceptanceStatusCalls": "Статус на приемане (Разговори)", + "title": "Роля при клиент", + "hasPortalUser": "Притежава акаунт в портала" }, "links": { - "opportunities": "възможности", - "cases": "случаи", + "opportunities": "Сделки", + "cases": "Тикети", "targetLists": "Целеви списъци", - "campaignLogRecords": "кампания Вход", - "campaign": "кампания", - "account": "Сметката (Основно)", - "accounts": "сметки", - "casesPrimary": "Случаи (Основно)", - "portalUser": "портал за потребителя", - "originalLead": "Оригинален Lead", + "campaignLogRecords": "Логове от кампания", + "campaign": "Кампания", + "account": "Клиент (Основен)", + "accounts": "Клиенти", + "casesPrimary": "Тикети (Основни)", + "portalUser": "Потребител в портал", + "originalLead": "Оригинална потенциална продажба", "documents": "Документи", "tasksPrimary": "Задачи (разширена)", "opportunitiesPrimary": "Възможности (Основно)" @@ -42,12 +43,13 @@ }, "options": { "opportunityRole": { - "Decision Maker": "Решение Maker", - "Evaluator": "оценител" + "Decision Maker": "Вземащ решения", + "Evaluator": "Оценител", + "Influencer": "Инфлуенсър" } }, "presetFilters": { - "portalUsers": "потребители на портала", + "portalUsers": "Потребители на портала", "notPortalUsers": "Не потребители на портала", "accountActive": "Активен" } diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/DashletOptions.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/DashletOptions.json index 5711bb31a2..d13e4fee4d 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/DashletOptions.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/DashletOptions.json @@ -1,6 +1,7 @@ { "fields": { - "futureDays": "Следваща X Дни", - "useLastStage": "Група от миналата достигна етап" + "futureDays": "Следващите X Дни", + "useLastStage": "Групиране по последната фаза", + "team": "Отдел" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Document.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Document.json index 3ec4c515aa..a50ceabe2f 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Document.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Document.json @@ -1,41 +1,42 @@ { "labels": { "Create Document": "Създаване на документ", - "Details": "детайли" + "Details": "Детайли" }, "fields": { - "name": "име", + "name": "Име", "status": "Статус", - "file": "досие", + "file": "Файл", "type": "Тип", "publishDate": "Дата на публикуване", - "expirationDate": "Срок на годност", - "description": "описание", - "accounts": "сметки", - "folder": "папка" + "expirationDate": "Срок на валидност", + "description": "Описание", + "accounts": "Клиенти", + "folder": "Папка" }, "links": { - "accounts": "сметки", - "opportunities": "възможности", - "folder": "папка", + "accounts": "Клиенти", + "opportunities": "Сделки", + "folder": "Папка", + "leads": "Потенциални продажби", "contacts": "Контакти" }, "options": { "status": { "Active": "Активен", - "Draft": "проект", - "Expired": "Просрочен", + "Draft": "Чернова", + "Expired": "Изтекъл", "Canceled": "Отменен" }, "type": { "": "Нито един", "Contract": "Договор", - "NDA": "ЕБК", + "NDA": "Споразумение за неразкриване на информация", "License Agreement": "Лицензионно споразумение" } }, "presetFilters": { - "active": "Активен", - "draft": "проект" + "active": "Активни", + "draft": "Чернови" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Email.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Email.json index 820e0724d2..5a9cd75e85 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Email.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Email.json @@ -1,10 +1,13 @@ { "labels": { - "Create Lead": "Създаване на олово", + "Create Lead": "Създаване на потенциална продажба", "Create Contact": "Създаване на контакт", - "Create Task": "Създаване на Task", - "Create Case": "Създаване на дело", - "Add to Contact": "Добави към контакти", - "Add to Lead": "Добави в Lead" + "Create Task": "Създаване на задача", + "Create Case": "Създаване на тикет", + "Add to Contact": "Добави към контакт", + "Add to Lead": "Добави към потенциална продажба" + }, + "fields": { + "tasks": "Задачи" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/EmailQueueItem.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/EmailQueueItem.json index 67dee8758d..f6a846621f 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/EmailQueueItem.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/EmailQueueItem.json @@ -1,28 +1,29 @@ { "fields": { - "name": "име", + "name": "Име", "status": "Статус", "target": "Цел", "sentAt": "Дата на изпращане", "attemptCount": "Опити", "emailAddress": "Имейл адрес", - "massEmail": "Маса Email" + "massEmail": "Масов имейл", + "isTest": "Е тестов" }, "links": { "target": "Цел", - "massEmail": "Маса Email" + "massEmail": "Масов имейл" }, "options": { "status": { - "Pending": "Предстоящо", - "Sent": "Изпратено", - "Failed": "Се провали", + "Pending": "Предстоящ", + "Sent": "Изпратен", + "Failed": "Провален", "Sending": "Изпращане" } }, "presetFilters": { - "pending": "Предстоящо", - "sent": "Изпратено", - "failed": "Се провали" + "pending": "Предстоящ", + "sent": "Изпратен", + "failed": "Провален" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Global.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Global.json index 976814b26e..1940d5b7c1 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Global.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Global.json @@ -1,103 +1,108 @@ { "links": { - "parent": "родител", + "parent": "Родител", "contacts": "Контакти", - "opportunities": "възможности", - "meetings": "срещи", - "calls": "призовава", + "opportunities": "Сделки", + "leads": "Потенциална продажба", + "meetings": "Срещи", + "calls": "Обаждане", "tasks": "Задачи", - "emails": "имейли", - "accounts": "сметки", - "cases": "случаи", + "emails": "Имейли", + "accounts": "Клиенти", + "cases": "Тикети", "documents": "Документи", - "account": "Сметка", - "contact": "контакт" + "account": "Клиент", + "opportunity": "Сделка", + "contact": "Контакт" }, "scopeNames": { - "Account": "Сметка", - "Contact": "контакт", - "Lead": "Водя", + "Account": "Клиент", + "Contact": "Контакт", + "Lead": "Потенциална продажба", "Target": "Цел", + "Opportunity": "Възможност", "Meeting": "Среща", - "Calendar": "календар", + "Calendar": "Календар", "Call": "Обадете се", - "Task": "задача", - "Case": "случай", - "Document": "документ", - "DocumentFolder": "Документ Папка", - "Campaign": "кампания", - "TargetList": "Целева Списък", - "MassEmail": "Маса Email", - "EmailQueueItem": "Email Queue Точка", - "CampaignTrackingUrl": "проследяване на URL", - "Activities": "дейности", - "KnowledgeBaseArticle": "Статия от Базата знания", - "KnowledgeBaseCategory": "Базата знания Категория", - "CampaignLogRecord": "Вход Запис на кампанията" + "Task": "Задача", + "Case": "Тикет", + "Document": "Документ", + "DocumentFolder": "Папка с документи", + "Campaign": "Кампания", + "TargetList": "Целеви списък", + "MassEmail": "Масов имейл", + "EmailQueueItem": "Имейл - елементи от опашката", + "CampaignTrackingUrl": "Проследяване на URL", + "Activities": "Активности", + "KnowledgeBaseArticle": "Статия от документацията", + "KnowledgeBaseCategory": "Категория от документацията", + "CampaignLogRecord": "Запис в дневника на кампанията" }, "scopeNamesPlural": { - "Account": "сметки", + "Account": "Клиенти", "Contact": "Контакти", + "Lead": "Потенциални продажби", "Target": "Цели", - "Opportunity": "възможности", - "Meeting": "срещи", - "Calendar": "календар", - "Call": "призовава", + "Opportunity": "Сделки", + "Meeting": "Срещи", + "Calendar": "Календар", + "Call": "Обаждания", "Task": "Задачи", - "Case": "случаи", + "Case": "Тикети", "Document": "Документи", - "DocumentFolder": "Документ папки", + "DocumentFolder": "Папки за документи", "Campaign": "Кампании", "TargetList": "Целеви списъци", "MassEmail": "Масови имейли", "EmailQueueItem": "Изпратете елемента от опашка", "CampaignTrackingUrl": "Проследяване на URL адреси", - "Activities": "дейности", - "KnowledgeBaseArticle": "Знание", - "KnowledgeBaseCategory": "Базата знания Категории", - "CampaignLogRecord": "Кампания Вход Records" + "Activities": "Активности", + "KnowledgeBaseArticle": "Документация", + "KnowledgeBaseCategory": "Категории за документация", + "CampaignLogRecord": "Записи в дневника на кампанията" }, "dashlets": { - "Leads": "Моите Leads", - "Opportunities": "Моите възможности", + "Leads": "Моите потенциални продажби", + "Opportunities": "Моите сделки", "Tasks": "Моите задачи", - "Cases": "Мои случаи", - "Calendar": "календар", - "Calls": "Моите призовава", + "Cases": "Моите тикети", + "Calendar": "Календар", + "Calls": "Моите oбаждания", "Meetings": "Моите срещи", - "OpportunitiesByStage": "Възможности от Етап", - "OpportunitiesByLeadSource": "Възможности от преднината Източник", - "SalesByMonth": "Продажбите на месец", - "SalesPipeline": "процеса на продажбите", + "OpportunitiesByStage": "Сделки по статуси", + "OpportunitiesByLeadSource": "Сделки по източник", + "SalesByMonth": "Продажбите по месец", + "SalesPipeline": "Процеса на продажбите", "Activities": "Моите дейности" }, "labels": { - "Create InboundEmail": "Създаване Входящ Email", - "Activities": "дейности", - "History": "история", - "Attendees": "Присъстващите", - "Schedule Meeting": "График Среща", - "Schedule Call": "График Call", - "Compose Email": "Състави имейл", - "Log Meeting": "Вход Среща", - "Log Call": "Вход Call", - "Archive Email": "Архив Email", - "Create Task": "Създаване на Task", - "Tasks": "Задачи" + "Create InboundEmail": "Създаване на входящ имейл", + "Activities": "Активности", + "History": "История", + "Attendees": "Присъстващи", + "Schedule Meeting": "Насрочване на среща", + "Schedule Call": "Насрочване на разговор", + "Compose Email": "Създаване на имейл", + "Log Meeting": "Регистриране на среща", + "Log Call": "Регистриране на разговор", + "Archive Email": "Архивиране на имейл", + "Create Task": "Създаване на задача", + "Tasks": "Задачи", + "Scheduler": "График" }, "fields": { - "billingAddressCity": "град", - "addressCity": "град", - "billingAddressCountry": "Страна", - "addressCountry": "Страна", - "billingAddressPostalCode": "пощенски код", - "addressPostalCode": "пощенски код", - "billingAddressState": "състояние", - "addressState": "състояние", - "billingAddressStreet": "улица", - "addressStreet": "улица", - "billingAddressMap": "карта", - "addressMap": "карта", + "billingAddressCity": "Град", + "addressCity": "Град", + "billingAddressCountry": "Държава", + "addressCountry": "Държава", + "billingAddressPostalCode": "Пощенски код", + "addressPostalCode": "Пощенски код", + "billingAddressState": "Състояние", + "addressState": "Състояние", + "billingAddressStreet": "Улица", + "addressStreet": "Улица", + "billingAddressMap": "Карта", + "addressMap": "Карта", "shippingAddressCity": "Град (доставка)", "shippingAddressStreet": "Улица (доставка)", "shippingAddressCountry": "Държава (доставка)", @@ -107,7 +112,8 @@ }, "options": { "reminderTypes": { - "Email": "електронна поща" + "Popup": "Попъп", + "Email": "Електронна поща" } } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/KnowledgeBaseArticle.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/KnowledgeBaseArticle.json index 45eb535167..743f91c94f 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/KnowledgeBaseArticle.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/KnowledgeBaseArticle.json @@ -1,47 +1,47 @@ { "labels": { - "Create KnowledgeBaseArticle": "Създаване на член", - "Any": "който и да е", - "Send in Email": "Изпрати на Email", + "Create KnowledgeBaseArticle": "Създаване на статия", + "Any": "Всички", + "Send in Email": "Изпрати по имейл", "Move Up": "Премести нагоре", "Move Down": "Премести надолу", - "Move to Top": "Преминаване към Top", + "Move to Top": "Преместване най-отгоре", "Move to Bottom": "Преместване най-долу" }, "fields": { - "name": "име", + "name": "Име", "status": "Статус", "type": "Тип", "attachments": "Прикачени", "publishDate": "Дата на публикуване", "expirationDate": "Срок на годност", - "description": "описание", - "body": "тяло", + "description": "Описание", + "body": "Съдържание", "categories": "Категории", - "language": "език", + "language": "Език", "portals": "Портали" }, "links": { - "cases": "случаи", - "opportunities": "възможности", + "cases": "Тикети", + "opportunities": "Сделки", "categories": "Категории", "portals": "Портали" }, "options": { "status": { - "In Review": "В Преглед", - "Draft": "проект", + "In Review": "Чернова", + "Draft": "Чернова", "Archived": "Архив", - "Published": "Публикуван" + "Published": "Публикувана" }, "type": { - "Article": "статия" + "Article": "Статия" } }, "presetFilters": { "published": "Публикуван" }, "tooltips": { - "portals": "Член ще бъде достъпен само в определени портали." + "portals": "Статията ще бъде достъпна само в избраните портали." } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/KnowledgeBaseCategory.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/KnowledgeBaseCategory.json index 75e0020205..99c280f6ce 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/KnowledgeBaseCategory.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/KnowledgeBaseCategory.json @@ -2,9 +2,9 @@ "labels": { "Create KnowledgeBaseCategory": "Създаване на Категория", "Manage Categories": "Управление на категории", - "Articles": "статии" + "Articles": "Статии" }, "links": { - "articles": "статии" + "articles": "Статии" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Lead.json index 0fd7a58c49..1be0f13272 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Lead.json @@ -1,68 +1,70 @@ { "labels": { - "Converted To": "превръща в", - "Create Lead": "Създаване на олово", + "Converted To": "Конвертирана в", + "Create Lead": "Създаване на Потенциална продажба", + "Convert": "Конвертиране", "convert": "конвертиране" }, "fields": { - "name": "име", - "emailAddress": "електронна поща", + "name": "Име", + "emailAddress": "Електронна поща", "title": "Заглавие", - "website": "уебсайт", - "phoneNumber": "телефон", - "accountName": "Име на акаунта", + "website": "Уебсайт", + "phoneNumber": "Телефон", + "accountName": "Име на клиента", "doNotCall": "Не звъни", - "address": "адрес", + "address": "Адрес", "status": "Статус", - "source": "източник", - "opportunityAmount": "възможност сума", - "opportunityAmountConverted": "Възможност сума (изчислена)", - "description": "описание", - "createdAccount": "Сметка", - "createdContact": "контакт", - "campaign": "кампания", + "source": "Източник", + "opportunityAmount": "Сума на сделката", + "opportunityAmountConverted": "Сума на сделката (изчислена)", + "description": "Описание", + "createdAccount": "Клиент", + "createdContact": "Контакт", + "createdOpportunity": "Сделка", + "campaign": "Кампания", "targetLists": "Целеви списъци", - "targetList": "Целева Списък", - "industry": "промишленост", - "acceptanceStatus": "Приемане Статус", - "opportunityAmountCurrency": "Възможност сума във валута", - "acceptanceStatusMeetings": "Приемане Статус (срещи)", - "acceptanceStatusCalls": "Приемане Статус (призовава)", - "convertedAt": "конвертирани по" + "targetList": "Целева списък", + "industry": "Промишленост", + "acceptanceStatus": "Статус за приемане", + "opportunityAmountCurrency": "Валута на сумата в сделката", + "acceptanceStatusMeetings": "Статус на приемане (Срещи)", + "acceptanceStatusCalls": "Статус на приемане (Разговори)", + "convertedAt": "Конвертирана на" }, "links": { "targetLists": "Целеви списъци", - "campaignLogRecords": "кампания Вход", - "campaign": "кампания", - "createdAccount": "Сметка", - "createdContact": "контакт", - "cases": "случаи", + "campaignLogRecords": "Логове на кампанията", + "campaign": "Кампания", + "createdAccount": "Клиент", + "createdContact": "Контакт", + "createdOpportunity": "Сделка", + "cases": "Тикети", "documents": "Документи" }, "options": { "status": { - "New": "нов", - "Assigned": "целеви", + "New": "Нова", + "Assigned": "Назначена", "In Process": "В процес", - "Converted": "покръстен", + "Converted": "Конвертирана", "Recycled": "Рециклирана", - "Dead": "мъртъв" + "Dead": "Изоставена" }, "source": { - "": "Нито един", "Call": "Обадете се", - "Email": "електронна поща", + "Email": "Електронна поща", "Existing Customer": "Съществуващ клиент", - "Partner": "партньор", + "Partner": "Партньор", "Public Relations": "Връзки с обществеността", - "Web Site": "уеб сайт", - "Campaign": "кампания", - "Other": "друг" + "Web Site": "Уеб сайт", + "Campaign": "Кампания", + "Other": "Друг" } }, "presetFilters": { "active": "Активен", - "actual": "действителен", - "converted": "покръстен" + "actual": "Актуален", + "converted": "Конвертиран" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/MassEmail.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/MassEmail.json index b85be312af..bd11ec6381 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/MassEmail.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/MassEmail.json @@ -1,14 +1,14 @@ { "fields": { - "name": "име", + "name": "Име", "status": "Статус", - "storeSentEmails": "Магазин изпращат съобщения", - "startAt": "Дата Старт", - "fromAddress": "От Адрес", + "storeSentEmails": "Съхраняване на изпратените имейли", + "startAt": "Дата на стартиране", + "fromAddress": "От адрес", "fromName": "От име", "replyToAddress": "Адрес за отговор", "replyToName": "Отговор до Наименование", - "campaign": "кампания", + "campaign": "Кампания", "emailTemplate": "Шаблон за имейл", "inboundEmail": "Имейл акаунт", "targetLists": "Целеви списъци", @@ -19,40 +19,40 @@ "links": { "targetLists": "Целеви списъци", "excludingTargetLists": "С изключение на целевите списъци", - "queueItems": "елемента от опашка", - "campaign": "кампания", + "queueItems": "Елементи от опашката", + "campaign": "Кампания", "emailTemplate": "Шаблон за имейл", "inboundEmail": "Имейл акаунт" }, "options": { "status": { - "Draft": "проект", + "Draft": "Чернова", "Pending": "Предстоящо", "In Process": "В процес", - "Complete": "пълен", + "Complete": "Завършен", "Canceled": "Отменен", - "Failed": "Се провали" + "Failed": "Провален" } }, "labels": { - "Create MassEmail": "Създаване на Маса Email", - "Send Test": "Изпрати Test", - "System SMTP": "система за SMTP", + "Create MassEmail": "Създаване на масов имейл", + "Send Test": "Изпрати тестов имейл", + "System SMTP": "Системен SMTP", "system": "система", "group": "група" }, "messages": { - "selectAtLeastOneTarget": "Изберете поне една мишена.", - "testSent": "Тест имейл (и) трябва да бъде изпратен" + "selectAtLeastOneTarget": "Изберете поне една цел.", + "testSent": "Тестовият имейл би трябвало да е изпратен" }, "tooltips": { - "optOutEntirely": "Имейл адресите на получателите, които се отписали, ще бъдат маркирани като се отказали и те няма да получават никакви масови имейли вече.", + "optOutEntirely": "Имейл адресите на получателите, които са се отказали, ще бъдат маркирани като отписали се и те няма да получават повече имейли.", "targetLists": "Цели, които трябва да получават съобщения.", "excludingTargetLists": "Цели, които не трябва да получават съобщения.", "storeSentEmails": "Имейлите ще бъдат съхранявани в CRM." }, "presetFilters": { - "actual": "действителен", - "complete": "пълен" + "actual": "Актуални", + "complete": "Завършени" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Meeting.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Meeting.json index 837a2cf07d..1b355f992d 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Meeting.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Meeting.json @@ -1,55 +1,57 @@ { "fields": { - "name": "име", - "parent": "родител", + "name": "Име", + "parent": "Родител", "status": "Статус", - "dateStart": "Дата Старт", + "dateStart": "Начална дата", "dateEnd": "Крайна дата", - "duration": "продължителност", - "description": "описание", + "duration": "Продължителност", + "description": "Описание", "users": "Потребители", "contacts": "Контакти", + "leads": "Потенциални продажби", "reminders": "Напомняния", - "account": "Сметка", - "acceptanceStatus": "Приемане Статус", - "dateStartDate": "Дата Start (цял ден)", + "account": "Клиент", + "acceptanceStatus": "Статус за приемане", + "dateStartDate": "Начална дата (цял ден)", "dateEndDate": "Крайна дата (цял ден)", - "isAllDay": "Дали през целия ден", - "Acceptance": "приемане" + "isAllDay": "Цял ден", + "Acceptance": "Приемане", + "sourceEmail": "Източник на имейла" }, "options": { "status": { - "Planned": "Планирано", - "Held": "Държани", - "Not Held": "Не държани" + "Planned": "Планирана", + "Held": "Състояла се", + "Not Held": "Несъстояла се" }, "acceptanceStatus": { "None": "Нито един", - "Accepted": "общоприет", + "Accepted": "Приета", "Declined": "Отхвърлена", - "Tentative": "Експериментален" + "Tentative": "Несигурна" } }, "massActions": { - "setHeld": "Задайте държани", - "setNotHeld": "Задайте не се държат" + "setHeld": "Задай като състояла се", + "setNotHeld": "Задай като несъстояла се" }, "labels": { "Create Meeting": "Създаване на среща", - "Set Held": "Задайте държани", - "Set Not Held": "Задайте не се държат", + "Set Held": "Задай като състояла се", + "Set Not Held": "Задай като състояла се", "Send Invitations": "Изпращането на покани", "on time": "на време", "before": "преди", "All-Day": "Цял ден" }, "presetFilters": { - "planned": "Планирано", - "held": "Държани", + "planned": "Планирани", + "held": "Състояли се", "todays": "Днешните" }, "messages": { - "nothingHasBeenSent": "Нищо не бяха изпратени", - "selectAcceptanceStatus": "Задайте състоянието си приемане." + "nothingHasBeenSent": "Нищо не беше изпратено", + "selectAcceptanceStatus": "Задайте състоянието на приемане." } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Opportunity.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Opportunity.json index 33d1f2d157..a032349bf6 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Opportunity.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Opportunity.json @@ -1,52 +1,53 @@ { "fields": { - "name": "име", - "account": "Сметка", - "stage": "сцена", - "amount": "Количество", - "probability": "Вероятност,%", - "leadSource": "Водещ Източник", + "name": "Име", + "account": "Клиент", + "stage": "Фаза", + "amount": "Сума", + "probability": "Вероятност (%)", + "leadSource": "Източник на потенциалната продажба", "doNotCall": "Не звъни", - "closeDate": "Близо Дата", + "closeDate": "Дата на затваряне", "contacts": "Контакти", - "description": "описание", - "amountConverted": "Количество (изчислена)", - "amountWeightedConverted": "сума Weighted", - "campaign": "кампания", - "originalLead": "Оригинален Lead", - "amountCurrency": "сума на валута", - "contactRole": "Свържи Роля", - "lastStage": "Последният етап", - "contact": "Свържи (Основно)" + "description": "Описание", + "amountConverted": "Сума (изчислена)", + "amountWeightedConverted": "Сума (изчислена)", + "campaign": "Кампания", + "originalLead": "Оригинална потенциална продажба", + "amountCurrency": "Валута на сумата", + "contactRole": "Роля на контакта", + "lastStage": "Последна фаза", + "contact": "Контакт (Основен)" }, "links": { "contacts": "Контакти", "documents": "Документи", - "campaign": "кампания", - "originalLead": "Оригинален Lead", - "contact": "Свържи (Основно)" + "campaign": "Кампания", + "originalLead": "Оригинална потенциална продажба", + "contact": "Контакт (Основен)" }, "options": { "stage": { - "Qualification": "Квалификация", - "Needs Analysis": "Анализ на нуждите", - "Value Proposition": "Стойностно предложение", - "Id. Decision Makers": "Документ за самоличност. Хора, взимащи решения", - "Perception Analysis": "Схващането Анализ", - "Proposal/Price Quote": "Предложение / Цена цитат", + "Prospecting": "Проучване", + "Qualification": "Квалифициране", + "Needs Analysis": "Нужда от анализ", + "Value Proposition": "Предложение", + "Id. Decision Makers": "Вземане на решение", + "Perception Analysis": "Анализ", + "Proposal/Price Quote": "Изготвяне на оферта", "Negotiation/Review": "Преговори / Преглед", - "Closed Won": "Приключена спечелена", - "Closed Lost": "затворен Изгубени", - "Proposal": "предложение", - "Negotiation": "договаряне" + "Closed Won": "Приключена - спечелена", + "Closed Lost": "Приключена - загубена", + "Proposal": "Предложение", + "Negotiation": "Договаряне" } }, "labels": { - "Create Opportunity": "Създаване на възможности" + "Create Opportunity": "Създаване на Сделка" }, "presetFilters": { - "open": "отворено", + "open": "Отворени", "won": "Спечелени", - "lost": "загубен" + "lost": "Загубени" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Portal.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Portal.json index dc9dac4d94..45406b8ec8 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Portal.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Portal.json @@ -1,5 +1,5 @@ { "links": { - "articles": "Статии от базата знания" + "articles": "Статии от документацията" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/ScheduledJob.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/ScheduledJob.json index 30147aa6ca..99f216de3f 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/ScheduledJob.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/ScheduledJob.json @@ -1,8 +1,8 @@ { "options": { "job": { - "ProcessMassEmail": "Изпрати Масови имейли", - "ControlKnowledgeBaseArticleStatus": "Контрол Статия от Базата знания Статус" + "ProcessMassEmail": "Изпращане на масови имейли", + "ControlKnowledgeBaseArticleStatus": "Управление на статуса на статиите от документацията" } } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/TargetList.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/TargetList.json index 909705c1f7..174848e6b4 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/TargetList.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/TargetList.json @@ -1,39 +1,41 @@ { "fields": { - "name": "име", - "description": "описание", - "entryCount": "Влизане граф", + "name": "Име", + "description": "Описание", + "entryCount": "Брой записи", "campaigns": "Кампании", "endDate": "Крайна дата", "targetLists": "Целеви списъци", "includingActionList": "Включително", - "excludingActionList": "с изключение на", - "optedOutCount": "Отказахте се граф", - "targetStatus": "Целева Статус", - "isOptedOut": "Е изключена" + "excludingActionList": "С изключение на", + "optedOutCount": "Отписали се", + "targetStatus": "Целеви статус", + "isOptedOut": "Отписал се" }, "links": { - "accounts": "сметки", + "accounts": "Клиенти", "contacts": "Контакти", + "leads": "Потенциални продажба", "campaigns": "Кампании", "massEmails": "Масови имейли" }, "options": { "type": { - "Email": "електронна поща", - "Web": "мрежа", - "Television": "телевизия", - "Radio": "радио" + "Email": "Електронна поща", + "Web": "Интернет", + "Television": "Телевизия", + "Radio": "Радио", + "Newsletter": "Имейл бюлетин" }, "targetStatus": { - "Opted Out": "Отказахте се", + "Opted Out": "Отписал се", "Listed": "изброени" } }, "labels": { - "Create TargetList": "Създаване на Target Списък", - "Opted Out": "Отказахте се", - "Cancel Opt-Out": "Отказ за отказване", - "Opt-Out": "Отказване" + "Create TargetList": "Създаване на целеви списък", + "Opted Out": "Отказали се", + "Cancel Opt-Out": "Отмяна на отказване", + "Opt-Out": "Отписване" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Task.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Task.json index 7aad3a51cd..37df8fbfc4 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Task.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/Task.json @@ -1,50 +1,55 @@ { "fields": { - "name": "име", - "parent": "родител", + "name": "Име", + "parent": "Родител", "status": "Статус", - "dateStart": "Дата Старт", + "dateStart": "Начална дата", "dateEnd": "Дата до", - "dateStartDate": "Дата Start (цял ден)", + "dateStartDate": "Начална дата (цял ден)", "dateEndDate": "Крайна дата (цял ден)", - "priority": "приоритет", - "description": "описание", - "isOverdue": "е просрочено", - "account": "Сметка", - "dateCompleted": "Дата Завършен", - "attachments": "Прикачени", + "priority": "Приоритет", + "description": "Описание", + "isOverdue": "Е просрочена", + "account": "Клиент", + "dateCompleted": "Дата на завършване", + "attachments": "Прикачени файлове", "reminders": "Напомняния", - "contact": "контакт" + "contact": "Контакт" }, "links": { - "attachments": "Прикачени", - "account": "Сметка", - "contact": "контакт" + "attachments": "Прикачени файлове", + "account": "Клиент", + "contact": "Контакт", + "email": "Имейл" }, "options": { "status": { - "Not Started": "Не е започнало", + "Not Started": "Не е стартирана", "Started": "Започната", - "Completed": "завършен", - "Canceled": "Отменен", - "Deferred": "Разсрочено" + "Completed": "Завършен", + "Canceled": "Отменена", + "Deferred": "Отложена" }, "priority": { - "Low": "ниско", - "Normal": "нормален", - "High": "Високо", - "Urgent": "спешно" + "Low": "Нисък", + "Normal": "Нормален", + "High": "Висок", + "Urgent": "Спешен" } }, "labels": { - "Create Task": "Създаване на Task", - "Complete": "пълен" + "Create Task": "Създаване на задача", + "Complete": "Завършване", + "overdue": "просрочена" }, "presetFilters": { - "actual": "действителен", - "completed": "завършен", + "actual": "Актуални", + "completed": "Завършени", "todays": "Днешните", - "overdue": "просрочен", + "overdue": "Просрочени", "deferred": "Разсрочено" + }, + "nameOptions": { + "replyToEmail": "Отговор до имейл" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/User.json b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/User.json index 03393d3009..14b9ef2c0c 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/bg_BG/User.json +++ b/application/Espo/Modules/Crm/Resources/i18n/bg_BG/User.json @@ -3,8 +3,8 @@ "targetLists": "Целеви списъци" }, "fields": { - "acceptanceStatus": "Приемане Статус", - "acceptanceStatusMeetings": "Приемане Статус (срещи)", - "acceptanceStatusCalls": "Приемане Статус (призовава)" + "acceptanceStatus": "Статус за приемане", + "acceptanceStatusMeetings": "Статус на приемане (Срещи)", + "acceptanceStatusCalls": "Статус на приемане (Разговори)" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/cs_CZ/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/cs_CZ/Lead.json index 950a991866..52fa7448c5 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/cs_CZ/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/cs_CZ/Lead.json @@ -41,7 +41,6 @@ "Dead": "Mrtvý" }, "source": { - "": "-", "Call": "Volání", "Email": "Email", "Existing Customer": "Existující zákazník", diff --git a/application/Espo/Modules/Crm/Resources/i18n/da_DK/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/da_DK/Lead.json index 586af3c24d..5433919f35 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/da_DK/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/da_DK/Lead.json @@ -45,7 +45,6 @@ "Dead": "Død" }, "source": { - "": "Ingen", "Call": "Samtale", "Existing Customer": "Eksisterende Kunde", "Public Relations": "PR", diff --git a/application/Espo/Modules/Crm/Resources/i18n/de_DE/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/de_DE/Lead.json index 4ea2b5e1c1..505a4d48b4 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/de_DE/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/de_DE/Lead.json @@ -50,7 +50,6 @@ "Dead": "'Gestorben'" }, "source": { - "": "Kein(e)", "Call": "Anruf", "Email": "E-Mail", "Existing Customer": "Bestandskunde", diff --git a/application/Espo/Modules/Crm/Resources/i18n/en_US/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/en_US/Lead.json index bd3218dcee..70d23cb981 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/en_US/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/en_US/Lead.json @@ -52,7 +52,6 @@ "Dead": "Dead" }, "source": { - "": "None", "Call": "Call", "Email": "Email", "Existing Customer": "Existing Customer", diff --git a/application/Espo/Modules/Crm/Resources/i18n/es_ES/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/es_ES/Lead.json index 3d41603df1..b2aa04ddad 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/es_ES/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/es_ES/Lead.json @@ -52,7 +52,6 @@ "Dead": "Muerto" }, "source": { - "": "Ninguno", "Call": "Llamada", "Email": "Correo electrónico", "Existing Customer": "Cliente Existente", diff --git a/application/Espo/Modules/Crm/Resources/i18n/es_MX/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/es_MX/Lead.json index 89423fcb6e..30e754d12c 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/es_MX/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/es_MX/Lead.json @@ -51,7 +51,6 @@ "Dead": "Muerto" }, "source": { - "": "Ninguno", "Call": "Llamada", "Email": "Correo electrónico", "Existing Customer": "Cliente Existente", diff --git a/application/Espo/Modules/Crm/Resources/i18n/fa_IR/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/fa_IR/Lead.json index e78b2e5781..56174d180b 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/fa_IR/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/fa_IR/Lead.json @@ -50,7 +50,6 @@ "Dead": "مرده" }, "source": { - "": "هیچ کدام", "Call": "تماس", "Email": "ایمیل", "Existing Customer": "مشتری موجود", diff --git a/application/Espo/Modules/Crm/Resources/i18n/fr_FR/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/fr_FR/Lead.json index 34f388d345..307a841982 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/fr_FR/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/fr_FR/Lead.json @@ -39,7 +39,6 @@ "Recycled": "Recyclé" }, "source": { - "": "Aucun", "Call": "Appel", "Existing Customer": "Client existant", "Partner": "Partenaire", diff --git a/application/Espo/Modules/Crm/Resources/i18n/hr_HR/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/hr_HR/Lead.json index 40abc13186..0fd57fa522 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/hr_HR/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/hr_HR/Lead.json @@ -50,7 +50,6 @@ "Dead": "Mrtav" }, "source": { - "": "Nema", "Call": "Poziv", "Email": "E-mail", "Existing Customer": "Postojeći Klijent", diff --git a/application/Espo/Modules/Crm/Resources/i18n/hu_HU/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/hu_HU/Lead.json index 44f50a0383..ff64cc2a48 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/hu_HU/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/hu_HU/Lead.json @@ -50,7 +50,6 @@ "Dead": "Halott" }, "source": { - "": "Egyik sem", "Call": "Hívás", "Existing Customer": "A meglévő ügyfelek", "Public Relations": "Közkapcsolatok", diff --git a/application/Espo/Modules/Crm/Resources/i18n/id_ID/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/id_ID/Lead.json index 46cd82b1dc..e9f190c9be 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/id_ID/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/id_ID/Lead.json @@ -43,7 +43,6 @@ "Dead": "Mati" }, "source": { - "": "tak satupun", "Call": "Panggilan", "Email": "E-mail", "Existing Customer": "Pelanggan yang ada", diff --git a/application/Espo/Modules/Crm/Resources/i18n/it_IT/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/it_IT/Lead.json index cc68b51333..3ef86dd04c 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/it_IT/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/it_IT/Lead.json @@ -49,7 +49,6 @@ "Dead": "Fuori uso" }, "source": { - "": "Nessuno", "Call": "Chiamata", "Existing Customer": "Cliente esistente", "Public Relations": "Pubbliche relazioni", diff --git a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Account.json b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Account.json index bd6b852513..adbafec74e 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Account.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Account.json @@ -14,7 +14,7 @@ "campaign": "Kampanija", "targetLists": "Adresatų sarašai", "targetList": "Adresatų sarašas", - "originalLead": "Originalus švinas", + "originalLead": "Pirminis Potencialus klientas", "contactIsInactive": "Neaktyvus" }, "links": { @@ -30,7 +30,8 @@ "campaignLogRecords": "Kampanijos žurnalas", "campaign": "Kampanija", "portalUsers": "Portalo vartotojai", - "originalLead": "Originalus švinas" + "originalLead": "Pirminis Potencialus klientas", + "contactsPrimary": "Kontaktai (pagrindiniai)" }, "options": { "type": { diff --git a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Email.json b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Email.json index b3df28cb13..9e3db2ea82 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Email.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Email.json @@ -6,5 +6,8 @@ "Create Case": "Sukurti atvejį", "Add to Contact": "Pridėti prie kontaktų", "Add to Lead": "Pridėti prie švino" + }, + "fields": { + "tasks": "Užduotys" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/EmailQueueItem.json b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/EmailQueueItem.json index 9bc855233a..3c184d1577 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/EmailQueueItem.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/EmailQueueItem.json @@ -6,12 +6,12 @@ "sentAt": "Išsiuntimo data", "attemptCount": "Bandymai", "emailAddress": "El. pašto adresas", - "massEmail": "Masinis el. Paštas", + "massEmail": "Masinis el. laiškas", "isTest": "Testuojama" }, "links": { "target": "Adresatas", - "massEmail": "Masinis el. Paštas" + "massEmail": "Masinis el. laiškas" }, "options": { "status": { diff --git a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Global.json b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Global.json index 4d8daaccc1..df2584c5e0 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Global.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Global.json @@ -30,7 +30,7 @@ "DocumentFolder": "Dokumento aplankas", "Campaign": "Kampanija", "TargetList": "Adresatų sarašas", - "MassEmail": "Masinis el. Paštas", + "MassEmail": "Masinis el. laiškas", "EmailQueueItem": "Siųsti eilės elementą", "CampaignTrackingUrl": "Stebėjiimo URL", "Activities": "Veikla", diff --git a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Lead.json index 286ebf4918..e9224cdc47 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Lead.json @@ -52,7 +52,6 @@ "Dead": "Numarintas" }, "source": { - "": "Joks", "Call": "Skambutis", "Email": "El. paštas", "Existing Customer": "Egzistuojantis klientas", diff --git a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Meeting.json b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Meeting.json index b6a5a75d1c..bfd312b746 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Meeting.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Meeting.json @@ -16,7 +16,8 @@ "dateStartDate": "Data Pradžia (visą dieną)", "dateEndDate": "Data Pabaiga (visą dieną)", "isAllDay": "Ar visą dieną", - "Acceptance": "Priėmimas" + "Acceptance": "Priėmimas", + "sourceEmail": "Šaltinis El. paštas" }, "options": { "status": { diff --git a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Opportunity.json b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Opportunity.json index 8835155206..4e0b808d90 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Opportunity.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Opportunity.json @@ -13,7 +13,7 @@ "amountConverted": "Suma (konvertuota)", "amountWeightedConverted": "Pasverta suma", "campaign": "Kampanija", - "originalLead": "Originalus švinas", + "originalLead": "Pirminis Potencialus klientas", "amountCurrency": "Valiutos suma", "contactRole": "Kontakto vaidmuo", "lastStage": "Paskutinis etapas", @@ -23,7 +23,7 @@ "contacts": "Kontaktai", "documents": "Dokumentai", "campaign": "Kampanija", - "originalLead": "Originalus švinas", + "originalLead": "Pirminis Potencialus klientas", "contact": "Kontaktinis asmuo (pagrindinis)" }, "options": { diff --git a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Task.json b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Task.json index c3556dad5b..b1bb64ce0e 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Task.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lt_LT/Task.json @@ -19,7 +19,8 @@ "links": { "attachments": "Prisegtukai", "account": "Paskyra", - "contact": "Kontaktai" + "contact": "Kontaktai", + "email": "El. paštas" }, "options": { "status": { @@ -47,5 +48,8 @@ "todays": "Šiandienos", "overdue": "Vėluoja", "deferred": "Atidėta" + }, + "nameOptions": { + "replyToEmail": "Atsakyti į el. laišką" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Account.json b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Account.json index e7899dedd8..45f26abce3 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Account.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Account.json @@ -30,7 +30,8 @@ "campaignLogRecords": "Kampaņu reģistri", "campaign": "Kampaņa", "portalUsers": "Portāla lietotāji", - "originalLead": "Oriģinālais potenciālā klienta ieraksts" + "originalLead": "Oriģinālais potenciālā klienta ieraksts", + "contactsPrimary": "Kontakti (primārie)" }, "options": { "type": { diff --git a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/CampaignLogRecord.json b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/CampaignLogRecord.json index b94fe54fee..2c4036a6b3 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/CampaignLogRecord.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/CampaignLogRecord.json @@ -7,13 +7,13 @@ "parent": "Mērķa adresāti", "object": "Objekts", "application": "Lietotnes", - "queueItem": "Ielikt vienumu rindā", + "queueItem": "Ielikt pozīciju rindā", "stringData": "Virknes dati", "stringAdditionalData": "Virknes papildu dati", "isTest": "Ir tests" }, "links": { - "queueItem": "Ielikt vienumu rindā", + "queueItem": "Ielikt pozīciju rindā", "parent": "Primārais elements", "object": "Objekts", "campaign": "Kampaņa" diff --git a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Email.json b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Email.json index ff34018fa2..028171e0d0 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Email.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Email.json @@ -6,5 +6,8 @@ "Create Case": "Izveidot lietu", "Add to Contact": "Pievienot kontaktiem", "Add to Lead": "Pievienot potenciālajiem klientiem" + }, + "fields": { + "tasks": "Uzdevumi" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/EmailQueueItem.json b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/EmailQueueItem.json index 25a78296c3..ab3f5165a1 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/EmailQueueItem.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/EmailQueueItem.json @@ -1,6 +1,6 @@ { "fields": { - "name": "Vārds", + "name": "Nosaukums", "status": "Statuss", "target": "Mērķa adresāts", "sentAt": "Datums nosūtīts", diff --git a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Global.json b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Global.json index b7d13b3ded..1ae53dfa88 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Global.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Global.json @@ -31,7 +31,7 @@ "Campaign": "Kampaņa", "TargetList": "Mērķa saraksts", "MassEmail": "Masveida e-pasts", - "EmailQueueItem": "E-pasta rindas vienums", + "EmailQueueItem": "E-pasta rindas pozīcija", "CampaignTrackingUrl": "Sekojamais vietrādis URL", "Activities": "Aktivitātes", "KnowledgeBaseArticle": "Zināšanu bāzes raksts", @@ -54,7 +54,7 @@ "Campaign": "Kampaņas", "TargetList": "Mērķa saraksts", "MassEmail": "Masveida e-pasti", - "EmailQueueItem": "E-pasta rindu vienumi", + "EmailQueueItem": "E-pasta rindas pozīcijas", "CampaignTrackingUrl": "Sekojamie vietrāži URL", "Activities": "Aktivitātes", "KnowledgeBaseArticle": "Zināšanu bāze", diff --git a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Lead.json index d749e353bf..d64cd2f193 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Lead.json @@ -52,7 +52,6 @@ "Dead": "Norakstīts" }, "source": { - "": "Nav", "Call": "Zvanīt", "Email": "E-pasts", "Existing Customer": "Esošs klients", diff --git a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/MassEmail.json b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/MassEmail.json index 349ab0666d..8887d57f81 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/MassEmail.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/MassEmail.json @@ -19,7 +19,7 @@ "links": { "targetLists": "Mērķa adresātu saraksts", "excludingTargetLists": "Neiekļaujamo mērķa adresātu saraksts", - "queueItems": "Likt vienumus rindā", + "queueItems": "Likt pozīciju rindā", "campaign": "Kampaņa", "emailTemplate": "E-pasta veidne", "inboundEmail": "E-pasta konts" diff --git a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Meeting.json b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Meeting.json index 5bda0522f2..d32efa8e6e 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Meeting.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Meeting.json @@ -16,7 +16,8 @@ "dateStartDate": "Datums Sākums (visu dienu)", "dateEndDate": "Beigu datums (visu dienu)", "isAllDay": "Vai ir visas dienas", - "Acceptance": "Pieņemšana" + "Acceptance": "Pieņemšana", + "sourceEmail": "Avots E-pasts" }, "options": { "status": { diff --git a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Task.json b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Task.json index 1f51d860ff..b05173df41 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Task.json +++ b/application/Espo/Modules/Crm/Resources/i18n/lv_LV/Task.json @@ -19,7 +19,8 @@ "links": { "attachments": "Pielikumi", "account": "Konts", - "contact": "Kontakts" + "contact": "Kontakts", + "email": "E-pasts" }, "options": { "status": { @@ -47,5 +48,8 @@ "todays": "Šīsdienas", "overdue": "Nokavēts", "deferred": "Atlikts" + }, + "nameOptions": { + "replyToEmail": "Atbildēt uz e-pastu" } } \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/i18n/nb_NO/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/nb_NO/Lead.json index 83db2b0c12..97f8bde46c 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/nb_NO/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/nb_NO/Lead.json @@ -46,7 +46,6 @@ "Dead": "Død" }, "source": { - "": "Ingen", "Call": "Samtale", "Email": "Epost", "Existing Customer": "Eksisterende kunde", diff --git a/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Lead.json index e45aa3380b..5f231eecd6 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/nl_NL/Lead.json @@ -48,7 +48,6 @@ "Dead": "Vervallen" }, "source": { - "": "Geen", "Call": "Gesprek", "Email": "E-mail", "Existing Customer": "Bestaande klant", diff --git a/application/Espo/Modules/Crm/Resources/i18n/pl_PL/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/pl_PL/Lead.json index c90351df44..e457312d27 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/pl_PL/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/pl_PL/Lead.json @@ -51,7 +51,6 @@ "Dead": "Martwy" }, "source": { - "": "Brak", "Call": "Rozmowa", "Email": "E-mail", "Existing Customer": "Istniejący klient", diff --git a/application/Espo/Modules/Crm/Resources/i18n/ro_RO/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/ro_RO/Lead.json index 3483349978..3176a5632a 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/ro_RO/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/ro_RO/Lead.json @@ -48,7 +48,6 @@ "Dead": "Inactiv" }, "source": { - "": "Nici unul", "Call": "Apel", "Existing Customer": "Client Existent", "Partner": "Partener", diff --git a/application/Espo/Modules/Crm/Resources/i18n/ru_RU/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/ru_RU/Lead.json index bd4889b138..809cae2b49 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/ru_RU/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/ru_RU/Lead.json @@ -52,7 +52,6 @@ "Dead": "Мертв" }, "source": { - "": "Нет", "Call": "Звонок", "Email": "Эл. письмо", "Existing Customer": "Существующий клиент", diff --git a/application/Espo/Modules/Crm/Resources/i18n/sk_SK/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/sk_SK/Lead.json index a3b5028d88..324ce0357f 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/sk_SK/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/sk_SK/Lead.json @@ -50,7 +50,6 @@ "Dead": "Mŕtvy" }, "source": { - "": "Žiadny", "Call": "Hovor", "Existing Customer": "Existujúci zákazník", "Public Relations": "Vzťahy s verejnosťou", diff --git a/application/Espo/Modules/Crm/Resources/i18n/sr_RS/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/sr_RS/Lead.json index fb561bf8b9..8698c441f1 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/sr_RS/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/sr_RS/Lead.json @@ -50,7 +50,6 @@ "Dead": "Mrtav" }, "source": { - "": "Nema", "Call": "Poziv", "Email": "E-mail", "Existing Customer": "Postojeći kupac", diff --git a/application/Espo/Modules/Crm/Resources/i18n/sv_SE/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/sv_SE/Lead.json index 498beeb051..76a0607c74 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/sv_SE/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/sv_SE/Lead.json @@ -51,7 +51,6 @@ "Dead": "Död" }, "source": { - "": "Inga", "Call": "Samtal", "Email": "E-post", "Existing Customer": "Existerande kund", diff --git a/application/Espo/Modules/Crm/Resources/i18n/th_TH/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/th_TH/Lead.json index d463759569..6f61275790 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/th_TH/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/th_TH/Lead.json @@ -52,7 +52,6 @@ "Dead": "ไม่เคลื่อนไหว" }, "source": { - "": "ไม่มี", "Call": "โทร", "Email": "อีเมล์", "Existing Customer": "ลูกค้าปัจจุบัน", diff --git a/application/Espo/Modules/Crm/Resources/i18n/tr_TR/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/tr_TR/Lead.json index 754896952e..e3872f3082 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/tr_TR/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/tr_TR/Lead.json @@ -48,7 +48,6 @@ "Dead": "Ölü" }, "source": { - "": "Hiçbiri ", "Call": "Arama", "Email": "Eposta", "Existing Customer": "Varolan Müşteri", diff --git a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Lead.json index 656a0b2131..1055958e3d 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Lead.json @@ -52,7 +52,6 @@ "Dead": "Мертвий" }, "source": { - "": "Немає", "Call": "Дзвінок", "Email": "Емейл", "Existing Customer": "Існуючий замовник", diff --git a/application/Espo/Modules/Crm/Resources/i18n/vi_VN/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/vi_VN/Lead.json index 5b3d46adc4..b2c8827754 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/vi_VN/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/vi_VN/Lead.json @@ -42,7 +42,6 @@ "Dead": "Chết" }, "source": { - "": "trống", "Call": "Gọi", "Existing Customer": "Khách hàng hiện có", "Partner": "Đối tác", diff --git a/application/Espo/Modules/Crm/Resources/i18n/zh_CN/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/zh_CN/Lead.json index e355f35fac..6600e8d5fb 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/zh_CN/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/zh_CN/Lead.json @@ -51,7 +51,6 @@ "Dead": "没机会" }, "source": { - "": "无", "Call": "通话", "Email": "电子邮件", "Existing Customer": "现有客户", diff --git a/application/Espo/Modules/Crm/Resources/i18n/zh_TW/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/zh_TW/Lead.json index 86ed7f3541..b1b0fdf66f 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/zh_TW/Lead.json +++ b/application/Espo/Modules/Crm/Resources/i18n/zh_TW/Lead.json @@ -52,7 +52,6 @@ "Dead": "無結果" }, "source": { - "": "無結果", "Call": "通話", "Email": "電子郵件", "Existing Customer": "現有客戶", diff --git a/application/Espo/Modules/Crm/Services/CaseObj.php b/application/Espo/Modules/Crm/Services/CaseObj.php index 5df1d76b9c..61a262935d 100644 --- a/application/Espo/Modules/Crm/Services/CaseObj.php +++ b/application/Espo/Modules/Crm/Services/CaseObj.php @@ -171,7 +171,7 @@ class CaseObj extends Record */ protected function getLeadEmailAddress(CaseEntity $entity, array $dataList): ?stdClass { - $lead = $this->entityManager->getEntity('Account', $entity->get('leadId')); + $lead = $this->entityManager->getEntity('Lead', $entity->get('leadId')); if (!$lead || !$lead->get('emailAddress')) { return null; diff --git a/application/Espo/Repositories/LayoutSet.php b/application/Espo/Repositories/LayoutSet.php index 84793c14f6..9402223226 100644 --- a/application/Espo/Repositories/LayoutSet.php +++ b/application/Espo/Repositories/LayoutSet.php @@ -64,6 +64,8 @@ class LayoutSet extends \Espo\Core\Repositories\Database protected function afterRemove(Entity $entity, array $options = []) { + parent::afterRemove($entity); + $layoutList = $this->entityManager ->getRDBRepository('LayoutRecord') ->where([ diff --git a/application/Espo/Resources/i18n/bg_BG/ActionHistoryRecord.json b/application/Espo/Resources/i18n/bg_BG/ActionHistoryRecord.json index a6aca6cd48..6f183a7486 100644 --- a/application/Espo/Resources/i18n/bg_BG/ActionHistoryRecord.json +++ b/application/Espo/Resources/i18n/bg_BG/ActionHistoryRecord.json @@ -1,29 +1,30 @@ { "fields": { - "user": "потребител", - "action": "действие", + "user": "Потребител", + "action": "Действие", "createdAt": "Дата", "target": "Цел", - "authToken": "Означението за удостоверяване", + "targetType": "Тип обект", + "authToken": "Токен за автентификация", "ipAddress": "IP адрес", - "authLogRecord": "Упълномощаване Вход Record", + "authLogRecord": "История на влизанията", "userType": "Тип потребител" }, "links": { - "authToken": "Означението за удостоверяване", - "user": "потребител", + "authToken": "Токен за автентификация", + "user": "Потребител", "target": "Цел", - "authLogRecord": "Упълномощаване Вход Record" + "authLogRecord": "История на влизанията" }, "presetFilters": { - "onlyMy": "Само ми" + "onlyMy": "Само мои" }, "options": { "action": { - "read": "Прочети", - "update": "Актуализация", - "delete": "Изтрий", - "create": "създавам" + "read": "Прочете", + "update": "Редактира", + "delete": "Изтри", + "create": "Създаде" } } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Admin.json b/application/Espo/Resources/i18n/bg_BG/Admin.json index 4485bbe1a1..ccbda237c1 100644 --- a/application/Espo/Resources/i18n/bg_BG/Admin.json +++ b/application/Espo/Resources/i18n/bg_BG/Admin.json @@ -1,254 +1,271 @@ { "labels": { - "Enabled": "Пуснато", - "Disabled": "Деактивиран", + "Enabled": "Активирано", + "Disabled": "Деактивирано", "System": "Система", "Users": "Потребители", "Email": "Електронна поща", "Data": "Данни", "Customization": "Персонализиране", - "Available Fields": "Достъпни полета", + "Available Fields": "Налични полета", "Layout": "Оформление", - "Entity Manager": "Управител на субекти\n", + "Entity Manager": "Мениджър на обекти", "Add Panel": "Добавяне на панел", "Add Field": "Добавяне на поле", "Settings": "Настройки", "Scheduled Jobs": "Планирани задачи", - "Upgrade": "Подобряване на", - "Clear Cache": "Изтрий кеш-памет", - "Teams": "Отдели ", + "Upgrade": "Обновяване", + "Clear Cache": "Изтрий кеша", + "Rebuild": "Оптимизиране", + "Teams": "Отдели", "Roles": "Роли", "Portal": "Портал", "Portals": "Портали", - "Portal Roles": "Portal Роли", + "Portal Roles": "Роли в порталите", "Outbound Emails": "Изходящи имейли", "Group Email Accounts": "Групови имейл акаунти", "Personal Email Accounts": "Лични имейл акаунти", "Inbound Emails": "Входящи имейли", "Email Templates": "Шаблони за имейли", - "Import": "Внасяне", - "Layout Manager": "Шаблон на Мениджъра", + "Import": "Импортиране", + "Layout Manager": "Управление на оформлението", "User Interface": "Потребителски интерфейс", - "Auth Tokens": "Удостоверения за достоверност", - "Authentication": "заверка", - "Currency": "Валута", + "Auth Tokens": "Токени за удостоверяване", + "Authentication": "Аутентификация", + "Currency": "Валути", "Integrations": "Интеграции", "Extensions": "Разширения", - "Upload": "Качи ", + "Upload": "Качване", "Installing...": "Инсталира се ...", - "Upgrading...": "Надгражда се ...", - "Upgraded successfully": "Надстройката е успешна", + "Upgrading...": "Обновява се ...", + "Upgraded successfully": "Обновяването е успешно", "Installed successfully": "Инсталацията е успешна", - "Ready for upgrade": "Готови ли сте за надстройката?", - "Run Upgrade": "Изпълнение на надстройката", - "Install": "Инсталирай", + "Ready for upgrade": "Готови ли сте за обновяване?", + "Run Upgrade": "Обновяване", + "Install": "Инсталиране", "Ready for installation": "Готов за инсталиране", "Uninstalling...": "Деинсталира се ...", "Uninstalled": "Деинсталиран", "Create Entity": "Създаване на обект", "Edit Entity": "Редактиране на обект", - "Create Link": "Създаване на връзка", - "Edit Link": "Редактиране на връзка ", - "Notifications": "Съобщения", + "Create Link": "Създаване на релация", + "Edit Link": "Редактиране на релация", + "Notifications": "Известия", "Jobs": "Задачи", - "Reset to Default": "Възстанови до първоначалното", - "Email Filters": "Имайл филтри", - "Portal Users": "потребители на портала", - "Action History": "История за действие", - "Label Manager": "мениджър Label", - "Auth Log": "упълномощаване Вход", - "Lead Capture": "Водещ Capture", - "Attachments": "Прикачени", + "Reset to Default": "Възстановяване по подразбиране", + "Email Filters": "Имейл филтри", + "Portal Users": "Потребители на портала", + "Action History": "История за действия", + "Label Manager": "Управление на преводи", + "Auth Log": "История на влизанията", + "Lead Capture": "Форма за потенциални продажби", + "Attachments": "Прикачени файлове", "API Users": "API Потребители", - "Template Manager": "Шаблон мениджър", + "Template Manager": "Управление на шаблони", "System Requirements": "Системни изисквания", "PHP Settings": "PHP настройки", "Database Settings": "Настройки на бази данни", - "Permissions": "Разрешения", - "Success": "успех", - "is recommended": "се препоръчва", - "extension is missing": "разширение липсва", + "Permissions": "Права", + "Success": "Успешно", + "Fail": "Неуспешно", + "is recommended": "е препоръчително", + "extension is missing": "разширението липсва", "PDF Templates": "PDF шаблони", + "Dashboard Templates": "Шаблони за начално табло", "Email Addresses": "Имейл адреси", - "Phone Numbers": "Телефонни номера" + "Phone Numbers": "Телефонни номера", + "Layout Sets": "Сетове от оформления", + "Messaging": "Съобщения", + "Misc": "Разни", + "Job Settings": "Настройки на системни задачи", + "Configuration Instructions": "Инструкции за конфигуриране", + "Formula Sandbox": "Тестър за формули" }, "layouts": { - "list": "Списък", + "list": "Лист", "detail": "Детайли", - "listSmall": "Списък(Малък)", + "listSmall": "Лист(Малък)", "detailSmall": "Детайли(Малък)", - "filters": "Търсене на филтри", - "massUpdate": "Актуализиране на всичко", - "relationships": "Връзка панели", - "sidePanelsDetail": "Страничните панели (подробности)", - "sidePanelsEdit": "Страничните панели (Редактиране)", - "sidePanelsDetailSmall": "Страничните панели (Подробности Small)", - "sidePanelsEditSmall": "Страничните панели (Edit Small)", - "detailPortal": "Подробности (портал)", - "detailSmallPortal": "Подробности (Small, портал)", - "listSmallPortal": "Списък (Small, портал)", - "listPortal": "Списък (Portal)", - "relationshipsPortal": "Връзка панели (Portal)" + "filters": "Филтри за търсене", + "massUpdate": "Масово обновяване", + "relationships": "Панели с релации", + "sidePanelsDetail": "Странични панели (Detail)", + "sidePanelsEdit": "Странични панели (Edit)", + "sidePanelsDetailSmall": "Странични панели (Detail small)", + "sidePanelsEditSmall": "Странични панели (Edit Small)", + "defaultSidePanel": "Полета в страничния панел", + "bottomPanelsDetail": "Долни панели", + "bottomPanelsEdit": "Долни панели (Edit)", + "bottomPanelsDetailSmall": "Долни панели (Detail Small)", + "bottomPanelsEditSmall": "Долни панели (Edit Small)" }, "fieldTypes": { "address": "Адрес", - "foreign": "Чуждестранен", - "duration": "продължителност", + "foreign": "Външно поле", + "duration": "Продължителност", "password": "Парола", - "personName": "име на лицето", + "personName": "Име на лицето", "autoincrement": "Автоматично увеличаване", - "bool": "Булева", "currency": "Валута", "date": "Дата", - "email": "електронна поща", - "float": "поплавък", - "link": "връзка", - "linkMultiple": "линк Множествена", - "linkParent": "линк майка", + "email": "Електронна поща", "phone": "Телефон", "text": "Текст", "varchar": "VARCHAR", "file": "Файл", "image": "Снимка", - "attachmentMultiple": "Множествено Качване", - "rangeCurrency": "Range валути", + "attachmentMultiple": "Множество файлове", "wysiwyg": "WYSIWYG", - "map": "карта", + "map": "Карта", "currencyConverted": "Валута (изчислена)", - "colorpicker": "Средство за избиране на цвят", - "int": "цяло число", + "colorpicker": "Избиране на цвят", + "int": "Цяло число", "number": "Номер (автоматично увеличение)", - "datetime": "Време за среща", - "datetimeOptional": "Дата / Date-Time", - "checklist": "списък за проверка", - "linkOne": "Връзка Един от", + "datetime": "Дата-час", + "datetimeOptional": "Дата / Дата-час", + "checklist": "Чеклист", "barcode": "Баркод" }, "fields": { "type": "Тип", - "name": "име", - "label": "етикет", - "required": "длъжен", + "name": "Име", + "label": "Наименование", + "required": "Задължителен", "default": "По подразбиране", "maxLength": "Максимална дължина", - "options": "Настроики", + "options": "Опции за избиране", "after": "След (поле)", - "before": "Преди (област)", - "link": "връзка", - "field": "поле", - "translation": "превод", - "previewSize": "Визуализация на размера", - "defaultType": "По подразбиране Вид", - "seeMoreDisabled": "Изключване Текст Cut", - "entityList": "Entity Списък", - "isSorted": "Се сортира (по азбучен ред)", - "audited": "одитирания", + "before": "Преди (поле)", + "link": "Релация", + "field": "Поле", + "min": "Минимум", + "max": "Максимум", + "translation": "Превод", + "previewSize": "Размер на preview", + "defaultType": "Тип по подразбиране", + "seeMoreDisabled": "Деактивиране на изрязването на текста", + "entityList": "Списък с обекти", + "isSorted": "Да се сортира (по азбучен ред)", + "audited": "Одитирано поле", + "trim": "Ограничаване", "height": "Височина (пиксела)", - "minHeight": "Мин Височина (пиксела)", - "provider": "доставчик", + "minHeight": "Мин. височина (px)", + "provider": "Доставчик", "typeList": "Вид Списък", "rows": "Брой редове на текстово поле", - "lengthOfCut": "Дължина на рязане", + "lengthOfCut": "Дължина на ограничаване", "sourceList": "Източник Списък", - "tooltipText": "Подсказка Текст", - "prefix": "префикс", - "nextNumber": "Следваща Номер", - "padLength": "Pad Дължина", + "tooltipText": "Текст на подсказка", + "prefix": "Префикс", + "nextNumber": "Следващ номер", + "padLength": "Дължина на числото (бр. символи)", "disableFormatting": "Изключване на форматиране", - "dynamicLogicVisible": "Условия правят поле видима", - "dynamicLogicReadOnly": "Условия правят поле само за четене", - "dynamicLogicRequired": "Условия извършват необходимите поле", + "dynamicLogicVisible": "Условия, които правят полето видимо", + "dynamicLogicReadOnly": "Условия, които правят полето read-only", + "dynamicLogicRequired": "Условия, които правят полето задължително", "dynamicLogicOptions": "Условни опции", - "probabilityMap": "Етап Вероятности (%)", + "probabilityMap": "Етапни вероятности (%)", "readOnly": "Само за четене", - "noEmptyString": "Празен низ е позволено", + "noEmptyString": "Не се допуска празна стойност на полето", "maxFileSize": "Максимален размер на файла (Mb)", - "isPersonalData": "Дали на личните данни", - "useIframe": "Използвайте Iframe", - "useNumericFormat": "Използвайте Цифров формат", - "strip": "Лента", - "cutHeight": "Cut Височина (пиксели)", - "minuteStep": "минути Стъпка", - "inlineEditDisabled": "Изключване Редови", - "displayAsLabel": "Показване като Label", - "allowCustomOptions": "Позволете опции за персонализирано", - "maxCount": "Макс т граф", - "displayRawText": "Дисплей суров текст (не евтино)", - "notActualOptions": "А не действителни Опции", - "accept": "приемам", - "displayAsList": "Посочете както Списък", - "viewMap": "Вижте Карта Button", - "codeType": "Код Вид", - "lastChar": "Последно Character" + "isPersonalData": "Това са лични данни", + "useIframe": "Използване на iframe", + "useNumericFormat": "Използване на числов формат", + "strip": "Съкращаване", + "cutHeight": "Височина на изрязане (px)", + "minuteStep": "Стъпки за минути", + "inlineEditDisabled": "Деактивиране на Inline редактиране", + "displayAsLabel": "Показване като етикет", + "allowCustomOptions": "Разрешаване на персонализирани опции", + "maxCount": "Максимален брой артикули", + "displayRawText": "Показване на суров текст (без форматиране)", + "notActualOptions": "Не са реални опции", + "accept": "Приемане", + "displayAsList": "Показване като списък", + "viewMap": "Показване на бутон за карта", + "lastChar": "Последен знак", + "listPreviewSize": "Размер за визуализация на изображението (preview)", + "onlyDefaultCurrency": "Само валута по подразбиране", + "dynamicLogicInvalid": "Условия, които правят полето невалидно", + "conversionDisabled": "Деактивирайте преобразуването", + "decimalPlaces": "Десетични знаци" }, "messages": { - "selectEntityType": "Изберете вида субект в лявото меню.", - "selectUpgradePackage": "Изберете пакета за надстройване", - "selectLayout": "Изберете нужната оформление в лявото меню и да го редактирате.", - "selectExtensionPackage": "Изберете пакет удължаване", - "extensionInstalled": "Удължаване {име} {} версия е инсталирана.", - "installExtension": "Удължаване {име} {версия} е готова за монтаж.", - "upgradeBackup": "Ние препоръчваме да направите резервно копие на вашите файлове и данни EspoCRM преди надстройката.", - "thousandSeparatorEqualsDecimalMark": "Хилядите разделителни характер не може да бъде същата като знак след десетичната точка.", + "selectEntityType": "Изберете вида обект от лявото меню.", + "selectUpgradePackage": "Изберете архив, с който да направите обновяване", + "selectLayout": "Изберете нужното оформление от лявото меню и го редактирайте.", + "selectExtensionPackage": "Изберете архив, с който да качите разширението", + "extensionInstalled": "Разширението {name} {version} е успешно инсталирано.", + "installExtension": "Разширението {name} {version} е готово за инсталиране.", + "upgradeBackup": "Препоръчваме да направите резервно копие на вашите EspoCRM файлове и данни преди обновяване.", + "thousandSeparatorEqualsDecimalMark": "Знакът за разделител на хилядите не може да бъде същият като знака на десетичния знак.", "userHasNoEmailAddress": "Потребителят няма имейл адрес.", - "uninstallConfirmation": "Сигурни ли сте, искате да деинсталирате разширението?", - "cronIsNotConfigured": "Планирани работни места не се показват. Следователно входящи имейли, уведомления и напомняния не работят. Моля, следвайте инструкциите [] (https://www.espocrm.com/documentation/administration/server-configuration/#user-content-setup-a-crontab) до настройка на Cron работни места.", - "newExtensionVersionIsAvailable": "New {extensionName} версия {latestVersion} е на разположение.", - "upgradeVersion": "EspoCRM ще бъде подобрена версия ** {версия} **. Моля, бъдете търпеливи, тъй като това може да отнеме известно време.", - "upgradeDone": "EspoCRM е подобрена версия ** {версия} **.", - "downloadUpgradePackage": "Изтегляне ъпгрейд пакет (и) [тук] ({URL}).", - "upgradeInfo": "Проверете [документация] ({URL}) за това как да обновите своя EspoCRM инстанция.", - "upgradeRecommendation": "Този начин на модернизация не се препоръчва. По-добре е за ъпгрейд от CLI.", - "newVersionIsAvailable": "New EspoCRM версия {latestVersion} е на разположение. Моля, следвайте инструкциите [] (https://www.espocrm.com/documentation/administration/upgrading/) за надграждане на вашата инстанция." + "uninstallConfirmation": "Наистина ли искате да деинсталирате разширението?", + "cronIsNotConfigured": "Планираните задачи не се изпълняват. Следователно входящите имейли, известията и напомнянията не работят. Моля, следвайте [инструкциите](https://www.espocrm.com/documentation/administration/server-configuration/#user-content-setup-a-crontab), за да настроите cron задача.", + "newExtensionVersionIsAvailable": "Налична е нова версия за {extensionName} - {latestVersion}.", + "upgradeVersion": "EspoCRM ще бъде надстроен до версия **{version}**. Моля, бъдете търпеливи, тъй като това може да отнеме известно време.", + "upgradeDone": "EspoCRM е обновен до версия **{version}**.", + "downloadUpgradePackage": "Изтегляне на обновления от [тук]({url}).", + "upgradeInfo": "Проверете [документацията]({url}) за това как да обновите своята инстанция на EspoCRM.", + "upgradeRecommendation": "Този начин на обновяване не се препоръчва. По-добре е да обновите от CLI.", + "newVersionIsAvailable": "Налична е нова версия на EspoCRM {latestVersion}. Моля, следвайте [инструкциите](https://www.espocrm.com/documentation/administration/upgrading/), за да обновите вашата инстанция.", + "formulaFunctions": "Още функции можете да намерите в [документацията]({documentationUrl}).", + "rebuildRequired": "Трябва да регенерирате кеша на системата от CLI." }, "descriptions": { - "settings": "Системни настройки на приложение.", - "scheduledJob": "Работа които се изпълняват от Cron.", - "upgrade": "Подобрете EspoCRM.", - "clearCache": "Изчистете всички задния кеш.", - "rebuild": "Rebuild бекенд и ясно кеш.", - "users": "управление на потребители.", - "teams": "управление на екипи.", - "roles": "управление на роли.", - "portals": "управление портали.", - "portalRoles": "Роли за портал.", - "outboundEmails": "настройките на SMTP за изходящи писма.", - "groupEmailAccounts": "Група IMAP имейл акаунти. Email внос и-мейл до дело.", - "personalEmailAccounts": "Потребители имейл акаунти.", + "settings": "Системни настройки на платформата.", + "scheduledJob": "Задачи, които се изпълняват от Cronjob", + "upgrade": "Обновяване на EspoCRM.", + "clearCache": "Изчистване на целия back-end кеш.", + "rebuild": "Регенериране на back-end кеша на системата.", + "users": "Управление на потребители и акаунти в системата.", + "teams": "Управление на екипи и отдели.", + "roles": "Управление на роли на потребителите.", + "portals": "Управление на външни портали към системата.", + "portalRoles": "Роли за потребителите на външни портали към системата.", + "outboundEmails": "SMTP настройки за изходящи имейли.", + "groupEmailAccounts": "Групови IMAP имейл акаунти. Управление на хелпдеск и тикетинг функционалности.", + "personalEmailAccounts": "Потребителски имейл акаунти.", "emailTemplates": "Шаблони за изходящи имейли.", "import": "Импортиране на данни от CSV файл.", - "layoutManager": "Персонализиране на оформления (списък, детайлни, редактиране, търсене, актуализиране на маса).", + "layoutManager": "Персонализиране на оформления (лист, детайли, редактиране, филтри за търсене, масови обновявания).", "userInterface": "Конфигуриране на UI.", - "authTokens": "Активни тентните сесии. IP адрес и дата на достъп.", - "authentication": "настройките за удостоверяване.", + "authTokens": "Активни сесии за удостоверяване. Информация за IP адрес и дата на последен достъп.", + "authentication": "Настройки за удостоверяване.", "currency": "Настройки на валута и цени.", - "extensions": "Инсталирате или деинсталирате разширения.", - "integrations": "Интеграция с услуги на трети страни.", - "notifications": "В приложенията и настройките за известия по имейл.", - "inboundEmails": "Настройки за входяща поща.", - "portalUsers": "Потребителите на портала.", - "entityManager": "Създаване и редактиране на потребителски организации. Управление на полета и взаимоотношения.", - "emailFilters": "Имейл съобщенията, които съответстват на зададения филтър няма да се импортират.", - "actionHistory": "Влезте от действията на потребителите.", - "labelManager": "Персонализиране на етикети за кандидатстване.", - "authLog": "Вход история.", - "leadCapture": "входни точки API за уеб-към-клиент.", + "extensions": "Инсталиране и премахване на разширения/плъгини.", + "integrations": "Интеграция с външни услуги.", + "notifications": "Настройки за известия и автоматични имейли в системата.", + "inboundEmails": "Настройки за входящи имейли.", + "portalUsers": "Потребители на портала.", + "entityManager": "Създавайте и редактирайте персонализирани обекти. Управление на полета, релации, формули и оформление.", + "emailFilters": "Имейл съобщенията, които отговарят на посочения филтър, няма да бъдат импортирани.", + "actionHistory": "Логове от действията на потребителите.", + "labelManager": "Управление на езици и текстове на форми и обекти.", + "authLog": "История на влизане и удостоверяване", + "leadCapture": "API параметри за Web-to-Lead форма.", "attachments": "Всички прикачени файлове, съхранявани в системата.", "templateManager": "Персонализиране на шаблонни съобщения.", "systemRequirements": "Системни изисквания за EspoCRM.", - "apiUsers": "Отделни потребители за целите на интеграция.", - "jobs": "Работа изпълняват задачи във фонов режим.", - "pdfTemplates": "Шаблони за отпечатване на PDF.", - "webhooks": "Управление webhooks.", - "dashboardTemplates": "Внедряване на табла за управление на потребители.", - "emailAddresses": "Всички emailes адреси, съхранявани в системата.", - "phoneNumbers": "Всички телефонни номера, съхранени в системата." + "apiUsers": "Отделяне на потребители за целите на интеграцията.", + "jobs": "Задачите изпълняват други задачи във фонов режим.", + "pdfTemplates": "Шаблони за генериране и отпечатване на PDF.", + "webhooks": "Управление на Webhooks.", + "dashboardTemplates": "Прилагане на шаблон върху потребители.", + "phoneNumbers": "Всички телефонни номера, съхранени в системата.", + "emailAddresses": "Всички имейл адреси, съхранявани в системата.", + "layoutSets": "Колекции от оформления, които могат да бъдат приложени на отдели, потребители или портали.", + "jobsSettings": "Настройки за обработка на системни задачи. Задачите изпълняват други действия във фонов режим.", + "sms": "SMS настройки.", + "formulaSandbox": "Може да пишете и тествате скриптове за формули, преди да ги приложите в системата." }, "options": { "previewSize": { + "x-small": "Много малък", "small": "Малък", "medium": "Среден", - "large": "Голям" + "large": "Голям", + "": "По подразбиране" } }, "logicalOperators": { @@ -257,22 +274,29 @@ "not": "НЕ" }, "systemRequirements": { + "requiredPhpVersion": "PHP версия", "requiredMysqlVersion": "MySQL версия", + "host": "Сървър", "dbname": "Име на базата данни", - "user": "потребителско име", - "writable": "писане", - "readable": "четлив", + "user": "Потребителско име", "requiredMariadbVersion": "MariaDB версия" }, "templates": { "accessInfo": "Информация за достъп", - "accessInfoPortal": "Access Info за портали", - "assignment": "назначение", - "mention": "Споменавам", - "noteEmailReceived": "Забележка за което ще получи Email", - "notePost": "Забележка за публикация", - "notePostNoParent": "Забележка за публикация (без майка)", - "noteStatus": "Забележка за Актуализация на състоянието", - "passwordChangeLink": "Промяна на паролата за връзка" + "accessInfoPortal": "Информация за достъп до портали", + "assignment": "Назначение", + "mention": "Споменаване", + "notePost": "Бележка за публикация", + "notePostNoParent": "Бележка за публикация (без основен запис)", + "noteStatus": "Бележка за актуализация на статус", + "passwordChangeLink": "Връзка за промяна на паролата", + "noteEmailReceived": "Съобщение за получен имейл", + "twoFactorCode": "2FA код" + }, + "strings": { + "rebuildRequired": "Нужно е регенериране на кеша на системата" + }, + "keywords": { + "settings": "Система" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/ApiUser.json b/application/Espo/Resources/i18n/bg_BG/ApiUser.json index 9431140f3e..99a36a54d2 100644 --- a/application/Espo/Resources/i18n/bg_BG/ApiUser.json +++ b/application/Espo/Resources/i18n/bg_BG/ApiUser.json @@ -1,5 +1,5 @@ { "labels": { - "Create ApiUser": "Създаване на API на потребителя" + "Create ApiUser": "Създаване на потребител на API" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Attachment.json b/application/Espo/Resources/i18n/bg_BG/Attachment.json index 86eed75859..5c31a53ed7 100644 --- a/application/Espo/Resources/i18n/bg_BG/Attachment.json +++ b/application/Espo/Resources/i18n/bg_BG/Attachment.json @@ -1,27 +1,27 @@ { "insertFromSourceLabels": { - "Document": "Поставете документа" + "Document": "Качете документа" }, "fields": { - "role": "роля", + "role": "Роля", "related": "Свързани", - "file": "досие", + "file": "Файл", "type": "Тип", - "field": "поле", + "field": "Поле", "sourceId": "Източник ID", - "storage": "съхранение", + "storage": "Съхранение", "size": "Размер (байта)" }, "options": { "role": { "Attachment": "Прикачен файл", - "Inline Attachment": "Inline Приложение", - "Import File": "внос на файла", - "Export File": "износ на файла", - "Mass Pdf": "Маса Pdf" + "Inline Attachment": "Прикачен файл", + "Import File": "Импортиране на файл", + "Export File": "Експортиране на файл", + "Mass Pdf": "Масово експортиране на PDf" } }, "presetFilters": { - "orphan": "сирак" + "orphan": "Изоставени файлове" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/AuthLogRecord.json b/application/Espo/Resources/i18n/bg_BG/AuthLogRecord.json index 9adb7fc46f..a002ee638f 100644 --- a/application/Espo/Resources/i18n/bg_BG/AuthLogRecord.json +++ b/application/Espo/Resources/i18n/bg_BG/AuthLogRecord.json @@ -2,35 +2,35 @@ "fields": { "username": "Потребител", "ipAddress": "IP адрес", - "requestTime": "Заявка за времето", - "createdAt": "поискано", - "isDenied": "е отказан", - "denialReason": "отказ Причина", - "portal": "портал", - "user": "потребител", - "authToken": "Означението за удостоверяване Създадена", + "requestTime": "Дата и време на заявката", + "createdAt": "Дата и време на заявката", + "isDenied": "Е неуспешно", + "denialReason": "Причина за отказ", + "portal": "Портал", + "user": "Потребител", + "authToken": "Създаден токън за автентификация", "requestUrl": "URL адрес на заявката", - "requestMethod": "Заявка Метод", - "authTokenIsActive": "Означението за удостоверяване е активен", + "requestMethod": "Метод на заявката", + "authTokenIsActive": "Сесията е активна", "authenticationMethod": "Метод за удостоверяване" }, "links": { - "authToken": "Означението за удостоверяване Създадена", - "user": "потребител", - "portal": "портал", + "authToken": "Създаден токън за автентификация", + "user": "Потребител", + "portal": "Портал", "actionHistoryRecords": "История за действие" }, "presetFilters": { - "denied": "Отказан", - "accepted": "общоприет" + "denied": "Неуспешен", + "accepted": "Успешен" }, "options": { "denialReason": { "CREDENTIALS": "Невалидни идентификационни данни", - "INACTIVE_USER": "Inactive потребител", - "IS_PORTAL_USER": "портал на потребителя", - "IS_NOT_PORTAL_USER": "Не портал на потребителя", - "USER_IS_NOT_IN_PORTAL": "Потребителят не е свързан с портала" + "INACTIVE_USER": "Деактивиран потребител", + "IS_PORTAL_USER": "Потребителят е към външен портал", + "IS_NOT_PORTAL_USER": "Потребителят не е към външен портал", + "USER_IS_NOT_IN_PORTAL": "Потребителят не е свързан с този портал" } } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/AuthToken.json b/application/Espo/Resources/i18n/bg_BG/AuthToken.json index a23490195b..d0632eb2db 100644 --- a/application/Espo/Resources/i18n/bg_BG/AuthToken.json +++ b/application/Espo/Resources/i18n/bg_BG/AuthToken.json @@ -1,23 +1,23 @@ { "fields": { - "user": "потребител", + "user": "Потребител", "ipAddress": "IP адрес", - "lastAccess": "Дата Последен достъп", - "createdAt": "Вход Дата", - "isActive": "е активен", - "portal": "портал" + "lastAccess": "Дата на последен достъп", + "createdAt": "Дата на влизане", + "isActive": "Е активен", + "portal": "Портал" }, "links": { "actionHistoryRecords": "История за действие" }, "presetFilters": { "active": "Активен", - "inactive": "неактивен" + "inactive": "Неактивен" }, "labels": { - "Set Inactive": "Комплект Inactive" + "Set Inactive": "Задай като неактивен" }, "massActions": { - "setInactive": "Комплект Inactive" + "setInactive": "Задай като неактивен" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Currency.json b/application/Espo/Resources/i18n/bg_BG/Currency.json index 7dc33fed06..3cc254f2ba 100644 --- a/application/Espo/Resources/i18n/bg_BG/Currency.json +++ b/application/Espo/Resources/i18n/bg_BG/Currency.json @@ -1,59 +1,59 @@ { "names": { - "AED": "Обединените арабски емирства дирхам", - "AFN": "афганистанската афганистанец", + "AED": "Дирхам на Обединените арабски емирства", + "AFN": "Афганистански афгани", "ALL": "Албански лек", - "AMD": "арменски драм", - "ANG": "Холандия Antillean гулден", - "AOA": "анголския кванца", - "ARS": "аржентинско песо", - "AUD": "австралийски долар", + "AMD": "Арменски драм", + "ANG": "Нидерландски антилски гулден", + "AOA": "Анголска Кванза", + "ARS": "Аржентинско песо", + "AUD": "Австралийски долар", "AWG": "Aruban Флорин", - "AZN": "азербайджански манат", - "BAM": "Босна и Херцеговина конвертируема марка", + "AZN": "Азербайджански манат", + "BAM": "Конвертируема марка на Босна и Херцеговина", "BBD": "Барбадоски долар", "BDT": "Бангладешка така", - "BGN": "български лев", + "BGN": "Български лев", "BHD": "Бахрейн динар", "BIF": "Бурунди франк", "BMD": "Бермудски долар", - "BND": "Бруней Dollar", + "BND": "Бруней долар", "BOB": "Боливийско боливиано", "BOV": "боливийската Mvdol", - "BRL": "бразилски реал", + "BRL": "Бразилски реал", "BSD": "Бахамски долар", "BTN": "Бутан нгултрум", "BWP": "Ботсуанска Пула", "BYN": "Беларус рубла", "BZD": "Белиз долар", - "CAD": "канадски долар", - "CDF": "конгоанската франк", + "CAD": "Канадски долар", + "CDF": "Конгоанската франк", "CHE": "WIR Евро", - "CHF": "швейцарски франк", + "CHF": "Швейцарски франк", "CHW": "WIR франк", "CLF": "Чилийски разчетна единица (ЛТУ)", "CLP": "Чилийско песо", "CNH": "Китайски юана (офшорни)", - "CNY": "китайски юана", + "CNY": "Китайски юана", "COP": "Колумбийско песо", "COU": "Unit колумбийски реална стойност", "CRC": "Коста Рика Колон", - "CUC": "Кубинската Convertible Peso", + "CUC": "Кубинско конвертируемо песо", "CUP": "кубински песо", "CVE": "Кабо Верде ескудо", "CZK": "Чешка крона", "DJF": "Джибутски франк", - "DKK": "датска крона", + "DKK": "Датска крона", "DOP": "Доминиканската песо", - "DZD": "алжирски динар", - "EGP": "египетска лира", + "DZD": "Алжирски динар", + "EGP": "Египетска лира", "ERN": "Еритрея Nakfa", "ETB": "Етиопецът Birr", - "EUR": "евро", - "FJD": "фиджийски долар", + "EUR": "Евро", + "FJD": "Фиджийски долар", "FKP": "Фолкландска лира", "GBP": "Британски паунд", - "GEL": "грузинската Lari", + "GEL": "Грузински лари", "GHS": "Гана Cedi", "GIP": "Гибралтар Pound", "GMD": "Гамбия даласи", @@ -62,7 +62,7 @@ "GYD": "Guyanaese долар", "HKD": "Хонконгски долар", "HNL": "хондураски лемпира", - "HRK": "хърватска куна", + "HRK": "Хърватска куна", "HTG": "Хаити гурд", "HUF": "Унгарски форинт", "IDR": "индонезийска рупия", @@ -148,7 +148,7 @@ "UAH": "украинска гривна", "UGX": "Уганда Шилинг", "USD": "Американски долар", - "USN": "Щатски долара (на следващия ден)", + "USN": "Американски долар (на следващия ден)", "UYI": "Уругвайски песо (индексирани единици)", "UYU": "Уругвайски песо", "UZS": "узбекистански Som", diff --git a/application/Espo/Resources/i18n/bg_BG/DashboardTemplate.json b/application/Espo/Resources/i18n/bg_BG/DashboardTemplate.json index 598611e193..c84248de86 100644 --- a/application/Espo/Resources/i18n/bg_BG/DashboardTemplate.json +++ b/application/Espo/Resources/i18n/bg_BG/DashboardTemplate.json @@ -1,11 +1,11 @@ { "fields": { - "layout": "оформление", - "append": "Добавяне (не отстранявайте раздели потребителски мнения)" + "layout": "Оформление", + "append": "Добавяне (Не премахвай текущите на потребителя)" }, "labels": { - "Create DashboardTemplate": "Създаване на шаблони", - "Deploy to Users": "Разполагане на Потребителите", - "Deploy to Team": "Разполагане на отбора" + "Create DashboardTemplate": "Създаване на шаблон", + "Deploy to Users": "Прилагане на потребителите", + "Deploy to Team": "Прилагане на отдел" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/DashletOptions.json b/application/Espo/Resources/i18n/bg_BG/DashletOptions.json index 0071ea9f24..8aa08bc9f7 100644 --- a/application/Espo/Resources/i18n/bg_BG/DashletOptions.json +++ b/application/Espo/Resources/i18n/bg_BG/DashletOptions.json @@ -3,33 +3,35 @@ "title": "Заглавие", "dateFrom": "Дата от", "dateTo": "До дата", - "autorefreshInterval": "Автоматично опресняване интервал", - "isDoubleHeight": "Ръст 2x", - "mode": "вид", - "enabledScopeList": "Какво да се дисплей", + "autorefreshInterval": "Интервал за автоматично опресняване", + "displayRecords": "Показване на записи", + "isDoubleHeight": "Височина x2", + "mode": "Начин", + "enabledScopeList": "Какво да се показва", "users": "Потребители", "entityType": "Тип на обекта", - "primaryFilter": "Основно Филтър", + "primaryFilter": "Основен филтър", "boolFilterList": "Допълнителни филтри", - "sortBy": "Поръчка (област)", - "sortDirection": "Поръчка (посока)", - "expandedLayout": "оформление", - "dateFilter": "Дата Филтър", + "sortBy": "Сортиране (поле)", + "sortDirection": "Сортиране (посока)", + "expandedLayout": "Оформление", + "dateFilter": "Филтър за дата", "skipOwn": "Да не се показват собствени записи" }, "options": { "mode": { - "agendaWeek": "Седмица (програма)", - "basicWeek": "седмица", - "month": "месец", - "basicDay": "ден", - "agendaDay": "Ден (програма)" + "agendaWeek": "Седмица (календар)", + "basicWeek": "Седмица", + "month": "Месец", + "basicDay": "Ден", + "agendaDay": "Ден (календар)", + "timeline": "Хронология" } }, "messages": { - "selectEntityType": "Изберете типа на обекта в опции dashlet." + "selectEntityType": "Изберете типа на обекта в опциите." }, "tooltips": { - "skipOwn": "няма да бъдат показвани Действия, извършени от вашия потребителски акаунт." + "skipOwn": "Действията, извършени от вашия потребителски акаунт, няма да се показват.\n" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/DynamicLogic.json b/application/Espo/Resources/i18n/bg_BG/DynamicLogic.json index 572db721bb..05593f823d 100644 --- a/application/Espo/Resources/i18n/bg_BG/DynamicLogic.json +++ b/application/Espo/Resources/i18n/bg_BG/DynamicLogic.json @@ -5,24 +5,27 @@ "notEquals": "Не е равно на", "greaterThan": "По-голям от", "lessThan": "По-малко от", - "greaterThanOrEquals": "-Голямо или равно", + "greaterThanOrEquals": "По-голямо или равно на", "lessThanOrEquals": "По-малко или равно на", - "in": "в", + "in": "В", "notIn": "Не в", "inPast": "В минало", - "inFuture": "е готов за бъдещи", - "isToday": "днес", - "isTrue": "Истина е", - "isFalse": "е лъжа", - "isEmpty": "Празно е", - "isNotEmpty": "Не е празна", + "inFuture": "Е в бъдеще", + "isToday": "Днес", + "isTrue": "Да", + "isFalse": "Не", + "isEmpty": "Е празно", + "isNotEmpty": "Не е празно", "contains": "Съдържа", "has": "Съдържа", "notContains": "Не Съдържа", - "notHas": "Не Съдържа" + "notHas": "Не Съдържа", + "startsWith": "Започва с", + "endsWith": "Завършва с", + "matches": "Съвпада (regex)" } }, "labels": { - "Field": "поле" + "Field": "Поле" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Email.json b/application/Espo/Resources/i18n/bg_BG/Email.json index 09f5d53176..c06d5d2a2b 100644 --- a/application/Espo/Resources/i18n/bg_BG/Email.json +++ b/application/Espo/Resources/i18n/bg_BG/Email.json @@ -1,129 +1,144 @@ { "fields": { - "parent": "родител", + "parent": "Родител", "status": "Статус", "dateSent": "Дата на изпращане", - "from": "от", - "to": "Да се", - "replyTo": "Отговаряте на", - "replyToString": "Отговори (стринга)", - "body": "тяло", - "subject": "Предмет", - "attachments": "Прикачени", + "from": "Изпращач", + "to": "Получател", + "replyTo": "Отговор на", + "replyToString": "Отговор на (String)", + "isHtml": "Имейла е HTML", + "body": "Съдържание", + "subject": "Заглавие", + "attachments": "Прикачени файлове", "selectTemplate": "Изберете шаблон", "fromAddress": "От Адрес", "emailAddress": "Имейл адрес", - "deliveryDate": "Дата на доставка", - "account": "Сметка", + "deliveryDate": "Дата на получаване", + "account": "Клиент", "users": "Потребители", - "replied": "Отговори", + "replied": "Отговорено", "replies": "Отговори", - "isRead": "се чете", - "isNotRead": "Не е прочетено", + "isRead": "Е прочетен", + "isNotRead": "Не е прочетен", "isImportant": "Е важно", - "isUsers": "Дали потребителя", + "isUsers": "Е на потребителя", "inTrash": "В кошчето", - "name": "Име (Subject)", - "isReplied": "Дали Отговори", - "isNotReplied": "Не е Отговорено", - "folder": "папка", - "inboundEmails": "Група сметки", - "emailAccounts": "лични сметки", - "hasAttachment": "С прикачен файл", + "name": "Име (заглавие)", + "isReplied": "Е отговорил", + "isNotReplied": "Не е отговорено", + "folder": "Папка", + "inboundEmails": "Групови имейл акаунти", + "emailAccounts": "Лични имейл акаунти", + "hasAttachment": "Има прикачен файл", "sentBy": "Изпратен от", - "assignedUsers": "присвоени Потребители", - "bodyPlain": "Тяло (обикновен)", + "assignedUsers": "Назначени потребители", + "bodyPlain": "Съдържание (само текст)", "ccEmailAddresses": "CC имейл адреси", - "messageId": "Id Съобщение", - "messageIdInternal": "Id Съобщение (вътрешен)", - "folderId": "Id Папка", + "messageId": "Съобщение ID", + "messageIdInternal": "Съобщение ID (вътрешно)", + "folderId": "Папка ID", "fromName": "От име", "fromString": "От String", - "isSystem": "е базирано", - "toEmailAddresses": "До EmailAddresses", - "bccEmailAddresses": "БКК EmailAddresses", - "replyToEmailAddresses": "Отговор до EmailAddresses", - "personStringData": "Лице String Data", + "isSystem": "е системно", + "toEmailAddresses": "До имейл адреси", + "bccEmailAddresses": "BCC имейл адреси", + "replyToEmailAddresses": "Reply-To имейл адреси", + "personStringData": "Данни за низове за лице", "fromEmailAddress": "От Адрес (линк)", - "replyToName": "Отговор до Наименование", - "replyToAddress": "Адрес за отговор" + "replyToName": "Име Reply-To", + "replyToAddress": "Адрес за отговор", + "icsContents": "Съдържание на ICS", + "icsEventData": "ICS данни за събитие", + "icsEventUid": "ICS UID на събитие", + "createdEvent": "Създадено събитие", + "event": "Събитие", + "icsEventDateStart": "ICS събитие начална дата" }, "links": { - "replied": "Отговори", + "replied": "Отговорено", "replies": "Отговори", - "inboundEmails": "Група сметки", - "emailAccounts": "лични сметки", - "assignedUsers": "присвоени Потребители", + "inboundEmails": "Групови имейл акаунти", + "emailAccounts": "Лични имейл акаунти", + "assignedUsers": "Назначени потребители", "sentBy": "Изпратен от", - "attachments": "Прикачени", + "attachments": "Прикачени файлове", "fromEmailAddress": "От имейл адрес", - "toEmailAddresses": "До EmailAddresses", - "bccEmailAddresses": "БКК EmailAddresses", - "replyToEmailAddresses": "Отговор до EmailAddresses" + "toEmailAddresses": "До имейл адреси", + "ccEmailAddresses": "CC имейл адреси", + "bccEmailAddresses": "BCC имейл адреси", + "replyToEmailAddresses": "Reply-To имейл адреси" }, "options": { "status": { - "Draft": "проект", - "Sending": "Изпращане", + "Draft": "Чернова", + "Sending": "Изпраща се", "Sent": "Изпратено", - "Archived": "Архив", - "Received": "приет", - "Failed": "Се провали" + "Archived": "Архивирано", + "Received": "Получени", + "Failed": "Неуспешни" } }, "labels": { - "Create Email": "Архив Email", - "Archive Email": "Архив Email", - "Compose": "Съставете", + "Create Email": "Архивирай имейла", + "Archive Email": "Архивирай имейла", + "Compose": "Изготвяне", "Reply": "Отговор", "Reply to All": "Отговор до всички", - "Forward": "напред", + "Forward": "Препращане", "Original message": "Оригинално съобщение", - "Forwarded message": "препратено съобщение", - "Email Accounts": "Лични Имейл акаунти", - "Inbound Emails": "Група Имейл акаунти", - "Email Templates": "Шаблони за имейл", - "Send Test Email": "Изпрати Тест Email", + "Forwarded message": "Препратено съобщение", + "Email Accounts": "Лични имейл акаунти", + "Inbound Emails": "Групови имейл акаунти", + "Email Templates": "Шаблони за имейли", + "Send Test Email": "Изпрати тестов имейл", "Send": "Изпрати", "Email Address": "Имейл адрес", - "Mark Read": "Марк.прочетени", + "Mark Read": "Маркирай като прочетено", "Sending...": "Изпращане...", - "Save Draft": "Чернова", - "Mark all as read": "маркирай всички като прочетени", - "Show Plain Text": "Покажи Обикновен текст", - "Mark as Important": "Означава като важно", - "Unmark Importance": "Размаркиране значение", + "Save Draft": "Запази като чернова", + "Mark all as read": "Маркирай всичко като прочетено", + "Show Plain Text": "Показване само на текста", + "Mark as Important": "Маркирай като Важно", + "Unmark Importance": "Размаркирай като Важно", "Move to Trash": "Преместване в кошчето", - "Retrieve from Trash": "Извличане от кошчето", + "Retrieve from Trash": "Връщане от кошчето", "Move to Folder": "Премести в папка", "Filters": "Филтри", "Folders": "Папки", - "View Users": "Преглед на Потребители", - "No Subject": "Без тема" + "View Users": "Преглед на потребителите", + "No Subject": "Без заглавие", + "Insert Field": "Добавяне на поле", + "Event": "Събитие" }, "messages": { - "testEmailSent": "Тест имейл е изпратен", + "testEmailSent": "Тестовия имейл е изпратен", "emailSent": "Имейлът беше изпратен", "savedAsDraft": "Запазено като чернова", - "confirmInsertTemplate": "Тялото на електронна поща, ще бъдат загубени. Сигурни ли сте, искате да вмъкнете шаблон?", - "noSmtpSetup": "SMTP не е конфигуриран: {връзка}", - "sendConfirm": "Изпратете имейла?" + "confirmInsertTemplate": "Съдържанието на имейла ще бъде загубено. Наистина ли искате да вмъкнете шаблона?", + "noSmtpSetup": "SMTP не е конфигуриран: {link}", + "sendConfirm": "Изпращане на имейла?", + "removeSelectedRecordsConfirmation": "Наистина ли искате да премахнете избраните имейли?\n\nТе ще бъдат премахнати и за други потребители.", + "removeRecordConfirmation": "Наистина ли искате да премахнете имейла?\n\nЩе бъде премахнат и за други потребители." }, "presetFilters": { "sent": "Изпратено", "archived": "Архив", "inbox": "Входящи", - "drafts": "дама", - "trash": "боклук", - "important": "важно" + "drafts": "Чернови", + "trash": "Кошче", + "important": "Важни" }, "massActions": { "markAsRead": "Маркирай като прочетено", - "markAsNotRead": "Означаване като прочетено", - "markAsImportant": "Означава като важно", - "markAsNotImportant": "Размаркиране значение", + "markAsNotRead": "Маркирай като непрочетено", + "markAsImportant": "Маркирай като важно", + "markAsNotImportant": "Размаркирай като важно", "moveToTrash": "Преместване в кошчето", "moveToFolder": "Премести в папка", - "retrieveFromTrash": "Извличане от кошчето" + "retrieveFromTrash": "Премахване от кошчето" + }, + "strings": { + "sendingFailed": "Изпращането на имейла се провали" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/EmailAccount.json b/application/Espo/Resources/i18n/bg_BG/EmailAccount.json index 0b33328192..3ce13bac23 100644 --- a/application/Espo/Resources/i18n/bg_BG/EmailAccount.json +++ b/application/Espo/Resources/i18n/bg_BG/EmailAccount.json @@ -1,52 +1,53 @@ { "fields": { - "name": "име", + "name": "Име", "status": "Статус", - "host": "домакин", + "host": "Сървър", "username": "Потребител", - "password": "парола", - "port": "порт", - "monitoredFolders": "наблюдавани папки", - "fetchSince": "Изважда От", + "password": "Парола", + "port": "Порт", + "monitoredFolders": "Мониторирани папки", + "fetchSince": "Импортиране на имейли от", "emailAddress": "Имейл адрес", - "sentFolder": "Изпратени Папка", - "storeSentEmails": "Магазин изпращат съобщения", - "keepFetchedEmailsUnread": "Дръжте Извлечени са имейли непрочетена", + "sentFolder": "Папка за изходящи имейли", + "storeSentEmails": "Съхраняване на изходящи имейли", + "keepFetchedEmailsUnread": "Маркиране на импортираните имейли като непрочетени", "emailFolder": "Сложете в папка", "useSmtp": "Използване на SMTP", + "smtpHost": "SMTP хост", + "smtpPort": "SMTP порт", "smtpAuth": "SMTP удостоверяване", "smtpSecurity": "SMTP сигурност", "smtpUsername": "SMTP име", "smtpPassword": "SMTP парола", - "useImap": "Изважда имейли", - "smtpAuthMechanism": "Механизъм SMTP удостоверяване" + "useImap": "Прихващане на имейли", + "smtpAuthMechanism": "Механизъм за SMTP удостоверяване", + "security": "Сигурност" }, "links": { "filters": "Филтри", - "emails": "имейли" + "emails": "Имейли" }, "options": { "status": { "Active": "Активен", - "Inactive": "неактивен" - }, - "smtpAuthMechanism": { - "plain": "ОБИКНОВЕН", - "login": "ВЛИЗАНЕ" + "Inactive": "Деактивиран" } }, "labels": { "Create EmailAccount": "Създаване на имейл акаунт", - "Main": "основен", - "Test Connection": "Тестване на свързване", - "Send Test Email": "Изпрати Тест Email" + "Main": "Основен", + "Test Connection": "Тестване на връзката", + "Send Test Email": "Изпрати тестов имейл" }, "messages": { "couldNotConnectToImap": "Не може да се свърже с IMAP сървъра", "connectionIsOk": "Връзката е ОК" }, "tooltips": { - "monitoredFolders": "Множество папки трябва да бъдат разделени със запетая. Можете да добавите \"Изпратени\" папка за синхронизиране на имейли, изпратени от външен имейл клиент.", - "storeSentEmails": "Изпратени имейли ще се съхраняват на сървър IMAP. E-mail адрес поле трябва да съвпада с адреса имейли ще бъде изпратен от." + "monitoredFolders": "Няколко папки трябва да бъдат разделени със запетая.\n\nМожете да добавите папка „Sent“, за да синхронизирате имейли, изпратени от външен имейл клиент.", + "storeSentEmails": "Изпратените имейли ще се съхраняват на IMAP сървъра. Полето за имейл адрес трябва да съвпада с адреса, от който ще бъдат изпращани имейлите.", + "useSmtp": "Възможността да се изпращат имейли.", + "emailAddress": "Потребителският запис (назначения потребител) трябва да има същия имейл адрес, за да можете да използвате този имейл акаунт за изпращане." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/EmailAddress.json b/application/Espo/Resources/i18n/bg_BG/EmailAddress.json index 6f6d73e2c0..09b9f6a288 100644 --- a/application/Espo/Resources/i18n/bg_BG/EmailAddress.json +++ b/application/Espo/Resources/i18n/bg_BG/EmailAddress.json @@ -1,11 +1,11 @@ { "labels": { - "Primary": "първичен", - "Opted Out": "Отказахте се", - "Invalid": "невалиден" + "Primary": "Основен", + "Opted Out": "Отказал се", + "Invalid": "Невалиден" }, "fields": { - "optOut": "Отказахте се", + "optOut": "Отписал се", "invalid": "невалиден" }, "presetFilters": { diff --git a/application/Espo/Resources/i18n/bg_BG/EmailFilter.json b/application/Espo/Resources/i18n/bg_BG/EmailFilter.json index d50cc7c62a..ab469b105f 100644 --- a/application/Espo/Resources/i18n/bg_BG/EmailFilter.json +++ b/application/Espo/Resources/i18n/bg_BG/EmailFilter.json @@ -1,29 +1,29 @@ { "fields": { - "from": "от", - "to": "Да се", - "subject": "Предмет", - "bodyContains": "Body Съдържа", - "action": "действие", - "isGlobal": "е глобален", - "emailFolder": "папка" + "from": "От", + "to": "До", + "subject": "Заглавие", + "bodyContains": "В съдържанието се съдържа", + "action": "Действие", + "isGlobal": "Е глобален", + "emailFolder": "Папка" }, "labels": { - "Create EmailFilter": "Създаване на Email Filter", - "Emails": "имейли" + "Create EmailFilter": "Създаване на имейл филтър", + "Emails": "Имейли" }, "tooltips": { - "from": "Имейлите, които се изпращат от посочения адрес. Оставете празно, ако не е необходимо. Можете да използвате маска *.", + "from": "Имейлите, които се изпращат от посочения адрес. Оставете празно, ако не е необходимо. Можете да използвате заместващ знак *", "to": "Имейлите, които се изпращат на посочения адрес. Оставете празно, ако не е необходимо. Можете да използвате маска *.", - "name": "Дайте филтъра описателно име.", - "subject": "Използвайте маска *: текст * - започва с текст, текст * * - съдържа текст, * текст - завършва с текст.", - "bodyContains": "Тяло на електронната поща съдържа нито една от посочените думи или фрази.", - "isGlobal": "Отнася този филтър за всички имейли, постъпващи в системата." + "name": "Посочете детайлно име на филтъра.", + "bodyContains": "Основното съдържание на имейла съдържа някоя от посочените думи или фрази.", + "isGlobal": "Прилага този филтър към всички имейли, пристигащи в системата.", + "subject": "Използвайте заместващ знак *:\n\n * `текст*` – започва с текст,\n * `*text*` – съдържа текст,\n * `*текст` – завършва с текст." }, "options": { "action": { - "Skip": "игнорирам", - "Move to Folder": "Сложете в папка" + "Skip": "Игнориране", + "Move to Folder": "Слагане в папка" } } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/EmailFolder.json b/application/Espo/Resources/i18n/bg_BG/EmailFolder.json index dc34472a86..ba5e6571d0 100644 --- a/application/Espo/Resources/i18n/bg_BG/EmailFolder.json +++ b/application/Espo/Resources/i18n/bg_BG/EmailFolder.json @@ -1,10 +1,10 @@ { "fields": { - "skipNotifications": "Пропускане Известия" + "skipNotifications": "Пропускане на известия" }, "labels": { "Create EmailFolder": "Създай папка", "Manage Folders": "Управление на папки", - "Emails": "имейли" + "Emails": "Имейли" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/EmailTemplate.json b/application/Espo/Resources/i18n/bg_BG/EmailTemplate.json index 8f1bba9115..d010535cee 100644 --- a/application/Espo/Resources/i18n/bg_BG/EmailTemplate.json +++ b/application/Espo/Resources/i18n/bg_BG/EmailTemplate.json @@ -1,32 +1,33 @@ { "fields": { - "name": "име", + "name": "Име", "status": "Статус", - "body": "тяло", - "subject": "Предмет", - "attachments": "Прикачени", - "oneOff": "Еднократни", - "category": "категория" + "isHtml": "Имейлът е HTML", + "body": "Съдържание", + "subject": "Заглавие", + "attachments": "Прикачени файлове", + "oneOff": "Еднократно", + "category": "Категория" }, "labels": { - "Create EmailTemplate": "Създаване Шаблон за имейл", + "Create EmailTemplate": "Създаване на Шаблон за имейл", "Info": "Информация", - "Available placeholders": "Налични контейнери" + "Available placeholders": "Налични placeholders" }, "tooltips": { - "oneOff": "Проверете, ако ще се използва този шаблон само веднъж. Например за Маса Email." + "oneOff": "Отбележете, ако този шаблон ще се използва само веднъж. Например за масов имейл в имейл кампания." }, "presetFilters": { - "actual": "действителен" - }, - "messages": { - "infoText": "Предлагани заместители: {optOutUrl} & # 8211; URL за unsubscribe връзка; {OptOutLink} & # 8211; за връзка за отписване." + "actual": "Актуален" }, "placeholderTexts": { - "optOutUrl": "URL за unsubsbribe връзка", - "optOutLink": "за връзка за отписване", + "optOutLink": "URL за отписване", "today": "Днешната дата", "now": "Текуща дата и време", - "currentYear": "Текуща година" + "currentYear": "Текуща година", + "optOutUrl": "URL за отписване" + }, + "messages": { + "infoText": "Налични заместители:\n\n{optOutUrl} – URL линк за отписване;\n\n{optOutLink} – линк за отписване." } -} +} \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/EmailTemplateCategory.json b/application/Espo/Resources/i18n/bg_BG/EmailTemplateCategory.json index ce2cd2c8ab..c90dc58a48 100644 --- a/application/Espo/Resources/i18n/bg_BG/EmailTemplateCategory.json +++ b/application/Espo/Resources/i18n/bg_BG/EmailTemplateCategory.json @@ -5,8 +5,8 @@ "EmailTemplates": "Шаблони за имейл" }, "fields": { - "order": "Поръчка", - "childList": "Списък на детето" + "order": "Подредба", + "childList": "Дъщерни записи" }, "links": { "emailTemplates": "Шаблони за имейл" diff --git a/application/Espo/Resources/i18n/bg_BG/EntityManager.json b/application/Espo/Resources/i18n/bg_BG/EntityManager.json index dedb0de1c7..64813984d6 100644 --- a/application/Espo/Resources/i18n/bg_BG/EntityManager.json +++ b/application/Espo/Resources/i18n/bg_BG/EntityManager.json @@ -1,79 +1,75 @@ { "labels": { "Fields": "Полетата", - "Relationships": "Връзки", - "Schedule": "разписание", - "Log": "Вход", - "Formula": "формула" + "Relationships": "Релации", + "Schedule": "График", + "Log": "Журнал", + "Formula": "формула", + "Layouts": "Оформления" }, "fields": { - "name": "име", + "name": "Име", "type": "Тип", - "labelSingular": "Обозначете Singular", - "labelPlural": "етикет за множествено число", - "stream": "поток", - "label": "етикет", - "entityForeign": "чуждестранно лице", - "linkForeign": "чуждестранна Link", - "link": "връзка", - "labelForeign": "чуждестранна Label", - "sortBy": "По подразбиране Поръчка (област)", - "sortDirection": "По подразбиране Поръчка (посока)", - "relationName": "Бащино име на маса", - "linkMultipleField": "Линк Множествена поле", - "linkMultipleFieldForeign": "Чуждестранна Link Множествена поле", - "disabled": "хора с увреждания", - "textFilterFields": "Текст полета за филтриране", - "audited": "одитирания", - "auditedForeign": "чуждестранна одитирания", + "labelSingular": "Наименование в единствено число", + "labelPlural": "Наименование в множествено число", + "stream": "Коментари и история", + "label": "Наименование", + "linkType": "Тип релация", + "entityForeign": "Външен обект", + "linkForeign": "Външна релация", + "link": "Релация", + "labelForeign": "Външно наименование", + "sortBy": "Сортиране по подразбиране (поле)", + "sortDirection": "Сортиране по подразбиране (посока)", + "linkMultipleField": "Свързане на множество полета", + "disabled": "Деактивирано", + "textFilterFields": "Текстови полета, в които да се търси", + "audited": "Одитиран", + "auditedForeign": "Одитиран от външен метод", "statusField": "Статус поле", - "beforeSaveCustomScript": "Преди Save персонализирана Script", - "color": "цвят", - "kanbanStatusIgnoreList": "Пропуснати групи в Канбан изглед", - "iconClass": "икона", - "fullTextSearch": "Пълен текст Търсене", - "countDisabled": "Изключване на броя на запис", + "beforeSaveCustomScript": "Персонализиран скрипт, който да се изпълнява преди запазване", + "color": "Цвят", + "kanbanViewMode": "Kanban изглед", + "kanbanStatusIgnoreList": "Пропуснати групи в Kanban изглед", + "iconClass": "Икона", + "fullTextSearch": "Пълнотекстово търсене", + "countDisabled": "Не показвай броя на записите", "parentEntityTypeList": "Предприятието майка, Видове", - "foreignLinkEntityTypeList": "Чуждестранни връзки" + "foreignLinkEntityTypeList": "Чуждестранни връзки", + "entity": "Обект", + "optimisticConcurrencyControl": "Защита от едновременно презаписване" }, "options": { "type": { "": "Нито един", - "Base": "база", - "Person": "човек", - "CategoryTree": "Категория Tree", - "Event": "събитие", - "BasePlus": "база Plus", - "Company": "Търговско дружество" - }, - "linkType": { - "manyToMany": "Много към много", - "oneToMany": "Едно към много", - "manyToOne": "Много-в-One", - "parentToChildren": "Родител към деца", - "childrenToParent": "Деца до майка", - "oneToOneRight": "Едно към едно с десния", - "oneToOneLeft": "Едно към едно Left" + "CategoryTree": "Дърво с категории", + "Event": "Събитие" }, "sortDirection": { "asc": "Възходящ", "desc": "Низходящ" + }, + "linkType": { + "oneToOneRight": "Едно към едно с десния", + "oneToOneLeft": "Едно към едно Left" } }, "messages": { - "entityCreated": "Entity е създаден", - "linkAlreadyExists": "Връзка име конфликт.", - "linkConflict": "Името на конфликт: линк или област със същото име вече съществува." + "entityCreated": "Модула беше успешно създаден", + "linkAlreadyExists": "Грешка в името на релацията.", + "linkConflict": "Грешка в името: релация или поле със същото име вече съществува.", + "confirmRemove": "Наистина ли искате да премахнете обекта от системата?" }, "tooltips": { - "statusField": "Актуализациите на тази област са влизали в поток.", - "textFilterFields": "Полетата, използван от търсене на текст.", - "stream": "Независимо дали предприятието има поток.", - "disabled": "Проверете дали не е нужно това лице във вашата система.", - "linkAudited": "Създаване на документация, свързана и свързване с съществуващ запис ще бъде записано в поток.", - "linkMultipleField": "Линк Множествена поле осигурява удобен начин за редактиране на отношенията. Не го използвайте, ако може да има голям брой свързани записи.", - "entityType": "База Plus - има дейности, история и задачи панели. Събитие - на разположение в Календар и дейности панел.", - "fullTextSearch": "Работещи възстановяване се изисква.", - "countDisabled": "Общ брой няма да се показва на екрана със списъка. Може да намали времето на зареждане, когато масата на DB е голям." + "statusField": "Актуализациите на това поле се регистрират в активността.", + "textFilterFields": "Полета, използвани от търсачката.", + "stream": "Дали обектът има поток.", + "disabled": "Отбележете ако не се нуждаете от този обект във вашата система.", + "linkAudited": "Създаването на свързан запис и свързването със съществуващ запис ще бъде регистрирано в активността.", + "linkMultipleField": "Полето Link Multiple предоставя удобен начин за редактиране на релации. Не го използвайте, ако можете да имате голям брой свързани записи.", + "entityType": "Base Plus - има панели за дейности, история и задачи.\n\nСъбитие – достъпно в панела Календар и Дейности.", + "fullTextSearch": "Задължително е да регенерирате кеша на системата", + "countDisabled": "Общият брой няма да се показва в списъчния изглед. Може да намали времето за зареждане, когато DB таблицата е голяма.", + "optimisticConcurrencyControl": "Предотвратява възможност от презаписване на един и същи запис от двама или повече потребители едновременно." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Export.json b/application/Espo/Resources/i18n/bg_BG/Export.json index 4df3a0308a..cdbb67f498 100644 --- a/application/Espo/Resources/i18n/bg_BG/Export.json +++ b/application/Espo/Resources/i18n/bg_BG/Export.json @@ -1,7 +1,20 @@ { "fields": { - "fieldList": "Невярно Списък", + "fieldList": "Списък с полета", "exportAllFields": "Експортиране на всички полета", - "format": "формат" + "format": "Формат", + "status": "Статус" + }, + "options": { + "status": { + "Pending": "Предстои", + "Running": "В процес на обработка", + "Success": "Успешно", + "Failed": "Неуспешно" + } + }, + "messages": { + "exportProcessed": "Експортирането е обработено. Изтеглете [файла]({url}).", + "infoText": "Експортирането се обработва в фонов режим от cron. Може да отнеме известно време, за да завърши. Затварянето на този модален диалогов прозорец НЯМА да повлияе на процеса на изпълнение." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Extension.json b/application/Espo/Resources/i18n/bg_BG/Extension.json index 4401f030c6..5a53404c26 100644 --- a/application/Espo/Resources/i18n/bg_BG/Extension.json +++ b/application/Espo/Resources/i18n/bg_BG/Extension.json @@ -1,15 +1,16 @@ { "fields": { - "name": "име", - "version": "версия", - "description": "описание", - "isInstalled": "Инсталирана", - "checkVersionUrl": "Един URL за проверка на нови версии" + "name": "Име", + "version": "Версия", + "description": "Описание", + "isInstalled": "Инсталирано", + "checkVersionUrl": "URL за проверка на нови версии" }, "labels": { + "Uninstall": "Деинсталиране", "Install": "Инсталирай" }, "messages": { - "uninstalled": "Удължаване {име} е деинсталирана" + "uninstalled": "Разширението {name} беше деинсталирано" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/ExternalAccount.json b/application/Espo/Resources/i18n/bg_BG/ExternalAccount.json index 63b49e36d6..b287b4a594 100644 --- a/application/Espo/Resources/i18n/bg_BG/ExternalAccount.json +++ b/application/Espo/Resources/i18n/bg_BG/ExternalAccount.json @@ -1,5 +1,8 @@ { "labels": { - "Connected": "свързан" + "Connect": "Свързване", + "Connected": "Свързано", + "Disconnect": "Изклюване", + "Disconnected": "Изключен" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/FieldManager.json b/application/Espo/Resources/i18n/bg_BG/FieldManager.json index bf6e0a984a..eb11c1a9fc 100644 --- a/application/Espo/Resources/i18n/bg_BG/FieldManager.json +++ b/application/Espo/Resources/i18n/bg_BG/FieldManager.json @@ -1,12 +1,18 @@ { + "labels": { + "Dynamic Logic": "Динамична логика", + "Name": "Име", + "Label": "Етикет", + "Type": "Тип" + }, "options": { "dateTimeDefault": { "": "Нито един", "javascript: return this.dateTime.getNow(1);": "Сега", - "javascript: return this.dateTime.getNow(5);": "Сега (5 М)", - "javascript: return this.dateTime.getNow(15);": "Сега (петнайсетm)", - "javascript: return this.dateTime.getNow(30);": "Сега (трийсетм)", - "javascript: return this.dateTime.getDateTimeShiftedFromNow(1, 'hours', 15);": "едночас", + "javascript: return this.dateTime.getNow(5);": "Сега (5мин.)", + "javascript: return this.dateTime.getNow(15);": "Сега (15мин.)", + "javascript: return this.dateTime.getNow(30);": "Сега (30мин.)", + "javascript: return this.dateTime.getDateTimeShiftedFromNow(1, 'hours', 15);": "+1 час", "javascript: return this.dateTime.getDateTimeShiftedFromNow(2, 'hours', 15);": "+2 часа", "javascript: return this.dateTime.getDateTimeShiftedFromNow(3, 'hours', 15);": "+3 часа", "javascript: return this.dateTime.getDateTimeShiftedFromNow(4, 'hours', 15);": "+4 часа", @@ -18,18 +24,18 @@ "javascript: return this.dateTime.getDateTimeShiftedFromNow(10, 'hours', 15);": "+10 часа", "javascript: return this.dateTime.getDateTimeShiftedFromNow(11, 'hours', 15);": "+11 часа", "javascript: return this.dateTime.getDateTimeShiftedFromNow(12, 'hours', 15);": "+12 часа", - "javascript: return this.dateTime.getDateTimeShiftedFromNow(1, 'days', 15);": "еднаден", + "javascript: return this.dateTime.getDateTimeShiftedFromNow(1, 'days', 15);": "+1 ден", "javascript: return this.dateTime.getDateTimeShiftedFromNow(2, 'days', 15);": "+2 дни", "javascript: return this.dateTime.getDateTimeShiftedFromNow(3, 'days', 15);": "+3 дни", "javascript: return this.dateTime.getDateTimeShiftedFromNow(4, 'days', 15);": "+4 дни", "javascript: return this.dateTime.getDateTimeShiftedFromNow(5, 'days', 15);": "+5 дни", "javascript: return this.dateTime.getDateTimeShiftedFromNow(6, 'days', 15);": "+6 дни", - "javascript: return this.dateTime.getDateTimeShiftedFromNow(1, 'week', 15);": "една седмица" + "javascript: return this.dateTime.getDateTimeShiftedFromNow(1, 'week', 15);": "+1 седмица" }, "dateDefault": { "": "Нито един", - "javascript: return this.dateTime.getToday();": "днес", - "javascript: return this.dateTime.getDateShiftedFromToday(1, 'days');": "еднаден", + "javascript: return this.dateTime.getToday();": "Днес", + "javascript: return this.dateTime.getDateShiftedFromToday(1, 'days');": "+1 ден", "javascript: return this.dateTime.getDateShiftedFromToday(2, 'days');": "+2 дни", "javascript: return this.dateTime.getDateShiftedFromToday(3, 'days');": "+3 дни", "javascript: return this.dateTime.getDateShiftedFromToday(4, 'days');": "+4 дни", @@ -39,10 +45,10 @@ "javascript: return this.dateTime.getDateShiftedFromToday(8, 'days');": "+8 дни", "javascript: return this.dateTime.getDateShiftedFromToday(9, 'days');": "+9 дни", "javascript: return this.dateTime.getDateShiftedFromToday(10, 'days');": "+10 дни", - "javascript: return this.dateTime.getDateShiftedFromToday(1, 'weeks');": "една седмица", + "javascript: return this.dateTime.getDateShiftedFromToday(1, 'weeks');": "+1 седмица", "javascript: return this.dateTime.getDateShiftedFromToday(2, 'weeks');": "+2 седмици", "javascript: return this.dateTime.getDateShiftedFromToday(3, 'weeks');": "+3 седмици", - "javascript: return this.dateTime.getDateShiftedFromToday(1, 'months');": "милиардмесец", + "javascript: return this.dateTime.getDateShiftedFromToday(1, 'months');": "+1 месец", "javascript: return this.dateTime.getDateShiftedFromToday(2, 'months');": "+2 месеца", "javascript: return this.dateTime.getDateShiftedFromToday(3, 'months');": "+3 месеца", "javascript: return this.dateTime.getDateShiftedFromToday(4, 'months');": "+4 месеца", @@ -53,7 +59,7 @@ "javascript: return this.dateTime.getDateShiftedFromToday(9, 'months');": "+9 месеца", "javascript: return this.dateTime.getDateShiftedFromToday(10, 'months');": "+10 месеца", "javascript: return this.dateTime.getDateShiftedFromToday(11, 'months');": "+11 месеца", - "javascript: return this.dateTime.getDateShiftedFromToday(1, 'year');": "милион години" + "javascript: return this.dateTime.getDateShiftedFromToday(1, 'year');": "+1 година" }, "barcodeType": { "UPC": "UPC (А)", @@ -62,34 +68,35 @@ } }, "tooltips": { - "audited": "Актуализациите ще бъде записано в поток.", - "required": "Невярно ще бъде задължително. Не може да бъде оставено празно.", - "default": "Стойността ще бъде зададена по подразбиране при създаване.", - "min": "Мин приемлива стойност.", - "max": "Макс приемлива стойност.", - "seeMoreDisabled": "Ако не се проверява след дълги текстове ще бъдат съкратени.", - "lengthOfCut": "Колко дълго може да бъде текст, преди това ще бъдат отрязани.", - "maxLength": "Макс приемлива продължителност на текст.", - "before": "Стойността на датата трябва да е преди датата на стойността на указаното поле.", - "after": "Стойността на датата трябва да е след датата, стойността на указаното поле.", - "readOnly": "Стойността на полето не може да бъде определен от потребителя. Но може да бъде изчислена по формула.", - "maxFileSize": "Ако празно или 0 след няма ограничение.", - "fileAccept": "Кои типове файлове да приеме. Това е възможно да се добавят и други елементи.", - "barcodeLastChar": "За EAN-13 тип." + "audited": "Актуализациите ще бъдат записани в активността.", + "required": "Полето ще бъде задължително. Не може да остане празно.", + "default": "Стойността ще бъде зададена по подразбиране при създаването.", + "min": "Минимална приемлива стойност.", + "max": "Максимална приемлива стойност.", + "seeMoreDisabled": "Ако не е отметнато, дългите текстове ще бъдат съкратени.", + "lengthOfCut": "Колко дълъг може да бъде текстът, преди да бъде съкратен.", + "maxLength": "Максимална допустима дължина на текста.", + "before": "Стойността на датата трябва да е преди стойността на датата на посоченото поле.", + "after": "Стойността на датата трябва да е след стойността на датата на посоченото поле.", + "readOnly": "Стойността на полето не може да бъде посочена от потребителя. Но може да се изчисли по формула.", + "maxFileSize": "Ако е празно или 0, няма ограничение в размера.", + "fileAccept": "Кои типове файлове да приемате. Възможно е добавяне на персонализирани елементи.", + "barcodeLastChar": "За EAN-13 тип.", + "conversionDisabled": "Действието за конвертиране на валута няма да бъде приложено към това поле." }, "fieldParts": { "address": { - "street": "улица", - "city": "град", - "state": "състояние", - "country": "Страна", - "postalCode": "пощенски код", - "map": "карта" + "street": "Улица", + "city": "Град", + "state": "Област", + "country": "Държава", + "postalCode": "Пощенски код", + "map": "Карта" }, "personName": { - "salutation": "поздрав", - "first": "първи", - "last": "последно", + "salutation": "Обръщение", + "first": "Първо име", + "last": "Фамилия", "middle": "среден" }, "currency": { @@ -100,9 +107,33 @@ "date": "Дата" } }, - "labels": { - "Name": "име", - "Label": "етикет", - "Type": "Тип" + "fieldInfo": { + "varchar": "Текст от един ред.", + "enum": "Поле за избор, може да бъде избрана само една стойност.", + "text": "Многоредов текст с възможности за форматиране.", + "date": "Дата без час.", + "datetime": "Дата и час", + "currency": "Валутна стойност. Може да се използва за суми и пари.", + "int": "Цяло число.", + "float": "Число с десетична част.", + "bool": "Квадрат за отметка. Две възможни стойности: да или не.", + "multiEnum": "Списък със стойности, могат да бъдат избрани множество стойности. Списъкът е подреден.", + "checklist": "Списък с квадратчета за отметки.", + "array": "Списък със стойности, подобен на полето Multi-Enum.", + "address": "Адрес с улица, град, област, пощенски код и държава.", + "url": "За съхранение на линкове.", + "wysiwyg": "Текст с поддръжка за HTML.", + "file": "За качване на файлове.", + "image": "За качване на изображения.", + "attachmentMultiple": "Позволява качване на множество файлове.", + "number": "Автоматично нарастващо число с възможен префикс и конкретна дължина.", + "autoincrement": "Автоматично нарастващо число, с възможен префикс и конкретна дължина, НО не може да се редактира.", + "barcode": "Баркод. Може да се отпечата в PDF.", + "email": "Набор от имейл адреси с техните параметри: Отписан, Невалиден, Основен.", + "phone": "Набор от телефонни номера с техните параметри: Тип, Отписан, Невалиден, Основен.", + "foreign": "Поле на свързан запис. Само за четене.", + "link": "Запис, свързан чрез връзка „Принадлежи към (много към един или един към един).", + "linkParent": "Запис, свързан чрез връзката „Принадлежи на родител“. Може да бъде от различни типове обекти.", + "linkMultiple": "Набор от записи, свързани чрез релация Има-много (много към много или един към много). Не всички релации имат своите полета с множество връзки. Правят го само тези, при които е разрешен параметър(и) за връзка с множество." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Formula.json b/application/Espo/Resources/i18n/bg_BG/Formula.json new file mode 100644 index 0000000000..38ea9b6730 --- /dev/null +++ b/application/Espo/Resources/i18n/bg_BG/Formula.json @@ -0,0 +1,23 @@ +{ + "labels": { + "Check Syntax": "Проверка на синтаксис", + "Run": "Стартирай" + }, + "fields": { + "target": "Целеви запис", + "targetType": "Тип обект", + "script": "Скрипт", + "output": "Резултат", + "error": "Грешка" + }, + "messages": { + "runSuccess": "Изпълнено успешно.", + "runError": "Грешка.", + "checkSyntaxSuccess": "Синтаксисът е правилен.", + "checkSyntaxError": "Синтаксисът е грешен.", + "emptyScript": "Скриптът е празен." + }, + "tooltips": { + "output": "Отпечатайте стойности с функцията `output\\printLine`." + } +} \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Global.json b/application/Espo/Resources/i18n/bg_BG/Global.json index 0d53033410..cb1bd7783f 100644 --- a/application/Espo/Resources/i18n/bg_BG/Global.json +++ b/application/Espo/Resources/i18n/bg_BG/Global.json @@ -1,501 +1,534 @@ { "scopeNames": { - "Email": "електронна поща", - "User": "потребител", - "Team": "екип", - "Role": "роля", + "Email": "Електронна поща", + "User": "Потребител", + "Team": "Екип", + "Role": "Роля", "EmailTemplate": "Шаблон за имейл", - "EmailAccount": "Личен имейл адрес,", - "EmailAccountScope": "Личен имейл адрес,", + "EmailAccount": "Личен имейл акаунт", + "EmailAccountScope": "Личен имейл акаунт", "OutboundEmail": "Изходящ Email", - "ScheduledJob": "Планирана работа", - "ExternalAccount": "на външния профил", - "Extension": "разширение", - "Dashboard": "Табло", - "InboundEmail": "Група имейл акаунт", - "Stream": "поток", - "Import": "внос", + "ScheduledJob": "Планирана задача", + "ExternalAccount": "Външен акаунт", + "Extension": "Разширение", + "Dashboard": "Начално табло", + "InboundEmail": "Групов имейл акаунт", + "Stream": "Коментари/история", + "Import": "Импортиране", "Template": "Шаблон", - "Job": "работа", - "Portal": "портал", - "PortalRole": "портал Роля", + "Job": "Задача", + "EmailFilter": "Имейл филтър", + "Portal": "Портал", + "PortalRole": "Роля за портал", "Attachment": "Прикачен файл", - "EmailFolder": "Email Папка", - "PortalUser": "портал за потребителя", - "ScheduledJobLogRecord": "Планирана Вход Запис на работа", - "PasswordChangeRequest": "Парола Заявка за промяна на", - "ActionHistoryRecord": "Действие История Record", - "AuthToken": "Означението за удостоверяване", - "UniqueId": "Уникален идентификационен номер на", - "LastViewed": "Последно видяни", + "EmailFolder": "Имейл папка", + "PortalUser": "Потребител на портала", + "ScheduledJobLogRecord": "Запис на планирана задача", + "PasswordChangeRequest": "Заявка за промяна на паролата", + "ActionHistoryRecord": "Историята на действията", + "AuthToken": "Токен за автентификация", + "UniqueId": "Уникален идентификационен номер", + "LastViewed": "Последно преглеждани", "Settings": "Настройки", - "FieldManager": "Невярно мениджър", - "Integration": "интеграция", - "LayoutManager": "Разпределение на мениджъра", - "EntityManager": "Entity мениджър", - "Export": "износ", - "DashletOptions": "Dashlet Опции", - "Global": "в световен мащаб", + "FieldManager": "Управление на полета", + "Integration": "Интеграции", + "LayoutManager": "Управление на оформления", + "EntityManager": "Управление на обекти", + "Export": "Експортиране", + "DynamicLogic": "Динамична логика", + "DashletOptions": "Dashlet опции", + "Admin": "Админ", + "Global": "Глобално", "Preferences": "Предпочитания", "EmailAddress": "Имейл адрес", "PhoneNumber": "Телефонен номер", - "AuthLogRecord": "Упълномощаване Вход Record", - "AuthFailLogRecord": "Упълномощаване Fail Вход Record", - "EmailTemplateCategory": "Шаблон за имейл Категории", - "LeadCapture": "Водещ Capture входна точка", - "LeadCaptureLogRecord": "Водещ Capture Вход Record", - "ArrayValue": "Array Цена", - "ApiUser": "API за потребителя", - "DashboardTemplate": "Dashboard Шаблон", - "Currency": "Валута" + "AuthLogRecord": "Лог на влизането", + "AuthFailLogRecord": "Лог на неуспешно влизане", + "EmailTemplateCategory": "Категория за имейл шаблони", + "LeadCapture": "URL за прихващане на API заявки", + "LeadCaptureLogRecord": "Логове от прихващане на API заявки", + "ArrayValue": "Стойност на масив", + "ApiUser": "API потребител", + "DashboardTemplate": "Шаблон за работно табло", + "Currency": "Валута", + "LayoutSet": "Оформление", + "Mass Action": "Масово действие" }, "scopeNamesPlural": { - "Email": "имейли", + "Email": "Имейли", "User": "Потребители", - "Team": "Отбори", + "Team": "Отдели", "Role": "Роли", "EmailTemplate": "Шаблони за имейл", - "EmailAccount": "Лични Имейл акаунти", - "EmailAccountScope": "Лични Имейл акаунти", - "OutboundEmail": "и изходящите писма", - "ScheduledJob": "Планирани Джобс", - "ExternalAccount": "Външни сметки", + "EmailAccount": "Лични имейл акаунти", + "EmailAccountScope": "Лични имейл акаунти", + "OutboundEmail": "Изходящи имейли", + "ScheduledJob": "Планирани задачи", + "ExternalAccount": "Външни акаунти", "Extension": "Разширения", "Dashboard": "Табло", - "InboundEmail": "Група Имейл акаунти", - "Stream": "поток", - "Job": "Работни места", + "InboundEmail": "Групови имейл акаунти", + "Stream": "Коментари/история", + "Template": "Шаблони", + "Job": "Задачи", "EmailFilter": "Имейл Филтри", "Portal": "Портали", - "PortalRole": "Portal Роли", - "Attachment": "Прикачени", + "PortalRole": "Роли за портали", + "Attachment": "Прикачени файлове", "EmailFolder": "Имейл папки", - "PortalUser": "потребители на портала", - "ScheduledJobLogRecord": "Планирани работа Вход Records", - "PasswordChangeRequest": "Парола Искания за промени", - "ActionHistoryRecord": "История за действие", - "AuthToken": "удостоверяване от Знаците", - "UniqueId": "Уникални документи за самоличност", - "LastViewed": "Последно видяни", - "AuthLogRecord": "упълномощаване Вход", - "AuthFailLogRecord": "Упълномощаване Fail Вход", - "EmailTemplateCategory": "Шаблон за имейл Категории", - "Import": "внос", - "LeadCapture": "Водещ Capture", - "LeadCaptureLogRecord": "Водещ Capture Вход", - "ArrayValue": "масиви стойности", + "PortalUser": "Потребители на портала", + "ScheduledJobLogRecord": "Записи на планирани задачи", + "PasswordChangeRequest": "Заявки за промяна на паролата", + "ActionHistoryRecord": "История за действията", + "AuthToken": "Токъни за автентификация", + "UniqueId": "Уникални идентификационни номера", + "LastViewed": "Последно преглеждани", + "AuthLogRecord": "Логове на влизанията", + "AuthFailLogRecord": "Логове на неуспешни влизания", + "EmailTemplateCategory": "Категории за имейл шаблони", + "Import": "Импортиране", + "LeadCaptureLogRecord": "Записи от Lead Capture", + "ArrayValue": "Стойности на масив", "ApiUser": "API Потребители", + "DashboardTemplate": "Шаблони за работно табло", "EmailAddress": "Имейл адреси", "PhoneNumber": "Телефонни номера", - "Currency": "Валута" + "Currency": "Валута", + "LayoutSet": "Оформления" }, "labels": { "Misc": "Разни", + "Merge": "Сливане", "None": "Нито един", - "Home": "У дома", + "Home": "Начало", "by": "от", - "Saved": "Запазени", - "Error": "грешка", + "Saved": "Запазено", + "Error": "Грешка", "Select": "Изберете", - "Not valid": "Не важи", - "Please wait...": "Моля Изчакай...", - "Please wait": "Моля Изчакай", + "Not valid": "Невалиден", + "Please wait...": "Моля изчакайте...", + "Please wait": "Моля изчакайте", "Loading...": "Зареждане...", "Uploading...": "Качва се ...", - "Sending...": "Изпращане...", + "Sending...": "Изпраща се...", "Merging...": "Сливане ...", - "Merged": "Обединен", + "Merged": "Слято", "Removed": "Премахнато", "Posted": "Публикувано", - "Linked": "свързан", - "Unlinked": "Прекратена връзка", - "Done": "Свършен", + "Linked": "Свързан", + "Unlinked": "Отсвързано", + "Done": "Завършен", "Access denied": "Отказан достъп", "Not found": "Не е намерен", - "Access": "достъп", + "Access": "Достъп", "Are you sure?": "Сигурен ли си?", - "Record has been removed": "Record е премахнат", + "Record has been removed": "Записът беше премахнат", "Wrong username/password": "Грешно потребителско име / парола", - "Post cannot be empty": "Публикацията не може да бъде празно", + "Post cannot be empty": "Публикацията не може да бъде празна", "Removing...": "Премахва се ...", - "Unlinking...": "Прекратяването на връзката ...", + "Unlinking...": "Премахне на релацията ...", "Posting...": "Публикува се ...", "Username can not be empty!": "Потребителското име не може да бъде празно!", - "Cache is not enabled": "Cache не е активиран", - "Cache has been cleared": "Cache е изчистена", - "Rebuild has been done": "Rebuild е направено", - "Saving...": "Се запазва ...", + "Cache is not enabled": "Кешът не е активиран", + "Cache has been cleared": "Кешът беше изчистен", + "Rebuild has been done": "Регенерирането на кеша беше завършено", + "Saving...": "Запазва се...", "Modified": "Променено", - "Created": "Създаден", - "Create": "създавам", - "create": "създавам", - "Overview": "Преглед", - "Details": "детайли", - "Add Field": "Добави Невярно", + "Created": "Създадено", + "Create": "Създаване", + "create": "създаде", + "Overview": "Общ преглед", + "Details": "Детайли", + "Add Field": "Търсене по поле", "Add Dashlet": "Добави Dashlet", - "Filter": "филтър", + "Filter": "Филтър", "Edit Dashboard": "Редактиране на таблото", "Add": "Добави", "Add Item": "Добавете артикул", "Reset": "Нулиране", "Menu": "Меню", - "More": "| Повече ▼", + "More": "Повече ▼", "Search": "Търсене", - "Only My": "Само ми", - "Open": "отворено", - "About": "относно", + "Only My": "Само мои", + "Open": "Отворени", + "About": "Относно", "Refresh": "Обновяване", "Remove": "Премахване", - "Options": "Настроики", + "Options": "Опции", "Username": "Потребител", - "Password": "парола", + "Password": "Парола", "Login": "Влизане", - "Log Out": "Излез от профила си", + "Log Out": "Изход", "Preferences": "Предпочитания", - "State": "състояние", - "Street": "улица", - "Country": "Страна", - "City": "град", - "PostalCode": "пощенски код", + "State": "Област", + "Street": "Улица", + "Country": "Държава", + "City": "Град", + "PostalCode": "Пощенски код", "Followed": "Следван", - "Follow": "последвам", - "Followers": "последователи", - "Clear Local Cache": "Изчистване на локален кеш", - "Actions": "мерки", + "Follow": "Последване", + "Followers": "Последователи", + "Clear Local Cache": "Изчистване на локалния кеш", + "Actions": "Действия", "Delete": "Изтрий", "Update": "Актуализация", "Save": "Запази", - "Edit": "редактиране", - "View": "изглед", + "Edit": "Редактиране", + "View": "Преглед", "Cancel": "Отказ", "Apply": "Приложи", - "Unlink": "Прекратяване на връзката,", - "Mass Update": "Маса Актуализация", - "Export": "износ", + "Unlink": "Отсвържи", + "Mass Update": "Масово обновление", + "Export": "Експорт", "No Data": "Няма данни", - "No Access": "Няма достъп", - "All": "всичко", + "No Access": "Нямате достъп", + "All": "Всички", "Active": "Активен", - "Inactive": "неактивен", + "Inactive": "Неактивен", "Write your comment here": "Напишете коментара си тук", - "Post": "пост", - "Stream": "поток", + "Post": "Публикуване", + "Stream": "Коментари / история", "Show more": "Покажи повече", - "Dashlet Options": "Dashlet Опции", + "Dashlet Options": "Dashlet опции", "Full Form": "Пълна форма", - "Person": "човек", - "First Name": "Първо име", + "Insert": "Добавяне", + "Person": "Човек", + "First Name": "Име", "Last Name": "Фамилия", - "Original": "оригинал", + "Original": "Оригинален", "You": "Ти", "you": "ти", "change": "промяна", "Change": "промяна", - "Primary": "първичен", + "Primary": "Основен", "Save Filter": "Запазване на филтъра", - "Administration": "администрация", - "Run Import": "Run внос", + "Administration": "Администрация", + "Run Import": "Стартирайте импортирането", + "Duplicate": "Дублиране", "Notifications": "Известия", "Mark all read": "Маркирай всичко като прочетено", "See more": "Виж повече", - "Today": "днес", - "Tomorrow": "утре", + "Today": "Днес", + "Tomorrow": "Утре", "Yesterday": "Вчера", "Submit": "Изпращане", - "Close": "Близо", - "Yes": "да", + "Close": "Затваряне", + "Yes": "Да", "No": "Не", - "Value": "стойност", + "Value": "Стойност", "Current version": "Сегашна версия", - "List View": "Списък с Прегледи", - "Tree View": "дървовиден изглед", - "Unlink All": "прекъснете връзката на всички", + "List View": "Лист интерфейс", + "Tree View": "Дървовиден интерфейс", + "Unlink All": "Отсвържи всички", "Total": "Обща сума", - "Print to PDF": "Печат на PDF", + "Print to PDF": "Принтирай PDF", "Default": "По подразбиране", - "Number": "номер", - "From": "от", - "To": "Да се", + "Number": "Номер", + "From": "От", + "To": "До", "Create Post": "Създаване на публикация", - "Previous Entry": "Предишна Влизане", - "Next Entry": "Следваща Влизане", + "Previous Entry": "Предишен запис", + "Next Entry": "Следващ запис", "View List": "Преглед на списъка", - "Attach File": "Прикачите файл", + "Attach File": "Прикачете файл", + "Skip": "Пропусни", "Attribute": "Атрибут", "Function": "функция", - "Self-Assign": "Самостоятелно Assign", - "Self-Assigned": "Самостоятелно целеви", - "Return to Application": "Връщане към Приложение", + "Self-Assign": "Самоназначаване", + "Self-Assigned": "Самоназначен", + "Return to Application": "Назад към платформата", "Select All Results": "Изберете всички резултати", - "Expand": "Разширете", - "Collapse": "колапс", + "Expand": "Разшири", + "Collapse": "Събери", "New notifications": "Нови известия", "Manage Categories": "Управление на категории", "Manage Folders": "Управление на папки", "Convert to": "Конвертиране в", "View Personal Data": "Преглед на личните данни", "Personal Data": "Лични данни", - "Erase": "Изтрива", - "Move Over": "Премести се", + "Erase": "Изтриване", + "Move Over": "Преместване", "Restore": "Възстанови", "View Followers": "Вижте последователи", "Convert Currency": "Конвертиране на валути", "Middle Name": "Презиме", - "View on Map": "Виж на картата" + "View on Map": "Виж на картата", + "Proceed": "Продължи", + "Attached": "Прикачено", + "Preview": "Преглед", + "Up": "Нагоре", + "Save & Continue Editing": "Запазване и продължаване на редакция", + "Save & New": "Запазване и създаване на нов", + "Field": "Поле", + "Resolution": "Резолюция", + "Resolve Conflict": "Разрешаване на конфликт", + "Download": "Изтегляне" }, "messages": { - "pleaseWait": "Моля Изчакай...", + "pleaseWait": "Моля изчакайте...", "posting": "Публикува се ...", "confirmLeaveOutMessage": "Сигурни ли сте, искате да напуснете формата?", - "notModified": "Вие не сте променяли рекорда", - "fieldIsRequired": "{задължително поле", - "fieldShouldAfter": "{Поле} трябва да бъде след {otherField}", - "fieldShouldBefore": "{Поле} трябва да бъде преди {otherField}", - "fieldShouldBeBetween": "{Поле} трябва да бъде между {мин} и {макс}", - "fieldBadPasswordConfirm": "{Поле} не потвърждава правилно", - "resetPreferencesDone": "Предпочитания е върнат към по подразбиране", + "notModified": "Нямате нови промени по текущия запис", + "fieldIsRequired": "{field} е задължително", + "fieldShouldAfter": "{field} трябва да бъде след {otherField}", + "fieldShouldBefore": "{field} трябва да бъде преди {otherField}", + "fieldShouldBeBetween": "{field} трябва да бъде между {min} и {max}", + "fieldBadPasswordConfirm": "{field} не е потвърдено правилно", + "resetPreferencesDone": "Предпочитания бяха възстановени по подразбиране", "confirmation": "Сигурен ли си?", - "unlinkAllConfirmation": "Сигурни ли сте, искате да прекратите всички свързани записи?", - "resetPreferencesConfirmation": "Сигурни ли сте, искате да нулирате предпочитания към по подразбиране?", - "removeRecordConfirmation": "Сигурни ли сте, че искате да премахнете запис?", - "unlinkRecordConfirmation": "Сигурни ли сте, искате да прекратите свързания запис?", + "unlinkAllConfirmation": "Сигурни ли сте, че искате да отсвържете всички свързани записи?", + "resetPreferencesConfirmation": "Сигурни ли сте, че искате да възстановите предпочитания по подразбиране?", + "removeRecordConfirmation": "Сигурни ли сте, че искате да изтриете записа?", + "unlinkRecordConfirmation": "Сигурни ли сте, искате да отсвържете свързания запис?", "removeSelectedRecordsConfirmation": "Сигурни ли сте, че искате да премахнете избраните записи?", - "massUpdateResult": "{Брой} записи са актуализирани", - "massUpdateResultSingle": "{Брой} запис е актуализиран", + "massUpdateResult": "{count} записа бяха актуализирани", + "massUpdateResultSingle": "{count} запис беше актуализиран", "noRecordsUpdated": "Не бяха актуализирани записи", - "massRemoveResult": "са премахнати {брой} записи", - "massRemoveResultSingle": "{Брой} запис е премахнат", + "massRemoveResult": "{count} записа бяха премахнати", + "massRemoveResultSingle": "{count} запис беше премахнат", "noRecordsRemoved": "Не бяха отстранени записи", - "clickToRefresh": "Кликнете, за да освежите", + "clickToRefresh": "Кликнете за да обновите", "writeYourCommentHere": "Напишете коментара си тук", - "writeMessageToUser": "Добави съобщение на {употреба}", - "typeAndPressEnter": "Тип и натиснете въведете", + "writeMessageToUser": "Напишете съобщение на {user}", + "typeAndPressEnter": "Напишете вашето съобщение и натиснете Enter", "checkForNewNotifications": "Проверка за нови известия", "duplicate": "Записът, който създавате може вече да съществува", - "dropToAttach": "Капка за прикачване", - "writeMessageToSelf": "Напишете съобщение в потока ви", - "checkForNewNotes": "Проверка за актуализации поток", - "internalPost": "Post ще се види само от вътрешни потребители", - "done": "Свършен", - "confirmMassFollow": "Сигурни ли сте, искате да следвате избрани записи?", - "confirmMassUnfollow": "Сигурни ли сте, искате да се прекрати следенето избрани записи?", - "massFollowResult": "{Брой} записи сега са последвани", - "massUnfollowResult": "{Брой} записи сега не са последвани", - "massFollowResultSingle": "{Брой} запис сега е последвано", - "massUnfollowResultSingle": "{Брой} запис сега не е последвано", - "massFollowZeroResult": "Нищо не се е последвано", - "massUnfollowZeroResult": "Нищо не стана Прекратихте следенето", - "fieldShouldBeEmail": "{} Поле трябва да е валиден имейл", - "fieldShouldBeFloat": "{Поле} трябва да бъде валиден поплавък", - "fieldShouldBeInt": "{Поле} трябва да бъде валиден число", - "fieldShouldBeDate": "{Поле} трябва да бъде валиден дата", - "fieldShouldBeDatetime": "{Поле} трябва да бъде валиден дата / час", - "internalPostTitle": "Мнение се вижда само от вътрешни потребители", + "dropToAttach": "Пуснете файла тук за да го прикачите", + "writeMessageToSelf": "Напишете съобщение във вашата активност", + "checkForNewNotes": "Проверете за актуализации на активността", + "internalPost": "Публикацията ще се вижда само от вътрешни потребители", + "done": "Готово", + "confirmMassFollow": "Наистина ли искате да следвате избраните записи?", + "confirmMassUnfollow": "Наистина ли искате да отследвате избраните записи?", + "massFollowResult": "{count} записи бяха последвани", + "massUnfollowResult": "{count} записи бяха отследвани", + "massFollowResultSingle": "{count} запис беше последван", + "massUnfollowResultSingle": "{count} запис беше отследван", + "massFollowZeroResult": "Нищо не беше последвано", + "massUnfollowZeroResult": "Нищо не беше беше отследвано", + "fieldShouldBeEmail": "{field} трябва да е валиден имейл", + "fieldShouldBeFloat": "{field} трябва да е валидно число с десетичен знак", + "fieldShouldBeInt": "{field} трябва да е валидно число", + "fieldShouldBeDate": "{field} трябва да е валидна дата", + "fieldShouldBeDatetime": "{field} трябва да е валидна дата/час", + "internalPostTitle": "Публикацията се вижда само от вътрешни потребители", "loading": "Зареждане...", "saving": "Се запазва ...", "fieldMaxFileSizeError": "Файла не трябва да надвишава {макс} Mb", - "fieldShouldBeLess": "{Поле} не трябва да бъде по-голям {стойност}", - "fieldShouldBeGreater": "{Поле} не трябва да бъде по-малко от {стойност}", - "fieldIsUploading": "Качва се в процес на изпълнение", - "erasePersonalDataConfirmation": "Проверени полета ще бъдат изтрити за постоянно. Сигурен ли си?", - "massPrintPdfMaxCountError": "Не може да печата повече, че {} MAXCOUNT записи.", - "fieldValueDuplicate": "Duplicate стойност", - "unlinkSelectedRecordsConfirmation": "Сигурни ли сте, искате да прекратите избрани записи?", - "recalculateFormulaConfirmation": "Сигурни ли сте, искате да се преизчисли формула за избрани записи?", - "fieldExceedsMaxCount": "Брой надвишава макс оставя {MAXCOUNT}", + "fieldShouldBeLess": "{field} не трябва да бъде със стойност по-голяма от {value}", + "fieldShouldBeGreater": "{field} не трябва да бъде със стойност по-малка от {value}", + "fieldIsUploading": "Качването в процес на изпълнение", + "erasePersonalDataConfirmation": "Избраните полета ще бъдат изтрити завинаги. Сигурен ли си?", + "massPrintPdfMaxCountError": "Не може да се покажат повече от {maxCount} записи.", + "fieldValueDuplicate": "Дублирана стойност", + "unlinkSelectedRecordsConfirmation": "Наистина ли искате да отсвържете избраните записи?", + "recalculateFormulaConfirmation": "Наистина ли искате да преизчислите формулите за избраните записи?", + "fieldExceedsMaxCount": "Броят надвишава максимално позволения - {maxCount}", "notUpdated": "Не е актуализиран", - "maintenanceMode": "Приложението в момента е в режим на поддръжка. Само администратори имат достъп. Режим на поддръжка може да се деактивира по Администрация → Настройки." + "maintenanceMode": "Приложението в момента е в режим на поддръжка. Само администратори имат достъп.\n\nРежимът на поддръжка може да бъде деактивиран в Администриране → Настройки.", + "fieldInvalid": "{field} е невалидно", + "resolveSaveConflict": "Записът е променен. Трябва да разрешите конфликта, преди да можете да запазите записа.", + "massActionProcessed": "Масовото действие е обработено успешно." }, "boolFilters": { - "onlyMy": "Само ми", + "onlyMy": "Само мои", "followed": "Следван", - "onlyMyTeam": "Моят отбор" + "onlyMyTeam": "Моят отдел" }, "presetFilters": { - "followed": "Следван", - "all": "всичко" + "followed": "Следвани", + "all": "Всички" }, "massActions": { "remove": "Премахване", - "massUpdate": "Маса Актуализация", - "export": "износ", - "follow": "последвам", - "unfollow": "Не следвай", + "merge": "Сливане", + "massUpdate": "Масово обновяване", + "export": "Експорт", + "follow": "Последване", + "unfollow": "Отследване", "convertCurrency": "Конвертиране на валути", - "printPdf": "Печат на PDF", - "unlink": "Прекратяване на връзката,", - "recalculateFormula": "Преизчисли формула" + "printPdf": "Принтиране на PDF", + "unlink": "Отсвързване", + "recalculateFormula": "Преизчисляване на формули", + "update": "Обновяване" }, "fields": { - "name": "име", - "firstName": "Първо име", + "name": "Име", + "firstName": "Име", "lastName": "Фамилия", - "salutationName": "поздрав", - "assignedUser": "целеви потребителя", - "assignedUsers": "присвоени Потребители", - "emailAddress": "електронна поща", - "assignedUserName": "Целеви потребителско име", - "teams": "Отбори", - "createdAt": "Създаден В", - "modifiedAt": "Променено В", - "createdBy": "Създадено от", - "modifiedBy": "променено от", - "description": "описание", - "address": "адрес", - "phoneNumber": "телефон", - "phoneNumberMobile": "Телефон (Mobile)", - "phoneNumberHome": "Телефон (Home)", - "phoneNumberFax": "Телефон (факс)", - "phoneNumberOffice": "Телефон (офис)", - "phoneNumberOther": "Телефон (други)", + "salutationName": "Обръщение", + "assignedUser": "Назначен потребител", + "assignedUsers": "Назначени потребители", + "emailAddress": "Електронна поща", + "assignedUserName": "Назначен потребител", + "teams": "Отдели", + "createdAt": "Създаден в", + "modifiedAt": "Променен в", + "createdBy": "Създаден от", + "modifiedBy": "Променен от", + "description": "Описание", + "address": "Адрес", + "phoneNumber": "Телефон", + "phoneNumberMobile": "Телефон (Мобилен)", + "phoneNumberHome": "Телефон (Домашен)", + "phoneNumberFax": "Телефон (Факс)", + "phoneNumberOffice": "Телефон (Офис)", + "phoneNumberOther": "Телефон (Друг)", "order": "Поръчка", - "parent": "родител", - "children": "деца", - "id": "документ за самоличност", - "emailAddressData": "E-mail адрес на данни", - "phoneNumberData": "Телефонен номер на данни", - "ids": "документи за самоличност", + "parent": "Родител", + "children": "Свързани записи", + "emailAddressData": "Данни за имейл адрес", + "phoneNumberData": "Данни за телефонен номер", + "ids": "ID-та", "names": "Имена", - "emailAddressIsOptedOut": "E-mail адрес е отказалите се", + "emailAddressIsOptedOut": "Имейл адресът е отписан", "targetListIsOptedOut": "Е изключена (Target List)", "type": "Тип", - "phoneNumberIsOptedOut": "Телефонният номер е с отказалите се", - "types": "Видове", + "phoneNumberIsOptedOut": "Телефонния номер е отписан", + "types": "Типове", "middleName": "Презиме" }, "links": { - "assignedUser": "целеви потребителя", + "assignedUser": "Назначен потребител", "createdBy": "Създадено от", - "modifiedBy": "променено от", - "team": "екип", + "modifiedBy": "Променено от", + "team": "Екип", "roles": "Роли", - "teams": "Отбори", + "teams": "Отдели", "users": "Потребители", - "parent": "родител", - "children": "деца" + "parent": "Родител", + "children": "Деца" }, "dashlets": { - "Stream": "поток", - "Emails": "Моят Входящи", - "Records": "Запис Списък" + "Stream": "Дейности", + "Emails": "Входящи имейли", + "Records": "Списък със записи" }, "notificationMessages": { - "assign": "{EntityType} {лице} е определен да ви", - "emailReceived": "Email получена от {} от", - "entityRemoved": "{Употреба} отстранява {entityType} {лице}" + "assign": "{entityType} {entity} беше назначено към теб", + "emailReceived": "Беше получен имейл от {from}", + "entityRemoved": "{user} премахна {entityType} {entity}" }, "streamMessages": { - "post": "{Употреба} публикуван на {entityType} {лице}", - "attach": "{Употреба} прикрепен на {entityType} {лице}", - "status": "{Употреба} актуализиран {поле} на {entityType} {лице}", - "update": "{Употреба} актуализиран {entityType} {лице}", - "postTargetTeam": "{Употреба} публикуван отбор {цел}", - "postTargetTeams": "{Употреба} публикуван отбори {цел}", - "postTargetPortal": "{Употреба} публикуван портал {цел}", - "postTargetPortals": "{Употреба} публикуван портали {цел}", - "postTarget": "{Употреба} публикуван {цел}", - "postTargetYou": "{Употреба} публикуван ви", - "postTargetYouAndOthers": "{} Потребителското качен на {} мишена и вие", - "postTargetAll": "{Употреба} публикуван на всички", - "mentionInPost": "{Употреба} споменато {споменато} в {entityType} {лице}", - "mentionYouInPost": "{Употреба} ви спомена в {entityType} {лице}", - "mentionInPostTarget": "{Употреба} споменати {споменато} в пост", - "mentionYouInPostTarget": "{Употреба} ви спомена в публикация на {цел}", - "mentionYouInPostTargetAll": "{Употреба} ви спомена в публикация на всички", - "mentionYouInPostTargetNoTarget": "{Употреба} ви спомена в публикация", - "create": "{Употреба} създаден {entityType} {лице}", - "createThis": "{Употреба} създаде тази {entityType}", - "createAssignedThis": "{Употреба} създаде тази {entityType} назначен {правоприемник}", - "createAssigned": "{Употреба} създаден {entityType} {лице} назначен {правоприемник}", - "assign": "{Употреба} целеви {entityType} {лице} до {правоприемник}", - "assignThis": "{Употреба} разпределени тези {entityType} до {правоприемник}", - "postThis": "{Употреба} публикуван", - "attachThis": "{Употреба} прикрепен", - "statusThis": "{Употреба} актуализиран {поле}", - "updateThis": "{Употреба} актуализиран това {entityType}", - "createRelatedThis": "{Употреба} създаден {relatedEntityType} {relatedEntity} свързани с това {entityType}", - "createRelated": "{Употреба} създаден {relatedEntityType} {relatedEntity} свързани с {entityType} {лице}", - "relate": "{Употреба} свързан {relatedEntityType} {relatedEntity} с {entityType} {лице}", - "relateThis": "{Употреба} свързан {relatedEntityType} {relatedEntity} с това {entityType}", - "emailReceivedFromThis": "Email получена от {} от", - "emailReceivedInitialFromThis": "Email получена от {} от това {entityType} създаден", - "emailReceivedThis": "Email получи", - "emailReceivedInitialThis": "Email получи това {entityType} създаден", - "emailReceivedFrom": "Email получена от {} от, свързани с {entityType} {лице}", - "emailReceivedFromInitial": "Email получена от {от}, {entityType} {лице} създаден", - "emailReceivedInitialFrom": "Email получена от {от}, {entityType} {лице} създаден", - "emailReceived": "Мейл получените свързани с {entityType} {лице}", - "emailReceivedInitial": "получил Email: {entityType} {} субект създаден", - "emailSent": "{} От изпраща имейл, свързан с {entityType} {} лице", - "emailSentThis": "{С} изпрати имейл", - "postTargetSelf": "{Употреба} самостоятелно публикуван", - "postTargetSelfAndOthers": "{Употреба} публикуван {цел} и themself", - "createAssignedYou": "{} Потребител създаден {entityType} {} лице, зададен ви", - "createAssignedThisSelf": "{Употреба} създаде тази {entityType} самостоятелно целеви", - "createAssignedSelf": "{Употреба} създаден {entityType} {лице} самостоятелно целеви", - "assignYou": "{Употреба} целеви {entityType} {лице} ви", - "assignThisVoid": "{Употреба} неприсвоен това {entityType}", - "assignVoid": "{Употреба} неприсвоен {entityType} {лице}", - "assignThisSelf": "{Употреба} самостоятелно разпределени тези {entityType}", - "assignSelf": "{Употреба} самостоятелно определен {entityType} {лице}" + "post": "{user} публикува в {entityType} {entity}", + "attach": "{user} прикачи файл в {entityType} {entity}", + "status": "{user} обнови {field} в {entityType} {entity}", + "update": "{user} обнови {entityType} {entity}", + "postTargetTeam": "{user} публикува до отдел {target}", + "postTargetTeams": "{user} публикува до отдели {target}", + "postTargetPortal": "{user} публикува в портал {target}", + "postTargetPortals": "{user} публикува в портали {target}", + "postTarget": "{user} публикува към {target}", + "postTargetYou": "{user} публикува към теб", + "postTargetYouAndOthers": "{user} публикува към {target} и теб", + "postTargetAll": "{user} публикува към всички", + "mentionInPost": "{user} спомена {mentioned} в {entityType} {entity}", + "mentionYouInPost": "{user} ви спомена в {entityType} {entity}", + "mentionInPostTarget": "{user} спомена {mentioned} в пост", + "mentionYouInPostTarget": "{user} ви спомена в публикация на {target}", + "mentionYouInPostTargetAll": "{user} ви спомена в публикация към всички", + "mentionYouInPostTargetNoTarget": "{user} ви спомена в публикация", + "create": "{user} създаде {entityType} {entity}", + "createThis": "{user} създаде {entityType}", + "createAssignedThis": "{user} създаде {entityType} и назначи към {assignee}", + "createAssigned": "{user} създаде {entityType} {entity} и назначи към {assignee}", + "assign": "{user} назначи {entityType} {entity} към {assignee}", + "assignThis": "{user} назначи {entityType} към {assignee}", + "postThis": "{user} публикува", + "attachThis": "{user} прикачи файл", + "statusThis": "{user} обнови {field}", + "updateThis": "{user} актуализира {entityType}", + "createRelatedThis": "{user} създаде {relatedEntityType} {relatedEntity} свързано с {entityType}", + "createRelated": "{user} създаде {relatedEntityType} {relatedEntity} свързано с {entityType} {entity}", + "relate": "{user} свърза {relatedEntityType} {relatedEntity} с {entityType} {entity}", + "relateThis": "{user} свърза {relatedEntityType} {relatedEntity} с {entityType}", + "emailReceivedFromThis": "Беше получен имейл от {from}", + "emailReceivedInitialFromThis": "Беше получен имейл от {from} и нов/а {entityType} беше създаден/а", + "emailReceivedThis": "Беше получен имейл", + "emailReceivedInitialThis": "Беше получен имейл и беше създаден/а {entityType}", + "emailReceivedFrom": "Беше получен имейл от {from}, свързан с {entityType} {entity}", + "emailReceivedFromInitial": "Беше получен имейл от {from}, и беше създаден/а {entityType} {entity}", + "emailReceivedInitialFrom": "Беше получен имейл от {from}, и беше създаден/а {entityType} {entity}", + "emailReceived": "Полученият имейл беше свързан с {entityType} {entity}", + "emailReceivedInitial": "Нов имейл: {entityType} {entity} беше създаден/а", + "emailSent": "{by} изпрати нов имейл, свързан с {entityType} {entity}", + "emailSentThis": "{by} изпрати имейл", + "postTargetSelf": "{user} публикува във своята активност", + "postTargetSelfAndOthers": "{user} публикува в {target}", + "createAssignedYou": "{user} създаде {entityType} {entity} и назначи към вас", + "createAssignedThisSelf": "{user} създаде {entityType} и самоназначи", + "createAssignedSelf": "{user} създаде {entityType} {entity} и самоназначи", + "assignYou": "{user} назначи {entityType} {entity} към теб", + "assignThisVoid": "{user} премахна самоназначаване от {entityType}", + "assignVoid": "{user} премахна самоназначаване от {entityType} {entity}", + "assignThisSelf": "{user} самоназначи {entityType}", + "assignSelf": "{user} самоназначи {entityType} {entity}" }, "lists": { "monthNamesShort": [ - "Ян", - "Февруари", - "Mar", - "Април", + "Ян.", + "Фев.", + "Март", + "Апр.", "Май", - "юни", + "Юни", "Юли", - "Август", - "Септември", - "Октомври", - "Нов", - "DEC" + "Авг.", + "Септ.", + "Окт.", + "Ноем.", + "Дек." ], "dayNames": [ - "Неделя Понеделник Вторник Сряда Четвъртък Петък Събота" + "Неделя", + "Понеделник", + "Вторник", + "Сряда", + "Четвъртък", + "Петък", + "Събота" ], "dayNamesShort": [ - "Сън", - "Понеделник", - "вт", - "Пет", - "Пет", - "Пет", - "Сат" + "Нед.", + "Пон.", + "Втор.", + "Ср.", + "Четв.", + "Пет.", + "Съб." ], "dayNamesMin": [ - "Су", - "Мо", - "Tu", - "Ние", - "Th", - "отец", - "Ад" + "Нед.", + "Пон.", + "Втор.", + "Ср.", + "Четв.", + "Пет.", + "Съб." ] }, "options": { "salutationName": { "Mr.": "Г-н.", - "Mrs.": "Госпожа", + "Mrs.": "Г-жа.", "Ms.": "Г-ца.", - "Dr.": "Д-р" + "Dr.": "Д-р." }, "language": { - "af_ZA": "африканс", - "az_AZ": "азербайджански", - "be_BY": "Беларус", - "bg_BG": "български", - "bn_IN": "бенгалски", - "bs_BA": "босненски", - "ca_ES": "каталонски", - "cs_CZ": "чешки", - "cy_GB": "уелски", - "da_DK": "датски", + "af_ZA": "Африканс", + "az_AZ": "Азербайджански", + "be_BY": "Беларуски", + "bg_BG": "Български", + "bn_IN": "Бенгалски", + "bs_BA": "Босненски", + "ca_ES": "Каталунски", + "cs_CZ": "Чешки", + "cy_GB": "Уелски", + "da_DK": "Датски", "de_DE": "Немски", "el_GR": "Гръцки", + "en_GB": "Английски (UK)", + "en_US": "Английски (US)", "es_ES": "Испански (Испания)", "et_EE": "естонски", "eu_ES": "баска", @@ -518,37 +551,38 @@ "ja_JP": "японски", "ka_GE": "грузински", "km_KH": "Червените", - "ko_KR": "корейски", - "ku_TR": "кюрдски", - "lt_LT": "литовски", - "lv_LV": "латвийски", - "mk_MK": "македонски", - "ml_IN": "малаялам", - "ms_MY": "малайски", - "nb_NO": "норвежки книжовен", - "nn_NO": "съвременен норвежки", - "ne_NP": "непалски", - "nl_NL": "холандски", - "pa_IN": "пенджабски", - "pl_PL": "полски", - "ps_AF": "пущу", + "ko_KR": "Корейски", + "ku_TR": "Кюрдски", + "lt_LT": "Литовски", + "lv_LV": "Латвийски", + "mk_MK": "Македонски", + "ml_IN": "Малаялам", + "ms_MY": "Малайски", + "nb_NO": "Норвежки книжовен", + "nn_NO": "Съвременен норвежки", + "ne_NP": "Непалски", + "nl_NL": "Холандски", + "pa_IN": "Пенджабски", + "pl_PL": "Полски", + "ps_AF": "Пущу", "pt_BR": "Португалски (Бразилия)", "pt_PT": "Португалски (Португалия)", - "ro_RO": "румънски", + "ro_RO": "Румънски", "ru_RU": "Руски", - "sk_SK": "словашки", - "sl_SI": "словенец", - "sq_AL": "албански", - "sr_RS": "сръбски", - "sv_SE": "шведски", - "sw_KE": "суахили", - "ta_IN": "тамилски", - "te_IN": "телугу", - "tl_PH": "тагалог", + "sk_SK": "Словашки", + "sl_SI": "Словенец", + "sq_AL": "Албански", + "sr_RS": "Сръбски", + "sv_SE": "Шведски", + "sw_KE": "Суахили", + "ta_IN": "Тамилски", + "te_IN": "Телугу", + "th_TH": "Тайландски", + "tl_PH": "Тагалог", "tr_TR": "Турски", - "uk_UA": "украински", - "ur_PK": "урду", - "vi_VN": "виетнамски", + "uk_UA": "Украински", + "ur_PK": "Урду", + "vi_VN": "Виетнамски", "zh_CN": "Опростен китайски (Китай)", "zh_HK": "Традиционен китайски (Хонконг)", "zh_TW": "Традиционен китайски (Тайван)", @@ -559,64 +593,64 @@ "notOn": "Не на", "after": "След", "before": "Преди", - "between": "между", - "today": "днес", - "past": "минало", - "future": "бъдеще", + "between": "Между", + "today": "Днес", + "past": "Минало", + "future": "Бъдеще", "currentMonth": "Текущ месец", "lastMonth": "Миналия месец", - "currentQuarter": "текущото тримесечие", + "currentQuarter": "Текущото тримесечие", "lastQuarter": "Последно тримесечие", "currentYear": "Текуща година", "lastYear": "Миналата година", "lastSevenDays": "Последните 7 дни", - "lastXDays": "Последно X Дни", - "nextXDays": "Следваща X Дни", - "ever": "някога", - "isEmpty": "Празно е", - "olderThanXDays": "По-стари от X Дни", + "lastXDays": "Последните X Дни", + "nextXDays": "Следващите X Дни", + "ever": "Някога", + "isEmpty": "Е празно", + "olderThanXDays": "По-старо от X Дни", "afterXDays": "След X дни", "nextMonth": "Следващият месец", - "currentFiscalYear": "Текущата финансова година", - "lastFiscalYear": "Последната финансова година", - "currentFiscalQuarter": "Текущ фискално тримесечие", + "currentFiscalYear": "Текуща фискална година", + "lastFiscalYear": "Последната фискална година", + "currentFiscalQuarter": "Текущо фискално тримесечие", "lastFiscalQuarter": "Последно фискално тримесечие" }, "searchRanges": { - "is": "е", - "isEmpty": "Празно е", - "isNotEmpty": "Не е празна", - "isFromTeams": "Е от отбора", - "isOneOf": "Всеки Of", - "anyOf": "Всеки Of", + "is": "Е", + "isEmpty": "Е празно", + "isNotEmpty": "Не е празно", + "isFromTeams": "Е от отдел / екип", + "isOneOf": "Всеки от избраните", + "anyOf": "Всеки от избраните", "isNot": "Не е", - "isNotOneOf": "Никой от", - "noneOf": "Никой от", - "allOf": "Всички", - "any": "който и да е" + "isNotOneOf": "Никой от избраните", + "noneOf": "Никой от избраните", + "allOf": "Всички от избраните", + "any": "Който и да е" }, "varcharSearchRanges": { - "equals": "Се равнява", + "equals": "Се равнява на", "like": "Е като (%)", "startsWith": "Започва с", - "endsWith": "Завършва със", + "endsWith": "Завършва с", "contains": "Съдържа", - "isEmpty": "Празно е", - "isNotEmpty": "Не е празна", + "isEmpty": "Е празно", + "isNotEmpty": "Не е празно", "notLike": "Не е като (%)", - "notContains": "Не Съдържа", + "notContains": "Не съдържа", "notEquals": "Не е равно на" }, "intSearchRanges": { - "equals": "Се равнява", + "equals": "Се равнява на", "notEquals": "Не е равно на", - "greaterThan": "По-голям от", + "greaterThan": "По-голямо от", "lessThan": "По-малко от", - "greaterThanOrEquals": "-Голямо или равно", - "lessThanOrEquals": "По-малко-голямо или равно", - "between": "между", - "isEmpty": "Празно е", - "isNotEmpty": "Не е празна" + "greaterThanOrEquals": "Е по-голямо или равно на", + "lessThanOrEquals": "Е по-малко или равно на", + "between": "Между", + "isEmpty": "Е празно", + "isNotEmpty": "Не е празно" }, "autorefreshInterval": { "0": "Нито един", @@ -627,41 +661,49 @@ "0.5": "30 секунди" }, "phoneNumber": { - "Mobile": "Подвижен", - "Office": "офис", - "Fax": "факс", - "Home": "У дома", - "Other": "друг" + "Mobile": "Мобилен", + "Office": "Офис", + "Fax": "Факс", + "Home": "Домашен", + "Other": "Друг" + }, + "saveConflictResolution": { + "current": "Текущо", + "actual": "Актуално", + "original": "Оригинално" } }, "sets": { "summernote": { "NOTICE": "Можете да намерите превод тук: https://github.com/HackerWins/summernote/tree/master/lang", "font": { - "bold": "смел", - "italic": "италийски", + "bold": "Удебелен", + "italic": "Наклонен", "underline": "Подчертан", - "strike": "Стачка", + "strike": "Зачеркнат", "clear": "Премахване на шрифта", "height": "Височина на линията", "name": "Шрифтово семейство", "size": "Размер на шрифта" }, "image": { - "image": "снимка", + "image": "Снимка", "insert": "Вмъкване на изображение", - "resizeFull": "Resize Пълното", - "resizeQuarter": "Resize Квартал", - "floatRight": "Float Право", + "resizeFull": "Оразмеряване в пълен формат", + "resizeHalf": "Оразмеряване в половин формат", + "resizeQuarter": "Оразмеряване в една четвърт", + "floatLeft": "Float в ляво", + "floatRight": "Float в дясно", "dragImageHere": "Плъзнете изображение тук", - "selectFromFiles": "Изберете от файлове", + "selectFromFiles": "Изберете от Файлове", "url": "URL адрес на изображението", "remove": "Премахване на изображението" }, "link": { - "link": "връзка", - "unlink": "Прекратяване на връзката,", - "edit": "редактиране", + "link": "Линк", + "insert": "Вмъкване на линк", + "unlink": "Премахване на линк", + "edit": "Редактиране", "textToDisplay": "Текст за показване", "url": "До каква URL да води тази връзка?", "openInNewWindow": "Отвори в нов прозорец" @@ -686,7 +728,7 @@ "pre": "код" }, "lists": { - "unordered": "неподреден списък?", + "unordered": "Неподреден списък", "ordered": "Подреден списък" }, "options": { @@ -723,17 +765,15 @@ } }, "streamMessagesMale": { - "postTargetSelfAndOthers": "{Употреба} публикуван {цел} и се" + "postTargetSelfAndOthers": "{user} публикува в {target}" }, "streamMessagesFemale": { - "postTargetSelfAndOthers": "{Употреба} публикуван {цел} и се" + "postTargetSelfAndOthers": "{user} публикува в {target}" }, "durationUnits": { - "d": "д", - "h": "з", - "s": "с" - }, - "listViewModes": { - "list": "списък" + "d": "ден", + "h": "ч.", + "m": "мин.", + "s": "сек." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Import.json b/application/Espo/Resources/i18n/bg_BG/Import.json index ddd0c14589..aff1e94b40 100644 --- a/application/Espo/Resources/i18n/bg_BG/Import.json +++ b/application/Espo/Resources/i18n/bg_BG/Import.json @@ -1,87 +1,102 @@ { "labels": { - "Revert Import": "Връщане внос", - "Return to Import": "Върни се Внос", - "Run Import": "Run внос", - "Back": "обратно", - "Field Mapping": "Невярно Картографиране", - "Default Values": "стойности по подразбиране", - "Add Field": "Добави Невярно", + "Revert Import": "Анулиране на импортирането", + "Return to Import": "Връщане към импортирането", + "Run Import": "Стартиране на импортирането", + "Back": "Обратно", + "Field Mapping": "Свързване на полета", + "Default Values": "Стойности по подразбиране", + "Add Field": "Добави поле", "Created": "Създаден", "Updated": "Обновено", - "Result": "резултат", + "Result": "Резултат", "Show records": "Показване на записи", - "Remove Duplicates": "Премахване Дубликати", - "importedCount": "Внесените (брой)", - "duplicateCount": "Дубликати (брой)", - "updatedCount": "Обновено (брой)", - "Create Only": "Създаване Само", + "Remove Duplicates": "Премахване на дубликати", + "importedCount": "Импортирани (брой записи)", + "duplicateCount": "Дубликати (брой записи)", + "updatedCount": "Обновени (брой записи)", + "Create Only": "Само създаване", "Create and Update": "Създаване и обновяване", - "Update Only": "Актуализиране само", - "Update by": "Актуализация от", - "Set as Not Duplicate": "Задай като не да дублират", - "First Row Value": "Първо Row Value", - "Field": "поле", - "What to Import?": "Какво да Внос?", + "Update Only": "Само обновяване", + "Update by": "Обновяване по (поле)", + "Set as Not Duplicate": "Отбележи като недубликат", + "File (CSV)": "Файл (CSV)", + "First Row Value": "Стойност на първия ред", + "Skip": "Пропускане", + "Field": "Поле", + "What to Import?": "Какво да импортирам?", "Entity Type": "Тип на обекта", "What to do?": "Какво да правя?", - "Properties": "Имоти", - "Person Name Format": "Лице Форматът на името", + "Properties": "Свойства", + "Header Row": "Имам хедър във файла", + "Person Name Format": "Формат на имената", "John Smith": "Джон Смит", - "Smith John": "Иван Петров", - "Smith, John": "Петров, Иван", - "Field Delimiter": "Невярно разделител", + "Smith John": "Смит Джон", + "Smith, John": "Смит, Джон", + "Field Delimiter": "Разделител на полетата", "Date Format": "Формат на датата", - "Decimal Mark": "десетичния знак", + "Decimal Mark": "Десетичен знак", "Text Qualifier": "Текст Qualifier", "Time Format": "Времеви формат", "Currency": "Валута", - "Preview": "предварителен преглед", - "Next": "Следващия", - "Step 1": "Етап 1", + "Preview": "Предварителен преглед", + "Next": "Следваща стъпка", + "Step 1": "Стъпка 1", "Step 2": "Стъпка 2", - "Double Quote": "Двойна цитат", + "Double Quote": "Двойни кавички", "Single Quote": "Единични кавички", - "Imported": "внесен", + "Imported": "Импортирани", "Duplicates": "Дубликати", - "Skip searching for duplicates": "Напред търсене на дубликати", + "Skip searching for duplicates": "Пропускане на търсенето на дубликати", "Timezone": "Часова зона", - "Remove Import Log": "Премахване Внос Вход", - "New Import": "Нов внос", - "Import Results": "внос Резултати", - "Silent Mode": "Тих режим" + "Remove Import Log": "Премахване на логовете от импортирането", + "New Import": "Ново импортиране", + "Import Results": "Резултати от импортиране", + "Silent Mode": "Тих режим", + "New import with same params": "Ново импортиране със същите настройки", + "Run Manually": "Ръчно стартиране" }, "messages": { - "utf8": "Трябва да е UTF-8 кодирани", - "duplicatesRemoved": "Дубликати премахнати", - "inIdle": "Изпълнение на празен ход (за големи данни; чрез Cron)", - "revert": "Това ще премахне всички внесени документи за постоянно.", - "removeDuplicates": "Това ще премахнете всички внесени документи, които са били признати за дубликати.", - "confirmRevert": "Това ще премахне всички внесени документи за постоянно. Сигурен ли си?", - "confirmRemoveDuplicates": "Това ще премахнете всички внесени документи, които са били признати за дубликати. Сигурен ли си?", - "removeImportLog": "Това ще премахне дневника за внос. ще бъдат запазени Всички вносни записи. Използвайте го, ако сте сигурни, че внос е добре.", - "confirmRemoveImportLog": "Това ще премахне дневника за внос. ще бъдат запазени Всички вносни записи. Вие няма да бъдете в състояние да се върне резултати за внос. Сигурен ли си?" + "utf8": "Трябва да е UTF-8 енкодинг", + "duplicatesRemoved": "Премахнати дубликати", + "inIdle": "Изпълнение чрез cron (за големи данни)", + "revert": "Това ще премахне за постоянно всички импортирани записи.", + "removeDuplicates": "Това ще премахне за постоянно всички импортирани записи, които са били разпознати като дублирани.", + "confirmRevert": "Това ще премахне за постоянно всички импортирани записи. Сигурен ли си?", + "confirmRemoveDuplicates": "Това ще премахне за постоянно всички импортирани записи, които са били разпознати като дублирани. Сигурен ли си?", + "removeImportLog": "Това ще премахне всички логовете за импортирането. Всички внесени записи ще се съхраняват. Използвайте го, ако сте сигурни, че импортирането е наред.", + "confirmRemoveImportLog": "Това ще премахне дневника за импортиране. Всички внесени записи ще се съхраняват. Няма да можете да върнете резултатите от импортирането. Сигурен ли си?" }, "fields": { - "file": "досие", + "file": "Файл", "entityType": "Тип на обекта", - "imported": "Внесените Records", - "duplicates": "дублирани записи", - "updated": "Актуализирани Records", + "imported": "Импортирани записи", + "duplicates": "Дублирани записи", + "updated": "Актуализирани записи", "status": "Статус" }, "options": { "status": { - "Failed": "Се провали", + "Failed": "Провалено", "In Process": "В процес", - "Complete": "пълен" + "Complete": "Завършено", + "Standby": "Очаква се", + "Pending": "Предстои" }, "personNameFormat": { - "f l": "Първи последен", - "l f": "Последна Първи", - "f m l": "Първо Близкия Последна", - "l f m": "Последна Първи Близкия", - "l, f": "Последно, Първа" + "f l": "Име Фамилия", + "l f": "Фамилия Име", + "f m l": "Име Презиме Фамилия", + "l f m": "Фамилия Име Презиме", + "l, f": "Фамилия, Име" } + }, + "strings": { + "commandToRun": "Команда за изпълнение (от CLI)", + "saveAsDefault": "Запази по подразбиране" + }, + "tooltips": { + "manualMode": "Ако е отметнато, ще трябва да стартирате импортиране ръчно от CLI. Командата ще се покаже след настройка на импортирането.", + "silentMode": "Повечето скриптове и проверки ще бъдат пропуснати, бележки за активност няма да бъдат създадени. Импортирането ще се извърши по-бързо." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/InboundEmail.json b/application/Espo/Resources/i18n/bg_BG/InboundEmail.json index 88064afca5..f4996f9eef 100644 --- a/application/Espo/Resources/i18n/bg_BG/InboundEmail.json +++ b/application/Espo/Resources/i18n/bg_BG/InboundEmail.json @@ -1,83 +1,83 @@ { "fields": { - "name": "име", + "name": "Име", "emailAddress": "Имейл адрес", "status": "Статус", - "assignToUser": "Assign за потребителя", - "host": "домакин", + "assignToUser": "Назначаване към потребител", + "host": "Сървър", "username": "Потребител", - "password": "парола", - "port": "порт", - "monitoredFolders": "наблюдавани папки", - "trashFolder": "кошчето", - "createCase": "Създаване на дело", + "password": "Парола", + "port": "Порт", + "monitoredFolders": "Наблюдавани папки", + "trashFolder": "Кошче", + "createCase": "Създаване на тикет", "reply": "Автоматичен отговор", - "caseDistribution": "дело Разпределение", - "replyEmailTemplate": "Отговор Шаблон за имейл", - "replyFromAddress": "Отговор на адрес на подателя", - "replyToAddress": "Отговори Адрес", + "caseDistribution": "Разпределение на тикети", + "replyEmailTemplate": "Шаблон за отговор на имейл", + "replyFromAddress": "Имейл адрес за отговор", + "replyToAddress": "Адрес за CC", "replyFromName": "Отговор от име", - "targetUserPosition": "Целева Потребителят Позиция", - "fetchSince": "Изважда От", + "targetUserPosition": "Позиция на потребителя", + "fetchSince": "Извади имейлите от", "addAllTeamUsers": "За всички потребители на екипа", - "team": "Целева Екип", - "teams": "Отбори", - "sentFolder": "Изпратени Папка", - "storeSentEmails": "Магазин изпращат съобщения", + "team": "Целеви отдел", + "teams": "Отдели", + "sentFolder": "Папка с изпратени имейли", + "storeSentEmails": "Съхраняване на изпратените имейли", "useSmtp": "Използване на SMTP", + "smtpHost": "SMTP хост", + "smtpPort": "SMTP порт", "smtpAuth": "SMTP удостоверяване", "smtpSecurity": "SMTP сигурност", - "smtpUsername": "SMTP име", + "smtpUsername": "SMTP потребителско име", "smtpPassword": "SMTP парола", "fromName": "От име", - "smtpIsShared": "SMTP е споделена", - "smtpIsForMassEmail": "SMTP е за Маса Email", - "useImap": "Изважда имейли", - "keepFetchedEmailsUnread": "Дръжте Извлечени са имейли непрочетена", - "smtpAuthMechanism": "Механизъм SMTP удостоверяване" + "smtpIsShared": "SMTP е споделен с другите потребители", + "smtpIsForMassEmail": "SMTP е за масови имейли", + "useImap": "Прихващане на имейли", + "keepFetchedEmailsUnread": "Извлечените имейли остават непрочетени на сървъра", + "smtpAuthMechanism": "Механизъм за SMTP удостоверяване", + "security": "Сигурност" }, "tooltips": { - "reply": "Изпращайте имейл податели, че техните имейли е получена. Само един ще бъде изпратен имейл с конкретен получател по време на определен период от време, за да се предотврати примка.", - "createCase": "Автоматично създаване на случай от входящите имейли.", - "replyToAddress": "Посочете имейл адрес на тази пощенска кутия, за да отговорите идват тук.", - "caseDistribution": "Как случаи ще бъдат възложени. Целеви директно към потребителя или сред екипа.", - "assignToUser": "случаи потребителят ще бъде възложени.", - "team": "Екип случаи ще бъдат възложени.", - "teams": "Екипи писма ще бъдат причислени към.", - "addAllTeamUsers": "Имейлите ще се появяват в Входящи на всички потребители на определени отбори.", - "targetUserPosition": "Потребителите със специфична позиция ще бъдат разпределени с дела.", + "reply": "Уведомете изпращачите на имейли, че техните имейли са получени.\n\nСамо един имейл ще бъде изпратен до конкретен получател през определен период от време, за да се предотврати зацикляне и спам.", + "createCase": "Автоматично създаване на тикет от входящите имейли.", + "replyToAddress": "Посочете имейл адреса на тази пощенска кутия, за да получите отговорите тук.", + "caseDistribution": "Как тикетите ще се разпределят. Директно назначаване към даден потребител или случайно разпределение в даден екип.", + "assignToUser": "Потребител към който ще се назначават тикетите автоматично.", + "team": "Отдел към който ще се назначават тикетите автоматично.", + "teams": "Отдели към които ще се назначават имейлите автоматично.", + "addAllTeamUsers": "Имейлите ще се появяват в папка Входящи на всички потребители от дадените отдели.", + "targetUserPosition": "Потребителите с посочена позиция ще бъдат назначени.", "monitoredFolders": "Множество папки трябва да бъдат разделени със запетая.", - "smtpIsShared": "Ако е отметнато, потребителите ще могат да изпращат имейли, използващи тази SMTP. Наличност се контролира от Роли чрез разрешение имейл акаунт на групата.", - "smtpIsForMassEmail": "Ако е избрано след SMTP ще бъде на разположение за Маса Email.", - "storeSentEmails": "Изпратени имейли ще се съхраняват на сървър IMAP." + "smtpIsShared": "Ако е отметнато, потребителите ще могат да изпращат имейли чрез този SMTP. Наличността се контролира от Роли чрез разрешение за групов имейл акаунт.", + "smtpIsForMassEmail": "Ако е отметнато, SMTP ще бъде наличен за масов имейл.", + "storeSentEmails": "Изпратените имейли ще се съхраняват на IMAP сървъра.", + "useSmtp": "Възможността за изпращане на имейли." }, "links": { "filters": "Филтри", - "emails": "имейли", - "assignToUser": "Assign за потребителя" + "emails": "Имейли", + "assignToUser": "Назначаване към потребител" }, "options": { "status": { "Active": "Активен", - "Inactive": "неактивен" + "Inactive": "Неактивен" }, "caseDistribution": { "": "Нито един", - "Direct-Assignment": "Директно Задание", - "Round-Robin": "Кръгла Робин", - "Least-Busy": "Най-слабо Зает" - }, - "smtpAuthMechanism": { - "plain": "ОБИКНОВЕН", - "login": "ВЛИЗАНЕ" + "Direct-Assignment": "Директно назначаване", + "Round-Robin": "Случаен принцип", + "Least-Busy": "Най-малко зает" } }, "labels": { "Create InboundEmail": "Създаване на имейл акаунт", - "Actions": "мерки", - "Main": "основен" + "Actions": "Действия", + "Main": "Основен" }, "messages": { - "couldNotConnectToImap": "Не може да се свърже с IMAP сървъра" + "couldNotConnectToImap": "Систмата не може да се свърже с IMAP сървъра" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Integration.json b/application/Espo/Resources/i18n/bg_BG/Integration.json index ee83af2e68..592ff9686d 100644 --- a/application/Espo/Resources/i18n/bg_BG/Integration.json +++ b/application/Espo/Resources/i18n/bg_BG/Integration.json @@ -1,14 +1,17 @@ { "fields": { + "enabled": "Активирана", + "clientId": "Клиент ID", "clientSecret": "Клиент Secret", - "redirectUri": "Пренасочване URI" + "redirectUri": "URL за пренасочване", + "apiKey": "API ключ" }, "messages": { "selectIntegration": "Изберете интеграция от менюто.", - "noIntegrations": "Не интеграции е на разположение." + "noIntegrations": "Няма налични интеграции" }, "help": { - "Google": "** Снабдете OAuth 2.0 пълномощията от конзолата за програмисти в Google. ** посещение [програмисти на Google] (https://console.developers.google.com/project), за да се получи OAuth 2.0 пълномощията като клиентски идентификационен номер и за клиенти, които са тайна е известно, че и двете приложение Google и EspoCRM.", - "GoogleMaps": "Снабдете ключ API [тук] (https://developers.google.com/maps/documentation/javascript/get-api-key)." + "Google": "**Получете идентификационни данни за OAuth 2.0 от Google Developers Console.**\n\nПосетете [Google Developers Console](https://console.developers.google.com/project), за да получите идентификационни данни за OAuth 2.0, като Client ID и Client Secret, които са известни както на Google, така и на приложението EspoCRM.", + "GoogleMaps": "Получете API ключ [тук](https://developers.google.com/maps/documentation/javascript/get-api-key)." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Job.json b/application/Espo/Resources/i18n/bg_BG/Job.json index c8bb857917..1083e8ca3a 100644 --- a/application/Espo/Resources/i18n/bg_BG/Job.json +++ b/application/Espo/Resources/i18n/bg_BG/Job.json @@ -1,27 +1,31 @@ { "fields": { "status": "Статус", - "executeTime": "Изпълнение На", - "attempts": "Опитите Left", + "executeTime": "Изпълнение в", + "attempts": "Налични опити", "failedAttempts": "Неуспешни опити", - "serviceName": "Обслужване", - "methodName": "метод", - "scheduledJob": "Планирана работа", + "serviceName": "Услуга", + "methodName": "Метод", + "scheduledJob": "Планирана задача", "data": "Данни", - "method": "Метод (оттеглено)", - "scheduledJobJob": "Планирана Име на заданието", - "executedAt": "изпълнено на", - "startedAt": "Започната В", - "number": "номер", + "method": "Метод (deprecated)", + "scheduledJobJob": "Име на планирана задача", + "executedAt": "Изпълнена на", + "startedAt": "Започната на", + "targetType": "Целеви тип", + "number": "Номер", "queue": "Опашка", - "job": "работа" + "job": "Задача", + "group": "Група", + "className": "Име на клас", + "targetGroup": "Целева група" }, "options": { "status": { "Pending": "Предстоящо", - "Success": "успех", - "Running": "Работещи", - "Failed": "Се провали" + "Success": "Успешно", + "Running": "В действие", + "Failed": "Провалено" } } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/LayoutManager.json b/application/Espo/Resources/i18n/bg_BG/LayoutManager.json index 07f067873a..7adefb0fa5 100644 --- a/application/Espo/Resources/i18n/bg_BG/LayoutManager.json +++ b/application/Espo/Resources/i18n/bg_BG/LayoutManager.json @@ -1,34 +1,45 @@ { "fields": { "width": "Ширина (%)", - "link": "връзка", - "notSortable": "Не можете да сортирате", - "align": "Изравнете", - "panelName": "панел Наименование", - "style": "стил", - "sticked": "залепват", + "link": "Линк", + "notSortable": "Not sortable", + "align": "Изравняване", + "panelName": "Име на панела", + "style": "Стил", + "sticked": "Прилепен панел", "isLarge": "Голям размер на шрифта", - "dynamicLogicVisible": "Условия правят панел видима" + "dynamicLogicVisible": "Условия, при които панела става видим", + "hidden": "Скрито", + "dynamicLogicStyled": "Условия, при които стилът става приложим" }, "options": { "align": { - "left": "Наляво", - "right": "прав" + "left": "В ляво", + "right": "В дясно" }, "style": { "default": "По подразбиране", - "success": "успех", - "danger": "опасност", + "success": "Успешно", + "danger": "Опасност", "info": "Информация", "warning": "Внимание", - "primary": "първичен" + "primary": "Основен" } }, "labels": { "New panel": "Нов панел", - "Layout": "оформление" + "Layout": "Оформление" }, "tooltips": { - "link": "Ако е отметнато, след което на стойност поле ще се покаже като връзка сочи към детайлния изглед на записа. Обикновено се използва за връзка * Име * полета." + "link": "Ако е отметнато, стойността на полето ще бъде показана като връзка, насочваща към подробния изглед на записа. Обикновено се използва за полета като Име или ID.", + "hiddenPanel": "Трябва да кликнете върху „покажи още“, за да видите панела.", + "sticked": "Панелът ще бъде залепен към панела отгоре. Няма разстояние между панелите.", + "panelStyle": "Цветът на панела.", + "dynamicLogicVisible": "Ако е зададено, панелът ще бъде скрит, освен ако условието не е изпълнено.", + "dynamicLogicStyled": "Ще бъде приложен цвят, ако е изпълнено конкретно условие. Цветът се определя от параметъра *Style*." + }, + "messages": { + "cantBeEmpty": "Оформлението не може да бъде празно.", + "fieldsIncompatible": "Полетата не могат да бъдат заедно в оформлението: {fields}." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/LayoutSet.json b/application/Espo/Resources/i18n/bg_BG/LayoutSet.json new file mode 100644 index 0000000000..ad27f269b3 --- /dev/null +++ b/application/Espo/Resources/i18n/bg_BG/LayoutSet.json @@ -0,0 +1,9 @@ +{ + "fields": { + "layoutList": "Оформления" + }, + "labels": { + "Create LayoutSet": "Създаване на оформление", + "Edit Layouts": "Редактиране на оформление" + } +} \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/LeadCapture.json b/application/Espo/Resources/i18n/bg_BG/LeadCapture.json index 0784c991d3..4699560ae5 100644 --- a/application/Espo/Resources/i18n/bg_BG/LeadCapture.json +++ b/application/Espo/Resources/i18n/bg_BG/LeadCapture.json @@ -1,43 +1,44 @@ { "fields": { - "name": "име", - "campaign": "кампания", - "isActive": "е активен", - "subscribeToTargetList": "Абонирайте се за Target Списък", - "subscribeContactToTargetList": "Абонамент Контакт ако съществува", - "targetList": "Целева Списък", - "fieldList": "полезен товар", - "optInConfirmation": "Двойна Opt-In", - "optInConfirmationEmailTemplate": "Opt-в потвърждение на имейл адреса шаблон", - "optInConfirmationLifetime": "Включване в живота потвърждение (часа)", - "optInConfirmationSuccessMessage": "Текст за шоу след неучастие в потвърждение", - "leadSource": "Водещ Източник", - "targetTeam": "Целева Екип", - "exampleRequestMethod": "метод", - "exampleRequestPayload": "полезен товар", - "createLeadBeforeOptInConfirmation": "Създаване на олово преди потвърждение", - "skipOptInConfirmationIfSubscribed": "Напред потвърждение, ако олово вече е в целевата списък", + "name": "Име", + "campaign": "Кампания", + "isActive": "Е активен", + "subscribeToTargetList": "Абониране за целевия списък", + "subscribeContactToTargetList": "Абониране на контакта ако съществува", + "targetList": "Целеви списък", + "fieldList": "Налични полета", + "optInConfirmation": "Двойно потвърждение", + "optInConfirmationEmailTemplate": "Шаблон за имейл за потвърждение за включване", + "optInConfirmationLifetime": "Времетраене на потвърждението за включване (часове)", + "optInConfirmationSuccessMessage": "Текст за показване след потвърждение за включване", + "leadSource": "Източник на потенциална продажба", + "apiKey": "API ключ", + "targetTeam": "Целеви екип", + "exampleRequestMethod": "Метод", + "createLeadBeforeOptInConfirmation": "Създайте потенциална продажба преди потвърждение", + "duplicateCheck": "Проверка за дублиране", + "skipOptInConfirmationIfSubscribed": "Пропуснете потвърждението, ако потенциалният клиент вече е в целевия списък", "smtpAccount": "SMTP профил", - "inboundEmail": "Група имейл акаунт" + "inboundEmail": "Групов имейл акаунт" }, "links": { - "targetList": "Целева Списък", - "campaign": "кампания", - "optInConfirmationEmailTemplate": "Opt-в потвърждение на имейл адреса шаблон", - "targetTeam": "Целева Екип", - "logRecords": "Вход", - "inboundEmail": "Група имейл акаунт" + "targetList": "Целеви списък", + "campaign": "Кампания", + "optInConfirmationEmailTemplate": "Шаблон за имейл за потвърждение за включване", + "targetTeam": "Целеви екип", + "logRecords": "Журнал", + "inboundEmail": "Групов имейл акаунт" }, "labels": { - "Create LeadCapture": "Създаване на точка за достъп", - "Generate New API Key": "Генериране на ново API Key", - "Request": "поискване", - "Confirm Opt-In": "Потвърждаване на Opt-In" + "Create LeadCapture": "Създаване на Web-to-Lead", + "Generate New API Key": "Генериране на нов API ключ", + "Request": "Заявка", + "Confirm Opt-In": "Потвърждаване за включване" }, "messages": { - "generateApiKey": "Създаване на нов ключ API", - "optInConfirmationExpired": "Връзката се потвърждение е с изтекла валидност.", - "optInIsConfirmed": "Opt-в е потвърдена." + "generateApiKey": "Създаване на нов API ключ", + "optInConfirmationExpired": "Линкът за потвърждение на включване е изтекъл.", + "optInIsConfirmed": "Включването е потвърдено." }, "tooltips": { "optInConfirmationSuccessMessage": "Markdown се поддържа." diff --git a/application/Espo/Resources/i18n/bg_BG/LeadCaptureLogRecord.json b/application/Espo/Resources/i18n/bg_BG/LeadCaptureLogRecord.json index d1d4e6a1cb..123dc20416 100644 --- a/application/Espo/Resources/i18n/bg_BG/LeadCaptureLogRecord.json +++ b/application/Espo/Resources/i18n/bg_BG/LeadCaptureLogRecord.json @@ -1,14 +1,12 @@ { "fields": { - "number": "номер", + "number": "Номер", "data": "Данни", "target": "Цел", - "leadCapture": "Водещ Capture", - "createdAt": "Влиза В", - "isCreated": "Е създадена Lead" + "createdAt": "Дата на запис", + "isCreated": "Е създадена потенциална продажба" }, "links": { - "leadCapture": "Водещ Capture", "target": "Цел" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/MassAction.json b/application/Espo/Resources/i18n/bg_BG/MassAction.json new file mode 100644 index 0000000000..ad38af7cc3 --- /dev/null +++ b/application/Espo/Resources/i18n/bg_BG/MassAction.json @@ -0,0 +1,17 @@ +{ + "fields": { + "status": "Статус", + "processedCount": "Брой обработени" + }, + "options": { + "status": { + "Pending": "Предстои", + "Running": "В действие", + "Success": "Успешно", + "Failed": "Неуспешно" + } + }, + "messages": { + "infoText": "Масовото действие се обработва в idle от cron. Може да отнеме известно време, за да завърши. Затварянето на този модален диалогов прозорец НЯМА да повлияе на процеса на изпълнение." + } +} \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Note.json b/application/Espo/Resources/i18n/bg_BG/Note.json index beb02b6b49..1890bb5c24 100644 --- a/application/Espo/Resources/i18n/bg_BG/Note.json +++ b/application/Espo/Resources/i18n/bg_BG/Note.json @@ -1,37 +1,37 @@ { "fields": { - "post": "пост", - "attachments": "Прикачени", + "post": "Публикация", + "attachments": "Прикачени файлове", "targetType": "Цел", - "teams": "Отбори", + "teams": "Отдели", "users": "Потребители", "portals": "Портали", "type": "Тип", - "isGlobal": "е глобален", - "isInternal": "Има вътрешен (за вътрешни потребители)", + "isGlobal": "Е глобално", + "isInternal": "Е вътрешно (за вътрешни потребители)", "related": "Свързани", "createdByGender": "Създаден по пол", "data": "Данни", - "number": "номер" + "number": "Номер" }, "filters": { - "all": "всичко", + "all": "Всички", "posts": "Публикации", - "updates": "Актуализациите" + "updates": "Активност" }, "messages": { "writeMessage": "Напишете съобщението си тук" }, "options": { "targetType": { - "self": "на себе си", - "users": "за определен потребител (и)", - "teams": "към конкретен отбор (и)", - "all": "за всички вътрешни потребители", - "portals": "за потребители на портала" + "self": "към себе си", + "users": "към определен потребител(и)", + "teams": "към конкретен отдел(и)", + "all": "към всички вътрешни потребители", + "portals": "към потребители на портал(и)" }, "type": { - "Post": "пост" + "Post": "Публикация" } }, "links": { diff --git a/application/Espo/Resources/i18n/bg_BG/PhoneNumber.json b/application/Espo/Resources/i18n/bg_BG/PhoneNumber.json index ccd20eefa2..a260e3d006 100644 --- a/application/Espo/Resources/i18n/bg_BG/PhoneNumber.json +++ b/application/Espo/Resources/i18n/bg_BG/PhoneNumber.json @@ -1,10 +1,10 @@ { "fields": { "type": "Тип", - "optOut": "Отказахте се", - "invalid": "невалиден" + "optOut": "Не звъни", + "invalid": "Невалиден" }, "presetFilters": { - "orphan": "сирак" + "orphan": "Изоставени" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Portal.json b/application/Espo/Resources/i18n/bg_BG/Portal.json index 3f5634ace4..80a2b26695 100644 --- a/application/Espo/Resources/i18n/bg_BG/Portal.json +++ b/application/Espo/Resources/i18n/bg_BG/Portal.json @@ -14,20 +14,23 @@ "weekStart": "Първи ден от седмицата", "defaultCurrency": "По подразбиране валути", "customUrl": "персонализиран URL адрес", - "customId": "персонализиран идентификатор" + "customId": "Персонализиран идентификатор", + "layoutSet": "Оформление" }, "links": { "users": "Потребители", "portalRoles": "Роли", - "notes": "бележки" + "notes": "бележки", + "layoutSet": "Оформление" }, "tooltips": { - "portalRoles": "Определени Portal роли ще се прилагат за всички потребители на този портал." + "portalRoles": "Избраните роли за портала ще се приложат на всички потребители, които са част от този портал.", + "layoutSet": "Предоставя възможност за оформления, които се различават от стандартните." }, "labels": { - "Create Portal": "Създаване на Portal", + "Create Portal": "Създаване на Портал", "User Interface": "Потребителски интерфейс", - "General": "Общ", + "General": "Общи настройки", "Settings": "Настройки" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/PortalRole.json b/application/Espo/Resources/i18n/bg_BG/PortalRole.json index 25aa8e11a4..302e99c3b4 100644 --- a/application/Espo/Resources/i18n/bg_BG/PortalRole.json +++ b/application/Espo/Resources/i18n/bg_BG/PortalRole.json @@ -3,17 +3,17 @@ "users": "Потребители" }, "labels": { - "Access": "достъп", - "Create PortalRole": "Създаване портал Роля", - "Scope Level": "Обхват Ниво", - "Field Level": "Невярно Ниво" + "Access": "Достъп", + "Create PortalRole": "Създаване на роля за портал", + "Scope Level": "Ниво на обхват", + "Field Level": "Права за отделни полета" }, "fields": { - "exportPermission": "износ Разрешение", - "massUpdatePermission": "Маса Актуализация Разрешение" + "exportPermission": "Права за експортиране", + "massUpdatePermission": "Права за масови обновления" }, "tooltips": { - "exportPermission": "Определя дали потребители на портала имат способността да износ записи.", - "massUpdatePermission": "Определя дали потребители на портала имат способността да правят масово обновяване на записи." + "exportPermission": "Определя дали потребителите на портала имат възможност да експортират записи.", + "massUpdatePermission": "Определя дали потребителите на портала имат възможност да правят масова актуализация на записи." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/PortalUser.json b/application/Espo/Resources/i18n/bg_BG/PortalUser.json index a3998ad193..93a7d561a8 100644 --- a/application/Espo/Resources/i18n/bg_BG/PortalUser.json +++ b/application/Espo/Resources/i18n/bg_BG/PortalUser.json @@ -1,5 +1,5 @@ { "labels": { - "Create PortalUser": "Създаване Портал Потребител" + "Create PortalUser": "Създаване на потребител за портал" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Preferences.json b/application/Espo/Resources/i18n/bg_BG/Preferences.json index 717351043c..717cdebaef 100644 --- a/application/Espo/Resources/i18n/bg_BG/Preferences.json +++ b/application/Espo/Resources/i18n/bg_BG/Preferences.json @@ -1,61 +1,63 @@ { "fields": { "dateFormat": "Формат на датата", - "timeFormat": "Времеви формат", + "timeFormat": "Формат на часа", "timeZone": "Часова зона", "weekStart": "Първи ден от седмицата", - "thousandSeparator": "Хиляда Separator", - "decimalMark": "десетичния знак", - "defaultCurrency": "По подразбиране валути", - "currencyList": "Валутна Списък", - "language": "език", + "thousandSeparator": "Разделител на хилядни числа", + "decimalMark": "Десетичен знак", + "defaultCurrency": "Валута по подразбиране", + "currencyList": "Списък с валути", + "language": "Език по подразбиране", "smtpServer": "Сървър", - "smtpPort": "порт", - "smtpAuth": "упълномощаване", + "smtpPort": "Порт", + "smtpAuth": "Удостоверяване", "smtpSecurity": "Сигурност", "smtpUsername": "Потребител", - "emailAddress": "електронна поща", - "smtpPassword": "парола", + "emailAddress": "Електронна поща", + "smtpPassword": "Парола", "smtpEmailAddress": "Имейл адрес", - "exportDelimiter": "износ разделител", - "signature": "Email подпис", - "dashboardTabList": "Tab Списък", - "tabList": "Tab Списък", - "defaultReminders": "По подразбиране напомняния", - "theme": "тема", - "useCustomTabList": "Персонализирания раздел Списък", - "receiveAssignmentEmailNotifications": "Известия за имейл по възлагане", - "receiveMentionEmailNotifications": "Известията по имейл за споменавания в публикациите", - "receiveStreamEmailNotifications": "Имейл известия за публикации и статуси", - "emailReplyForceHtml": "Email отговор в HTML", - "emailReplyToAllByDefault": "Email Отговор до всички по подразбиране", - "doNotFillAssignedUserIfNotRequired": "Не се запълнят предварително определен потребител на запис създаване", - "followEntityOnStreamPost": "Автоматично проследяване рекорд след публикуване на живо", - "followCreatedEntities": "Auto-следват създадените записи", - "followCreatedEntityTypeList": "Auto-следват създадените записи на специфични видове предприятието", - "emailUseExternalClient": "Използвайте външен имейл клиент", - "scopeColorsDisabled": "Забранете цветове обхват", - "tabColorsDisabled": "Забранете цветове раздела", - "assignmentNotificationsIgnoreEntityTypeList": "уведомления за присвояване в приложението", - "assignmentEmailNotificationsIgnoreEntityTypeList": "известия по имейл за присвояване" + "exportDelimiter": "Разделител за експортиране на данни", + "signature": "Имейл подпис", + "dashboardTabList": "Списък с менюта", + "tabList": "Списък с менюта", + "defaultReminders": "Напомняния по подразбиране", + "theme": "Графична тема", + "useCustomTabList": "Списък с менюта", + "receiveAssignmentEmailNotifications": "Известия по имейл при назначаване", + "receiveMentionEmailNotifications": "Известия по имейл за споменавания в публикации", + "receiveStreamEmailNotifications": "Известия по имейл за публикации и актуализации", + "dashboardLayout": "Оформление на началното табло", + "emailReplyForceHtml": "Имейл отговор в HTML", + "autoFollowEntityTypeList": "Последване на всички записи автоматично", + "emailReplyToAllByDefault": "По подразбиране имейл отговор на всички", + "doNotFillAssignedUserIfNotRequired": "Да не се попълва предварително назначения потребител при създаването на запис", + "followEntityOnStreamPost": "Автоматично последване на запис след публикуване в активността му", + "followCreatedEntities": "Автоматично последване на създадените записи", + "followCreatedEntityTypeList": "Автоматично последване на създадени записи за конкретни типове обекти", + "emailUseExternalClient": "Използва се външен имейл клиент", + "scopeColorsDisabled": "Забранете цветовете", + "tabColorsDisabled": "Забранете цветове за табовете", + "assignmentNotificationsIgnoreEntityTypeList": "Известия за назначения на записи (в приложението)", + "assignmentEmailNotificationsIgnoreEntityTypeList": "Известия за назначения на записи (по имейл)" }, "options": { "weekStart": { - "0": "неделя", - "1": "понеделник" + "0": "Неделя", + "1": "Понеделник" } }, "labels": { "Notifications": "Известия", "User Interface": "Потребителски интерфейс", "Misc": "Разни", - "Locale": "място", + "Locale": "Езикови предпочитания", "Reset Dashboard to Default": "Възстановяване на таблото за управление по подразбиране" }, "tooltips": { - "autoFollowEntityTypeList": "Следва автоматично всички нови записи (създадени от всеки потребител) на избраните типове обекти. За да можете да видите информацията в потока и да получават уведомления за всички записи в системата.", - "doNotFillAssignedUserIfNotRequired": "Когато създадете запис определен потребител няма да бъде изпълнен със собствен потребителски освен ако е необходимо терена.", - "followCreatedEntities": "Когато се създават нови записи, те ще бъдат автоматично последвано дори ако се определя към друг потребител.", - "followCreatedEntityTypeList": "Когато се създават нови записи на избрани видовете юридически лица, те ще бъдат последвани автоматично, дори и ако се определя към друг потребител." + "autoFollowEntityTypeList": "Автоматично следвайте ВСИЧКИ нови записи (създадени от всеки потребител) на избраните типове обекти. За да можете да виждате информация в потока и да получавате известия за всички записи в системата.", + "doNotFillAssignedUserIfNotRequired": "При създаване на запис назначеният потребител няма да бъде попълнен със собствен потребител, освен ако полето не е задължително.", + "followCreatedEntities": "Когато създавате нови записи, те ще бъдат следвани автоматично, дори ако са назначени на друг потребител.", + "followCreatedEntityTypeList": "Когато създавате нови записи за избрани типове обекти, те ще бъдат следвани автоматично, дори ако са назначени на друг потребител." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Role.json b/application/Espo/Resources/i18n/bg_BG/Role.json index 91b7584141..656553c04a 100644 --- a/application/Espo/Resources/i18n/bg_BG/Role.json +++ b/application/Espo/Resources/i18n/bg_BG/Role.json @@ -1,59 +1,61 @@ { "fields": { - "name": "име", + "name": "Име", "roles": "Роли", - "assignmentPermission": "Възлагане Разрешение", - "userPermission": "Потребителят Разрешение", - "portalPermission": "портал Разрешение", - "groupEmailAccountPermission": "Група Разрешение имейл акаунт", - "exportPermission": "износ Разрешение", - "dataPrivacyPermission": "Защита на личните данни Разрешение", - "massUpdatePermission": "Маса Актуализация Разрешение" + "assignmentPermission": "Права за назначаване", + "userPermission": "Права за потребители", + "portalPermission": "Права за портали", + "groupEmailAccountPermission": "Права за групов имейл акаунт", + "exportPermission": "Права за експортиране", + "dataPrivacyPermission": "Права за управление на поверителността на данните", + "massUpdatePermission": "Права за масови обновления", + "followerManagementPermission": "Права за управление на последователи" }, "links": { "users": "Потребители", - "teams": "Отбори" + "teams": "Отдели" }, "tooltips": { - "assignmentPermission": "Позволява да се ограничи способността да зададете записи и пощенски съобщения до други потребители. всички - без ограничение на отбора - да зададете и пускате само съотборници не - да зададете и пускате само за себе си", - "userPermission": "Позволява да се ограничи способността на потребителите да разглеждат дейностите, календар, за излъчвания на други потребители. всички - да видите всички отбор - може да видите дейности на съотборниците само не - не можете да преглеждате", - "portalPermission": "Определя за достъп до портала на информация, възможност за публикуване на съобщения до потребители на портала.", - "groupEmailAccountPermission": "Определя за достъп до имейл акаунта група, способност да изпраща имейли от група SMTP.", - "dataPrivacyPermission": "Позволява да преглеждате и заличаване на лични данни.", - "exportPermission": "Определя дали потребителите имат способността да износ записи.", - "massUpdatePermission": "Определя дали потребителите имат способността да правят масово обновяване на записи." + "assignmentPermission": "Позволява да се ограничи възможността за присвояване на записи и публикуване на съобщения на други потребители.\n\nвсички - без ограничения\n\nекип - може да възлага и публикува само на хора от същия отдел\n\nне - може да назначава и публикува само на себе си", + "userPermission": "Позволява да се ограничи възможността на потребителите да преглеждат дейности, календар и история на други потребители.\n\nвсички - може да вижда всички\n\nекип - може да преглежда дейностите само на хора от същия отдел\n\nне - може да вижда само свой календар, дейности и история", + "portalPermission": "Определя достъп до информация на портала, възможност за публикуване на съобщения до потребителите на портала.", + "groupEmailAccountPermission": "Определя достъп до групови имейл акаунти, възможност за изпращане на имейли от групов SMTP.", + "dataPrivacyPermission": "Позволява преглед и изтриване на лични данни.", + "exportPermission": "Определя дали потребителите имат възможност да експортират записи.", + "massUpdatePermission": "Определя дали потребителите имат възможност за масово актуализиране на записи.", + "followerManagementPermission": "Позволява да управлявате последователи на конкретни записи." }, "labels": { - "Access": "достъп", - "Create Role": "Създаване Роля", - "Scope Level": "Обхват Ниво", - "Field Level": "Невярно Ниво" + "Access": "Достъп", + "Create Role": "Създаване на Роля", + "Scope Level": "Ниво на обхват", + "Field Level": "На ниво полета" }, "options": { "accessList": { - "not-set": "не-комплект", - "enabled": "активиран", - "disabled": "хора с увреждания" + "not-set": "Не е зададено", + "enabled": "Активирано", + "disabled": "Деактивирано" }, "levelList": { - "all": "всичко", - "team": "екип", - "account": "сметка", - "contact": "контакт", - "own": "собствен", - "no": "не", - "yes": "да", - "not-set": "не-комплект" + "all": "Всички", + "team": "Отдел", + "account": "Клиент", + "contact": "Контакт", + "own": "Собствени", + "no": "Не", + "yes": "Да", + "not-set": "Не е зададено" } }, "actions": { - "read": "Прочети", - "edit": "редактиране", - "delete": "Изтрий", - "stream": "поток", - "create": "създавам" + "read": "Четене", + "edit": "Редактиране", + "delete": "Изтриване", + "stream": "История и дейности", + "create": "Създаване" }, "messages": { - "changesAfterClearCache": "Всички промени в контрола на достъп ще се прилагат след кеш се изчиства." + "changesAfterClearCache": "Всички промени в конфигурацията на достъп ще се приложат след като се изчисти кеша през Администрацията." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/ScheduledJob.json b/application/Espo/Resources/i18n/bg_BG/ScheduledJob.json index 483c380278..e8c474f28c 100644 --- a/application/Espo/Resources/i18n/bg_BG/ScheduledJob.json +++ b/application/Espo/Resources/i18n/bg_BG/ScheduledJob.json @@ -1,39 +1,39 @@ { "fields": { - "name": "име", + "name": "Име", "status": "Статус", - "job": "работа", + "job": "Задача", "scheduling": "Планиране" }, "links": { - "log": "Вход" + "log": "Лог" }, "labels": { - "Create ScheduledJob": "Създаване на по график на работа" + "Create ScheduledJob": "Създаване на планирана задача", + "As often as possible": "Колкото е възможно по-често" }, "options": { "job": { - "Cleanup": "Почисти", - "CheckInboundEmails": "Проверете Група Имейл акаунти", - "CheckEmailAccounts": "Проверете личен имейл акаунти", - "SendEmailReminders": "Изпращане по имейл", - "AuthTokenControl": "Означението за удостоверяване контрол", - "SendEmailNotifications": "Изпрати Имейл Известия", - "CheckNewVersion": "Проверка за нова версия", - "ProcessWebhookQueue": "Обработете Webhook Queue" + "Cleanup": "Почистване", + "CheckInboundEmails": "Проверка на групови имейл акаунти", + "CheckEmailAccounts": "Проверка на лични имейл акаунти", + "SendEmailReminders": "Изпращане на имейл напомняния", + "AuthTokenControl": "Управление на сесии и токъни за достъп", + "SendEmailNotifications": "Изпращане на имейл известия", + "CheckNewVersion": "Проверка за нова версия" }, "cronSetup": { - "linux": "Забележка: Добавете този ред на кронтаб файл, за да стартирате ESPO планирани заявки:", - "mac": "Забележка: Добавете този ред на кронтаб файл, за да стартирате ESPO планирани заявки:", - "windows": "Забележка: Създаване команден файл със следните команди, за да се движат по разписание ESPO за работа с помощта на Windows Планирани задачи:", - "default": "Забележка: Добави тази команда, за да Cron Job (Scheduled Task):" + "linux": "Забележка: Добавете този ред към файла crontab, за да стартирате Espo планираните задачи:", + "mac": "Забележка: Добавете този ред към файла crontab, за да стартирате Espo планираните задачи:", + "windows": "Забележка: Създайте системен файл със следните команди, за да стартирате Espo планираните задачи с помощта на Windows Scheduled Tasks:", + "default": "Забележка: Добавете тази команда към Cron Job (планирана задача):" }, "status": { "Active": "Активен", - "Inactive": "неактивен" + "Inactive": "Неактивен" } }, "tooltips": { - "scheduling": "Старица нотация. Определя честотата на писти за работа. * / 5 * * * * - на всеки 5 минути 0 * / 2 * * * - на всеки 2 часа 30 1 * * * - в 01:30 часа веднъж на ден 0 0 1 * * - на първия ден от месеца," + "scheduling": "Цикъл за Crontab задача. Определя честотата на изпълнение на заданията.\n\n`*/5 * * * *` - на всеки 5 минути\n\n`0 */2 * * *` - на всеки 2 часа\n\n`30 1 * * *` - в 01:30 веднъж на ден\n\n`0 0 1 * *` - на първия ден от месеца" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Settings.json b/application/Espo/Resources/i18n/bg_BG/Settings.json index b877348d37..b5a7da94f4 100644 --- a/application/Espo/Resources/i18n/bg_BG/Settings.json +++ b/application/Espo/Resources/i18n/bg_BG/Settings.json @@ -1,223 +1,222 @@ { "fields": { - "useCache": "Използване на кеша", + "useCache": "Използване на кеш", "dateFormat": "Формат на датата", "timeFormat": "Времеви формат", "timeZone": "Часова зона", "weekStart": "Първи ден от седмицата", - "thousandSeparator": "Хиляда Separator", - "decimalMark": "десетичния знак", - "defaultCurrency": "По подразбиране валути", + "thousandSeparator": "Разделител за хилядни числа", + "decimalMark": "Десетичен знак", + "defaultCurrency": "Валути по подразбиране", "baseCurrency": "Основна валута", - "currencyRates": "Сложи стойности", - "currencyList": "Валутна Списък", - "language": "език", + "currencyRates": "Стойности на валути", + "currencyList": "Списък с валути", + "language": "Език", "companyLogo": "Лого на фирмата", "smtpServer": "Сървър", - "smtpPort": "порт", - "ldapPort": "порт", - "smtpAuth": "упълномощаване", - "ldapAuth": "упълномощаване", + "smtpPort": "Порт", + "ldapPort": "Порт", + "smtpAuth": "Удостоверяване", + "ldapAuth": "Удостоверяване", "smtpSecurity": "Сигурност", "ldapSecurity": "Сигурност", "smtpUsername": "Потребител", - "emailAddress": "електронна поща", - "smtpPassword": "парола", - "ldapPassword": "парола", + "emailAddress": "Електронна поща", + "smtpPassword": "Парола", + "ldapPassword": "Парола", "outboundEmailFromName": "От име", "outboundEmailFromAddress": "От Адрес", - "outboundEmailIsShared": "се споделя", + "outboundEmailIsShared": "Споделена с други потребители", "recordsPerPage": "Записи на страница", - "recordsPerPageSmall": "Записи на страница (малък)", - "tabList": "Tab Списък", - "quickCreateList": "Бързо Създаване на списък", - "exportDelimiter": "износ разделител", - "globalSearchEntityList": "Global Entity Списък Търсене", + "recordsPerPageSmall": "Записи на страница (popup)", + "tabList": "Списък с менюта", + "quickCreateList": "Списък за бързо създаване", + "exportDelimiter": "Разделител за експортиране", + "globalSearchEntityList": "Списък с модели за глобалната търсачка", "authenticationMethod": "Метод за удостоверяване", - "ldapHost": "домакин", - "ldapAccountCanonicalForm": "Сметка Canonical Форма", - "ldapAccountDomainName": "Сметка на име на домейн", - "ldapTryUsernameSplit": "Опитайте име Сплит", + "ldapHost": "Сървър", + "ldapTryUsernameSplit": "Опитай да разделиш потребителското име от имейла", "ldapCreateEspoUser": "Създаване на потребител в EspoCRM", - "ldapUserLoginFilter": "Влизам Филтър", - "ldapAccountDomainNameShort": "Сметка Domain Name Short", - "ldapOptReferrals": "Opt Преходи", - "exportDisabled": "Изключване на износ (само администратор е разрешено)", + "exportDisabled": "Изключване на опцията за експорт (само администратор да може)", + "b2cMode": "B2C режим", "avatarsDisabled": "Изключване на аватари", - "displayListViewRecordCount": "Посочете общия брой (по вид на списък)", - "theme": "тема", - "userThemesDisabled": "Неспособен Потребител Теми", - "personalEmailMaxPortionSize": "Максимален размер имейл част за лична сметка извличане", - "inboundEmailMaxPortionSize": "Максимален размер имейл част от изчистване на профила група", - "authTokenLifetime": "Удостоверяване Token Lifetime (часа)", - "authTokenMaxIdleTime": "Означението за удостоверяване Max Idle Time (часа)", - "dashboardLayout": "Dashboard Layout (по подразбиране)", - "siteUrl": "URL на сайта", - "addressPreview": "Адрес Preview", - "addressFormat": "Формат на адреса", - "notificationSoundsDisabled": "Изключване на известията Звуци", - "applicationName": "Име на приложението", - "ldapUsername": "Пълен Потребителят DN", - "ldapBindRequiresDn": "Вържи Изисква DN", - "ldapBaseDn": "база DN", - "ldapUserNameAttribute": "Потребител Умение", - "ldapUserObjectClass": "Потребителят ObjectClass", - "ldapUserTitleAttribute": "Заглавие Атрибут на потребителя", - "ldapUserFirstNameAttribute": "Потребителят Име Умение", - "ldapUserLastNameAttribute": "Потребителят Фамилия Умение", - "ldapUserEmailAddressAttribute": "E-mail адрес на потребителя Умение", - "ldapUserTeams": "Потребителски Отбори", - "ldapUserDefaultTeam": "Потребителските настройки на отбора", - "ldapUserPhoneNumberAttribute": "Телефон на потребителя Умение", - "assignmentNotificationsEntityList": "Субекти, които да уведомяват за по възлагане", - "assignmentEmailNotifications": "Известия по възлагане", - "assignmentEmailNotificationsEntityList": "Възлагане известия по имейл, обхват", - "streamEmailNotifications": "Известия за актуализации в Stream за вътрешни потребители", - "portalStreamEmailNotifications": "Известия за актуализации в Stream за потребители на портала", - "streamEmailNotificationsEntityList": "Поток известия по имейл, обхват", - "calendarEntityList": "Календар Entity Списък", - "mentionEmailNotifications": "Изпращане на известия по имейл за споменавания в публикациите", - "massEmailDisableMandatoryOptOutLink": "Изключване на задължителна връзка за изключване", - "activitiesEntityList": "Дейности Entity Списък", - "historyEntityList": "История Entity Списък", + "displayListViewRecordCount": "Визуализиране на общия брой записи (лист UI)", + "theme": "Графична тема", + "userThemesDisabled": "Изключване на графичните теми", + "personalEmailMaxPortionSize": "Максимален размер на имейл за извличане на личен имейл акаунт", + "inboundEmailMaxPortionSize": "Максимален размер на имейл за извличане на групов имейл акаунт", + "authTokenLifetime": "Максимална продължителност на сесията (часа)", + "authTokenMaxIdleTime": "Максимална продължително на сесията в режим idle (часа)", + "dashboardLayout": "Оформление на началното табло (по подразбиране)", + "siteUrl": "URL на системата", + "addressPreview": "Предварителен изглед на адресите", + "addressFormat": "Формат на адресите", + "notificationSoundsDisabled": "Изключване на звуците от известията", + "applicationName": "Име на системата", + "ldapUserTeams": "Екипи на потребителя", + "ldapUserDefaultTeam": "Отдел по подразбиране", + "assignmentNotificationsEntityList": "Обекти, за които да се създава известие при назначаване", + "assignmentEmailNotifications": "Известия при назначаване", + "assignmentEmailNotificationsEntityList": "Обхват на уведомленията по имейл", + "streamEmailNotifications": "Известия за активност за вътрешни потребители", + "portalStreamEmailNotifications": "Известия за активност за потребители на портал/и", + "streamEmailNotificationsEntityList": "Обхват на известия по имейл", + "calendarEntityList": "Обекти, които да се използват в календара", + "mentionEmailNotifications": "Изпращане на известия по имейл за споменавания в публикации", + "massEmailDisableMandatoryOptOutLink": "Деактивирайте задължителната опция за отписване (имейли)", + "activitiesEntityList": "Обекти, които имат активности", + "historyEntityList": "Обекти, които имат история", "currencyFormat": "Формат на валута", - "currencyDecimalPlaces": "Валутните Десетични знаци", - "aclStrictMode": "ACL Строг режим", - "followCreatedEntities": "Следвайте създадени записи", - "aclAllowDeleteCreated": "Оставя се да се премахне, създадени записи", - "adminNotifications": "системни известия в административния панел", - "adminNotificationsNewVersion": "Показване на известие при ново EspoCRM версия е достъпна", + "currencyDecimalPlaces": "Десетични знаци на валутата", + "followCreatedEntities": "Последвай автоматично собствените създадени записи", + "aclAllowDeleteCreated": "Разрешаване на потребителя да премахва свои собствени записи", + "adminNotifications": "Системни известия в административния панел", + "adminNotificationsNewVersion": "Показване на известие, когато е налична нова версия на EspoCRM", "massEmailMaxPerHourCount": "Максимален брой на изпратените имейли на час", "maxEmailAccountCount": "Максимален брой личен имейл сметки на потребител", - "streamEmailNotificationsTypeList": "Какво да уведоми за", - "authTokenPreventConcurrent": "Само един Означението за удостоверяване на потребител", - "scopeColorsDisabled": "Забранете цветове обхват", - "tabColorsDisabled": "Забранете цветове раздела", - "tabIconsDisabled": "икони Забранете раздела", - "textFilterUseContainsForVarchar": "Използвайте \"съдържа\" оператор, когато филтриране VARCHAR полета", - "emailAddressIsOptedOutByDefault": "Маркирайте нови имейл адреси като или изключен", + "streamEmailNotificationsTypeList": "За какво да бъде известявано", + "authTokenPreventConcurrent": "Само един токен за удостоверяване на потребител", + "scopeColorsDisabled": "Забранете цветове", + "tabColorsDisabled": "Забранете цветове за табовете", + "tabIconsDisabled": "Забранете иконките по менюто", + "textFilterUseContainsForVarchar": "Използвайте оператор 'съдържа', когато филтрирате полета varchar", + "emailAddressIsOptedOutByDefault": "Маркирайте нови имейл адреси като отписани от имейлинг", "outboundEmailBccAddress": "BCC адрес за външни клиенти", - "adminNotificationsNewExtensionVersion": "Показване на известие при нови версии на разширения са достъпни", - "cleanupDeletedRecords": "Ликвидиране изтрити записи", - "ldapPortalUserLdapAuth": "Използвайте LDAP удостоверяване на потребители на портала", - "ldapPortalUserPortals": "По подразбиране Портали за портал User", - "ldapPortalUserRoles": "По подразбиране Роли за Портал Потребител", - "addressCountryList": "Адрес Държава функцията за автоматично довършване Списък", - "fiscalYearShift": "Фискална година Старт", - "jobRunInParallel": "Работа функционира паралелно", - "jobMaxPortion": "Работа Макс Порция", - "jobPoolConcurrencyNumber": "Работа басейн Concurrency Номер", + "adminNotificationsNewExtensionVersion": "Показване на известие, когато са налични нови версии на разширенията", + "cleanupDeletedRecords": "Премахване на изтритите записи", + "ldapPortalUserLdapAuth": "Използване на LDAP удостоверяване за потребители на портал", + "ldapPortalUserPortals": "Портали по подразбиране за потребител на портал", + "ldapPortalUserRoles": "Роли по подразбиране за потребител на портала", + "addressCountryList": "Списък за автоматично дописване на държави в адресни полета", + "fiscalYearShift": "Начало на фискалната година", + "jobRunInParallel": "Паралелно изпълнение на background задачите", "daemonInterval": "Daemon интервал", - "daemonMaxProcessNumber": "Daemon Максимален брой Процес", - "daemonProcessTimeout": "Daemon Timeout Процес", - "addressCityList": "Адрес Сити за автоматично довършване Списък", - "addressStateList": "Адрес членка за автоматично довършване Списък", + "addressCityList": "Списък за автоматично дописване на градове в адресните полета", + "addressStateList": "Списък за автоматично дописване на области в адресните полета", "cronDisabled": "Изключване на Cron", - "maintenanceMode": "режим на поддръжка", - "useWebSocket": "Използвайте WebSocket", - "emailNotificationsDelay": "Забавяне на известия по имейл (в секунди)", - "massEmailOpenTracking": "Изпратете Open проследяване", - "passwordRecoveryDisabled": "Забрани за възстановяване на паролата", - "passwordRecoveryForAdminDisabled": "Забрани за възстановяване на паролата на разположение на администратори", + "maintenanceMode": "Режим на поддръжка", + "useWebSocket": "Използване на WebSocket", + "emailNotificationsDelay": "Забавяне на известията по имейл (в секунди)", + "massEmailOpenTracking": "Използване на email tracking", + "passwordRecoveryDisabled": "Деактивиране на възстановяването на паролите", + "passwordRecoveryForAdminDisabled": "Деактивиране на възстановяването на паролите за администраторски потребители", "passwordGenerateLength": "Дължина на генерираните пароли", - "passwordStrengthLength": "Минимална дължина на паролата", - "passwordStrengthLetterCount": "Брой букви са задължителни в парола", - "passwordStrengthNumberCount": "Брой цифри изисква парола", - "passwordStrengthBothCases": "Паролата трябва да съдържа букви и на двете главни и малки букви", - "auth2FA": "Активиране на 2-фактор удостоверяване", + "passwordStrengthLength": "Минимална дължина на паролите", + "passwordStrengthLetterCount": "Брой букви, необходими в паролата", + "passwordStrengthNumberCount": "Брой цифри, необходими в паролата", + "passwordStrengthBothCases": "Паролата трябва да съдържа както главни, така и малки букви", + "auth2FA": "Активиране на Двуфакторна автентификация", "auth2FAMethodList": "Налични методи 2FA", - "personNameFormat": "Лице Форматът на името" + "personNameFormat": "Формат на имената", + "newNotificationCountInTitle": "Показване на брой нови известия в заглавието на всяка страница", + "massEmailVerp": "Използвай VERP", + "emailAddressLookupEntityTypeList": "Обхвати за търсене на имейл адрес", + "busyRangesEntityList": "Списък на свободни/заети обекти", + "passwordRecoveryForInternalUsersDisabled": "Деактивирайте възстановяването на парола за вътрешни потребители", + "passwordRecoveryNoExposure": "Деактивирайте възможността за енумериране на имейл адреси във формуляра за възстановяване на парола", + "auth2FAForced": "Принудете редовните потребители да изпозлва задължително 2FA", + "smsProvider": "SMS доставчик", + "outboundSmsFromNumber": "SMS номер (изпращач)", + "recordsPerPageSelect": "Записи на страница (при избиране)" + }, + "tooltips": { + "recordsPerPage": "Брой записи, които да се показват в лист UI", + "recordsPerPageSmall": "Брой записи, които да се показват в релационен UI", + "followCreatedEntities": "Потребителите автоматично да последват всички записи, които създават", + "emailMessageMaxSize": "Всички входящи имейли, надвишаващи определен размер, ще бъдат извлечени без съдържание и прикачени файлове.", + "authTokenLifetime": "Определя колко дълго може да съществува една сесия. При задаване на 0 - тя няма да изтича.", + "authTokenMaxIdleTime": "Определя колко дълго може да съществува една сесия без някой да е използва. При задаване на 0 - тя няма да изтича.", + "userThemesDisabled": "Ако е отбелязано, потребителите няма да могат да избират други теми, освен тази по подразбиране.", + "ldapUserNameAttribute": "The attribute to identify the user. \nE.g. \"userPrincipalName\" or \"sAMAccountName\" for Active Directory, \"uid\" for OpenLDAP.", + "ldapBindRequiresDn": "The option to format the username in the DN form.", + "ldapBaseDn": "The default base DN used for searching users. E.g. \"OU=users,OU=espocrm,DC=test, DC=lan\".", + "ldapOptReferrals": "if referrals should be followed to the LDAP client.", + "ldapCreateEspoUser": "This option allows EspoCRM to create a user from the LDAP.", + "ldapUserTeams": "Екипи за създадения потребител. За повече вижте потребителския профил.", + "ldapUserDefaultTeam": "Екип по подразбиране за създадения потребител. За повече вижте потребителския профил.", + "currencyDecimalPlaces": "Брой десетични знаци. Ако е празно, ще се покажат всички непразни десетични знаци.", + "aclStrictMode": "Разрешено: Достъпът до обхвати ще бъде забранен, ако не е посочено в ролята.\n\nДеактивирано: Достъпът до обхвати ще бъде разрешен, ако не е посочено в ролята.", + "outboundEmailIsShared": "Позволете на потребителите да изпращат имейли от този адрес.", + "aclAllowDeleteCreated": "Потребителите ще могат да премахват записи, които са създали, дори ако нямат достъп за изтриване.", + "textFilterUseContainsForVarchar": "Ако не е отметнато, тогава се използва операторът 'Започва с'. Можете да използвате заместващия знак „%“.", + "streamEmailNotificationsEntityList": "Уведомления по имейл за актуализации на активности на следвани записи. Потребителите ще получават известия по имейл само за определени типове обекти.", + "authTokenPreventConcurrent": "Потребителите няма да могат да влизат на няколко устройства едновременно.", + "emailAddressIsOptedOutByDefault": "При създаване на нов запис имейл адресът ще бъде маркиран като отписан.", + "cleanupDeletedRecords": "Изтритите записи ще бъдат премахнати от базата данни след известно време.", + "ldapPortalUserLdapAuth": "Позволете на потребителите на портала да използват LDAP удостоверяване вместо нормално удостоверяване.", + "ldapPortalUserPortals": "Портали по подразбиране за създаден потребител на портал", + "ldapPortalUserRoles": "Роли по подразбиране за създаден потребител на портала", + "jobRunInParallel": "Задачите ще се изпълняват в паралелни процеси.", + "jobPoolConcurrencyNumber": "Максимален брой процеси, които се изпълняват едновременно.", + "jobMaxPortion": "Максимален брой обработени задачи на едно изпълнение.", + "daemonInterval": "Интервал между cron процесите в секунди.", + "daemonMaxProcessNumber": "Максимален брой процеси на cron, които се изпълняват едновременно.", + "daemonProcessTimeout": "Максимално време за изпълнение (в секунди), разпределено за един процес на cron.", + "cronDisabled": "Cron задачите няма да се изпълняват.", + "maintenanceMode": "Само администраторите ще имат достъп до системата.", + "ldapAccountCanonicalForm": "The type of your account canonical form. There are 4 options:\n\n- 'Dn' - the form in the format 'CN=tester,OU=espocrm,DC=test, DC=lan'.\n\n- 'Username' - the form 'tester'.\n\n- 'Backslash' - the form 'COMPANY\\tester'.\n\n- 'Principal' - the form 'tester@company.com'.\nThe type of your account canonical form. There are 4 options:\n\n- 'Dn' - the form in the format 'CN=tester,OU=espocrm,DC=test, DC=lan'.\n\n- 'Username' - the form 'tester'.\n\n- 'Backslash' - the form 'COMPANY\\tester'.\n\n- 'Principal' - the form 'tester@company.com'.", + "massEmailVerp": "Технология за по-добра обработка на отхвърлени и неуспешно получени съобщения. Уверете се, че вашият SMTP сървър го поддържа.", + "displayListViewRecordCount": "В изгледа на списъка ще се покаже общ брой записи.", + "currencyList": "Какви валути ще бъдат налични в системата.", + "activitiesEntityList": "Какви записи ще бъдат налични в панела Дейности.", + "historyEntityList": "Какви записи ще бъдат налични в панела История.", + "calendarEntityList": "Какви записи ще бъдат налични в Календара.", + "addressStateList": "Предложения за автоматично попълване за област.", + "addressCityList": "Предложения за автоматично попълване на град.", + "addressCountryList": "Предложения за автоматично попълване на държава.", + "exportDisabled": "Потребителите няма да могат да експортират записи. Ще бъде разрешен само администратор.", + "globalSearchEntityList": "Какви записи могат да се търсят с Global Search.", + "siteUrl": "URL адрес на тази инстанция. Трябва да го промените, ако се преместите на друг домейн.", + "useCache": "Не се препоръчва да се деактивира, освен за целите на дебъгинг.", + "useWebSocket": "WebSocket позволява двупосочна интерактивна комуникация между сървър и браузър. Изисква настройка на WebSocket daemon на вашия сървър. Проверете документацията за повече информация.", + "passwordRecoveryForInternalUsersDisabled": "Само потребителите на портала ще могат да възстановят паролата.", + "passwordRecoveryNoExposure": "Няма да е възможно да се определи дали конкретен имейл адрес е регистриран в системата.", + "emailAddressLookupEntityTypeList": "За автоматично довършване на имейл адрес.", + "emailNotificationsDelay": "Съобщението може да бъде редактирано в рамките на посочения период от време, преди да бъде изпратено известието към потребителя/клиента.", + "outboundEmailFromAddress": "Системен имейл адрес.", + "smtpServer": "Ако е празно, тогава ще се използва групов имейл акаунт със съответния имейл адрес.", + "busyRangesEntityList": "Какво ще бъде взето предвид при показване на натоварени времеви диапазони в графика и хронологията.", + "recordsPerPageSelect": "Брой записи, първоначално показани при избор на записи." + }, + "labels": { + "System": "Системни настройки", + "Locale": "Езикови предпочитания", + "Configuration": "Конфигурация", + "In-app Notifications": "Известия в системата", + "Email Notifications": "Известия по имейл", + "Currency Settings": "Настройки на валутите", + "Currency Rates": "Валутни курсове", + "Mass Email": "Масови имейли", + "Test Connection": "Тестване на свързване", + "Connecting": "Свързване ...", + "Activities": "Дейности", + "Admin Notifications": "Административни известия", + "Search": "Търсене", + "Misc": "Разни", + "Passwords": "Пароли", + "2-Factor Authentication": "Двуфакторна автентификация", + "Group Tab": "Групово меню" + }, + "messages": { + "ldapTestConnection": "Връзката беше успешна." }, "options": { - "weekStart": { - "0": "неделя", - "1": "понеделник" - }, "currencyFormat": { "2": "$ 10" }, "streamEmailNotificationsTypeList": { "Post": "Публикации", - "Status": "актуализации на състоянието", - "EmailReceived": "Получени писма" + "Status": "Обновления на статуси", + "EmailReceived": "Получени имейл писма" }, "personNameFormat": { - "firstLast": "Първи последен", - "lastFirst": "Последна Първи", - "firstMiddleLast": "Първо Близкия Последна", - "lastFirstMiddle": "Последна Първи Близкия" + "firstLast": "Име Фамилия", + "lastFirst": "Фамилия Име", + "firstMiddleLast": "Име Презиме Фамилия", + "lastFirstMiddle": "Фамилия Име Презиме" + }, + "auth2FAMethodList": { + "Email": "Имейл" } - }, - "tooltips": { - "recordsPerPage": "Брой записи първоначално показват в изгледите списък.", - "recordsPerPageSmall": "Брой записи първоначално показва в отношенията панели.", - "followCreatedEntities": "Потребители автоматично ще следват записи те създали.", - "emailMessageMaxSize": "Всички входящи имейли, надвишаващи определен размер ще бъдат изсмукани от пръстите / без тяло и прикачени файлове.", - "authTokenLifetime": "Определя как могат да съществуват дълги жетони. 0 - означава, че няма изтичане.", - "authTokenMaxIdleTime": "Определя как отдавна могат да съществуват символите на последната за достъп. 0 - означава, че няма изтичане.", - "userThemesDisabled": "Ако е отметнато, потребителите няма да могат да изберете друга тема.", - "ldapUsername": "система потребителят Пълният DN, която позволява да търсите други потребители. Например \"CN = LDAP система на потребителя, ОУ = потребители, ОУ = espocrm, DC = тест, DC = LAN\".", - "ldapPassword": "Паролата за достъп до LDAP сървър.", - "ldapAuth": "Достъп пълномощията за сървъра на LDAP.", - "ldapUserNameAttribute": "Атрибутът за идентифициране на потребителя. Например \"userPrincipalName\" или \"sAMAccountName\" за Active Directory, \"UID\" за OpenLDAP.", - "ldapUserObjectClass": "ObjectClass атрибут за търсене на потребителите. Например \"лице\" за АД, \"inetOrgPerson\" за OpenLDAP.", - "ldapBindRequiresDn": "Опцията за форматиране на потребителското име във формата DN.", - "ldapBaseDn": "Базата подразбиране DN използва за търсене на потребители. Например \"OU = потребители, ОУ = espocrm, DC = тест, DC = LAN\".", - "ldapTryUsernameSplit": "Възможността да се раздели с потребителско име на домейна.", - "ldapOptReferrals": "ако реферали трябва да се спазват, за да клиента LDAP.", - "ldapCreateEspoUser": "Тази опция ви позволява да създадете EspoCRM потребител от LDAP.", - "ldapUserFirstNameAttribute": "LDAP атрибут, който се използва за определяне на потребителя името на първия. Например \"GivenName\".", - "ldapUserLastNameAttribute": "LDAP атрибут, който се използва за определяне на потребителя фамилия. Например \"SN\".", - "ldapUserTitleAttribute": "LDAP атрибут, който се използва за определяне на заглавието на потребителя. Например \"заглавие\".", - "ldapUserEmailAddressAttribute": "LDAP атрибут, който се използва за определяне на потребителя имейл адрес. Например \"поща\".", - "ldapUserPhoneNumberAttribute": "LDAP атрибут, който се използва за определяне на потребителя телефонния номер. Например \"telephoneNumber\".", - "ldapUserLoginFilter": "Филтърът, който позволява да ограничите потребителите, които могат да се използват EspoCRM. Например \"memberOf = CN = espoGroup, ОУ = групи, ОУ = espocrm, DC = тест, DC = LAN\".", - "ldapAccountDomainName": "Домейнът, който се използва за получаване на разрешение за LDAP сървър.", - "ldapAccountDomainNameShort": "Краткият домейн, който се използва за получаване на разрешение за LDAP сървър.", - "ldapUserTeams": "Екипи за създаден потребител. За повече, вижте потребителски профил.", - "ldapUserDefaultTeam": "По подразбиране екип за създаден за употреба. За повече, вижте потребителски профил.", - "b2cMode": "По подразбиране EspoCRM е пригодена за B2B. Можете да го включите към B2C.", - "currencyDecimalPlaces": "Брой на знака след десетичната запетая. Ако ще се показват празни след това всички непразни знака след десетичната запетая.", - "aclStrictMode": "Enabled: Достъп до обхват ще бъде забранено, ако това не е посочено в роли. За хора с увреждания: Достъп до обхват ще бъде разрешено, ако това не е посочено в роли.", - "outboundEmailIsShared": "Позволете на потребителите да изпращат имейли от този адрес.", - "aclAllowDeleteCreated": "Потребителите ще могат да се отстранят записи те създават, дори ако те не разполагат с изтриване достъп.", - "textFilterUseContainsForVarchar": "Ако не се проверява след това \"започва с\" оператор се използва. Можете да използвате този знак \"%\".", - "streamEmailNotificationsEntityList": "Имейл известия за актуализации на поточни последвани записи. Потребителите ще получават известия по имейл само за определени видовете юридически лица.", - "authTokenPreventConcurrent": "Потребителите няма да могат да влезете в профила на няколко устройства едновременно.", - "emailAddressIsOptedOutByDefault": "При създаване на нов запис имейл addess ще бъдат маркирани като или изключен.", - "cleanupDeletedRecords": "Непремахнати записи ще бъдат изтрити от базата данни след известно време.", - "ldapPortalUserLdapAuth": "Позволете портални потребителите да използват LDAP разпознаване вместо ESPO удостоверяване.", - "ldapPortalUserPortals": "По подразбиране Портали за създаден портал за потребителя", - "ldapPortalUserRoles": "По подразбиране роли за създаден портал за потребителя", - "jobRunInParallel": "Работа ще бъдат изпълнени в паралелни процеси.", - "jobPoolConcurrencyNumber": "Максимален брой процеси работят едновременно.", - "jobMaxPortion": "Максимален брой обработени задания за една екзекуция.", - "daemonInterval": "Интервал между процес Cron писти в секунда.", - "daemonMaxProcessNumber": "Максимален брой Cron процеси работят едновременно.", - "daemonProcessTimeout": "Максимално време за изпълнение (в секунди), разпределени за един процес Cron.", - "cronDisabled": "Cron няма да се изпълняват.", - "maintenanceMode": "Само администраторите ще имат достъп до системата.", - "ldapAccountCanonicalForm": "Видът на сметката си канонична форма. Има 4 варианта: - \"Данаил\" - формата, под формата \"CN = тестера, ОУ = espocrm, DC = тест, DC = локална мрежа\". - \"Потребителско име\" - \"тестера\" на формуляра. - \"Обратна наклонена черта\" - формата \"COMPANY \\ тестер\". - \"главен\" - формата \" tester@company.com \"." - }, - "labels": { - "System": "Система", - "Locale": "място", - "Configuration": "Конфигурация", - "In-app Notifications": "Вградено Известия", - "Email Notifications": "Известия по имейл", - "Currency Settings": "Настройки на валута", - "Currency Rates": "Валутни курсове", - "Mass Email": "Маса Email", - "Test Connection": "Тестване на свързване", - "Connecting": "Свързване ...", - "Activities": "дейности", - "Admin Notifications": "Admin Известия", - "Search": "Търсене", - "Misc": "Разни", - "Passwords": "Паролите", - "2-Factor Authentication": "2-фактор удостоверяване" - }, - "messages": { - "ldapTestConnection": "Връзката се установи успешно." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Stream.json b/application/Espo/Resources/i18n/bg_BG/Stream.json index bbe2a47c4d..834d1a7122 100644 --- a/application/Espo/Resources/i18n/bg_BG/Stream.json +++ b/application/Espo/Resources/i18n/bg_BG/Stream.json @@ -1,15 +1,16 @@ { "messages": { - "infoMention": "Вид ** @ потребителско име ** да се споменава за употреба в гредата.", - "infoSyntax": "Предлага синтаксис евтино" + "infoMention": "Въведете **@username**, за да споменете потребителя в публикацията.", + "infoSyntax": "Наличен Markdown синтаксис", + "couldNotAddFollowerUserHasNoAccessToStream": "Не може да се добави потребителят „{userName}“ към последователите. Потребителят няма права за обекта „Активност“ до записа." }, "syntaxItems": { "code": "код", - "multilineCode": "многоредово код", - "strongText": "силен текст", - "emphasizedText": "подчерта текст", - "deletedText": "заличава текст", - "blockquote": "блоков цитат", - "link": "връзка" + "multilineCode": "многоредов код", + "strongText": "удебелен текст", + "emphasizedText": "подчертан текст", + "deletedText": "изтрит текст", + "blockquote": "цитат", + "link": "URL" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Team.json b/application/Espo/Resources/i18n/bg_BG/Team.json index a54f59d75a..5f90db13b6 100644 --- a/application/Espo/Resources/i18n/bg_BG/Team.json +++ b/application/Espo/Resources/i18n/bg_BG/Team.json @@ -1,20 +1,23 @@ { "fields": { - "name": "име", - "roles": "Роли", - "positionList": "Позиция Списък" + "name": "Име", + "roles": "Роли и права", + "positionList": "Списък с позиции", + "layoutSet": "Оформление" }, "links": { "users": "Потребители", - "notes": "бележки", + "notes": "История и активност", "roles": "Роли", - "inboundEmails": "Група Имейл акаунти" + "inboundEmails": "Групови имейл акаунти", + "layoutSet": "Оформление" }, "tooltips": { - "roles": "Роли достъп. Потребителите на този отбор да получат ниво за контрол на достъпа от избрани роли.", - "positionList": "Свободни позиции в този отбор. Например специалист по Manager." + "roles": "Роли за достъп. Потребителите на този отдел получават ниво на достъп от избраните роли.", + "positionList": "Налични позиции в този отдел. Например специалист ИТ, Управител, Търговец.", + "layoutSet": "Предоставя възможност за оформления, които се различават от стандартните. Наборът за оформление ще бъде приложен към потребители, които имат този екип, зададен като екип по подразбиране." }, "labels": { - "Create Team": "Създаване на отбор" + "Create Team": "Създаване на отдел" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Template.json b/application/Espo/Resources/i18n/bg_BG/Template.json index 49283cc688..c7b7eb971f 100644 --- a/application/Espo/Resources/i18n/bg_BG/Template.json +++ b/application/Espo/Resources/i18n/bg_BG/Template.json @@ -1,49 +1,47 @@ { "fields": { - "name": "име", - "body": "тяло", + "name": "Име", + "body": "Съдържание", "entityType": "Тип на обекта", - "header": "удар с глава", - "leftMargin": "Ляво поле", - "topMargin": "Най-високо облагане на маржа", - "rightMargin": "Дясно поле", - "bottomMargin": "Долно поле", - "printFooter": "Печат Footer", - "footerPosition": "Footer Позиция", - "variables": "Налични Placeholders", - "pageFormat": "Формат на хартията", - "pageWidth": "Page Ширина (mm)", - "pageHeight": "Page Височина (mm)" + "header": "Хедър", + "footer": "Футър", + "leftMargin": "Отстояние от ляво", + "topMargin": "Отстояние от горе", + "rightMargin": "Отстояние от дясно", + "bottomMargin": "Отстояние от долу", + "printFooter": "Показване на футъра", + "footerPosition": "Позиция на футъра", + "variables": "Налични placeholders", + "pageOrientation": "Ориентация на страницата", + "pageFormat": "Хартиен формат", + "fontFace": "Шрифт", + "pageWidth": "Ширина на страницата (mm)", + "pageHeight": "Височина на страницата (mm)", + "headerPosition": "Позиция на хедъра", + "printHeader": "Принтирай хедъра", + "title": "Заглавие" }, "labels": { - "Create Template": "Създаване на шаблони" + "Create Template": "Създаване на шаблон" }, "tooltips": { - "footer": "Използвайте {PAGENUMBER} за отпечатване на номера на страницата.", - "variables": "Копиране и поставяне необходимо контейнер за Header, тяло или Footer." + "footer": "Използвайте {pageNumber} за отпечатване на номера на страницата.", + "variables": "Копирайте и поставете необходимия placeholder в хедъра, съдържанието или футъра." }, "options": { "pageOrientation": { "Portrait": "Портрет", - "Landscape": "пейзаж" + "Landscape": "Пейзаж" }, "placeholders": { "today": "Днес (дата)", - "now": "Сега (дата работен ден)", + "now": "Сега (дата-час)", "pagebreak": "Разделител на страница" }, "fontFace": { - "aealarabiya": "Ал-Арабия", "cid0cs": "CID-0 CS", "cid0jp": "CID-0 JP", - "cid0kr": "CID-0 KR", - "courier": "куриер", - "dejavuserif": "DejaVu сериф", - "kozminproregular": "Козмин Pro Regular", - "pdfasymbol": "PDFA Символ", - "symbol": "символ", - "times": "пъти", - "dejavuserifcondensed": "DejaVu Сериф Condensed" + "cid0kr": "CID-0 KR" }, "pageFormat": { "Custom": "Персонализиран" diff --git a/application/Espo/Resources/i18n/bg_BG/User.json b/application/Espo/Resources/i18n/bg_BG/User.json index 01b2773b1e..88ffb1b98d 100644 --- a/application/Espo/Resources/i18n/bg_BG/User.json +++ b/application/Espo/Resources/i18n/bg_BG/User.json @@ -1,129 +1,151 @@ { "fields": { - "name": "име", - "userName": "потребителско име", - "title": "Заглавие", - "defaultTeam": "По подразбиране Екип", - "emailAddress": "електронна поща", - "phoneNumber": "телефон", + "name": "Име", + "userName": "Потребителско име", + "title": "Описание", + "isAdmin": "Е администратор", + "defaultTeam": "Отдел по подразбиране", + "emailAddress": "Електронна поща", + "phoneNumber": "Телефон", "roles": "Роли", "portals": "Портали", - "portalRoles": "Portal Роли", - "teamRole": "позиция", - "password": "парола", + "portalRoles": "Роли в портала", + "teamRole": "Позиция", + "password": "Парола", "currentPassword": "Настояща парола", - "passwordConfirm": "потвърди парола", - "newPassword": "нова парола", - "newPasswordConfirm": "Потвърждение на новата парола", - "avatar": "въплъщение", - "isActive": "е активен", - "isPortalUser": "Дали Портал Потребител", - "contact": "контакт", - "accounts": "сметки", - "account": "Сметката (Основно)", - "sendAccessInfo": "Изпрати е-мейл с информация Достъп до потребителя", - "portal": "портал", - "gender": "пол", - "position": "Позиция в отбора", + "passwordConfirm": "Потвърди паролата", + "newPassword": "Нова парола", + "newPasswordConfirm": "Потвърди новата парола", + "avatar": "Аватар", + "isActive": "Е активен", + "isPortalUser": "Е потребител на портал", + "contact": "Контакт", + "accounts": "Клиенти", + "account": "Клиент (Основен)", + "sendAccessInfo": "Изпрати имейл с информация за достъп до потребителя", + "portal": "Портал", + "gender": "Пол", + "position": "Позиция в отдел", "ipAddress": "IP адрес", - "passwordPreview": "парола Преглед", - "isSuperAdmin": "Дали суперадминистраторски", + "passwordPreview": "Преглед на паролата", + "isSuperAdmin": "Е супер администратор", "lastAccess": "Последен достъп", "type": "Тип", + "apiKey": "API ключ", + "secretKey": "Секретен ключ", "authMethod": "Метод за удостоверяване", - "yourPassword": "текущата си парола", - "dashboardTemplate": "Dashboard Шаблон", - "auth2FA": "Активиране на 2-фактор удостоверяване", - "auth2FAMethod": "2FA Метод" + "yourPassword": "Вашата текуща парола", + "dashboardTemplate": "Шаблон за работно табло", + "auth2FAEnable": "Активиране на Двуфакторна автентификация", + "auth2FAMethod": "2FA Метод", + "auth2FATotpSecret": "2FA TOTP секретен ключ" }, "links": { - "teams": "Отбори", + "teams": "Отдели", "roles": "Роли", - "notes": "бележки", + "notes": "Активност", "portals": "Портали", - "portalRoles": "Portal Роли", - "contact": "контакт", - "accounts": "сметки", - "account": "Сметката (Основно)", + "portalRoles": "Роли в портала", + "contact": "Контакт", + "accounts": "Клиенти", + "account": "Клиент (Основен)", "tasks": "Задачи", - "defaultTeam": "По подразбиране Екип", - "dashboardTemplate": "Dashboard Шаблон" + "defaultTeam": "Екип по подразбиране", + "dashboardTemplate": "Шаблон за работен плот", + "userData": "Потребителски данни" }, "labels": { "Create User": "Създаване на потребител", "Generate": "Генериране", - "Access": "достъп", + "Access": "Достъп", "Preferences": "Предпочитания", "Change Password": "Промяна на паролата", "Teams and Access Control": "Екипи и контрол на достъп", "Forgot Password?": "Забравена парола?", - "Password Change Request": "Парола Заявка за промяна на", + "Password Change Request": "Възстановяване на парола", "Email Address": "Имейл адрес", - "External Accounts": "Външни сметки", + "External Accounts": "Външни акаунти", "Email Accounts": "Имейл акаунти", - "Portal": "портал", - "Create Portal User": "Създаване Портал Потребител", - "Proceed w/o Contact": "Продължете / без контакт", - "Generate New API Key": "Генериране на ново API Key", + "Portal": "Портал", + "Create Portal User": "Създаване на потребител за портал", + "Proceed w/o Contact": "Продължаване без контакт", + "Generate New API Key": "Генериране на нов API ключ", "Generate New Password": "Генериране на нова парола", - "Code": "код", - "Back to login form": "Обратно в логин формата", + "Code": "Код", + "Back to login form": "Обратно към логин формата", "Requirements": "Изисквания", "Security": "Сигурност", - "Secret": "Тайна" + "Reset 2FA": "Възстановяване на 2FA", + "Send Password Change Link": "Изпращане на връзка за промяна на паролата", + "Send Code": "Изпращане на код" }, "tooltips": { - "defaultTeam": "Всички записи, създадени от този потребител ще бъдат свързани с този отбор по подразбиране.", - "userName": "Писма AZ, 0-9 номера, точки, тирета @ -signs и право черти.", - "isAdmin": "Admin потребител има достъп до всичко.", - "isActive": "Ако нерегистриран потребител след това няма да можете да влезете.", - "teams": "Отбори които този потребител принадлежи. ниво за контрол на достъпа е наследен от роли екипа.", - "roles": "Допълнителни функции за достъп. Използвайте го, ако потребителят не принадлежи на всеки отбор, или ще трябва да се разшири ниво за контрол на достъпа изключително за този потребител.", - "portalRoles": "Допълнителни портални роли. Използвайте го, за да се разшири ниво за контрол на достъпа изключително за този потребител.", - "portals": "Портали които този потребител има достъп." + "defaultTeam": "Всички записи, създадени от този потребител ще бъдат свързани с този отдел по подразбиране.", + "userName": "Букви AZ, 0-9 номера, точки, тирета @ символ и долни черти са позволени.", + "isAdmin": "Администраторски потребител може да достъпва всичко без ограничения.", + "isActive": "Ако тази отметка е деактивирана, потребителят няма да може влезе в системата.", + "teams": "Отдели, към които този потребител принадлежи. Нивото на достъп и правата се онаследяват от ролите, които са асоциирани с отдела.", + "roles": "Допълнителни роли за достъп. Използвайте го, ако потребителят не принадлежи към нито един екип или трябва да разширите нивото на контрол на достъпа есклузивно за този потребител.", + "portalRoles": "Допълнителни роли на портала. Използвайте го, за да разширите нивото на контрол на достъпа ексклузивно за този потребител.", + "portals": "Портали към които този потребител има достъп." }, "messages": { "passwordWillBeSent": "Паролата ще бъде изпратена на имейл адреса на потребителя.", - "passwordChanged": "паролата е сменена", + "passwordChanged": "Паролата беше успешно сменена", "userCantBeEmpty": "Потребителското име не може да бъде празно", "wrongUsernamePasword": "Грешно потребителско име / парола", - "emailAddressCantBeEmpty": "E-mail адрес не може да бъде празно", - "userNameEmailAddressNotFound": "Потребителско име / имейл адрес не е намерен", - "forbidden": "Забранения, моля опитайте по-късно", - "uniqueLinkHasBeenSent": "Уникалната URL адреса е изпратена до указания имейл адреса.", - "passwordChangedByRequest": "Паролата е сменена.", + "emailAddressCantBeEmpty": "Имейл адреса не може да бъде празен", + "userNameEmailAddressNotFound": "Потребителското име или имейл адрес не беше намерен", + "forbidden": "Забранено, моля опитайте по-късно или се свържете с администратора", + "uniqueLinkHasBeenSent": "Линк за възстановяване беше изпратен до посочения имейл адрес.", + "passwordChangedByRequest": "Паролата беше сменена.", "userNameExists": "Потребителското име вече съществува", - "setupSmtpBefore": "Вие трябва да настроите [настройки SMTP] ({URL}), за да направи системата да може да изпращате паролата си в имейл.", - "passwordStrengthLength": "Трябва да бъде поне {дължина} знака.", - "passwordStrengthLetterCount": "Трябва да съдържа поне {брой} писмо (и).", + "setupSmtpBefore": "Трябва да настроите [SMTP настройки]({url}), за да може системата да изпраща парола по имейл.", + "passwordStrengthLength": "Трябва да има поне {length} знака.", + "passwordStrengthLetterCount": "Трябва да съдържа поне {count} букви.", "passwordStrengthNumberCount": "Трябва да съдържа най-малко {брой} цифри (и).", - "passwordStrengthBothCases": "Трябва да съдържа букви и на двете главни и малки букви.", + "passwordStrengthBothCases": "Трябва да съдържа както главни, така и малки букви.", "wrongCode": "Грешен код", - "codeIsRequired": "се изисква код", - "enterTotpCode": "Въведете код от приложението Удостоверител.", - "verifyTotpCode": "Сканирайте QR-код, с мобилното си приложение, удостоверяващ. Ако имате проблеми с сканирането, можете да въведете ръчно тайната. След това ще видите 6-цифрен код в молбата Ви. Въведете този код в полето по-долу.", + "codeIsRequired": "Кодът е задължителен", + "enterTotpCode": "Въведете код от вашето приложение за 2FA удостоверяване.", + "verifyTotpCode": "Сканирайте QR-кода с вашето мобилно приложение за удостоверяване. Ако имате проблеми със сканирането, можете да въведете секретния ключ ръчно. След това ще видите 6-цифрен код във вашето приложение. Въведете този код в полето по-долу.", "generateAndSendNewPassword": "Нова парола ще бъде генерирана и изпратена на имейл адреса на потребителя.", - "security2FaResetConfimation": "Сигурни ли сте, искате да нулирате текущите настройки 2FA?" + "security2FaResetConfimation": "Наистина ли искате да нулирате текущите настройки на 2FA?", + "ldapUserInEspoNotFound": "Потребителят не е намерен в системата. Свържете се с вашия администратор, за да създадете потребителя.", + "passwordRecoverySentIfMatched": "Ако приемем, че въведените данни съответстват на потребителски акаунт.", + "auth2FARequiredHeader": "Двуфакторната автентификация е задължителна", + "auth2FARequired": "Трябва да настроите двуфакторна автентификация. Използвайте приложение за удостоверяване на вашия мобилен телефон (напр. Google Authenticator).", + "sendPasswordChangeLinkConfirmation": "На потребителя ще бъде изпратен имейл с уникален линк, позволяваща му да промени паролата си. Връзката ще изтече след определен период от време.", + "yourAuthenticationCode": "Вашият код за удостоверяване: {code}.", + "choose2FaSmsPhoneNumber": "Изберете телефонен номер, който ще се използва за 2FA.", + "choose2FaEmailAddress": "Изберете имейл адрес, който ще се използва за 2FA. Силно препоръчително е да използвате неосновен имейл адрес.", + "enterCodeSentInEmail": "Въведете кода, изпратен на вашия имейл адрес.", + "enterCodeSentBySms": "Въведете кода, изпратен чрез SMS на вашия телефонен номер.", + "passwordChangeRequestNotFound": "Заявката за промяна на паролата не е намерена. Може да е изтекъл. Опитайте да започнете възстановяване на нова парола от [страницата за вход]({url})." }, "boolFilters": { - "onlyMyTeam": "Само Моят екип" + "onlyMyTeam": "Само моя отдел" }, "presetFilters": { "active": "Активен", - "activePortal": "портал Active" + "activePortal": "Активен портал" }, "options": { "gender": { "": "Не е зададен", "Male": "Мъжки пол", "Female": "Женски пол", - "Neutral": "неутрален" + "Neutral": "Неутрален" }, "type": { - "regular": "Редовен", - "portal": "портал", - "system": "Система", - "super-admin": "Суперадминистратори" + "regular": "Нормален", + "admin": "Админ", + "portal": "Портал", + "system": "Системен", + "super-admin": "Суперадминистратор" + }, + "authMethod": { + "ApiKey": "API ключ" } } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/bg_BG/Webhook.json b/application/Espo/Resources/i18n/bg_BG/Webhook.json index 800ed35bd0..ffae077792 100644 --- a/application/Espo/Resources/i18n/bg_BG/Webhook.json +++ b/application/Espo/Resources/i18n/bg_BG/Webhook.json @@ -1,15 +1,16 @@ { "labels": { - "Create Webhook": "Създаване Webhook" + "Create Webhook": "Създаване на Webhook" }, "fields": { - "event": "събитие", - "isActive": "е активен", - "user": "API за потребителя", + "event": "Събитие", + "isActive": "Е активен", + "user": "API потребител", "entityType": "Тип на обекта", - "field": "поле" + "field": "Поле", + "secretKey": "Секретен ключ" }, "links": { - "user": "потребител" + "user": "Потребител" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/cs_CZ/Admin.json b/application/Espo/Resources/i18n/cs_CZ/Admin.json index 7adea3690b..4a9995e396 100644 --- a/application/Espo/Resources/i18n/cs_CZ/Admin.json +++ b/application/Espo/Resources/i18n/cs_CZ/Admin.json @@ -84,7 +84,7 @@ "url": "Url", "varchar": "Varchar", "file": "Soubor", - "image": "Obrázenk", + "image": "Obrázek", "multiEnum": "Vícenásobný Enum" }, "fields": { diff --git a/application/Espo/Resources/i18n/en_US/Global.json b/application/Espo/Resources/i18n/en_US/Global.json index 9b46549a64..1f113a7ec6 100644 --- a/application/Espo/Resources/i18n/en_US/Global.json +++ b/application/Espo/Resources/i18n/en_US/Global.json @@ -294,6 +294,7 @@ "fieldValueDuplicate": "Duplicate value", "fieldIsUploading": "Uploading in progress", "fieldExceedsMaxCount": "Count exceeds max allowed {maxCount}", + "arrayItemMaxLength": "Item shouldn't be longer than {max} characters", "resetPreferencesDone": "Preferences has been reset to defaults", "confirmation": "Are you sure?", "unlinkAllConfirmation": "Are you sure you want to unlink all related records?", diff --git a/application/Espo/Resources/i18n/lt_LT/ActionHistoryRecord.json b/application/Espo/Resources/i18n/lt_LT/ActionHistoryRecord.json index f3d3be5666..5b7b2b194d 100644 --- a/application/Espo/Resources/i18n/lt_LT/ActionHistoryRecord.json +++ b/application/Espo/Resources/i18n/lt_LT/ActionHistoryRecord.json @@ -5,6 +5,7 @@ "createdAt": "Data", "target": "Tikslas", "targetType": "Adresatų tipas", + "authToken": "Autentifikavimo žetonas", "ipAddress": "IP Adresss", "authLogRecord": "Auth žurnalo įrašas", "userType": "Naudotojo tipas" diff --git a/application/Espo/Resources/i18n/lt_LT/Admin.json b/application/Espo/Resources/i18n/lt_LT/Admin.json index 30ce52c195..60b8e72af9 100644 --- a/application/Espo/Resources/i18n/lt_LT/Admin.json +++ b/application/Espo/Resources/i18n/lt_LT/Admin.json @@ -74,7 +74,12 @@ "Dashboard Templates": "Prietaisų skydelio šablonai", "Email Addresses": "El. pašto adresai", "Phone Numbers": "Telefono numeriai", - "Layout Sets": "Maketų rinkiniai" + "Layout Sets": "Maketų rinkiniai", + "Messaging": "Žinučių siuntimas", + "Misc": "Įvairūs", + "Job Settings": "Darbo nustatymai", + "Configuration Instructions": "Konfigūravimo instrukcijos", + "Formula Sandbox": "Formulės smėlio dėžė" }, "layouts": { "list": "Sąrašas", @@ -195,7 +200,10 @@ "codeType": "Kodo tipas", "lastChar": "Paskutinis simbolis", "listPreviewSize": "Peržiūros dydis sąrašo rodinyje", - "onlyDefaultCurrency": "Tik numatytoji valiuta" + "onlyDefaultCurrency": "Tik numatytoji valiuta", + "dynamicLogicInvalid": "Sąlygos, dėl kurių laukas negalioja", + "conversionDisabled": "Išjungti konversiją", + "decimalPlaces": "Dešimtainės vietos" }, "messages": { "selectEntityType": "Pasirinkite objekto tipą kairiajame meniu.", @@ -261,7 +269,10 @@ "dashboardTemplates": "Įdiegti prietaisų skydelius naudotojams.", "phoneNumbers": "Visi sistemoje išsaugoti telefono numeriai.", "emailAddresses": "Visi sistemoje saugomi el. pašto adresai.", - "layoutSets": "Maketų, kuriuos galima priskirti komandoms ir portalams, rinkiniai." + "layoutSets": "Maketų, kuriuos galima priskirti komandoms ir portalams, rinkiniai.", + "jobsSettings": "Darbo apdorojimo nustatymai. Užduotys vykdomos fone.", + "sms": "SMS nustatymai.", + "formulaSandbox": "Rašykite ir išbandykite formulių scenarijus." }, "options": { "previewSize": { @@ -296,7 +307,8 @@ "notePostNoParent": "Pranešimas apie įrašą (be susijusių)", "noteStatus": "Pranešimas apie statuso atnaujinimą", "passwordChangeLink": "Slaptažodžio keitimo nuoroda", - "noteEmailReceived": "Pranešimas apie gautą el. laišką" + "noteEmailReceived": "Pranešimas apie gautą el. laišką", + "twoFactorCode": "2FA kodas" }, "strings": { "rebuildRequired": "Reikia atstatyti" @@ -309,6 +321,7 @@ "authLog": "žurnalas, istorija", "authTokens": "istorija, prieiga, žurnalas", "entityManager": "laukai,santykiai,ryšiai", - "templateManager": "pranešimai" + "templateManager": "pranešimai", + "authentication": "slaptažodis, saugumas, ldap" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lt_LT/AuthToken.json b/application/Espo/Resources/i18n/lt_LT/AuthToken.json index e59aa6008c..79b0a390f7 100644 --- a/application/Espo/Resources/i18n/lt_LT/AuthToken.json +++ b/application/Espo/Resources/i18n/lt_LT/AuthToken.json @@ -4,7 +4,7 @@ "ipAddress": "IP Adresss", "lastAccess": "Paskutinio prisijungimo data", "createdAt": "Prisijungimo data", - "isActive": "Yra aktyvus", + "isActive": "Yra Aktyvus", "portal": "Portalas" }, "links": { @@ -15,7 +15,7 @@ "inactive": "Neaktyvus" }, "labels": { - "Set Inactive": "Nustatyti neaktyvią" + "Set Inactive": "Nustatyti Neaktyviu" }, "massActions": { "setInactive": "Nustatyti kaip neaktyvų" diff --git a/application/Espo/Resources/i18n/lt_LT/DashletOptions.json b/application/Espo/Resources/i18n/lt_LT/DashletOptions.json index 63dda8f1b3..ca847ca698 100644 --- a/application/Espo/Resources/i18n/lt_LT/DashletOptions.json +++ b/application/Espo/Resources/i18n/lt_LT/DashletOptions.json @@ -15,7 +15,7 @@ "sortBy": "Rikiavimas (laukelių)", "sortDirection": "Rikiavimas kryptis)", "expandedLayout": "Išdėstymas", - "dateFilter": "Data filtras", + "dateFilter": "Datos filtras", "skipOwn": "Nerodyti savo įrašų" }, "options": { diff --git a/application/Espo/Resources/i18n/lt_LT/DynamicLogic.json b/application/Espo/Resources/i18n/lt_LT/DynamicLogic.json index e33053f23c..f0e3de82d0 100644 --- a/application/Espo/Resources/i18n/lt_LT/DynamicLogic.json +++ b/application/Espo/Resources/i18n/lt_LT/DynamicLogic.json @@ -19,7 +19,10 @@ "contains": "Turi", "has": "Turi", "notContains": "Neturi", - "notHas": "Neturi" + "notHas": "Neturi", + "startsWith": "Prasideda nuo", + "endsWith": "Baigiasi su", + "matches": "Rungtynės (reg exp)" } }, "labels": { diff --git a/application/Espo/Resources/i18n/lt_LT/Email.json b/application/Espo/Resources/i18n/lt_LT/Email.json index bc38f1a70c..2cbe46f87c 100644 --- a/application/Espo/Resources/i18n/lt_LT/Email.json +++ b/application/Espo/Resources/i18n/lt_LT/Email.json @@ -38,16 +38,22 @@ "messageId": "Pranešimo id", "messageIdInternal": "Pranešimo ID (vidinis)", "folderId": "Aplanko ID", - "fromName": "Iš vardo", + "fromName": "Nuo", "fromString": "Iš stygos", - "isSystem": "Ar sistema", + "isSystem": "Yra Sistema", "toEmailAddresses": "El. Pašto adresai", "bccEmailAddresses": "BCC el. Pašto adresai", "replyToEmailAddresses": "Atsakymas į el. Pašto adresus", "personStringData": "Asmens eilutės duomenys", "fromEmailAddress": "Iš Adresas (nuoroda)", "replyToName": "Atsakyti į pavadinimą", - "replyToAddress": "Atsakymo į adresą adresas" + "replyToAddress": "Atsakymo į adresą adresas", + "icsContents": "ICS turinys", + "icsEventData": "ICS įvykių duomenys", + "icsEventUid": "ICS įvykio UID", + "createdEvent": "Sukurtas įvykis", + "event": "Renginys", + "icsEventDateStart": "ICS Renginio data Pradžia" }, "links": { "replied": "Atsakyta", @@ -102,7 +108,8 @@ "Folders": "Aplankai", "View Users": "Peržiūrėti naudotojus", "No Subject": "Nėra temos", - "Insert Field": "Įterpti lauką" + "Insert Field": "Įterpti lauką", + "Event": "Renginys" }, "messages": { "testEmailSent": "Bandomasis el. laiškas išsiųstas", diff --git a/application/Espo/Resources/i18n/lt_LT/EmailTemplate.json b/application/Espo/Resources/i18n/lt_LT/EmailTemplate.json index 122ab6e5d4..57ec49fd73 100644 --- a/application/Espo/Resources/i18n/lt_LT/EmailTemplate.json +++ b/application/Espo/Resources/i18n/lt_LT/EmailTemplate.json @@ -25,7 +25,8 @@ "optOutLink": "atsisakyti prenumeratos nuorodą", "today": "Šiandienos data", "now": "Dabartinė data ir laikas", - "currentYear": "Einamieji metai" + "currentYear": "Einamieji metai", + "optOutUrl": "Atsisakymo nuo prenumeratos nuorodos URL" }, "messages": { "infoText": "Galimos vietos žymos:\n\n{optOutUrl} – Atsisakymo nuorodos URL;\n\n{optOutLink} – prenumeratos atsisakymo nuoroda." diff --git a/application/Espo/Resources/i18n/lt_LT/EntityManager.json b/application/Espo/Resources/i18n/lt_LT/EntityManager.json index b0c0d6b6b7..aa4c41fe6f 100644 --- a/application/Espo/Resources/i18n/lt_LT/EntityManager.json +++ b/application/Espo/Resources/i18n/lt_LT/EntityManager.json @@ -36,7 +36,9 @@ "fullTextSearch": "Pilna teksto paieška", "countDisabled": "Išjungti įrašų skaičių", "parentEntityTypeList": "Patronuojančių subjektų tipai", - "foreignLinkEntityTypeList": "Išorinės nuorodos" + "foreignLinkEntityTypeList": "Išorinės nuorodos", + "entity": "Subjektas", + "optimisticConcurrencyControl": "Optimistinis lygiagretumo valdymas" }, "options": { "type": { @@ -53,7 +55,7 @@ "oneToMany": "Vienas-daugeliui", "manyToOne": "Daugelis-vienam", "parentToChildren": "Pagrindinis-antriniui", - "childrenToParent": "Vaikai tėvams", + "childrenToParent": "Vaikai-tėvams", "oneToOneRight": "Teisė \"vienas prieš vieną", "oneToOneLeft": "Vienas prie vieno kairėje" }, @@ -77,6 +79,7 @@ "linkMultipleField": "\"Susieti daugelį laukelių\" yra patogus būdas redaguoti sasajas. Nenaudokite to, jei galite turėti daug panašių įrašų.", "entityType": "Bazė plius - rodo \"Veiklos\", \"Istorija\" ir \"Užduotys\" skiltis.\nĮvykis - pasiekiamas skiltyje \"Kalendorius\" ir \"Veiklos\".", "fullTextSearch": "Reikia atlikti rekonstrukciją.", - "countDisabled": "Bendras skaičius nebus rodomas sąrašo rodinyje. Gali sutrumpėti krovimo laikas, kai DB lentelė yra didelė." + "countDisabled": "Bendras skaičius nebus rodomas sąrašo rodinyje. Gali sutrumpėti krovimo laikas, kai DB lentelė yra didelė.", + "optimisticConcurrencyControl": "Užkerta kelią rašymo konfliktams." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lt_LT/Export.json b/application/Espo/Resources/i18n/lt_LT/Export.json index 6bbbccd87d..a244c78206 100644 --- a/application/Espo/Resources/i18n/lt_LT/Export.json +++ b/application/Espo/Resources/i18n/lt_LT/Export.json @@ -2,11 +2,22 @@ "fields": { "fieldList": "Laukelių sąrašas", "exportAllFields": "Eksportuoti visus laukus", - "format": "Formatas" + "format": "Formatas", + "status": "Statusas" }, "options": { "format": { "xlsx": "XLSX (Excel) " + }, + "status": { + "Pending": "Laukiama", + "Running": "Bėgimas", + "Success": "Sėkmė", + "Failed": "Nepavyko" } + }, + "messages": { + "exportProcessed": "Eksportas apdorotas. Atsisiųskite [failą]({url}).", + "infoText": "Eksportas apdorojamas neveikiant cron. Tai gali užtrukti šiek tiek laiko. Šio modalinio dialogo uždarymas neturės įtakos vykdymo procesui." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lt_LT/FieldManager.json b/application/Espo/Resources/i18n/lt_LT/FieldManager.json index 7412cc3938..35008c8308 100644 --- a/application/Espo/Resources/i18n/lt_LT/FieldManager.json +++ b/application/Espo/Resources/i18n/lt_LT/FieldManager.json @@ -80,7 +80,8 @@ "readOnly": "artotojas negali nurodyti laukelio vertės. Bet gali būti apskaičiuojamas pagal formulę.", "maxFileSize": "Jei tuščia arba 0, tai nelimituojama", "fileAccept": "Kokius failų tipus priimti. Galima pridėti pasirinktinių elementų.", - "barcodeLastChar": "EAN-13 tipo." + "barcodeLastChar": "EAN-13 tipo.", + "conversionDisabled": "Šiam laukui valiutos konvertavimo veiksmas nebus taikomas." }, "fieldParts": { "address": { @@ -131,6 +132,7 @@ "phone": "Telefono numerių ir jų parametrų rinkinys: Tipas, Atsisakyta, Negaliojantis, Pirminis.", "foreign": "Susijusio įrašo laukas. Tik nuskaitymui.", "link": "Įrašas, susijęs per ryšį \"Priklauso-tam\" (daug-prieš-vieną arba vienas-prieš-vieną).", - "linkParent": "Įrašas, susijęs per \"priklauso tėvams\" ryšį. Gali būti skirtingų tipų." + "linkParent": "Įrašas, susijęs per \"priklauso tėvams\" ryšį. Gali būti skirtingų tipų.", + "linkMultiple": "Įrašų rinkinys, susijęs Has-Many (daugelio su daugeliu arba vieno su daugeliu) ryšiu. Ne visi ryšiai turi savo nuorodų daugybinius laukus. Juos turi tik tie, kuriuose įjungtas (-i) parametras (-ai) Link-Multiple." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lt_LT/Formula.json b/application/Espo/Resources/i18n/lt_LT/Formula.json index 9e26dfeeb6..be128987a5 100644 --- a/application/Espo/Resources/i18n/lt_LT/Formula.json +++ b/application/Espo/Resources/i18n/lt_LT/Formula.json @@ -1 +1,23 @@ -{} \ No newline at end of file +{ + "labels": { + "Check Syntax": "Sintaksės tikrinimas", + "Run": "Paleisti" + }, + "fields": { + "target": "Tikslinė", + "targetType": "Tikslinis tipas", + "script": "Skriptas", + "output": "Išėjimas", + "error": "Klaida" + }, + "messages": { + "runSuccess": "Sėkmingai įvykdyta.", + "runError": "Klaida.", + "checkSyntaxSuccess": "Sintaksė teisinga.", + "checkSyntaxError": "Sintaksės klaida.", + "emptyScript": "Scenarijus yra tuščias." + }, + "tooltips": { + "output": "Spausdinkite reikšmes naudodami funkciją `output\\printLine`." + } +} \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lt_LT/Global.json b/application/Espo/Resources/i18n/lt_LT/Global.json index cb34be4be5..1f2ab7dcf1 100644 --- a/application/Espo/Resources/i18n/lt_LT/Global.json +++ b/application/Espo/Resources/i18n/lt_LT/Global.json @@ -50,7 +50,8 @@ "ApiUser": "API naudotojas", "DashboardTemplate": "Prietaisų skydelio šablonas", "Currency": "Valiuta", - "LayoutSet": "Maketų rinkinys" + "LayoutSet": "Maketų rinkinys", + "Mass Action": "Masiniai veiksmai" }, "scopeNamesPlural": { "Email": "El. laiškai", @@ -254,7 +255,14 @@ "View on Map": "Žiūrėti žemėlapyje", "Proceed": "Tęsti", "Attached": "Pridedamas", - "Preview": "Peržiūra" + "Preview": "Peržiūra", + "Up": "Į viršų", + "Save & Continue Editing": "Išsaugoti ir tęsti redagavimą", + "Save & New": "Išsaugoti ir nauja", + "Field": "Laukas", + "Resolution": "Rezoliucija", + "Resolve Conflict": "Išspręskite konfliktą", + "Download": "Atsisiųsti" }, "messages": { "pleaseWait": "Prašome palaukti...", @@ -300,7 +308,7 @@ "massUnfollowZeroResult": "Nėra nesekamų įrašų", "fieldShouldBeEmail": "{laukas} turėtų būti tinkamas el. pašto adresas", "fieldShouldBeFloat": "{laukas} turėtų būti tinkamas", - "fieldShouldBeInt": "{laukas} turi būti teisingas sveikasis skaičius", + "fieldShouldBeInt": "{laukas} turi būti sveikasis skaičius", "fieldShouldBeDate": "{laukas} turėtų būti galiojanti data", "fieldShouldBeDatetime": "{field} turėtų būti teisinga data / laikas", "internalPostTitle": "Paštą mato tik vidiniai vartotojai", @@ -318,7 +326,9 @@ "fieldExceedsMaxCount": "Skaičius viršija didžiausią leistiną {maxCount}", "notUpdated": "Neatnaujinta", "maintenanceMode": "Šiuo metu programa veikia techninės priežiūros režimu. Prieigą turi tik administratoriaus naudotojai.\n\nPriežiūros režimą galima išjungti adresu Administravimas → Nustatymai.", - "fieldInvalid": "{field} yra negaliojantis" + "fieldInvalid": "{field} yra negaliojantis", + "resolveSaveConflict": "Įrašas buvo pakeistas. Prieš išsaugodami įrašą turite išspręsti konfliktą.", + "massActionProcessed": "Masinis veiksmas buvo apdorotas." }, "boolFilters": { "onlyMy": "Tik mano", @@ -339,7 +349,8 @@ "convertCurrency": "Pakeisti valiutą", "printPdf": "Spausdinti PDF formatu", "unlink": "Atsieti", - "recalculateFormula": "Perskaičiuoti formulę" + "recalculateFormula": "Perskaičiuoti formulę", + "update": "Atnaujinti" }, "fields": { "name": "Vardas", @@ -598,6 +609,11 @@ "Fax": "Faksas", "Home": "Namų", "Other": "Kitas" + }, + "saveConflictResolution": { + "current": "Dabartinis", + "actual": "Tikrasis", + "original": "Originalus" } }, "sets": { @@ -711,5 +727,14 @@ }, "listViewModes": { "list": "Sąrašas" + }, + "themes": { + "DarkVertical": "Tamsus", + "Dark": "Tamsus horizontalus", + "Espo": "\"Espo Horizontal", + "Sakura": "Sakura Horizontalusis", + "Violet": "Violetinė horizontali", + "VioletVertical": "Violetinė", + "Hazyblue": "Hazyblue Horizontalus" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lt_LT/Job.json b/application/Espo/Resources/i18n/lt_LT/Job.json index 8b5d87169a..ae2f6e2f49 100644 --- a/application/Espo/Resources/i18n/lt_LT/Job.json +++ b/application/Espo/Resources/i18n/lt_LT/Job.json @@ -16,7 +16,10 @@ "targetId": "Tikslinis ID", "number": "Numeris", "queue": "Eilė", - "job": "Darbas" + "job": "Darbas", + "group": "Grupė", + "className": "Klasės pavadinimas", + "targetGroup": "Tikslinė grupė" }, "options": { "status": { diff --git a/application/Espo/Resources/i18n/lt_LT/LayoutManager.json b/application/Espo/Resources/i18n/lt_LT/LayoutManager.json index 5440623fdd..de49d263f3 100644 --- a/application/Espo/Resources/i18n/lt_LT/LayoutManager.json +++ b/application/Espo/Resources/i18n/lt_LT/LayoutManager.json @@ -9,7 +9,8 @@ "sticked": "Prikabinta", "isLarge": "Didelis šrifto dydis", "dynamicLogicVisible": "Sąlygos, dėl kurių skydas matomas", - "hidden": "Paslėptas" + "hidden": "Paslėptas", + "dynamicLogicStyled": "Taikomas sąlygų sudarymo stilius" }, "options": { "align": { @@ -31,6 +32,14 @@ }, "tooltips": { "link": "Jei pažymėta, lauko reikšmė bus rodoma kaip nuoroda, nukreipianti į išsamią įrašo peržiūrą. Paprastai tai naudojama *Vardas* laukams.", - "hiddenPanel": "Norint pamatyti skydelį, reikia spustelėti \"Rodyti daugiau\"." + "hiddenPanel": "Norint pamatyti skydelį, reikia spustelėti \"Rodyti daugiau\".", + "sticked": "Plokštė bus priklijuota prie aukščiau esančios plokštės. Tarp plokščių nėra tarpo.", + "panelStyle": "Skydelio spalva.", + "dynamicLogicVisible": "Jei nustatyta, skydelis bus paslėptas, nebent bus įvykdyta sąlyga.", + "dynamicLogicStyled": "Spalva bus taikoma, jei bus įvykdyta tam tikra sąlyga . Spalva apibrėžiama parametru *Style*." + }, + "messages": { + "cantBeEmpty": "Maketas negali būti tuščias.", + "fieldsIncompatible": "Laukai negali būti išdėstyti kartu: {fields}." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lt_LT/MassAction.json b/application/Espo/Resources/i18n/lt_LT/MassAction.json index 9e26dfeeb6..efa10f0a8e 100644 --- a/application/Espo/Resources/i18n/lt_LT/MassAction.json +++ b/application/Espo/Resources/i18n/lt_LT/MassAction.json @@ -1 +1,17 @@ -{} \ No newline at end of file +{ + "fields": { + "status": "Statusas", + "processedCount": "Apdorotas skaičius" + }, + "options": { + "status": { + "Pending": "Laukiama", + "Running": "Bėgimas", + "Success": "Sėkmė", + "Failed": "Nepavyko" + } + }, + "messages": { + "infoText": "Masinis veiksmas apdorojamas cron neveikimo režimu. Tai gali užtrukti šiek tiek laiko. Šio modalinio dialogo uždarymas neturės įtakos vykdymo procesui." + } +} \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lt_LT/Role.json b/application/Espo/Resources/i18n/lt_LT/Role.json index fd513de315..a317098520 100644 --- a/application/Espo/Resources/i18n/lt_LT/Role.json +++ b/application/Espo/Resources/i18n/lt_LT/Role.json @@ -8,7 +8,8 @@ "groupEmailAccountPermission": "Grupės el. pašto paskyros leidimas", "exportPermission": "Eksportuoti leidimą", "dataPrivacyPermission": "Duomenų privatumo leidimas", - "massUpdatePermission": "Masinio atnaujinimo teisė" + "massUpdatePermission": "Masinio atnaujinimo teisė", + "followerManagementPermission": "Sekėjų valdymo leidimas" }, "links": { "users": "Vartotojai", @@ -21,7 +22,8 @@ "groupEmailAccountPermission": "Nurodo prieigą prie grupės el. pašto abonementų, galimybę siųsti el. laiškus iš grupės SMTP.", "dataPrivacyPermission": "Leidžia peržiūrėti ir ištrinti asmens duomenis.", "exportPermission": "Nurodo, ar vartotojai gali eksportuoti įrašus.", - "massUpdatePermission": "Nurodo, ar vartotojai gali atlikti masinius įrašų atnaujinimus." + "massUpdatePermission": "Nurodo, ar vartotojai gali atlikti masinius įrašų atnaujinimus.", + "followerManagementPermission": "Leidžia valdyti konkrečių įrašų sekėjus." }, "labels": { "Access": "Prieiga", diff --git a/application/Espo/Resources/i18n/lt_LT/Settings.json b/application/Espo/Resources/i18n/lt_LT/Settings.json index af9e901f6a..0de5bdb760 100644 --- a/application/Espo/Resources/i18n/lt_LT/Settings.json +++ b/application/Espo/Resources/i18n/lt_LT/Settings.json @@ -130,7 +130,10 @@ "busyRangesEntityList": "Laisvų / užimtų subjektų sąrašas", "passwordRecoveryForInternalUsersDisabled": "Išjungti slaptažodžio atkūrimą vidaus naudotojams", "passwordRecoveryNoExposure": "Užkirsti kelią el. pašto adreso atskleidimui slaptažodžio atkūrimo formoje", - "auth2FAForced": "Priversti nuolatinius naudotojus nustatyti 2FA" + "auth2FAForced": "Priversti nuolatinius naudotojus nustatyti 2FA", + "smsProvider": "SMS paslaugų teikėjas", + "outboundSmsFromNumber": "SMS iš numerio", + "recordsPerPageSelect": "Įrašai viename puslapyje (pasirinkite)" }, "tooltips": { "recordsPerPage": "Iš pradžių rodomas įrašų skaičius sąrašo rodinyje.", @@ -202,7 +205,8 @@ "emailNotificationsDelay": "Prieš išsiunčiant pranešimą, pranešimą galima redaguoti per nurodytą laikotarpį.", "outboundEmailFromAddress": "Sistemos el. pašto adresas.", "smtpServer": "Jei tuščia, bus naudojama grupės el. pašto paskyra su atitinkamu el. pašto adresu.", - "busyRangesEntityList": "Į ką bus atsižvelgta rodant užimto laiko intervalus tvarkaraštyje ir laiko juostoje." + "busyRangesEntityList": "Į ką bus atsižvelgta rodant užimto laiko intervalus tvarkaraštyje ir laiko juostoje.", + "recordsPerPageSelect": "Įrašų skaičius, iš pradžių rodomas pasirenkant įrašus." }, "labels": { "System": "Sistema", @@ -236,6 +240,9 @@ "lastFirst": "Paskutinis Pirmas", "firstMiddleLast": "Pirmas Vidurinis Paskutinis", "lastFirstMiddle": "Pavardė Pirmas Vidurys" + }, + "auth2FAMethodList": { + "Email": "El. paštas" } } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lt_LT/Stream.json b/application/Espo/Resources/i18n/lt_LT/Stream.json index ada97d6ec4..6456820bf3 100644 --- a/application/Espo/Resources/i18n/lt_LT/Stream.json +++ b/application/Espo/Resources/i18n/lt_LT/Stream.json @@ -1,7 +1,8 @@ { "messages": { "infoMention": "Įveskite **@username**, kad pranešime paminėtumėte naudotoją.", - "infoSyntax": "Turima žymėjimo sintaksė" + "infoSyntax": "Turima žymėjimo sintaksė", + "couldNotAddFollowerUserHasNoAccessToStream": "Nepavyko pridėti naudotojo '{userName}' prie sekėjų. Vartotojas neturi \"stream\" prieigos prie įrašo." }, "syntaxItems": { "code": "kodas", diff --git a/application/Espo/Resources/i18n/lt_LT/Template.json b/application/Espo/Resources/i18n/lt_LT/Template.json index 6b35ed5e99..4c154ba9ce 100644 --- a/application/Espo/Resources/i18n/lt_LT/Template.json +++ b/application/Espo/Resources/i18n/lt_LT/Template.json @@ -17,7 +17,9 @@ "fontFace": "Šriftas", "pageWidth": "Puslapio plotis (mm)", "pageHeight": "Puslapio aukštis (mm)", - "headerPosition": "Antraštės padėtis" + "headerPosition": "Antraštės padėtis", + "printHeader": "Spausdinti antraštę", + "title": "Pavadinimas" }, "labels": { "Create Template": "Sukurti šabloną" diff --git a/application/Espo/Resources/i18n/lt_LT/User.json b/application/Espo/Resources/i18n/lt_LT/User.json index da76f82776..2546099756 100644 --- a/application/Espo/Resources/i18n/lt_LT/User.json +++ b/application/Espo/Resources/i18n/lt_LT/User.json @@ -76,7 +76,9 @@ "Requirements": "Reikalavimai", "Security": "Apsauga", "Reset 2FA": "Iš naujo nustatyti 2FA", - "Secret": "Paslaptis" + "Secret": "Paslaptis", + "Send Password Change Link": "Siųsti slaptažodžio keitimo nuorodą", + "Send Code": "Siųsti kodą" }, "tooltips": { "defaultTeam": "Visi šio naudotojo sukurti įrašai bus susiję su šia komanda pagal nutylėjimą.", @@ -113,7 +115,14 @@ "ldapUserInEspoNotFound": "Vartotojas nerastas \"EspoCRM\". Kreipkitės į administratorių, kad jis sukurtų naudotoją.", "passwordRecoverySentIfMatched": "Darant prielaidą, kad įvesti duomenys atitinka bet kurią naudotojo paskyrą.", "auth2FARequiredHeader": "Reikalingas 2 veiksnių autentiškumo patvirtinimas", - "auth2FARequired": "Reikia nustatyti 2 veiksnių autentifikavimą. Mobiliajame telefone naudokite autentifikavimo programą (pvz., \"Google Authenticator\")." + "auth2FARequired": "Reikia nustatyti 2 veiksnių autentifikavimą. Mobiliajame telefone naudokite autentifikavimo programą (pvz., \"Google Authenticator\").", + "sendPasswordChangeLinkConfirmation": "Naudotojui bus išsiųstas el. laiškas su unikalia nuoroda, kad jis galėtų pasikeisti slaptažodį. Nuoroda nustos galioti po tam tikro laiko.", + "yourAuthenticationCode": "Jūsų autentifikavimo kodas: Jūsų autentifikavimo kodas: {kodas}.", + "choose2FaSmsPhoneNumber": "Pasirinkite telefono numerį, kuris bus naudojamas 2FA.", + "choose2FaEmailAddress": "Pasirinkite el. pašto adresą, kuris bus naudojamas 2FA. Labai rekomenduojama naudoti ne pagrindinį el. pašto adresą.", + "enterCodeSentInEmail": "Įveskite į el. pašto adresą atsiųstą kodą.", + "enterCodeSentBySms": "Įveskite SMS žinute į savo telefono numerį atsiųstą kodą.", + "passwordChangeRequestNotFound": "Slaptažodžio keitimo užklausa nerasta. Gali būti, kad jo galiojimo laikas pasibaigęs. Pabandykite inicijuoti naujo slaptažodžio atkūrimą iš [prisijungimo puslapio]({url})." }, "boolFilters": { "onlyMyTeam": "Tik mano komanda" diff --git a/application/Espo/Resources/i18n/lv_LV/Admin.json b/application/Espo/Resources/i18n/lv_LV/Admin.json index cc2316243f..b39082f5b6 100644 --- a/application/Espo/Resources/i18n/lv_LV/Admin.json +++ b/application/Espo/Resources/i18n/lv_LV/Admin.json @@ -74,7 +74,11 @@ "Dashboard Templates": "Informācijas paneļa veidnes", "Email Addresses": "E-pasta adreses", "Phone Numbers": "Tālruņu numuri", - "Layout Sets": "Izkārtojuma komplekti" + "Layout Sets": "Izkārtojuma komplekti", + "Messaging": "Ziņapmaiņa", + "Misc": "Dažādi", + "Job Settings": "Darba iestatījumi", + "Configuration Instructions": "Konfigurēšanas norādījumi" }, "layouts": { "list": "Saraksts", @@ -195,7 +199,7 @@ "inlineEditDisabled": "Inline rediģēšanas atspējošana", "displayAsLabel": "Rādīt kā etiķeti", "allowCustomOptions": "Atļaut pielāgotās opcijas", - "maxCount": "Maksimālais vienību skaits", + "maxCount": "Maksimālais pozīciju skaits", "displayRawText": "Rādīt neapstrādātu tekstu (bez iezīmēšanas)", "notActualOptions": "Ne faktiskās opcijas", "accept": "Piekrist", @@ -204,7 +208,10 @@ "codeType": "Kods Veids", "lastChar": "Pēdējais raksturs", "listPreviewSize": "Priekšskatījuma lielums saraksta skatā", - "onlyDefaultCurrency": "Tikai noklusējuma valūta" + "onlyDefaultCurrency": "Tikai noklusējuma valūta", + "dynamicLogicInvalid": "Nosacījumi, kas padara lauku nederīgu", + "conversionDisabled": "Atslēgt konvertēšanu", + "decimalPlaces": "Decimālskaitļi aiz komata" }, "messages": { "selectEntityType": "Atlasīt vienību tipu kreisajā izvēlnē.", @@ -270,7 +277,10 @@ "dashboardTemplates": "Izvietojiet informācijas paneļus lietotājiem.", "phoneNumbers": "Visi sistēmā saglabātie tālruņa numuri.", "emailAddresses": "Visas sistēmā saglabātās e-pasta adreses.", - "layoutSets": "Izkārtojumu kolekcijas, ko var piešķirt komandām un portāliem." + "layoutSets": "Izkārtojumu kolekcijas, ko var piešķirt komandām un portāliem.", + "jobsSettings": "Darba apstrādes iestatījumi. Uzdevumi tiek izpildīti fonā.", + "sms": "SMS iestatījumi.", + "formulaSandbox": "Rakstīt un testēt formulas skriptus." }, "options": { "previewSize": { @@ -305,7 +315,8 @@ "notePostNoParent": "Piezīme par ziņojumu (bez vecākiem)", "noteStatus": "Piezīme par statusa atjaunināšanu", "passwordChangeLink": "Paroles maiņas saite", - "noteEmailReceived": "Piezīme par saņemto e-pastu" + "noteEmailReceived": "Piezīme par saņemto e-pastu", + "twoFactorCode": "2FA kods" }, "strings": { "rebuildRequired": "Nepieciešama pārbūve" @@ -313,12 +324,12 @@ "keywords": { "settings": "sistēma", "userInterface": "ui, tēma, cilnes, logotips, instrumentu panelis", - "authentication": "parole", "scheduledJob": "cron, darbavietas", "integrations": "Google, Google kartes, Google Maps", "authLog": "žurnāls,vēsture", "authTokens": "vēsture, piekļuve, žurnāls", "entityManager": "lauki,attiecības,attiecības,attiecības", - "templateManager": "paziņojumi" + "templateManager": "paziņojumi", + "authentication": "parole,drošība,ldap" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lv_LV/DashletOptions.json b/application/Espo/Resources/i18n/lv_LV/DashletOptions.json index f389443f25..d78f3f85f5 100644 --- a/application/Espo/Resources/i18n/lv_LV/DashletOptions.json +++ b/application/Espo/Resources/i18n/lv_LV/DashletOptions.json @@ -3,7 +3,7 @@ "title": "Amats", "dateFrom": "Datums no", "dateTo": "Datums līdz", - "autorefreshInterval": "Autoatsvaidzes intervāls", + "autorefreshInterval": "Atjaunināšanas intervāls\n", "displayRecords": "Rādīt ierakstus", "isDoubleHeight": "Augstums 2x", "mode": "Režīms", diff --git a/application/Espo/Resources/i18n/lv_LV/DynamicLogic.json b/application/Espo/Resources/i18n/lv_LV/DynamicLogic.json index f80acc5e31..d419a5cef3 100644 --- a/application/Espo/Resources/i18n/lv_LV/DynamicLogic.json +++ b/application/Espo/Resources/i18n/lv_LV/DynamicLogic.json @@ -19,7 +19,10 @@ "contains": "Satur", "has": "Satur", "notContains": "Nesatur", - "notHas": "Nesatur" + "notHas": "Nesatur", + "startsWith": "Sākas ar", + "endsWith": "Beidzas ar", + "matches": "Sērkociņi (reg exp)" } }, "labels": { diff --git a/application/Espo/Resources/i18n/lv_LV/Email.json b/application/Espo/Resources/i18n/lv_LV/Email.json index 21ecb60dcb..c285f793bf 100644 --- a/application/Espo/Resources/i18n/lv_LV/Email.json +++ b/application/Espo/Resources/i18n/lv_LV/Email.json @@ -49,7 +49,13 @@ "personStringData": "Peronas teksta dati", "fromEmailAddress": "No adreses (saite)", "replyToName": "Vārds Atbildēt", - "replyToAddress": "Atbildes adrese" + "replyToAddress": "Atbildes adrese", + "icsContents": "ICS saturs", + "icsEventData": "ICS notikumu dati", + "icsEventUid": "ICS notikuma UID", + "createdEvent": "Izveidotais notikums", + "event": "Pasākums", + "icsEventDateStart": "ICS Pasākuma datums Sākums" }, "links": { "replied": "Atbildēts", @@ -104,7 +110,8 @@ "Folders": "Mapes", "View Users": "Skatīt lietotājus", "No Subject": "Nav tēmas", - "Insert Field": "Ievietot lauku" + "Insert Field": "Ievietot lauku", + "Event": "Pasākums" }, "messages": { "testEmailSent": "Nosūtīts testa e-pasts", @@ -113,8 +120,8 @@ "confirmInsertTemplate": "E-pasta pamatteksts tiks zaudēts. Vai tiešām vēlaties ievietot veidni?", "noSmtpSetup": "SMTP nav konfigurēts: {link}", "sendConfirm": "Nosūtīt e-pastu?", - "removeSelectedRecordsConfirmation": "Vai esat pārliecināts, ka vēlaties dzēst atlasītos e-pasta ziņojumus?\n\nTie tiks noņemti arī citiem lietotājiem.", - "removeRecordConfirmation": "Vai esat pārliecināts, ka vēlaties dzēst e-pastu?\n\nTas tiks noņemts arī citiem lietotājiem." + "removeSelectedRecordsConfirmation": "Vai esat pārliecināts, ka vēlaties dzēst atlasītos e-pasta ziņojumus?\n\nTie tiks dzēsti arī citiem lietotājiem.", + "removeRecordConfirmation": "Vai esat pārliecināts, ka vēlaties dzēst e-pastu?\n\nTas tiks dzēsts arī citiem lietotājiem." }, "presetFilters": { "sent": "Nosūtīts", diff --git a/application/Espo/Resources/i18n/lv_LV/EmailTemplate.json b/application/Espo/Resources/i18n/lv_LV/EmailTemplate.json index dd923c4fb7..8e303e9489 100644 --- a/application/Espo/Resources/i18n/lv_LV/EmailTemplate.json +++ b/application/Espo/Resources/i18n/lv_LV/EmailTemplate.json @@ -25,7 +25,8 @@ "optOutLink": "atrakstīšanās saite", "today": "Šodienas datums", "now": "Pašreizējais laiks un datums", - "currentYear": "Esošais gads" + "currentYear": "Esošais gads", + "optOutUrl": "Saites URL, kas paredzēta atteikšanās saitei" }, "messages": { "infoText": "Pieejamās vietzīmes:\n\nTālrunis URL norakstīšanās saitei;\n\n{optOutLink} – norakstīšanās saite." diff --git a/application/Espo/Resources/i18n/lv_LV/EntityManager.json b/application/Espo/Resources/i18n/lv_LV/EntityManager.json index e7e7c8593f..a3d88839eb 100644 --- a/application/Espo/Resources/i18n/lv_LV/EntityManager.json +++ b/application/Espo/Resources/i18n/lv_LV/EntityManager.json @@ -36,7 +36,9 @@ "fullTextSearch": "Pilna teksta meklēšana", "countDisabled": "Ierakstu skaita atspējošana", "parentEntityTypeList": "Mātesuzņēmumu tipi", - "foreignLinkEntityTypeList": "Ārvalstu saites" + "foreignLinkEntityTypeList": "Ārvalstu saites", + "entity": "Subjekts", + "optimisticConcurrencyControl": "Optimistiska vienlaicīguma kontrole" }, "options": { "type": { @@ -77,6 +79,7 @@ "linkMultipleField": "Lauku kopa sasaiste ir ērts veids, kā rediģēt relācijas . Nelietojiet to, ja iespējams liels saistīto ierakstu skaits.", "entityType": "Pamats un vēl - ietver paneļus aktivitātēm, vēsturei un uzdevumiem.\n\nNotikums - pieejams kalendāra un aktivitāšu panelī.", "fullTextSearch": "Atkārtotas izveides izpildīšana ir obligāta.", - "countDisabled": "Kopējais skaits netiks parādīts saraksta skatā. Var samazināt ielādes laiku, ja DB tabula ir liela." + "countDisabled": "Kopējais skaits netiks parādīts saraksta skatā. Var samazināt ielādes laiku, ja DB tabula ir liela.", + "optimisticConcurrencyControl": "Novērš rakstīšanas konfliktus." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lv_LV/Export.json b/application/Espo/Resources/i18n/lv_LV/Export.json index 499e71ded1..ff5c376952 100644 --- a/application/Espo/Resources/i18n/lv_LV/Export.json +++ b/application/Espo/Resources/i18n/lv_LV/Export.json @@ -2,11 +2,21 @@ "fields": { "fieldList": "Lauku saraksts", "exportAllFields": "Eksportēt visus laukus", - "format": "Formāts" + "format": "Formāts", + "status": "Statuss" }, "options": { "format": { "xlsx": "XLSX (\"Excel\")" + }, + "status": { + "Pending": "Gaida", + "Success": "Panākumi", + "Failed": "Neveiksmīgs" } + }, + "messages": { + "exportProcessed": "Eksports ir apstrādāts. Lejupielādēt [failu]({url}).", + "infoText": "Eksports tiek apstrādāts dīkstāves režīmā cron. Tas var aizņemt kādu laiku. Šī modālā dialoglodziņa aizvēršana neietekmēs izpildes procesu." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lv_LV/FieldManager.json b/application/Espo/Resources/i18n/lv_LV/FieldManager.json index 516bb24d1f..86445318e4 100644 --- a/application/Espo/Resources/i18n/lv_LV/FieldManager.json +++ b/application/Espo/Resources/i18n/lv_LV/FieldManager.json @@ -79,8 +79,9 @@ "after": "Datums vērtībai jābūt pēc norādītā lauka datuma vērtības.", "readOnly": "Lietotājs nevar norādīt lauka vērtību. Taču to iespējams aprēķināt pēc formulas.", "maxFileSize": "If tukšs vai 0, tad limita nav.", - "fileAccept": "Kādus failu tipus pieņemt. Ir iespējams pievienot pielāgotus vienumus.", - "barcodeLastChar": "EAN-13 tipam." + "fileAccept": "Kādus failu tipus pieņemt. Ir iespējams pievienot pielāgotas pozīcijas.", + "barcodeLastChar": "EAN-13 tipam.", + "conversionDisabled": "Šim laukam netiks piemērota valūtas konvertēšanas darbība." }, "fieldParts": { "address": { @@ -130,6 +131,7 @@ "phone": "Tālruņu numuru kopums ar to parametriem: Tips, Atteikts, Nederīgs, Primārais.", "foreign": "Saistītā ieraksta lauks. Tikai nolasāms.", "link": "Ieraksts, kas saistīts ar pieder vienam vai vienam ar otru (daudzi ar vienu vai viens ar vienu).", - "linkParent": "Ieraksts, kas saistīts ar pieder vecākiem. Var būt dažādu tipu vienības." + "linkParent": "Ieraksts, kas saistīts ar pieder vecākiem. Var būt dažādu tipu vienības.", + "linkMultiple": "Ierakstu kopa, kas saistīta ar Has-Many (daudz-daudz vai viens-daudz) attiecībām. Ne visām attiecībām ir saite-daudzveidība lauki. Tie ir tikai tie, kuros ir iespējots(-i) parametrs(-i) Link-Multiple." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lv_LV/Formula.json b/application/Espo/Resources/i18n/lv_LV/Formula.json new file mode 100644 index 0000000000..4a0ea19710 --- /dev/null +++ b/application/Espo/Resources/i18n/lv_LV/Formula.json @@ -0,0 +1,23 @@ +{ + "labels": { + "Check Syntax": "Sintakses pārbaude", + "Run": "Palaist" + }, + "fields": { + "target": "Mērķis", + "targetType": "Mērķa tips", + "script": "Skripts", + "output": "Izvades", + "error": "Kļūda" + }, + "messages": { + "runSuccess": "Izpildīts veiksmīgi.", + "runError": "Kļūda.", + "checkSyntaxSuccess": "Sintakse ir pareiza.", + "checkSyntaxError": "Sintakses kļūda.", + "emptyScript": "Skripts ir tukšs." + }, + "tooltips": { + "output": "Vērtību drukāšana ar funkciju `output\\printLine`." + } +} \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lv_LV/Global.json b/application/Espo/Resources/i18n/lv_LV/Global.json index c50ac89f65..7f2ab4aeb1 100644 --- a/application/Espo/Resources/i18n/lv_LV/Global.json +++ b/application/Espo/Resources/i18n/lv_LV/Global.json @@ -50,7 +50,8 @@ "ApiUser": "API lietotājs", "DashboardTemplate": "Informācijas paneļa veidne", "Currency": "Valūta", - "LayoutSet": "Izkārtojuma komplekts" + "LayoutSet": "Izkārtojuma komplekts", + "Mass Action": "Masveida rīcība" }, "scopeNamesPlural": { "Email": "E-pasti", @@ -112,7 +113,7 @@ "Sending...": "Notiek sūtīšana...", "Merging...": "Notiek sapludināšana…", "Merged": "Sapludināts", - "Removed": "Noņemts", + "Removed": "Dzēsts", "Posted": "Publicēts", "Linked": "Saistīts", "Unlinked": "Nesaistīts", @@ -121,7 +122,7 @@ "Not found": "Nav atrasts", "Access": "Piekļuve", "Are you sure?": "Vai tiešām?", - "Record has been removed": "Ieraksts noņemts", + "Record has been removed": "Ieraksts dzēsts", "Wrong username/password": "Nepareizs lietotājvārds/parole", "Post cannot be empty": "Publicējums nedrīkst būt tukšs", "Removing...": "Notiek noņemšana...", @@ -143,7 +144,7 @@ "Filter": "Filtrs", "Edit Dashboard": "Rediģēt infopaneli", "Add": "Pievienot", - "Add Item": "Pievienot vienumu", + "Add Item": "Pievienot pozīciju", "Reset": "Atiestatīt", "Menu": "Izvēlne", "More": "Vairāk", @@ -152,8 +153,8 @@ "Open": "Atvērt", "Admin": "Administrators", "About": "Par", - "Refresh": "Atsvaidzināt", - "Remove": "Noņemt", + "Refresh": "Atjaunināt", + "Remove": "Dzēst", "Options": "Opcijas", "Username": "Lietotājvārds", "Password": "Parole", @@ -254,7 +255,14 @@ "View on Map": "Skatīt kartē", "Proceed": "Turpināt", "Attached": "Pievienots", - "Preview": "Priekšskatījums" + "Preview": "Priekšskatījums", + "Up": "Uz augšu", + "Save & Continue Editing": "Saglabāt un turpināt rediģēšanu", + "Save & New": "Saglabāt un jauns", + "Field": "Laukums", + "Resolution": "Rezolūcija", + "Resolve Conflict": "Konflikta atrisināšana", + "Download": "Lejupielādēt" }, "messages": { "pleaseWait": "Lūdzu, uzgaidiet...", @@ -270,16 +278,16 @@ "confirmation": "Vai tiešām?", "unlinkAllConfirmation": "Vai tiešām vēlaties atsaistīt visus saistītos ierakstus?", "resetPreferencesConfirmation": "Vai tiešām vēlaties atiestatīt noklusējuma preferences?", - "removeRecordConfirmation": "Vai tiešām vēlaties noņemt ierakstu?", + "removeRecordConfirmation": "Vai tiešām vēlaties dzēst ierakstu?", "unlinkRecordConfirmation": "Vai tiešām vēlaties saistīto ierakstu atsaistīt?", - "removeSelectedRecordsConfirmation": "Vai tiešām vēlaties noņemt atlasītos ierakstus?", + "removeSelectedRecordsConfirmation": "Vai tiešām vēlaties dzēst atlasītos ierakstus?", "massUpdateResult": "{count} ieraksti tika atjaunināti", "massUpdateResultSingle": "{count} ieraksts tika atjaunināts", "noRecordsUpdated": "Neviens ieraksts netika atjaunināts", - "massRemoveResult": "{count} ieraksti tika noņemti", - "massRemoveResultSingle": "{count} ieraksts tika noņemts", - "noRecordsRemoved": "Neviens ieraksts netika noņemts", - "clickToRefresh": "Noklikšķiniet, lai atsvaidzinātu", + "massRemoveResult": "{count} ieraksti tika izdzēsti", + "massRemoveResultSingle": "{count} ieraksts tika dzēsts", + "noRecordsRemoved": "Neviens ieraksts nav dzēsts", + "clickToRefresh": "Noklikšķiniet, lai atjauninātu", "writeYourCommentHere": "Šeit ierakstiet komentāru", "writeMessageToUser": "Uzrakstiet ziņojumu lietotājam {user}", "typeAndPressEnter": "Padomi un taustiņš ENTER", @@ -318,7 +326,9 @@ "fieldExceedsMaxCount": "Skaits pārsniedz maksimālo atļauto {maxCount}", "notUpdated": "Nav atjaunināts", "maintenanceMode": "Pašlaik lietojumprogramma ir uzturēšanas režīmā. Piekļuve ir tikai administratoram.\n\nUzturēšanas režīmu var atspējot sadaļā Administrācija → Iestatījumi.", - "fieldInvalid": "{field} ir nederīgs" + "fieldInvalid": "{field} ir nederīgs", + "resolveSaveConflict": "Ieraksts ir mainīts. Pirms ieraksta saglabāšanas ir jāatrisina konflikts.", + "massActionProcessed": "Ir apstrādāta masveida darbība." }, "boolFilters": { "onlyMy": "Tikai manējie", @@ -330,7 +340,7 @@ "all": "Visus" }, "massActions": { - "remove": "Noņemt", + "remove": "Dzēst", "merge": "Sapludināt", "massUpdate": "Atjaunināt masveidā", "export": "Eksportēt", @@ -339,7 +349,8 @@ "convertCurrency": "Konvertēt valūtu", "printPdf": "Izdrukāt PDF formātā", "unlink": "Atvienojiet saiti", - "recalculateFormula": "Pārrēķināt formulu" + "recalculateFormula": "Pārrēķināt formulu", + "update": "Atjaunināt" }, "fields": { "name": "Nosaukums/vārds", @@ -396,7 +407,7 @@ "notificationMessages": { "assign": "Jums tika piešķirts {entityType} {entity} ", "emailReceived": "Saņemts e-pasts no {from}", - "entityRemoved": "{user} noņēma {entityType} {entity}" + "entityRemoved": "{user} izdzēsa {entityType} {entity}" }, "streamMessages": { "post": "{user} publicēja {entityType} {entity}", @@ -665,6 +676,11 @@ "Fax": "Fakss", "Home": "Sākums", "Other": "Cits" + }, + "saveConflictResolution": { + "current": "Pašreizējais", + "actual": "Faktiskais", + "original": "Oriģinālais" } }, "sets": { @@ -675,7 +691,7 @@ "italic": "Slīprakstā", "underline": "Pasvītrojums", "strike": "Pārsvītrojums", - "clear": "Noņemt fonta stilu", + "clear": "Dzēst fonta stilu", "height": "Rindiņas augstums", "name": "Fontu saime", "size": "Fonta lielums" @@ -692,7 +708,7 @@ "dragImageHere": "Ievilkt attēlu šeit", "selectFromFiles": "Atlasīt no failiem", "url": "Attēla vietrādis URL", - "remove": "Noņemt attēlu" + "remove": "Dzēst attēlu" }, "link": { "link": "Saite", @@ -778,5 +794,13 @@ "listViewModes": { "list": "Saraksts", "kanban": "\"Kanban\"" + }, + "themes": { + "DarkVertical": "Tumšs", + "Dark": "Tumši horizontāli", + "Sakura": "Sakura horizontālais", + "Violet": "Violeta horizontālā", + "VioletVertical": "Violeta", + "Hazyblue": "Hazyblue Horizontālā" } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lv_LV/Import.json b/application/Espo/Resources/i18n/lv_LV/Import.json index f30d7a79b3..c0c1bc4b7a 100644 --- a/application/Espo/Resources/i18n/lv_LV/Import.json +++ b/application/Espo/Resources/i18n/lv_LV/Import.json @@ -11,7 +11,7 @@ "Updated": "Atjaunināts", "Result": "Rezultāts", "Show records": "Parādīt ierakstus", - "Remove Duplicates": "Noņemt dublikātu", + "Remove Duplicates": "Dzēst dublikātu", "importedCount": "Importēti (skaits)", "duplicateCount": "Dublēti (skaits)", "updatedCount": "Atjaunināti (skaits)", @@ -50,7 +50,7 @@ "Duplicates": "Dublikāts", "Skip searching for duplicates": "Izlaist dublikātu meklēšanu", "Timezone": "Laika zona", - "Remove Import Log": "Noņemt importēto ierakstu reģistru", + "Remove Import Log": "Dzēst importēto ierakstu reģistru", "New Import": "Jauna importēšana", "Import Results": "Importēt rezultātus", "Silent Mode": "Klusais režīms", @@ -59,14 +59,14 @@ }, "messages": { "utf8": "Jābūt UTF-8 kodējumā", - "duplicatesRemoved": "Dublikāts noņemts", + "duplicatesRemoved": "Dublikāts dzēsts", "inIdle": "Izpildīt dīkstāves laikā (lielajiem datiem; ar uzdevumu plānotāja starpniecību)", - "revert": "Šī izvēle neatgriezeniski noņems visus importētos ierakstus.", - "removeDuplicates": "Šī izvēle neatgriezeniski noņems visus importētos ierakstus, kas atpazīti kā dublikāti.", - "confirmRevert": "Šī izvēle neatgriezeniski noņems visus importētos ierakstus. Vai tiešām vēlaties turpināt?", - "confirmRemoveDuplicates": "Šī izvēle neatgriezeniski noņems visus importētos ierakstus, kas būs atpazīti kā dublikāti. Vai tiešām vēlaties turpināt?", - "removeImportLog": "Šī izvēle noņems importēto ierakstu reģistru. Visi importētie ieraksti tiks saglabāti. Izmantojiet šo izvēli, ja vēlaties pieļaut importēšanu.", - "confirmRemoveImportLog": "Tādējādi tiks noņemts importa žurnāls. Visi importētie ieraksti tiks saglabāti. Jūs nevarēsiet atgriezt importa rezultātus. Vai esat pārliecināts?" + "revert": "Šī izvēle neatgriezeniski dzēsīs visus importētos ierakstus.", + "removeDuplicates": "Šī izvēle neatgriezeniski dzēsīs visus importētos ierakstus, kas atpazīti kā dublikāti.", + "confirmRevert": "Šī izvēle neatgriezeniski dzēsīs visus importētos ierakstus. Vai tiešām vēlaties turpināt?", + "confirmRemoveDuplicates": "Šī izvēle neatgriezeniski dzēsīs visus importētos ierakstus, kas būs atpazīti kā dublikāti. Vai tiešām vēlaties turpināt?", + "removeImportLog": "Šī izvēle dzēsīs importēto ierakstu reģistru. Visi importētie ieraksti tiks saglabāti. Izmantojiet šo izvēli, ja vēlaties pieļaut importēšanu.", + "confirmRemoveImportLog": "Tādējādi tiks dzēsts importa žurnāls. Visi importētie ieraksti tiks saglabāti. Jūs nevarēsiet atgriezt importa rezultātus. Vai esat pārliecināts?" }, "fields": { "file": "Fails", diff --git a/application/Espo/Resources/i18n/lv_LV/Job.json b/application/Espo/Resources/i18n/lv_LV/Job.json index 6c0cbbfe73..8b5206536e 100644 --- a/application/Espo/Resources/i18n/lv_LV/Job.json +++ b/application/Espo/Resources/i18n/lv_LV/Job.json @@ -16,7 +16,10 @@ "targetId": "Mērķa ID", "number": "Numurs", "queue": "Rinda", - "job": "Darbs" + "job": "Darbs", + "group": "Grupa", + "className": "Klases nosaukums", + "targetGroup": "Mērķa grupa" }, "options": { "status": { diff --git a/application/Espo/Resources/i18n/lv_LV/LayoutManager.json b/application/Espo/Resources/i18n/lv_LV/LayoutManager.json index 8b2b15d9db..5d5d2ed7c8 100644 --- a/application/Espo/Resources/i18n/lv_LV/LayoutManager.json +++ b/application/Espo/Resources/i18n/lv_LV/LayoutManager.json @@ -9,7 +9,8 @@ "sticked": "Nostiprināts", "isLarge": "Liels šrifta izmērs", "dynamicLogicVisible": "Nosacījumi, lai panelis kļūtu redzams", - "hidden": "Slēptais" + "hidden": "Slēptais", + "dynamicLogicStyled": "Nosacījumi, kas nosaka piemērojamo stilu" }, "options": { "align": { @@ -31,6 +32,14 @@ }, "tooltips": { "link": "Ja ir atzīmēts, lauka vērtība tiks parādīta kā saite, kas norāda uz ieraksta detalizētu pārskatu. Parasti to izmanto *Nosaukums* laukiem.", - "hiddenPanel": "Lai redzētu paneli, ir jānoklikšķina uz \"parādīt vairāk\"." + "hiddenPanel": "Lai redzētu paneli, ir jānoklikšķina uz \"parādīt vairāk\".", + "sticked": "Panelis tiks piestiprināts pie paneļa virs tā. Starp paneļiem nav atstarpes.", + "panelStyle": "Paneļa krāsa.", + "dynamicLogicVisible": "Ja tas ir iestatīts, panelis tiks paslēpts, ja vien nosacījums nebūs izpildīts.", + "dynamicLogicStyled": "Krāsa tiks piemērota, ja tiks izpildīts konkrēts nosacījums . Krāsu nosaka parametrs *Style*." + }, + "messages": { + "cantBeEmpty": "Izkārtojums nevar būt tukšs.", + "fieldsIncompatible": "Lauki nevar būt kopā izkārtojumā: {lauki}." } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lv_LV/MassAction.json b/application/Espo/Resources/i18n/lv_LV/MassAction.json new file mode 100644 index 0000000000..b7cf6243ee --- /dev/null +++ b/application/Espo/Resources/i18n/lv_LV/MassAction.json @@ -0,0 +1,16 @@ +{ + "fields": { + "status": "Statuss", + "processedCount": "Apstrādāto skaits" + }, + "options": { + "status": { + "Pending": "Gaida", + "Success": "Panākumi", + "Failed": "Neveiksmīgs" + } + }, + "messages": { + "infoText": "Masu darbība tiek apstrādāta dīkstāves režīmā, izmantojot cron. Tās pabeigšana var aizņemt kādu laiku. Šī modālā dialoglodziņa aizvēršana neietekmēs izpildes procesu." + } +} \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lv_LV/Role.json b/application/Espo/Resources/i18n/lv_LV/Role.json index d63c1c8382..46a5b17463 100644 --- a/application/Espo/Resources/i18n/lv_LV/Role.json +++ b/application/Espo/Resources/i18n/lv_LV/Role.json @@ -8,7 +8,8 @@ "groupEmailAccountPermission": "Grupas e-pasta konta atļauja", "exportPermission": "Eksportēt atļauju", "dataPrivacyPermission": "Datu privātuma atļauja", - "massUpdatePermission": "Masu atjaunināšanas atļauja" + "massUpdatePermission": "Masu atjaunināšanas atļauja", + "followerManagementPermission": "Sekotāju pārvaldības atļauja" }, "links": { "users": "Lietotāji", @@ -21,7 +22,8 @@ "groupEmailAccountPermission": "Nosaka piekļuvi grupas e-pasta kontiem un iespēju nosūtīt e-pastus no grupas SMTP.", "dataPrivacyPermission": "Ļauj skatīt un dzēst personas datus.", "exportPermission": "Nosaka, vai lietotāji var eksportēt ierakstus.", - "massUpdatePermission": "Nosaka, vai lietotāji spēj veikt ierakstu masveida atjaunināšanu." + "massUpdatePermission": "Nosaka, vai lietotāji spēj veikt ierakstu masveida atjaunināšanu.", + "followerManagementPermission": "Ļauj pārvaldīt konkrētu ierakstu sekotājus." }, "labels": { "Access": "Piekļuve", diff --git a/application/Espo/Resources/i18n/lv_LV/Settings.json b/application/Espo/Resources/i18n/lv_LV/Settings.json index 4c59d10f94..685b2b5275 100644 --- a/application/Espo/Resources/i18n/lv_LV/Settings.json +++ b/application/Espo/Resources/i18n/lv_LV/Settings.json @@ -85,7 +85,7 @@ "currencyFormat": "Valūtas formāts", "currencyDecimalPlaces": "Valūtas ciparu skaits aiz komata", "followCreatedEntities": "Sekot izveidotajiem ierakstiem", - "aclAllowDeleteCreated": "Ļaut noņemt izveidotos ierakstus", + "aclAllowDeleteCreated": "Ļaut dzēst izveidotos ierakstus", "adminNotifications": "Sistēmas paziņojumi administrēšanas panelī", "adminNotificationsNewVersion": "Rādīt paziņojumus, kad būs pieejami \"EspoCRM\" jaunā versija", "massEmailMaxPerHourCount": "Stundas laikā nosūtīto e-pastu maks. Skaits", @@ -134,7 +134,10 @@ "busyRangesEntityList": "Brīvo/aizņemto vienību saraksts", "passwordRecoveryForInternalUsersDisabled": "Paroles atjaunošanas atspējošanas atspējošana iekšējiem lietotājiem", "passwordRecoveryNoExposure": "Novērst e-pasta adreses atklāšanu paroles atgūšanas veidlapā", - "auth2FAForced": "Piespiest regulāros lietotājus iestatīt 2FA" + "auth2FAForced": "Piespiest regulāros lietotājus iestatīt 2FA", + "smsProvider": "SMS pakalpojumu sniedzējs", + "outboundSmsFromNumber": "SMS no numura", + "recordsPerPageSelect": "Ieraksti vienā lappusē (izvēlieties)" }, "tooltips": { "recordsPerPage": "Saraksta skatījumos sākotnēji parādāmo ierakstu skaits.", @@ -168,12 +171,12 @@ "currencyDecimalPlaces": "Ciparu skaits aiz komata. Atstājot šo izvēli tukšu, tiks rādīti visi cipari aiz komata, kuri nebūs tukši.", "aclStrictMode": "Atļauts: piekļuve tvērumiem tiks liegta, ja lomās nebūs norādīts citādi.\n\nNav atļauts: piekļuve tvērumiem tiks atļauta, ja lomās nebūs norādīts citādi.", "outboundEmailIsShared": "Ļaut lietotājiem nosūtīt e-pastus no šīs adreses.", - "aclAllowDeleteCreated": "Lietotāji varēs noņemt ierakstus, kurus tie būs izveidojuši, pat ja tiem nebūs izdzēsta piekļuve.", + "aclAllowDeleteCreated": "Lietotāji varēs dzēst ierakstus, kurus tie būs izveidojuši, pat ja tiem nebūs izdzēsta piekļuve.", "textFilterUseContainsForVarchar": "Ja nebūs atzīmēts, tiks izmantots operators \"starts with\". Jūs varat izmantot aizstājējzīmi \"%\".", "streamEmailNotificationsEntityList": "E-pasta paziņojumi par sekojamo ierakstu straumes atjauninājumiem. Lietotāji saņems e-pasta paziņojumus tikai par norādītajiem vienību tipiem.", "authTokenPreventConcurrent": "Lietotāji nevarēs pieslēgties sistēmai no vairākām ierīcēm vienlaicīgi.", "emailAddressIsOptedOutByDefault": "Izveidojot jaunu ierakstu, e-pasta adrese tiks atzīmēta kā neizvēlētā.", - "cleanupDeletedRecords": "Noņemtie ieraksti pēc brīža tiks izdzēsti no datu bāzes.", + "cleanupDeletedRecords": "Dzēstie ieraksti pēc brīža tiks izdzēsti no datu bāzes.", "ldapPortalUserLdapAuth": "Atļaut portāla lietotājiem izmantot Espo autentifikācijas vietā LDAP autentifikāciju.", "ldapPortalUserPortals": "Noklusējuma portāli izveidotā portāla lietotājam", "ldapPortalUserRoles": "Noklusējuma lomas izveidotā portāla lietotājam", @@ -206,7 +209,8 @@ "emailNotificationsDelay": "Ziņojumu var rediģēt norādītajā laikā pirms paziņojuma nosūtīšanas.", "outboundEmailFromAddress": "Sistēmas e-pasta adrese.", "smtpServer": "Ja tas ir tukšs, tiks izmantots grupas e-pasta konts ar atbilstošo e-pasta adresi.", - "busyRangesEntityList": "Kas tiks ņemts vērā, rādot aizņemtā laika diapazonus plānotājā un laika grafikā." + "busyRangesEntityList": "Kas tiks ņemts vērā, rādot aizņemtā laika diapazonus plānotājā un laika grafikā.", + "recordsPerPageSelect": "Ierakstu skaits, kas sākotnēji tiek parādīts, izvēloties ierakstus." }, "labels": { "System": "Sistēma", @@ -241,6 +245,9 @@ "lastFirst": "Pēdējais Pirmais", "firstMiddleLast": "Pirmais vidējais uzvārds", "lastFirstMiddle": "Uzvārds Pirmais Vidējais" + }, + "auth2FAMethodList": { + "Email": "E-pasts" } } } \ No newline at end of file diff --git a/application/Espo/Resources/i18n/lv_LV/Stream.json b/application/Espo/Resources/i18n/lv_LV/Stream.json index 25faa0c315..931c81dbbf 100644 --- a/application/Espo/Resources/i18n/lv_LV/Stream.json +++ b/application/Espo/Resources/i18n/lv_LV/Stream.json @@ -1,7 +1,8 @@ { "messages": { "infoMention": "Ierakstiet **@ lietotājvārds**, lai ierakstītajā amatā minētu lietotāju.", - "infoSyntax": "Pieejamā marķēšanas sintakse" + "infoSyntax": "Pieejamā marķēšanas sintakse", + "couldNotAddFollowerUserHasNoAccessToStream": "Nevar pievienot lietotāju '{userName}' sekotājiem. Lietotājam nav piekļuves ierakstam 'stream'." }, "syntaxItems": { "code": "kods", diff --git a/application/Espo/Resources/i18n/lv_LV/Template.json b/application/Espo/Resources/i18n/lv_LV/Template.json index 80d9dc5a0e..0582ae51e4 100644 --- a/application/Espo/Resources/i18n/lv_LV/Template.json +++ b/application/Espo/Resources/i18n/lv_LV/Template.json @@ -17,7 +17,9 @@ "fontFace": "Fonts", "pageWidth": "Lapas platums (mm)", "pageHeight": "Lapas augstums (mm)", - "headerPosition": "Virsraksta pozīcija" + "headerPosition": "Virsraksta pozīcija", + "printHeader": "Drukāt galveni", + "title": "Nosaukums" }, "labels": { "Create Template": "Izveidot veidni" diff --git a/application/Espo/Resources/i18n/lv_LV/User.json b/application/Espo/Resources/i18n/lv_LV/User.json index bba1da055a..c816f6ab07 100644 --- a/application/Espo/Resources/i18n/lv_LV/User.json +++ b/application/Espo/Resources/i18n/lv_LV/User.json @@ -74,7 +74,9 @@ "Requirements": "Prasības", "Security": "Drošība", "Reset 2FA": "2FA atiestatīšana", - "Secret": "Noslēpums" + "Secret": "Noslēpums", + "Send Password Change Link": "Nosūtīt paroles maiņas saiti", + "Send Code": "Nosūtīt kodu" }, "tooltips": { "defaultTeam": "Visus šī lietotāja izveidotie ieraksti pēc noklusējuma tiks sasaistīti ar šo grupu.", @@ -111,7 +113,14 @@ "ldapUserInEspoNotFound": "Lietotājs nav atrodams EspoCRM. Sazinieties ar administratoru, lai izveidotu lietotāju.", "passwordRecoverySentIfMatched": "Pieņemot, ka ievadītie dati atbilst kādam lietotāja kontam.", "auth2FARequiredHeader": "Nepieciešama 2 faktoru autentifikācija", - "auth2FARequired": "Jums ir jāiestata 2 faktoru autentifikācija. Izmantojiet autentifikatora programmu savā mobilajā tālrunī (piemēram, Google Authenticator)." + "auth2FARequired": "Jums ir jāiestata 2 faktoru autentifikācija. Izmantojiet autentifikatora programmu savā mobilajā tālrunī (piemēram, Google Authenticator).", + "sendPasswordChangeLinkConfirmation": "Lietotājam tiks nosūtīts e-pasts ar unikālu saiti, kas ļaus mainīt paroli. Saites derīguma termiņš beigsies pēc noteikta laika.", + "yourAuthenticationCode": "Jūsu autentifikācijas kods: {kods}.", + "choose2FaSmsPhoneNumber": "Izvēlieties tālruņa numuru, kas tiks izmantots 2FA.", + "choose2FaEmailAddress": "Izvēlieties e-pasta adresi, kas tiks izmantota 2FA. Ieteicams izmantot ne primāro e-pasta adresi.", + "enterCodeSentInEmail": "Ievadiet kodu, kas nosūtīts uz jūsu e-pasta adresi.", + "enterCodeSentBySms": "Ievadiet kodu, kas nosūtīts ar SMS uz jūsu tālruņa numuru.", + "passwordChangeRequestNotFound": "Paroles maiņas pieprasījums nav atrasts. Iespējams, tā derīguma termiņš ir beidzies. Mēģiniet uzsākt jaunas paroles atjaunošanu no [pieteikšanās lapas]({url})." }, "boolFilters": { "onlyMyTeam": "Tikai manai grupai" diff --git a/client/modules/crm/res/templates/meeting/fields/reminders/detail.tpl b/client/modules/crm/res/templates/meeting/fields/reminders/detail.tpl index 203499892e..a7fefa3a2f 100644 --- a/client/modules/crm/res/templates/meeting/fields/reminders/detail.tpl +++ b/client/modules/crm/res/templates/meeting/fields/reminders/detail.tpl @@ -1,6 +1,5 @@ {{#if value}} {{{value}}} {{else}} - {{{translate 'None'}}} + {{translate 'None'}} {{/if}} - diff --git a/client/modules/crm/res/templates/task/fields/date-end/detail.tpl b/client/modules/crm/res/templates/task/fields/date-end/detail.tpl index 5d86fe4c7a..235f3bbadb 100644 --- a/client/modules/crm/res/templates/task/fields/date-end/detail.tpl +++ b/client/modules/crm/res/templates/task/fields/date-end/detail.tpl @@ -1 +1,9 @@ -{{#if dateValue}}{{dateValue}}{{/if}} \ No newline at end of file +{{#if dateValue}}{{dateValue}}{{/if}} + +{{#if isNone}} +{{translate 'None'}} +{{/if}} + +{{#if isLoading}} +... +{{/if}} diff --git a/client/modules/crm/src/views/knowledge-base-article/record/list-for-case.js b/client/modules/crm/src/views/knowledge-base-article/record/list-for-case.js index d5fcefdda0..facfcd7cb7 100644 --- a/client/modules/crm/src/views/knowledge-base-article/record/list-for-case.js +++ b/client/modules/crm/src/views/knowledge-base-article/record/list-for-case.js @@ -68,7 +68,7 @@ Espo.define('crm:views/knowledge-base-article/record/list-for-case', 'views/reco }, function () {resolve([])}); }, this); } else if (parentModel.get('leadId')) { - this.getModelFactory().create('Lead', function (account) { + this.getModelFactory().create('Lead', function (lead) { lead.id = parentModel.get('leadId'); lead.fetch().then(function () { resolve([lead]); diff --git a/client/res/layout-types/list-row-expanded.tpl b/client/res/layout-types/list-row-expanded.tpl index d1dd5a57b6..44478d52c2 100644 --- a/client/res/layout-types/list-row-expanded.tpl +++ b/client/res/layout-types/list-row-expanded.tpl @@ -5,7 +5,7 @@ <% } %> <% _.each(layout.rows, function (row, key) { %> -
<% _.each(row, function (defs, key) { %>{{#if this.<%= defs.name %>}}<% +
<% _.each(row, function (defs, key) { %>{{#ifNotEmptyHtml this.<%= defs.name %>}}<% var tag = 'tag' in defs ? defs.tag : false; if (tag) { print( '<' + tag); @@ -21,5 +21,5 @@ if (tag) { print( ''); } - %>{{/if}}<% }); %>
+ %>
{{/ifNotEmptyHtml}}<% }); %>
<% }); %> diff --git a/client/res/templates/email/fields/email-address-varchar/detail.tpl b/client/res/templates/email/fields/email-address-varchar/detail.tpl index 4f4675c512..99db9a8f1a 100644 --- a/client/res/templates/email/fields/email-address-varchar/detail.tpl +++ b/client/res/templates/email/fields/email-address-varchar/detail.tpl @@ -1,5 +1,6 @@ {{#if value}} {{{value}}} {{else}} - {{#if valueIsSet}}{{{translate 'None'}}}{{else}}...{{/if}} + {{#if valueIsSet}}{{translate 'None'}} + {{else}}...{{/if}} {{/if}} diff --git a/client/res/templates/fields/address/detail.tpl b/client/res/templates/fields/address/detail.tpl index 8a6f2c23dd..64a833fe6a 100644 --- a/client/res/templates/fields/address/detail.tpl +++ b/client/res/templates/fields/address/detail.tpl @@ -1 +1,15 @@ -{{breaklines formattedAddress}}{{#if viewMap}}
{{translate 'View on Map'}}
{{/if}} \ No newline at end of file +{{#if formattedAddress}} +{{breaklines formattedAddress}} +{{/if}} + +{{#if isNone}} +{{translate 'None'}} +{{/if}} + +{{#if isLoading}} +... +{{/if}} + +{{#if viewMap}} +
{{translate 'View on Map'}}
+{{/if}} diff --git a/client/res/templates/fields/array/detail.tpl b/client/res/templates/fields/array/detail.tpl index 485f018e12..4504d39497 100644 --- a/client/res/templates/fields/array/detail.tpl +++ b/client/res/templates/fields/array/detail.tpl @@ -1,3 +1,3 @@ {{#unless isEmpty}}{{{value}}}{{else}} - {{#if valueIsSet}}{{{translate 'None'}}}{{else}}...{{/if}} + {{#if valueIsSet}}{{translate 'None'}}{{else}}...{{/if}} {{/unless}} diff --git a/client/res/templates/fields/attachments-multiple/detail.tpl b/client/res/templates/fields/attachments-multiple/detail.tpl index d7df4f65c8..8982cd0eb3 100644 --- a/client/res/templates/fields/attachments-multiple/detail.tpl +++ b/client/res/templates/fields/attachments-multiple/detail.tpl @@ -2,8 +2,8 @@ {{{value}}} {{else}} {{#if valueIsSet}} - {{{translate 'None'}}} + {{translate 'None'}} {{else}} - ... + ... {{/if}} -{{/if}} \ No newline at end of file +{{/if}} diff --git a/client/res/templates/fields/barcode/detail.tpl b/client/res/templates/fields/barcode/detail.tpl index 1bd1655ed6..e3ebf6f790 100644 --- a/client/res/templates/fields/barcode/detail.tpl +++ b/client/res/templates/fields/barcode/detail.tpl @@ -7,5 +7,5 @@ {{/if}} {{else}} -{{#if valueIsSet}}{{{translate 'None'}}}{{else}}...{{/if}} -{{/if}} \ No newline at end of file +{{#if valueIsSet}}{{translate 'None'}}{{else}}...{{/if}} +{{/if}} diff --git a/client/res/templates/fields/bool/detail.tpl b/client/res/templates/fields/bool/detail.tpl index db65098d08..e02088aeda 100644 --- a/client/res/templates/fields/bool/detail.tpl +++ b/client/res/templates/fields/bool/detail.tpl @@ -1 +1,2 @@ -{{#if valueIsSet}}{{else}}...{{/if}} +{{#if valueIsSet}}{{else}} +...{{/if}} diff --git a/client/res/templates/fields/checklist/detail.tpl b/client/res/templates/fields/checklist/detail.tpl index 3c9417148b..0fa89e2658 100644 --- a/client/res/templates/fields/checklist/detail.tpl +++ b/client/res/templates/fields/checklist/detail.tpl @@ -5,4 +5,4 @@ {{/each}} -{{#unless optionDataList.length}}{{translate 'None'}}{{/unless}} +{{#unless optionDataList.length}}{{translate 'None'}}{{/unless}} diff --git a/client/res/templates/fields/colorpicker/detail.tpl b/client/res/templates/fields/colorpicker/detail.tpl index 8132a65bed..8608a76a23 100644 --- a/client/res/templates/fields/colorpicker/detail.tpl +++ b/client/res/templates/fields/colorpicker/detail.tpl @@ -1 +1,2 @@ -{{#if isNotEmpty}}{{value}} {{else}}{{translate 'None'}}{{/if}} \ No newline at end of file +{{#if isNotEmpty}}{{value}} +{{else}}{{translate 'None'}}{{/if}} \ No newline at end of file diff --git a/client/res/templates/fields/currency/detail-1.tpl b/client/res/templates/fields/currency/detail-1.tpl index 6828455061..cfdea4bdd0 100644 --- a/client/res/templates/fields/currency/detail-1.tpl +++ b/client/res/templates/fields/currency/detail-1.tpl @@ -1,5 +1,6 @@ {{#if isNotEmpty}} {{value}} {{currencyValue}} {{else}} - {{#if valueIsSet}}{{{translate 'None'}}}{{else}}...{{/if}} + {{#if valueIsSet}}{{translate 'None'}}{{else}} + ...{{/if}} {{/if}} diff --git a/client/res/templates/fields/currency/detail-2.tpl b/client/res/templates/fields/currency/detail-2.tpl index 678e6a1f83..92ba73d973 100644 --- a/client/res/templates/fields/currency/detail-2.tpl +++ b/client/res/templates/fields/currency/detail-2.tpl @@ -1,5 +1,6 @@ {{#if isNotEmpty}} {{currencySymbol}}{{value}} {{else}} - {{#if valueIsSet}}{{{translate 'None'}}}{{else}}...{{/if}} + {{#if valueIsSet}}{{translate 'None'}}{{else}} + ...{{/if}} {{/if}} diff --git a/client/res/templates/fields/currency/detail-3.tpl b/client/res/templates/fields/currency/detail-3.tpl index b846704153..3d0e2ef822 100644 --- a/client/res/templates/fields/currency/detail-3.tpl +++ b/client/res/templates/fields/currency/detail-3.tpl @@ -1,5 +1,6 @@ {{#if isNotEmpty}} {{value}} {{currencySymbol}} {{else}} - {{#if valueIsSet}}{{{translate 'None'}}}{{else}}...{{/if}} + {{#if valueIsSet}}{{translate 'None'}}{{else}} + ...{{/if}} {{/if}} diff --git a/client/res/templates/fields/currency/detail-no-currency.tpl b/client/res/templates/fields/currency/detail-no-currency.tpl index c78bc0890d..77147655b2 100644 --- a/client/res/templates/fields/currency/detail-no-currency.tpl +++ b/client/res/templates/fields/currency/detail-no-currency.tpl @@ -1,5 +1,6 @@ {{#if isNotEmpty}} {{value}} {{else}} - {{#if valueIsSet}}{{{translate 'None'}}}{{else}}...{{/if}} + {{#if valueIsSet}}{{translate 'None'}}{{else}} + ...{{/if}} {{/if}} diff --git a/client/res/templates/fields/currency/detail.tpl b/client/res/templates/fields/currency/detail.tpl index 6828455061..cfdea4bdd0 100644 --- a/client/res/templates/fields/currency/detail.tpl +++ b/client/res/templates/fields/currency/detail.tpl @@ -1,5 +1,6 @@ {{#if isNotEmpty}} {{value}} {{currencyValue}} {{else}} - {{#if valueIsSet}}{{{translate 'None'}}}{{else}}...{{/if}} + {{#if valueIsSet}}{{translate 'None'}}{{else}} + ...{{/if}} {{/if}} diff --git a/client/res/templates/fields/date/detail.tpl b/client/res/templates/fields/date/detail.tpl index a00ff7ae40..54da1754ad 100644 --- a/client/res/templates/fields/date/detail.tpl +++ b/client/res/templates/fields/date/detail.tpl @@ -1 +1,11 @@ -{{dateValue}} \ No newline at end of file +{{#if dateValue}} +{{dateValue}} +{{/if}} + +{{#if isNone}} +{{translate 'None'}} +{{/if}} + +{{#if isLoading}} +... +{{/if}} diff --git a/client/res/templates/fields/datetime-short/detail.tpl b/client/res/templates/fields/datetime-short/detail.tpl index 9d7adc5e51..27d7628193 100644 --- a/client/res/templates/fields/datetime-short/detail.tpl +++ b/client/res/templates/fields/datetime-short/detail.tpl @@ -1 +1,9 @@ -{{dateValue}} \ No newline at end of file +{{#if dateValue}}{{dateValue}}{{/if}} + +{{#if isNone}} +{{translate 'None'}} +{{/if}} + +{{#if isLoading}} +... +{{/if}} diff --git a/client/res/templates/fields/email/detail.tpl b/client/res/templates/fields/email/detail.tpl index 1073f9dbeb..8bfc231c18 100644 --- a/client/res/templates/fields/email/detail.tpl +++ b/client/res/templates/fields/email/detail.tpl @@ -18,6 +18,7 @@ {{#if value}} {{value}} {{else}} - {{#if valueIsSet}}{{{translate 'None'}}}{{else}}...{{/if}} + {{#if valueIsSet}}{{translate 'None'}}{{else}} + ...{{/if}} {{/if}} {{/if}} diff --git a/client/res/templates/fields/enum/detail.tpl b/client/res/templates/fields/enum/detail.tpl index 6158308704..c7b5cadf6d 100644 --- a/client/res/templates/fields/enum/detail.tpl +++ b/client/res/templates/fields/enum/detail.tpl @@ -1,5 +1,6 @@ {{#if isNotEmpty}}{{#if style}} {{/if}}{{translateOption value scope=scope field=name translatedOptions=translatedOptions}}{{#if style}}{{/if}} {{else}} -{{#if valueIsSet}}{{translate 'None'}}{{else}}...{{/if}} -{{/if}} \ No newline at end of file +{{#if valueIsSet}}{{translate 'None'}}{{else}} +...{{/if}} +{{/if}} diff --git a/client/res/templates/fields/file/detail.tpl b/client/res/templates/fields/file/detail.tpl index 9a5711d5d9..d18a0c267e 100644 --- a/client/res/templates/fields/file/detail.tpl +++ b/client/res/templates/fields/file/detail.tpl @@ -2,6 +2,6 @@ {{{value}}} {{else}} {{#if valueIsSet}} - {{{translate 'None'}}} - {{else}}...{{/if}} + {{translate 'None'}} + {{else}}...{{/if}} {{/if}} diff --git a/client/res/templates/fields/formula/detail.tpl b/client/res/templates/fields/formula/detail.tpl index fd8187699c..444d71c0cf 100644 --- a/client/res/templates/fields/formula/detail.tpl +++ b/client/res/templates/fields/formula/detail.tpl @@ -4,4 +4,4 @@
{{value}}
-{{else}}{{translate 'None'}}{{/if}} \ No newline at end of file +{{else}}{{translate 'None'}}{{/if}} diff --git a/client/res/templates/fields/int/detail.tpl b/client/res/templates/fields/int/detail.tpl index c8454e9dbd..27adf9ffa8 100644 --- a/client/res/templates/fields/int/detail.tpl +++ b/client/res/templates/fields/int/detail.tpl @@ -1,3 +1,4 @@ {{#if isNotEmpty}}{{value}}{{else}} - {{#if valueIsSet}}{{{translate 'None'}}}{{else}}...{{/if}} -{{/if}} \ No newline at end of file + {{#if valueIsSet}}{{translate 'None'}} + {{else}}...{{/if}} +{{/if}} diff --git a/client/res/templates/fields/json-object/detail.tpl b/client/res/templates/fields/json-object/detail.tpl index f3babb16b9..fde00207dc 100644 --- a/client/res/templates/fields/json-object/detail.tpl +++ b/client/res/templates/fields/json-object/detail.tpl @@ -1,4 +1,5 @@ {{#if isNotEmpty}} {{{value}}} {{else}} -{{#if valueIsSet}}{{translate 'None'}}{{else}}...{{/if}}{{/if}} +{{#if valueIsSet}}{{translate 'None'}}{{else}} +...{{/if}}{{/if}} diff --git a/client/res/templates/fields/link-multiple/detail.tpl b/client/res/templates/fields/link-multiple/detail.tpl index ee1a2a7ce5..8982cd0eb3 100644 --- a/client/res/templates/fields/link-multiple/detail.tpl +++ b/client/res/templates/fields/link-multiple/detail.tpl @@ -2,9 +2,8 @@ {{{value}}} {{else}} {{#if valueIsSet}} - {{{translate 'None'}}} + {{translate 'None'}} {{else}} - ... + ... {{/if}} {{/if}} - diff --git a/client/res/templates/fields/link-parent/detail.tpl b/client/res/templates/fields/link-parent/detail.tpl index 15865a92c8..464672339f 100644 --- a/client/res/templates/fields/link-parent/detail.tpl +++ b/client/res/templates/fields/link-parent/detail.tpl @@ -1,3 +1,8 @@ -{{#if idValue}}{{#if iconHtml}}{{{iconHtml}}}{{/if}}{{nameValue}}{{else}} - {{#if valueIsSet}}{{#if displayEntityType}}{{translate typeValue category='scopeNames'}}{{else}}{{translate 'None'}}{{/if}}{{else}}...{{/if}} +{{#if idValue}}{{#if iconHtml}}{{{iconHtml}}}{{/if}}{{nameValue}} +{{else}} + {{#if valueIsSet}} + {{#if displayEntityType}}{{translate typeValue category='scopeNames'}} + {{else}}{{translate 'None'}} + {{/if}} + {{else}}...{{/if}} {{/if}} diff --git a/client/res/templates/fields/link/detail.tpl b/client/res/templates/fields/link/detail.tpl index df4b6f5f9b..c4fad3028e 100644 --- a/client/res/templates/fields/link/detail.tpl +++ b/client/res/templates/fields/link/detail.tpl @@ -1,3 +1,4 @@ {{#if idValue}}{{#if iconHtml}}{{{iconHtml}}}{{/if}}{{nameValue}}{{else}} - {{#if valueIsSet}}{{translate 'None'}}{{else}}...{{/if}} + {{#if valueIsSet}}{{translate 'None'}}{{else}} + ...{{/if}} {{/if}} diff --git a/client/res/templates/fields/map/detail.tpl b/client/res/templates/fields/map/detail.tpl index aba8fd06d4..25f8507422 100644 --- a/client/res/templates/fields/map/detail.tpl +++ b/client/res/templates/fields/map/detail.tpl @@ -1,5 +1,5 @@ {{#if hasAddress}}
{{else}} -{{translate 'None'}} -{{/if}} \ No newline at end of file +{{translate 'None'}} +{{/if}} diff --git a/client/res/templates/fields/person-name/detail.tpl b/client/res/templates/fields/person-name/detail.tpl index c7fc8bc67c..0a7a19c165 100644 --- a/client/res/templates/fields/person-name/detail.tpl +++ b/client/res/templates/fields/person-name/detail.tpl @@ -1,5 +1,5 @@ {{#if isNotEmpty}}{{formattedValue}} {{else}} -{{#if valueIsSet}}{{{translate 'None'}}}{{else}}...{{/if}} +{{#if valueIsSet}}{{translate 'None'}}{{else}} +...{{/if}} {{/if}} - diff --git a/client/res/templates/fields/phone/detail.tpl b/client/res/templates/fields/phone/detail.tpl index a06c4950ef..8da38098c5 100644 --- a/client/res/templates/fields/phone/detail.tpl +++ b/client/res/templates/fields/phone/detail.tpl @@ -3,7 +3,12 @@
{{#unless invalid}} {{#unless erased}} - + {{/unless}} {{/unless}} {{phoneNumber}} @@ -21,6 +26,7 @@ {{#if value}} {{#if lineThrough}}{{/if}}{{value}}{{#if lineThrough}}{{/if}} {{else}} - {{#if valueIsSet}}{{{translate 'None'}}}{{else}}...{{/if}} + {{#if valueIsSet}}{{translate 'None'}}{{else}} + ...{{/if}} {{/if}} {{/if}} diff --git a/client/res/templates/fields/text/detail.tpl b/client/res/templates/fields/text/detail.tpl index 1905d762c8..90befc0ea6 100644 --- a/client/res/templates/fields/text/detail.tpl +++ b/client/res/templates/fields/text/detail.tpl @@ -1,3 +1,16 @@ -{{#if isNotEmpty}}
{{#unless displayRawText}}{{complexText value}}{{else}}{{breaklines value}}{{/unless}}
-{{#if isCut}}{{/if}} -{{else}}{{#if valueIsSet}}{{translate 'None'}}{{else}}...{{/if}}{{/if}} \ No newline at end of file +{{#if isNotEmpty}} +
+
{{#unless displayRawText}}{{complexText value}}{{else}}{{breaklines value}}{{/unless}}
+
+{{#if isCut}} + +{{/if}} +{{else}} + {{#if valueIsSet}}{{translate 'None'}}{{else}} + ...{{/if}} +{{/if}} diff --git a/client/res/templates/fields/url/detail.tpl b/client/res/templates/fields/url/detail.tpl index 17178c449a..1114122e16 100644 --- a/client/res/templates/fields/url/detail.tpl +++ b/client/res/templates/fields/url/detail.tpl @@ -1,5 +1,6 @@ {{#if value}} {{value}} {{else}} - {{#if valueIsSet}}{{{translate 'None'}}}{{else}}...{{/if}} + {{#if valueIsSet}}{{translate 'None'}}{{else}} + ...{{/if}} {{/if}} diff --git a/client/res/templates/fields/user-with-avatar/detail.tpl b/client/res/templates/fields/user-with-avatar/detail.tpl index c4d30bbf3a..6d4c9e76c6 100644 --- a/client/res/templates/fields/user-with-avatar/detail.tpl +++ b/client/res/templates/fields/user-with-avatar/detail.tpl @@ -2,5 +2,5 @@ {{{avatar}}} {{nameValue}} {{else}} - {{translate 'None'}} -{{/if}} \ No newline at end of file + {{translate 'None'}} +{{/if}} diff --git a/client/res/templates/fields/varchar/detail.tpl b/client/res/templates/fields/varchar/detail.tpl index e8f9641487..e10e27c2e7 100644 --- a/client/res/templates/fields/varchar/detail.tpl +++ b/client/res/templates/fields/varchar/detail.tpl @@ -1,3 +1,4 @@ {{#if isNotEmpty}}{{value}}{{else}} -{{#if valueIsSet}}{{{translate 'None'}}}{{else}}...{{/if}} -{{/if}} \ No newline at end of file +{{#if valueIsSet}}{{translate 'None'}}{{else}} +...{{/if}} +{{/if}} diff --git a/client/res/templates/fields/wysiwyg/detail.tpl b/client/res/templates/fields/wysiwyg/detail.tpl index 4b0b406ce8..6487905208 100644 --- a/client/res/templates/fields/wysiwyg/detail.tpl +++ b/client/res/templates/fields/wysiwyg/detail.tpl @@ -7,4 +7,4 @@ {{else}} {{/unless}} -{{#unless isNotEmpty}}{{#if valueIsSet}}{{translate 'None'}}{{/if}}{{/unless}} +{{#unless isNotEmpty}}{{#if valueIsSet}}{{translate 'None'}}{{/if}}{{/unless}} diff --git a/client/res/templates/global-search/panel.tpl b/client/res/templates/global-search/panel.tpl index 110ba6fc29..13bb07d027 100644 --- a/client/res/templates/global-search/panel.tpl +++ b/client/res/templates/global-search/panel.tpl @@ -7,7 +7,7 @@
- {{translate 'Loading...'}} +
diff --git a/client/res/templates/login-second-step.tpl b/client/res/templates/login-second-step.tpl index 7f06869a75..59df229c8c 100644 --- a/client/res/templates/login-second-step.tpl +++ b/client/res/templates/login-second-step.tpl @@ -14,7 +14,7 @@ autocapitalize="off" autocorrect="off" tabindex="1" - autocomplete="code" + autocomplete="new-password" >
diff --git a/client/res/templates/notification/panel.tpl b/client/res/templates/notification/panel.tpl index 410ac8ad31..b56ca709d5 100644 --- a/client/res/templates/notification/panel.tpl +++ b/client/res/templates/notification/panel.tpl @@ -9,7 +9,7 @@
- {{translate 'Loading...'}} +
diff --git a/client/res/templates/settings/fields/dashboard-layout/detail.tpl b/client/res/templates/settings/fields/dashboard-layout/detail.tpl index 6411705045..660333022d 100644 --- a/client/res/templates/settings/fields/dashboard-layout/detail.tpl +++ b/client/res/templates/settings/fields/dashboard-layout/detail.tpl @@ -1,6 +1,6 @@ {{#if isEmpty}} -{{translate 'None'}} +{{translate 'None'}} {{/if}}
@@ -13,5 +13,4 @@ {{/ifNotEqual}}
- -
\ No newline at end of file +
diff --git a/client/res/templates/user-security/modals/totp.tpl b/client/res/templates/user-security/modals/totp.tpl index eaf7623c27..c368156996 100644 --- a/client/res/templates/user-security/modals/totp.tpl +++ b/client/res/templates/user-security/modals/totp.tpl @@ -3,7 +3,7 @@

{{translate 'verifyTotpCode' category='messages' scope='User'}}

-
+
diff --git a/client/src/ui.js b/client/src/ui.js index c2dc638f63..a9e34edb40 100644 --- a/client/src/ui.js +++ b/client/src/ui.js @@ -405,12 +405,27 @@ define('ui', [], function () { () => this.close() ); + this.$el.on('mousedown', e => { + this.$mouseDownTarget = $(e.target); + }); + this.$el.on('click.dismiss.bs.modal', (e) => { - if (e.target === e.currentTarget) { - if (this.backdrop !== 'static') { - this.close(); - } + if (e.target !== e.currentTarget) { + return; } + + if (this.backdrop === 'static') { + return; + } + + if ( + this.$mouseDownTarget && + this.$mouseDownTarget.closest('.modal-content').length + ) { + return; + } + + this.close(); }); $('body > .popover').addClass('hidden'); diff --git a/client/src/view-helper.js b/client/src/view-helper.js index 0e695502ca..39b9b1548e 100644 --- a/client/src/view-helper.js +++ b/client/src/view-helper.js @@ -202,6 +202,16 @@ define('view-helper', ['lib!marked', 'lib!dompurify'], function (marked, DOMPuri return options.inverse(this); }); + Handlebars.registerHelper('ifNotEmptyHtml', function (value, options) { + value = value.replace(/\s/g, ''); + + if (value) { + return options.fn(this); + } + + return options.inverse(this); + }); + Handlebars.registerHelper('get', (model, name) => model.get(name)); Handlebars.registerHelper('length', arr => arr.length); diff --git a/client/src/views/detail.js b/client/src/views/detail.js index 5334ae15b2..d4bc079e3c 100644 --- a/client/src/views/detail.js +++ b/client/src/views/detail.js @@ -150,11 +150,12 @@ define('views/detail', 'views/main', function (Dep) { handleFollowButton: function () { if (this.model.get('isFollowed')) { this.addUnfollowButtonToMenu(); + + return; } - else { - if (this.getAcl().checkModel(this.model, 'stream')) { - this.addFollowButtonToMenu(); - } + + if (this.getAcl().checkModel(this.model, 'stream')) { + this.addFollowButtonToMenu(); } }, @@ -296,6 +297,7 @@ define('views/detail', 'views/main', function (Dep) { this.updateRelationshipPanel(link); this.model.trigger('after:relate'); + this.model.trigger('after:relate:' + link); }); }); }, @@ -427,7 +429,9 @@ define('views/detail', 'views/main', function (Dep) { .then(() => { this.notify('Linked', 'success'); this.updateRelationshipPanel(link); + this.model.trigger('after:relate'); + this.model.trigger('after:relate:' + link); }); }); }); diff --git a/client/src/views/email/record/detail.js b/client/src/views/email/record/detail.js index 960d9aefcf..d52d8ee6f6 100644 --- a/client/src/views/email/record/detail.js +++ b/client/src/views/email/record/detail.js @@ -68,12 +68,6 @@ define('views/email/record/detail', 'views/record/detail', function (Dep) { setup: function () { Dep.prototype.setup.call(this); - this.addButtonEdit({ - name: 'saveDraft', - action: 'save', - label: 'Save Draft', - }, true); - this.addButtonEdit({ name: 'send', action: 'send', @@ -81,6 +75,12 @@ define('views/email/record/detail', 'views/record/detail', function (Dep) { style: 'primary', }, true); + this.addButtonEdit({ + name: 'saveDraft', + action: 'save', + label: 'Save Draft', + }, true); + this.addButton({ name: 'sendFromDetail', label: 'Send', diff --git a/client/src/views/email/record/edit.js b/client/src/views/email/record/edit.js index 8bda6e6029..cb78322c1a 100644 --- a/client/src/views/email/record/edit.js +++ b/client/src/views/email/record/edit.js @@ -39,17 +39,17 @@ define('views/email/record/edit', ['views/record/edit', 'views/email/record/deta setup: function () { Dep.prototype.setup.call(this); - this.addButton({ - name: 'saveDraft', - label: 'Save Draft', - }, true); - this.addButton({ name: 'send', label: 'Send', style: 'primary', }, true); + this.addButton({ + name: 'saveDraft', + label: 'Save Draft', + }, true); + this.controlSendButton(); if (this.model.get('status') === 'Draft') { diff --git a/client/src/views/fields/address.js b/client/src/views/fields/address.js index 2b9deda604..1ca5340ff4 100644 --- a/client/src/views/fields/address.js +++ b/client/src/views/fields/address.js @@ -71,6 +71,13 @@ define('views/fields/address', 'views/fields/base', function (Dep) { if (this.mode === 'detail' || this.mode === 'list') { data.formattedAddress = this.getFormattedAddress(); + data.isNone = data.formattedAddress === null; + + if (data.formattedAddress === -1) { + data.formattedAddress = null; + data.isLoading = true; + } + if (this.params.viewMap && this.canBeDisplayedOnMap()) { data.viewMap = true; @@ -117,10 +124,10 @@ define('views/fields/address', 'views/fields/base', function (Dep) { } if (!isSet) { - return this.translate('...'); + return -1; } - return this.translate('None'); + return null; } var methodName = 'getFormattedAddress' + this.getAddressFormat().toString(); diff --git a/client/src/views/fields/date.js b/client/src/views/fields/date.js index 44e4d73eaf..eaffac0fef 100644 --- a/client/src/views/fields/date.js +++ b/client/src/views/fields/date.js @@ -73,6 +73,13 @@ define('views/fields/date', 'views/fields/base', function (Dep) { data.dateValue = this.getDateStringValue(); + data.isNone = data.dateValue === null; + + if (data.dateValue === -1) { + data.dateValue = null; + data.isLoading = true; + } + if (this.isSearchMode()) { var value = this.getSearchParamsData().value || this.searchParams.dateValue; var valueTo = this.getSearchParamsData().valueTo || this.searchParams.dateValueTo; @@ -108,7 +115,7 @@ define('views/fields/date', 'views/fields/base', function (Dep) { return ''; } - return this.translate('None'); + return null; } if (this.mode === 'list' || this.mode === 'detail' || this.mode === 'listLink') { @@ -163,7 +170,7 @@ define('views/fields/date', 'views/fields/base', function (Dep) { getDateStringValue: function () { if (this.mode === 'detail' && !this.model.has(this.name)) { - return '...'; + return -1; } var value = this.model.get(this.name); diff --git a/client/src/views/fields/datetime.js b/client/src/views/fields/datetime.js index 85f13a4fdb..d1b3f80648 100644 --- a/client/src/views/fields/datetime.js +++ b/client/src/views/fields/datetime.js @@ -85,7 +85,7 @@ define('views/fields/datetime', ['views/fields/date', 'lib!moment'], function (D getDateStringValue: function () { if (this.mode === 'detail' && !this.model.has(this.name)) { - return '...'; + return -1; } var value = this.model.get(this.name); @@ -100,7 +100,7 @@ define('views/fields/datetime', ['views/fields/date', 'lib!moment'], function (D return ''; } - return this.translate('None'); + return null; } if (this.mode === 'list' || this.mode === 'detail' || this.mode === 'listLink') { diff --git a/client/src/views/fields/followers.js b/client/src/views/fields/followers.js index 972f570023..8ea481131b 100644 --- a/client/src/views/fields/followers.js +++ b/client/src/views/fields/followers.js @@ -26,71 +26,85 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -Espo.define('views/fields/followers', 'views/fields/link-multiple', function (Dep) { +define('views/fields/followers', 'views/fields/link-multiple', function (Dep) { return Dep.extend({ foreignScope: 'User', - portionSize: 4, + portionSize: 6, setup: function () { Dep.prototype.setup.call(this); + this.portionSize = this.getConfig().get('recordFollowersLoadLimit') || this.portionSize; + this.limit = this.portionSize; - this.listenTo(this.model, 'change:isFollowed', function () { + this.listenTo(this.model, 'change:isFollowed', () => { + let idList = this.model.get(this.idsName) || []; + if (this.model.get('isFollowed')) { - var idList = this.model.get(this.idsName) || []; if (!~idList.indexOf(this.getUser().id)) { idList.unshift(this.getUser().id); + var nameMap = this.model.get(this.nameHashName) || {}; nameMap[this.getUser().id] = this.getUser().get('name'); + this.model.trigger('change:' + this.idsName); - this.render(); - } - } else { - var idList = this.model.get(this.idsName) || []; - var index = idList.indexOf(this.getUser().id); - if (~index) { - idList.splice(index, 1); - this.model.trigger('change:' + this.idsName); - this.render(); + + this.reRender(); } + + return; } - }, this); + + let index = idList.indexOf(this.getUser().id); + + if (~index) { + idList.splice(index, 1); + + this.model.trigger('change:' + this.idsName); + + this.reRender(); + } + }); this.events['click [data-action="showMoreFollowers"]'] = function (e) { this.showMoreFollowers(); + $(e.currentTarget).remove(); }; }, reloadFollowers: function () { - this.getCollectionFactory().create('User', function (collection) { + this.getCollectionFactory().create('User', (collection) => { collection.url = this.model.name + '/' + this.model.id + '/followers'; collection.offset = 0; collection.maxSize = this.limit; - this.listenToOnce(collection, 'sync', function () { + this.listenToOnce(collection, 'sync', () => { var idList = []; var nameMap = {}; - collection.forEach(function (user) { + + collection.forEach(user => { idList.push(user.id); nameMap[user.id] = user.get('name'); - }, this); + }); + this.model.set(this.idsName, idList); this.model.set(this.nameHashName, nameMap); - this.render(); - }, this); + + this.reRender(); + }); collection.fetch(); - }, this); + }); }, showMoreFollowers: function () { - this.getCollectionFactory().create('User', function (collection) { + this.getCollectionFactory().create('User', (collection) => { collection.url = this.model.name + '/' + this.model.id + '/followers'; collection.offset = this.ids.length || 0; collection.maxSize = this.portionSize; @@ -98,37 +112,44 @@ Espo.define('views/fields/followers', 'views/fields/link-multiple', function (De collection.orderBy = null; collection.order = null; - this.listenToOnce(collection, 'sync', function () { + this.listenToOnce(collection, 'sync', () => { var idList = this.model.get(this.idsName) || []; var nameMap = this.model.get(this.nameHashName) || {}; - collection.forEach(function (user) { + + collection.forEach(user => { idList.push(user.id); nameMap[user.id] = user.get('name'); - }, this); + }); this.limit += this.portionSize; this.model.trigger('change:' + this.idsName); - this.render(); - }, this); + + this.reRender(); + }); collection.fetch(); - }, this); + }); }, getValueForDisplay: function () { - if (this.mode == 'detail' || this.mode == 'list') { + if (this.mode === 'detail' || this.mode === 'list') { var list = []; - this.ids.forEach(function (id) { + + this.ids.forEach(id =>{ list.push(this.getDetailLinkHtml(id)); - }, this); + }); + var str = null; + if (list.length) { str = '' + list.join(', ') + ''; } + if (list.length >= this.limit) { - str += ', ...' + str += ', ...'; } + return str; } }, diff --git a/client/src/views/fields/multi-enum.js b/client/src/views/fields/multi-enum.js index 34add0be80..910ffe4ba4 100644 --- a/client/src/views/fields/multi-enum.js +++ b/client/src/views/fields/multi-enum.js @@ -40,6 +40,8 @@ define('views/fields/multi-enum', ['views/fields/array', 'lib!Selectize'], funct matchAnyWord: false, + MAX_ITEM_LENGTH: 100, + events: { }, @@ -136,7 +138,7 @@ define('views/fields/multi-enum', ['views/fields/array', 'lib!Selectize'], funct afterRender: function () { if (this.mode === 'edit') { - var $element = this.$element = this.$el.find('[data-name="' + this.name + '"]'); + this.$element = this.$el.find('[data-name="' + this.name + '"]'); var data = []; @@ -209,7 +211,17 @@ define('views/fields/multi-enum', ['views/fields/array', 'lib!Selectize'], funct if (this.allowCustomOptions) { selectizeOptions.persist = false; - selectizeOptions.create = function (input) { + selectizeOptions.create = (input) => { + if (input.length > this.MAX_ITEM_LENGTH) { + Espo.Ui.error( + this.translate('arrayItemMaxLength', 'messages') + .replace('{max}', this.MAX_ITEM_LENGTH.toString()), + true + ); + + return null; + } + return { value: input, label: input, diff --git a/client/src/views/main.js b/client/src/views/main.js index d174ee87c4..276a519f91 100644 --- a/client/src/views/main.js +++ b/client/src/views/main.js @@ -49,9 +49,9 @@ define('views/main', 'view', function (Dep) { this.options.params = this.options.params || {}; if (this.name && this.scope) { - this.menu = this.getMetadata().get([ - 'clientDefs', this.scope, 'menu', this.name.charAt(0).toLowerCase() + this.name.slice(1) - ]) || {}; + this.menu = this.getMetadata() + .get(['clientDefs', this.scope, 'menu', + this.name.charAt(0).toLowerCase() + this.name.slice(1)]) || {}; } this.menu = Espo.Utils.cloneDeep(this.menu); @@ -59,29 +59,35 @@ define('views/main', 'view', function (Dep) { var globalMenu = {}; if (this.name) { - globalMenu = Espo.Utils.cloneDeep(this.getMetadata().get([ - 'clientDefs', 'Global', 'menu', this.name.charAt(0).toLowerCase() + this.name.slice(1) - ]) || {}); + globalMenu = Espo.Utils.cloneDeep( + this.getMetadata() + .get(['clientDefs', 'Global', 'menu', + this.name.charAt(0).toLowerCase() + this.name.slice(1)]) || {} + ); } - ['buttons', 'actions', 'dropdown'].forEach(function (type) { + ['buttons', 'actions', 'dropdown'].forEach((type) => { this.menu[type] = this.menu[type] || []; this.menu[type] = this.menu[type].concat(globalMenu[type] || []); var itemList = this.menu[type]; - itemList.forEach(function (item) { + + itemList.forEach((item) => { var viewObject = this; + if (item.initFunction && item.data.handler) { - this.wait(new Promise(function (resolve) { - require(item.data.handler, function (Handler) { + this.wait(new Promise(resolve => { + require(item.data.handler, Handler => { var handler = new Handler(viewObject); + handler[item.initFunction].call(handler); + resolve(); }); })); } - }, this); - }, this); + }); + }); this.updateLastUrl(); }, @@ -91,18 +97,26 @@ define('views/main', 'view', function (Dep) { }, getMenu: function () { - if (this.menuDisabled) return {}; + if (this.menuDisabled) { + return {}; + } var menu = {}; if (this.menu) { - ['buttons', 'actions', 'dropdown'].forEach(function (type) { - (this.menu[type] || []).forEach(function (item) { + ['buttons', 'actions', 'dropdown'].forEach((type) => { + (this.menu[type] || []).forEach((item) => { item = Espo.Utils.clone(item); + menu[type] = menu[type] || []; - if (!Espo.Utils.checkActionAvailability(this.getHelper(), item)) return; - if (!Espo.Utils.checkActionAccess(this.getAcl(), this.model || this.scope, item)) return; + if (!Espo.Utils.checkActionAvailability(this.getHelper(), item)) { + return; + } + + if (!Espo.Utils.checkActionAccess(this.getAcl(), this.model || this.scope, item)) { + return; + } if (item.accessDataList) { if (!Espo.Utils.checkAccessDataList(item.accessDataList, this.getAcl(), this.getUser())) { @@ -118,9 +132,10 @@ define('views/main', 'view', function (Dep) { this.getLanguage().translatePath(item.labelTranslation) ); } + menu[type].push(item); - }, this); - }, this); + }); + }); } return menu; @@ -130,9 +145,10 @@ define('views/main', 'view', function (Dep) { buildHeaderHtml: function (arr) { var a = []; - arr.forEach(function (item) { + + arr.forEach(item => { a.push(''); - }, this); + }); return '
' + a.join('') + '
'; @@ -144,39 +160,48 @@ define('views/main', 'view', function (Dep) { actionShowModal: function (data) { var view = data.view; + if (!view) { return; }; + this.createView('modal', view, { model: this.model, - collection: this.collection - }, function (view) { + collection: this.collection, + }, view => { view.render(); - this.listenTo(view, 'after:save', function () { + + this.listenTo(view, 'after:save', () => { if (this.model) { this.model.fetch(); } + if (this.collection) { this.collection.fetch(); } - }, this); - }.bind(this)); + }); + }); }, addMenuItem: function (type, item, toBeginning, doNotReRender) { if (item) { item.name = item.name || item.action; + var name = item.name; if (name) { var index = -1; - this.menu[type].forEach(function (data, i) { + + this.menu[type].forEach((data, i) => { data = data || {}; + if (data.name === name) { index = i; + return; } - }, this); + }); + if (~index) { this.menu[type].splice(index, 1); } @@ -184,13 +209,23 @@ define('views/main', 'view', function (Dep) { } var method = 'push'; + if (toBeginning) { method = 'unshift'; } + this.menu[type][method](item); if (!doNotReRender && this.isRendered()) { this.getView('header').reRender(); + + return; + } + + if (!doNotReRender && this.isBeingRendered()) { + this.once('after:render', () => { + this.getView('header').reRender(); + }); } }, @@ -198,15 +233,16 @@ define('views/main', 'view', function (Dep) { var index = -1; var type = false; - ['actions', 'dropdown', 'buttons'].forEach(function (t) { - (this.menu[t] || []).forEach(function (item, i) { + ['actions', 'dropdown', 'buttons'].forEach((t) => { + (this.menu[t] || []).forEach((item, i) => { item = item || {}; - if (item.name == name) { + + if (item.name === name) { index = i; type = t; } - }, this); - }, this); + }); + }); if (~index && type) { this.menu[type].splice(index, 1); @@ -214,44 +250,69 @@ define('views/main', 'view', function (Dep) { if (!doNotReRender && this.isRendered()) { this.getView('header').reRender(); + + return; + } + + if (!doNotReRender && this.isBeingRendered()) { + this.once('after:render', () => { + this.getView('header').reRender(); + }); + + return; } if (doNotReRender && this.isRendered()) { this.$el.find('.header .header-buttons [data-name="'+name+'"]').remove(); + + return; } }, disableMenuItem: function (name) { - this.$el.find('.header .header-buttons [data-name="'+name+'"]').addClass('disabled').attr('disabled'); + this.$el + .find('.header .header-buttons [data-name="'+name+'"]') + .addClass('disabled') + .attr('disabled'); }, enableMenuItem: function (name) { - this.$el.find('.header .header-buttons [data-name="'+name+'"]').removeClass('disabled').removeAttr('disabled'); + this.$el + .find('.header .header-buttons [data-name="'+name+'"]') + .removeClass('disabled') + .removeAttr('disabled'); }, actionNavigateToRoot: function (data, e) { e.stopPropagation(); - this.getRouter().checkConfirmLeaveOut(function () { + this.getRouter().checkConfirmLeaveOut(() => { var options = { - isReturn: true + isReturn: true, }; + var rootUrl = this.options.rootUrl || this.options.params.rootUrl || '#' + this.scope; + this.getRouter().navigate(rootUrl, {trigger: false}); this.getRouter().dispatch(this.scope, null, options); - }, this); + }); }, hideHeaderActionItem: function (name) { - ['actions', 'dropdown', 'buttons'].forEach(function (t) { - (this.menu[t] || []).forEach(function (item, i) { + ['actions', 'dropdown', 'buttons'].forEach((t) => { + (this.menu[t] || []).forEach((item, i) => { item = item || {}; - if (item.name == name) { + + if (item.name === name) { item.hidden = true; } - }, this); - }, this); - if (!this.isRendered()) return; + }); + }); + + if (!this.isRendered()) { + return; + } + this.$el.find('.page-header li > .action[data-name="'+name+'"]').parent().addClass('hidden'); this.$el.find('.page-header a.action[data-name="'+name+'"]').addClass('hidden'); @@ -259,15 +320,20 @@ define('views/main', 'view', function (Dep) { }, showHeaderActionItem: function (name) { - ['actions', 'dropdown', 'buttons'].forEach(function (t) { - (this.menu[t] || []).forEach(function (item, i) { + ['actions', 'dropdown', 'buttons'].forEach((t) => { + (this.menu[t] || []).forEach((item, i) => { item = item || {}; - if (item.name == name) { + + if (item.name === name) { item.hidden = false; } - }, this); - }, this); - if (!this.isRendered()) return; + }); + }); + + if (!this.isRendered()) { + return; + } + this.$el.find('.page-header li > .action[data-name="'+name+'"]').parent().removeClass('hidden'); this.$el.find('.page-header a.action[data-name="'+name+'"]').removeClass('hidden'); @@ -276,9 +342,13 @@ define('views/main', 'view', function (Dep) { hasMenuVisibleDropdownItems: function () { var hasItems = false; - (this.menu.dropdown || []).forEach(function (item) { - if (!item.hidden) hasItems = true; + + (this.menu.dropdown || []).forEach((item) => { + if (!item.hidden) { + hasItems = true; + } }); + return hasItems; }, @@ -291,6 +361,5 @@ define('views/main', 'view', function (Dep) { $d.addClass('hidden'); } }, - }); }); diff --git a/client/src/views/modals/related-list.js b/client/src/views/modals/related-list.js index 0526c68ccd..c20e3a00db 100644 --- a/client/src/views/modals/related-list.js +++ b/client/src/views/modals/related-list.js @@ -395,6 +395,7 @@ define('views/modals/related-list', ['views/modal', 'search-manager'], function this.collection.fetch(); this.model.trigger('after:unrelate'); + this.model.trigger('after:unrelate:' + this.link); }); }); }, diff --git a/client/src/views/record/detail.js b/client/src/views/record/detail.js index 6396ed9de1..039574ed1c 100644 --- a/client/src/views/record/detail.js +++ b/client/src/views/record/detail.js @@ -211,21 +211,21 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct } } - this.model.save(attributes, { - patch: true, - }).then(function () { - Espo.Ui.success(this.translate('Self-Assigned')); - }.bind(this)); + this.model + .save(attributes, {patch: true}) + .then(() => { + Espo.Ui.success(this.translate('Self-Assigned')); + }); }, actionConvertCurrency: function () { this.createView('modalConvertCurrency', 'views/modals/convert-currency', { entityType: this.entityType, model: this.model, - }, function (view) { + }, (view) => { view.render(); - this.listenToOnce(view, 'after:update', function (attributes) { + this.listenToOnce(view, 'after:update', (attributes) => { var isChanged = false; for (var a in attributes) { @@ -242,10 +242,12 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct return; } - this.model.fetch().then(function () { - Espo.Ui.success(this.translate('done', 'messages')); - }.bind(this)); - }, this); + this.model + .fetch() + .then(() => { + Espo.Ui.success(this.translate('done', 'messages')); + }); + }); }); }, @@ -276,10 +278,8 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct if (this.selfAssignAction) { if ( - this.getAcl().check(this.entityType, 'edit') - && - !~this.getAcl().getScopeForbiddenFieldList(this.entityType).indexOf('assignedUser') - && + this.getAcl().check(this.entityType, 'edit') && + !~this.getAcl().getScopeForbiddenFieldList(this.entityType).indexOf('assignedUser') && !this.getUser().isPortal() ) { if (this.model.has('assignedUserId')) { @@ -289,14 +289,14 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct 'hidden': !!this.model.get('assignedUserId') }); - this.listenTo(this.model, 'change:assignedUserId', function () { + this.listenTo(this.model, 'change:assignedUserId', () => { if (!this.model.get('assignedUserId')) { this.showActionItem('selfAssign'); } else { this.hideActionItem('selfAssign'); } - }, this); + }); } } } @@ -363,7 +363,7 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct this.getMetadata().get(['clientDefs', 'Global', this.type + 'ActionList']) || [] ); - actionDefsList.forEach(function (item) { + actionDefsList.forEach((item) => { if (typeof item === 'string') { item = { name: item, @@ -393,8 +393,8 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct if (item.initFunction && handler) { this.wait( - new Promise(function (resolve) { - require(handler, function (Handler) { + new Promise(resolve => { + require(handler, Handler => { var handler = new Handler(viewObject); handler[item.initFunction].call(handler); @@ -408,19 +408,19 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct if (!Espo.Utils.checkActionAccess(this.getAcl(), this.model, item, true)) { item.hidden = true; } - }, this); + }); if (additionalActionList.length) { - this.listenTo(this.model, 'sync', function () { - additionalActionList.forEach(function (item) { + this.listenTo(this.model, 'sync', () => { + additionalActionList.forEach((item) => { if (Espo.Utils.checkActionAccess(this.getAcl(), this.model, item, true)) { this.showActionItem(item.name); } else { this.hideActionItem(item.name); } - }, this); - }, this); + }); + }); } if (this.saveAndContinueEditingAction) { @@ -590,13 +590,13 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct } } else if (this.bottomView) { - this.once('after:render', function () { + this.once('after:render', () => { var bottomView = this.getView('bottom'); if (bottomView && 'showPanel' in bottomView) { bottomView.showPanel(name); } - }, this); + }); } var sideView = this.getView('side'); @@ -607,13 +607,13 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct } } else if (this.sideView) { - this.once('after:render', function () { + this.once('after:render', () => { var sideView = this.getView('side'); if (sideView && 'showPanel' in sideView) { sideView.showPanel(name); } - }, this); + }); } this.recordHelper.setPanelStateParam(name, 'hidden', false); @@ -651,13 +651,13 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct } } else if (this.bottomView) { - this.once('after:render', function () { + this.once('after:render', () => { var bottomView = this.getView('bottom'); if (bottomView && 'showPanel' in bottomView) { bottomView.hidePanel(name); } - }, this); + }); } var sideView = this.getView('side'); @@ -668,13 +668,13 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct } } else if (this.sideView) { - this.once('after:render', function () { + this.once('after:render', () => { var sideView = this.getView('side'); if (sideView && 'hidePanel' in sideView) { sideView.hidePanel(name); } - }, this); + }); } this.recordHelper.setPanelStateParam(name, 'hidden', true); @@ -752,7 +752,7 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct $window.off('scroll.detail-' + this.numId); - $window.on('scroll.detail-' + this.numId, function (e) { + $window.on('scroll.detail-' + this.numId, (e) => { if ($(window.document).width() < screenWidthXs) { $container.removeClass('stick-sub'); @@ -785,6 +785,7 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct $block.hide(); var $p = $('.popover'); + $p.each(function (i, el) { $el = $(el); $el.css('top', ($el.position().top + blockHeight) + 'px'); @@ -798,7 +799,7 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct $container.hide(); $block.show(); } - }.bind(this)); + }); }, fetch: function () { @@ -931,7 +932,7 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct this.confirm({ message: this.translate('removeRecordConfirmation', 'messages', this.scope), confirmText: this.translate('Remove'), - }, function () { + }, () => { this.trigger('before:delete'); this.trigger('delete'); @@ -939,12 +940,9 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct var collection = this.model.collection; - this.model.destroy({ - wait: true, - error: function () { - this.notify('Error occurred', 'error'); - }.bind(this), - success: function () { + this.model + .destroy({wait: true}) + .then(() => { if (collection) { if (collection.total > 0) { collection.total--; @@ -954,9 +952,8 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct this.notify('Removed', 'success'); this.trigger('after:delete'); this.exit('delete'); - }.bind(this), - }); - }, this); + }); + }); }, getFieldViews: function (withHidden) { @@ -1122,11 +1119,10 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct var collection = this.collection = this.model.collection; if (collection) { - this.listenTo(this.model, 'destroy', function () { + this.listenTo(this.model, 'destroy', () => { collection.remove(this.model.id); - collection.trigger('sync'); - }, this); + }); if ('indexOfRecord' in this.options) { this.indexOfRecord = this.options.indexOfRecord; @@ -1145,14 +1141,14 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct } } - this.once('remove', function () { + this.once('remove', () => { if (this.isChanged) { this.resetModelChanges(); } this.setIsNotChanged(); $(window).off('scroll.detail-' + this.numId); - }, this); + }); this.numId = Math.floor((Math.random() * 10000) + 1); @@ -1230,11 +1226,11 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct ) { this.subscribeToWebSocket(); - this.once('remove', function () { + this.once('remove', () => { if (this.isSubscribedToWebSocked) { this.unsubscribeFromWebSocket(); } - }.bind(this)); + }); } this.getHelper().processSetupHandlers(this, this.setupHandlerType); @@ -1349,7 +1345,7 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct this.getMetadata().get(['clientDefs', this.scope, 'dynamicHandler']); var init = function (dynamicHandler) { - this.listenTo(this.model, 'change', function (model, o) { + this.listenTo(this.model, 'change', (model, o) => { if ('onChange' in dynamicHandler) { dynamicHandler.onChange.call(dynamicHandler, model, o); } @@ -1363,7 +1359,7 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct dynamicHandler[methodName].call(dynamicHandler, model, changedAttributes[attribute], o); } } - }, this); + }); if ('init' in dynamicHandler) { dynamicHandler.init(); @@ -1372,16 +1368,15 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct if (dynamicHandlerClassName) { this.wait( - new Promise( - function (resolve) { - require(dynamicHandlerClassName, function (DynamicHandler) { - var dynamicHandler = this.dynamicHandler = new DynamicHandler(this); - init(dynamicHandler); + new Promise(resolve => { + require(dynamicHandlerClassName, (DynamicHandler) => { + var dynamicHandler = this.dynamicHandler = new DynamicHandler(this); - resolve(); - }.bind(this)); - }.bind(this) - ) + init(dynamicHandler); + + resolve(); + }); + }) ); } @@ -1392,26 +1387,22 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct var promiseList = []; - handlerList.forEach(function (className, i) { + handlerList.forEach((className) => { promiseList.push( - new Promise( - function (resolve) { - require(className, function (DynamicHandler) { - resolve(new DynamicHandler(self)); - }); - } - ) + new Promise(resolve => { + require(className, (DynamicHandler) => { + resolve(new DynamicHandler(self)); + }); + }) ); }); this.wait( - Promise.all(promiseList).then( - function (list) { - list.forEach(function (dynamicHandler) { - init(dynamicHandler); - }); - } - ) + Promise.all(promiseList).then(list => { + list.forEach((dynamicHandler) => { + init(dynamicHandler); + }); + }) ); } }, @@ -1542,12 +1533,14 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct this.switchToModelByIndex(indexOfRecord); } else { - collection.fetch({ - more: true, - remove: false, - }).then(function () { - this.switchToModelByIndex(indexOfRecord); - }.bind(this)); + collection + .fetch({ + more: true, + remove: false, + }) + .then(() => { + this.switchToModelByIndex(indexOfRecord); + }); } }, @@ -1557,10 +1550,10 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct }, function (view) { view.render(); - this.listenToOnce(view, 'erase', function () { + this.listenToOnce(view, 'erase', () => { this.clearView('viewPersonalData'); this.model.fetch(); - }, this); + }); }); }, @@ -1596,12 +1589,12 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct Espo.Ui.notify(this.translate('loading', 'messages')); - this.createView('modalRelatedList', viewName, options, function (view) { + this.createView('modalRelatedList', viewName, options, (view) => { Espo.Ui.notify(false); view.render(); - this.listenTo(view, 'action', function (action, data, e) { + this.listenTo(view, 'action', (action, data, e) => { var method = 'action' + Espo.Utils.upperCaseFirst(action); if (typeof this[method] === 'function') { @@ -1609,21 +1602,29 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct e.preventDefault(); } - }, this); + }); - this.listenToOnce(view, 'close', function () { + this.listenToOnce(view, 'close', () => { this.clearView('modalRelatedList'); - }, this); + }); + + view.listenTo(this.model, 'after:relate:followers', () => { + this.model.fetch(); + }); + + view.listenTo(this.model, 'after:unrelate:followers', () => { + this.model.fetch(); + }); }); }, actionPrintPdf: function () { this.createView('pdfTemplate', 'views/modals/select-template', { entityType: this.model.name, - }, function (view) { + }, (view) => { view.render(); - this.listenToOnce(view, 'select', function (model) { + this.listenToOnce(view, 'select', (model) => { this.clearView('pdfTemplate'); window.open( @@ -1631,7 +1632,7 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct this.model.name+'&entityId=' + this.model.id+'&templateId=' + model.id, '_blank' ); - }, this); + }); }); }, @@ -1647,9 +1648,9 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct this.setIsNotChanged(); - setTimeout(function () { + setTimeout(() => { this.unblockUpdateWebSocket(); - }.bind(this), this.blockUpdateWebSocketPeriod || 500); + }, this.blockUpdateWebSocketPeriod || 500); }, beforeSave: function () { @@ -1713,11 +1714,11 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct var diffAttributeList = []; - attributeList.forEach(function (attribute) { + attributeList.forEach(attribute => { if (this.attributes[attribute] !== values[attribute]) { diffAttributeList.push(attribute); } - }, this); + }); if (diffAttributeList.length === 0) { this.model.set('versionNumber', versionNumber, {silent: true}); @@ -1739,20 +1740,18 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct actualAttributes: Espo.Utils.cloneDeep(values), } ) - .then( - function (view) { - view.render(); + .then(view => { + view.render(); - this.listenTo(view, 'resolve', function () { - this.model.set('versionNumber', versionNumber, {silent: true}); - this.attributes.versionNumber = versionNumber; + this.listenTo(view, 'resolve', () => { + this.model.set('versionNumber', versionNumber, {silent: true}); + this.attributes.versionNumber = versionNumber; - for (let attribute in values) { - this.setInitalAttributeValue(attribute, values[attribute]); - } - }, this); - }.bind(this) - ); + for (let attribute in values) { + this.setInitalAttributeValue(attribute, values[attribute]); + } + }); + }); }, setReadOnly: function () { @@ -1772,9 +1771,9 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct sideView.setReadOnly(); } - this.getFieldList().forEach(function (field) { + this.getFieldList().forEach((field) => { this.setFieldReadOnly(field); - }, this); + }); }, setNotReadOnly: function (onlyNotSetAsReadOnly) { @@ -1794,13 +1793,15 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct sideView.setNotReadOnly(onlyNotSetAsReadOnly); } - this.getFieldList().forEach(function (field) { + this.getFieldList().forEach((field) => { if (onlyNotSetAsReadOnly) { - if (this.recordHelper.getFieldStateParam(field, 'readOnly')) return; + if (this.recordHelper.getFieldStateParam(field, 'readOnly')) { + return; + } } this.setFieldNotReadOnly(field); - }, this); + }); }, manageAccessEdit: function (second) { @@ -1847,14 +1848,16 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct } if (editAccess === null) { - this.listenToOnce(this.model, 'sync', function () { + this.listenToOnce(this.model, 'sync', () => { this.manageAccessEdit(true); - }, this); + }); } }, manageAccessDelete: function (second) { - if (this.isNew) return; + if (this.isNew) { + return; + } var deleteAccess = this.getAcl().checkModel(this.model, 'delete', true); @@ -1865,9 +1868,9 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct } if (deleteAccess === null) { - this.listenToOnce(this.model, 'sync', function () { + this.listenToOnce(this.model, 'sync', () => { this.manageAccessDelete(true); - }, this); + }); } }, @@ -1895,9 +1898,9 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct } if (streamAccess === null) { - this.listenToOnce(this.model, 'sync', function () { + this.listenToOnce(this.model, 'sync', () => { this.manageAccessStream(true); - }, this); + }); } }, @@ -2246,7 +2249,7 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct return; } - this._helper.layoutManager.get(this.model.name, this.layoutName, function (simpleLayout) { + this._helper.layoutManager.get(this.model.name, this.layoutName, (simpleLayout) => { if (typeof this.modifyDetailLayout === 'function') { var simpleLayout = Espo.Utils.cloneDeep(simpleLayout); @@ -2259,7 +2262,7 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct }; callback(this.gridLayout); - }.bind(this)); + }); }, createSideView: function () { @@ -2282,7 +2285,7 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct this.waitForView('middle'); - this.getGridLayout(function (layout) { + this.getGridLayout((layout) => { this.createView('middle', this.middleView, { model: this.model, scope: this.scope, @@ -2296,7 +2299,7 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct recordViewObject: this, panelFieldListMap: this.panelFieldListMap, }, callback); - }.bind(this)); + }); }, createBottomView: function () { @@ -2424,9 +2427,9 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct this.isSubscribedToWebSocked = true; - this.getHelper().webSocketManager.subscribe(topic, function (t, data) { + this.getHelper().webSocketManager.subscribe(topic, (t, data) => { this.handleRecordUpdate(); - }.bind(this)) + }); }, unsubscribeFromWebSocket: function () { @@ -2445,13 +2448,11 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct if (this.inlineEditModeIsOn || this.mode === 'edit') { var m = this.model.clone(); - m.fetch().then( - function () { - if (this.inlineEditModeIsOn || this.mode === 'edit') { - this.updatedAttributes = Espo.Utils.cloneDeep(m.attributes); - } - }.bind(this) - ); + m.fetch().then(() => { + if (this.inlineEditModeIsOn || this.mode === 'edit') { + this.updatedAttributes = Espo.Utils.cloneDeep(m.attributes); + } + }); } else { this.model.fetch({highlight: true}); } @@ -2461,9 +2462,9 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct this.updateWebSocketIsBlocked = true; if (toUnblock) { - setTimeout(function () { + setTimeout(() => { this.unblockUpdateWebSocket(); - }.bind(this), this.blockUpdateWebSocketPeriod || 500); + }, this.blockUpdateWebSocketPeriod || 500); } }, @@ -2474,10 +2475,9 @@ define('views/record/detail', ['views/record/base', 'view-record-helper'], funct showMoreDetailPanels: function () { this.hidePanel('showMoreDelimiter'); - this.underShowMoreDetailPanelList.forEach(function (item) { - this.showPanel(item) - }, this); + this.underShowMoreDetailPanelList.forEach((item) => { + this.showPanel(item); + }); }, - }); }); diff --git a/client/src/views/record/panels/relationship.js b/client/src/views/record/panels/relationship.js index 69f56e8d00..1b4f7246b8 100644 --- a/client/src/views/record/panels/relationship.js +++ b/client/src/views/record/panels/relationship.js @@ -107,6 +107,7 @@ define('views/record/panels/relationship', link: this.link, }, }); + hasCreate = true; } } @@ -168,7 +169,8 @@ define('views/record/panels/relationship', this.setupSorting(); this.wait(true); - this.getCollectionFactory().create(this.scope, function (collection) { + + this.getCollectionFactory().create(this.scope, (collection) => { collection.maxSize = this.recordsPerPage || this.getConfig().get('recordsPerPageSmall') || 5; if (this.defs.filters) { @@ -190,14 +192,14 @@ define('views/record/panels/relationship', this.setFilter(this.filter); if (this.fetchOnModelAfterRelate) { - this.listenTo(this.model, 'after:relate', function () { + this.listenTo(this.model, 'after:relate', () => { collection.fetch(); - }, this); + }); } - this.listenTo(this.model, 'update-all', function () { + this.listenTo(this.model, 'update-all', () => { collection.fetch(); - }, this); + }); var viewName = this.defs.recordListView || @@ -208,7 +210,7 @@ define('views/record/panels/relationship', this.listViewName = viewName; this.rowActionsView = this.defs.readOnly ? false : (this.defs.rowActionsView || this.rowActionsView); - this.once('after:render', function () { + this.once('after:render', () => { this.createView('list', viewName, { collection: collection, layoutName: layoutName, @@ -221,24 +223,25 @@ define('views/record/panels/relationship', rowActionsOptions: { unlinkDisabled: this.defs.unlinkDisabled, }, - }, function (view) { - view.getSelectAttributeList(function (selectAttributeList) { + }, (view) =>{ + view.getSelectAttributeList((selectAttributeList) => { if (selectAttributeList) { collection.data.select = selectAttributeList.join(','); } + if (!this.defs.hidden) { collection.fetch(); } else { - this.once('show', function () { + this.once('show', () => { collection.fetch(); }); } - }.bind(this)); + }); }); - }, this); + }); this.wait(false); - }, this); + }); this.setupFilterActions(); this.setupLast(); @@ -296,10 +299,10 @@ define('views/record/panels/relationship', if (this.filterList && this.filterList.length) { this.actionList.push(false); - this.filterList.slice(0).forEach(function (item) { + this.filterList.slice(0).forEach((item) => { var selected = false; - if (item == 'all') { + if (item === 'all') { selected = !this.filter; } else { @@ -316,7 +319,7 @@ define('views/record/panels/relationship', name: item, }, }); - }, this); + }); } }, @@ -360,7 +363,7 @@ define('views/record/panels/relationship', this.storeFilter(filterInternal); this.setFilter(filterInternal); - this.filterList.forEach(function (item) { + this.filterList.forEach(item => { var $el = this.$el.closest('.panel').find('[data-name="'+item+'"] span'); if (item === filter) { @@ -368,7 +371,7 @@ define('views/record/panels/relationship', } else { $el.addClass('hidden'); } - }, this); + }); this.collection.reset(); @@ -384,7 +387,7 @@ define('views/record/panels/relationship', } } - this.collection.fetch().then(function () { + this.collection.fetch().then(() => { listView.$el.parent().css('height', ''); }); @@ -413,6 +416,7 @@ define('views/record/panels/relationship', var scope = data.scope || this.scope; var filter = this.filter; + if (this.relatedListFiltersDisabled) { filter = null; } @@ -446,12 +450,12 @@ define('views/record/panels/relationship', Espo.Ui.notify(this.translate('loading', 'messages')); - this.createView('modalRelatedList', viewName, options, function (view) { + this.createView('modalRelatedList', viewName, options, (view) => { Espo.Ui.notify(false); view.render(); - this.listenTo(view, 'action', function (action, data, e) { + this.listenTo(view, 'action', (action, data, e) => { var method = 'action' + Espo.Utils.upperCaseFirst(action); if (typeof this[method] === 'function') { @@ -459,11 +463,11 @@ define('views/record/panels/relationship', e.preventDefault(); } - }, this); + }); - this.listenToOnce(view, 'close', function () { + this.listenToOnce(view, 'close', () => { this.clearView('modalRelatedList'); - }, this); + }); }); }, @@ -488,17 +492,17 @@ define('views/record/panels/relationship', scope: scope, id: id, model: this.collection.get(id), - }, function (view) { - view.once('after:render', function () { + }, (view) => { + view.once('after:render', () => { Espo.Ui.notify(false); }); view.render(); - view.once('after:save', function () { + view.once('after:save', () => { this.collection.fetch(); - }, this); - }.bind(this)); + }); + }); }, actionEditRelated: function (data) { @@ -513,17 +517,17 @@ define('views/record/panels/relationship', this.createView('quickEdit', viewName, { scope: scope, id: id, - }, function (view) { - view.once('after:render', function () { + }, (view) => { + view.once('after:render', () => { Espo.Ui.notify(false); }); view.render(); - view.once('after:save', function () { + view.once('after:save', () => { this.collection.fetch(); - }, this); - }.bind(this)); + }); + }); }, actionUnlinkRelated: function (data) { @@ -531,20 +535,22 @@ define('views/record/panels/relationship', this.confirm({ message: this.translate('unlinkRecordConfirmation', 'messages'), - confirmText: this.translate('Unlink') - }, function () { + confirmText: this.translate('Unlink'), + }, () => { this.notify('Unlinking...'); - Espo.Ajax.deleteRequest(this.collection.url, { - id: id, - }).then(function () { - this.notify('Unlinked', 'success'); + Espo.Ajax + .deleteRequest(this.collection.url, { + id: id, + }).then(() => { + this.notify('Unlinked', 'success'); - this.collection.fetch(); + this.collection.fetch(); - this.model.trigger('after:unrelate'); - }.bind(this)); - }, this); + this.model.trigger('after:unrelate'); + this.model.trigger('after:unrelate:' + this.link); + }); + }); }, actionRemoveRelated: function (data) { @@ -553,44 +559,42 @@ define('views/record/panels/relationship', this.confirm({ message: this.translate('removeRecordConfirmation', 'messages'), confirmText: this.translate('Remove'), - }, function () { + }, () => { var model = this.collection.get(id); this.notify('Removing...'); - model.destroy({ - success: function () { + model + .destroy() + .then(() => { this.notify('Removed', 'success'); this.collection.fetch(); this.model.trigger('after:unrelate'); - }.bind(this), - }); - }, this); + this.model.trigger('after:unrelate:' + this.link); + }); + }); }, actionUnlinkAllRelated: function (data) { - this.confirm(this.translate('unlinkAllConfirmation', 'messages'), function () { + this.confirm(this.translate('unlinkAllConfirmation', 'messages'), () => { Espo.Ui.notify(this.translate('pleaseWait', 'messages')); - $.ajax({ - url: this.model.name + '/action/unlinkAll', - type: 'POST', - data: JSON.stringify({ + Espo.Ajax + .postRequest(this.model.name + '/action/unlinkAll', { link: data.link, id: this.model.id, - }), - }).done(function () { - this.notify(false); + }) + .then(() => { + this.notify('Unlinked', 'success'); - this.notify('Unlinked', 'success'); + this.collection.fetch(); - this.collection.fetch(); - - this.model.trigger('after:unrelate'); - }.bind(this)); - }, this); + this.model.trigger('after:unrelate'); + this.model.trigger('after:unrelate:' + this.link); + }); + }); }, }); }); diff --git a/frontend/less/dark-vertical/variables.less b/frontend/less/dark-vertical/variables.less index 727c7bd9a1..1084549761 100644 --- a/frontend/less/dark-vertical/variables.less +++ b/frontend/less/dark-vertical/variables.less @@ -6,6 +6,7 @@ @text-color-value: #dbdbdb; @text-white-color-value: @text-color-value; +@text-gray-color-value: #979696; @main-gray-value: #ececec; diff --git a/frontend/less/espo/custom.less b/frontend/less/espo/custom.less index e30a23c8e6..4c70493a80 100644 --- a/frontend/less/espo/custom.less +++ b/frontend/less/espo/custom.less @@ -606,16 +606,16 @@ div.list-kanban > div > table { } table.table > thead th > a { - color: @gray-light; + color: var(--text-muted-color); } table.table > thead th { - color: @gray-light; + color: var(--text-muted-color); } .cell label, .filter label { - color: @gray-light; + color: var(--text-muted-color); font-weight: normal; } @@ -638,6 +638,14 @@ table.table > thead th { } } +.cell .loading-value { + color: var(--text-muted-color); +} + +.cell .none-value { + color: var(--text-gray-color); +} + .filter .selectize-input { min-height: 30px; } @@ -942,9 +950,13 @@ ul.dropdown-menu > li.checkbox:last-child { } .multi-enum-item-label-container { - margin-bottom: 4px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding-bottom: 4px; + &:last-child { - margin-bottom: 0; + padding-bottom: 1px; } .label-md { @@ -953,6 +965,12 @@ ul.dropdown-menu > li.checkbox:last-child { } } +.field { + > .label { + white-space: normal; + } +} + .filter > .form-group .field { .link-container { font-size: @font-size-small; @@ -1004,7 +1022,11 @@ ul.dropdown-menu > li.checkbox:last-child { } .panel-body .list-container > .no-data { - color: var(--gray-light); + color: var(--text-muted-color); +} + +.nav .list-container > .no-data { + color: var(--text-color); } ul.dropdown-menu > li > a > .check-icon + div { @@ -1042,7 +1064,7 @@ table.table-fixed { } .list-row-buttons span.caret { - border-top-color: @gray-light; + border-top-color: var(--text-muted-color); } .list > table { @@ -1073,10 +1095,10 @@ table.table-fixed { } .list > table th span.caret { - border-top-color: @gray-light; + border-top-color: var(--text-muted-color); } .list > table th span.caret-up { - border-bottom-color: @gray-light; + border-bottom-color: var(--text-muted-color); } .filter a.remove-filter { @@ -2486,7 +2508,7 @@ table.table td.cell .html-container { .post-container { .internal-mode-switcher { - color: @gray-light; + color: var(--text-muted-color); margin-left: 10px; display: inline-block; position: relative; @@ -2627,7 +2649,7 @@ table.table-admin-panel { > .icon { position: absolute; - color: @gray-light; + color: var(--text-muted-color); top: 1px; } > a { diff --git a/frontend/less/espo/misc/timeline/timeline.less b/frontend/less/espo/misc/timeline/timeline.less index c1a45873a9..68cb86d8e8 100644 --- a/frontend/less/espo/misc/timeline/timeline.less +++ b/frontend/less/espo/misc/timeline/timeline.less @@ -35,6 +35,10 @@ border-color: var(--calendar-border) !important; } +.vis-time-axis { + color: var(--gray); +} + .vis-item .vis-item-content { color: var(--white-color) !important; } diff --git a/frontend/less/espo/root-variables.less b/frontend/less/espo/root-variables.less index 280c41c755..67473a984d 100644 --- a/frontend/less/espo/root-variables.less +++ b/frontend/less/espo/root-variables.less @@ -200,6 +200,8 @@ --text-color: @text-color-value; --text-white-color: @text-white-color-value; + --text-muted-color: @text-muted-color-value; + --text-gray-color: @text-gray-color-value; --link-color: @link-color-value; --link-hover-color: @link-hover-color-value; diff --git a/frontend/less/espo/value-variables.less b/frontend/less/espo/value-variables.less index 84e9da1f1a..ea4a86b413 100644 --- a/frontend/less/espo/value-variables.less +++ b/frontend/less/espo/value-variables.less @@ -66,6 +66,8 @@ @text-color-value: @gray-dark-value; @text-white-color-value: @white-color-value; +@text-muted-color-value: @gray-light-value; +@text-gray-color-value: #6a6a6a; @link-color-value: @brand-primary-value; @link-hover-color-value: darken(@link-color-value, 15%); diff --git a/frontend/less/espo/variables.less b/frontend/less/espo/variables.less index 8508c11d93..66fab9159a 100644 --- a/frontend/less/espo/variables.less +++ b/frontend/less/espo/variables.less @@ -61,6 +61,7 @@ @brand-warning: var(--brand-warning); @text-color: var(--text-color); +@text-muted: var(--text-muted-color); @link-color: var(--link-color); @link-hover-color: var(--link-hover-color); diff --git a/install/core/i18n/bg_BG/install.json b/install/core/i18n/bg_BG/install.json index b78a546fbb..d3494dd4ff 100644 --- a/install/core/i18n/bg_BG/install.json +++ b/install/core/i18n/bg_BG/install.json @@ -4,140 +4,128 @@ "Start page title": "Лицензионно споразумение", "Step1 page title": "Лицензионно споразумение", "License Agreement": "Лицензионно споразумение", - "I accept the agreement": "приемам споразумението", - "Step2 page title": "конфигуриране на база данни", - "Step3 page title": "администратор Setup", + "I accept the agreement": "Приемам споразумението", + "Step2 page title": "Конфигуриране на база данни", + "Step3 page title": "Административни настройки", "Step4 page title": "Системни настройки", - "Step5 page title": "настройките на SMTP за изходящи писма", - "Errors page title": "грешки", - "Finish page title": "Инсталирането е приключено", + "Step5 page title": "Настройките на SMTP за изходящи писма", + "Errors page title": "Грешки", + "Finish page title": "Инсталацията приключи успешно", "Congratulation! Welcome to EspoCRM": "Поздравления! EspoCRM е инсталиран успешно.", - "More Information": "За повече информация, моля посетете нашия {} BLOG, следете ни в {} TWITTER.

Ако имате някакви предложения или въпроси, моля попитайте на {} ФОРУМА.", - "share": "Ако искате EspoCRM, споделете ги с приятелите си. Оставете ги да знаете за този продукт.", + "More Information": "За повече информация, моля посетете нашия {BLOG}, следете ни в {TWITTER}

Ако имате някакви предложения или въпроси, моля пишете ни в {FORUM}", + "share": "Ако харесвате EspoCRM, споделете ни с приятелите си. Накарайте ги да знаят за този продукт.", "blog": "блог", - "twitter": "кикотене", "forum": "форум", "Installation Guide": "Ръководство за инсталиране", "admin": "администратор", - "localhost": "Localhost", - "Locale": "място", - "Outbound Email Configuration": "Изходящото имейл Configuration", - "Start": "начало", - "Back": "обратно", - "Next": "Следващия", - "Go to EspoCRM": "Отиди EspoCRM", + "Locale": "Езикови настройки", + "Outbound Email Configuration": "Конфигурация за изходящи имейли", + "Start": "Начало", + "Back": "Назад", + "Next": "Напред", + "Go to EspoCRM": "Напред към EspoCRM", "Re-check": "Повторна проверка", - "Version": "версия", - "Test settings": "Тестване на свързване", - "Database Settings Description": "Въведете MySQL информация връзка с базата данни (име на хост, потребителско име и парола). Можете да зададете на сървъра порт за име на хост като Localhost: 3306.", + "Version": "Версия", + "Test settings": "Тест на конфигурацията", + "Database Settings Description": "Въведете MySQL данните за връзка с базата данни (име на хост, потребителско име и парола). Може да зададете порт на базата данни като например 3306.", "Install": "Инсталирай", "Configuration Instructions": "Инструкция за конфигуриране", "phpVersion": "PHP версия", "requiredMysqlVersion": "MySQL версия", + "dbHostName": "Хост/Сървър", "dbName": "Име на базата данни", - "dbUserName": "База данни Потребителско име", + "dbUserName": "Потребителско име за базата данни", "OK": "Добре", "SetupConfirmation page title": "Системни изисквания", - "PHP Configuration": "настройки на PHP", - "MySQL Configuration": "настройки на базата данни", - "Permission Requirements": "Разрешения", - "Success": "успех", + "PHP Configuration": "Настройки на PHP", + "MySQL Configuration": "Настройки на базата данни", + "Permission Requirements": "Права", + "Success": "Успешно", + "Fail": "Неуспешно", "is recommended": "се препоръчва", - "extension is missing": "разширение липсва", - "headerTitle": "EspoCRM Монтаж", - "Crontab setup instructions": "Без да се работи по разписание работни места входящи имейли, уведомления и напомняния няма да работят. Тук можете да прочетете {} SETUP_INSTRUCTIONS.", + "extension is missing": "разширението липсва", + "headerTitle": "EspoCRM инсталация", + "Crontab setup instructions": "Без стартиране на планирани задачи входящите имейли, известията и напомнянията няма да работят. Тук можете да прочетете повече {SETUP_INSTRUCTIONS}.", "Setup instructions": "инструкции за настройка" }, "fields": { "Choose your language": "Изберете вашия език", "Database Name": "Име на базата данни", - "Port": "порт", - "smtpPort": "порт", - "Database User Name": "База данни Потребителско име", - "Database User Password": "База данни на потребителя Парола", - "Database driver": "база данни на водача", - "User Name": "потребителско име", - "Password": "парола", - "smtpPassword": "парола", + "Host Name": "Хост / сървър", + "Port": "Порт", + "smtpPort": "Порт", + "Database User Name": "Потребителско име за базата данни", + "Database User Password": "Парола", + "Database driver": "Драйвър за базата данни", + "User Name": "Потребителско име", + "Password": "Парола", + "smtpPassword": "Парола", "Confirm Password": "Потвърдите паролата", "From Address": "От Адрес", "From Name": "От име", - "Is Shared": "се споделя", + "Is Shared": "Споделен с другите потребители", "Date Format": "Формат на датата", - "Time Format": "Времеви формат", + "Time Format": "Формат на времето", "Time Zone": "Часова зона", "First Day of Week": "Първи ден от седмицата", - "Thousand Separator": "Хиляда Separator", - "Decimal Mark": "десетичния знак", - "Default Currency": "По подразбиране валути", - "Currency List": "Валутна Списък", - "Language": "език", + "Thousand Separator": "Разделител за хилядни числа", + "Decimal Mark": "Десетичен знак", + "Default Currency": "Валути по подразбиране", + "Currency List": "Списък с валути", + "Language": "Език", "smtpServer": "Сървър", - "smtpAuth": "упълномощаване", + "smtpAuth": "Удостоверяване", "smtpSecurity": "Сигурност", "smtpUsername": "Потребител", - "emailAddress": "електронна поща" + "emailAddress": "Електронна поща" }, "messages": { - "1045": "Отказан достъп на потребителя", + "1045": "Отказан достъп за потребителя", "1049": "Неизвестна база данни", - "2005": "Неизвестна MySQL сървър домакин", - "Some errors occurred!": "Някои грешки са настъпили!", - "phpVersion": "Вашият PHP версия не се поддържа от EspoCRM, моля обновете до PHP {} minVersion най-малко", - "requiredMysqlVersion": "Вашият MySQL версия не се поддържа от EspoCRM, моля обновете до MySQL {} minVersion най-малко", - "The PHP extension was not found...": "PHP Грешка: разширение <б> {extName} не е намерен.", + "2005": "Неизвестен хост за базата данни", + "Some errors occurred!": "Имате грешка в конфигурацията!", + "phpVersion": "Вашата PHP версия не се поддържа от EspoCRM, моля обновете до PHP {minVersion}.", + "requiredMysqlVersion": "Вашата MySQL версия не се поддържа от EspoCRM, моля обновете до MySQL {minVersion}.", + "The PHP extension was not found...": "PHP Грешка: разширението {extName} не беше намерено.", "All Settings correct": "Всички настройки са правилни", - "Failed to connect to database": "Не може да се свърже с базата данни", + "Failed to connect to database": "Системата не може да се свърже с базата данни", "PHP version": "PHP версия", "You must agree to the license agreement": "Трябва да приемете лицензионното споразумение", "Passwords do not match": "Паролите не съвпадат", - "Enable mod_rewrite in Apache server": "Активиране на mod_rewrite в Apache сървъра", + "Enable mod_rewrite in Apache server": "Активирайте mod_rewrite в Apache конфигурацията", "checkWritable error": "checkWritable грешка", "applySett error": "applySett грешка", "buildDatabase error": "buildDatabase грешка", "createUser error": "createUser грешка", "checkAjaxPermission error": "checkAjaxPermission грешка", "Cannot create user": "Не може да създадете потребител", - "Permission denied": "Разрешението е отказано", - "Permission denied to": "Разрешението е отказано", - "Can not save settings": "Не може да запазите настройките", - "Cannot save preferences": "Не може да се спаси предпочитания", - "Thousand Separator and Decimal Mark equal": "Хиляда Separator и десетичния знак не може да бъде равен", - "extension": "{0} разширение липсва", + "Permission denied": "Отказано разрешение", + "Permission denied to": "Отказано разрешение", + "Can not save settings": "Не може да се запазят настройките", + "Cannot save preferences": "Не може да се запазят предпочитанията", + "Thousand Separator and Decimal Mark equal": "Разделителя на хилядните числа и десетичния знак не могат да бъдат еднакви", + "extension": "{0} разширението липсва", "option": "Препоръчителната стойност е {0}", - "mysqlSettingError": "EspoCRM изисква настройка MySQL \"{NAME}\", за да се настрои да {VALUE}", - "requiredMariadbVersion": "Вашият MariaDB версия не се поддържа от EspoCRM, моля обновете до MariaDB {} minVersion най-малко", + "mysqlSettingError": "EspoCRM изисква настройката на MySQL \"{NAME}\", да се промени на {VALUE}", + "requiredMariadbVersion": "Вашата версия на MariaDB не се поддържа от EspoCRM, моля, актуализирайте до MariaDB {minVersion}", "Ajax failed": "Възникна неочаквана грешка", - "Bad init Permission": "Разрешението е отказано за \"{*}\" директория. Моля, избран 775 за \"{*}\" или просто изпълни тази команда в терминала
  {C}  
операция не е позволено? Предложения това: {ХСС}", - "permissionInstruction": "
Run тази команда в терминал:
 \"{C}\" 
", - "operationNotPermitted": "Операция не е позволено? Предложения това:

{ХСС}" - }, - "options": { - "db driver": { - "pdo_mysql": "ЗНП MySQL" - }, - "modRewriteInstruction": { - "apache": { - "windows": "
 1. Намерете httpd.conf файл (обикновено вие ще го намерите в папка, наречена конф, довереник или нещо в този дух) 
2. Вътре в httpd.conf файла разкоментирайте модули линия LoadModule rewrite_module / mod_rewrite.so (премахване на лирата \"#\" знак от в предната част на линията)
3. Също така да намерите линията ClearModuleList се некоментирана след това намерете и се уверете, че mod_rewrite.c линията AddModule не е коментиран.
", - "linux": "

1. Активиране на \"mod_rewrite\". За това тече тези команди в терминал:
{APACHE1}

2. Ако предишната стъпка не помогне, опитайте се да се даде възможност на .htaccess подкрепа. Добавяне / редактиране на настройките за конфигурация сървър ({APACHE2_PATH1}, {APACHE2_PATH2}, {APACHE2_PATH3}):
{APACHE2}
След това стартирате тази команда в терминал:
{APACHE3}

3. Ако предишната стъпка не помогне, опитайте да добавите пътя на RewriteBase. Отваряне на файл {API_PATH} .htaccess и да се замени следния ред:
{APACHE4}
Да
{APACHE5}

За повече информация, моля посетете насоките Apache server configuration for EspoCRM.

" - }, - "nginx": { - "linux": "
Добавете този код в Nginx сървър блок конфигурационния файл {NGINX_PATH} вътре в раздел \"сървър\":
{NGINX}

За повече информация посети насоките конфигурацията на сървъра Nginx за EspoCRM.

" - } - }, - "modRewriteTitle": { - "apache": "

API. Грешка: EspoCRM API е недостъпна


Ли само необходимите стъпки. След всяка проверка стъпка, ако проблемът не бъде решен.", - "nginx": "

API Грешка: EspoCRM API е недостъпна

", - "microsoft-iis": "

API. Грешка: EspoCRM API е недостъпна


Възможен проблем: увреждания \"URL Rewrite\". Моля, проверете и се даде възможност на \"URL Rewrite\" Модул в IIS сървър", - "default": "

API. Грешка: EspoCRM API е недостъпна


Възможен проблем: инвалиди Rewrite модул. Моля, проверете и се даде възможност на Rewrite модул в сървъра си (напр mod_rewrite в Apache) и .htaccess подкрепа." - } + "Bad init Permission": "Нямате достатъчно права за директорията „{*}“. Моля, задайте права 775 за \"{*}\" или просто изпълнете тази команда в терминала
{C}
Операцията не е разрешена? Опитайте това: {CSU}", + "permissionInstruction": "
Изпълнете тази команда в терминала:
\"{C}\"
", + "operationNotPermitted": "Операцията не е разрешена? Опитайте това:

{CSU}" }, "systemRequirements": { + "requiredPhpVersion": "PHP версия", "requiredMysqlVersion": "MySQL версия", + "host": "Сървър", "dbname": "Име на базата данни", - "user": "потребителско име", - "writable": "писане", - "readable": "четлив", + "user": "Потребителско име", "requiredMariadbVersion": "MariaDB версия" + }, + "options": { + "modRewriteTitle": { + "apache": "

Грешка в API: API интерфейса на системата не е наличен.


Направете само необходимите стъпки. След всяка стъпка проверявайте дали проблемът е решен.", + "nginx": "

Грешка в API: API на EspoCRM не е наличен.

", + "microsoft-iis": "

Грешка в API: API на EspoCRM не е наличен.


Възможен проблем: деактивирано „URL Rewrite“. Моля, проверете и активирайте модула „URL Rewrite“ в IIS сървъра" + } } -} +} \ No newline at end of file diff --git a/install/core/i18n/lt_LT/install.json b/install/core/i18n/lt_LT/install.json index 0213c3f1a0..c9e41eab1c 100644 --- a/install/core/i18n/lt_LT/install.json +++ b/install/core/i18n/lt_LT/install.json @@ -120,5 +120,22 @@ "writable": "Įrašymo", "readable": "Skaitymo", "requiredMariadbVersion": "MariaDB versija" + }, + "options": { + "modRewriteTitle": { + "apache": "

API klaida:


Darykite tik būtinus veiksmus. Po kiekvieno žingsnio patikrinkite, ar problema išspręsta.", + "nginx": "

API klaida:

: EspoCRM API nepasiekiama .", + "microsoft-iis": "

API klaida:


Galima problema: išjungtas \"URL Rewrite\". Patikrinkite ir įjunkite \"URL Rewrite\" modulį IIS serveryje.", + "default": "

API klaida:


Galimos problemos: išjungtas perrašymo modulis. Patikrinkite ir įjunkite Rewrite modulį savo serveryje (pvz., mod_rewrite \"Apache\") ir .htaccess palaikymą." + }, + "modRewriteInstruction": { + "apache": { + "linux": "

1. Įjunkite \"mod_rewrite\".

Kad įjungtumėte mod_rewrite, terminale paleiskite šias komandas:

{APACHE1}

2. Jei ankstesnis žingsnis nepadėjo, pabandykite įjungti .htaccess palaikymą.

Pridėkite / redaguokite serverio konfigūracijos nustatymus {{APACHE2_PATH1} arba {APACHE2_PATH2} (arba {APACHE2_PATH3}):

{APACHE2}
\n Po to terminale paleiskite šią komandą:

{APACHE3}

3. Jei ankstesnis žingsnis nepadėjo, pabandykite pridėti RewriteBase kelią.

Atidarykite failą {{API_PATH}.htaccess ir pakeiskite šią eilutę:

{APACHE4}
Į
{APACHE5}

Daugiau informacijos rasite gairėse \"EspoCRM\" \"Apache\" serverio konfigūracija.

Daugiau informacijos rasite gairėse \"EspoCRM\" \"Apache\" serverio konfigūracija.", + "windows": "

1. Raskite httpd.conf failą.

Įprastai jį rasite aplanke, kuris vadinasi \"conf\", \"config\" ar panašiai.

2. Redaguokite httpd.conf failą.

httpd.conf failo viduje iškomentuokite eilutę {WINDOWS_APACHE1} (pašalinkite prieš eilutę esantį ženklą '#').

3. Patikrinkite kitus parametrus.

Taip pat patikrinkite, ar eilutė ClearModuleList nekomentuojama, ir įsitikinkite, kad eilutė AddModule mod_rewrite.c nekomentuojama.\n" + }, + "nginx": { + "linux": "
Į savo \"Nginx\" serverio konfigūracijos failą {NGINX_PATH} skiltyje \"serveris\" įtraukite šį kodą:

{NGINX}

Daugiau informacijos rasite gairėse \"Nginx\" serverio konfigūracija EspoCRM.

" + } + } } } \ No newline at end of file diff --git a/install/core/i18n/lv_LV/install.json b/install/core/i18n/lv_LV/install.json index ad51bd74de..8659eede82 100644 --- a/install/core/i18n/lv_LV/install.json +++ b/install/core/i18n/lv_LV/install.json @@ -124,5 +124,22 @@ "writable": "Rakstiski", "readable": "Lasāmi", "requiredMariadbVersion": "MariaDB versija" + }, + "options": { + "modRewriteTitle": { + "apache": "

API kļūda:


Dariet tikai nepieciešamos soļus. Pēc katra soļa pārbaudiet, vai problēma ir atrisināta.", + "nginx": "

API kļūda: EspoCRM API nav pieejams

.", + "microsoft-iis": "

API kļūda:


Iespējamā problēma: atspējots \"URL Rewrite\". Lūdzu, pārbaudiet un iespējojiet \"URL Rewrite\" moduli IIS serverī.", + "default": "

API kļūda:


Iespējamās problēmas: atspējots Pārrakstīšanas modulis. Lūdzu, pārbaudiet un iespējojiet Rewrite moduli savā serverī (piemēram, mod_rewrite Apache) un .htaccess atbalstu." + }, + "modRewriteInstruction": { + "apache": { + "linux": "

1. Ieslēdziet \"mod_rewrite\".

Lai iespējotu mod_rewrite, terminālī izpildiet šīs komandas:

{APACHE1}

2. Ja iepriekšējais solis nepalīdzēja, mēģiniet iespējot .htaccess atbalstu.

Pievienojiet/rediģējiet servera konfigurācijas iestatījumus {{APACHE2_PATH1} vai {APACHE2_PATH2} (vai {APACHE2_PATH3}):

{APACHE2}
\n Pēc tam izpildiet šo komandu terminālī:

{{APACHE3}

3. Ja iepriekšējais solis nav palīdzējis, mēģiniet pievienot RewriteBase ceļu.

Atveriet failu {{API_PATH}.htaccess un nomainiet šādu rindu:

{{APACHE4}
Uz
{APACHE5}

Lai iegūtu vairāk informācijas, lūdzu, apmeklējiet vadlīnijas Apache servera konfigurācija EspoCRM.

", + "windows": "

1. Atrodiet httpd.conf failu.

Parasti to var atrast mapē ar nosaukumu \"conf\", \"config\" vai līdzīgi.

2. Rediģējiet httpd.conf failu.

httpd.conf faila iekšpusē atkomentējiet rindu {WINDOWS_APACHE1} (noņemiet zīmi '#' rindas priekšā).

3. Pārbaudiet citus parametrus

Pārbaudiet arī, vai ir atkomentēta rinda ClearModuleList, un pārliecinieties, vai nav komentēta rinda AddModule mod_rewrite.c.\n" + }, + "nginx": { + "linux": "
Pievienojiet šo kodu savam Nginx servera konfigurācijas failam {NGINX_PATH} sadaļā \"serveris\":

{NGINX}

Lai iegūtu vairāk informācijas, lūdzu, apmeklējiet norādījumus Nginx servera konfigurācija EspoCRM.

." + } + } } } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4cc2a1c3c6..882a472383 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "espocrm", - "version": "7.1.3", + "version": "7.1.4", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 11737ff96f..c16992cb9f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "espocrm", - "version": "7.1.3", + "version": "7.1.4", "description": "Open-source CRM.", "repository": { "type": "git", diff --git a/tests/unit/Espo/Core/Mail/Account/BouncedRecognizerTest.php b/tests/unit/Espo/Core/Mail/Account/BouncedRecognizerTest.php new file mode 100644 index 0000000000..972f0b1594 --- /dev/null +++ b/tests/unit/Espo/Core/Mail/Account/BouncedRecognizerTest.php @@ -0,0 +1,96 @@ +bouncedRecognizer = new BouncedRecognizer(); + } + + private function createMessage(string $contents): MessageWrapper + { + $entityManager = $this->createMock(EntityManager::class); + + $parser = new MailMimeParser($entityManager); + + return new MessageWrapper(0, null, $parser, $contents); + } + + public function testBounced1a(): void + { + $contents = file_get_contents('tests/unit/testData/Core/Mail/bounced_1.eml'); + + $message = $this->createMessage($contents); + + $this->assertTrue($this->bouncedRecognizer->isBounced($message)); + $this->assertTrue($this->bouncedRecognizer->isHard($message)); + $this->assertEquals('0011aa', $this->bouncedRecognizer->extractQueueItemId($message)); + } + + public function testBounced1b(): void + { + $contents = file_get_contents('tests/unit/testData/Core/Mail/bounced_1.eml'); + $contents = str_replace('MAILER-DAEMON', 'test', $contents); + + $message = $this->createMessage($contents); + + $this->assertTrue($this->bouncedRecognizer->isBounced($message)); + $this->assertTrue($this->bouncedRecognizer->isHard($message)); + } + + public function testBounced2(): void + { + $contents = file_get_contents('tests/unit/testData/Core/Mail/bounced_2.eml'); + + $message = $this->createMessage($contents); + + $this->assertTrue($this->bouncedRecognizer->isBounced($message)); + $this->assertFalse($this->bouncedRecognizer->isHard($message)); + } + + public function testNotBounced1(): void + { + $contents = file_get_contents('tests/unit/testData/Core/Mail/test_email_1.eml'); + + $message = $this->createMessage($contents); + + $this->assertFalse($this->bouncedRecognizer->isBounced($message)); + } +} diff --git a/tests/unit/testData/Core/Mail/bounced_1.eml b/tests/unit/testData/Core/Mail/bounced_1.eml new file mode 100644 index 0000000000..5b836b97aa --- /dev/null +++ b/tests/unit/testData/Core/Mail/bounced_1.eml @@ -0,0 +1,65 @@ +Delivered-To: me@test.com +Received: by 10.213.9.17 with SMTP id j17csp4766ebj; + Tue, 8 May 2012 20:34:50 -0700 (PDT) +Received: by 10.182.207.10 with SMTP id ls10mr30733797obc.9.1336534489928; + Tue, 08 May 2012 20:34:49 -0700 (PDT) +Return-Path: <> +Received: from mx3.name.com (mx3.name.com. [173.192.7.98]) + by mx.google.com with ESMTP id s3si768112obn.1.2012.05.08.20.34.49; + Tue, 08 May 2012 20:34:49 -0700 (PDT) +Received-SPF: pass (google.com: best guess record for domain of mx3.name.com designates 173.192.7.98 as permitted sender) client-ip=173.192.7.98; +Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of mx3.name.com designates 173.192.7.98 as permitted sender) smtp.mail= +Received-SPF: None (no SPF record) identity=helo; client-ip=199.255.192.13; helo=a192-13.smtp-out.amazonses.com; envelope-from=<>; receiver=info@test.com +Received: from a192-13.smtp-out.amazonses.com (a192-13.smtp-out.amazonses.com [199.255.192.13]) + by mx3.name.com (Postfix) with ESMTP id 5972F6000074C + for ; Tue, 8 May 2012 22:34:49 -0500 (CDT) +X-Original-To: 000001372d0dbf88-76d26d51-9d96-468a-9071-318ba2c35003-000000@amazonses.com +Delivered-To: 000001372d0dbf88-76d26d51-9d96-468a-9071-318ba2c35003-000000@amazonses.com +Message-Id: <000001372fa9d596-ec772006-9987-11e1-8d9b-433290f94ba3-000000@email.amazonses.com> +Date: Wed, 9 May 2012 03:34:48 +0000 +To: info+bounce-qid-0011aa@test.com +From: MAILER-DAEMON@amazonses.com +Subject: Delivery Status Notification (Failure) +MIME-Version: 1.0 +Content-Type: multipart/report; report-type=delivery-status; boundary="ACnzx.4lvBb052b.srYYd.CyGnkMZ" +X-AWS-Outgoing: 199.255.192.13 + +--ACnzx.4lvBb052b.srYYd.CyGnkMZ +content-type: text/plain; + charset="utf-8" +Content-Transfer-Encoding: quoted-printable + +The following message to was undeliverable. +The reason for the problem: +5.4.7 - Delivery expired (message too old) 'no valid ip addresses' + +--ACnzx.4lvBb052b.srYYd.CyGnkMZ +content-type: message/delivery-status + +Reporting-MTA: dns; na-mm-outgoing-7101-bacon.iad7.amazon.com + +Final-Recipient: rfc822;wrongster@test.com +Action: failed +Status: 5.0.0 (permanent failure) +Diagnostic-Code: smtp; 5.4.7 - Delivery expired (message too old) 'no valid ip addresses' (delivery attempts: 0) + +--ACnzx.4lvBb052b.srYYd.CyGnkMZ +content-type: message/rfc822 + +Received: from unknown (HELO aws-bacon-dlvr-svc-na-i-986ddefa.us-east-1.amazon.com) ([10.13.133.79]) + by na-mm-outgoing-7101-bacon.iad7.amazon.com with ESMTP; 08 May 2012 16:15:55 +0000 +Return-Path: 000001372d0dbf88-76d26d51-9d96-468a-9071-318ba2c35003-000000@amazonses.com +Date: Tue, 8 May 2012 15:25:04 +0000 +From: info@test.com +To: wrongster@test.com +Message-ID: <000001372d0dbf88-76d26d51-9d96-468a-9071-318ba2c35003-000000@email.amazonses.com> +Subject: Test subject +Mime-Version: 1.0 +Content-Type: text/plain; + charset=UTF-8 +Content-Transfer-Encoding: 7bit +X-AWS-Outgoing: 199.127.232.7 + +Test message. + +--ACnzx.4lvBb052b.srYYd.CyGnkMZ-- \ No newline at end of file diff --git a/tests/unit/testData/Core/Mail/bounced_2.eml b/tests/unit/testData/Core/Mail/bounced_2.eml new file mode 100644 index 0000000000..579fa7d41b --- /dev/null +++ b/tests/unit/testData/Core/Mail/bounced_2.eml @@ -0,0 +1,41 @@ +Date: Thu, 7 Jul 1994 17:16:05 -0400 +From: Mail Delivery Subsystem + Message-Id: +<199407072116.RAA14128@CS.UTK.EDU> +Subject: Returned mail: Cannot +send message for 5 days +To: MIME-Version: 1.0 +Content-Type: multipart/report; report-type=delivery-status; boundary="RAA14128.773615765/CS.UTK.EDU" + +--RAA14128.773615765/CS.UTK.EDU + +The original message was received at Sat, 2 Jul 1994 17:10:28 -0400 +from root@localhost + + ----- The following addresses had delivery problems ----- + (unrecoverable error) + +----- Transcript of session follows ----- +... Deferred: Connection timed out + with larry.slip.umd.edu. +Message could not be delivered for 5 days +Message will be deleted from queue + +--RAA14128.773615765/CS.UTK.EDU +content-type: message/delivery-status + +Reporting-MTA: dns; cs.utk.edu + +Original-Recipient: rfc822;louisl@larry.slip.umd.edu +Final-Recipient: rfc822;louisl@larry.slip.umd.edu +Action: failed +Status: 4.0.0 +Diagnostic-Code: smtp; 426 connection timed out +Last-Attempt-Date: Thu, 7 Jul 1994 17:15:49 -0400 + +--RAA14128.773615765/CS.UTK.EDU +content-type: message/rfc822 + +[original message goes here] + +--RAA14128.773615765/CS.UTK.EDU-- \ No newline at end of file